summaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
Diffstat (limited to 'vendor')
-rw-r--r--vendor/annotate-snippets-0.8.0/.cargo-checksum.json1
-rw-r--r--vendor/annotate-snippets-0.8.0/CHANGELOG.md29
-rw-r--r--vendor/annotate-snippets-0.8.0/Cargo.lock630
-rw-r--r--vendor/annotate-snippets-0.8.0/Cargo.toml62
-rw-r--r--vendor/annotate-snippets-0.8.0/LICENSE-MIT19
-rw-r--r--vendor/annotate-snippets-0.8.0/README.md92
-rw-r--r--vendor/annotate-snippets-0.8.0/benches/simple.rs74
-rw-r--r--vendor/annotate-snippets-0.8.0/examples/expected_type.rs43
-rw-r--r--vendor/annotate-snippets-0.8.0/examples/footer.rs39
-rw-r--r--vendor/annotate-snippets-0.8.0/examples/format.rs61
-rw-r--r--vendor/annotate-snippets-0.8.0/examples/multislice.rs38
-rw-r--r--vendor/annotate-snippets-0.8.0/src/display_list/from_snippet.rs517
-rw-r--r--vendor/annotate-snippets-0.8.0/src/display_list/mod.rs37
-rw-r--r--vendor/annotate-snippets-0.8.0/src/display_list/structs.rs191
-rw-r--r--vendor/annotate-snippets-0.8.0/src/formatter/mod.rs397
-rw-r--r--vendor/annotate-snippets-0.8.0/src/formatter/style.rs52
-rw-r--r--vendor/annotate-snippets-0.8.0/src/lib.rs54
-rw-r--r--vendor/annotate-snippets-0.8.0/src/snippet.rs88
-rw-r--r--vendor/annotate-snippets-0.8.0/src/stylesheets/color.rs50
-rw-r--r--vendor/annotate-snippets-0.8.0/src/stylesheets/mod.rs11
-rw-r--r--vendor/annotate-snippets-0.8.0/src/stylesheets/no_color.rs31
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/diff/mod.rs43
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/dl_from_snippet.rs401
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation.toml40
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation.txt14
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation2.toml18
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation2.txt9
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation3.toml18
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation3.txt9
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiple_annotations.toml25
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiple_annotations.txt14
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/simple.toml18
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/simple.txt9
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/fixtures_test.rs45
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/formatter.rs552
-rw-r--r--vendor/annotate-snippets-0.8.0/tests/snippet/mod.rs167
-rw-r--r--vendor/anyhow/.cargo-checksum.json2
-rw-r--r--vendor/anyhow/Cargo.toml2
-rw-r--r--vendor/anyhow/build.rs32
-rw-r--r--vendor/anyhow/src/backtrace.rs2
-rw-r--r--vendor/anyhow/src/context.rs25
-rw-r--r--vendor/anyhow/src/ensure.rs20
-rw-r--r--vendor/anyhow/src/error.rs40
-rw-r--r--vendor/anyhow/src/kind.rs4
-rw-r--r--vendor/anyhow/src/lib.rs6
-rw-r--r--vendor/anyhow/src/macros.rs32
-rw-r--r--vendor/anyhow/src/wrapper.rs13
-rw-r--r--vendor/anyhow/tests/test_ensure.rs2
-rw-r--r--vendor/anyhow/tests/ui/must-use.stderr2
-rw-r--r--vendor/anyhow/tests/ui/no-impl.stderr12
-rw-r--r--vendor/block-buffer-0.7.3/.cargo-checksum.json1
-rw-r--r--vendor/block-buffer-0.7.3/Cargo.toml36
-rw-r--r--vendor/block-buffer-0.7.3/LICENSE-MIT25
-rw-r--r--vendor/block-buffer-0.7.3/src/lib.rs210
-rw-r--r--vendor/block-padding/.cargo-checksum.json1
-rw-r--r--vendor/block-padding/Cargo.toml26
-rw-r--r--vendor/block-padding/LICENSE-APACHE201
-rw-r--r--vendor/block-padding/src/lib.rs323
-rw-r--r--vendor/byte-tools/.cargo-checksum.json1
-rw-r--r--vendor/byte-tools/Cargo.toml21
-rw-r--r--vendor/byte-tools/LICENSE-APACHE201
-rw-r--r--vendor/byte-tools/LICENSE-MIT25
-rw-r--r--vendor/byte-tools/src/lib.rs29
-rw-r--r--vendor/byteorder/.cargo-checksum.json1
-rw-r--r--vendor/byteorder/CHANGELOG.md139
-rw-r--r--vendor/byteorder/COPYING3
-rw-r--r--vendor/byteorder/Cargo.toml43
-rw-r--r--vendor/byteorder/LICENSE-MIT21
-rw-r--r--vendor/byteorder/README.md63
-rw-r--r--vendor/byteorder/UNLICENSE24
-rw-r--r--vendor/byteorder/benches/bench.rs324
-rw-r--r--vendor/byteorder/rustfmt.toml2
-rw-r--r--vendor/byteorder/src/io.rs1592
-rw-r--r--vendor/byteorder/src/lib.rs4052
-rw-r--r--vendor/camino/.cargo-checksum.json2
-rw-r--r--vendor/camino/CHANGELOG.md22
-rw-r--r--vendor/camino/Cargo.toml2
-rw-r--r--vendor/camino/build.rs27
-rw-r--r--vendor/camino/src/lib.rs137
-rw-r--r--vendor/clap-3.2.20/.cargo-checksum.json1
-rw-r--r--vendor/clap-3.2.20/Cargo.lock (renamed from vendor/clap/Cargo.lock)159
-rw-r--r--vendor/clap-3.2.20/Cargo.toml (renamed from vendor/clap/Cargo.toml)36
-rw-r--r--vendor/clap-3.2.20/LICENSE-APACHE (renamed from vendor/annotate-snippets-0.8.0/LICENSE-APACHE)0
-rw-r--r--vendor/clap-3.2.20/LICENSE-MIT (renamed from vendor/clap_lex/LICENSE-MIT)2
-rw-r--r--vendor/clap-3.2.20/README.md43
-rw-r--r--vendor/clap-3.2.20/examples/cargo-example-derive.md (renamed from vendor/clap/examples/cargo-example-derive.md)2
-rw-r--r--vendor/clap-3.2.20/examples/cargo-example-derive.rs (renamed from vendor/clap/examples/cargo-example-derive.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/cargo-example.md (renamed from vendor/clap/examples/cargo-example.md)2
-rw-r--r--vendor/clap-3.2.20/examples/cargo-example.rs (renamed from vendor/clap/examples/cargo-example.rs)2
-rw-r--r--vendor/clap-3.2.20/examples/demo.md (renamed from vendor/clap/examples/demo.md)9
-rw-r--r--vendor/clap-3.2.20/examples/demo.rs (renamed from vendor/clap/examples/demo.rs)2
-rw-r--r--vendor/clap-3.2.20/examples/derive_ref/augment_args.rs (renamed from vendor/clap/examples/derive_ref/augment_args.rs)11
-rw-r--r--vendor/clap-3.2.20/examples/derive_ref/augment_subcommands.rs (renamed from vendor/clap/examples/derive_ref/augment_subcommands.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/derive_ref/custom-bool.md (renamed from vendor/clap/examples/derive_ref/custom-bool.md)0
-rw-r--r--vendor/clap-3.2.20/examples/derive_ref/custom-bool.rs (renamed from vendor/clap/examples/derive_ref/custom-bool.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/derive_ref/flatten_hand_args.rs (renamed from vendor/clap/examples/derive_ref/flatten_hand_args.rs)8
-rw-r--r--vendor/clap-3.2.20/examples/derive_ref/hand_subcommand.rs (renamed from vendor/clap/examples/derive_ref/hand_subcommand.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/derive_ref/interop_tests.md (renamed from vendor/clap/examples/derive_ref/interop_tests.md)0
-rw-r--r--vendor/clap-3.2.20/examples/escaped-positional-derive.md (renamed from vendor/clap/examples/escaped-positional-derive.md)4
-rw-r--r--vendor/clap-3.2.20/examples/escaped-positional-derive.rs (renamed from vendor/clap/examples/escaped-positional-derive.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/escaped-positional.md (renamed from vendor/clap/examples/escaped-positional.md)4
-rw-r--r--vendor/clap-3.2.20/examples/escaped-positional.rs (renamed from vendor/clap/examples/escaped-positional.rs)9
-rw-r--r--vendor/clap-3.2.20/examples/git-derive.md (renamed from vendor/clap/examples/git-derive.md)4
-rw-r--r--vendor/clap-3.2.20/examples/git-derive.rs (renamed from vendor/clap/examples/git-derive.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/git.md (renamed from vendor/clap/examples/git.md)2
-rw-r--r--vendor/clap-3.2.20/examples/git.rs (renamed from vendor/clap/examples/git.rs)2
-rw-r--r--vendor/clap-3.2.20/examples/multicall-busybox.md (renamed from vendor/clap/examples/multicall-busybox.md)6
-rw-r--r--vendor/clap-3.2.20/examples/multicall-busybox.rs (renamed from vendor/clap/examples/multicall-busybox.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/multicall-hostname.md (renamed from vendor/clap/examples/multicall-hostname.md)6
-rw-r--r--vendor/clap-3.2.20/examples/multicall-hostname.rs (renamed from vendor/clap/examples/multicall-hostname.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/pacman.md (renamed from vendor/clap/examples/pacman.md)2
-rw-r--r--vendor/clap-3.2.20/examples/pacman.rs (renamed from vendor/clap/examples/pacman.rs)5
-rw-r--r--vendor/clap-3.2.20/examples/repl.rs (renamed from vendor/clap/examples/repl.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/01_quick.md37
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/01_quick.rs (renamed from vendor/clap/examples/tutorial_builder/01_quick.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/02_app_settings.md19
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/02_app_settings.rs (renamed from vendor/clap/examples/tutorial_builder/02_app_settings.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/02_apps.md19
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/02_apps.rs (renamed from vendor/clap/examples/tutorial_builder/02_apps.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/02_crate.md18
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/02_crate.rs (renamed from vendor/clap/examples/tutorial_builder/02_crate.rs)3
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_bool.md23
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_bool.rs (renamed from vendor/clap/examples/tutorial_builder/03_01_flag_bool.rs)11
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_count.md23
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_count.rs9
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_02_option.md32
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_02_option.rs (renamed from vendor/clap/examples/tutorial_builder/03_02_option.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_03_positional.md22
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_03_positional.rs9
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_04_subcommands.md64
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_04_subcommands.rs (renamed from vendor/clap/examples/tutorial_builder/03_04_subcommands.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_05_default_values.md22
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/03_05_default_values.rs (renamed from vendor/clap/examples/tutorial_builder/03_05_default_values.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_01_enum.md29
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_01_enum.rs66
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_01_possible.md29
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_01_possible.rs (renamed from vendor/clap/examples/tutorial_builder/04_01_possible.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_02_parse.md31
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_02_parse.rs (renamed from vendor/clap/examples/tutorial_builder/04_02_parse.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_02_validate.md31
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_02_validate.rs (renamed from vendor/clap/examples/tutorial_builder/04_02_validate.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_03_relations.md58
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_03_relations.rs (renamed from vendor/clap/examples/tutorial_builder/04_03_relations.rs)10
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_04_custom.md57
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/04_04_custom.rs (renamed from vendor/clap/examples/tutorial_builder/04_04_custom.rs)15
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_builder/05_01_assert.rs (renamed from vendor/clap/examples/tutorial_builder/05_01_assert.rs)15
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/01_quick.md37
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/01_quick.rs (renamed from vendor/clap/examples/tutorial_derive/01_quick.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/02_app_settings.md19
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/02_app_settings.rs (renamed from vendor/clap/examples/tutorial_derive/02_app_settings.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/02_apps.md19
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/02_apps.rs (renamed from vendor/clap/examples/tutorial_derive/02_apps.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/02_crate.md18
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/02_crate.rs (renamed from vendor/clap/examples/tutorial_derive/02_crate.rs)2
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_bool.md23
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_bool.rs (renamed from vendor/clap/examples/tutorial_derive/03_01_flag_bool.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_count.md23
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_count.rs (renamed from vendor/clap/examples/tutorial_derive/03_01_flag_count.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_02_option.md32
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_02_option.rs (renamed from vendor/clap/examples/tutorial_derive/03_02_option.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_03_positional.md22
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_03_positional.rs (renamed from vendor/clap/examples/tutorial_derive/03_03_positional.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_04_subcommands.md64
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_04_subcommands.rs (renamed from vendor/clap/examples/tutorial_derive/03_04_subcommands.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_04_subcommands_alt.rs (renamed from vendor/clap/examples/tutorial_derive/03_04_subcommands_alt.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_05_default_values.md22
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/03_05_default_values.rs (renamed from vendor/clap/examples/tutorial_derive/03_05_default_values.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/04_01_enum.md29
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/04_01_enum.rs (renamed from vendor/clap/examples/tutorial_derive/04_01_enum.rs)4
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/04_02_parse.md31
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/04_02_parse.rs (renamed from vendor/clap/examples/tutorial_derive/04_02_parse.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/04_02_validate.md31
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/04_02_validate.rs (renamed from vendor/clap/examples/tutorial_derive/04_02_validate.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/04_03_relations.md58
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/04_03_relations.rs (renamed from vendor/clap/examples/tutorial_derive/04_03_relations.rs)2
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/04_04_custom.md57
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/04_04_custom.rs (renamed from vendor/clap/examples/tutorial_derive/04_04_custom.rs)0
-rw-r--r--vendor/clap-3.2.20/examples/tutorial_derive/05_01_assert.rs (renamed from vendor/clap/examples/tutorial_derive/05_01_assert.rs)2
-rw-r--r--vendor/clap-3.2.20/examples/typed-derive.md (renamed from vendor/clap/examples/typed-derive.md)4
-rw-r--r--vendor/clap-3.2.20/examples/typed-derive.rs (renamed from vendor/clap/examples/typed-derive.rs)4
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/cargo_example.rs7
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/cargo_example_derive0
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/cargo_example_derive.rs7
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/escaped_positional.rs7
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/escaped_positional_derive.rs7
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/git.rs7
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/git_derive.rs7
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/mod.rs55
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/multicall_busybox.rs7
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/multicall_hostname.rs7
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/pacman.rs7
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/repl.rs5
-rw-r--r--vendor/clap-3.2.20/src/_cookbook/typed_derive.rs7
-rw-r--r--vendor/clap-3.2.20/src/_derive/_tutorial.rs205
-rw-r--r--vendor/clap-3.2.20/src/_derive/mod.rs510
-rw-r--r--vendor/clap-3.2.20/src/_faq.rs95
-rw-r--r--vendor/clap-3.2.20/src/_features.rs27
-rw-r--r--vendor/clap-3.2.20/src/_tutorial.rs204
-rw-r--r--vendor/clap-3.2.20/src/bin/stdio-fixture.rs (renamed from vendor/clap/src/bin/stdio-fixture.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/action.rs (renamed from vendor/clap/src/builder/action.rs)8
-rw-r--r--vendor/clap-3.2.20/src/builder/app_settings.rs (renamed from vendor/clap/src/builder/app_settings.rs)32
-rw-r--r--vendor/clap-3.2.20/src/builder/arg.rs (renamed from vendor/clap/src/builder/arg.rs)20
-rw-r--r--vendor/clap-3.2.20/src/builder/arg_group.rs (renamed from vendor/clap/src/builder/arg_group.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/arg_predicate.rs (renamed from vendor/clap/src/builder/arg_predicate.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/arg_settings.rs (renamed from vendor/clap/src/builder/arg_settings.rs)27
-rw-r--r--vendor/clap-3.2.20/src/builder/command.rs (renamed from vendor/clap/src/builder/command.rs)106
-rw-r--r--vendor/clap-3.2.20/src/builder/debug_asserts.rs (renamed from vendor/clap/src/builder/debug_asserts.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/macros.rs (renamed from vendor/clap/src/builder/macros.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/mod.rs (renamed from vendor/clap/src/builder/mod.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/possible_value.rs (renamed from vendor/clap/src/builder/possible_value.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/regex.rs (renamed from vendor/clap/src/builder/regex.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/tests.rs (renamed from vendor/clap/src/builder/tests.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/usage_parser.rs (renamed from vendor/clap/src/builder/usage_parser.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/value_hint.rs (renamed from vendor/clap/src/builder/value_hint.rs)0
-rw-r--r--vendor/clap-3.2.20/src/builder/value_parser.rs (renamed from vendor/clap/src/builder/value_parser.rs)2
-rw-r--r--vendor/clap-3.2.20/src/derive.rs (renamed from vendor/clap/src/derive.rs)28
-rw-r--r--vendor/clap-3.2.20/src/error/context.rs (renamed from vendor/clap/src/error/context.rs)0
-rw-r--r--vendor/clap-3.2.20/src/error/kind.rs (renamed from vendor/clap/src/error/kind.rs)2
-rw-r--r--vendor/clap-3.2.20/src/error/mod.rs (renamed from vendor/clap/src/error/mod.rs)11
-rw-r--r--vendor/clap-3.2.20/src/lib.rs (renamed from vendor/clap/src/lib.rs)91
-rw-r--r--vendor/clap-3.2.20/src/macros.rs (renamed from vendor/clap/src/macros.rs)24
-rw-r--r--vendor/clap-3.2.20/src/mkeymap.rs (renamed from vendor/clap/src/mkeymap.rs)0
-rw-r--r--vendor/clap-3.2.20/src/output/fmt.rs (renamed from vendor/clap/src/output/fmt.rs)0
-rw-r--r--vendor/clap-3.2.20/src/output/help.rs (renamed from vendor/clap/src/output/help.rs)0
-rw-r--r--vendor/clap-3.2.20/src/output/mod.rs (renamed from vendor/clap/src/output/mod.rs)0
-rw-r--r--vendor/clap-3.2.20/src/output/usage.rs (renamed from vendor/clap/src/output/usage.rs)117
-rw-r--r--vendor/clap-3.2.20/src/parser/arg_matcher.rs (renamed from vendor/clap/src/parser/arg_matcher.rs)4
-rw-r--r--vendor/clap-3.2.20/src/parser/error.rs (renamed from vendor/clap/src/parser/error.rs)11
-rw-r--r--vendor/clap-3.2.20/src/parser/features/mod.rs (renamed from vendor/clap/src/parser/features/mod.rs)0
-rw-r--r--vendor/clap-3.2.20/src/parser/features/suggestions.rs (renamed from vendor/clap/src/parser/features/suggestions.rs)0
-rw-r--r--vendor/clap-3.2.20/src/parser/matches/any_value.rs (renamed from vendor/clap/src/parser/matches/any_value.rs)0
-rw-r--r--vendor/clap-3.2.20/src/parser/matches/arg_matches.rs (renamed from vendor/clap/src/parser/matches/arg_matches.rs)74
-rw-r--r--vendor/clap-3.2.20/src/parser/matches/matched_arg.rs (renamed from vendor/clap/src/parser/matches/matched_arg.rs)0
-rw-r--r--vendor/clap-3.2.20/src/parser/matches/mod.rs (renamed from vendor/clap/src/parser/matches/mod.rs)0
-rw-r--r--vendor/clap-3.2.20/src/parser/matches/value_source.rs (renamed from vendor/clap/src/parser/matches/value_source.rs)0
-rw-r--r--vendor/clap-3.2.20/src/parser/mod.rs (renamed from vendor/clap/src/parser/mod.rs)0
-rw-r--r--vendor/clap-3.2.20/src/parser/parser.rs (renamed from vendor/clap/src/parser/parser.rs)148
-rw-r--r--vendor/clap-3.2.20/src/parser/validator.rs (renamed from vendor/clap/src/parser/validator.rs)0
-rw-r--r--vendor/clap-3.2.20/src/util/color.rs (renamed from vendor/clap/src/util/color.rs)0
-rw-r--r--vendor/clap-3.2.20/src/util/fnv.rs (renamed from vendor/clap/src/util/fnv.rs)0
-rw-r--r--vendor/clap-3.2.20/src/util/graph.rs (renamed from vendor/clap/src/util/graph.rs)0
-rw-r--r--vendor/clap-3.2.20/src/util/id.rs (renamed from vendor/clap/src/util/id.rs)0
-rw-r--r--vendor/clap-3.2.20/src/util/mod.rs (renamed from vendor/clap/src/util/mod.rs)0
-rw-r--r--vendor/clap-3.2.20/src/util/str_to_bool.rs (renamed from vendor/clap/src/util/str_to_bool.rs)0
-rw-r--r--vendor/clap/.cargo-checksum.json1
-rw-r--r--vendor/clap/README.md179
-rw-r--r--vendor/clap/examples/README.md40
-rw-r--r--vendor/clap/examples/derive_ref/README.md440
-rw-r--r--vendor/clap/examples/tutorial_builder/03_01_flag_count.rs16
-rw-r--r--vendor/clap/examples/tutorial_builder/03_03_positional.rs9
-rw-r--r--vendor/clap/examples/tutorial_builder/04_01_enum.rs32
-rw-r--r--vendor/clap/examples/tutorial_builder/README.md658
-rw-r--r--vendor/clap/examples/tutorial_derive/README.md639
-rw-r--r--vendor/clap_derive/.cargo-checksum.json2
-rw-r--r--vendor/clap_derive/Cargo.toml5
-rw-r--r--vendor/clap_derive/LICENSE-MIT2
-rw-r--r--vendor/clap_derive/README.md4
-rw-r--r--vendor/clap_derive/src/attrs.rs159
-rw-r--r--vendor/clap_derive/src/derives/value_enum.rs2
-rw-r--r--vendor/clap_derive/src/parse.rs4
-rw-r--r--vendor/clap_lex-0.2.2/.cargo-checksum.json (renamed from vendor/clap_lex/.cargo-checksum.json)0
-rw-r--r--vendor/clap_lex-0.2.2/Cargo.toml (renamed from vendor/clap_lex/Cargo.toml)0
-rw-r--r--vendor/clap_lex-0.2.2/LICENSE-APACHE (renamed from vendor/clap/LICENSE-APACHE)0
-rw-r--r--vendor/clap_lex-0.2.2/LICENSE-MIT (renamed from vendor/clap/LICENSE-MIT)0
-rw-r--r--vendor/clap_lex-0.2.2/README.md (renamed from vendor/clap_lex/README.md)0
-rw-r--r--vendor/clap_lex-0.2.2/src/lib.rs (renamed from vendor/clap_lex/src/lib.rs)0
-rw-r--r--vendor/clap_lex/LICENSE-APACHE201
-rw-r--r--vendor/compiler_builtins/.cargo-checksum.json2
-rw-r--r--vendor/compiler_builtins/Cargo.lock6
-rw-r--r--vendor/compiler_builtins/Cargo.toml2
-rw-r--r--vendor/compiler_builtins/LICENSE.txt91
-rw-r--r--vendor/compiler_builtins/build.rs10
-rw-r--r--vendor/compiler_builtins/libm/src/math/acosh.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/acoshf.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/asinh.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/asinhf.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/atanh.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/atanhf.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/copysign.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/copysignf.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/erf.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/erff.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/exp10.rs5
-rw-r--r--vendor/compiler_builtins/libm/src/math/exp10f.rs5
-rw-r--r--vendor/compiler_builtins/libm/src/math/fenv.rs6
-rw-r--r--vendor/compiler_builtins/libm/src/math/fmaf.rs35
-rw-r--r--vendor/compiler_builtins/libm/src/math/ilogb.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/ilogbf.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/lgamma.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/lgamma_r.rs3
-rw-r--r--vendor/compiler_builtins/libm/src/math/lgammaf.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/lgammaf_r.rs3
-rw-r--r--vendor/compiler_builtins/libm/src/math/rem_pio2_large.rs2
-rw-r--r--vendor/compiler_builtins/libm/src/math/sincos.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/sincosf.rs1
-rw-r--r--vendor/compiler_builtins/libm/src/math/tgamma.rs13
-rw-r--r--vendor/compiler_builtins/libm/src/math/tgammaf.rs1
-rw-r--r--vendor/compiler_builtins/src/arm.rs4
-rw-r--r--vendor/compiler_builtins/src/arm_linux.rs110
-rw-r--r--vendor/compiler_builtins/src/float/conv.rs14
-rw-r--r--vendor/compiler_builtins/src/float/div.rs6
-rw-r--r--vendor/compiler_builtins/src/int/specialized_div_rem/mod.rs5
-rw-r--r--vendor/compiler_builtins/src/lib.rs2
-rw-r--r--vendor/compiler_builtins/src/macros.rs13
-rw-r--r--vendor/compiler_builtins/src/math.rs24
-rw-r--r--vendor/compiler_builtins/src/mem/impls.rs14
-rw-r--r--vendor/compiler_builtins/src/mem/mod.rs11
-rw-r--r--vendor/compiler_builtins/src/mem/x86_64.rs150
-rw-r--r--vendor/compiletest_rs/.cargo-checksum.json2
-rw-r--r--vendor/compiletest_rs/Cargo.toml2
-rw-r--r--vendor/compiletest_rs/README.md4
-rw-r--r--vendor/compiletest_rs/src/runtest.rs47
-rw-r--r--vendor/crossbeam-channel/.cargo-checksum.json2
-rw-r--r--vendor/crossbeam-channel/CHANGELOG.md4
-rw-r--r--vendor/crossbeam-channel/Cargo.lock10
-rw-r--r--vendor/crossbeam-channel/Cargo.toml4
-rw-r--r--vendor/crossbeam-channel/README.md4
-rw-r--r--vendor/crossbeam-channel/src/flavors/array.rs4
-rw-r--r--vendor/crossbeam-channel/src/flavors/list.rs18
-rw-r--r--vendor/crossbeam-channel/src/flavors/zero.rs10
-rw-r--r--vendor/crossbeam-channel/tests/array.rs6
-rw-r--r--vendor/crossbeam-channel/tests/golang.rs7
-rw-r--r--vendor/crossbeam-channel/tests/list.rs3
-rw-r--r--vendor/crossbeam-channel/tests/mpsc.rs15
-rw-r--r--vendor/crossbeam-channel/tests/select.rs1
-rw-r--r--vendor/crossbeam-channel/tests/select_macro.rs1
-rw-r--r--vendor/crossbeam-channel/tests/thread_locals.rs2
-rw-r--r--vendor/crossbeam-channel/tests/zero.rs8
-rw-r--r--vendor/crossbeam-deque/.cargo-checksum.json2
-rw-r--r--vendor/crossbeam-deque/CHANGELOG.md18
-rw-r--r--vendor/crossbeam-deque/Cargo.toml26
-rw-r--r--vendor/crossbeam-deque/README.md4
-rw-r--r--vendor/crossbeam-deque/src/deque.rs76
-rw-r--r--vendor/crossbeam-deque/src/lib.rs1
-rw-r--r--vendor/crossbeam-deque/tests/fifo.rs21
-rw-r--r--vendor/crossbeam-deque/tests/injector.rs28
-rw-r--r--vendor/crossbeam-deque/tests/lifo.rs23
-rw-r--r--vendor/crossbeam-epoch/.cargo-checksum.json2
-rw-r--r--vendor/crossbeam-epoch/CHANGELOG.md11
-rw-r--r--vendor/crossbeam-epoch/Cargo.lock119
-rw-r--r--vendor/crossbeam-epoch/Cargo.toml9
-rw-r--r--vendor/crossbeam-epoch/README.md4
-rw-r--r--vendor/crossbeam-epoch/build.rs12
-rw-r--r--vendor/crossbeam-epoch/no_atomic.rs6
-rw-r--r--vendor/crossbeam-epoch/src/atomic.rs108
-rw-r--r--vendor/crossbeam-epoch/src/collector.rs6
-rw-r--r--vendor/crossbeam-epoch/src/default.rs34
-rw-r--r--vendor/crossbeam-epoch/src/deferred.rs19
-rw-r--r--vendor/crossbeam-epoch/src/guard.rs6
-rw-r--r--vendor/crossbeam-epoch/src/internal.rs109
-rw-r--r--vendor/crossbeam-epoch/src/lib.rs2
-rw-r--r--vendor/crossbeam-epoch/src/sync/mod.rs3
-rw-r--r--vendor/crossbeam-epoch/src/sync/once_lock.rs103
-rw-r--r--vendor/crossbeam-queue/.cargo-checksum.json1
-rw-r--r--vendor/crossbeam-queue/CHANGELOG.md54
-rw-r--r--vendor/crossbeam-queue/Cargo.toml51
-rw-r--r--vendor/crossbeam-queue/README.md54
-rw-r--r--vendor/crossbeam-queue/build.rs41
-rw-r--r--vendor/crossbeam-queue/no_atomic.rs73
-rw-r--r--vendor/crossbeam-queue/src/array_queue.rs522
-rw-r--r--vendor/crossbeam-queue/src/lib.rs34
-rw-r--r--vendor/crossbeam-queue/src/seg_queue.rs545
-rw-r--r--vendor/crossbeam-queue/tests/array_queue.rs359
-rw-r--r--vendor/crossbeam-queue/tests/seg_queue.rs190
-rw-r--r--vendor/crossbeam-utils/.cargo-checksum.json2
-rw-r--r--vendor/crossbeam-utils/CHANGELOG.md9
-rw-r--r--vendor/crossbeam-utils/Cargo.toml10
-rw-r--r--vendor/crossbeam-utils/README.md4
-rw-r--r--vendor/crossbeam-utils/build.rs7
-rw-r--r--vendor/crossbeam-utils/no_atomic.rs6
-rw-r--r--vendor/crossbeam-utils/src/atomic/atomic_cell.rs17
-rw-r--r--vendor/crossbeam-utils/src/backoff.rs2
-rw-r--r--vendor/crossbeam-utils/src/cache_padded.rs6
-rw-r--r--vendor/crossbeam-utils/src/sync/mod.rs2
-rw-r--r--vendor/crossbeam-utils/src/sync/once_lock.rs103
-rw-r--r--vendor/crossbeam-utils/src/sync/parker.rs6
-rw-r--r--vendor/crossbeam-utils/src/sync/sharded_lock.rs24
-rw-r--r--vendor/crossbeam-utils/src/sync/wait_group.rs5
-rw-r--r--vendor/crossbeam-utils/tests/wait_group.rs5
-rw-r--r--vendor/crossbeam/.cargo-checksum.json1
-rw-r--r--vendor/crossbeam/CHANGELOG.md93
-rw-r--r--vendor/crossbeam/Cargo.toml59
-rw-r--r--vendor/crossbeam/LICENSE-APACHE201
-rw-r--r--vendor/crossbeam/README.md158
-rw-r--r--vendor/crossbeam/no_atomic.rs59
-rw-r--r--vendor/crossbeam/src/lib.rs96
-rw-r--r--vendor/crossbeam/tests/subcrates.rs47
-rw-r--r--vendor/dashmap/.cargo-checksum.json2
-rw-r--r--vendor/dashmap/Cargo.toml13
-rw-r--r--vendor/dashmap/src/lib.rs59
-rw-r--r--vendor/dashmap/src/rayon/map.rs4
-rw-r--r--vendor/dashmap/src/rayon/read_only.rs96
-rw-r--r--vendor/dashmap/src/read_only.rs2
-rw-r--r--vendor/dashmap/src/table.rs81
-rw-r--r--vendor/digest-0.8.1/.cargo-checksum.json1
-rw-r--r--vendor/digest-0.8.1/Cargo.toml36
-rw-r--r--vendor/digest-0.8.1/LICENSE-APACHE201
-rw-r--r--vendor/digest-0.8.1/LICENSE-MIT25
-rw-r--r--vendor/digest-0.8.1/src/dev.rs218
-rw-r--r--vendor/digest-0.8.1/src/digest.rs86
-rw-r--r--vendor/digest-0.8.1/src/dyn_digest.rs63
-rw-r--r--vendor/digest-0.8.1/src/errors.rs20
-rw-r--r--vendor/digest-0.8.1/src/lib.rs141
-rw-r--r--vendor/either/.cargo-checksum.json2
-rw-r--r--vendor/either/Cargo.toml4
-rw-r--r--vendor/either/README.rst13
-rw-r--r--vendor/either/src/lib.rs71
-rw-r--r--vendor/fake-simd/.cargo-checksum.json1
-rw-r--r--vendor/fake-simd/Cargo.toml9
-rw-r--r--vendor/fake-simd/LICENSE-APACHE201
-rw-r--r--vendor/fake-simd/LICENSE-MIT26
-rw-r--r--vendor/fake-simd/src/lib.rs108
-rw-r--r--vendor/form_urlencoded/.cargo-checksum.json2
-rw-r--r--vendor/form_urlencoded/Cargo.toml18
-rw-r--r--vendor/form_urlencoded/src/lib.rs6
-rw-r--r--vendor/fortanix-sgx-abi/.cargo-checksum.json2
-rw-r--r--vendor/fortanix-sgx-abi/Cargo.toml36
-rw-r--r--vendor/fortanix-sgx-abi/src/lib.rs164
-rw-r--r--vendor/fs-err/.cargo-checksum.json2
-rw-r--r--vendor/fs-err/CHANGELOG.md19
-rw-r--r--vendor/fs-err/Cargo.toml45
-rw-r--r--vendor/fs-err/README.md2
-rw-r--r--vendor/fs-err/README.tpl28
-rw-r--r--vendor/fs-err/src/dir.rs13
-rw-r--r--vendor/fs-err/src/errors.rs30
-rw-r--r--vendor/fs-err/src/file.rs76
-rw-r--r--vendor/fs-err/src/lib.rs43
-rw-r--r--vendor/fs-err/src/open_options.rs1
-rw-r--r--vendor/fs-err/src/os/unix.rs6
-rw-r--r--vendor/fs-err/src/os/windows.rs4
-rw-r--r--vendor/fs-err/src/path.rs2
-rw-r--r--vendor/fs-err/tests/version-numbers.rs9
-rw-r--r--vendor/generic-array-0.12.4/.cargo-checksum.json1
-rw-r--r--vendor/generic-array-0.12.4/CHANGELOG.md51
-rw-r--r--vendor/generic-array-0.12.4/Cargo.toml40
-rw-r--r--vendor/generic-array-0.12.4/LICENSE21
-rw-r--r--vendor/generic-array-0.12.4/README.md34
-rw-r--r--vendor/generic-array-0.12.4/rustfmt.toml3
-rw-r--r--vendor/generic-array-0.12.4/src/arr.rs126
-rw-r--r--vendor/generic-array-0.12.4/src/functional.rs94
-rw-r--r--vendor/generic-array-0.12.4/src/hex.rs102
-rw-r--r--vendor/generic-array-0.12.4/src/impl_serde.rs108
-rw-r--r--vendor/generic-array-0.12.4/src/impls.rs182
-rw-r--r--vendor/generic-array-0.12.4/src/iter.rs190
-rw-r--r--vendor/generic-array-0.12.4/src/lib.rs632
-rw-r--r--vendor/generic-array-0.12.4/src/sequence.rs320
-rw-r--r--vendor/generic-array-0.12.4/tests/arr.rs27
-rw-r--r--vendor/generic-array-0.12.4/tests/generics.rs98
-rw-r--r--vendor/generic-array-0.12.4/tests/hex.rs61
-rw-r--r--vendor/generic-array-0.12.4/tests/import_name.rs10
-rw-r--r--vendor/generic-array-0.12.4/tests/iter.rs164
-rw-r--r--vendor/generic-array-0.12.4/tests/mod.rs287
-rw-r--r--vendor/getrandom/.cargo-checksum.json2
-rw-r--r--vendor/getrandom/CHANGELOG.md18
-rw-r--r--vendor/getrandom/Cargo.toml38
-rw-r--r--vendor/getrandom/src/bsd_arandom.rs1
-rw-r--r--vendor/getrandom/src/dragonfly.rs1
-rw-r--r--vendor/getrandom/src/error.rs4
-rw-r--r--vendor/getrandom/src/lib.rs2
-rw-r--r--vendor/getrandom/src/linux_android.rs1
-rw-r--r--vendor/getrandom/src/macos.rs1
-rw-r--r--vendor/getrandom/src/openbsd.rs1
-rw-r--r--vendor/getrandom/src/solaris_illumos.rs1
-rw-r--r--vendor/getrandom/src/util_libc.rs57
-rw-r--r--vendor/getrandom/src/wasi.rs12
-rw-r--r--vendor/getrandom/src/windows.rs1
-rw-r--r--vendor/gimli/.cargo-checksum.json2
-rw-r--r--vendor/gimli/CHANGELOG.md22
-rw-r--r--vendor/gimli/Cargo.lock37
-rw-r--r--vendor/gimli/Cargo.toml79
-rw-r--r--vendor/gimli/README.md6
-rw-r--r--vendor/gimli/examples/dwarf-validate.rs2
-rw-r--r--vendor/gimli/examples/dwarfdump.rs45
-rw-r--r--vendor/gimli/examples/simple.rs2
-rw-r--r--vendor/gimli/examples/simple_line.rs13
-rw-r--r--vendor/gimli/fixtures/self/README.md2
-rw-r--r--vendor/gimli/src/constants.rs2
-rw-r--r--vendor/gimli/src/lib.rs2
-rw-r--r--vendor/gimli/src/read/abbrev.rs2
-rw-r--r--vendor/gimli/src/read/aranges.rs2
-rw-r--r--vendor/gimli/src/read/cfi.rs134
-rw-r--r--vendor/gimli/src/read/line.rs2
-rw-r--r--vendor/gimli/src/read/lists.rs1
-rw-r--r--vendor/gimli/src/read/loclists.rs4
-rw-r--r--vendor/gimli/src/read/mod.rs2
-rw-r--r--vendor/gimli/src/read/op.rs21
-rw-r--r--vendor/gimli/src/read/pubnames.rs2
-rw-r--r--vendor/gimli/src/read/pubtypes.rs2
-rw-r--r--vendor/gimli/src/read/rnglists.rs4
-rw-r--r--vendor/gimli/src/read/str.rs4
-rw-r--r--vendor/gimli/src/read/unit.rs4
-rw-r--r--vendor/gimli/src/read/util.rs2
-rw-r--r--vendor/gimli/src/read/value.rs2
-rw-r--r--vendor/gimli/src/write/cfi.rs15
-rw-r--r--vendor/gimli/src/write/op.rs6
-rw-r--r--vendor/gimli/tests/convert_self.rs2
-rw-r--r--vendor/handlebars/.cargo-checksum.json2
-rw-r--r--vendor/handlebars/CHANGELOG.md75
-rw-r--r--vendor/handlebars/Cargo.lock1368
-rw-r--r--vendor/handlebars/Cargo.toml89
-rw-r--r--vendor/handlebars/README.md26
-rw-r--r--vendor/handlebars/examples/dev_mode.rs24
-rw-r--r--vendor/handlebars/examples/error.rs52
-rw-r--r--vendor/handlebars/examples/helper_macro.rs63
-rw-r--r--vendor/handlebars/examples/partials.rs19
-rw-r--r--vendor/handlebars/examples/script.rs7
-rw-r--r--vendor/handlebars/release.toml2
-rw-r--r--vendor/handlebars/src/context.rs19
-rw-r--r--vendor/handlebars/src/decorators/mod.rs12
-rw-r--r--vendor/handlebars/src/error.rs98
-rw-r--r--vendor/handlebars/src/grammar.pest27
-rw-r--r--vendor/handlebars/src/grammar.rs29
-rw-r--r--vendor/handlebars/src/helpers/helper_each.rs94
-rw-r--r--vendor/handlebars/src/helpers/helper_if.rs40
-rw-r--r--vendor/handlebars/src/helpers/helper_lookup.rs12
-rw-r--r--vendor/handlebars/src/helpers/helper_with.rs15
-rw-r--r--vendor/handlebars/src/helpers/mod.rs3
-rw-r--r--vendor/handlebars/src/helpers/scripting.rs14
-rw-r--r--vendor/handlebars/src/json/path.rs4
-rw-r--r--vendor/handlebars/src/lib.rs21
-rw-r--r--vendor/handlebars/src/macros.rs7
-rw-r--r--vendor/handlebars/src/output.rs6
-rw-r--r--vendor/handlebars/src/partial.rs363
-rw-r--r--vendor/handlebars/src/registry.rs272
-rw-r--r--vendor/handlebars/src/render.rs93
-rw-r--r--vendor/handlebars/src/support.rs58
-rw-r--r--vendor/handlebars/src/template.rs233
-rw-r--r--vendor/handlebars/tests/embed.rs29
-rw-r--r--vendor/handlebars/tests/escape.rs42
-rw-r--r--vendor/handlebars/tests/helper_macro.rs13
-rw-r--r--vendor/handlebars/tests/helper_with_space.rs54
-rw-r--r--vendor/handlebars/tests/templates/hello.hbs1
-rw-r--r--vendor/handlebars/tests/whitespace.rs24
-rw-r--r--vendor/hermit-abi/.cargo-checksum.json2
-rw-r--r--vendor/hermit-abi/Cargo.toml31
-rw-r--r--vendor/hermit-abi/src/errno.rs397
-rw-r--r--vendor/hermit-abi/src/lib.rs74
-rw-r--r--vendor/home/.cargo-checksum.json2
-rw-r--r--vendor/home/Cargo.toml26
-rw-r--r--vendor/home/src/env.rs106
-rw-r--r--vendor/home/src/lib.rs48
-rw-r--r--vendor/idna/.cargo-checksum.json2
-rw-r--r--vendor/idna/Cargo.toml23
-rw-r--r--vendor/idna/LICENSE-MIT2
-rw-r--r--vendor/idna/src/lib.rs3
-rw-r--r--vendor/idna/src/uts46.rs76
-rw-r--r--vendor/idna/tests/punycode.rs4
-rw-r--r--vendor/idna/tests/tests.rs12
-rw-r--r--vendor/idna/tests/uts46.rs13
-rw-r--r--vendor/itertools/.cargo-checksum.json2
-rw-r--r--vendor/itertools/CHANGELOG.md7
-rw-r--r--vendor/itertools/Cargo.lock726
-rw-r--r--vendor/itertools/Cargo.toml4
-rw-r--r--vendor/itertools/README.md2
-rw-r--r--vendor/itertools/benches/extra/zipslices.rs2
-rw-r--r--vendor/itertools/clippy.toml1
-rw-r--r--vendor/itertools/src/adaptors/coalesce.rs4
-rw-r--r--vendor/itertools/src/adaptors/mod.rs14
-rw-r--r--vendor/itertools/src/adaptors/multi_product.rs4
-rw-r--r--vendor/itertools/src/combinations_with_replacement.rs4
-rw-r--r--vendor/itertools/src/concat_impl.rs3
-rw-r--r--vendor/itertools/src/duplicates_impl.rs1
-rw-r--r--vendor/itertools/src/either_or_both.rs49
-rw-r--r--vendor/itertools/src/exactly_one_err.rs4
-rw-r--r--vendor/itertools/src/extrema_set.rs48
-rw-r--r--vendor/itertools/src/flatten_ok.rs33
-rw-r--r--vendor/itertools/src/free.rs26
-rw-r--r--vendor/itertools/src/groupbylazy.rs12
-rw-r--r--vendor/itertools/src/grouping_map.rs7
-rw-r--r--vendor/itertools/src/impl_macros.rs1
-rw-r--r--vendor/itertools/src/intersperse.rs5
-rw-r--r--vendor/itertools/src/kmerge_impl.rs8
-rw-r--r--vendor/itertools/src/lazy_buffer.rs20
-rw-r--r--vendor/itertools/src/lib.rs230
-rw-r--r--vendor/itertools/src/merge_join.rs4
-rw-r--r--vendor/itertools/src/multipeek_impl.rs10
-rw-r--r--vendor/itertools/src/pad_tail.rs2
-rw-r--r--vendor/itertools/src/peeking_take_while.rs2
-rw-r--r--vendor/itertools/src/permutations.rs7
-rw-r--r--vendor/itertools/src/rciter_impl.rs1
-rw-r--r--vendor/itertools/src/size_hint.rs16
-rw-r--r--vendor/itertools/src/tuple_impl.rs2
-rw-r--r--vendor/itertools/src/unique_impl.rs7
-rw-r--r--vendor/itertools/src/unziptuple.rs8
-rw-r--r--vendor/itertools/src/ziptuple.rs1
-rw-r--r--vendor/itertools/tests/adaptors_no_collect.rs11
-rw-r--r--vendor/itertools/tests/quick.rs116
-rw-r--r--vendor/itertools/tests/specializations.rs4
-rw-r--r--vendor/itertools/tests/test_core.rs15
-rw-r--r--vendor/itertools/tests/test_std.rs80
-rw-r--r--vendor/itertools/tests/zip.rs8
-rw-r--r--vendor/itoa/.cargo-checksum.json2
-rw-r--r--vendor/itoa/Cargo.toml12
-rw-r--r--vendor/itoa/README.md2
-rw-r--r--vendor/itoa/src/lib.rs10
-rw-r--r--vendor/itoa/src/udiv128.rs5
-rw-r--r--vendor/lazycell/.cargo-checksum.json1
-rw-r--r--vendor/lazycell/CHANGELOG.md197
-rw-r--r--vendor/lazycell/Cargo.toml34
-rw-r--r--vendor/lazycell/LICENSE-APACHE (renamed from vendor/crossbeam-queue/LICENSE-APACHE)0
-rw-r--r--vendor/lazycell/LICENSE-MIT (renamed from vendor/crossbeam-queue/LICENSE-MIT)5
-rw-r--r--vendor/lazycell/README.md73
-rw-r--r--vendor/lazycell/src/lib.rs680
-rw-r--r--vendor/lazycell/src/serde_impl.rs86
-rw-r--r--vendor/libc/.cargo-checksum.json2
-rw-r--r--vendor/libc/CONTRIBUTING.md4
-rw-r--r--vendor/libc/Cargo.toml2
-rw-r--r--vendor/libc/README.md8
-rw-r--r--vendor/libc/build.rs15
-rw-r--r--vendor/libc/src/fuchsia/mod.rs38
-rw-r--r--vendor/libc/src/lib.rs10
-rw-r--r--vendor/libc/src/macros.rs16
-rw-r--r--vendor/libc/src/unix/bsd/apple/b64/aarch64/align.rs1
-rw-r--r--vendor/libc/src/unix/bsd/apple/mod.rs404
-rw-r--r--vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs80
-rw-r--r--vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs8
-rw-r--r--vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs13
-rw-r--r--vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs13
-rw-r--r--vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs13
-rw-r--r--vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs181
-rw-r--r--vendor/libc/src/unix/bsd/freebsdlike/mod.rs55
-rw-r--r--vendor/libc/src/unix/bsd/mod.rs6
-rw-r--r--vendor/libc/src/unix/bsd/netbsdlike/mod.rs11
-rw-r--r--vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs197
-rw-r--r--vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs27
-rw-r--r--vendor/libc/src/unix/haiku/mod.rs92
-rw-r--r--vendor/libc/src/unix/linux_like/android/b64/mod.rs3
-rw-r--r--vendor/libc/src/unix/linux_like/android/b64/riscv64/align.rs7
-rw-r--r--vendor/libc/src/unix/linux_like/android/b64/riscv64/mod.rs342
-rw-r--r--vendor/libc/src/unix/linux_like/android/b64/x86_64/mod.rs2
-rw-r--r--vendor/libc/src/unix/linux_like/android/mod.rs238
-rw-r--r--vendor/libc/src/unix/linux_like/emscripten/mod.rs6
-rw-r--r--vendor/libc/src/unix/linux_like/linux/arch/generic/mod.rs7
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs22
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs24
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs17
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs22
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/gnu/mod.rs30
-rw-r--r--vendor/libc/src/unix/linux_like/linux/mod.rs328
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs8
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/align.rs15
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs9
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs11
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs9
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs10
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/align.rs18
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs9
-rw-r--r--vendor/libc/src/unix/linux_like/linux/musl/mod.rs5
-rw-r--r--vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs2
-rw-r--r--vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs1
-rw-r--r--vendor/libc/src/unix/linux_like/mod.rs15
-rw-r--r--vendor/libc/src/unix/mod.rs16
-rw-r--r--vendor/libc/src/unix/newlib/espidf/mod.rs5
-rw-r--r--vendor/libc/src/unix/newlib/mod.rs2
-rw-r--r--vendor/libc/src/unix/solarish/illumos.rs5
-rw-r--r--vendor/libc/src/unix/solarish/mod.rs18
-rw-r--r--vendor/libc/src/unix/solarish/solaris.rs11
-rw-r--r--vendor/libc/src/unix/solarish/x86_64.rs31
-rw-r--r--vendor/libc/src/windows/mod.rs12
-rw-r--r--vendor/lock_api/.cargo-checksum.json2
-rw-r--r--vendor/lock_api/Cargo.toml2
-rw-r--r--vendor/lock_api/src/mutex.rs29
-rw-r--r--vendor/lock_api/src/remutex.rs8
-rw-r--r--vendor/lock_api/src/rwlock.rs10
-rw-r--r--vendor/lsp-types/.cargo-checksum.json2
-rw-r--r--vendor/lsp-types/CHANGELOG.md6
-rw-r--r--vendor/lsp-types/Cargo.toml3
-rw-r--r--vendor/lsp-types/README.md2
-rw-r--r--vendor/lsp-types/src/lib.rs5
-rw-r--r--vendor/lsp-types/src/semantic_tokens.rs32
-rw-r--r--vendor/matches/.cargo-checksum.json1
-rw-r--r--vendor/matches/Cargo.toml24
-rw-r--r--vendor/matches/LICENSE25
-rw-r--r--vendor/matches/lib.rs128
-rw-r--r--vendor/matches/tests/macro_use_one.rs11
-rw-r--r--vendor/matches/tests/use_star.rs10
-rw-r--r--vendor/memmap2/.cargo-checksum.json2
-rw-r--r--vendor/memmap2/CHANGELOG.md22
-rw-r--r--vendor/memmap2/Cargo.lock2
-rw-r--r--vendor/memmap2/Cargo.toml3
-rw-r--r--vendor/memmap2/src/lib.rs149
-rw-r--r--vendor/memmap2/src/unix.rs42
-rw-r--r--vendor/memmap2/src/windows.rs43
-rw-r--r--vendor/minifier/.cargo-checksum.json2
-rw-r--r--vendor/minifier/Cargo.lock2
-rw-r--r--vendor/minifier/Cargo.toml2
-rw-r--r--vendor/minifier/src/css/token.rs51
-rw-r--r--vendor/miniz_oxide/.cargo-checksum.json2
-rw-r--r--vendor/miniz_oxide/Cargo.toml27
-rw-r--r--vendor/miniz_oxide/src/inflate/mod.rs12
-rw-r--r--vendor/once_cell/.cargo-checksum.json2
-rw-r--r--vendor/once_cell/CHANGELOG.md17
-rw-r--r--vendor/once_cell/Cargo.lock210
-rw-r--r--vendor/once_cell/Cargo.toml8
-rw-r--r--vendor/once_cell/examples/lazy_static.rs2
-rw-r--r--vendor/once_cell/src/imp_std.rs93
-rw-r--r--vendor/once_cell/src/lib.rs80
-rw-r--r--vendor/once_cell/tests/it.rs35
-rw-r--r--vendor/opaque-debug/.cargo-checksum.json1
-rw-r--r--vendor/opaque-debug/Cargo.toml22
-rw-r--r--vendor/opaque-debug/LICENSE-APACHE201
-rw-r--r--vendor/opaque-debug/LICENSE-MIT25
-rw-r--r--vendor/opaque-debug/src/lib.rs24
-rw-r--r--vendor/percent-encoding/.cargo-checksum.json2
-rw-r--r--vendor/percent-encoding/Cargo.toml21
-rw-r--r--vendor/percent-encoding/LICENSE-MIT2
-rw-r--r--vendor/percent-encoding/src/lib.rs (renamed from vendor/percent-encoding/lib.rs)74
-rw-r--r--vendor/pest/.cargo-checksum.json2
-rw-r--r--vendor/pest/Cargo.lock80
-rw-r--r--vendor/pest/Cargo.toml45
-rw-r--r--vendor/pest/_README.md23
-rw-r--r--vendor/pest/examples/parens.rs4
-rw-r--r--vendor/pest/src/error.rs172
-rw-r--r--vendor/pest/src/iterators/flat_pairs.rs9
-rw-r--r--vendor/pest/src/iterators/pair.rs22
-rw-r--r--vendor/pest/src/iterators/pairs.rs19
-rw-r--r--vendor/pest/src/iterators/tokens.rs14
-rw-r--r--vendor/pest/src/lib.rs20
-rw-r--r--vendor/pest/src/macros.rs114
-rw-r--r--vendor/pest/src/parser.rs6
-rw-r--r--vendor/pest/src/parser_state.rs132
-rw-r--r--vendor/pest/src/position.rs81
-rw-r--r--vendor/pest/src/prec_climber.rs171
-rw-r--r--vendor/pest/src/span.rs189
-rw-r--r--vendor/pest/src/stack.rs4
-rw-r--r--vendor/pest/src/token.rs2
-rw-r--r--vendor/pest/src/unicode/binary.rs3190
-rw-r--r--vendor/pest/src/unicode/category.rs2175
-rw-r--r--vendor/pest/src/unicode/mod.rs2
-rw-r--r--vendor/pest/tests/calculator.rs18
-rw-r--r--vendor/pest/tests/json.rs75
-rw-r--r--vendor/pest_derive/.cargo-checksum.json2
-rw-r--r--vendor/pest_derive/Cargo.toml40
-rw-r--r--vendor/pest_derive/_README.md37
-rw-r--r--vendor/pest_derive/src/lib.rs7
-rw-r--r--vendor/pest_derive/tests/grammar.pest4
-rw-r--r--vendor/pest_derive/tests/grammar.rs31
-rw-r--r--vendor/pest_derive/tests/grammar_inline.rs4
-rw-r--r--vendor/pest_derive/tests/lists.rs4
-rw-r--r--vendor/pest_derive/tests/reporting.rs4
-rw-r--r--vendor/pest_generator/.cargo-checksum.json2
-rw-r--r--vendor/pest_generator/Cargo.toml34
-rw-r--r--vendor/pest_generator/_README.md23
-rw-r--r--vendor/pest_generator/src/generator.rs72
-rw-r--r--vendor/pest_generator/src/macros.rs14
-rw-r--r--vendor/pest_meta/.cargo-checksum.json2
-rw-r--r--vendor/pest_meta/Cargo.toml46
-rw-r--r--vendor/pest_meta/_README.md23
-rw-r--r--vendor/pest_meta/src/ast.rs2
-rw-r--r--vendor/pest_meta/src/grammar.pest2
-rw-r--r--vendor/pest_meta/src/grammar.rs2
-rw-r--r--vendor/pest_meta/src/lib.rs20
-rw-r--r--vendor/pest_meta/src/optimizer/concatenator.rs39
-rw-r--r--vendor/pest_meta/src/optimizer/factorizer.rs61
-rw-r--r--vendor/pest_meta/src/optimizer/lister.rs42
-rw-r--r--vendor/pest_meta/src/optimizer/mod.rs104
-rw-r--r--vendor/pest_meta/src/optimizer/restorer.rs14
-rw-r--r--vendor/pest_meta/src/optimizer/rotater.rs13
-rw-r--r--vendor/pest_meta/src/optimizer/skipper.rs39
-rw-r--r--vendor/pest_meta/src/optimizer/unroller.rs107
-rw-r--r--vendor/pest_meta/src/parser.rs93
-rw-r--r--vendor/pest_meta/src/validator.rs222
-rw-r--r--vendor/pretty_assertions/.cargo-checksum.json (renamed from vendor/pretty_assertions-0.7.2/.cargo-checksum.json)0
-rw-r--r--vendor/pretty_assertions/CHANGELOG.md (renamed from vendor/pretty_assertions-0.7.2/CHANGELOG.md)0
-rw-r--r--vendor/pretty_assertions/Cargo.lock (renamed from vendor/pretty_assertions-0.7.2/Cargo.lock)0
-rw-r--r--vendor/pretty_assertions/Cargo.toml (renamed from vendor/pretty_assertions-0.7.2/Cargo.toml)0
-rw-r--r--vendor/pretty_assertions/LICENSE-APACHE (renamed from vendor/pretty_assertions-0.7.2/LICENSE-APACHE)0
-rw-r--r--vendor/pretty_assertions/LICENSE-MIT (renamed from vendor/pretty_assertions-0.7.2/LICENSE-MIT)0
-rw-r--r--vendor/pretty_assertions/README.md (renamed from vendor/pretty_assertions-0.7.2/README.md)0
-rw-r--r--vendor/pretty_assertions/examples/pretty_assertion.png (renamed from vendor/pretty_assertions-0.7.2/examples/pretty_assertion.png)bin21419 -> 21419 bytes
-rw-r--r--vendor/pretty_assertions/examples/pretty_assertion.rs (renamed from vendor/pretty_assertions-0.7.2/examples/pretty_assertion.rs)0
-rw-r--r--vendor/pretty_assertions/examples/pretty_assertion_v0_6_1.png (renamed from vendor/pretty_assertions-0.7.2/examples/pretty_assertion_v0_6_1.png)bin21236 -> 21236 bytes
-rw-r--r--vendor/pretty_assertions/examples/standard_assertion.png (renamed from vendor/pretty_assertions-0.7.2/examples/standard_assertion.png)bin21727 -> 21727 bytes
-rw-r--r--vendor/pretty_assertions/examples/standard_assertion.rs (renamed from vendor/pretty_assertions-0.7.2/examples/standard_assertion.rs)0
-rwxr-xr-xvendor/pretty_assertions/scripts/check (renamed from vendor/pretty_assertions-0.7.2/scripts/check)0
-rwxr-xr-xvendor/pretty_assertions/scripts/install (renamed from vendor/pretty_assertions-0.7.2/scripts/install)0
-rwxr-xr-xvendor/pretty_assertions/scripts/publish (renamed from vendor/pretty_assertions-0.7.2/scripts/publish)0
-rw-r--r--vendor/pretty_assertions/src/lib.rs (renamed from vendor/pretty_assertions-0.7.2/src/lib.rs)0
-rw-r--r--vendor/pretty_assertions/src/printer.rs (renamed from vendor/pretty_assertions-0.7.2/src/printer.rs)0
-rw-r--r--vendor/proc-macro2/.cargo-checksum.json2
-rw-r--r--vendor/proc-macro2/Cargo.toml12
-rw-r--r--vendor/proc-macro2/build.rs5
-rw-r--r--vendor/proc-macro2/src/detection.rs2
-rw-r--r--vendor/proc-macro2/src/fallback.rs197
-rw-r--r--vendor/proc-macro2/src/lib.rs63
-rw-r--r--vendor/proc-macro2/src/marker.rs4
-rw-r--r--vendor/proc-macro2/src/parse.rs77
-rw-r--r--vendor/proc-macro2/src/rcvec.rs142
-rw-r--r--vendor/proc-macro2/src/wrapper.rs30
-rw-r--r--vendor/proc-macro2/tests/comments.rs2
-rw-r--r--vendor/proc-macro2/tests/test.rs22
-rw-r--r--vendor/quick-error-1.2.3/.cargo-checksum.json1
-rw-r--r--vendor/quick-error-1.2.3/Cargo.lock6
-rw-r--r--vendor/quick-error-1.2.3/Cargo.toml23
-rw-r--r--vendor/quick-error-1.2.3/LICENSE-APACHE202
-rw-r--r--vendor/quick-error-1.2.3/LICENSE-MIT19
-rw-r--r--vendor/quick-error-1.2.3/README.rst66
-rw-r--r--vendor/quick-error-1.2.3/bulk.yaml8
-rw-r--r--vendor/quick-error-1.2.3/examples/context.rs48
-rw-r--r--vendor/quick-error-1.2.3/src/lib.rs1262
-rw-r--r--vendor/quick-error-1.2.3/vagga.yaml36
-rw-r--r--vendor/quick-error/.cargo-checksum.json2
-rw-r--r--vendor/quick-error/Cargo.lock3
-rw-r--r--vendor/quick-error/Cargo.toml3
-rw-r--r--vendor/quick-error/README.rst6
-rw-r--r--vendor/quick-error/examples/context.rs21
-rw-r--r--vendor/quick-error/src/lib.rs292
-rw-r--r--vendor/quick-error/vagga.yaml6
-rw-r--r--vendor/quote/.cargo-checksum.json2
-rw-r--r--vendor/quote/Cargo.toml7
-rw-r--r--vendor/quote/src/ext.rs4
-rw-r--r--vendor/quote/src/ident_fragment.rs2
-rw-r--r--vendor/quote/src/lib.rs2
-rw-r--r--vendor/quote/src/runtime.rs10
-rw-r--r--vendor/quote/src/to_tokens.rs6
-rw-r--r--vendor/quote/tests/ui/does-not-have-iter-interpolated-dup.stderr2
-rw-r--r--vendor/quote/tests/ui/does-not-have-iter-interpolated.stderr2
-rw-r--r--vendor/quote/tests/ui/does-not-have-iter-separated.stderr2
-rw-r--r--vendor/quote/tests/ui/does-not-have-iter.stderr2
-rw-r--r--vendor/quote/tests/ui/not-repeatable.stderr76
-rw-r--r--vendor/redox_syscall/.cargo-checksum.json2
-rw-r--r--vendor/redox_syscall/Cargo.toml2
-rw-r--r--vendor/redox_syscall/src/arch/x86.rs105
-rw-r--r--vendor/redox_syscall/src/io/mod.rs4
-rw-r--r--vendor/redox_syscall/src/lib.rs2
-rw-r--r--vendor/regex-syntax/.cargo-checksum.json2
-rw-r--r--vendor/regex-syntax/Cargo.toml2
-rw-r--r--vendor/regex-syntax/src/ast/mod.rs6
-rw-r--r--vendor/regex-syntax/src/ast/parse.rs144
-rw-r--r--vendor/regex-syntax/src/ast/visitor.rs12
-rw-r--r--vendor/regex-syntax/src/error.rs4
-rw-r--r--vendor/regex-syntax/src/hir/interval.rs4
-rw-r--r--vendor/regex-syntax/src/hir/literal/mod.rs28
-rw-r--r--vendor/regex-syntax/src/hir/mod.rs18
-rw-r--r--vendor/regex-syntax/src/hir/translate.rs20
-rw-r--r--vendor/regex-syntax/src/lib.rs2
-rw-r--r--vendor/regex-syntax/src/parser.rs2
-rw-r--r--vendor/regex-syntax/src/unicode.rs7
-rw-r--r--vendor/regex-syntax/src/unicode_tables/age.rs198
-rw-r--r--vendor/regex-syntax/src/unicode_tables/case_folding_simple.rs98
-rw-r--r--vendor/regex-syntax/src/unicode_tables/general_category.rs747
-rw-r--r--vendor/regex-syntax/src/unicode_tables/grapheme_cluster_break.rs49
-rw-r--r--vendor/regex-syntax/src/unicode_tables/perl_decimal.rs11
-rw-r--r--vendor/regex-syntax/src/unicode_tables/perl_space.rs6
-rw-r--r--vendor/regex-syntax/src/unicode_tables/perl_word.rs128
-rw-r--r--vendor/regex-syntax/src/unicode_tables/property_bool.rs1128
-rw-r--r--vendor/regex-syntax/src/unicode_tables/property_names.rs6
-rw-r--r--vendor/regex-syntax/src/unicode_tables/property_values.rs26
-rw-r--r--vendor/regex-syntax/src/unicode_tables/script.rs222
-rw-r--r--vendor/regex-syntax/src/unicode_tables/script_extension.rs229
-rw-r--r--vendor/regex-syntax/src/unicode_tables/sentence_break.rs182
-rw-r--r--vendor/regex-syntax/src/unicode_tables/word_break.rs134
-rw-r--r--vendor/regex-syntax/src/utf8.rs6
-rw-r--r--vendor/regex/.cargo-checksum.json2
-rw-r--r--vendor/regex/CHANGELOG.md21
-rw-r--r--vendor/regex/Cargo.lock18
-rw-r--r--vendor/regex/Cargo.toml4
-rw-r--r--vendor/regex/src/backtrack.rs12
-rw-r--r--vendor/regex/src/compile.rs57
-rw-r--r--vendor/regex/src/dfa.rs38
-rw-r--r--vendor/regex/src/exec.rs14
-rw-r--r--vendor/regex/src/expand.rs8
-rw-r--r--vendor/regex/src/input.rs4
-rw-r--r--vendor/regex/src/lib.rs1
-rw-r--r--vendor/regex/src/literal/imp.rs4
-rw-r--r--vendor/regex/src/pattern.rs2
-rw-r--r--vendor/regex/src/pikevm.rs2
-rw-r--r--vendor/regex/src/prog.rs2
-rw-r--r--vendor/regex/src/re_bytes.rs12
-rw-r--r--vendor/regex/src/re_set.rs44
-rw-r--r--vendor/regex/src/re_trait.rs13
-rw-r--r--vendor/regex/src/re_unicode.rs24
-rw-r--r--vendor/regex/src/utf8.rs2
-rw-r--r--vendor/regex/tests/unicode.rs17
-rw-r--r--vendor/rowan/.cargo-checksum.json2
-rw-r--r--vendor/rowan/Cargo.lock10
-rw-r--r--vendor/rowan/Cargo.toml3
-rw-r--r--vendor/rowan/src/cursor.rs2
-rw-r--r--vendor/rustc_tools_util/.cargo-checksum.json2
-rw-r--r--vendor/rustc_tools_util/Cargo.toml25
-rw-r--r--vendor/rustc_tools_util/LICENSE-APACHE (renamed from vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-APACHE)2
-rw-r--r--vendor/rustc_tools_util/LICENSE-MIT (renamed from vendor/block-padding/LICENSE-MIT)4
-rw-r--r--vendor/rustc_tools_util/README.md10
-rw-r--r--vendor/rustc_tools_util/src/lib.rs34
-rw-r--r--vendor/ryu/.cargo-checksum.json2
-rw-r--r--vendor/ryu/Cargo.lock54
-rw-r--r--vendor/ryu/Cargo.toml8
-rw-r--r--vendor/ryu/README.md2
-rw-r--r--vendor/ryu/src/lib.rs4
-rw-r--r--vendor/semver/.cargo-checksum.json2
-rw-r--r--vendor/semver/Cargo.toml7
-rw-r--r--vendor/semver/build.rs2
-rw-r--r--vendor/semver/src/backport.rs9
-rw-r--r--vendor/semver/src/identifier.rs8
-rw-r--r--vendor/semver/src/lib.rs2
-rw-r--r--vendor/serde/.cargo-checksum.json2
-rw-r--r--vendor/serde/Cargo.toml9
-rw-r--r--vendor/serde/src/de/ignored_any.rs2
-rw-r--r--vendor/serde/src/de/impls.rs8
-rw-r--r--vendor/serde/src/de/mod.rs24
-rw-r--r--vendor/serde/src/de/value.rs37
-rw-r--r--vendor/serde/src/lib.rs24
-rw-r--r--vendor/serde/src/private/de.rs11
-rw-r--r--vendor/serde/src/private/ser.rs6
-rw-r--r--vendor/serde/src/ser/impls.rs15
-rw-r--r--vendor/serde/src/ser/mod.rs8
-rw-r--r--vendor/serde_derive/.cargo-checksum.json2
-rw-r--r--vendor/serde_derive/Cargo.toml4
-rw-r--r--vendor/serde_derive/src/lib.rs2
-rw-r--r--vendor/serde_json/.cargo-checksum.json2
-rw-r--r--vendor/serde_json/Cargo.toml11
-rw-r--r--vendor/serde_json/src/lib.rs3
-rw-r--r--vendor/serde_json/src/number.rs48
-rw-r--r--vendor/serde_json/src/value/mod.rs22
-rw-r--r--vendor/serde_json/src/value/ser.rs10
-rw-r--r--vendor/serde_json/tests/debug.rs43
-rw-r--r--vendor/serde_json/tests/regression/issue795.rs2
-rw-r--r--vendor/serde_json/tests/stream.rs1
-rw-r--r--vendor/serde_json/tests/test.rs7
-rw-r--r--vendor/serde_json/tests/ui/missing_colon.stderr2
-rw-r--r--vendor/serde_json/tests/ui/missing_value.stderr2
-rw-r--r--vendor/serde_repr/.cargo-checksum.json2
-rw-r--r--vendor/serde_repr/Cargo.toml11
-rw-r--r--vendor/serde_repr/README.md2
-rw-r--r--vendor/serde_repr/src/lib.rs2
-rw-r--r--vendor/serde_repr/tests/test.rs1
-rw-r--r--vendor/sha-1-0.8.2/.cargo-checksum.json1
-rw-r--r--vendor/sha-1-0.8.2/Cargo.lock148
-rw-r--r--vendor/sha-1-0.8.2/Cargo.toml58
-rw-r--r--vendor/sha-1-0.8.2/LICENSE-APACHE201
-rw-r--r--vendor/sha-1-0.8.2/LICENSE-MIT27
-rw-r--r--vendor/sha-1-0.8.2/benches/lib.rs7
-rw-r--r--vendor/sha-1-0.8.2/examples/sha1sum.rs49
-rw-r--r--vendor/sha-1-0.8.2/src/aarch64.rs9
-rw-r--r--vendor/sha-1-0.8.2/src/consts.rs19
-rw-r--r--vendor/sha-1-0.8.2/src/lib.rs141
-rw-r--r--vendor/sha-1-0.8.2/src/utils.rs300
-rw-r--r--vendor/sha-1-0.8.2/tests/data/one_million_a.bin1
-rw-r--r--vendor/sha-1-0.8.2/tests/data/sha1.blb1
-rw-r--r--vendor/sha-1-0.8.2/tests/lib.rs14
-rw-r--r--vendor/smallvec/.cargo-checksum.json2
-rw-r--r--vendor/smallvec/Cargo.toml31
-rw-r--r--vendor/smallvec/debug_metadata/README.md111
-rw-r--r--vendor/smallvec/debug_metadata/smallvec.natvis35
-rw-r--r--vendor/smallvec/scripts/run_miri.sh3
-rw-r--r--vendor/smallvec/src/lib.rs7
-rw-r--r--vendor/smallvec/tests/debugger_visualizer.rs68
-rw-r--r--vendor/syn/.cargo-checksum.json2
-rw-r--r--vendor/syn/Cargo.toml13
-rw-r--r--vendor/syn/benches/file.rs36
-rw-r--r--vendor/syn/benches/rust.rs11
-rw-r--r--vendor/syn/src/buffer.rs199
-rw-r--r--vendor/syn/src/expr.rs21
-rw-r--r--vendor/syn/src/gen/clone.rs2
-rw-r--r--vendor/syn/src/gen/debug.rs10
-rw-r--r--vendor/syn/src/gen/eq.rs6
-rw-r--r--vendor/syn/src/gen/fold.rs6
-rw-r--r--vendor/syn/src/gen/hash.rs6
-rw-r--r--vendor/syn/src/gen/visit.rs6
-rw-r--r--vendor/syn/src/gen/visit_mut.rs6
-rw-r--r--vendor/syn/src/item.rs14
-rw-r--r--vendor/syn/src/lib.rs13
-rw-r--r--vendor/syn/src/lit.rs2
-rw-r--r--vendor/syn/src/parse_macro_input.rs4
-rw-r--r--vendor/syn/src/pat.rs35
-rw-r--r--vendor/syn/src/path.rs46
-rw-r--r--vendor/syn/src/stmt.rs6
-rw-r--r--vendor/syn/src/ty.rs53
-rw-r--r--vendor/syn/tests/.gitignore1
-rw-r--r--vendor/syn/tests/common/eq.rs109
-rw-r--r--vendor/syn/tests/debug/gen.rs12
-rw-r--r--vendor/syn/tests/regression/issue1108.rs2
-rw-r--r--vendor/syn/tests/repo/mod.rs77
-rw-r--r--vendor/syn/tests/test_derive_input.rs2
-rw-r--r--vendor/syn/tests/test_parse_stream.rs8
-rw-r--r--vendor/syn/tests/test_precedence.rs19
-rw-r--r--vendor/syn/tests/test_size.rs8
-rw-r--r--vendor/syn/tests/test_stmt.rs2
-rw-r--r--vendor/thin-vec/.cargo-checksum.json1
-rw-r--r--vendor/thin-vec/Cargo.toml33
-rw-r--r--vendor/thin-vec/README.md9
-rw-r--r--vendor/thin-vec/src/lib.rs3117
-rw-r--r--vendor/thiserror-impl/.cargo-checksum.json2
-rw-r--r--vendor/thiserror-impl/Cargo.toml4
-rw-r--r--vendor/thiserror-impl/src/expand.rs108
-rw-r--r--vendor/thiserror-impl/src/generics.rs1
-rw-r--r--vendor/thiserror-impl/src/lib.rs5
-rw-r--r--vendor/thiserror-impl/src/valid.rs6
-rw-r--r--vendor/thiserror/.cargo-checksum.json2
-rw-r--r--vendor/thiserror/Cargo.toml14
-rw-r--r--vendor/thiserror/README.md32
-rw-r--r--vendor/thiserror/build.rs66
-rw-r--r--vendor/thiserror/src/aserror.rs9
-rw-r--r--vendor/thiserror/src/lib.rs44
-rw-r--r--vendor/thiserror/src/provide.rs15
-rw-r--r--vendor/thiserror/tests/compiletest.rs3
-rw-r--r--vendor/thiserror/tests/test_backtrace.rs85
-rw-r--r--vendor/thiserror/tests/test_deprecated.rs10
-rw-r--r--vendor/thiserror/tests/test_display.rs2
-rw-r--r--vendor/thiserror/tests/test_error.rs1
-rw-r--r--vendor/thiserror/tests/test_expr.rs3
-rw-r--r--vendor/thiserror/tests/test_from.rs2
-rw-r--r--vendor/thiserror/tests/test_generics.rs2
-rw-r--r--vendor/thiserror/tests/test_option.rs6
-rw-r--r--vendor/thiserror/tests/test_path.rs2
-rw-r--r--vendor/thiserror/tests/test_source.rs2
-rw-r--r--vendor/thiserror/tests/test_transparent.rs2
-rw-r--r--vendor/thiserror/tests/ui/concat-display.stderr2
-rw-r--r--vendor/thiserror/tests/ui/from-backtrace-backtrace.rs10
-rw-r--r--vendor/thiserror/tests/ui/from-backtrace-backtrace.stderr5
-rw-r--r--vendor/thiserror/tests/ui/no-display.stderr12
-rw-r--r--vendor/thiserror/tests/ui/source-enum-not-error.stderr44
-rw-r--r--vendor/thiserror/tests/ui/source-struct-not-error.stderr42
-rw-r--r--vendor/tracing-attributes/.cargo-checksum.json2
-rw-r--r--vendor/tracing-attributes/CHANGELOG.md21
-rw-r--r--vendor/tracing-attributes/Cargo.toml18
-rw-r--r--vendor/tracing-attributes/README.md4
-rw-r--r--vendor/tracing-attributes/src/expand.rs118
-rw-r--r--vendor/tracing-attributes/src/lib.rs60
-rw-r--r--vendor/tracing-attributes/tests/async_fn.rs13
-rw-r--r--vendor/tracing-attributes/tests/instrument.rs9
-rw-r--r--vendor/tracing-attributes/tests/ui.rs7
-rw-r--r--vendor/tracing-attributes/tests/ui/async_instrument.rs46
-rw-r--r--vendor/tracing-attributes/tests/ui/async_instrument.stderr98
-rw-r--r--vendor/tracing-core/.cargo-checksum.json2
-rw-r--r--vendor/tracing-core/CHANGELOG.md41
-rw-r--r--vendor/tracing-core/Cargo.toml6
-rw-r--r--vendor/tracing-core/README.md26
-rw-r--r--vendor/tracing-core/src/callsite.rs10
-rw-r--r--vendor/tracing-core/src/dispatcher.rs128
-rw-r--r--vendor/tracing-core/src/field.rs44
-rw-r--r--vendor/tracing-core/src/metadata.rs89
-rw-r--r--vendor/tracing-core/src/subscriber.rs27
-rw-r--r--vendor/tracing-subscriber-0.3.3/.cargo-checksum.json1
-rw-r--r--vendor/tracing-subscriber-0.3.3/CHANGELOG.md (renamed from vendor/tracing-subscriber/CHANGELOG.md)310
-rw-r--r--vendor/tracing-subscriber-0.3.3/Cargo.toml (renamed from vendor/tracing-subscriber/Cargo.toml)138
-rw-r--r--vendor/tracing-subscriber-0.3.3/LICENSE (renamed from vendor/tracing-subscriber/LICENSE)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/README.md (renamed from vendor/tracing-subscriber/README.md)6
-rw-r--r--vendor/tracing-subscriber-0.3.3/benches/enter.rs (renamed from vendor/tracing-subscriber/benches/enter.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/benches/filter.rs (renamed from vendor/tracing-subscriber/benches/filter.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/benches/filter_log.rs (renamed from vendor/tracing-subscriber/benches/filter_log.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/benches/fmt.rs (renamed from vendor/tracing-subscriber/benches/fmt.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/benches/support/mod.rs (renamed from vendor/tracing-subscriber/benches/support/mod.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/field/debug.rs (renamed from vendor/tracing-subscriber/src/field/debug.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/field/delimited.rs (renamed from vendor/tracing-subscriber/src/field/delimited.rs)4
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/field/display.rs (renamed from vendor/tracing-subscriber/src/field/display.rs)2
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/field/mod.rs (renamed from vendor/tracing-subscriber/src/field/mod.rs)14
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/filter/directive.rs (renamed from vendor/tracing-subscriber/src/filter/directive.rs)34
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/filter/env/directive.rs (renamed from vendor/tracing-subscriber/src/filter/env/directive.rs)160
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/filter/env/field.rs (renamed from vendor/tracing-subscriber/src/filter/env/field.rs)250
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/filter/env/mod.rs (renamed from vendor/tracing-subscriber/src/filter/env/mod.rs)677
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/filter/filter_fn.rs (renamed from vendor/tracing-subscriber/src/filter/filter_fn.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/filter/layer_filters.rs (renamed from vendor/tracing-subscriber/src/filter/layer_filters/mod.rs)367
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/filter/level.rs (renamed from vendor/tracing-subscriber/src/filter/level.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/filter/mod.rs (renamed from vendor/tracing-subscriber/src/filter/mod.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/filter/targets.rs (renamed from vendor/tracing-subscriber/src/filter/targets.rs)33
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/fmt/fmt_layer.rs (renamed from vendor/tracing-subscriber/src/fmt/fmt_layer.rs)215
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/fmt/format/json.rs (renamed from vendor/tracing-subscriber/src/fmt/format/json.rs)175
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/fmt/format/mod.rs (renamed from vendor/tracing-subscriber/src/fmt/format/mod.rs)443
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/fmt/format/pretty.rs (renamed from vendor/tracing-subscriber/src/fmt/format/pretty.rs)156
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/fmt/mod.rs (renamed from vendor/tracing-subscriber/src/fmt/mod.rs)359
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/fmt/time/datetime.rs (renamed from vendor/tracing-subscriber/src/fmt/time/datetime.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/fmt/time/mod.rs (renamed from vendor/tracing-subscriber/src/fmt/time/mod.rs)8
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/fmt/time/time_crate.rs276
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/fmt/writer.rs (renamed from vendor/tracing-subscriber/src/fmt/writer.rs)28
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/layer/context.rs (renamed from vendor/tracing-subscriber/src/layer/context.rs)22
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/layer/layered.rs (renamed from vendor/tracing-subscriber/src/layer/layered.rs)57
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/layer/mod.rs (renamed from vendor/tracing-subscriber/src/layer/mod.rs)725
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/layer/tests.rs (renamed from vendor/tracing-subscriber/src/layer/tests.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/lib.rs (renamed from vendor/tracing-subscriber/src/lib.rs)54
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/macros.rs (renamed from vendor/tracing-subscriber/src/macros.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/prelude.rs (renamed from vendor/tracing-subscriber/src/prelude.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/registry/extensions.rs (renamed from vendor/tracing-subscriber/src/registry/extensions.rs)2
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/registry/mod.rs (renamed from vendor/tracing-subscriber/src/registry/mod.rs)20
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/registry/sharded.rs (renamed from vendor/tracing-subscriber/src/registry/sharded.rs)27
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/registry/stack.rs (renamed from vendor/tracing-subscriber/src/registry/stack.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/reload.rs (renamed from vendor/tracing-subscriber/src/reload.rs)159
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/sync.rs (renamed from vendor/tracing-subscriber/src/sync.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/src/util.rs (renamed from vendor/tracing-subscriber/src/util.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/cached_layer_filters_dont_break_other_layers.rs (renamed from vendor/tracing-subscriber/tests/cached_layer_filters_dont_break_other_layers.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/duplicate_spans.rs (renamed from vendor/tracing-subscriber/tests/duplicate_spans.rs)1
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/field_filter.rs (renamed from vendor/tracing-subscriber/tests/field_filter.rs)4
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/filter.rs187
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/filter_log.rs (renamed from vendor/tracing-subscriber/tests/filter_log.rs)4
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/fmt_max_level_hint.rs (renamed from vendor/tracing-subscriber/tests/fmt_max_level_hint.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/hinted_layer_filters_dont_break_other_layers.rs (renamed from vendor/tracing-subscriber/tests/hinted_layer_filters_dont_break_other_layers.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/layer_filter_interests_are_cached.rs (renamed from vendor/tracing-subscriber/tests/layer_filter_interests_are_cached.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/layer_filters/boxed.rs (renamed from vendor/tracing-subscriber/tests/layer_filters/boxed.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/layer_filters/downcast_raw.rs (renamed from vendor/tracing-subscriber/tests/layer_filters/downcast_raw.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/layer_filters/filter_scopes.rs (renamed from vendor/tracing-subscriber/tests/layer_filters/filter_scopes.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/layer_filters/main.rs (renamed from vendor/tracing-subscriber/tests/layer_filters/main.rs)3
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/layer_filters/targets.rs (renamed from vendor/tracing-subscriber/tests/layer_filters/targets.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/layer_filters/trees.rs (renamed from vendor/tracing-subscriber/tests/layer_filters/trees.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/multiple_layer_filter_interests_cached.rs (renamed from vendor/tracing-subscriber/tests/multiple_layer_filter_interests_cached.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/registry_max_level_hint.rs (renamed from vendor/tracing-subscriber/tests/registry_max_level_hint.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/registry_with_subscriber.rs (renamed from vendor/tracing-subscriber/tests/registry_with_subscriber.rs)2
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/reload.rs (renamed from vendor/tracing-subscriber/tests/reload.rs)62
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/same_len_filters.rs (renamed from vendor/tracing-subscriber/tests/same_len_filters.rs)4
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/support.rs (renamed from vendor/tracing-subscriber/tests/support.rs)19
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/unhinted_layer_filters_dont_break_other_layers.rs (renamed from vendor/tracing-subscriber/tests/unhinted_layer_filters_dont_break_other_layers.rs)0
-rw-r--r--vendor/tracing-subscriber-0.3.3/tests/utils.rs (renamed from vendor/tracing-subscriber/tests/utils.rs)4
-rw-r--r--vendor/tracing-subscriber/.cargo-checksum.json1
-rw-r--r--vendor/tracing-subscriber/src/filter/env/builder.rs324
-rw-r--r--vendor/tracing-subscriber/src/filter/layer_filters/combinator.rs469
-rw-r--r--vendor/tracing-subscriber/src/fmt/time/time_crate.rs470
-rw-r--r--vendor/tracing-subscriber/tests/env_filter/main.rs547
-rw-r--r--vendor/tracing-subscriber/tests/env_filter/per_layer.rs305
-rw-r--r--vendor/tracing-subscriber/tests/event_enabling.rs81
-rw-r--r--vendor/tracing-subscriber/tests/layer_filters/combinators.rs42
-rw-r--r--vendor/tracing-subscriber/tests/layer_filters/vec.rs120
-rw-r--r--vendor/tracing-subscriber/tests/option.rs41
-rw-r--r--vendor/tracing-subscriber/tests/vec.rs19
-rw-r--r--vendor/tracing-subscriber/tests/vec_subscriber_filter_interests_cached.rs117
-rw-r--r--vendor/tracing/.cargo-checksum.json2
-rw-r--r--vendor/tracing/CHANGELOG.md82
-rw-r--r--vendor/tracing/Cargo.toml48
-rw-r--r--vendor/tracing/README.md10
-rw-r--r--vendor/tracing/benches/baseline.rs24
-rw-r--r--vendor/tracing/benches/dispatch_get_clone.rs15
-rw-r--r--vendor/tracing/benches/dispatch_get_ref.rs16
-rw-r--r--vendor/tracing/benches/empty_span.rs43
-rw-r--r--vendor/tracing/benches/enter_span.rs16
-rw-r--r--vendor/tracing/benches/event.rs12
-rw-r--r--vendor/tracing/benches/global_subscriber.rs136
-rw-r--r--vendor/tracing/benches/no_subscriber.rs101
-rw-r--r--vendor/tracing/benches/shared.rs160
-rw-r--r--vendor/tracing/benches/span_fields.rs23
-rw-r--r--vendor/tracing/benches/span_no_fields.rs13
-rw-r--r--vendor/tracing/benches/span_repeated.rs20
-rw-r--r--vendor/tracing/benches/subscriber.rs189
-rw-r--r--vendor/tracing/src/dispatcher.rs2
-rw-r--r--vendor/tracing/src/lib.rs12
-rw-r--r--vendor/tracing/src/macros.rs38
-rw-r--r--vendor/tracing/src/span.rs18
-rw-r--r--vendor/tracing/src/subscriber.rs17
-rw-r--r--vendor/tracing/tests/event.rs24
-rw-r--r--vendor/unicode-ident/.cargo-checksum.json2
-rw-r--r--vendor/unicode-ident/Cargo.toml18
-rw-r--r--vendor/unicode-ident/LICENSE-UNICODE46
-rw-r--r--vendor/unicode-ident/README.md30
-rw-r--r--vendor/unicode-ident/src/tables.rs111
-rw-r--r--vendor/unicode-ident/tests/fst/xid_continue.fstbin70255 -> 72750 bytes
-rw-r--r--vendor/unicode-ident/tests/fst/xid_start.fstbin62642 -> 64999 bytes
-rw-r--r--vendor/unicode-ident/tests/static_size.rs8
-rw-r--r--vendor/unicode-ident/tests/trie/trie.rs222
-rw-r--r--vendor/unicode-normalization/.cargo-checksum.json2
-rw-r--r--vendor/unicode-normalization/Cargo.toml2
-rw-r--r--vendor/unicode-normalization/README.md2
-rw-r--r--vendor/unicode-normalization/scripts/unicode.py2
-rw-r--r--vendor/unicode-normalization/src/tables.rs16653
-rw-r--r--vendor/unicode-script/.cargo-checksum.json2
-rw-r--r--vendor/unicode-script/Cargo.toml36
-rw-r--r--vendor/unicode-script/LICENSE-APACHE (renamed from vendor/block-buffer-0.7.3/LICENSE-APACHE)402
-rw-r--r--vendor/unicode-script/LICENSE-MIT (renamed from vendor/crossbeam/LICENSE-MIT)54
-rw-r--r--vendor/unicode-script/README.md4
-rw-r--r--vendor/unicode-script/scripts/unicode.py4
-rw-r--r--vendor/unicode-script/src/lib.rs10
-rw-r--r--vendor/unicode-script/src/tables.rs2275
-rw-r--r--vendor/unicode-security/.cargo-checksum.json2
-rw-r--r--vendor/unicode-security/Cargo.toml39
-rw-r--r--vendor/unicode-security/README.md4
-rw-r--r--vendor/unicode-security/scripts/unicode.py6
-rw-r--r--vendor/unicode-security/src/restriction_level.rs2
-rw-r--r--vendor/unicode-security/src/tables.rs2118
-rw-r--r--vendor/unicode-segmentation/.cargo-checksum.json2
-rw-r--r--vendor/unicode-segmentation/Cargo.toml29
-rwxr-xr-xvendor/unicode-segmentation/scripts/unicode.py2
-rw-r--r--vendor/unicode-segmentation/src/tables.rs2372
-rw-r--r--vendor/unicode-segmentation/src/testdata.rs6
-rw-r--r--vendor/unicode-width/.cargo-checksum.json2
-rw-r--r--vendor/unicode-width/Cargo.toml30
-rwxr-xr-xvendor/unicode-width/scripts/unicode.py748
-rw-r--r--vendor/unicode-width/src/tables.rs775
-rw-r--r--vendor/unicode-width/src/tests.rs20
-rw-r--r--vendor/unicode-xid/.cargo-checksum.json2
-rw-r--r--vendor/unicode-xid/Cargo.toml2
-rw-r--r--vendor/unicode-xid/README.md9
-rw-r--r--vendor/unicode-xid/src/tables.rs45
-rw-r--r--vendor/url/.cargo-checksum.json2
-rw-r--r--vendor/url/Cargo.toml63
-rw-r--r--vendor/url/LICENSE-MIT2
-rw-r--r--vendor/url/README.md14
-rw-r--r--vendor/url/src/host.rs86
-rw-r--r--vendor/url/src/lib.rs82
-rw-r--r--vendor/url/src/origin.rs3
-rw-r--r--vendor/url/src/parser.rs37
-rw-r--r--vendor/url/src/quirks.rs59
-rw-r--r--vendor/url/tests/data.rs79
-rw-r--r--vendor/url/tests/debugger_visualizer.rs102
-rw-r--r--vendor/url/tests/unit.rs54
-rw-r--r--vendor/url/tests/urltestdata.json1625
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/.cargo-checksum.json1
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/CODE_OF_CONDUCT.md49
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/CONTRIBUTING.md8
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/Cargo.toml43
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception220
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-MIT23
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/ORG_CODE_OF_CONDUCT.md143
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/README.md94
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/SECURITY.md29
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/src/error.rs52
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib.rs48
-rw-r--r--vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib_generated.rs1940
-rw-r--r--vendor/xflags-macros/.cargo-checksum.json2
-rw-r--r--vendor/xflags-macros/Cargo.toml6
-rw-r--r--vendor/xflags-macros/src/ast.rs13
-rw-r--r--vendor/xflags-macros/src/emit.rs350
-rw-r--r--vendor/xflags-macros/src/lib.rs26
-rw-r--r--vendor/xflags-macros/src/parse.rs166
-rw-r--r--vendor/xflags-macros/src/update.rs3
-rw-r--r--vendor/xflags-macros/tests/data/help.rs (renamed from vendor/xflags-macros/tests/it/src/help.rs)5
-rw-r--r--vendor/xflags-macros/tests/data/repeated_pos.rs (renamed from vendor/xflags-macros/tests/it/src/repeated_pos.rs)3
-rw-r--r--vendor/xflags-macros/tests/data/smoke.rs (renamed from vendor/xflags-macros/tests/it/src/smoke.rs)3
-rw-r--r--vendor/xflags-macros/tests/data/subcommands.rs (renamed from vendor/xflags-macros/tests/it/src/subcommands.rs)3
-rw-r--r--vendor/xflags-macros/tests/it/help.rs84
-rw-r--r--vendor/xflags-macros/tests/it/main.rs36
-rw-r--r--vendor/xflags-macros/tests/it/repeated_pos.rs64
-rw-r--r--vendor/xflags-macros/tests/it/smoke.rs61
-rw-r--r--vendor/xflags-macros/tests/it/subcommands.rs174
-rw-r--r--vendor/xflags/.cargo-checksum.json2
-rw-r--r--vendor/xflags/Cargo.lock6
-rw-r--r--vendor/xflags/Cargo.toml9
-rw-r--r--vendor/xflags/LICENSE-APACHE201
-rw-r--r--vendor/xflags/LICENSE-MIT23
-rw-r--r--vendor/xflags/README.md49
-rw-r--r--vendor/xflags/examples/hello-generated.rs13
-rw-r--r--vendor/xflags/examples/hello.rs3
-rw-r--r--vendor/xflags/examples/immediate-mode.rs16
-rw-r--r--vendor/xflags/examples/longer.rs7
-rw-r--r--vendor/xflags/examples/non-utf8.rs3
-rw-r--r--vendor/xflags/src/lib.rs172
-rw-r--r--vendor/xflags/src/rt.rs14
1252 files changed, 43787 insertions, 56076 deletions
diff --git a/vendor/annotate-snippets-0.8.0/.cargo-checksum.json b/vendor/annotate-snippets-0.8.0/.cargo-checksum.json
deleted file mode 100644
index 413c71606..000000000
--- a/vendor/annotate-snippets-0.8.0/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CHANGELOG.md":"ca530d80d98754cf591aec37f089ade5a9334d358caea6262b556ae81ec0695e","Cargo.lock":"cec2d73c92b5db30dc134dd48d5233b7d589a5583a6a7a58f967776b5927de20","Cargo.toml":"acdebc9bab91be584c752d4a3e3b56c554d849f6ac8bc29f9b2270f8c6599404","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"49c0b000c03731d9e3970dc059ad4ca345d773681f4a612b0024435b663e0220","README.md":"3b0998e062248617e214b03ae83ff0da63ef6ecf08a9e84bd0deb0676958ed8a","benches/simple.rs":"f85dd74583e3addba780b2c136f250197155e173f09472ae106ebca96006ae76","examples/expected_type.rs":"ce9aad006f7aca50c460684dbc7b95007044d730583f8a079e33123c7d98b618","examples/footer.rs":"77bcb981711091d93b4fbfbbe318f262d90996485aa012ba3ff95ebd4dc3085f","examples/format.rs":"72f47847ce0b0a1025b56642a5b3fe191aaac775c16f42d76417362234298393","examples/multislice.rs":"bf10fc20f1948e6b0f325ed486ddf1b44e9a99fd22226012b81c5608846de983","src/display_list/from_snippet.rs":"49797d0f296a6af96bee70ccca8919050033fdaf7cbd1efe18ab2bead3430c6a","src/display_list/mod.rs":"a6aebdc9d666801280623b72798cfaae9172cb6f686ab9ef6c79a31dab6ef044","src/display_list/structs.rs":"3437d210c51b7bedc4a76db4e5492dda986d8328d87c0b3d5fbf548903543064","src/formatter/mod.rs":"bf40e1e852a116e90fcb0c47a3e59513d0fa7aa8a2be3575f819ed850ab7cc38","src/formatter/style.rs":"ab6e7cb90a8921bd9adfb914f234876f65cbc62cfd92b7dcfabfeeefb936d541","src/lib.rs":"fd655cb0518b4d11d5ff3a92eceefc0f45697c430197e95d3b8bed3bbf90325f","src/snippet.rs":"14a875640ac81eca9a29c351b5a99bb8e88a2970bcdddcf2ce1658de2fcbab85","src/stylesheets/color.rs":"5f8049f41a8d9636e55975e999e7c149d4b54b65b2518ea88be1ae69323b21a1","src/stylesheets/mod.rs":"16a439c043e55dd5a0084bd805154a57f4300a174775d90efd577f901784ef65","src/stylesheets/no_color.rs":"854529529a061df5cab0bf889ac43cb6d0203e674be38ae1cfb6724729beac31","tests/diff/mod.rs":"6e760d4bfda064934646da1461b940ef5ca1416a57428bda47871bb116f7add0","tests/dl_from_snippet.rs":"c1d8a69ea35b147853d392db6f94577ee7fb3bed7a0a8dfb07310d1b848b6fe7","tests/fixtures/no-color/multiline_annotation.toml":"352674f4e37f6a7cccce01cd50c0d190f9658ac344deafa06f445e222d2077f2","tests/fixtures/no-color/multiline_annotation.txt":"ee33c4a17fc72095f217a78f479c3718ad5499d745e4248937f7eaa028ee4328","tests/fixtures/no-color/multiline_annotation2.toml":"cb43d8ff232c16946b69e9b95205986a4a020bf338934212276e20384446a214","tests/fixtures/no-color/multiline_annotation2.txt":"4cdd277194e08b8f38b3045e08f3c180982b576029af66cae7519f43bfd81ca6","tests/fixtures/no-color/multiline_annotation3.toml":"93badadaaffca9382c25ac9286006b4aa59747a1e2cc2c717e003dbdd841c1a5","tests/fixtures/no-color/multiline_annotation3.txt":"66ee253f2566e40e69e8fdfb9837ee803c26bce2275d1cb950de28862bb8e0fe","tests/fixtures/no-color/multiple_annotations.toml":"c570a67e211c324edb2a1427148dba3a62cb2af0aaf5a522d1dd6a03594489b5","tests/fixtures/no-color/multiple_annotations.txt":"b284ab83d9de3aa9d014d3d04ac199517967885bc064f0462c15d6a4d71554aa","tests/fixtures/no-color/simple.toml":"6ef667b5e736fc112a1fb4722a2828aaf8049b8bbf6aacdb730a8f3427900f10","tests/fixtures/no-color/simple.txt":"2a8e4036837503bb53fca8ef761b658090e7869bf9b87197612530ca4e71b7f2","tests/fixtures_test.rs":"903f56c24c500135fed3fc0e40c77a89b98f72ce2e99322658242a6bfbf89a14","tests/formatter.rs":"0849bb94fe27f18faa174669e76694509dbe38a04687af809d1094dea2eddb23","tests/snippet/mod.rs":"06f962abc0eff7a83d3088cf774a86c26adc8889ff5652e3958cf14cc029d0c1"},"package":"d78ea013094e5ea606b1c05fe35f1dd7ea1eb1ea259908d040b25bd5ec677ee5"} \ No newline at end of file
diff --git a/vendor/annotate-snippets-0.8.0/CHANGELOG.md b/vendor/annotate-snippets-0.8.0/CHANGELOG.md
deleted file mode 100644
index e0390a71b..000000000
--- a/vendor/annotate-snippets-0.8.0/CHANGELOG.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# Changelog
-
-## Unreleased
-
- - …
-
-## annotate-snippets 0.8.0 (April 14, 2020)
-
- - Replace `ansi_term` with `yansi-term` for improved performance. (#30)
- - Turn `Snippet` and `Slice` to work on borrowed slices, rather than Strings. (#32)
- - Fix `\r\n` end of lines. (#29)
-
-## annotate-snippets 0.7.0 (March 30, 2020)
-
- - Refactor API to use `fmt::Display` (#27)
- - Fix SourceAnnotation range (#27)
- - Fix column numbers (#22)
- - Derive `PartialEq` for `AnnotationType` (#19)
- - Update `ansi_term` to 0.12.
-
-## annotate-snippets 0.6.1 (July 23, 2019)
-
- - Fix too many anonymized line numbers (#5)
-
-## annotate-snippets 0.6.0 (June 26, 2019)
-
- - Add an option to anonymize line numbers (#3)
- - Transition the crate to rust-lang org.
- - Update the syntax to Rust 2018 idioms. (#4)
diff --git a/vendor/annotate-snippets-0.8.0/Cargo.lock b/vendor/annotate-snippets-0.8.0/Cargo.lock
deleted file mode 100644
index 18d8f4c0e..000000000
--- a/vendor/annotate-snippets-0.8.0/Cargo.lock
+++ /dev/null
@@ -1,630 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-[[package]]
-name = "annotate-snippets"
-version = "0.8.0"
-dependencies = [
- "criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
- "toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "yansi-term 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "atty"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "hermit-abi 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "autocfg"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "bitflags"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "bstr"
-version = "0.2.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "regex-automata 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "bumpalo"
-version = "3.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "byteorder"
-version = "1.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "cast"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "cfg-if"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "clap"
-version = "2.33.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "criterion"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
- "cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "criterion-plot 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "oorandom 11.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "plotters 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "regex 1.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_json 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)",
- "tinytemplate 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "criterion-plot"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "memoffset 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-queue"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.7.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "csv"
-version = "1.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bstr 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "csv-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "ryu 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "csv-core"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "difference"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "either"
-version = "1.5.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "glob"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "hermit-abi"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "itertools"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "itoa"
-version = "0.4.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "js-sys"
-version = "0.3.37"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "libc"
-version = "0.2.68"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "log"
-version = "0.4.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "maybe-uninit"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "memchr"
-version = "2.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "memoffset"
-version = "0.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num-traits"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "num_cpus"
-version = "1.12.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "hermit-abi 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "oorandom"
-version = "11.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "plotters"
-version = "0.2.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "js-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
- "web-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rayon"
-version = "1.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "regex"
-version = "1.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "regex-syntax 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "regex-syntax"
-version = "0.6.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "rustc_version"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ryu"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "same-file"
-version = "1.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "scopeguard"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "semver"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "semver-parser"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "serde"
-version = "1.0.105"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.105"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.50"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "ryu 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "syn"
-version = "1.0.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "textwrap"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tinytemplate"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_json 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "toml"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "unicode-width"
-version = "0.1.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "unicode-xid"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "walkdir"
-version = "2.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "wasm-bindgen-macro 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "bumpalo 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)",
- "wasm-bindgen-shared 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "wasm-bindgen-macro-support 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)",
- "wasm-bindgen-backend 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
- "wasm-bindgen-shared 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.60"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "web-sys"
-version = "0.3.37"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "js-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)",
- "wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "winapi"
-version = "0.3.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winapi-util"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "yansi-term"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[metadata]
-"checksum atty 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-"checksum autocfg 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
-"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
-"checksum bstr 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "2889e6d50f394968c8bf4240dc3f2a7eb4680844d27308f798229ac9d4725f41"
-"checksum bumpalo 3.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "12ae9db68ad7fac5fe51304d20f016c911539251075a214f8e663babefa35187"
-"checksum byteorder 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de"
-"checksum cast 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b9434b9a5aa1450faa3f9cb14ea0e8c53bb5d2b3c1bfd1ab4fc03e9f33fbfb0"
-"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
-"checksum clap 2.33.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5067f5bb2d80ef5d68b4c87db81601f0b75bca627bc2ef76b141d7b846a3c6d9"
-"checksum criterion 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1fc755679c12bda8e5523a71e4d654b6bf2e14bd838dfc48cde6559a05caf7d1"
-"checksum criterion-plot 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a01e15e0ea58e8234f96146b1f91fa9d0e4dd7a38da93ff7a75d42c0b9d3a545"
-"checksum crossbeam-deque 0.7.3 (registry+https://github.com/rust-lang/crates.io-index)" = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"
-"checksum crossbeam-epoch 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
-"checksum crossbeam-queue 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c695eeca1e7173472a32221542ae469b3e9aac3a4fc81f7696bcad82029493db"
-"checksum crossbeam-utils 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
-"checksum csv 1.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "00affe7f6ab566df61b4be3ce8cf16bc2576bca0963ceb0955e45d514bf9a279"
-"checksum csv-core 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90"
-"checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198"
-"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
-"checksum glob 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
-"checksum hermit-abi 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "725cf19794cf90aa94e65050cb4191ff5d8fa87a498383774c47b332e3af952e"
-"checksum itertools 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484"
-"checksum itoa 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e"
-"checksum js-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)" = "6a27d435371a2fa5b6d2b028a74bbdb1234f308da363226a2854ca3ff8ba7055"
-"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-"checksum libc 0.2.68 (registry+https://github.com/rust-lang/crates.io-index)" = "dea0c0405123bba743ee3f91f49b1c7cfb684eef0da0a50110f758ccf24cdff0"
-"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
-"checksum maybe-uninit 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
-"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400"
-"checksum memoffset 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b4fc2c02a7e374099d4ee95a193111f72d2110197fe200272371758f6c3643d8"
-"checksum num-traits 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "c62be47e61d1842b9170f0fdeec8eba98e60e90e5446449a0545e5152acd7096"
-"checksum num_cpus 1.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6"
-"checksum oorandom 11.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ebcec7c9c2a95cacc7cd0ecb89d8a8454eca13906f6deb55258ffff0adeb9405"
-"checksum plotters 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)" = "4e3bb8da247d27ae212529352020f3e5ee16e83c0c258061d27b08ab92675eeb"
-"checksum proc-macro2 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "df246d292ff63439fea9bc8c0a270bed0e390d5ebd4db4ba15aba81111b5abe3"
-"checksum quote 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2bdc6c187c65bca4260c9011c9e3132efe4909da44726bad24cf7572ae338d7f"
-"checksum rayon 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "db6ce3297f9c85e16621bb8cca38a06779ffc31bb8184e1be4bed2be4678a098"
-"checksum rayon-core 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "08a89b46efaf957e52b18062fb2f4660f8b8a4dde1807ca002690868ef2c85a9"
-"checksum regex 1.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7f6946991529684867e47d86474e3a6d0c0ab9b82d5821e314b1ede31fa3a4b3"
-"checksum regex-automata 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4"
-"checksum regex-syntax 0.6.17 (registry+https://github.com/rust-lang/crates.io-index)" = "7fe5bd57d1d7414c6b5ed48563a2c855d995ff777729dcd91c369ec7fea395ae"
-"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
-"checksum ryu 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535622e6be132bccd223f4bb2b8ac8d53cda3c7a6394944d3b2b33fb974f9d76"
-"checksum same-file 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
-"checksum scopeguard 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
-"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
-"checksum serde 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)" = "e707fbbf255b8fc8c3b99abb91e7257a622caeb20a9818cbadbeeede4e0932ff"
-"checksum serde_derive 1.0.105 (registry+https://github.com/rust-lang/crates.io-index)" = "ac5d00fc561ba2724df6758a17de23df5914f20e41cb00f94d5b7ae42fffaff8"
-"checksum serde_json 1.0.50 (registry+https://github.com/rust-lang/crates.io-index)" = "78a7a12c167809363ec3bd7329fc0a3369056996de43c4b37ef3cd54a6ce4867"
-"checksum syn 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "0df0eb663f387145cab623dea85b09c2c5b4b0aef44e945d928e682fce71bb03"
-"checksum textwrap 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
-"checksum tinytemplate 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "57a3c6667d3e65eb1bc3aed6fd14011c6cbc3a0665218ab7f5daf040b9ec371a"
-"checksum toml 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a"
-"checksum unicode-width 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "caaa9d531767d1ff2150b9332433f32a24622147e5ebb1f26409d5da67afd479"
-"checksum unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "826e7639553986605ec5979c7dd957c7895e93eabed50ab2ffa7f6128a75097c"
-"checksum walkdir 2.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "777182bc735b6424e1a57516d35ed72cb8019d85c8c9bf536dccb3445c1a2f7d"
-"checksum wasm-bindgen 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "2cc57ce05287f8376e998cbddfb4c8cb43b84a7ec55cf4551d7c00eef317a47f"
-"checksum wasm-bindgen-backend 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "d967d37bf6c16cca2973ca3af071d0a2523392e4a594548155d89a678f4237cd"
-"checksum wasm-bindgen-macro 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "8bd151b63e1ea881bb742cd20e1d6127cef28399558f3b5d415289bc41eee3a4"
-"checksum wasm-bindgen-macro-support 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "d68a5b36eef1be7868f668632863292e37739656a80fc4b9acec7b0bd35a4931"
-"checksum wasm-bindgen-shared 0.2.60 (registry+https://github.com/rust-lang/crates.io-index)" = "daf76fe7d25ac79748a37538b7daeed1c7a6867c92d3245c12c6222e4a20d639"
-"checksum web-sys 0.3.37 (registry+https://github.com/rust-lang/crates.io-index)" = "2d6f51648d8c56c366144378a33290049eafdd784071077f6fe37dae64c1c4cb"
-"checksum winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8093091eeb260906a183e6ae1abdba2ef5ef2257a21801128899c3fc699229c6"
-"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-"checksum winapi-util 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4ccfbf554c6ad11084fb7517daca16cfdcaccbdadba4fc336f032a8b12c2ad80"
-"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
-"checksum yansi-term 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7e44ab40470a13c8746f6a9b5e042ba56dbd55e5a48921e131779b4575935bc7"
diff --git a/vendor/annotate-snippets-0.8.0/Cargo.toml b/vendor/annotate-snippets-0.8.0/Cargo.toml
deleted file mode 100644
index 3cccbbe7c..000000000
--- a/vendor/annotate-snippets-0.8.0/Cargo.toml
+++ /dev/null
@@ -1,62 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-edition = "2018"
-name = "annotate-snippets"
-version = "0.8.0"
-authors = ["Zibi Braniecki <gandalf@mozilla.com>"]
-description = "Library for building code annotations"
-readme = "README.md"
-keywords = ["code", "analysis", "ascii", "errors", "debug"]
-license = "Apache-2.0/MIT"
-repository = "https://github.com/rust-lang/annotate-snippets-rs"
-
-[[bench]]
-name = "simple"
-harness = false
-[dependencies.yansi-term]
-version = "0.1"
-optional = true
-[dev-dependencies.criterion]
-version = "0.3"
-
-[dev-dependencies.difference]
-version = "2.0"
-
-[dev-dependencies.glob]
-version = "0.3"
-
-[dev-dependencies.serde]
-version = "1.0"
-features = ["derive"]
-
-[dev-dependencies.toml]
-version = "0.5"
-
-[dev-dependencies.yansi-term]
-version = "0.1"
-
-[features]
-color = ["yansi-term"]
-default = []
-[badges.coveralls]
-branch = "master"
-repository = "rust-lang/annotate-snippets-rs"
-service = "github"
-
-[badges.maintenance]
-status = "actively-developed"
-
-[badges.travis-ci]
-branch = "master"
-repository = "rust-lang/annotate-snippets-rs"
diff --git a/vendor/annotate-snippets-0.8.0/LICENSE-MIT b/vendor/annotate-snippets-0.8.0/LICENSE-MIT
deleted file mode 100644
index 5655fa311..000000000
--- a/vendor/annotate-snippets-0.8.0/LICENSE-MIT
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright 2017 Mozilla
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
-of the Software, and to permit persons to whom the Software is furnished to do
-so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/annotate-snippets-0.8.0/README.md b/vendor/annotate-snippets-0.8.0/README.md
deleted file mode 100644
index 592a51e14..000000000
--- a/vendor/annotate-snippets-0.8.0/README.md
+++ /dev/null
@@ -1,92 +0,0 @@
-# annotate-snippets
-
-`annotate-snippets` is a Rust library for annotation of programming code slices.
-
-[![crates.io](https://meritbadge.herokuapp.com/annotate-snippets)](https://crates.io/crates/annotate-snippets)
-[![Build Status](https://travis-ci.com/rust-lang/annotate-snippets-rs.svg?branch=master)](https://travis-ci.com/rust-lang/annotate-snippets-rs)
-[![Coverage Status](https://coveralls.io/repos/github/rust-lang/annotate-snippets-rs/badge.svg?branch=master)](https://coveralls.io/github/rust-lang/annotate-snippets-rs?branch=master)
-
-The library helps visualize meta information annotating source code slices.
-It takes a data structure called `Snippet` on the input and produces a `String`
-which may look like this:
-
-```text
-error[E0308]: mismatched types
- --> src/format.rs:52:1
- |
-51 | ) -> Option<String> {
- | -------------- expected `Option<String>` because of return type
-52 | / for ann in annotations {
-53 | | match (ann.range.0, ann.range.1) {
-54 | | (None, None) => continue,
-55 | | (Some(start), Some(end)) if start > end_index => continue,
-... |
-71 | | }
-72 | | }
- | |_____^ expected enum `std::option::Option`, found ()
-```
-
-[Documentation][]
-
-[Documentation]: https://docs.rs/annotate-snippets/
-
-Usage
------
-
-```rust
-use annotate_snippets::{
- display_list::DisplayList,
- formatter::DisplayListFormatter,
- snippet::{Annotation, AnnotationType, Slice, Snippet, SourceAnnotation},
-};
-
-fn main() {
- let snippet = Snippet {
- title: Some(Annotation {
- label: Some("expected type, found `22`".to_string()),
- id: None,
- annotation_type: AnnotationType::Error,
- }),
- footer: vec![],
- slices: vec![
- Slice {
- source: r#"
-This is an example
-content of the slice
-which will be annotated
-with the list of annotations below.
- "#.to_string(),
- line_start: 26,
- origin: Some("examples/example.txt".to_string()),
- fold: false,
- annotations: vec![
- SourceAnnotation {
- label: "Example error annotation".to_string(),
- annotation_type: AnnotationType::Error,
- range: (13, 18),
- },
- SourceAnnotation {
- label: "and here's a warning".to_string(),
- annotation_type: AnnotationType::Warning,
- range: (34, 50),
- },
- ],
- },
- ],
- };
-
- let dl = DisplayList::from(snippet);
- let dlf = DisplayListFormatter::new(true, false);
- println!("{}", dlf.format(&dl));
-}
-```
-
-Local Development
------------------
-
- cargo build
- cargo test
-
-When submitting a PR please use [`cargo fmt`][] (nightly).
-
-[`cargo fmt`]: https://github.com/rust-lang/rustfmt
diff --git a/vendor/annotate-snippets-0.8.0/benches/simple.rs b/vendor/annotate-snippets-0.8.0/benches/simple.rs
deleted file mode 100644
index 4c13a8f00..000000000
--- a/vendor/annotate-snippets-0.8.0/benches/simple.rs
+++ /dev/null
@@ -1,74 +0,0 @@
-#![allow(clippy::unit_arg)]
-#[macro_use]
-extern crate criterion;
-
-use criterion::{black_box, Criterion};
-
-use annotate_snippets::{
- display_list::{DisplayList, FormatOptions},
- snippet::{Annotation, AnnotationType, Slice, Snippet, SourceAnnotation},
-};
-
-fn create_snippet() {
- let snippet = Snippet {
- slices: vec![Slice {
- source: r#") -> Option<String> {
- for ann in annotations {
- match (ann.range.0, ann.range.1) {
- (None, None) => continue,
- (Some(start), Some(end)) if start > end_index => continue,
- (Some(start), Some(end)) if start >= start_index => {
- let label = if let Some(ref label) = ann.label {
- format!(" {}", label)
- } else {
- String::from("")
- };
-
- return Some(format!(
- "{}{}{}",
- " ".repeat(start - start_index),
- "^".repeat(end - start),
- label
- ));
- }
- _ => continue,
- }
- }"#,
- line_start: 51,
- origin: Some("src/format.rs"),
- fold: false,
- annotations: vec![
- SourceAnnotation {
- label: "expected `Option<String>` because of return type",
- annotation_type: AnnotationType::Warning,
- range: (5, 19),
- },
- SourceAnnotation {
- label: "expected enum `std::option::Option`",
- annotation_type: AnnotationType::Error,
- range: (26, 724),
- },
- ],
- }],
- title: Some(Annotation {
- label: Some("mismatched types"),
- id: Some("E0308"),
- annotation_type: AnnotationType::Error,
- }),
- footer: vec![],
- opt: FormatOptions {
- color: true,
- ..Default::default()
- },
- };
-
- let dl = DisplayList::from(snippet);
- let _result = dl.to_string();
-}
-
-pub fn criterion_benchmark(c: &mut Criterion) {
- c.bench_function("format", |b| b.iter(|| black_box(create_snippet())));
-}
-
-criterion_group!(benches, criterion_benchmark);
-criterion_main!(benches);
diff --git a/vendor/annotate-snippets-0.8.0/examples/expected_type.rs b/vendor/annotate-snippets-0.8.0/examples/expected_type.rs
deleted file mode 100644
index 89f0ddc11..000000000
--- a/vendor/annotate-snippets-0.8.0/examples/expected_type.rs
+++ /dev/null
@@ -1,43 +0,0 @@
-use annotate_snippets::{
- display_list::{DisplayList, FormatOptions},
- snippet::{Annotation, AnnotationType, Slice, Snippet, SourceAnnotation},
-};
-
-fn main() {
- let snippet = Snippet {
- title: Some(Annotation {
- label: Some("expected type, found `22`"),
- id: None,
- annotation_type: AnnotationType::Error,
- }),
- footer: vec![],
- slices: vec![Slice {
- source: r#" annotations: vec![SourceAnnotation {
- label: "expected struct `annotate_snippets::snippet::Slice`, found reference"
- ,
- range: <22, 25>,"#,
- line_start: 26,
- origin: Some("examples/footer.rs"),
- fold: true,
- annotations: vec![
- SourceAnnotation {
- label: "",
- annotation_type: AnnotationType::Error,
- range: (205, 207),
- },
- SourceAnnotation {
- label: "while parsing this struct",
- annotation_type: AnnotationType::Info,
- range: (34, 50),
- },
- ],
- }],
- opt: FormatOptions {
- color: true,
- ..Default::default()
- },
- };
-
- let dl = DisplayList::from(snippet);
- println!("{}", dl);
-}
diff --git a/vendor/annotate-snippets-0.8.0/examples/footer.rs b/vendor/annotate-snippets-0.8.0/examples/footer.rs
deleted file mode 100644
index f3c15c410..000000000
--- a/vendor/annotate-snippets-0.8.0/examples/footer.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-use annotate_snippets::{
- display_list::{DisplayList, FormatOptions},
- snippet::{Annotation, AnnotationType, Slice, Snippet, SourceAnnotation},
-};
-
-fn main() {
- let snippet = Snippet {
- title: Some(Annotation {
- label: Some("mismatched types"),
- id: Some("E0308"),
- annotation_type: AnnotationType::Error,
- }),
- footer: vec![Annotation {
- label: Some(
- "expected type: `snippet::Annotation`\n found type: `__&__snippet::Annotation`",
- ),
- id: None,
- annotation_type: AnnotationType::Note,
- }],
- slices: vec![Slice {
- source: " slices: vec![\"A\",",
- line_start: 13,
- origin: Some("src/multislice.rs"),
- fold: false,
- annotations: vec![SourceAnnotation {
- label: "expected struct `annotate_snippets::snippet::Slice`, found reference",
- range: (21, 24),
- annotation_type: AnnotationType::Error,
- }],
- }],
- opt: FormatOptions {
- color: true,
- ..Default::default()
- },
- };
-
- let dl = DisplayList::from(snippet);
- println!("{}", dl);
-}
diff --git a/vendor/annotate-snippets-0.8.0/examples/format.rs b/vendor/annotate-snippets-0.8.0/examples/format.rs
deleted file mode 100644
index 98b77a140..000000000
--- a/vendor/annotate-snippets-0.8.0/examples/format.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-use annotate_snippets::{
- display_list::{DisplayList, FormatOptions},
- snippet::{Annotation, AnnotationType, Slice, Snippet, SourceAnnotation},
-};
-
-fn main() {
- let snippet = Snippet {
- slices: vec![Slice {
- source: r#") -> Option<String> {
- for ann in annotations {
- match (ann.range.0, ann.range.1) {
- (None, None) => continue,
- (Some(start), Some(end)) if start > end_index => continue,
- (Some(start), Some(end)) if start >= start_index => {
- let label = if let Some(ref label) = ann.label {
- format!(" {}", label)
- } else {
- String::from("")
- };
-
- return Some(format!(
- "{}{}{}",
- " ".repeat(start - start_index),
- "^".repeat(end - start),
- label
- ));
- }
- _ => continue,
- }
- }"#,
- line_start: 51,
- origin: Some("src/format.rs"),
- fold: false,
- annotations: vec![
- SourceAnnotation {
- label: "expected `Option<String>` because of return type",
- annotation_type: AnnotationType::Warning,
- range: (5, 19),
- },
- SourceAnnotation {
- label: "expected enum `std::option::Option`",
- annotation_type: AnnotationType::Error,
- range: (26, 724),
- },
- ],
- }],
- title: Some(Annotation {
- label: Some("mismatched types"),
- id: Some("E0308"),
- annotation_type: AnnotationType::Error,
- }),
- footer: vec![],
- opt: FormatOptions {
- color: true,
- ..Default::default()
- },
- };
-
- let dl = DisplayList::from(snippet);
- println!("{}", dl);
-}
diff --git a/vendor/annotate-snippets-0.8.0/examples/multislice.rs b/vendor/annotate-snippets-0.8.0/examples/multislice.rs
deleted file mode 100644
index 5675a07da..000000000
--- a/vendor/annotate-snippets-0.8.0/examples/multislice.rs
+++ /dev/null
@@ -1,38 +0,0 @@
-use annotate_snippets::{
- display_list::{DisplayList, FormatOptions},
- snippet::{Annotation, AnnotationType, Slice, Snippet},
-};
-
-fn main() {
- let snippet = Snippet {
- title: Some(Annotation {
- label: Some("mismatched types"),
- id: None,
- annotation_type: AnnotationType::Error,
- }),
- footer: vec![],
- slices: vec![
- Slice {
- source: "Foo",
- line_start: 51,
- origin: Some("src/format.rs"),
- fold: false,
- annotations: vec![],
- },
- Slice {
- source: "Faa",
- line_start: 129,
- origin: Some("src/display.rs"),
- fold: false,
- annotations: vec![],
- },
- ],
- opt: FormatOptions {
- color: true,
- ..Default::default()
- },
- };
-
- let dl = DisplayList::from(snippet);
- println!("{}", dl);
-}
diff --git a/vendor/annotate-snippets-0.8.0/src/display_list/from_snippet.rs b/vendor/annotate-snippets-0.8.0/src/display_list/from_snippet.rs
deleted file mode 100644
index b3ba5a3dd..000000000
--- a/vendor/annotate-snippets-0.8.0/src/display_list/from_snippet.rs
+++ /dev/null
@@ -1,517 +0,0 @@
-//! Trait for converting `Snippet` to `DisplayList`.
-use super::*;
-use crate::{formatter::get_term_style, snippet};
-
-struct CursorLines<'a>(&'a str);
-
-impl<'a> CursorLines<'a> {
- fn new(src: &str) -> CursorLines<'_> {
- CursorLines(src)
- }
-}
-
-enum EndLine {
- EOF = 0,
- CRLF = 1,
- LF = 2,
-}
-
-impl<'a> Iterator for CursorLines<'a> {
- type Item = (&'a str, EndLine);
-
- fn next(&mut self) -> Option<Self::Item> {
- if self.0.is_empty() {
- None
- } else {
- self.0
- .find('\n')
- .map(|x| {
- let ret = if 0 < x {
- if self.0.as_bytes()[x - 1] == b'\r' {
- (&self.0[..x - 1], EndLine::LF)
- } else {
- (&self.0[..x], EndLine::CRLF)
- }
- } else {
- ("", EndLine::CRLF)
- };
- self.0 = &self.0[x + 1..];
- ret
- })
- .or_else(|| {
- let ret = Some((&self.0[..], EndLine::EOF));
- self.0 = "";
- ret
- })
- }
- }
-}
-
-fn format_label(
- label: Option<&str>,
- style: Option<DisplayTextStyle>,
-) -> Vec<DisplayTextFragment<'_>> {
- let mut result = vec![];
- if let Some(label) = label {
- for (idx, element) in label.split("__").enumerate() {
- let element_style = match style {
- Some(s) => s,
- None => {
- if idx % 2 == 0 {
- DisplayTextStyle::Regular
- } else {
- DisplayTextStyle::Emphasis
- }
- }
- };
- result.push(DisplayTextFragment {
- content: element,
- style: element_style,
- });
- }
- }
- result
-}
-
-fn format_title(annotation: snippet::Annotation<'_>) -> DisplayLine<'_> {
- let label = annotation.label.unwrap_or_default();
- DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::from(annotation.annotation_type),
- id: annotation.id,
- label: format_label(Some(&label), Some(DisplayTextStyle::Emphasis)),
- },
- source_aligned: false,
- continuation: false,
- })
-}
-
-fn format_annotation(annotation: snippet::Annotation<'_>) -> Vec<DisplayLine<'_>> {
- let mut result = vec![];
- let label = annotation.label.unwrap_or_default();
- for (i, line) in label.lines().enumerate() {
- result.push(DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::from(annotation.annotation_type),
- id: None,
- label: format_label(Some(line), None),
- },
- source_aligned: true,
- continuation: i != 0,
- }));
- }
- result
-}
-
-fn format_slice(
- mut slice: snippet::Slice<'_>,
- is_first: bool,
- has_footer: bool,
-) -> Vec<DisplayLine<'_>> {
- let main_range = slice.annotations.get(0).map(|x| x.range.0);
- let row = slice.line_start;
- let origin = slice.origin.take();
- let mut body = format_body(slice, has_footer);
- let header = format_header(origin, main_range, row, &body, is_first);
- let mut result = vec![];
-
- if let Some(header) = header {
- result.push(header);
- }
- result.append(&mut body);
- result
-}
-
-fn format_header<'a>(
- origin: Option<&'a str>,
- main_range: Option<usize>,
- mut row: usize,
- body: &[DisplayLine<'_>],
- is_first: bool,
-) -> Option<DisplayLine<'a>> {
- let display_header = if is_first {
- DisplayHeaderType::Initial
- } else {
- DisplayHeaderType::Continuation
- };
-
- if let Some(main_range) = main_range {
- let mut col = 1;
-
- for item in body {
- if let DisplayLine::Source {
- line: DisplaySourceLine::Content { range, .. },
- ..
- } = item
- {
- if main_range >= range.0 && main_range <= range.1 {
- col = main_range - range.0 + 1;
- break;
- }
- row += 1;
- }
- }
- if let Some(path) = origin {
- return Some(DisplayLine::Raw(DisplayRawLine::Origin {
- path,
- pos: Some((row, col)),
- header_type: display_header,
- }));
- }
- }
- if let Some(path) = origin {
- return Some(DisplayLine::Raw(DisplayRawLine::Origin {
- path,
- pos: None,
- header_type: display_header,
- }));
- }
- None
-}
-
-fn fold_body(mut body: Vec<DisplayLine<'_>>) -> Vec<DisplayLine<'_>> {
- enum Line {
- Fold(usize),
- Source(usize),
- };
-
- let mut lines = vec![];
- let mut no_annotation_lines_counter = 0;
-
- for (idx, line) in body.iter().enumerate() {
- match line {
- DisplayLine::Source {
- line: DisplaySourceLine::Annotation { .. },
- ..
- } => {
- if no_annotation_lines_counter > 2 {
- let fold_start = idx - no_annotation_lines_counter;
- let fold_end = idx;
- let pre_len = if no_annotation_lines_counter > 8 {
- 4
- } else {
- 0
- };
- let post_len = if no_annotation_lines_counter > 8 {
- 2
- } else {
- 1
- };
- for (i, _) in body
- .iter()
- .enumerate()
- .take(fold_start + pre_len)
- .skip(fold_start)
- {
- lines.push(Line::Source(i));
- }
- lines.push(Line::Fold(idx));
- for (i, _) in body
- .iter()
- .enumerate()
- .take(fold_end)
- .skip(fold_end - post_len)
- {
- lines.push(Line::Source(i));
- }
- } else {
- let start = idx - no_annotation_lines_counter;
- for (i, _) in body.iter().enumerate().take(idx).skip(start) {
- lines.push(Line::Source(i));
- }
- }
- no_annotation_lines_counter = 0;
- }
- DisplayLine::Source { .. } => {
- no_annotation_lines_counter += 1;
- continue;
- }
- _ => {
- no_annotation_lines_counter += 1;
- }
- }
- lines.push(Line::Source(idx));
- }
-
- let mut new_body = vec![];
- let mut removed = 0;
- for line in lines {
- match line {
- Line::Source(i) => {
- new_body.push(body.remove(i - removed));
- removed += 1;
- }
- Line::Fold(i) => {
- if let DisplayLine::Source {
- line: DisplaySourceLine::Annotation { .. },
- ref inline_marks,
- ..
- } = body.get(i - removed).unwrap()
- {
- new_body.push(DisplayLine::Fold {
- inline_marks: inline_marks.clone(),
- })
- } else {
- unreachable!()
- }
- }
- }
- }
-
- new_body
-}
-
-fn format_body(slice: snippet::Slice<'_>, has_footer: bool) -> Vec<DisplayLine<'_>> {
- let source_len = slice.source.chars().count();
- if let Some(bigger) = slice.annotations.iter().find_map(|x| {
- if source_len < x.range.1 {
- Some(x.range)
- } else {
- None
- }
- }) {
- panic!(
- "SourceAnnotation range `{:?}` is bigger than source length `{}`",
- bigger, source_len
- )
- }
-
- let mut body = vec![];
- let mut current_line = slice.line_start;
- let mut current_index = 0;
- let mut line_index_ranges = vec![];
-
- for (line, end_line) in CursorLines::new(slice.source) {
- let line_length = line.chars().count();
- let line_range = (current_index, current_index + line_length);
- body.push(DisplayLine::Source {
- lineno: Some(current_line),
- inline_marks: vec![],
- line: DisplaySourceLine::Content {
- text: line,
- range: line_range,
- },
- });
- line_index_ranges.push(line_range);
- current_line += 1;
- current_index += line_length + end_line as usize;
- }
-
- let mut annotation_line_count = 0;
- let mut annotations = slice.annotations;
- for (idx, (line_start, line_end)) in line_index_ranges.into_iter().enumerate() {
- // It would be nice to use filter_drain here once it's stable.
- annotations = annotations
- .into_iter()
- .filter(|annotation| {
- let body_idx = idx + annotation_line_count;
- let annotation_type = match annotation.annotation_type {
- snippet::AnnotationType::Error => DisplayAnnotationType::None,
- snippet::AnnotationType::Warning => DisplayAnnotationType::None,
- _ => DisplayAnnotationType::from(annotation.annotation_type),
- };
- match annotation.range {
- (start, _) if start > line_end => true,
- (start, end)
- if start >= line_start && end <= line_end
- || start == line_end && end - start <= 1 =>
- {
- let range = (start - line_start, end - line_start);
- body.insert(
- body_idx + 1,
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- annotation: Annotation {
- annotation_type,
- id: None,
- label: format_label(Some(&annotation.label), None),
- },
- range,
- annotation_type: DisplayAnnotationType::from(
- annotation.annotation_type,
- ),
- annotation_part: DisplayAnnotationPart::Standalone,
- },
- },
- );
- annotation_line_count += 1;
- false
- }
- (start, end) if start >= line_start && start <= line_end && end > line_end => {
- if start - line_start == 0 {
- if let DisplayLine::Source {
- ref mut inline_marks,
- ..
- } = body[body_idx]
- {
- inline_marks.push(DisplayMark {
- mark_type: DisplayMarkType::AnnotationStart,
- annotation_type: DisplayAnnotationType::from(
- annotation.annotation_type,
- ),
- });
- }
- } else {
- let range = (start - line_start, start - line_start + 1);
- body.insert(
- body_idx + 1,
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::None,
- id: None,
- label: vec![],
- },
- range,
- annotation_type: DisplayAnnotationType::from(
- annotation.annotation_type,
- ),
- annotation_part: DisplayAnnotationPart::MultilineStart,
- },
- },
- );
- annotation_line_count += 1;
- }
- true
- }
- (start, end) if start < line_start && end > line_end => {
- if let DisplayLine::Source {
- ref mut inline_marks,
- ..
- } = body[body_idx]
- {
- inline_marks.push(DisplayMark {
- mark_type: DisplayMarkType::AnnotationThrough,
- annotation_type: DisplayAnnotationType::from(
- annotation.annotation_type,
- ),
- });
- }
- true
- }
- (start, end) if start < line_start && end >= line_start && end <= line_end => {
- if let DisplayLine::Source {
- ref mut inline_marks,
- ..
- } = body[body_idx]
- {
- inline_marks.push(DisplayMark {
- mark_type: DisplayMarkType::AnnotationThrough,
- annotation_type: DisplayAnnotationType::from(
- annotation.annotation_type,
- ),
- });
- }
-
- let range = (end - line_start, end - line_start + 1);
- body.insert(
- body_idx + 1,
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![DisplayMark {
- mark_type: DisplayMarkType::AnnotationThrough,
- annotation_type: DisplayAnnotationType::from(
- annotation.annotation_type,
- ),
- }],
- line: DisplaySourceLine::Annotation {
- annotation: Annotation {
- annotation_type,
- id: None,
- label: format_label(Some(&annotation.label), None),
- },
- range,
- annotation_type: DisplayAnnotationType::from(
- annotation.annotation_type,
- ),
- annotation_part: DisplayAnnotationPart::MultilineEnd,
- },
- },
- );
- annotation_line_count += 1;
- false
- }
- _ => true,
- }
- })
- .collect();
- }
-
- if slice.fold {
- body = fold_body(body);
- }
-
- body.insert(
- 0,
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Empty,
- },
- );
- if has_footer {
- body.push(DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Empty,
- });
- } else if let Some(DisplayLine::Source { .. }) = body.last() {
- body.push(DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Empty,
- });
- }
- body
-}
-
-impl<'a> From<snippet::Snippet<'a>> for DisplayList<'a> {
- fn from(
- snippet::Snippet {
- title,
- footer,
- slices,
- opt,
- }: snippet::Snippet<'a>,
- ) -> DisplayList<'a> {
- let mut body = vec![];
- if let Some(annotation) = title {
- body.push(format_title(annotation));
- }
-
- for (idx, slice) in slices.into_iter().enumerate() {
- body.append(&mut format_slice(slice, idx == 0, !footer.is_empty()));
- }
-
- for annotation in footer {
- body.append(&mut format_annotation(annotation));
- }
-
- let FormatOptions {
- color,
- anonymized_line_numbers,
- } = opt;
-
- Self {
- body,
- stylesheet: get_term_style(color),
- anonymized_line_numbers,
- }
- }
-}
-
-impl From<snippet::AnnotationType> for DisplayAnnotationType {
- fn from(at: snippet::AnnotationType) -> Self {
- match at {
- snippet::AnnotationType::Error => DisplayAnnotationType::Error,
- snippet::AnnotationType::Warning => DisplayAnnotationType::Warning,
- snippet::AnnotationType::Info => DisplayAnnotationType::Info,
- snippet::AnnotationType::Note => DisplayAnnotationType::Note,
- snippet::AnnotationType::Help => DisplayAnnotationType::Help,
- }
- }
-}
diff --git a/vendor/annotate-snippets-0.8.0/src/display_list/mod.rs b/vendor/annotate-snippets-0.8.0/src/display_list/mod.rs
deleted file mode 100644
index 224a9f580..000000000
--- a/vendor/annotate-snippets-0.8.0/src/display_list/mod.rs
+++ /dev/null
@@ -1,37 +0,0 @@
-//! display_list module stores the output model for the snippet.
-//!
-//! `DisplayList` is a central structure in the crate, which contains
-//! the structured list of lines to be displayed.
-//!
-//! It is made of two types of lines: `Source` and `Raw`. All `Source` lines
-//! are structured using four columns:
-//!
-//! ```text
-//! /------------ (1) Line number column.
-//! | /--------- (2) Line number column delimiter.
-//! | | /------- (3) Inline marks column.
-//! | | | /--- (4) Content column with the source and annotations for slices.
-//! | | | |
-//! =============================================================================
-//! error[E0308]: mismatched types
-//! --> src/format.rs:51:5
-//! |
-//! 151 | / fn test() -> String {
-//! 152 | | return "test";
-//! 153 | | }
-//! | |___^ error: expected `String`, for `&str`.
-//! |
-//! ```
-//!
-//! The first two lines of the example above are `Raw` lines, while the rest
-//! are `Source` lines.
-//!
-//! `DisplayList` does not store column alignment information, and those are
-//! only calculated by the implementation of `std::fmt::Display` using information such as
-//! styling.
-//!
-//! The above snippet has been built out of the following structure:
-mod from_snippet;
-mod structs;
-
-pub use self::structs::*;
diff --git a/vendor/annotate-snippets-0.8.0/src/display_list/structs.rs b/vendor/annotate-snippets-0.8.0/src/display_list/structs.rs
deleted file mode 100644
index 8f6d8fcf1..000000000
--- a/vendor/annotate-snippets-0.8.0/src/display_list/structs.rs
+++ /dev/null
@@ -1,191 +0,0 @@
-use std::fmt;
-
-use crate::formatter::{get_term_style, style::Stylesheet};
-
-/// List of lines to be displayed.
-pub struct DisplayList<'a> {
- pub body: Vec<DisplayLine<'a>>,
- pub stylesheet: Box<dyn Stylesheet>,
- pub anonymized_line_numbers: bool,
-}
-
-impl<'a> From<Vec<DisplayLine<'a>>> for DisplayList<'a> {
- fn from(body: Vec<DisplayLine<'a>>) -> DisplayList<'a> {
- Self {
- body,
- anonymized_line_numbers: false,
- stylesheet: get_term_style(false),
- }
- }
-}
-
-impl<'a> PartialEq for DisplayList<'a> {
- fn eq(&self, other: &Self) -> bool {
- self.body == other.body && self.anonymized_line_numbers == other.anonymized_line_numbers
- }
-}
-
-impl<'a> fmt::Debug for DisplayList<'a> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("DisplayList")
- .field("body", &self.body)
- .field("anonymized_line_numbers", &self.anonymized_line_numbers)
- .finish()
- }
-}
-
-#[derive(Debug, Default, Copy, Clone)]
-pub struct FormatOptions {
- pub color: bool,
- pub anonymized_line_numbers: bool,
-}
-
-/// Inline annotation which can be used in either Raw or Source line.
-#[derive(Debug, PartialEq)]
-pub struct Annotation<'a> {
- pub annotation_type: DisplayAnnotationType,
- pub id: Option<&'a str>,
- pub label: Vec<DisplayTextFragment<'a>>,
-}
-
-/// A single line used in `DisplayList`.
-#[derive(Debug, PartialEq)]
-pub enum DisplayLine<'a> {
- /// A line with `lineno` portion of the slice.
- Source {
- lineno: Option<usize>,
- inline_marks: Vec<DisplayMark>,
- line: DisplaySourceLine<'a>,
- },
-
- /// A line indicating a folded part of the slice.
- Fold { inline_marks: Vec<DisplayMark> },
-
- /// A line which is displayed outside of slices.
- Raw(DisplayRawLine<'a>),
-}
-
-/// A source line.
-#[derive(Debug, PartialEq)]
-pub enum DisplaySourceLine<'a> {
- /// A line with the content of the Slice.
- Content {
- text: &'a str,
- range: (usize, usize), // meta information for annotation placement.
- },
-
- /// An annotation line which is displayed in context of the slice.
- Annotation {
- annotation: Annotation<'a>,
- range: (usize, usize),
- annotation_type: DisplayAnnotationType,
- annotation_part: DisplayAnnotationPart,
- },
-
- /// An empty source line.
- Empty,
-}
-
-/// Raw line - a line which does not have the `lineno` part and is not considered
-/// a part of the snippet.
-#[derive(Debug, PartialEq)]
-pub enum DisplayRawLine<'a> {
- /// A line which provides information about the location of the given
- /// slice in the project structure.
- Origin {
- path: &'a str,
- pos: Option<(usize, usize)>,
- header_type: DisplayHeaderType,
- },
-
- /// An annotation line which is not part of any snippet.
- Annotation {
- annotation: Annotation<'a>,
-
- /// If set to `true`, the annotation will be aligned to the
- /// lineno delimiter of the snippet.
- source_aligned: bool,
- /// If set to `true`, only the label of the `Annotation` will be
- /// displayed. It allows for a multiline annotation to be aligned
- /// without displaing the meta information (`type` and `id`) to be
- /// displayed on each line.
- continuation: bool,
- },
-}
-
-/// An inline text fragment which any label is composed of.
-#[derive(Debug, PartialEq)]
-pub struct DisplayTextFragment<'a> {
- pub content: &'a str,
- pub style: DisplayTextStyle,
-}
-
-/// A style for the `DisplayTextFragment` which can be visually formatted.
-///
-/// This information may be used to emphasis parts of the label.
-#[derive(Debug, Clone, Copy, PartialEq)]
-pub enum DisplayTextStyle {
- Regular,
- Emphasis,
-}
-
-/// An indicator of what part of the annotation a given `Annotation` is.
-#[derive(Debug, Clone, PartialEq)]
-pub enum DisplayAnnotationPart {
- /// A standalone, single-line annotation.
- Standalone,
- /// A continuation of a multi-line label of an annotation.
- LabelContinuation,
- /// A consequitive annotation in case multiple annotations annotate a single line.
- Consequitive,
- /// A line starting a multiline annotation.
- MultilineStart,
- /// A line ending a multiline annotation.
- MultilineEnd,
-}
-
-/// A visual mark used in `inline_marks` field of the `DisplaySourceLine`.
-#[derive(Debug, Clone, PartialEq)]
-pub struct DisplayMark {
- pub mark_type: DisplayMarkType,
- pub annotation_type: DisplayAnnotationType,
-}
-
-/// A type of the `DisplayMark`.
-#[derive(Debug, Clone, PartialEq)]
-pub enum DisplayMarkType {
- /// A mark indicating a multiline annotation going through the current line.
- AnnotationThrough,
- /// A mark indicating a multiline annotation starting on the given line.
- AnnotationStart,
-}
-
-/// A type of the `Annotation` which may impact the sigils, style or text displayed.
-///
-/// There are several ways in which the `DisplayListFormatter` uses this information
-/// when formatting the `DisplayList`:
-///
-/// * An annotation may display the name of the type like `error` or `info`.
-/// * An underline for `Error` may be `^^^` while for `Warning` it coule be `---`.
-/// * `ColorStylesheet` may use different colors for different annotations.
-#[derive(Debug, Clone, PartialEq)]
-pub enum DisplayAnnotationType {
- None,
- Error,
- Warning,
- Info,
- Note,
- Help,
-}
-
-/// Information whether the header is the initial one or a consequitive one
-/// for multi-slice cases.
-// TODO: private
-#[derive(Debug, Clone, PartialEq)]
-pub enum DisplayHeaderType {
- /// Initial header is the first header in the snippet.
- Initial,
-
- /// Continuation marks all headers of following slices in the snippet.
- Continuation,
-}
diff --git a/vendor/annotate-snippets-0.8.0/src/formatter/mod.rs b/vendor/annotate-snippets-0.8.0/src/formatter/mod.rs
deleted file mode 100644
index e93aeb329..000000000
--- a/vendor/annotate-snippets-0.8.0/src/formatter/mod.rs
+++ /dev/null
@@ -1,397 +0,0 @@
-use std::{
- cmp,
- fmt::{self, Display, Write},
-};
-
-pub mod style;
-
-use self::style::{Style, StyleClass, Stylesheet};
-
-#[cfg(feature = "color")]
-use crate::stylesheets::color::AnsiTermStylesheet;
-use crate::{display_list::*, stylesheets::no_color::NoColorStylesheet};
-
-fn format_repeat_char(c: char, n: usize, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- for _ in 0..n {
- f.write_char(c)?;
- }
- Ok(())
-}
-
-#[inline]
-fn is_annotation_empty(annotation: &Annotation<'_>) -> bool {
- annotation
- .label
- .iter()
- .all(|fragment| fragment.content.is_empty())
-}
-
-#[cfg(feature = "color")]
-#[inline]
-pub fn get_term_style(color: bool) -> Box<dyn Stylesheet> {
- if color {
- Box::new(AnsiTermStylesheet)
- } else {
- Box::new(NoColorStylesheet)
- }
-}
-
-#[cfg(not(feature = "color"))]
-#[inline]
-pub fn get_term_style(_color: bool) -> Box<dyn Stylesheet> {
- Box::new(NoColorStylesheet)
-}
-
-impl<'a> fmt::Display for DisplayList<'a> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let lineno_width = self.body.iter().fold(0, |max, line| match line {
- DisplayLine::Source {
- lineno: Some(lineno),
- ..
- } => {
- // The largest line is the largest width.
- cmp::max(*lineno, max)
- }
- _ => max,
- });
- let lineno_width = if lineno_width == 0 {
- lineno_width
- } else if self.anonymized_line_numbers {
- Self::ANONYMIZED_LINE_NUM.len()
- } else {
- ((lineno_width as f64).log10().floor() as usize) + 1
- };
- let inline_marks_width = self.body.iter().fold(0, |max, line| match line {
- DisplayLine::Source { inline_marks, .. } => cmp::max(inline_marks.len(), max),
- _ => max,
- });
-
- for (i, line) in self.body.iter().enumerate() {
- self.format_line(line, lineno_width, inline_marks_width, f)?;
- if i + 1 < self.body.len() {
- f.write_char('\n')?;
- }
- }
- Ok(())
- }
-}
-
-impl<'a> DisplayList<'a> {
- const ANONYMIZED_LINE_NUM: &'static str = "LL";
- const ERROR_TXT: &'static str = "error";
- const HELP_TXT: &'static str = "help";
- const INFO_TXT: &'static str = "info";
- const NOTE_TXT: &'static str = "note";
- const WARNING_TXT: &'static str = "warning";
-
- #[inline]
- fn format_annotation_type(
- annotation_type: &DisplayAnnotationType,
- f: &mut fmt::Formatter<'_>,
- ) -> fmt::Result {
- match annotation_type {
- DisplayAnnotationType::Error => f.write_str(Self::ERROR_TXT),
- DisplayAnnotationType::Help => f.write_str(Self::HELP_TXT),
- DisplayAnnotationType::Info => f.write_str(Self::INFO_TXT),
- DisplayAnnotationType::Note => f.write_str(Self::NOTE_TXT),
- DisplayAnnotationType::Warning => f.write_str(Self::WARNING_TXT),
- DisplayAnnotationType::None => Ok(()),
- }
- }
-
- fn annotation_type_len(annotation_type: &DisplayAnnotationType) -> usize {
- match annotation_type {
- DisplayAnnotationType::Error => Self::ERROR_TXT.len(),
- DisplayAnnotationType::Help => Self::HELP_TXT.len(),
- DisplayAnnotationType::Info => Self::INFO_TXT.len(),
- DisplayAnnotationType::Note => Self::NOTE_TXT.len(),
- DisplayAnnotationType::Warning => Self::WARNING_TXT.len(),
- DisplayAnnotationType::None => 0,
- }
- }
-
- fn get_annotation_style(&self, annotation_type: &DisplayAnnotationType) -> Box<dyn Style> {
- self.stylesheet.get_style(match annotation_type {
- DisplayAnnotationType::Error => StyleClass::Error,
- DisplayAnnotationType::Warning => StyleClass::Warning,
- DisplayAnnotationType::Info => StyleClass::Info,
- DisplayAnnotationType::Note => StyleClass::Note,
- DisplayAnnotationType::Help => StyleClass::Help,
- DisplayAnnotationType::None => StyleClass::None,
- })
- }
-
- fn format_label(
- &self,
- label: &[DisplayTextFragment<'_>],
- f: &mut fmt::Formatter<'_>,
- ) -> fmt::Result {
- let emphasis_style = self.stylesheet.get_style(StyleClass::Emphasis);
-
- for fragment in label {
- match fragment.style {
- DisplayTextStyle::Regular => fragment.content.fmt(f)?,
- DisplayTextStyle::Emphasis => emphasis_style.paint(&fragment.content, f)?,
- }
- }
- Ok(())
- }
-
- fn format_annotation(
- &self,
- annotation: &Annotation<'_>,
- continuation: bool,
- in_source: bool,
- f: &mut fmt::Formatter<'_>,
- ) -> fmt::Result {
- let color = self.get_annotation_style(&annotation.annotation_type);
- let formatted_len = if let Some(id) = &annotation.id {
- 2 + id.len() + Self::annotation_type_len(&annotation.annotation_type)
- } else {
- Self::annotation_type_len(&annotation.annotation_type)
- };
-
- if continuation {
- format_repeat_char(' ', formatted_len + 2, f)?;
- return self.format_label(&annotation.label, f);
- }
- if formatted_len == 0 {
- self.format_label(&annotation.label, f)
- } else {
- color.paint_fn(
- Box::new(|f| {
- Self::format_annotation_type(&annotation.annotation_type, f)?;
- if let Some(id) = &annotation.id {
- f.write_char('[')?;
- f.write_str(id)?;
- f.write_char(']')?;
- }
- Ok(())
- }),
- f,
- )?;
- if !is_annotation_empty(annotation) {
- if in_source {
- color.paint_fn(
- Box::new(|f| {
- f.write_str(": ")?;
- self.format_label(&annotation.label, f)
- }),
- f,
- )?;
- } else {
- f.write_str(": ")?;
- self.format_label(&annotation.label, f)?;
- }
- }
- Ok(())
- }
- }
-
- #[inline]
- fn format_source_line(
- &self,
- line: &DisplaySourceLine<'_>,
- f: &mut fmt::Formatter<'_>,
- ) -> fmt::Result {
- match line {
- DisplaySourceLine::Empty => Ok(()),
- DisplaySourceLine::Content { text, .. } => {
- f.write_char(' ')?;
- text.fmt(f)
- }
- DisplaySourceLine::Annotation {
- range,
- annotation,
- annotation_type,
- annotation_part,
- } => {
- let indent_char = match annotation_part {
- DisplayAnnotationPart::Standalone => ' ',
- DisplayAnnotationPart::LabelContinuation => ' ',
- DisplayAnnotationPart::Consequitive => ' ',
- DisplayAnnotationPart::MultilineStart => '_',
- DisplayAnnotationPart::MultilineEnd => '_',
- };
- let mark = match annotation_type {
- DisplayAnnotationType::Error => '^',
- DisplayAnnotationType::Warning => '-',
- DisplayAnnotationType::Info => '-',
- DisplayAnnotationType::Note => '-',
- DisplayAnnotationType::Help => '-',
- DisplayAnnotationType::None => ' ',
- };
- let color = self.get_annotation_style(annotation_type);
- let indent_length = match annotation_part {
- DisplayAnnotationPart::LabelContinuation => range.1,
- DisplayAnnotationPart::Consequitive => range.1,
- _ => range.0,
- };
-
- color.paint_fn(
- Box::new(|f| {
- format_repeat_char(indent_char, indent_length + 1, f)?;
- format_repeat_char(mark, range.1 - indent_length, f)
- }),
- f,
- )?;
-
- if !is_annotation_empty(&annotation) {
- f.write_char(' ')?;
- color.paint_fn(
- Box::new(|f| {
- self.format_annotation(
- annotation,
- annotation_part == &DisplayAnnotationPart::LabelContinuation,
- true,
- f,
- )
- }),
- f,
- )?;
- }
-
- Ok(())
- }
- }
- }
-
- #[inline]
- fn format_raw_line(
- &self,
- line: &DisplayRawLine<'_>,
- lineno_width: usize,
- f: &mut fmt::Formatter<'_>,
- ) -> fmt::Result {
- match line {
- DisplayRawLine::Origin {
- path,
- pos,
- header_type,
- } => {
- let header_sigil = match header_type {
- DisplayHeaderType::Initial => "-->",
- DisplayHeaderType::Continuation => ":::",
- };
- let lineno_color = self.stylesheet.get_style(StyleClass::LineNo);
-
- if let Some((col, row)) = pos {
- format_repeat_char(' ', lineno_width, f)?;
- lineno_color.paint(header_sigil, f)?;
- f.write_char(' ')?;
- path.fmt(f)?;
- f.write_char(':')?;
- col.fmt(f)?;
- f.write_char(':')?;
- row.fmt(f)
- } else {
- format_repeat_char(' ', lineno_width, f)?;
- lineno_color.paint(header_sigil, f)?;
- f.write_char(' ')?;
- path.fmt(f)
- }
- }
- DisplayRawLine::Annotation {
- annotation,
- source_aligned,
- continuation,
- } => {
- if *source_aligned {
- if *continuation {
- format_repeat_char(' ', lineno_width + 3, f)?;
- self.format_annotation(annotation, *continuation, false, f)
- } else {
- let lineno_color = self.stylesheet.get_style(StyleClass::LineNo);
- format_repeat_char(' ', lineno_width, f)?;
- f.write_char(' ')?;
- lineno_color.paint("=", f)?;
- f.write_char(' ')?;
- self.format_annotation(annotation, *continuation, false, f)
- }
- } else {
- self.format_annotation(annotation, *continuation, false, f)
- }
- }
- }
- }
-
- #[inline]
- fn format_line(
- &self,
- dl: &DisplayLine<'_>,
- lineno_width: usize,
- inline_marks_width: usize,
- f: &mut fmt::Formatter<'_>,
- ) -> fmt::Result {
- match dl {
- DisplayLine::Source {
- lineno,
- inline_marks,
- line,
- } => {
- let lineno_color = self.stylesheet.get_style(StyleClass::LineNo);
- if self.anonymized_line_numbers && lineno.is_some() {
- lineno_color.paint_fn(
- Box::new(|f| {
- f.write_str(Self::ANONYMIZED_LINE_NUM)?;
- f.write_str(" |")
- }),
- f,
- )?;
- } else {
- lineno_color.paint_fn(
- Box::new(|f| {
- match lineno {
- Some(n) => write!(f, "{:>width$}", n, width = lineno_width),
- None => format_repeat_char(' ', lineno_width, f),
- }?;
- f.write_str(" |")
- }),
- f,
- )?;
- }
- if *line != DisplaySourceLine::Empty {
- if !inline_marks.is_empty() || 0 < inline_marks_width {
- f.write_char(' ')?;
- self.format_inline_marks(inline_marks, inline_marks_width, f)?;
- }
- self.format_source_line(line, f)?;
- } else if !inline_marks.is_empty() {
- f.write_char(' ')?;
- self.format_inline_marks(inline_marks, inline_marks_width, f)?;
- }
- Ok(())
- }
- DisplayLine::Fold { inline_marks } => {
- f.write_str("...")?;
- if !inline_marks.is_empty() || 0 < inline_marks_width {
- format_repeat_char(' ', lineno_width, f)?;
- self.format_inline_marks(inline_marks, inline_marks_width, f)?;
- }
- Ok(())
- }
- DisplayLine::Raw(line) => self.format_raw_line(line, lineno_width, f),
- }
- }
-
- fn format_inline_marks(
- &self,
- inline_marks: &[DisplayMark],
- inline_marks_width: usize,
- f: &mut fmt::Formatter<'_>,
- ) -> fmt::Result {
- format_repeat_char(' ', inline_marks_width - inline_marks.len(), f)?;
- for mark in inline_marks {
- self.get_annotation_style(&mark.annotation_type).paint_fn(
- Box::new(|f| {
- f.write_char(match mark.mark_type {
- DisplayMarkType::AnnotationThrough => '|',
- DisplayMarkType::AnnotationStart => '/',
- })
- }),
- f,
- )?;
- }
- Ok(())
- }
-}
diff --git a/vendor/annotate-snippets-0.8.0/src/formatter/style.rs b/vendor/annotate-snippets-0.8.0/src/formatter/style.rs
deleted file mode 100644
index f76e6b0ab..000000000
--- a/vendor/annotate-snippets-0.8.0/src/formatter/style.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-//! Set of structures required to implement a stylesheet
-//!
-//! In order to provide additional styling information for the
-//! formatter, a structs can implement `Stylesheet` and `Style`
-//! traits.
-//!
-use std::fmt;
-
-/// StyleClass is a collection of named variants of style classes
-pub enum StyleClass {
- /// Message indicating an error.
- Error,
- /// Message indicating a warning.
- Warning,
- /// Message indicating an information.
- Info,
- /// Message indicating a note.
- Note,
- /// Message indicating a help.
- Help,
-
- /// Style for line numbers.
- LineNo,
-
- /// Parts of the text that are to be emphasised.
- Emphasis,
-
- /// Parts of the text that are regular. Usually a no-op.
- None,
-}
-
-/// This trait implements a return value for the `Stylesheet::get_style`.
-pub trait Style {
- /// The method used to write text with formatter
- fn paint(&self, text: &str, f: &mut fmt::Formatter<'_>) -> fmt::Result;
- /// The method used to write display function with formatter
- fn paint_fn<'a>(
- &self,
- c: Box<dyn FnOnce(&mut fmt::Formatter<'_>) -> fmt::Result + 'a>,
- f: &mut fmt::Formatter<'_>,
- ) -> fmt::Result;
- /// The method used by the DisplayListFormatter to display the message
- /// in bold font.
- fn bold(&self) -> Box<dyn Style>;
-}
-
-/// Trait to annotate structs that can provide `Style` implementations for
-/// every `StyleClass` variant.
-pub trait Stylesheet {
- /// Returns a `Style` implementer based on the requested `StyleClass` variant.
- fn get_style(&self, class: StyleClass) -> Box<dyn Style>;
-}
diff --git a/vendor/annotate-snippets-0.8.0/src/lib.rs b/vendor/annotate-snippets-0.8.0/src/lib.rs
deleted file mode 100644
index 46b25e156..000000000
--- a/vendor/annotate-snippets-0.8.0/src/lib.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-#![deny(rust_2018_idioms)]
-
-//! A library for formatting of text or programming code snippets.
-//!
-//! It's primary purpose is to build an ASCII-graphical representation of the snippet
-//! with annotations.
-//!
-//! # Example
-//!
-//! ```text
-//! error[E0308]: mismatched types
-//! --> src/format.rs:52:1
-//! |
-//! 51 | ) -> Option<String> {
-//! | -------------- expected `Option<String>` because of return type
-//! 52 | / for ann in annotations {
-//! 53 | | match (ann.range.0, ann.range.1) {
-//! 54 | | (None, None) => continue,
-//! 55 | | (Some(start), Some(end)) if start > end_index => continue,
-//! ... |
-//! 71 | | }
-//! 72 | | }
-//! | |_____^ expected enum `std::option::Option`, found ()
-//! ```
-//!
-//! The crate uses a three stage process with two conversions between states:
-//!
-//! ```text
-//! Snippet --> DisplayList --> String
-//! ```
-//!
-//! The input type - [Snippet](self::snippet) is a structure designed
-//! to align with likely output from any parser whose code snippet is to be
-//! annotated.
-//!
-//! The middle structure - [DisplayList](self::display_list) is a
-//! structure designed to store the snippet data converted into a vector
-//! of lines containing semantic information about each line.
-//! This structure is the easiest to manipulate and organize.
-//!
-//! Finally, [DisplayListFormatter](self::formatter::DisplayListFormatter) is
-//! used to format the `DisplayList` using a `Stylesheet` into a final `String` output.
-//!
-//! A user of the crate may choose to provide their own equivalent of the input
-//! structure with an `Into<DisplayList>` trait.
-//!
-//! A user of the crate may also choose to provide their own formatter logic,
-//! to convert a `DisplayList` into a `String`, or just a `Stylesheet` to
-//! use the crate's formatting logic, but with a custom stylesheet.
-
-pub mod display_list;
-pub mod formatter;
-pub mod snippet;
-pub mod stylesheets;
diff --git a/vendor/annotate-snippets-0.8.0/src/snippet.rs b/vendor/annotate-snippets-0.8.0/src/snippet.rs
deleted file mode 100644
index bc7ba0099..000000000
--- a/vendor/annotate-snippets-0.8.0/src/snippet.rs
+++ /dev/null
@@ -1,88 +0,0 @@
-//! Structures used as an input for the library.
-//!
-//! Example:
-//!
-//! ```
-//! use annotate_snippets::snippet::*;
-//!
-//! Snippet {
-//! title: Some(Annotation {
-//! label: Some("mismatched types"),
-//! id: None,
-//! annotation_type: AnnotationType::Error,
-//! }),
-//! footer: vec![],
-//! slices: vec![
-//! Slice {
-//! source: "Foo",
-//! line_start: 51,
-//! origin: Some("src/format.rs"),
-//! fold: false,
-//! annotations: vec![],
-//! },
-//! Slice {
-//! source: "Faa",
-//! line_start: 129,
-//! origin: Some("src/display.rs"),
-//! fold: false,
-//! annotations: vec![],
-//! },
-//! ],
-//! opt: Default::default(),
-//! };
-//! ```
-use crate::display_list::FormatOptions;
-
-/// Primary structure provided for formatting
-#[derive(Debug, Default)]
-pub struct Snippet<'a> {
- pub title: Option<Annotation<'a>>,
- pub footer: Vec<Annotation<'a>>,
- pub slices: Vec<Slice<'a>>,
- pub opt: FormatOptions,
-}
-
-/// Structure containing the slice of text to be annotated and
-/// basic information about the location of the slice.
-///
-/// One `Slice` is meant to represent a single, continuous,
-/// slice of source code that you want to annotate.
-#[derive(Debug)]
-pub struct Slice<'a> {
- pub source: &'a str,
- pub line_start: usize,
- pub origin: Option<&'a str>,
- pub annotations: Vec<SourceAnnotation<'a>>,
- /// If set explicitly to `true`, the snippet will fold
- /// parts of the slice that don't contain any annotations.
- pub fold: bool,
-}
-
-/// Types of annotations.
-#[derive(Debug, Clone, Copy, PartialEq)]
-pub enum AnnotationType {
- /// Error annotations are displayed using red color and "^" character.
- Error,
- /// Warning annotations are displayed using blue color and "-" character.
- Warning,
- Info,
- Note,
- Help,
-}
-
-/// An annotation for a `Slice`.
-#[derive(Debug)]
-pub struct SourceAnnotation<'a> {
- pub range: (usize, usize),
- pub label: &'a str,
- pub annotation_type: AnnotationType,
-}
-
-/// An annotation for a `Snippet`.
-#[derive(Debug)]
-pub struct Annotation<'a> {
- /// Identifier of the annotation. Usually error code like "E0308".
- pub id: Option<&'a str>,
- pub label: Option<&'a str>,
- pub annotation_type: AnnotationType,
-}
diff --git a/vendor/annotate-snippets-0.8.0/src/stylesheets/color.rs b/vendor/annotate-snippets-0.8.0/src/stylesheets/color.rs
deleted file mode 100644
index 024dd06f6..000000000
--- a/vendor/annotate-snippets-0.8.0/src/stylesheets/color.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-use std::fmt::{self, Display};
-
-use yansi_term::{Color::Fixed, Style as AnsiTermStyle};
-
-use crate::formatter::style::{Style, StyleClass, Stylesheet};
-
-struct AnsiTermStyleWrapper {
- style: AnsiTermStyle,
-}
-
-impl Style for AnsiTermStyleWrapper {
- fn paint(&self, text: &str, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- self.style.paint(text).fmt(f)
- }
-
- fn paint_fn<'a>(
- &self,
- c: Box<dyn FnOnce(&mut fmt::Formatter<'_>) -> fmt::Result + 'a>,
- f: &mut fmt::Formatter<'_>,
- ) -> fmt::Result {
- self.style.paint_fn(c).fmt(f)
- }
-
- fn bold(&self) -> Box<dyn Style> {
- Box::new(AnsiTermStyleWrapper { style: self.style })
- }
-}
-
-pub struct AnsiTermStylesheet;
-
-impl Stylesheet for AnsiTermStylesheet {
- fn get_style(&self, class: StyleClass) -> Box<dyn Style> {
- let ansi_term_style = match class {
- StyleClass::Error => Fixed(9).bold(),
- StyleClass::Warning => Fixed(11).bold(),
- StyleClass::Info => Fixed(12).bold(),
- StyleClass::Note => AnsiTermStyle::new().bold(),
- StyleClass::Help => Fixed(14).bold(),
-
- StyleClass::LineNo => Fixed(12).bold(),
-
- StyleClass::Emphasis => AnsiTermStyle::new().bold(),
-
- StyleClass::None => AnsiTermStyle::new(),
- };
- Box::new(AnsiTermStyleWrapper {
- style: ansi_term_style,
- })
- }
-}
diff --git a/vendor/annotate-snippets-0.8.0/src/stylesheets/mod.rs b/vendor/annotate-snippets-0.8.0/src/stylesheets/mod.rs
deleted file mode 100644
index 49f6ea04b..000000000
--- a/vendor/annotate-snippets-0.8.0/src/stylesheets/mod.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-//! List of stylesheets that can be used by the `DisplayListFormatter`.
-//!
-//! The list depends on what optional dependencies the crate has been
-//! compiled with.
-//!
-//! By default the `no_color` is available. If the crate gets compiled
-//! with `ansi_term`, the `color` stylesheet is added.
-
-#[cfg(feature = "color")]
-pub mod color;
-pub mod no_color;
diff --git a/vendor/annotate-snippets-0.8.0/src/stylesheets/no_color.rs b/vendor/annotate-snippets-0.8.0/src/stylesheets/no_color.rs
deleted file mode 100644
index 21cb26955..000000000
--- a/vendor/annotate-snippets-0.8.0/src/stylesheets/no_color.rs
+++ /dev/null
@@ -1,31 +0,0 @@
-use std::fmt;
-
-use crate::formatter::style::{Style, StyleClass, Stylesheet};
-
-pub struct NoOpStyle {}
-
-impl Style for NoOpStyle {
- fn paint(&self, text: &str, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.write_str(text)
- }
-
- fn paint_fn<'a>(
- &self,
- c: Box<dyn FnOnce(&mut fmt::Formatter<'_>) -> fmt::Result + 'a>,
- f: &mut fmt::Formatter<'_>,
- ) -> fmt::Result {
- c(f)
- }
-
- fn bold(&self) -> Box<dyn Style> {
- Box::new(NoOpStyle {})
- }
-}
-
-pub struct NoColorStylesheet;
-
-impl Stylesheet for NoColorStylesheet {
- fn get_style(&self, _class: StyleClass) -> Box<dyn Style> {
- Box::new(NoOpStyle {})
- }
-}
diff --git a/vendor/annotate-snippets-0.8.0/tests/diff/mod.rs b/vendor/annotate-snippets-0.8.0/tests/diff/mod.rs
deleted file mode 100644
index 576c6c4d6..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/diff/mod.rs
+++ /dev/null
@@ -1,43 +0,0 @@
-use difference::{Changeset, Difference};
-use yansi_term::Color::{Black, Green, Red};
-
-pub fn get_diff(left: &str, right: &str) -> String {
- let mut output = String::new();
-
- let Changeset { diffs, .. } = Changeset::new(left, right, "\n");
-
- for i in 0..diffs.len() {
- match diffs[i] {
- Difference::Same(ref x) => {
- output += &format!(" {}\n", x);
- }
- Difference::Add(ref x) => {
- match diffs[i - 1] {
- Difference::Rem(ref y) => {
- output += &format!("{}", Green.paint("+"));
- let Changeset { diffs, .. } = Changeset::new(y, x, " ");
- for c in diffs {
- match c {
- Difference::Same(ref z) => {
- output += &format!("{} ", Green.paint(z.as_str()));
- }
- Difference::Add(ref z) => {
- output += &format!("{} ", Black.on(Green).paint(z.as_str()));
- }
- _ => (),
- }
- }
- output += "\n";
- }
- _ => {
- output += &format!("+{}\n", Green.paint(x.as_str()));
- }
- };
- }
- Difference::Rem(ref x) => {
- output += &format!("-{}\n", Red.paint(x.as_str()));
- }
- }
- }
- output
-}
diff --git a/vendor/annotate-snippets-0.8.0/tests/dl_from_snippet.rs b/vendor/annotate-snippets-0.8.0/tests/dl_from_snippet.rs
deleted file mode 100644
index 2ed990261..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/dl_from_snippet.rs
+++ /dev/null
@@ -1,401 +0,0 @@
-use annotate_snippets::display_list::DisplayList;
-use annotate_snippets::{display_list as dl, formatter::get_term_style, snippet};
-
-#[test]
-fn test_format_title() {
- let input = snippet::Snippet {
- title: Some(snippet::Annotation {
- id: Some("E0001"),
- label: Some("This is a title"),
- annotation_type: snippet::AnnotationType::Error,
- }),
- footer: vec![],
- slices: vec![],
- opt: Default::default(),
- };
- let output = dl::DisplayList {
- body: vec![dl::DisplayLine::Raw(dl::DisplayRawLine::Annotation {
- annotation: dl::Annotation {
- annotation_type: dl::DisplayAnnotationType::Error,
- id: Some("E0001"),
- label: vec![dl::DisplayTextFragment {
- content: "This is a title",
- style: dl::DisplayTextStyle::Emphasis,
- }],
- },
- source_aligned: false,
- continuation: false,
- })],
- stylesheet: get_term_style(input.opt.color),
- anonymized_line_numbers: input.opt.anonymized_line_numbers,
- };
- assert_eq!(dl::DisplayList::from(input), output);
-}
-
-#[test]
-fn test_format_slice() {
- let line_1 = "This is line 1";
- let line_2 = "This is line 2";
- let source = vec![line_1, line_2].join("\n");
- let input = snippet::Snippet {
- title: None,
- footer: vec![],
- slices: vec![snippet::Slice {
- source: &source,
- line_start: 5402,
- origin: None,
- annotations: vec![],
- fold: false,
- }],
- opt: Default::default(),
- };
- let output = dl::DisplayList {
- body: vec![
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Empty,
- },
- dl::DisplayLine::Source {
- lineno: Some(5402),
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Content {
- text: line_1,
- range: (0, line_1.len()),
- },
- },
- dl::DisplayLine::Source {
- lineno: Some(5403),
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Content {
- range: (line_1.len() + 1, source.len()),
- text: line_2,
- },
- },
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Empty,
- },
- ],
- stylesheet: get_term_style(input.opt.color),
- anonymized_line_numbers: input.opt.anonymized_line_numbers,
- };
- assert_eq!(dl::DisplayList::from(input), output);
-}
-
-#[test]
-fn test_format_slices_continuation() {
- let src_0 = "This is slice 1";
- let src_0_len = src_0.len();
- let src_1 = "This is slice 2";
- let src_1_len = src_1.len();
- let input = snippet::Snippet {
- title: None,
- footer: vec![],
- slices: vec![
- snippet::Slice {
- source: src_0,
- line_start: 5402,
- origin: Some("file1.rs"),
- annotations: vec![],
- fold: false,
- },
- snippet::Slice {
- source: src_1,
- line_start: 2,
- origin: Some("file2.rs"),
- annotations: vec![],
- fold: false,
- },
- ],
- opt: Default::default(),
- };
- let output = dl::DisplayList {
- body: vec![
- dl::DisplayLine::Raw(dl::DisplayRawLine::Origin {
- path: "file1.rs",
- pos: None,
- header_type: dl::DisplayHeaderType::Initial,
- }),
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Empty,
- },
- dl::DisplayLine::Source {
- lineno: Some(5402),
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Content {
- text: src_0,
- range: (0, src_0_len),
- },
- },
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Empty,
- },
- dl::DisplayLine::Raw(dl::DisplayRawLine::Origin {
- path: "file2.rs",
- pos: None,
- header_type: dl::DisplayHeaderType::Continuation,
- }),
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Empty,
- },
- dl::DisplayLine::Source {
- lineno: Some(2),
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Content {
- text: src_1,
- range: (0, src_1_len),
- },
- },
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Empty,
- },
- ],
- stylesheet: get_term_style(input.opt.color),
- anonymized_line_numbers: input.opt.anonymized_line_numbers,
- };
- assert_eq!(dl::DisplayList::from(input), output);
-}
-
-#[test]
-fn test_format_slice_annotation_standalone() {
- let line_1 = "This is line 1";
- let line_2 = "This is line 2";
- let source = vec![line_1, line_2].join("\n");
- // In line 2
- let range = (22, 24);
- let input = snippet::Snippet {
- title: None,
- footer: vec![],
- slices: vec![snippet::Slice {
- source: &source,
- line_start: 5402,
- origin: None,
- annotations: vec![snippet::SourceAnnotation {
- range,
- label: "Test annotation",
- annotation_type: snippet::AnnotationType::Info,
- }],
- fold: false,
- }],
- opt: Default::default(),
- };
- let output = dl::DisplayList {
- body: vec![
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Empty,
- },
- dl::DisplayLine::Source {
- lineno: Some(5402),
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Content {
- range: (0, line_1.len()),
- text: line_1,
- },
- },
- dl::DisplayLine::Source {
- lineno: Some(5403),
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Content {
- range: (line_1.len() + 1, source.len()),
- text: line_2,
- },
- },
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Annotation {
- annotation: dl::Annotation {
- annotation_type: dl::DisplayAnnotationType::Info,
- id: None,
- label: vec![dl::DisplayTextFragment {
- content: "Test annotation",
- style: dl::DisplayTextStyle::Regular,
- }],
- },
- range: (range.0 - (line_1.len() + 1), range.1 - (line_1.len() + 1)),
- annotation_type: dl::DisplayAnnotationType::Info,
- annotation_part: dl::DisplayAnnotationPart::Standalone,
- },
- },
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Empty,
- },
- ],
- stylesheet: get_term_style(input.opt.color),
- anonymized_line_numbers: input.opt.anonymized_line_numbers,
- };
- assert_eq!(dl::DisplayList::from(input), output);
-}
-
-#[test]
-fn test_format_label() {
- let input = snippet::Snippet {
- title: None,
- footer: vec![snippet::Annotation {
- id: None,
- label: Some("This __is__ a title"),
- annotation_type: snippet::AnnotationType::Error,
- }],
- slices: vec![],
- opt: Default::default(),
- };
- let output = dl::DisplayList {
- body: vec![dl::DisplayLine::Raw(dl::DisplayRawLine::Annotation {
- annotation: dl::Annotation {
- annotation_type: dl::DisplayAnnotationType::Error,
- id: None,
- label: vec![
- dl::DisplayTextFragment {
- content: "This ",
- style: dl::DisplayTextStyle::Regular,
- },
- dl::DisplayTextFragment {
- content: "is",
- style: dl::DisplayTextStyle::Emphasis,
- },
- dl::DisplayTextFragment {
- content: " a title",
- style: dl::DisplayTextStyle::Regular,
- },
- ],
- },
- source_aligned: true,
- continuation: false,
- })],
- stylesheet: get_term_style(input.opt.color),
- anonymized_line_numbers: input.opt.anonymized_line_numbers,
- };
- assert_eq!(dl::DisplayList::from(input), output);
-}
-
-#[test]
-#[should_panic]
-fn test_i26() {
- let source = "short";
- let label = "label";
- let input = snippet::Snippet {
- title: None,
- footer: vec![],
- slices: vec![snippet::Slice {
- annotations: vec![snippet::SourceAnnotation {
- range: (0, source.len() + 1),
- label,
- annotation_type: snippet::AnnotationType::Error,
- }],
- source,
- line_start: 0,
- origin: None,
- fold: false,
- }],
- opt: Default::default(),
- };
-
- let _ = dl::DisplayList::from(input);
-}
-
-#[test]
-fn test_i_29() {
- let snippets = snippet::Snippet {
- title: Some(snippet::Annotation {
- id: None,
- label: Some("oops"),
- annotation_type: snippet::AnnotationType::Error,
- }),
- footer: vec![],
- slices: vec![snippet::Slice {
- source: "First line\r\nSecond oops line",
- line_start: 1,
- origin: Some("<current file>"),
- annotations: vec![snippet::SourceAnnotation {
- range: (19, 23),
- label: "oops",
- annotation_type: snippet::AnnotationType::Error,
- }],
- fold: true,
- }],
- opt: Default::default(),
- };
-
- let expected = DisplayList {
- body: vec![
- dl::DisplayLine::Raw(dl::DisplayRawLine::Annotation {
- annotation: dl::Annotation {
- annotation_type: dl::DisplayAnnotationType::Error,
- id: None,
- label: vec![dl::DisplayTextFragment {
- content: "oops",
- style: dl::DisplayTextStyle::Emphasis,
- }],
- },
- source_aligned: false,
- continuation: false,
- }),
- dl::DisplayLine::Raw(dl::DisplayRawLine::Origin {
- path: "<current file>",
- pos: Some((2, 8)),
- header_type: dl::DisplayHeaderType::Initial,
- }),
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Empty,
- },
- dl::DisplayLine::Source {
- lineno: Some(1),
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Content {
- text: "First line",
- range: (0, 10),
- },
- },
- dl::DisplayLine::Source {
- lineno: Some(2),
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Content {
- text: "Second oops line",
- range: (12, 28),
- },
- },
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Annotation {
- annotation: dl::Annotation {
- annotation_type: dl::DisplayAnnotationType::None,
- id: None,
- label: vec![dl::DisplayTextFragment {
- content: "oops",
- style: dl::DisplayTextStyle::Regular,
- }],
- },
- range: (7, 11),
- annotation_type: dl::DisplayAnnotationType::Error,
- annotation_part: dl::DisplayAnnotationPart::Standalone,
- },
- },
- dl::DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: dl::DisplaySourceLine::Empty,
- },
- ],
- stylesheet: get_term_style(false),
- anonymized_line_numbers: false,
- };
-
- assert_eq!(DisplayList::from(snippets), expected);
-}
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation.toml b/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation.toml
deleted file mode 100644
index bdb577f46..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation.toml
+++ /dev/null
@@ -1,40 +0,0 @@
-[[slices]]
-source = """
-) -> Option<String> {
- for ann in annotations {
- match (ann.range.0, ann.range.1) {
- (None, None) => continue,
- (Some(start), Some(end)) if start > end_index || end < start_index => continue,
- (Some(start), Some(end)) if start >= start_index && end <= end_index => {
- let label = if let Some(ref label) = ann.label {
- format!(" {}", label)
- } else {
- String::from("")
- };
-
- return Some(format!(
- "{}{}{}",
- " ".repeat(start - start_index),
- "^".repeat(end - start),
- label
- ));
- }
- _ => continue,
- }
- }
-"""
-line_start = 51
-origin = "src/format.rs"
-fold = true
-[[slices.annotations]]
-label = "expected `std::option::Option<std::string::String>` because of return type"
-annotation_type = "Warning"
-range = [5, 19]
-[[slices.annotations]]
-label = "expected enum `std::option::Option`, found ()"
-annotation_type = "Error"
-range = [22, 765]
-[title]
-label = "mismatched types"
-id = "E0308"
-annotation_type = "Error"
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation.txt b/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation.txt
deleted file mode 100644
index bacdec10d..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0308]: mismatched types
- --> src/format.rs:51:6
- |
-51 | ) -> Option<String> {
- | -------------- expected `std::option::Option<std::string::String>` because of return type
-52 | / for ann in annotations {
-53 | | match (ann.range.0, ann.range.1) {
-54 | | (None, None) => continue,
-55 | | (Some(start), Some(end)) if start > end_index || end < start_index => continue,
-... |
-71 | | }
-72 | | }
- | |_____^ expected enum `std::option::Option`, found ()
- |
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation2.toml b/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation2.toml
deleted file mode 100644
index 6ec0b1fe8..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation2.toml
+++ /dev/null
@@ -1,18 +0,0 @@
-[[slices]]
-source = """
- if let DisplayLine::Source {
- ref mut inline_marks,
- } = body[body_idx]
-"""
-line_start = 139
-origin = "src/display_list.rs"
-fold = false
-[[slices.annotations]]
-label = "missing fields `lineno`, `content`"
-annotation_type = "Error"
-range = [31, 127]
-
-[title]
-label = "pattern does not mention fields `lineno`, `content`"
-id = "E0027"
-annotation_type = "Error"
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation2.txt b/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation2.txt
deleted file mode 100644
index 8a00bfa20..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation2.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E0027]: pattern does not mention fields `lineno`, `content`
- --> src/display_list.rs:139:32
- |
-139 | if let DisplayLine::Source {
- | ________________________________^
-140 | | ref mut inline_marks,
-141 | | } = body[body_idx]
- | |_________________________^ missing fields `lineno`, `content`
- |
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation3.toml b/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation3.toml
deleted file mode 100644
index 21bbcd857..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation3.toml
+++ /dev/null
@@ -1,18 +0,0 @@
-[[slices]]
-source = """
-This is an exampl
-e of an edge case of an annotation overflowing
-to exactly one character on next line.
-"""
-line_start = 26
-origin = "foo.txt"
-fold = false
-[[slices.annotations]]
-label = "this should not be on separate lines"
-annotation_type = "Error"
-range = [11, 18]
-
-[title]
-label = "spacing error found"
-id = "E####"
-annotation_type = "Error"
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation3.txt b/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation3.txt
deleted file mode 100644
index 12e174c56..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiline_annotation3.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-error[E####]: spacing error found
- --> foo.txt:26:12
- |
-26 | This is an exampl
- | ____________^
-27 | | e of an edge case of an annotation overflowing
- | |_^ this should not be on separate lines
-28 | to exactly one character on next line.
- | \ No newline at end of file
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiple_annotations.toml b/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiple_annotations.toml
deleted file mode 100644
index 84efc5f17..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiple_annotations.toml
+++ /dev/null
@@ -1,25 +0,0 @@
-[[slices]]
-source = """
-fn add_title_line(result: &mut Vec<String>, main_annotation: Option<&Annotation>) {
- if let Some(annotation) = main_annotation {
- result.push(format_title_line(
- &annotation.annotation_type,
- None,
- &annotation.label,
- ));
- }
-}
-"""
-line_start = 96
-[[slices.annotations]]
-label = "Variable defined here"
-annotation_type = "Error"
-range = [100, 110]
-[[slices.annotations]]
-label = "Referenced here"
-annotation_type = "Error"
-range = [184, 194]
-[[slices.annotations]]
-label = "Referenced again here"
-annotation_type = "Error"
-range = [243, 253]
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiple_annotations.txt b/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiple_annotations.txt
deleted file mode 100644
index 26c677f7e..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/multiple_annotations.txt
+++ /dev/null
@@ -1,14 +0,0 @@
- |
- 96 | fn add_title_line(result: &mut Vec<String>, main_annotation: Option<&Annotation>) {
- 97 | if let Some(annotation) = main_annotation {
- | ^^^^^^^^^^ Variable defined here
- 98 | result.push(format_title_line(
- 99 | &annotation.annotation_type,
- | ^^^^^^^^^^ Referenced here
-100 | None,
-101 | &annotation.label,
- | ^^^^^^^^^^ Referenced again here
-102 | ));
-103 | }
-104 | }
- |
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/simple.toml b/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/simple.toml
deleted file mode 100644
index 6c38674ac..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/simple.toml
+++ /dev/null
@@ -1,18 +0,0 @@
-[[slices]]
-source = """
- })
-
- for line in &self.body {"""
-line_start = 169
-origin = "src/format_color.rs"
-[[slices.annotations]]
-label = "unexpected token"
-annotation_type = "Error"
-range = [20, 23]
-[[slices.annotations]]
-label = "expected one of `.`, `;`, `?`, or an operator here"
-annotation_type = "Warning"
-range = [10, 11]
-[title]
-label = "expected one of `.`, `;`, `?`, or an operator, found `for`"
-annotation_type = "Error"
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/simple.txt b/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/simple.txt
deleted file mode 100644
index 752cc890f..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures/no-color/simple.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-error: expected one of `.`, `;`, `?`, or an operator, found `for`
- --> src/format_color.rs:171:9
- |
-169 | })
- | - expected one of `.`, `;`, `?`, or an operator here
-170 |
-171 | for line in &self.body {
- | ^^^ unexpected token
- |
diff --git a/vendor/annotate-snippets-0.8.0/tests/fixtures_test.rs b/vendor/annotate-snippets-0.8.0/tests/fixtures_test.rs
deleted file mode 100644
index e471521f2..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/fixtures_test.rs
+++ /dev/null
@@ -1,45 +0,0 @@
-mod diff;
-mod snippet;
-
-use crate::snippet::SnippetDef;
-use annotate_snippets::{display_list::DisplayList, snippet::Snippet};
-use glob::glob;
-use std::{error::Error, fs::File, io, io::prelude::*};
-
-fn read_file(path: &str) -> Result<String, io::Error> {
- let mut f = File::open(path)?;
- let mut s = String::new();
- (f.read_to_string(&mut s))?;
- Ok(s.trim_end().to_string())
-}
-
-fn read_fixture<'de>(src: &'de str) -> Result<Snippet<'de>, Box<dyn Error>> {
- Ok(toml::from_str(src).map(|a: SnippetDef| a.into())?)
-}
-
-#[test]
-fn test_fixtures() {
- for entry in glob("./tests/fixtures/no-color/**/*.toml").expect("Failed to read glob pattern") {
- let p = entry.expect("Error while getting an entry");
-
- let path_in = p.to_str().expect("Can't print path");
- let path_out = path_in.replace(".toml", ".txt");
-
- let src = read_file(&path_in).expect("Failed to read file");
- let snippet = read_fixture(&src).expect("Failed to read file");
- let expected_out = read_file(&path_out).expect("Failed to read file");
-
- let dl = DisplayList::from(snippet);
- let actual_out = dl.to_string();
- println!("{}", expected_out);
- println!("{}", actual_out.trim_end());
-
- assert_eq!(
- expected_out,
- actual_out.trim_end(),
- "\n\n\nWhile parsing: {}\nThe diff is:\n\n\n{}\n\n\n",
- path_in,
- diff::get_diff(expected_out.as_str(), actual_out.as_str())
- );
- }
-}
diff --git a/vendor/annotate-snippets-0.8.0/tests/formatter.rs b/vendor/annotate-snippets-0.8.0/tests/formatter.rs
deleted file mode 100644
index 5c7211d1e..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/formatter.rs
+++ /dev/null
@@ -1,552 +0,0 @@
-use annotate_snippets::display_list::*;
-use annotate_snippets::snippet::{self, Snippet};
-
-#[test]
-fn test_source_empty() {
- let dl = DisplayList::from(vec![DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Empty,
- }]);
-
- assert_eq!(dl.to_string(), " |");
-}
-
-#[test]
-fn test_source_content() {
- let dl = DisplayList::from(vec![
- DisplayLine::Source {
- lineno: Some(56),
- inline_marks: vec![],
- line: DisplaySourceLine::Content {
- text: "This is an example",
- range: (0, 19),
- },
- },
- DisplayLine::Source {
- lineno: Some(57),
- inline_marks: vec![],
- line: DisplaySourceLine::Content {
- text: "of content lines",
- range: (0, 19),
- },
- },
- ]);
-
- assert_eq!(
- dl.to_string(),
- "56 | This is an example\n57 | of content lines"
- );
-}
-
-#[test]
-fn test_source_annotation_standalone_singleline() {
- let dl = DisplayList::from(vec![DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- range: (0, 5),
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::None,
- id: None,
- label: vec![DisplayTextFragment {
- content: "Example string",
- style: DisplayTextStyle::Regular,
- }],
- },
- annotation_type: DisplayAnnotationType::Error,
- annotation_part: DisplayAnnotationPart::Standalone,
- },
- }]);
-
- assert_eq!(dl.to_string(), " | ^^^^^ Example string");
-}
-
-#[test]
-fn test_source_annotation_standalone_multiline() {
- let dl = DisplayList::from(vec![
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- range: (0, 5),
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Help,
- id: None,
- label: vec![DisplayTextFragment {
- content: "Example string",
- style: DisplayTextStyle::Regular,
- }],
- },
- annotation_type: DisplayAnnotationType::Warning,
- annotation_part: DisplayAnnotationPart::Standalone,
- },
- },
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- range: (0, 5),
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Help,
- id: None,
- label: vec![DisplayTextFragment {
- content: "Second line",
- style: DisplayTextStyle::Regular,
- }],
- },
- annotation_type: DisplayAnnotationType::Warning,
- annotation_part: DisplayAnnotationPart::LabelContinuation,
- },
- },
- ]);
-
- assert_eq!(
- dl.to_string(),
- " | ----- help: Example string\n | Second line"
- );
-}
-
-#[test]
-fn test_source_annotation_standalone_multi_annotation() {
- let dl = DisplayList::from(vec![
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- range: (0, 5),
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Info,
- id: None,
- label: vec![DisplayTextFragment {
- content: "Example string",
- style: DisplayTextStyle::Regular,
- }],
- },
- annotation_type: DisplayAnnotationType::Note,
- annotation_part: DisplayAnnotationPart::Standalone,
- },
- },
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- range: (0, 5),
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Info,
- id: None,
- label: vec![DisplayTextFragment {
- content: "Second line",
- style: DisplayTextStyle::Regular,
- }],
- },
- annotation_type: DisplayAnnotationType::Note,
- annotation_part: DisplayAnnotationPart::LabelContinuation,
- },
- },
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- range: (0, 5),
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Warning,
- id: None,
- label: vec![DisplayTextFragment {
- content: "This is a note",
- style: DisplayTextStyle::Regular,
- }],
- },
- annotation_type: DisplayAnnotationType::Note,
- annotation_part: DisplayAnnotationPart::Consequitive,
- },
- },
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- range: (0, 5),
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Warning,
- id: None,
- label: vec![DisplayTextFragment {
- content: "Second line of the warning",
- style: DisplayTextStyle::Regular,
- }],
- },
- annotation_type: DisplayAnnotationType::Note,
- annotation_part: DisplayAnnotationPart::LabelContinuation,
- },
- },
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- range: (0, 5),
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Info,
- id: None,
- label: vec![DisplayTextFragment {
- content: "This is an info",
- style: DisplayTextStyle::Regular,
- }],
- },
- annotation_type: DisplayAnnotationType::Info,
- annotation_part: DisplayAnnotationPart::Standalone,
- },
- },
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- range: (0, 5),
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Help,
- id: None,
- label: vec![DisplayTextFragment {
- content: "This is help",
- style: DisplayTextStyle::Regular,
- }],
- },
- annotation_type: DisplayAnnotationType::Help,
- annotation_part: DisplayAnnotationPart::Standalone,
- },
- },
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Annotation {
- range: (0, 0),
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::None,
- id: None,
- label: vec![DisplayTextFragment {
- content: "This is an annotation of type none",
- style: DisplayTextStyle::Regular,
- }],
- },
- annotation_type: DisplayAnnotationType::None,
- annotation_part: DisplayAnnotationPart::Standalone,
- },
- },
- ]);
-
- assert_eq!(dl.to_string(), " | ----- info: Example string\n | Second line\n | warning: This is a note\n | Second line of the warning\n | ----- info: This is an info\n | ----- help: This is help\n | This is an annotation of type none");
-}
-
-#[test]
-fn test_fold_line() {
- let dl = DisplayList::from(vec![
- DisplayLine::Source {
- lineno: Some(5),
- inline_marks: vec![],
- line: DisplaySourceLine::Content {
- text: "This is line 5",
- range: (0, 19),
- },
- },
- DisplayLine::Fold {
- inline_marks: vec![],
- },
- DisplayLine::Source {
- lineno: Some(10021),
- inline_marks: vec![],
- line: DisplaySourceLine::Content {
- text: "... and now we're at line 10021",
- range: (0, 19),
- },
- },
- ]);
-
- assert_eq!(
- dl.to_string(),
- " 5 | This is line 5\n...\n10021 | ... and now we're at line 10021"
- );
-}
-
-#[test]
-fn test_raw_origin_initial_nopos() {
- let dl = DisplayList::from(vec![DisplayLine::Raw(DisplayRawLine::Origin {
- path: "src/test.rs",
- pos: None,
- header_type: DisplayHeaderType::Initial,
- })]);
-
- assert_eq!(dl.to_string(), "--> src/test.rs");
-}
-
-#[test]
-fn test_raw_origin_initial_pos() {
- let dl = DisplayList::from(vec![DisplayLine::Raw(DisplayRawLine::Origin {
- path: "src/test.rs",
- pos: Some((23, 15)),
- header_type: DisplayHeaderType::Initial,
- })]);
-
- assert_eq!(dl.to_string(), "--> src/test.rs:23:15");
-}
-
-#[test]
-fn test_raw_origin_continuation() {
- let dl = DisplayList::from(vec![DisplayLine::Raw(DisplayRawLine::Origin {
- path: "src/test.rs",
- pos: Some((23, 15)),
- header_type: DisplayHeaderType::Continuation,
- })]);
-
- assert_eq!(dl.to_string(), "::: src/test.rs:23:15");
-}
-
-#[test]
-fn test_raw_annotation_unaligned() {
- let dl = DisplayList::from(vec![DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Error,
- id: Some("E0001"),
- label: vec![DisplayTextFragment {
- content: "This is an error",
- style: DisplayTextStyle::Regular,
- }],
- },
- source_aligned: false,
- continuation: false,
- })]);
-
- assert_eq!(dl.to_string(), "error[E0001]: This is an error");
-}
-
-#[test]
-fn test_raw_annotation_unaligned_multiline() {
- let dl = DisplayList::from(vec![
- DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Warning,
- id: Some("E0001"),
- label: vec![DisplayTextFragment {
- content: "This is an error",
- style: DisplayTextStyle::Regular,
- }],
- },
- source_aligned: false,
- continuation: false,
- }),
- DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Warning,
- id: Some("E0001"),
- label: vec![DisplayTextFragment {
- content: "Second line of the error",
- style: DisplayTextStyle::Regular,
- }],
- },
- source_aligned: false,
- continuation: true,
- }),
- ]);
-
- assert_eq!(
- dl.to_string(),
- "warning[E0001]: This is an error\n Second line of the error"
- );
-}
-
-#[test]
-fn test_raw_annotation_aligned() {
- let dl = DisplayList::from(vec![DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Error,
- id: Some("E0001"),
- label: vec![DisplayTextFragment {
- content: "This is an error",
- style: DisplayTextStyle::Regular,
- }],
- },
- source_aligned: true,
- continuation: false,
- })]);
-
- assert_eq!(dl.to_string(), " = error[E0001]: This is an error");
-}
-
-#[test]
-fn test_raw_annotation_aligned_multiline() {
- let dl = DisplayList::from(vec![
- DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Warning,
- id: Some("E0001"),
- label: vec![DisplayTextFragment {
- content: "This is an error",
- style: DisplayTextStyle::Regular,
- }],
- },
- source_aligned: true,
- continuation: false,
- }),
- DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Warning,
- id: Some("E0001"),
- label: vec![DisplayTextFragment {
- content: "Second line of the error",
- style: DisplayTextStyle::Regular,
- }],
- },
- source_aligned: true,
- continuation: true,
- }),
- ]);
-
- assert_eq!(
- dl.to_string(),
- " = warning[E0001]: This is an error\n Second line of the error"
- );
-}
-
-#[test]
-fn test_different_annotation_types() {
- let dl = DisplayList::from(vec![
- DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::Note,
- id: None,
- label: vec![DisplayTextFragment {
- content: "This is a note",
- style: DisplayTextStyle::Regular,
- }],
- },
- source_aligned: false,
- continuation: false,
- }),
- DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::None,
- id: None,
- label: vec![DisplayTextFragment {
- content: "This is just a string",
- style: DisplayTextStyle::Regular,
- }],
- },
- source_aligned: false,
- continuation: false,
- }),
- DisplayLine::Raw(DisplayRawLine::Annotation {
- annotation: Annotation {
- annotation_type: DisplayAnnotationType::None,
- id: None,
- label: vec![DisplayTextFragment {
- content: "Second line of none type annotation",
- style: DisplayTextStyle::Regular,
- }],
- },
- source_aligned: false,
- continuation: true,
- }),
- ]);
-
- assert_eq!(
- dl.to_string(),
- "note: This is a note\nThis is just a string\n Second line of none type annotation",
- );
-}
-
-#[test]
-fn test_inline_marks_empty_line() {
- let dl = DisplayList::from(vec![DisplayLine::Source {
- lineno: None,
- inline_marks: vec![DisplayMark {
- mark_type: DisplayMarkType::AnnotationThrough,
- annotation_type: DisplayAnnotationType::Error,
- }],
- line: DisplaySourceLine::Empty,
- }]);
-
- assert_eq!(dl.to_string(), " | |",);
-}
-
-#[test]
-fn test_anon_lines() {
- let mut dl = DisplayList::from(vec![
- DisplayLine::Source {
- lineno: Some(56),
- inline_marks: vec![],
- line: DisplaySourceLine::Content {
- text: "This is an example",
- range: (0, 19),
- },
- },
- DisplayLine::Source {
- lineno: Some(57),
- inline_marks: vec![],
- line: DisplaySourceLine::Content {
- text: "of content lines",
- range: (0, 19),
- },
- },
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Empty,
- },
- DisplayLine::Source {
- lineno: None,
- inline_marks: vec![],
- line: DisplaySourceLine::Content {
- text: "abc",
- range: (0, 19),
- },
- },
- ]);
-
- dl.anonymized_line_numbers = true;
- assert_eq!(
- dl.to_string(),
- "LL | This is an example\nLL | of content lines\n |\n | abc"
- );
-}
-
-#[test]
-fn test_raw_origin_initial_pos_anon_lines() {
- let mut dl = DisplayList::from(vec![DisplayLine::Raw(DisplayRawLine::Origin {
- path: "src/test.rs",
- pos: Some((23, 15)),
- header_type: DisplayHeaderType::Initial,
- })]);
-
- // Using anonymized_line_numbers should not affect the inital position
- dl.anonymized_line_numbers = true;
- assert_eq!(dl.to_string(), "--> src/test.rs:23:15");
-}
-
-#[test]
-fn test_i_29() {
- let snippets = Snippet {
- title: Some(snippet::Annotation {
- id: None,
- label: Some("oops"),
- annotation_type: snippet::AnnotationType::Error,
- }),
- footer: vec![],
- slices: vec![snippet::Slice {
- source: "First line\r\nSecond oops line",
- line_start: 1,
- origin: Some("<current file>"),
- annotations: vec![snippet::SourceAnnotation {
- range: (19, 23),
- label: "oops",
- annotation_type: snippet::AnnotationType::Error,
- }],
- fold: true,
- }],
- opt: Default::default(),
- };
- let expected = r#"error: oops
- --> <current file>:2:8
- |
-1 | First line
-2 | Second oops line
- | ^^^^ oops
- |"#;
-
- assert_eq!(DisplayList::from(snippets).to_string(), expected);
-}
diff --git a/vendor/annotate-snippets-0.8.0/tests/snippet/mod.rs b/vendor/annotate-snippets-0.8.0/tests/snippet/mod.rs
deleted file mode 100644
index c3348741a..000000000
--- a/vendor/annotate-snippets-0.8.0/tests/snippet/mod.rs
+++ /dev/null
@@ -1,167 +0,0 @@
-use serde::{Deserialize, Deserializer, Serialize};
-
-use annotate_snippets::{
- display_list::FormatOptions,
- snippet::{Annotation, AnnotationType, Slice, Snippet, SourceAnnotation},
-};
-
-#[derive(Deserialize)]
-pub struct SnippetDef<'a> {
- #[serde(deserialize_with = "deserialize_annotation")]
- #[serde(default)]
- #[serde(borrow)]
- pub title: Option<Annotation<'a>>,
- #[serde(deserialize_with = "deserialize_annotations")]
- #[serde(default)]
- #[serde(borrow)]
- pub footer: Vec<Annotation<'a>>,
- #[serde(deserialize_with = "deserialize_opt")]
- #[serde(default)]
- pub opt: FormatOptions,
- #[serde(deserialize_with = "deserialize_slices")]
- #[serde(borrow)]
- pub slices: Vec<Slice<'a>>,
-}
-
-impl<'a> Into<Snippet<'a>> for SnippetDef<'a> {
- fn into(self) -> Snippet<'a> {
- let SnippetDef {
- title,
- footer,
- opt,
- slices,
- } = self;
- Snippet {
- title,
- footer,
- slices,
- opt,
- }
- }
-}
-
-fn deserialize_opt<'de, D>(deserializer: D) -> Result<FormatOptions, D::Error>
-where
- D: Deserializer<'de>,
-{
- #[derive(Deserialize)]
- struct Wrapper(#[serde(with = "FormatOptionsDef")] FormatOptions);
-
- Wrapper::deserialize(deserializer).map(|w| w.0)
-}
-
-#[derive(Deserialize)]
-#[serde(remote = "FormatOptions")]
-pub struct FormatOptionsDef {
- pub color: bool,
- pub anonymized_line_numbers: bool,
-}
-
-fn deserialize_slices<'de, D>(deserializer: D) -> Result<Vec<Slice<'de>>, D::Error>
-where
- D: Deserializer<'de>,
-{
- #[derive(Deserialize)]
- struct Wrapper<'a>(
- #[serde(with = "SliceDef")]
- #[serde(borrow)]
- Slice<'a>,
- );
-
- let v = Vec::deserialize(deserializer)?;
- Ok(v.into_iter().map(|Wrapper(a)| a).collect())
-}
-
-fn deserialize_annotation<'de, D>(deserializer: D) -> Result<Option<Annotation<'de>>, D::Error>
-where
- D: Deserializer<'de>,
-{
- #[derive(Deserialize)]
- struct Wrapper<'a>(
- #[serde(with = "AnnotationDef")]
- #[serde(borrow)]
- Annotation<'a>,
- );
-
- Option::<Wrapper>::deserialize(deserializer)
- .map(|opt_wrapped: Option<Wrapper>| opt_wrapped.map(|wrapped: Wrapper| wrapped.0))
-}
-
-fn deserialize_annotations<'de, D>(deserializer: D) -> Result<Vec<Annotation<'de>>, D::Error>
-where
- D: Deserializer<'de>,
-{
- #[derive(Deserialize)]
- struct Wrapper<'a>(
- #[serde(with = "AnnotationDef")]
- #[serde(borrow)]
- Annotation<'a>,
- );
-
- let v = Vec::deserialize(deserializer)?;
- Ok(v.into_iter().map(|Wrapper(a)| a).collect())
-}
-
-#[derive(Deserialize)]
-#[serde(remote = "Slice")]
-pub struct SliceDef<'a> {
- #[serde(borrow)]
- pub source: &'a str,
- pub line_start: usize,
- #[serde(borrow)]
- pub origin: Option<&'a str>,
- #[serde(deserialize_with = "deserialize_source_annotations")]
- #[serde(borrow)]
- pub annotations: Vec<SourceAnnotation<'a>>,
- #[serde(default)]
- pub fold: bool,
-}
-
-fn deserialize_source_annotations<'de, D>(
- deserializer: D,
-) -> Result<Vec<SourceAnnotation<'de>>, D::Error>
-where
- D: Deserializer<'de>,
-{
- #[derive(Deserialize)]
- struct Wrapper<'a>(
- #[serde(with = "SourceAnnotationDef")]
- #[serde(borrow)]
- SourceAnnotation<'a>,
- );
-
- let v = Vec::deserialize(deserializer)?;
- Ok(v.into_iter().map(|Wrapper(a)| a).collect())
-}
-
-#[derive(Serialize, Deserialize)]
-#[serde(remote = "SourceAnnotation")]
-pub struct SourceAnnotationDef<'a> {
- pub range: (usize, usize),
- #[serde(borrow)]
- pub label: &'a str,
- #[serde(with = "AnnotationTypeDef")]
- pub annotation_type: AnnotationType,
-}
-
-#[derive(Serialize, Deserialize)]
-#[serde(remote = "Annotation")]
-pub struct AnnotationDef<'a> {
- #[serde(borrow)]
- pub id: Option<&'a str>,
- #[serde(borrow)]
- pub label: Option<&'a str>,
- #[serde(with = "AnnotationTypeDef")]
- pub annotation_type: AnnotationType,
-}
-
-#[allow(dead_code)]
-#[derive(Serialize, Deserialize)]
-#[serde(remote = "AnnotationType")]
-enum AnnotationTypeDef {
- Error,
- Warning,
- Info,
- Note,
- Help,
-}
diff --git a/vendor/anyhow/.cargo-checksum.json b/vendor/anyhow/.cargo-checksum.json
index 7b37c5570..5bbee7b7b 100644
--- a/vendor/anyhow/.cargo-checksum.json
+++ b/vendor/anyhow/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"b83515ea98aa6ba603307c3629b86b0ad85e3017df8fe9f444c4bc8e0fc18c03","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"4bd4d352368ac0f5447031d82454490f6ac0c80d2fa4cb64ba0c23c614670d49","build.rs":"f82a81a4c16e3b68140e10c3d3a9ee54af48c53133a1d894fbb92190f09f0550","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/backtrace.rs":"5a60bd1fe1717c044c7ab34c062ce6651c0cb08596a5878e391c2755ecac07f9","src/chain.rs":"6edefc5f3c7d69683095862e54e3bb56faba5b3387bf2eeaed429da090007a0a","src/context.rs":"559478ae785ce913523aa21358cc1561ef4b0b95c5c87675a77890364c0162fe","src/ensure.rs":"ba404f1708d41a267f8678858aebefadc8fae717bd5533e5ebb47e219aa44f7e","src/error.rs":"6c5b1357eedd6f2be1fdaee1be645a33e68c945c481d6ff20b98c8fdedea687a","src/fmt.rs":"c2d4aad6ce20625a70a7c091e3087b6a2c19a4a87c7a12edb4c98978307245ea","src/kind.rs":"b21b15dbee77d50abe88684a9571b39659076465dd4b1956f366af8fdd26e95a","src/lib.rs":"b340e18f5666d53289ce3428054e9789009cf60ea3e9ff717b3a4028fbaba6c2","src/macros.rs":"4ff9a40d7ff06cc02b387f40d6ae296990493cd7f9755880c621c47e7e845f07","src/ptr.rs":"f4e28bc9feba1e84160ca9d185008a51b5d72e168e6546f3e942f4258c361e19","src/wrapper.rs":"1229beca67dbd95ca77c9ecce282272acc55276c267c58cb73a75388b4693dda","tests/common/mod.rs":"f9088c2d7afafa64ff730b629272045b776bfafc2f5957508242da630635f2e1","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/drop/mod.rs":"08c3e553c1cc0d2dbd936fc45f4b5b1105057186affd6865e8d261e05f0f0646","tests/test_autotrait.rs":"981e792db353be2f14c7a1cabe43b5f1329c168cb7679077cc2be786a0920d48","tests/test_backtrace.rs":"0e50edbb33b6bd07ba89ff3db72fb7c688ba2a4371fccdbbb20309ab02948b6a","tests/test_boxed.rs":"6b26db0e2eb72afe9af7352ea820837aab90f8d486294616dd5dc34c1b94038c","tests/test_chain.rs":"d5e90e3eba58abc60d241d3aade39e0b8d4006d9a14f3cf015d3d925160b5812","tests/test_context.rs":"8409c53b328562c11e822bd6c3cd17e0d4d50b9bbb8fc3617333fd77303a6a33","tests/test_convert.rs":"7e7a8b4772a427a911014ac4d1083f9519000e786177f898808980dd9bdfde61","tests/test_downcast.rs":"797e69a72d125758c4c4897e5dc776d549d52cc9a6a633e0a33193f588a62b88","tests/test_ensure.rs":"bd793da08a4d01b8211646d82bec73468e54f6caf5f520617519a12cbb6659b9","tests/test_ffi.rs":"d0cb4c1d6d9154090982dee72ae3ebe05a5981f976058c3250f1c9da5a45edef","tests/test_fmt.rs":"17572596f257aac9aa2ec4620e292ca6a954128b94772bb948399fab53832e70","tests/test_macros.rs":"11f05010bc9b16319884c1286444100e30cddc2ecd1ffe5e0fd3fee5ffb32683","tests/test_repr.rs":"dbb9b04ddbe1ab31eb5331ea69f05bb3a147299da2275a3d4dcc92947b5591b9","tests/test_source.rs":"b80723cf635a4f8c4df21891b34bfab9ed2b2aa407e7a2f826d24e334cd5f88e","tests/ui/chained-comparison.rs":"6504b03d95b5acc232a7f4defc9f343b2be6733bf475fa0992e8e6545b912bd4","tests/ui/chained-comparison.stderr":"7f1d0a8c251b0ede2d30b3087ec157fc660945c97a642c4a5acf5a14ec58de34","tests/ui/empty-ensure.rs":"ab5bf37c846a0d689f26ce9257a27228411ed64154f9c950f1602d88a355d94b","tests/ui/empty-ensure.stderr":"345102cbef47310f2f4066a669199873a627ca4f1fcb885505c6e17d1fc95e88","tests/ui/must-use.rs":"fb59860b43f673bf4a430a6036ba463e95028844d8dd4243cfe5ebc7f2be582f","tests/ui/must-use.stderr":"4dc15f52c3a186251c948b6a2955b777ed3c88e5da94b887f8ff945b3ecd8cee","tests/ui/no-impl.rs":"fab6cbf2f6ea510b86f567dfb3b7c31250a9fd71ae5d110dbb9188be569ec593","tests/ui/no-impl.stderr":"39d3234c0cbb6213a422485cd1bf64b0877d2b2ea3e168b099bc8a6c1e0d33df","tests/ui/temporary-value.rs":"4dcc96271b2403e6372cf4cfc813445e5ce4365fc6e156b6bc38274098499a70","tests/ui/temporary-value.stderr":"64e448b6759cf51d41b1360307a638452bbe53ffa706f93e4a503b712d7b89a8","tests/ui/wrong-interpolation.rs":"9c44d4674c2dccd27b9dedd03341346ec02d993b41793ee89b5755202e7e367e","tests/ui/wrong-interpolation.stderr":"301e60e2eb9401782c7dc0b3580613a4cb2aafd4cc8065734a630a62e1161aa5"},"package":"c794e162a5eff65c72ef524dfe393eb923c354e350bb78b9c7383df13f3bc142"} \ No newline at end of file
+{"files":{"Cargo.toml":"5779c6bea2555cdabd4560de187ac5e3c88ff2df8172077397643edc51c6fcc3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"4bd4d352368ac0f5447031d82454490f6ac0c80d2fa4cb64ba0c23c614670d49","build.rs":"88bf7100143c79c0af683da7f28deaac031c9b9b213a6426560dc089b0ba45aa","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/backtrace.rs":"5b4103a7d24d6f438a64b8cc0fafe28d55fc0ca090368174ce44d64e3940badd","src/chain.rs":"6edefc5f3c7d69683095862e54e3bb56faba5b3387bf2eeaed429da090007a0a","src/context.rs":"0bb1566aae147d393796dd6ede6ba329916e0a373b7cbc38335c3eeeb3d48b57","src/ensure.rs":"498bc9c7fb8b93168ed12f532cb97df6ccdda9ce25371586d7f5b1b1c98a14bf","src/error.rs":"e45d4dcfe64b1823b42fbf9bb260e6437987e8c2d51f92434db9d808b36e700a","src/fmt.rs":"c2d4aad6ce20625a70a7c091e3087b6a2c19a4a87c7a12edb4c98978307245ea","src/kind.rs":"332854c5eb07d44447c356a2e7dc585634b0da1ffbbfa81269c369deaefbc247","src/lib.rs":"82011e86fb9b41fe10ab2fde2b797b4858e697e7ead3a5f0d30b018357f1721d","src/macros.rs":"dd35f2ec2a0a25e4504fb04bcd42f6d0963bc0035aaaefc412f5ee1d78945fe1","src/ptr.rs":"f4e28bc9feba1e84160ca9d185008a51b5d72e168e6546f3e942f4258c361e19","src/wrapper.rs":"ff3ad72065a30cc32e9acb0614a30703c49c57b941a335c348b6439af684316b","tests/common/mod.rs":"f9088c2d7afafa64ff730b629272045b776bfafc2f5957508242da630635f2e1","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/drop/mod.rs":"08c3e553c1cc0d2dbd936fc45f4b5b1105057186affd6865e8d261e05f0f0646","tests/test_autotrait.rs":"981e792db353be2f14c7a1cabe43b5f1329c168cb7679077cc2be786a0920d48","tests/test_backtrace.rs":"0e50edbb33b6bd07ba89ff3db72fb7c688ba2a4371fccdbbb20309ab02948b6a","tests/test_boxed.rs":"6b26db0e2eb72afe9af7352ea820837aab90f8d486294616dd5dc34c1b94038c","tests/test_chain.rs":"d5e90e3eba58abc60d241d3aade39e0b8d4006d9a14f3cf015d3d925160b5812","tests/test_context.rs":"8409c53b328562c11e822bd6c3cd17e0d4d50b9bbb8fc3617333fd77303a6a33","tests/test_convert.rs":"7e7a8b4772a427a911014ac4d1083f9519000e786177f898808980dd9bdfde61","tests/test_downcast.rs":"797e69a72d125758c4c4897e5dc776d549d52cc9a6a633e0a33193f588a62b88","tests/test_ensure.rs":"c8137a9565685aedf02b365008b27c707f4c3d81cd2b986b3b7105b426c723b1","tests/test_ffi.rs":"d0cb4c1d6d9154090982dee72ae3ebe05a5981f976058c3250f1c9da5a45edef","tests/test_fmt.rs":"17572596f257aac9aa2ec4620e292ca6a954128b94772bb948399fab53832e70","tests/test_macros.rs":"11f05010bc9b16319884c1286444100e30cddc2ecd1ffe5e0fd3fee5ffb32683","tests/test_repr.rs":"dbb9b04ddbe1ab31eb5331ea69f05bb3a147299da2275a3d4dcc92947b5591b9","tests/test_source.rs":"b80723cf635a4f8c4df21891b34bfab9ed2b2aa407e7a2f826d24e334cd5f88e","tests/ui/chained-comparison.rs":"6504b03d95b5acc232a7f4defc9f343b2be6733bf475fa0992e8e6545b912bd4","tests/ui/chained-comparison.stderr":"7f1d0a8c251b0ede2d30b3087ec157fc660945c97a642c4a5acf5a14ec58de34","tests/ui/empty-ensure.rs":"ab5bf37c846a0d689f26ce9257a27228411ed64154f9c950f1602d88a355d94b","tests/ui/empty-ensure.stderr":"345102cbef47310f2f4066a669199873a627ca4f1fcb885505c6e17d1fc95e88","tests/ui/must-use.rs":"fb59860b43f673bf4a430a6036ba463e95028844d8dd4243cfe5ebc7f2be582f","tests/ui/must-use.stderr":"c2848c5f254b4c061eea6714d9baf709924aba06619eaf2a8b3aee1266b75f9e","tests/ui/no-impl.rs":"fab6cbf2f6ea510b86f567dfb3b7c31250a9fd71ae5d110dbb9188be569ec593","tests/ui/no-impl.stderr":"9d36a96220f0b5a81db027bcba411a61a72cc2e370c38058ab556442e8bb8a8b","tests/ui/temporary-value.rs":"4dcc96271b2403e6372cf4cfc813445e5ce4365fc6e156b6bc38274098499a70","tests/ui/temporary-value.stderr":"64e448b6759cf51d41b1360307a638452bbe53ffa706f93e4a503b712d7b89a8","tests/ui/wrong-interpolation.rs":"9c44d4674c2dccd27b9dedd03341346ec02d993b41793ee89b5755202e7e367e","tests/ui/wrong-interpolation.stderr":"301e60e2eb9401782c7dc0b3580613a4cb2aafd4cc8065734a630a62e1161aa5"},"package":"98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602"} \ No newline at end of file
diff --git a/vendor/anyhow/Cargo.toml b/vendor/anyhow/Cargo.toml
index 6537f7b5f..844c2bd3a 100644
--- a/vendor/anyhow/Cargo.toml
+++ b/vendor/anyhow/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.38"
name = "anyhow"
-version = "1.0.60"
+version = "1.0.65"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "Flexible concrete Error type built on std::error::Error"
documentation = "https://docs.rs/anyhow"
diff --git a/vendor/anyhow/build.rs b/vendor/anyhow/build.rs
index c470ba11b..38006832e 100644
--- a/vendor/anyhow/build.rs
+++ b/vendor/anyhow/build.rs
@@ -15,15 +15,17 @@ compile_error! {
// type. If the current toolchain is able to compile it, we go ahead and use
// backtrace in anyhow.
const PROBE: &str = r#"
- #![feature(backtrace)]
- #![allow(dead_code)]
+ #![feature(error_generic_member_access, provide_any)]
+ use std::any::{Demand, Provider};
use std::backtrace::{Backtrace, BacktraceStatus};
use std::error::Error;
use std::fmt::{self, Display};
#[derive(Debug)]
- struct E;
+ struct E {
+ backtrace: Backtrace,
+ }
impl Display for E {
fn fmt(&self, _formatter: &mut fmt::Formatter) -> fmt::Result {
@@ -32,14 +34,26 @@ const PROBE: &str = r#"
}
impl Error for E {
- fn backtrace(&self) -> Option<&Backtrace> {
- let backtrace = Backtrace::capture();
- match backtrace.status() {
- BacktraceStatus::Captured | BacktraceStatus::Disabled | _ => {}
- }
- unimplemented!()
+ fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
+ demand.provide_ref(&self.backtrace);
}
}
+
+ struct P;
+
+ impl Provider for P {
+ fn provide<'a>(&'a self, _demand: &mut Demand<'a>) {}
+ }
+
+ const _: fn() = || {
+ let backtrace: Backtrace = Backtrace::capture();
+ let status: BacktraceStatus = backtrace.status();
+ match status {
+ BacktraceStatus::Captured | BacktraceStatus::Disabled | _ => {}
+ }
+ };
+
+ const _: fn(&dyn Error) -> Option<&Backtrace> = |err| err.request_ref::<Backtrace>();
"#;
fn main() {
diff --git a/vendor/anyhow/src/backtrace.rs b/vendor/anyhow/src/backtrace.rs
index e4c907641..23c0c85ce 100644
--- a/vendor/anyhow/src/backtrace.rs
+++ b/vendor/anyhow/src/backtrace.rs
@@ -38,7 +38,7 @@ macro_rules! backtrace {
#[cfg(backtrace)]
macro_rules! backtrace_if_absent {
($err:expr) => {
- match $err.backtrace() {
+ match ($err as &dyn std::error::Error).request_ref::<std::backtrace::Backtrace>() {
Some(_) => None,
None => backtrace!(),
}
diff --git a/vendor/anyhow/src/context.rs b/vendor/anyhow/src/context.rs
index c2284130f..1b7dd31ac 100644
--- a/vendor/anyhow/src/context.rs
+++ b/vendor/anyhow/src/context.rs
@@ -4,7 +4,7 @@ use core::convert::Infallible;
use core::fmt::{self, Debug, Display, Write};
#[cfg(backtrace)]
-use std::backtrace::Backtrace;
+use std::any::Demand;
mod ext {
use super::*;
@@ -24,7 +24,7 @@ mod ext {
where
C: Display + Send + Sync + 'static,
{
- let backtrace = backtrace_if_absent!(self);
+ let backtrace = backtrace_if_absent!(&self);
Error::from_context(context, self, backtrace)
}
}
@@ -123,28 +123,29 @@ where
C: Display,
E: StdError + 'static,
{
- #[cfg(backtrace)]
- fn backtrace(&self) -> Option<&Backtrace> {
- self.error.backtrace()
- }
-
fn source(&self) -> Option<&(dyn StdError + 'static)> {
Some(&self.error)
}
+
+ #[cfg(backtrace)]
+ fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
+ self.error.provide(demand);
+ }
}
impl<C> StdError for ContextError<C, Error>
where
C: Display,
{
- #[cfg(backtrace)]
- fn backtrace(&self) -> Option<&Backtrace> {
- Some(self.error.backtrace())
- }
-
fn source(&self) -> Option<&(dyn StdError + 'static)> {
Some(unsafe { crate::ErrorImpl::error(self.error.inner.by_ref()) })
}
+
+ #[cfg(backtrace)]
+ fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
+ demand.provide_ref(self.error.backtrace());
+ self.error.provide(demand);
+ }
}
struct Quoted<C>(C);
diff --git a/vendor/anyhow/src/ensure.rs b/vendor/anyhow/src/ensure.rs
index 80bdab704..0ab447123 100644
--- a/vendor/anyhow/src/ensure.rs
+++ b/vendor/anyhow/src/ensure.rs
@@ -788,15 +788,15 @@ macro_rules! __fancy_ensure {
(lhs, rhs) => {
if !(lhs $op rhs) {
#[allow(unused_imports)]
- use $crate::private::{BothDebug, NotBothDebug};
+ use $crate::__private::{BothDebug, NotBothDebug};
return Err((lhs, rhs).__dispatch_ensure(
- $crate::private::concat!(
+ $crate::__private::concat!(
"Condition failed: `",
- $crate::private::stringify!($lhs),
+ $crate::__private::stringify!($lhs),
" ",
- $crate::private::stringify!($op),
+ $crate::__private::stringify!($op),
" ",
- $crate::private::stringify!($rhs),
+ $crate::__private::stringify!($rhs),
"`",
),
));
@@ -811,24 +811,24 @@ macro_rules! __fancy_ensure {
macro_rules! __fallback_ensure {
($cond:expr $(,)?) => {
if !$cond {
- return $crate::private::Err($crate::Error::msg(
- $crate::private::concat!("Condition failed: `", $crate::private::stringify!($cond), "`")
+ return $crate::__private::Err($crate::Error::msg(
+ $crate::__private::concat!("Condition failed: `", $crate::__private::stringify!($cond), "`")
));
}
};
($cond:expr, $msg:literal $(,)?) => {
if !$cond {
- return $crate::private::Err($crate::__anyhow!($msg));
+ return $crate::__private::Err($crate::__anyhow!($msg));
}
};
($cond:expr, $err:expr $(,)?) => {
if !$cond {
- return $crate::private::Err($crate::__anyhow!($err));
+ return $crate::__private::Err($crate::__anyhow!($err));
}
};
($cond:expr, $fmt:expr, $($arg:tt)*) => {
if !$cond {
- return $crate::private::Err($crate::__anyhow!($fmt, $($arg)*));
+ return $crate::__private::Err($crate::__anyhow!($fmt, $($arg)*));
}
};
}
diff --git a/vendor/anyhow/src/error.rs b/vendor/anyhow/src/error.rs
index 0971146c9..9f6ce8c10 100644
--- a/vendor/anyhow/src/error.rs
+++ b/vendor/anyhow/src/error.rs
@@ -5,6 +5,8 @@ use crate::ptr::Mut;
use crate::ptr::{Own, Ref};
use crate::{Error, StdError};
use alloc::boxed::Box;
+#[cfg(backtrace)]
+use core::any::Demand;
use core::any::TypeId;
use core::fmt::{self, Debug, Display};
use core::mem::ManuallyDrop;
@@ -31,7 +33,7 @@ impl Error {
where
E: StdError + Send + Sync + 'static,
{
- let backtrace = backtrace_if_absent!(error);
+ let backtrace = backtrace_if_absent!(&error);
Error::from_std(error, backtrace)
}
@@ -522,6 +524,18 @@ impl Error {
}
}
+#[cfg(backtrace)]
+impl std::any::Provider for Error {
+ // Called by thiserror when you have `#[source] anyhow::Error`. This provide
+ // implementation includes the anyhow::Error's Backtrace if any, unlike
+ // deref'ing to dyn Error where the provide implementation would include
+ // only the original error's Backtrace from before it got wrapped into an
+ // anyhow::Error.
+ fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
+ unsafe { ErrorImpl::provide(self.inner.by_ref(), demand) }
+ }
+}
+
#[cfg(feature = "std")]
#[cfg_attr(doc_cfg, doc(cfg(feature = "std")))]
impl<E> From<E> for Error
@@ -530,7 +544,7 @@ where
{
#[cold]
fn from(error: E) -> Self {
- let backtrace = backtrace_if_absent!(error);
+ let backtrace = backtrace_if_absent!(&error);
Error::from_std(error, backtrace)
}
}
@@ -886,13 +900,21 @@ impl ErrorImpl {
.as_ref()
.or_else(|| {
#[cfg(backtrace)]
- return Self::error(this).backtrace();
- #[cfg(all(not(backtrace), feature = "backtrace"))]
+ return Self::error(this).request_ref::<Backtrace>();
+ #[cfg(not(backtrace))]
return (vtable(this.ptr).object_backtrace)(this);
})
.expect("backtrace capture failed")
}
+ #[cfg(backtrace)]
+ unsafe fn provide<'a>(this: Ref<'a, Self>, demand: &mut Demand<'a>) {
+ if let Some(backtrace) = &this.deref().backtrace {
+ demand.provide_ref(backtrace);
+ }
+ Self::error(this).provide(demand);
+ }
+
#[cold]
pub(crate) unsafe fn chain(this: Ref<Self>) -> Chain {
Chain::new(Self::error(this))
@@ -903,14 +925,14 @@ impl<E> StdError for ErrorImpl<E>
where
E: StdError,
{
- #[cfg(backtrace)]
- fn backtrace(&self) -> Option<&Backtrace> {
- Some(unsafe { ErrorImpl::backtrace(self.erase()) })
- }
-
fn source(&self) -> Option<&(dyn StdError + 'static)> {
unsafe { ErrorImpl::error(self.erase()).source() }
}
+
+ #[cfg(backtrace)]
+ fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
+ unsafe { ErrorImpl::provide(self.erase(), demand) }
+ }
}
impl<E> Debug for ErrorImpl<E>
diff --git a/vendor/anyhow/src/kind.rs b/vendor/anyhow/src/kind.rs
index 59857057d..f47fe44ba 100644
--- a/vendor/anyhow/src/kind.rs
+++ b/vendor/anyhow/src/kind.rs
@@ -40,7 +40,7 @@
// The anyhow! macro will set up the call in this form:
//
// #[allow(unused_imports)]
-// use $crate::private::{AdhocKind, TraitKind};
+// use $crate::__private::{AdhocKind, TraitKind};
// let error = $msg;
// (&error).anyhow_kind().new(error)
@@ -110,7 +110,7 @@ impl BoxedKind for Box<dyn StdError + Send + Sync> {}
impl Boxed {
#[cold]
pub fn new(self, error: Box<dyn StdError + Send + Sync>) -> Error {
- let backtrace = backtrace_if_absent!(error);
+ let backtrace = backtrace_if_absent!(&*error);
Error::from_boxed(error, backtrace)
}
}
diff --git a/vendor/anyhow/src/lib.rs b/vendor/anyhow/src/lib.rs
index 976668aab..792a4d007 100644
--- a/vendor/anyhow/src/lib.rs
+++ b/vendor/anyhow/src/lib.rs
@@ -210,8 +210,8 @@
//! will require an explicit `.map_err(Error::msg)` when working with a
//! non-Anyhow error type inside a function that returns Anyhow's error type.
-#![doc(html_root_url = "https://docs.rs/anyhow/1.0.60")]
-#![cfg_attr(backtrace, feature(backtrace))]
+#![doc(html_root_url = "https://docs.rs/anyhow/1.0.65")]
+#![cfg_attr(backtrace, feature(error_generic_member_access, provide_any))]
#![cfg_attr(doc_cfg, feature(doc_cfg))]
#![cfg_attr(not(feature = "std"), no_std)]
#![deny(dead_code, unused_imports, unused_mut)]
@@ -634,7 +634,7 @@ pub fn Ok<T>(t: T) -> Result<T> {
// Not public API. Referenced by macro-generated code.
#[doc(hidden)]
-pub mod private {
+pub mod __private {
use crate::Error;
use alloc::fmt;
use core::fmt::Arguments;
diff --git a/vendor/anyhow/src/macros.rs b/vendor/anyhow/src/macros.rs
index 5dc138386..6dd22743b 100644
--- a/vendor/anyhow/src/macros.rs
+++ b/vendor/anyhow/src/macros.rs
@@ -55,13 +55,13 @@
#[macro_export]
macro_rules! bail {
($msg:literal $(,)?) => {
- return $crate::private::Err($crate::__anyhow!($msg))
+ return $crate::__private::Err($crate::__anyhow!($msg))
};
($err:expr $(,)?) => {
- return $crate::private::Err($crate::__anyhow!($err))
+ return $crate::__private::Err($crate::__anyhow!($err))
};
($fmt:expr, $($arg:tt)*) => {
- return $crate::private::Err($crate::__anyhow!($fmt, $($arg)*))
+ return $crate::__private::Err($crate::__anyhow!($fmt, $($arg)*))
};
}
@@ -120,24 +120,24 @@ macro_rules! bail {
macro_rules! ensure {
($cond:expr $(,)?) => {
if !$cond {
- return $crate::private::Err($crate::Error::msg(
- $crate::private::concat!("Condition failed: `", $crate::private::stringify!($cond), "`")
+ return $crate::__private::Err($crate::Error::msg(
+ $crate::__private::concat!("Condition failed: `", $crate::__private::stringify!($cond), "`")
));
}
};
($cond:expr, $msg:literal $(,)?) => {
if !$cond {
- return $crate::private::Err($crate::__anyhow!($msg));
+ return $crate::__private::Err($crate::__anyhow!($msg));
}
};
($cond:expr, $err:expr $(,)?) => {
if !$cond {
- return $crate::private::Err($crate::__anyhow!($err));
+ return $crate::__private::Err($crate::__anyhow!($err));
}
};
($cond:expr, $fmt:expr, $($arg:tt)*) => {
if !$cond {
- return $crate::private::Err($crate::__anyhow!($fmt, $($arg)*));
+ return $crate::__private::Err($crate::__anyhow!($fmt, $($arg)*));
}
};
}
@@ -189,14 +189,14 @@ macro_rules! ensure {
#[macro_export]
macro_rules! anyhow {
($msg:literal $(,)?) => {
- $crate::private::must_use({
- let error = $crate::private::format_err($crate::private::format_args!($msg));
+ $crate::__private::must_use({
+ let error = $crate::__private::format_err($crate::__private::format_args!($msg));
error
})
};
($err:expr $(,)?) => {
- $crate::private::must_use({
- use $crate::private::kind::*;
+ $crate::__private::must_use({
+ use $crate::__private::kind::*;
let error = match $err {
error => (&error).anyhow_kind().new(error),
};
@@ -204,7 +204,7 @@ macro_rules! anyhow {
})
};
($fmt:expr, $($arg:tt)*) => {
- $crate::Error::msg($crate::private::format!($fmt, $($arg)*))
+ $crate::Error::msg($crate::__private::format!($fmt, $($arg)*))
};
}
@@ -215,17 +215,17 @@ macro_rules! anyhow {
#[macro_export]
macro_rules! __anyhow {
($msg:literal $(,)?) => ({
- let error = $crate::private::format_err($crate::private::format_args!($msg));
+ let error = $crate::__private::format_err($crate::__private::format_args!($msg));
error
});
($err:expr $(,)?) => ({
- use $crate::private::kind::*;
+ use $crate::__private::kind::*;
let error = match $err {
error => (&error).anyhow_kind().new(error),
};
error
});
($fmt:expr, $($arg:tt)*) => {
- $crate::Error::msg($crate::private::format!($fmt, $($arg)*))
+ $crate::Error::msg($crate::__private::format!($fmt, $($arg)*))
};
}
diff --git a/vendor/anyhow/src/wrapper.rs b/vendor/anyhow/src/wrapper.rs
index 3ebe51a88..5f18a5031 100644
--- a/vendor/anyhow/src/wrapper.rs
+++ b/vendor/anyhow/src/wrapper.rs
@@ -1,6 +1,9 @@
use crate::StdError;
use core::fmt::{self, Debug, Display};
+#[cfg(backtrace)]
+use std::any::Demand;
+
#[repr(transparent)]
pub struct MessageError<M>(pub M);
@@ -67,12 +70,12 @@ impl Display for BoxedError {
#[cfg(feature = "std")]
impl StdError for BoxedError {
- #[cfg(backtrace)]
- fn backtrace(&self) -> Option<&crate::backtrace::Backtrace> {
- self.0.backtrace()
- }
-
fn source(&self) -> Option<&(dyn StdError + 'static)> {
self.0.source()
}
+
+ #[cfg(backtrace)]
+ fn provide<'a>(&'a self, demand: &mut Demand<'a>) {
+ self.0.provide(demand);
+ }
}
diff --git a/vendor/anyhow/tests/test_ensure.rs b/vendor/anyhow/tests/test_ensure.rs
index 4bb12f9fa..cbcba5798 100644
--- a/vendor/anyhow/tests/test_ensure.rs
+++ b/vendor/anyhow/tests/test_ensure.rs
@@ -5,9 +5,9 @@
clippy::items_after_statements,
clippy::let_and_return,
clippy::let_underscore_drop,
- clippy::logic_bug,
clippy::match_bool,
clippy::never_loop,
+ clippy::overly_complex_bool_expr,
clippy::redundant_closure_call,
clippy::redundant_pattern_matching,
clippy::too_many_lines,
diff --git a/vendor/anyhow/tests/ui/must-use.stderr b/vendor/anyhow/tests/ui/must-use.stderr
index e9ee24b09..e10bde40f 100644
--- a/vendor/anyhow/tests/ui/must-use.stderr
+++ b/vendor/anyhow/tests/ui/must-use.stderr
@@ -1,4 +1,4 @@
-error: unused return value of `anyhow::private::must_use` that must be used
+error: unused return value of `anyhow::__private::must_use` that must be used
--> tests/ui/must-use.rs:8:9
|
8 | anyhow!("it failed");
diff --git a/vendor/anyhow/tests/ui/no-impl.stderr b/vendor/anyhow/tests/ui/no-impl.stderr
index 7c5ec503f..074dafe62 100644
--- a/vendor/anyhow/tests/ui/no-impl.stderr
+++ b/vendor/anyhow/tests/ui/no-impl.stderr
@@ -19,13 +19,13 @@ error[E0599]: the method `anyhow_kind` exists for reference `&Error`, but its tr
`&Error: Into<anyhow::Error>`
which is required by `&Error: anyhow::kind::TraitKind`
note: the following traits must be implemented
- --> $RUST/core/src/convert/mod.rs
- |
- | pub trait Into<T>: Sized {
- | ^^^^^^^^^^^^^^^^^^^^^^^^
- |
- ::: $RUST/core/src/fmt/mod.rs
+ --> $RUST/core/src/fmt/mod.rs
|
| pub trait Display {
| ^^^^^^^^^^^^^^^^^
+ |
+ ::: $RUST/core/src/convert/mod.rs
+ |
+ | pub trait Into<T>: Sized {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
= note: this error originates in the macro `anyhow` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/block-buffer-0.7.3/.cargo-checksum.json b/vendor/block-buffer-0.7.3/.cargo-checksum.json
deleted file mode 100644
index 779d602b1..000000000
--- a/vendor/block-buffer-0.7.3/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"e4e9e182794c2185438af0c505714df9e051d1d1b17aec7a42265be672b1d027","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"d5c22aa3118d240e877ad41c5d9fa232f9c77d757d4aac0c2f943afc0a95e0ef","src/lib.rs":"59dd4084e456153bee968153ee45e34c8e853abfb756a53571c5844ccaf18c23"},"package":"c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"} \ No newline at end of file
diff --git a/vendor/block-buffer-0.7.3/Cargo.toml b/vendor/block-buffer-0.7.3/Cargo.toml
deleted file mode 100644
index 6b10954cb..000000000
--- a/vendor/block-buffer-0.7.3/Cargo.toml
+++ /dev/null
@@ -1,36 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-name = "block-buffer"
-version = "0.7.3"
-authors = ["RustCrypto Developers"]
-description = "Fixed size buffer for block processing of data"
-documentation = "https://docs.rs/block-buffer"
-keywords = ["block", "buffer"]
-categories = ["cryptography", "no-std"]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/RustCrypto/utils"
-[dependencies.block-padding]
-version = "0.1"
-
-[dependencies.byte-tools]
-version = "0.3"
-
-[dependencies.byteorder]
-version = "1.1"
-default-features = false
-
-[dependencies.generic-array]
-version = "0.12"
-[badges.travis-ci]
-repository = "RustCrypto/utils"
diff --git a/vendor/block-buffer-0.7.3/LICENSE-MIT b/vendor/block-buffer-0.7.3/LICENSE-MIT
deleted file mode 100644
index 502cee6e8..000000000
--- a/vendor/block-buffer-0.7.3/LICENSE-MIT
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) 2018-2019 The RustCrypto Project Developers
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/vendor/block-buffer-0.7.3/src/lib.rs b/vendor/block-buffer-0.7.3/src/lib.rs
deleted file mode 100644
index d3b691655..000000000
--- a/vendor/block-buffer-0.7.3/src/lib.rs
+++ /dev/null
@@ -1,210 +0,0 @@
-#![no_std]
-pub extern crate byteorder;
-pub extern crate block_padding;
-pub extern crate generic_array;
-extern crate byte_tools;
-
-use byteorder::{ByteOrder, BE};
-use byte_tools::zero;
-use block_padding::{Padding, PadError};
-use generic_array::{GenericArray, ArrayLength};
-use core::slice;
-
-/// Buffer for block processing of data
-#[derive(Clone, Default)]
-pub struct BlockBuffer<BlockSize: ArrayLength<u8>> {
- buffer: GenericArray<u8, BlockSize>,
- pos: usize,
-}
-
-#[inline(always)]
-unsafe fn cast<N: ArrayLength<u8>>(block: &[u8]) -> &GenericArray<u8, N> {
- debug_assert_eq!(block.len(), N::to_usize());
- &*(block.as_ptr() as *const GenericArray<u8, N>)
-}
-
-
-
-impl<BlockSize: ArrayLength<u8>> BlockBuffer<BlockSize> {
- /// Process data in `input` in blocks of size `BlockSize` using function `f`.
- #[inline]
- pub fn input<F>(&mut self, mut input: &[u8], mut f: F)
- where F: FnMut(&GenericArray<u8, BlockSize>)
- {
- // If there is already data in the buffer, process it if we have
- // enough to complete the chunk.
- let rem = self.remaining();
- if self.pos != 0 && input.len() >= rem {
- let (l, r) = input.split_at(rem);
- input = r;
- self.buffer[self.pos..].copy_from_slice(l);
- self.pos = 0;
- f(&self.buffer);
- }
-
- // While we have at least a full buffer size chunks's worth of data,
- // process that data without copying it into the buffer
- while input.len() >= self.size() {
- let (block, r) = input.split_at(self.size());
- input = r;
- f(unsafe { cast(block) });
- }
-
- // Copy any remaining data into the buffer.
- self.buffer[self.pos..self.pos+input.len()].copy_from_slice(input);
- self.pos += input.len();
- }
-
- /*
- /// Process data in `input` in blocks of size `BlockSize` using function `f`, which accepts
- /// slice of blocks.
- #[inline]
- pub fn input2<F>(&mut self, mut input: &[u8], mut f: F)
- where F: FnMut(&[GenericArray<u8, BlockSize>])
- {
- // If there is already data in the buffer, process it if we have
- // enough to complete the chunk.
- let rem = self.remaining();
- if self.pos != 0 && input.len() >= rem {
- let (l, r) = input.split_at(rem);
- input = r;
- self.buffer[self.pos..].copy_from_slice(l);
- self.pos = 0;
- f(slice::from_ref(&self.buffer));
- }
-
- // While we have at least a full buffer size chunks's worth of data,
- // process it data without copying into the buffer
- let n_blocks = input.len()/self.size();
- let (left, right) = input.split_at(n_blocks*self.size());
- // safe because we guarantee that `blocks` does not point outside of `input`
- let blocks = unsafe {
- slice::from_raw_parts(
- left.as_ptr() as *const GenericArray<u8, BlockSize>,
- n_blocks,
- )
- };
- f(blocks);
-
- // Copy remaining data into the buffer.
- self.buffer[self.pos..self.pos+right.len()].copy_from_slice(right);
- self.pos += right.len();
- }
- */
-
- /// Variant that doesn't flush the buffer until there's additional
- /// data to be processed. Suitable for tweakable block ciphers
- /// like Threefish that need to know whether a block is the *last*
- /// data block before processing it.
- #[inline]
- pub fn input_lazy<F>(&mut self, mut input: &[u8], mut f: F)
- where F: FnMut(&GenericArray<u8, BlockSize>)
- {
- let rem = self.remaining();
- if self.pos != 0 && input.len() > rem {
- let (l, r) = input.split_at(rem);
- input = r;
- self.buffer[self.pos..].copy_from_slice(l);
- self.pos = 0;
- f(&self.buffer);
- }
-
- while input.len() > self.size() {
- let (block, r) = input.split_at(self.size());
- input = r;
- f(unsafe { cast(block) });
- }
-
- self.buffer[self.pos..self.pos+input.len()].copy_from_slice(input);
- self.pos += input.len();
- }
-
- /// Pad buffer with `prefix` and make sure that internall buffer
- /// has at least `up_to` free bytes. All remaining bytes get
- /// zeroed-out.
- #[inline]
- fn digest_pad<F>(&mut self, up_to: usize, f: &mut F)
- where F: FnMut(&GenericArray<u8, BlockSize>)
- {
- if self.pos == self.size() {
- f(&self.buffer);
- self.pos = 0;
- }
- self.buffer[self.pos] = 0x80;
- self.pos += 1;
-
- zero(&mut self.buffer[self.pos..]);
-
- if self.remaining() < up_to {
- f(&self.buffer);
- zero(&mut self.buffer[..self.pos]);
- }
- }
-
- /// Pad message with 0x80, zeros and 64-bit message length
- /// in a byte order specified by `B`
- #[inline]
- pub fn len64_padding<B, F>(&mut self, data_len: u64, mut f: F)
- where B: ByteOrder, F: FnMut(&GenericArray<u8, BlockSize>)
- {
- // TODO: replace `F` with `impl Trait` on MSRV bump
- self.digest_pad(8, &mut f);
- let s = self.size();
- B::write_u64(&mut self.buffer[s-8..], data_len);
- f(&self.buffer);
- self.pos = 0;
- }
-
-
- /// Pad message with 0x80, zeros and 128-bit message length
- /// in the big-endian byte order
- #[inline]
- pub fn len128_padding_be<F>(&mut self, hi: u64, lo: u64, mut f: F)
- where F: FnMut(&GenericArray<u8, BlockSize>)
- {
- // TODO: on MSRV bump replace `F` with `impl Trait`, use `u128`, add `B`
- self.digest_pad(16, &mut f);
- let s = self.size();
- BE::write_u64(&mut self.buffer[s-16..s-8], hi);
- BE::write_u64(&mut self.buffer[s-8..], lo);
- f(&self.buffer);
- self.pos = 0;
- }
-
- /// Pad message with a given padding `P`
- ///
- /// Returns `PadError` if internall buffer is full, which can only happen if
- /// `input_lazy` was used.
- #[inline]
- pub fn pad_with<P: Padding>(&mut self)
- -> Result<&mut GenericArray<u8, BlockSize>, PadError>
- {
- P::pad_block(&mut self.buffer[..], self.pos)?;
- self.pos = 0;
- Ok(&mut self.buffer)
- }
-
- /// Return size of the internall buffer in bytes
- #[inline]
- pub fn size(&self) -> usize {
- BlockSize::to_usize()
- }
-
- /// Return current cursor position
- #[inline]
- pub fn position(&self) -> usize {
- self.pos
- }
-
- /// Return number of remaining bytes in the internall buffer
- #[inline]
- pub fn remaining(&self) -> usize {
- self.size() - self.pos
- }
-
- /// Reset buffer by setting cursor position to zero
- #[inline]
- pub fn reset(&mut self) {
- self.pos = 0
- }
-}
diff --git a/vendor/block-padding/.cargo-checksum.json b/vendor/block-padding/.cargo-checksum.json
deleted file mode 100644
index e80396463..000000000
--- a/vendor/block-padding/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"f895c4794f1c00f5f01376dae2b66870d939a01b9a366ee4d177b6b7ad99bd4a","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"d5c22aa3118d240e877ad41c5d9fa232f9c77d757d4aac0c2f943afc0a95e0ef","src/lib.rs":"962c90d43c7c2761b3c96fab2713ae357a7a8d2d048e37ce4f3354941ad41b97"},"package":"fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"} \ No newline at end of file
diff --git a/vendor/block-padding/Cargo.toml b/vendor/block-padding/Cargo.toml
deleted file mode 100644
index 1b1c849a8..000000000
--- a/vendor/block-padding/Cargo.toml
+++ /dev/null
@@ -1,26 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-name = "block-padding"
-version = "0.1.5"
-authors = ["RustCrypto Developers"]
-description = "Padding and unpadding of messages divided into blocks."
-documentation = "https://docs.rs/block-padding"
-keywords = ["padding", "pkcs7", "ansix923", "iso7816"]
-categories = ["cryptography", "no-std"]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/RustCrypto/utils"
-[dependencies.byte-tools]
-version = "0.3"
-[badges.travis-ci]
-repository = "RustCrypto/utils"
diff --git a/vendor/block-padding/LICENSE-APACHE b/vendor/block-padding/LICENSE-APACHE
deleted file mode 100644
index 78173fa2e..000000000
--- a/vendor/block-padding/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/vendor/block-padding/src/lib.rs b/vendor/block-padding/src/lib.rs
deleted file mode 100644
index 5c4c8c3b6..000000000
--- a/vendor/block-padding/src/lib.rs
+++ /dev/null
@@ -1,323 +0,0 @@
-//! Padding and unpadding of messages divided into blocks.
-//!
-//! This crate provides `Padding` trait which provides padding and unpadding
-//! operations. Additionally several common padding schemes are available out
-//! of the box.
-#![no_std]
-#![doc(html_logo_url =
- "https://raw.githubusercontent.com/RustCrypto/meta/master/logo_small.png")]
-extern crate byte_tools;
-
-use byte_tools::{zero, set};
-
-/// Error for indicating failed padding operation
-#[derive(Clone, Copy, Debug)]
-pub struct PadError;
-
-/// Error for indicating failed unpadding operation
-#[derive(Clone, Copy, Debug)]
-pub struct UnpadError;
-
-/// Trait for padding messages divided into blocks
-pub trait Padding {
- /// Pads `block` filled with data up to `pos`.
- ///
- /// `pos` should be inside of the block and block must not be full, i.e.
- /// `pos < block.len()` must be true. Otherwise method will return
- /// `PadError`. Some potentially irreversible padding schemes can allow
- /// padding of the full block, in this case aforementioned condition is
- /// relaxed to `pos <= block.len()`.
- fn pad_block(block: &mut [u8], pos: usize) -> Result<(), PadError>;
-
- /// Pads message with length `pos` in the provided buffer.
- ///
- /// `&buf[..pos]` is perceived as the message, the buffer must contain
- /// enough leftover space for padding: `block_size - (pos % block_size)`
- /// extra bytes must be available. Otherwise method will return
- /// `PadError`.
- fn pad(buf: &mut [u8], pos: usize, block_size: usize)
- -> Result<&mut [u8], PadError>
- {
- let bs = block_size * (pos / block_size);
- if buf.len() < bs || buf.len() - bs < block_size { Err(PadError)? }
- Self::pad_block(&mut buf[bs..bs+block_size], pos - bs)?;
- Ok(&mut buf[..bs+block_size])
- }
-
- /// Unpad given `data` by truncating it according to the used padding.
- /// In case of the malformed padding will return `UnpadError`
- fn unpad(data: &[u8]) -> Result<&[u8], UnpadError>;
-}
-
-/// Pad block with zeros.
-///
-/// ```
-/// use block_padding::{ZeroPadding, Padding};
-///
-/// let msg = b"test";
-/// let n = msg.len();
-/// let mut buffer = [0xff; 16];
-/// buffer[..n].copy_from_slice(msg);
-/// let padded_msg = ZeroPadding::pad(&mut buffer, n, 8).unwrap();
-/// assert_eq!(padded_msg, b"test\x00\x00\x00\x00");
-/// assert_eq!(ZeroPadding::unpad(&padded_msg).unwrap(), msg);
-/// ```
-/// ```
-/// # use block_padding::{ZeroPadding, Padding};
-/// # let msg = b"test";
-/// # let n = msg.len();
-/// # let mut buffer = [0xff; 16];
-/// # buffer[..n].copy_from_slice(msg);
-/// let padded_msg = ZeroPadding::pad(&mut buffer, n, 2).unwrap();
-/// assert_eq!(padded_msg, b"test");
-/// assert_eq!(ZeroPadding::unpad(&padded_msg).unwrap(), msg);
-/// ```
-///
-/// Note that zero padding may not be reversible if the original message ends
-/// with one or more zero bytes.
-pub enum ZeroPadding{}
-
-impl Padding for ZeroPadding {
- fn pad_block(block: &mut [u8], pos: usize) -> Result<(), PadError> {
- if pos > block.len() { Err(PadError)? }
- zero(&mut block[pos..]);
- Ok(())
- }
-
- fn pad(buf: &mut [u8], pos: usize, block_size: usize)
- -> Result<&mut [u8], PadError>
- {
- if pos % block_size == 0 {
- Ok(&mut buf[..pos])
- } else {
- let bs = block_size * (pos / block_size);
- let be = bs + block_size;
- if buf.len() < be { Err(PadError)? }
- Self::pad_block(&mut buf[bs..be], pos - bs)?;
- Ok(&mut buf[..be])
- }
- }
-
- fn unpad(data: &[u8]) -> Result<&[u8], UnpadError> {
- let mut n = data.len() - 1;
- while n != 0 {
- if data[n] != 0 {
- break;
- }
- n -= 1;
- }
- Ok(&data[..n+1])
- }
-}
-
-/// Pad block with bytes with value equal to the number of bytes added.
-///
-/// PKCS#7 described in the [RFC 5652](https://tools.ietf.org/html/rfc5652#section-6.3).
-///
-/// ```
-/// use block_padding::{Pkcs7, Padding};
-///
-/// let msg = b"test";
-/// let n = msg.len();
-/// let mut buffer = [0xff; 8];
-/// buffer[..n].copy_from_slice(msg);
-/// let padded_msg = Pkcs7::pad(&mut buffer, n, 8).unwrap();
-/// assert_eq!(padded_msg, b"test\x04\x04\x04\x04");
-/// assert_eq!(Pkcs7::unpad(&padded_msg).unwrap(), msg);
-/// ```
-/// ```
-/// # use block_padding::{Pkcs7, Padding};
-/// # let msg = b"test";
-/// # let n = msg.len();
-/// # let mut buffer = [0xff; 8];
-/// # buffer[..n].copy_from_slice(msg);
-/// let padded_msg = Pkcs7::pad(&mut buffer, n, 2).unwrap();
-/// assert_eq!(padded_msg, b"test\x02\x02");
-/// assert_eq!(Pkcs7::unpad(&padded_msg).unwrap(), msg);
-/// ```
-/// ```
-/// # use block_padding::{Pkcs7, Padding};
-/// let mut buffer = [0xff; 5];
-/// assert!(Pkcs7::pad(&mut buffer, 4, 2).is_err());
-/// ```
-/// ```
-/// # use block_padding::{Pkcs7, Padding};
-/// # let buffer = [0xff; 16];
-/// assert!(Pkcs7::unpad(&buffer).is_err());
-/// ```
-///
-/// In addition to conditions stated in the `Padding` trait documentation,
-/// `pad_block` will return `PadError` if `block.len() > 255`, and in case of
-/// `pad` if `block_size > 255`.
-pub enum Pkcs7{}
-
-impl Padding for Pkcs7 {
- fn pad_block(block: &mut [u8], pos: usize) -> Result<(), PadError> {
- if block.len() > 255 { Err(PadError)? }
- if pos >= block.len() { Err(PadError)? }
- let n = block.len() - pos;
- set(&mut block[pos..], n as u8);
- Ok(())
- }
-
- fn unpad(data: &[u8]) -> Result<&[u8], UnpadError> {
- if data.is_empty() { Err(UnpadError)? }
- let l = data.len();
- let n = data[l-1];
- if n == 0 || n as usize > l { Err(UnpadError)? }
- for v in &data[l-n as usize..l-1] {
- if *v != n { Err(UnpadError)? }
- }
- Ok(&data[..l - n as usize])
- }
-}
-
-/// Pad block with zeros except the last byte which will be set to the number
-/// bytes.
-///
-/// ```
-/// use block_padding::{AnsiX923, Padding};
-///
-/// let msg = b"test";
-/// let n = msg.len();
-/// let mut buffer = [0xff; 16];
-/// buffer[..n].copy_from_slice(msg);
-/// let padded_msg = AnsiX923::pad(&mut buffer, n, 8).unwrap();
-/// assert_eq!(padded_msg, b"test\x00\x00\x00\x04");
-/// assert_eq!(AnsiX923::unpad(&padded_msg).unwrap(), msg);
-/// ```
-/// ```
-/// # use block_padding::{AnsiX923, Padding};
-/// # let msg = b"test";
-/// # let n = msg.len();
-/// # let mut buffer = [0xff; 16];
-/// # buffer[..n].copy_from_slice(msg);
-/// let padded_msg = AnsiX923::pad(&mut buffer, n, 2).unwrap();
-/// assert_eq!(padded_msg, b"test\x00\x02");
-/// assert_eq!(AnsiX923::unpad(&padded_msg).unwrap(), msg);
-/// ```
-/// ```
-/// # use block_padding::{AnsiX923, Padding};
-/// # let buffer = [0xff; 16];
-/// assert!(AnsiX923::unpad(&buffer).is_err());
-/// ```
-///
-/// In addition to conditions stated in the `Padding` trait documentation,
-/// `pad_block` will return `PadError` if `block.len() > 255`, and in case of
-/// `pad` if `block_size > 255`.
-pub enum AnsiX923{}
-
-impl Padding for AnsiX923 {
- fn pad_block(block: &mut [u8], pos: usize) -> Result<(), PadError>{
- if block.len() > 255 { Err(PadError)? }
- if pos >= block.len() { Err(PadError)? }
- let bs = block.len();
- zero(&mut block[pos..bs-1]);
- block[bs-1] = (bs - pos) as u8;
- Ok(())
- }
-
- fn unpad(data: &[u8]) -> Result<&[u8], UnpadError> {
- if data.is_empty() { Err(UnpadError)? }
- let l = data.len();
- let n = data[l-1] as usize;
- if n == 0 || n > l {
- return Err(UnpadError)
- }
- for v in &data[l-n..l-1] {
- if *v != 0 { Err(UnpadError)? }
- }
- Ok(&data[..l-n])
- }
-}
-
-/// Pad block with byte sequence `\x80 00...00 00`.
-///
-/// ```
-/// use block_padding::{Iso7816, Padding};
-///
-/// let msg = b"test";
-/// let n = msg.len();
-/// let mut buffer = [0xff; 16];
-/// buffer[..n].copy_from_slice(msg);
-/// let padded_msg = Iso7816::pad(&mut buffer, n, 8).unwrap();
-/// assert_eq!(padded_msg, b"test\x80\x00\x00\x00");
-/// assert_eq!(Iso7816::unpad(&padded_msg).unwrap(), msg);
-/// ```
-/// ```
-/// # use block_padding::{Iso7816, Padding};
-/// # let msg = b"test";
-/// # let n = msg.len();
-/// # let mut buffer = [0xff; 16];
-/// # buffer[..n].copy_from_slice(msg);
-/// let padded_msg = Iso7816::pad(&mut buffer, n, 2).unwrap();
-/// assert_eq!(padded_msg, b"test\x80\x00");
-/// assert_eq!(Iso7816::unpad(&padded_msg).unwrap(), msg);
-/// ```
-pub enum Iso7816{}
-
-impl Padding for Iso7816 {
- fn pad_block(block: &mut [u8], pos: usize) -> Result<(), PadError> {
- if pos >= block.len() { Err(PadError)? }
- block[pos] = 0x80;
- zero(&mut block[pos+1..]);
- Ok(())
- }
-
- fn unpad(data: &[u8]) -> Result<&[u8], UnpadError> {
- if data.is_empty() { Err(UnpadError)? }
- let mut n = data.len() - 1;
- while n != 0 {
- if data[n] != 0 { break; }
- n -= 1;
- }
- if data[n] != 0x80 { Err(UnpadError)? }
- Ok(&data[..n])
- }
-}
-
-/// Don't pad the data. Useful for key wrapping. Padding will fail if the data cannot be
-/// fitted into blocks without padding.
-///
-/// ```
-/// use block_padding::{NoPadding, Padding};
-///
-/// let msg = b"test";
-/// let n = msg.len();
-/// let mut buffer = [0xff; 16];
-/// buffer[..n].copy_from_slice(msg);
-/// let padded_msg = NoPadding::pad(&mut buffer, n, 4).unwrap();
-/// assert_eq!(padded_msg, b"test");
-/// assert_eq!(NoPadding::unpad(&padded_msg).unwrap(), msg);
-/// ```
-/// ```
-/// # use block_padding::{NoPadding, Padding};
-/// # let msg = b"test";
-/// # let n = msg.len();
-/// # let mut buffer = [0xff; 16];
-/// # buffer[..n].copy_from_slice(msg);
-/// let padded_msg = NoPadding::pad(&mut buffer, n, 2).unwrap();
-/// assert_eq!(padded_msg, b"test");
-/// assert_eq!(NoPadding::unpad(&padded_msg).unwrap(), msg);
-/// ```
-pub enum NoPadding {}
-
-impl Padding for NoPadding {
- fn pad_block(block: &mut [u8], pos: usize) -> Result<(), PadError> {
- if pos % block.len() != 0 {
- Err(PadError)?
- }
- Ok(())
- }
-
- fn pad(buf: &mut [u8], pos: usize, block_size: usize) -> Result<&mut [u8], PadError> {
- if pos % block_size != 0 {
- Err(PadError)?
- }
- Ok(&mut buf[..pos])
- }
-
- fn unpad(data: &[u8]) -> Result<&[u8], UnpadError> {
- Ok(data)
- }
-}
diff --git a/vendor/byte-tools/.cargo-checksum.json b/vendor/byte-tools/.cargo-checksum.json
deleted file mode 100644
index 36f28b52e..000000000
--- a/vendor/byte-tools/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"0542f7bd3605206297b6708b28bfff87a2ef7fa65ccab1474ddb53072600d7e1","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"d5c22aa3118d240e877ad41c5d9fa232f9c77d757d4aac0c2f943afc0a95e0ef","src/lib.rs":"c8fb45d44cae0b1094bf8cef5059827b28b490eb14a3865fa536b61241c2c8c4"},"package":"e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"} \ No newline at end of file
diff --git a/vendor/byte-tools/Cargo.toml b/vendor/byte-tools/Cargo.toml
deleted file mode 100644
index 74c6b9a0e..000000000
--- a/vendor/byte-tools/Cargo.toml
+++ /dev/null
@@ -1,21 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-name = "byte-tools"
-version = "0.3.1"
-authors = ["RustCrypto Developers"]
-description = "Bytes related utility functions"
-documentation = "https://docs.rs/byte-tools"
-keywords = ["bytes"]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/RustCrypto/utils"
diff --git a/vendor/byte-tools/LICENSE-APACHE b/vendor/byte-tools/LICENSE-APACHE
deleted file mode 100644
index 78173fa2e..000000000
--- a/vendor/byte-tools/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/vendor/byte-tools/LICENSE-MIT b/vendor/byte-tools/LICENSE-MIT
deleted file mode 100644
index 502cee6e8..000000000
--- a/vendor/byte-tools/LICENSE-MIT
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) 2018-2019 The RustCrypto Project Developers
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/vendor/byte-tools/src/lib.rs b/vendor/byte-tools/src/lib.rs
deleted file mode 100644
index b4a450f9f..000000000
--- a/vendor/byte-tools/src/lib.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-#![no_std]
-use core::ptr;
-
-/// Copy bytes from `src` to `dst`
-///
-/// Panics if `src.len() < dst.len()`
-#[inline(always)]
-pub fn copy(src: &[u8], dst: &mut [u8]) {
- assert!(dst.len() >= src.len());
- unsafe {
- ptr::copy_nonoverlapping(src.as_ptr(), dst.as_mut_ptr(), src.len());
- }
-}
-
-/// Zero all bytes in `dst`
-#[inline(always)]
-pub fn zero(dst: &mut [u8]) {
- unsafe {
- ptr::write_bytes(dst.as_mut_ptr(), 0, dst.len());
- }
-}
-
-/// Sets all bytes in `dst` equal to `value`
-#[inline(always)]
-pub fn set(dst: &mut [u8], value: u8) {
- unsafe {
- ptr::write_bytes(dst.as_mut_ptr(), value, dst.len());
- }
-}
diff --git a/vendor/byteorder/.cargo-checksum.json b/vendor/byteorder/.cargo-checksum.json
deleted file mode 100644
index 434cc1a16..000000000
--- a/vendor/byteorder/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CHANGELOG.md":"3a745d94ee9dce0d9dc638c02078cd5001d3d9d12d58b4f220c0101e32cfc16a","COPYING":"01c266bced4a434da0051174d6bee16a4c82cf634e2679b6155d40d75012390f","Cargo.toml":"8585455e5a0e638cf5d489a21e286e93680f835cb8a13595918b5eb7c8c7f212","LICENSE-MIT":"0f96a83840e146e43c0ec96a22ec1f392e0680e6c1226e6f3ba87e0740af850f","README.md":"9d57556868344534de2489317e3c6bb611348ecd44438dcb982bd8d2a55a5a1b","UNLICENSE":"7e12e5df4bae12cb21581ba157ced20e1986a0508dd10d0e8a4ab9a4cf94e85c","benches/bench.rs":"a80bf3cd446c9b6c0cca3865c4de047bdf4644b74cdf696822f8ff87adfa1fca","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/io.rs":"9612530634d0e7ce9887a23836b58c0d972c1f45b05d9ada8355961567075627","src/lib.rs":"813ce6a8beafee3fd4e63325d783108aa02e8c57e412bc97580191d84082fbc9"},"package":"14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"} \ No newline at end of file
diff --git a/vendor/byteorder/CHANGELOG.md b/vendor/byteorder/CHANGELOG.md
deleted file mode 100644
index 6b51eb076..000000000
--- a/vendor/byteorder/CHANGELOG.md
+++ /dev/null
@@ -1,139 +0,0 @@
-1.3.4
-=====
-This patch release squashes deprecation warnings for the `try!` macro, in
-accordance with byteorder's minimum supported Rust version (currently at Rust
-1.12.0).
-
-
-1.3.3
-=====
-This patch release adds `ByteOrder::write_i8_into()` as a simple, safe interface
-for ordinarily unsafe or tedious code.
-
-
-1.3.2
-=====
-This patch release adds `ReadBytesExt::read_i8_into()` as a simple, safe interface
-for ordinarily unsafe or tedious code.
-
-
-1.3.1
-=====
-This minor release performs mostly small internal changes. Going forward, these
-are not going to be incorporated into the changelog.
-
-
-1.3.0
-=====
-This new minor release now enables `i128` support automatically on Rust
-compilers that support 128-bit integers. The `i128` feature is now a no-op, but
-continues to exist for backward compatibility purposes. The crate continues to
-maintain compatibility with Rust 1.12.0.
-
-This release also deprecates the `ByteOrder` trait methods
-`read_f32_into_unchecked` and `read_f64_into_unchecked` in favor of
-`read_f32_into` and `read_f64_into`. This was an oversight from the 1.2 release
-where the corresponding methods on `ReadBytesExt` were deprecated.
-
-`quickcheck` and `rand` were bumped to `0.8` and `0.6`, respectively.
-
-A few small documentation related bugs have been fixed.
-
-
-1.2.7
-=====
-This patch release excludes some CI files from the crate release and updates
-the license field to use `OR` instead of `/`.
-
-
-1.2.6
-=====
-This patch release fixes some test compilation errors introduced by an
-over-eager release of 1.2.5.
-
-
-1.2.5
-=====
-This patch release fixes some typos in the docs, adds doc tests to methods on
-`WriteByteExt` and bumps the quickcheck dependency to `0.7`.
-
-
-1.2.4
-=====
-This patch release adds support for 48-bit integers by adding the following
-methods to the `ByteOrder` trait: `read_u48`, `read_i48`, `write_u48` and
-`write_i48`. Corresponding methods have been added to the `ReadBytesExt` and
-`WriteBytesExt` traits as well.
-
-
-1.2.3
-=====
-This patch release removes the use of `feature(i128_type)` from byteorder,
-since it has been stabilized. We leave byteorder's `i128` feature in place
-in order to continue supporting compilation on older versions of Rust.
-
-
-1.2.2
-=====
-This patch release only consists of internal improvements and refactorings.
-Notably, this removes all uses of `transmute` and instead uses pointer casts.
-
-
-1.2.1
-=====
-This patch release removes more unnecessary uses of `unsafe` that
-were overlooked in the prior `1.2.0` release. In particular, the
-`ReadBytesExt::read_{f32,f64}_into_checked` methods have been deprecated and
-replaced by more appropriately named `read_{f32,f64}_into` methods.
-
-
-1.2.0
-=====
-The most prominent change in this release of `byteorder` is the removal of
-unnecessary signaling NaN masking, and in turn, the `unsafe` annotations
-associated with methods that didn't do masking. See
-[#103](https://github.com/BurntSushi/byteorder/issues/103)
-for more details.
-
-* [BUG #102](https://github.com/BurntSushi/byteorder/issues/102):
- Fix big endian tests.
-* [BUG #103](https://github.com/BurntSushi/byteorder/issues/103):
- Remove sNaN masking.
-
-
-1.1.0
-=====
-This release of `byteorder` features a number of fixes and improvements, mostly
-as a result of the
-[Litz Blitz evaluation](https://public.etherpad-mozilla.org/p/rust-crate-eval-byteorder).
-
-Feature enhancements:
-
-* [FEATURE #63](https://github.com/BurntSushi/byteorder/issues/63):
- Add methods for reading/writing slices of numbers for a specific
- endianness.
-* [FEATURE #65](https://github.com/BurntSushi/byteorder/issues/65):
- Add support for `u128`/`i128` types. (Behind the nightly only `i128`
- feature.)
-* [FEATURE #72](https://github.com/BurntSushi/byteorder/issues/72):
- Add "panics" and "errors" sections for each relevant public API item.
-* [FEATURE #74](https://github.com/BurntSushi/byteorder/issues/74):
- Add CI badges to Cargo.toml.
-* [FEATURE #75](https://github.com/BurntSushi/byteorder/issues/75):
- Add more examples to public API items.
-* Add 24-bit read/write methods.
-* Add `BE` and `LE` type aliases for `BigEndian` and `LittleEndian`,
- respectively.
-
-Bug fixes:
-
-* [BUG #68](https://github.com/BurntSushi/byteorder/issues/68):
- Panic in {BigEndian,LittleEndian}::default.
-* [BUG #69](https://github.com/BurntSushi/byteorder/issues/69):
- Seal the `ByteOrder` trait to prevent out-of-crate implementations.
-* [BUG #71](https://github.com/BurntSushi/byteorder/issues/71):
- Guarantee that the results of `read_f32`/`read_f64` are always defined.
-* [BUG #73](https://github.com/BurntSushi/byteorder/issues/73):
- Add crates.io categories.
-* [BUG #77](https://github.com/BurntSushi/byteorder/issues/77):
- Add `html_root` doc attribute.
diff --git a/vendor/byteorder/COPYING b/vendor/byteorder/COPYING
deleted file mode 100644
index bb9c20a09..000000000
--- a/vendor/byteorder/COPYING
+++ /dev/null
@@ -1,3 +0,0 @@
-This project is dual-licensed under the Unlicense and MIT licenses.
-
-You may use this code under the terms of either license.
diff --git a/vendor/byteorder/Cargo.toml b/vendor/byteorder/Cargo.toml
deleted file mode 100644
index c71f90ba9..000000000
--- a/vendor/byteorder/Cargo.toml
+++ /dev/null
@@ -1,43 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-edition = "2018"
-name = "byteorder"
-version = "1.4.3"
-authors = ["Andrew Gallant <jamslam@gmail.com>"]
-exclude = ["/ci/*"]
-description = "Library for reading/writing numbers in big-endian and little-endian."
-homepage = "https://github.com/BurntSushi/byteorder"
-documentation = "https://docs.rs/byteorder"
-readme = "README.md"
-keywords = ["byte", "endian", "big-endian", "little-endian", "binary"]
-categories = ["encoding", "parsing", "no-std"]
-license = "Unlicense OR MIT"
-repository = "https://github.com/BurntSushi/byteorder"
-[profile.bench]
-opt-level = 3
-
-[lib]
-name = "byteorder"
-bench = false
-[dev-dependencies.quickcheck]
-version = "0.9.2"
-default-features = false
-
-[dev-dependencies.rand]
-version = "0.7"
-
-[features]
-default = ["std"]
-i128 = []
-std = []
diff --git a/vendor/byteorder/LICENSE-MIT b/vendor/byteorder/LICENSE-MIT
deleted file mode 100644
index 3b0a5dc09..000000000
--- a/vendor/byteorder/LICENSE-MIT
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Andrew Gallant
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
diff --git a/vendor/byteorder/README.md b/vendor/byteorder/README.md
deleted file mode 100644
index d8461c58f..000000000
--- a/vendor/byteorder/README.md
+++ /dev/null
@@ -1,63 +0,0 @@
-byteorder
-=========
-This crate provides convenience methods for encoding and decoding
-numbers in either big-endian or little-endian order.
-
-[![Build status](https://github.com/BurntSushi/byteorder/workflows/ci/badge.svg)](https://github.com/BurntSushi/byteorder/actions)
-[![](https://meritbadge.herokuapp.com/byteorder)](https://crates.io/crates/byteorder)
-
-Dual-licensed under MIT or the [UNLICENSE](https://unlicense.org/).
-
-
-### Documentation
-
-https://docs.rs/byteorder
-
-
-### Installation
-
-This crate works with Cargo and is on
-[crates.io](https://crates.io/crates/byteorder). Add it to your `Cargo.toml`
-like so:
-
-```toml
-[dependencies]
-byteorder = "1"
-```
-
-If you want to augment existing `Read` and `Write` traits, then import the
-extension methods like so:
-
-```rust
-use byteorder::{ReadBytesExt, WriteBytesExt, BigEndian, LittleEndian};
-```
-
-For example:
-
-```rust
-use std::io::Cursor;
-use byteorder::{BigEndian, ReadBytesExt};
-
-let mut rdr = Cursor::new(vec![2, 5, 3, 0]);
-// Note that we use type parameters to indicate which kind of byte order
-// we want!
-assert_eq!(517, rdr.read_u16::<BigEndian>().unwrap());
-assert_eq!(768, rdr.read_u16::<BigEndian>().unwrap());
-```
-
-### `no_std` crates
-
-This crate has a feature, `std`, that is enabled by default. To use this crate
-in a `no_std` context, add the following to your `Cargo.toml`:
-
-```toml
-[dependencies]
-byteorder = { version = "1", default-features = false }
-```
-
-
-### Alternatives
-
-Note that as of Rust 1.32, the standard numeric types provide built-in methods
-like `to_le_bytes` and `from_le_bytes`, which support some of the same use
-cases.
diff --git a/vendor/byteorder/UNLICENSE b/vendor/byteorder/UNLICENSE
deleted file mode 100644
index 68a49daad..000000000
--- a/vendor/byteorder/UNLICENSE
+++ /dev/null
@@ -1,24 +0,0 @@
-This is free and unencumbered software released into the public domain.
-
-Anyone is free to copy, modify, publish, use, compile, sell, or
-distribute this software, either in source code form or as a compiled
-binary, for any purpose, commercial or non-commercial, and by any
-means.
-
-In jurisdictions that recognize copyright laws, the author or authors
-of this software dedicate any and all copyright interest in the
-software to the public domain. We make this dedication for the benefit
-of the public at large and to the detriment of our heirs and
-successors. We intend this dedication to be an overt act of
-relinquishment in perpetuity of all present and future rights to this
-software under copyright law.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
-OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
-
-For more information, please refer to <http://unlicense.org/>
diff --git a/vendor/byteorder/benches/bench.rs b/vendor/byteorder/benches/bench.rs
deleted file mode 100644
index bb00422f7..000000000
--- a/vendor/byteorder/benches/bench.rs
+++ /dev/null
@@ -1,324 +0,0 @@
-#![feature(test)]
-
-extern crate test;
-
-macro_rules! bench_num {
- ($name:ident, $read:ident, $bytes:expr, $data:expr) => {
- mod $name {
- use byteorder::{
- BigEndian, ByteOrder, LittleEndian, NativeEndian,
- };
- use test::black_box as bb;
- use test::Bencher;
-
- const NITER: usize = 100_000;
-
- #[bench]
- fn read_big_endian(b: &mut Bencher) {
- let buf = $data;
- b.iter(|| {
- for _ in 0..NITER {
- bb(BigEndian::$read(&buf, $bytes));
- }
- });
- }
-
- #[bench]
- fn read_little_endian(b: &mut Bencher) {
- let buf = $data;
- b.iter(|| {
- for _ in 0..NITER {
- bb(LittleEndian::$read(&buf, $bytes));
- }
- });
- }
-
- #[bench]
- fn read_native_endian(b: &mut Bencher) {
- let buf = $data;
- b.iter(|| {
- for _ in 0..NITER {
- bb(NativeEndian::$read(&buf, $bytes));
- }
- });
- }
- }
- };
- ($ty:ident, $max:ident,
- $read:ident, $write:ident, $size:expr, $data:expr) => {
- mod $ty {
- use byteorder::{
- BigEndian, ByteOrder, LittleEndian, NativeEndian,
- };
- use std::$ty;
- use test::black_box as bb;
- use test::Bencher;
-
- const NITER: usize = 100_000;
-
- #[bench]
- fn read_big_endian(b: &mut Bencher) {
- let buf = $data;
- b.iter(|| {
- for _ in 0..NITER {
- bb(BigEndian::$read(&buf));
- }
- });
- }
-
- #[bench]
- fn read_little_endian(b: &mut Bencher) {
- let buf = $data;
- b.iter(|| {
- for _ in 0..NITER {
- bb(LittleEndian::$read(&buf));
- }
- });
- }
-
- #[bench]
- fn read_native_endian(b: &mut Bencher) {
- let buf = $data;
- b.iter(|| {
- for _ in 0..NITER {
- bb(NativeEndian::$read(&buf));
- }
- });
- }
-
- #[bench]
- fn write_big_endian(b: &mut Bencher) {
- let mut buf = $data;
- let n = $ty::$max;
- b.iter(|| {
- for _ in 0..NITER {
- bb(BigEndian::$write(&mut buf, n));
- }
- });
- }
-
- #[bench]
- fn write_little_endian(b: &mut Bencher) {
- let mut buf = $data;
- let n = $ty::$max;
- b.iter(|| {
- for _ in 0..NITER {
- bb(LittleEndian::$write(&mut buf, n));
- }
- });
- }
-
- #[bench]
- fn write_native_endian(b: &mut Bencher) {
- let mut buf = $data;
- let n = $ty::$max;
- b.iter(|| {
- for _ in 0..NITER {
- bb(NativeEndian::$write(&mut buf, n));
- }
- });
- }
- }
- };
-}
-
-bench_num!(u16, MAX, read_u16, write_u16, 2, [1, 2]);
-bench_num!(i16, MAX, read_i16, write_i16, 2, [1, 2]);
-bench_num!(u32, MAX, read_u32, write_u32, 4, [1, 2, 3, 4]);
-bench_num!(i32, MAX, read_i32, write_i32, 4, [1, 2, 3, 4]);
-bench_num!(u64, MAX, read_u64, write_u64, 8, [1, 2, 3, 4, 5, 6, 7, 8]);
-bench_num!(i64, MAX, read_i64, write_i64, 8, [1, 2, 3, 4, 5, 6, 7, 8]);
-bench_num!(f32, MAX, read_f32, write_f32, 4, [1, 2, 3, 4]);
-bench_num!(f64, MAX, read_f64, write_f64, 8, [1, 2, 3, 4, 5, 6, 7, 8]);
-
-bench_num!(uint_1, read_uint, 1, [1]);
-bench_num!(uint_2, read_uint, 2, [1, 2]);
-bench_num!(uint_3, read_uint, 3, [1, 2, 3]);
-bench_num!(uint_4, read_uint, 4, [1, 2, 3, 4]);
-bench_num!(uint_5, read_uint, 5, [1, 2, 3, 4, 5]);
-bench_num!(uint_6, read_uint, 6, [1, 2, 3, 4, 5, 6]);
-bench_num!(uint_7, read_uint, 7, [1, 2, 3, 4, 5, 6, 7]);
-bench_num!(uint_8, read_uint, 8, [1, 2, 3, 4, 5, 6, 7, 8]);
-
-bench_num!(int_1, read_int, 1, [1]);
-bench_num!(int_2, read_int, 2, [1, 2]);
-bench_num!(int_3, read_int, 3, [1, 2, 3]);
-bench_num!(int_4, read_int, 4, [1, 2, 3, 4]);
-bench_num!(int_5, read_int, 5, [1, 2, 3, 4, 5]);
-bench_num!(int_6, read_int, 6, [1, 2, 3, 4, 5, 6]);
-bench_num!(int_7, read_int, 7, [1, 2, 3, 4, 5, 6, 7]);
-bench_num!(int_8, read_int, 8, [1, 2, 3, 4, 5, 6, 7, 8]);
-
-bench_num!(
- u128,
- MAX,
- read_u128,
- write_u128,
- 16,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
-);
-bench_num!(
- i128,
- MAX,
- read_i128,
- write_i128,
- 16,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
-);
-
-bench_num!(uint128_1, read_uint128, 1, [1]);
-bench_num!(uint128_2, read_uint128, 2, [1, 2]);
-bench_num!(uint128_3, read_uint128, 3, [1, 2, 3]);
-bench_num!(uint128_4, read_uint128, 4, [1, 2, 3, 4]);
-bench_num!(uint128_5, read_uint128, 5, [1, 2, 3, 4, 5]);
-bench_num!(uint128_6, read_uint128, 6, [1, 2, 3, 4, 5, 6]);
-bench_num!(uint128_7, read_uint128, 7, [1, 2, 3, 4, 5, 6, 7]);
-bench_num!(uint128_8, read_uint128, 8, [1, 2, 3, 4, 5, 6, 7, 8]);
-bench_num!(uint128_9, read_uint128, 9, [1, 2, 3, 4, 5, 6, 7, 8, 9]);
-bench_num!(uint128_10, read_uint128, 10, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
-bench_num!(uint128_11, read_uint128, 11, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]);
-bench_num!(
- uint128_12,
- read_uint128,
- 12,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
-);
-bench_num!(
- uint128_13,
- read_uint128,
- 13,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
-);
-bench_num!(
- uint128_14,
- read_uint128,
- 14,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
-);
-bench_num!(
- uint128_15,
- read_uint128,
- 15,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
-);
-bench_num!(
- uint128_16,
- read_uint128,
- 16,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
-);
-
-bench_num!(int128_1, read_int128, 1, [1]);
-bench_num!(int128_2, read_int128, 2, [1, 2]);
-bench_num!(int128_3, read_int128, 3, [1, 2, 3]);
-bench_num!(int128_4, read_int128, 4, [1, 2, 3, 4]);
-bench_num!(int128_5, read_int128, 5, [1, 2, 3, 4, 5]);
-bench_num!(int128_6, read_int128, 6, [1, 2, 3, 4, 5, 6]);
-bench_num!(int128_7, read_int128, 7, [1, 2, 3, 4, 5, 6, 7]);
-bench_num!(int128_8, read_int128, 8, [1, 2, 3, 4, 5, 6, 7, 8]);
-bench_num!(int128_9, read_int128, 9, [1, 2, 3, 4, 5, 6, 7, 8, 9]);
-bench_num!(int128_10, read_int128, 10, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
-bench_num!(int128_11, read_int128, 11, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]);
-bench_num!(
- int128_12,
- read_int128,
- 12,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
-);
-bench_num!(
- int128_13,
- read_int128,
- 13,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
-);
-bench_num!(
- int128_14,
- read_int128,
- 14,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
-);
-bench_num!(
- int128_15,
- read_int128,
- 15,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
-);
-bench_num!(
- int128_16,
- read_int128,
- 16,
- [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
-);
-
-macro_rules! bench_slice {
- ($name:ident, $numty:ty, $read:ident, $write:ident) => {
- mod $name {
- use std::mem::size_of;
-
- use byteorder::{BigEndian, ByteOrder, LittleEndian};
- use rand::distributions;
- use rand::{self, Rng};
- use test::Bencher;
-
- #[bench]
- fn read_big_endian(b: &mut Bencher) {
- let mut numbers: Vec<$numty> = rand::thread_rng()
- .sample_iter(&distributions::Standard)
- .take(100000)
- .collect();
- let mut bytes = vec![0; numbers.len() * size_of::<$numty>()];
- BigEndian::$write(&numbers, &mut bytes);
-
- b.bytes = bytes.len() as u64;
- b.iter(|| {
- BigEndian::$read(&bytes, &mut numbers);
- });
- }
-
- #[bench]
- fn read_little_endian(b: &mut Bencher) {
- let mut numbers: Vec<$numty> = rand::thread_rng()
- .sample_iter(&distributions::Standard)
- .take(100000)
- .collect();
- let mut bytes = vec![0; numbers.len() * size_of::<$numty>()];
- LittleEndian::$write(&numbers, &mut bytes);
-
- b.bytes = bytes.len() as u64;
- b.iter(|| {
- LittleEndian::$read(&bytes, &mut numbers);
- });
- }
-
- #[bench]
- fn write_big_endian(b: &mut Bencher) {
- let numbers: Vec<$numty> = rand::thread_rng()
- .sample_iter(&distributions::Standard)
- .take(100000)
- .collect();
- let mut bytes = vec![0; numbers.len() * size_of::<$numty>()];
-
- b.bytes = bytes.len() as u64;
- b.iter(|| {
- BigEndian::$write(&numbers, &mut bytes);
- });
- }
-
- #[bench]
- fn write_little_endian(b: &mut Bencher) {
- let numbers: Vec<$numty> = rand::thread_rng()
- .sample_iter(&distributions::Standard)
- .take(100000)
- .collect();
- let mut bytes = vec![0; numbers.len() * size_of::<$numty>()];
-
- b.bytes = bytes.len() as u64;
- b.iter(|| {
- LittleEndian::$write(&numbers, &mut bytes);
- });
- }
- }
- };
-}
-
-bench_slice!(slice_u64, u64, read_u64_into, write_u64_into);
diff --git a/vendor/byteorder/rustfmt.toml b/vendor/byteorder/rustfmt.toml
deleted file mode 100644
index aa37a218b..000000000
--- a/vendor/byteorder/rustfmt.toml
+++ /dev/null
@@ -1,2 +0,0 @@
-max_width = 79
-use_small_heuristics = "max"
diff --git a/vendor/byteorder/src/io.rs b/vendor/byteorder/src/io.rs
deleted file mode 100644
index dfad2ca39..000000000
--- a/vendor/byteorder/src/io.rs
+++ /dev/null
@@ -1,1592 +0,0 @@
-use std::{
- io::{self, Result},
- slice,
-};
-
-use crate::ByteOrder;
-
-/// Extends [`Read`] with methods for reading numbers. (For `std::io`.)
-///
-/// Most of the methods defined here have an unconstrained type parameter that
-/// must be explicitly instantiated. Typically, it is instantiated with either
-/// the [`BigEndian`] or [`LittleEndian`] types defined in this crate.
-///
-/// # Examples
-///
-/// Read unsigned 16 bit big-endian integers from a [`Read`]:
-///
-/// ```rust
-/// use std::io::Cursor;
-/// use byteorder::{BigEndian, ReadBytesExt};
-///
-/// let mut rdr = Cursor::new(vec![2, 5, 3, 0]);
-/// assert_eq!(517, rdr.read_u16::<BigEndian>().unwrap());
-/// assert_eq!(768, rdr.read_u16::<BigEndian>().unwrap());
-/// ```
-///
-/// [`BigEndian`]: enum.BigEndian.html
-/// [`LittleEndian`]: enum.LittleEndian.html
-/// [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-pub trait ReadBytesExt: io::Read {
- /// Reads an unsigned 8 bit integer from the underlying reader.
- ///
- /// Note that since this reads a single byte, no byte order conversions
- /// are used. It is included for completeness.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read unsigned 8 bit integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::ReadBytesExt;
- ///
- /// let mut rdr = Cursor::new(vec![2, 5]);
- /// assert_eq!(2, rdr.read_u8().unwrap());
- /// assert_eq!(5, rdr.read_u8().unwrap());
- /// ```
- #[inline]
- fn read_u8(&mut self) -> Result<u8> {
- let mut buf = [0; 1];
- self.read_exact(&mut buf)?;
- Ok(buf[0])
- }
-
- /// Reads a signed 8 bit integer from the underlying reader.
- ///
- /// Note that since this reads a single byte, no byte order conversions
- /// are used. It is included for completeness.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read signed 8 bit integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::ReadBytesExt;
- ///
- /// let mut rdr = Cursor::new(vec![0x02, 0xfb]);
- /// assert_eq!(2, rdr.read_i8().unwrap());
- /// assert_eq!(-5, rdr.read_i8().unwrap());
- /// ```
- #[inline]
- fn read_i8(&mut self) -> Result<i8> {
- let mut buf = [0; 1];
- self.read_exact(&mut buf)?;
- Ok(buf[0] as i8)
- }
-
- /// Reads an unsigned 16 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read unsigned 16 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![2, 5, 3, 0]);
- /// assert_eq!(517, rdr.read_u16::<BigEndian>().unwrap());
- /// assert_eq!(768, rdr.read_u16::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_u16<T: ByteOrder>(&mut self) -> Result<u16> {
- let mut buf = [0; 2];
- self.read_exact(&mut buf)?;
- Ok(T::read_u16(&buf))
- }
-
- /// Reads a signed 16 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read signed 16 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0x00, 0xc1, 0xff, 0x7c]);
- /// assert_eq!(193, rdr.read_i16::<BigEndian>().unwrap());
- /// assert_eq!(-132, rdr.read_i16::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_i16<T: ByteOrder>(&mut self) -> Result<i16> {
- let mut buf = [0; 2];
- self.read_exact(&mut buf)?;
- Ok(T::read_i16(&buf))
- }
-
- /// Reads an unsigned 24 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read unsigned 24 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0x00, 0x01, 0x0b]);
- /// assert_eq!(267, rdr.read_u24::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_u24<T: ByteOrder>(&mut self) -> Result<u32> {
- let mut buf = [0; 3];
- self.read_exact(&mut buf)?;
- Ok(T::read_u24(&buf))
- }
-
- /// Reads a signed 24 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read signed 24 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0xff, 0x7a, 0x33]);
- /// assert_eq!(-34253, rdr.read_i24::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_i24<T: ByteOrder>(&mut self) -> Result<i32> {
- let mut buf = [0; 3];
- self.read_exact(&mut buf)?;
- Ok(T::read_i24(&buf))
- }
-
- /// Reads an unsigned 32 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read unsigned 32 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0x00, 0x00, 0x01, 0x0b]);
- /// assert_eq!(267, rdr.read_u32::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_u32<T: ByteOrder>(&mut self) -> Result<u32> {
- let mut buf = [0; 4];
- self.read_exact(&mut buf)?;
- Ok(T::read_u32(&buf))
- }
-
- /// Reads a signed 32 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read signed 32 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0xff, 0xff, 0x7a, 0x33]);
- /// assert_eq!(-34253, rdr.read_i32::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_i32<T: ByteOrder>(&mut self) -> Result<i32> {
- let mut buf = [0; 4];
- self.read_exact(&mut buf)?;
- Ok(T::read_i32(&buf))
- }
-
- /// Reads an unsigned 48 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read unsigned 48 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0xb6, 0x71, 0x6b, 0xdc, 0x2b, 0x31]);
- /// assert_eq!(200598257150769, rdr.read_u48::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_u48<T: ByteOrder>(&mut self) -> Result<u64> {
- let mut buf = [0; 6];
- self.read_exact(&mut buf)?;
- Ok(T::read_u48(&buf))
- }
-
- /// Reads a signed 48 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read signed 48 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0x9d, 0x71, 0xab, 0xe7, 0x97, 0x8f]);
- /// assert_eq!(-108363435763825, rdr.read_i48::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_i48<T: ByteOrder>(&mut self) -> Result<i64> {
- let mut buf = [0; 6];
- self.read_exact(&mut buf)?;
- Ok(T::read_i48(&buf))
- }
-
- /// Reads an unsigned 64 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read an unsigned 64 bit big-endian integer from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0x00, 0x03, 0x43, 0x95, 0x4d, 0x60, 0x86, 0x83]);
- /// assert_eq!(918733457491587, rdr.read_u64::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_u64<T: ByteOrder>(&mut self) -> Result<u64> {
- let mut buf = [0; 8];
- self.read_exact(&mut buf)?;
- Ok(T::read_u64(&buf))
- }
-
- /// Reads a signed 64 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a signed 64 bit big-endian integer from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0x80, 0, 0, 0, 0, 0, 0, 0]);
- /// assert_eq!(i64::min_value(), rdr.read_i64::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_i64<T: ByteOrder>(&mut self) -> Result<i64> {
- let mut buf = [0; 8];
- self.read_exact(&mut buf)?;
- Ok(T::read_i64(&buf))
- }
-
- /// Reads an unsigned 128 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read an unsigned 128 bit big-endian integer from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0x00, 0x03, 0x43, 0x95, 0x4d, 0x60, 0x86, 0x83,
- /// 0x00, 0x03, 0x43, 0x95, 0x4d, 0x60, 0x86, 0x83
- /// ]);
- /// assert_eq!(16947640962301618749969007319746179, rdr.read_u128::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_u128<T: ByteOrder>(&mut self) -> Result<u128> {
- let mut buf = [0; 16];
- self.read_exact(&mut buf)?;
- Ok(T::read_u128(&buf))
- }
-
- /// Reads a signed 128 bit integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a signed 128 bit big-endian integer from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
- /// assert_eq!(i128::min_value(), rdr.read_i128::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_i128<T: ByteOrder>(&mut self) -> Result<i128> {
- let mut buf = [0; 16];
- self.read_exact(&mut buf)?;
- Ok(T::read_i128(&buf))
- }
-
- /// Reads an unsigned n-bytes integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read an unsigned n-byte big-endian integer from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0x80, 0x74, 0xfa]);
- /// assert_eq!(8418554, rdr.read_uint::<BigEndian>(3).unwrap());
- #[inline]
- fn read_uint<T: ByteOrder>(&mut self, nbytes: usize) -> Result<u64> {
- let mut buf = [0; 8];
- self.read_exact(&mut buf[..nbytes])?;
- Ok(T::read_uint(&buf[..nbytes], nbytes))
- }
-
- /// Reads a signed n-bytes integer from the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read an unsigned n-byte big-endian integer from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0xc1, 0xff, 0x7c]);
- /// assert_eq!(-4063364, rdr.read_int::<BigEndian>(3).unwrap());
- #[inline]
- fn read_int<T: ByteOrder>(&mut self, nbytes: usize) -> Result<i64> {
- let mut buf = [0; 8];
- self.read_exact(&mut buf[..nbytes])?;
- Ok(T::read_int(&buf[..nbytes], nbytes))
- }
-
- /// Reads an unsigned n-bytes integer from the underlying reader.
- #[inline]
- fn read_uint128<T: ByteOrder>(&mut self, nbytes: usize) -> Result<u128> {
- let mut buf = [0; 16];
- self.read_exact(&mut buf[..nbytes])?;
- Ok(T::read_uint128(&buf[..nbytes], nbytes))
- }
-
- /// Reads a signed n-bytes integer from the underlying reader.
- #[inline]
- fn read_int128<T: ByteOrder>(&mut self, nbytes: usize) -> Result<i128> {
- let mut buf = [0; 16];
- self.read_exact(&mut buf[..nbytes])?;
- Ok(T::read_int128(&buf[..nbytes], nbytes))
- }
-
- /// Reads a IEEE754 single-precision (4 bytes) floating point number from
- /// the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a big-endian single-precision floating point number from a `Read`:
- ///
- /// ```rust
- /// use std::f32;
- /// use std::io::Cursor;
- ///
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0x40, 0x49, 0x0f, 0xdb,
- /// ]);
- /// assert_eq!(f32::consts::PI, rdr.read_f32::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_f32<T: ByteOrder>(&mut self) -> Result<f32> {
- let mut buf = [0; 4];
- self.read_exact(&mut buf)?;
- Ok(T::read_f32(&buf))
- }
-
- /// Reads a IEEE754 double-precision (8 bytes) floating point number from
- /// the underlying reader.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a big-endian double-precision floating point number from a `Read`:
- ///
- /// ```rust
- /// use std::f64;
- /// use std::io::Cursor;
- ///
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0x40, 0x09, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18,
- /// ]);
- /// assert_eq!(f64::consts::PI, rdr.read_f64::<BigEndian>().unwrap());
- /// ```
- #[inline]
- fn read_f64<T: ByteOrder>(&mut self) -> Result<f64> {
- let mut buf = [0; 8];
- self.read_exact(&mut buf)?;
- Ok(T::read_f64(&buf))
- }
-
- /// Reads a sequence of unsigned 16 bit integers from the underlying
- /// reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of unsigned 16 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![2, 5, 3, 0]);
- /// let mut dst = [0; 2];
- /// rdr.read_u16_into::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([517, 768], dst);
- /// ```
- #[inline]
- fn read_u16_into<T: ByteOrder>(&mut self, dst: &mut [u16]) -> Result<()> {
- {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)?;
- }
- T::from_slice_u16(dst);
- Ok(())
- }
-
- /// Reads a sequence of unsigned 32 bit integers from the underlying
- /// reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of unsigned 32 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0, 0, 2, 5, 0, 0, 3, 0]);
- /// let mut dst = [0; 2];
- /// rdr.read_u32_into::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([517, 768], dst);
- /// ```
- #[inline]
- fn read_u32_into<T: ByteOrder>(&mut self, dst: &mut [u32]) -> Result<()> {
- {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)?;
- }
- T::from_slice_u32(dst);
- Ok(())
- }
-
- /// Reads a sequence of unsigned 64 bit integers from the underlying
- /// reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of unsigned 64 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0, 0, 0, 0, 0, 0, 2, 5,
- /// 0, 0, 0, 0, 0, 0, 3, 0,
- /// ]);
- /// let mut dst = [0; 2];
- /// rdr.read_u64_into::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([517, 768], dst);
- /// ```
- #[inline]
- fn read_u64_into<T: ByteOrder>(&mut self, dst: &mut [u64]) -> Result<()> {
- {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)?;
- }
- T::from_slice_u64(dst);
- Ok(())
- }
-
- /// Reads a sequence of unsigned 128 bit integers from the underlying
- /// reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of unsigned 128 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,
- /// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
- /// ]);
- /// let mut dst = [0; 2];
- /// rdr.read_u128_into::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([517, 768], dst);
- /// ```
- #[inline]
- fn read_u128_into<T: ByteOrder>(
- &mut self,
- dst: &mut [u128],
- ) -> Result<()> {
- {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)?;
- }
- T::from_slice_u128(dst);
- Ok(())
- }
-
- /// Reads a sequence of signed 8 bit integers from the underlying reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// Note that since each `i8` is a single byte, no byte order conversions
- /// are used. This method is included because it provides a safe, simple
- /// way for the caller to read into a `&mut [i8]` buffer. (Without this
- /// method, the caller would have to either use `unsafe` code or convert
- /// each byte to `i8` individually.)
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of signed 8 bit integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![2, 251, 3]);
- /// let mut dst = [0; 3];
- /// rdr.read_i8_into(&mut dst).unwrap();
- /// assert_eq!([2, -5, 3], dst);
- /// ```
- #[inline]
- fn read_i8_into(&mut self, dst: &mut [i8]) -> Result<()> {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)
- }
-
- /// Reads a sequence of signed 16 bit integers from the underlying
- /// reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of signed 16 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![2, 5, 3, 0]);
- /// let mut dst = [0; 2];
- /// rdr.read_i16_into::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([517, 768], dst);
- /// ```
- #[inline]
- fn read_i16_into<T: ByteOrder>(&mut self, dst: &mut [i16]) -> Result<()> {
- {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)?;
- }
- T::from_slice_i16(dst);
- Ok(())
- }
-
- /// Reads a sequence of signed 32 bit integers from the underlying
- /// reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of signed 32 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![0, 0, 2, 5, 0, 0, 3, 0]);
- /// let mut dst = [0; 2];
- /// rdr.read_i32_into::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([517, 768], dst);
- /// ```
- #[inline]
- fn read_i32_into<T: ByteOrder>(&mut self, dst: &mut [i32]) -> Result<()> {
- {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)?;
- }
- T::from_slice_i32(dst);
- Ok(())
- }
-
- /// Reads a sequence of signed 64 bit integers from the underlying
- /// reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of signed 64 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0, 0, 0, 0, 0, 0, 2, 5,
- /// 0, 0, 0, 0, 0, 0, 3, 0,
- /// ]);
- /// let mut dst = [0; 2];
- /// rdr.read_i64_into::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([517, 768], dst);
- /// ```
- #[inline]
- fn read_i64_into<T: ByteOrder>(&mut self, dst: &mut [i64]) -> Result<()> {
- {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)?;
- }
- T::from_slice_i64(dst);
- Ok(())
- }
-
- /// Reads a sequence of signed 128 bit integers from the underlying
- /// reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of signed 128 bit big-endian integers from a `Read`:
- ///
- /// ```rust
- /// use std::io::Cursor;
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,
- /// 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0,
- /// ]);
- /// let mut dst = [0; 2];
- /// rdr.read_i128_into::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([517, 768], dst);
- /// ```
- #[inline]
- fn read_i128_into<T: ByteOrder>(
- &mut self,
- dst: &mut [i128],
- ) -> Result<()> {
- {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)?;
- }
- T::from_slice_i128(dst);
- Ok(())
- }
-
- /// Reads a sequence of IEEE754 single-precision (4 bytes) floating
- /// point numbers from the underlying reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of big-endian single-precision floating point number
- /// from a `Read`:
- ///
- /// ```rust
- /// use std::f32;
- /// use std::io::Cursor;
- ///
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0x40, 0x49, 0x0f, 0xdb,
- /// 0x3f, 0x80, 0x00, 0x00,
- /// ]);
- /// let mut dst = [0.0; 2];
- /// rdr.read_f32_into::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([f32::consts::PI, 1.0], dst);
- /// ```
- #[inline]
- fn read_f32_into<T: ByteOrder>(&mut self, dst: &mut [f32]) -> Result<()> {
- {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)?;
- }
- T::from_slice_f32(dst);
- Ok(())
- }
-
- /// **DEPRECATED**.
- ///
- /// This method is deprecated. Use `read_f32_into` instead.
- ///
- /// Reads a sequence of IEEE754 single-precision (4 bytes) floating
- /// point numbers from the underlying reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of big-endian single-precision floating point number
- /// from a `Read`:
- ///
- /// ```rust
- /// use std::f32;
- /// use std::io::Cursor;
- ///
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0x40, 0x49, 0x0f, 0xdb,
- /// 0x3f, 0x80, 0x00, 0x00,
- /// ]);
- /// let mut dst = [0.0; 2];
- /// rdr.read_f32_into_unchecked::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([f32::consts::PI, 1.0], dst);
- /// ```
- #[inline]
- #[deprecated(since = "1.2.0", note = "please use `read_f32_into` instead")]
- fn read_f32_into_unchecked<T: ByteOrder>(
- &mut self,
- dst: &mut [f32],
- ) -> Result<()> {
- self.read_f32_into::<T>(dst)
- }
-
- /// Reads a sequence of IEEE754 double-precision (8 bytes) floating
- /// point numbers from the underlying reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of big-endian single-precision floating point number
- /// from a `Read`:
- ///
- /// ```rust
- /// use std::f64;
- /// use std::io::Cursor;
- ///
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0x40, 0x09, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18,
- /// 0x3f, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /// ]);
- /// let mut dst = [0.0; 2];
- /// rdr.read_f64_into::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([f64::consts::PI, 1.0], dst);
- /// ```
- #[inline]
- fn read_f64_into<T: ByteOrder>(&mut self, dst: &mut [f64]) -> Result<()> {
- {
- let buf = unsafe { slice_to_u8_mut(dst) };
- self.read_exact(buf)?;
- }
- T::from_slice_f64(dst);
- Ok(())
- }
-
- /// **DEPRECATED**.
- ///
- /// This method is deprecated. Use `read_f64_into` instead.
- ///
- /// Reads a sequence of IEEE754 double-precision (8 bytes) floating
- /// point numbers from the underlying reader.
- ///
- /// The given buffer is either filled completely or an error is returned.
- /// If an error is returned, the contents of `dst` are unspecified.
- ///
- /// # Safety
- ///
- /// This method is unsafe because there are no guarantees made about the
- /// floating point values. In particular, this method does not check for
- /// signaling NaNs, which may result in undefined behavior.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Read::read_exact`].
- ///
- /// [`Read::read_exact`]: https://doc.rust-lang.org/std/io/trait.Read.html#method.read_exact
- ///
- /// # Examples
- ///
- /// Read a sequence of big-endian single-precision floating point number
- /// from a `Read`:
- ///
- /// ```rust
- /// use std::f64;
- /// use std::io::Cursor;
- ///
- /// use byteorder::{BigEndian, ReadBytesExt};
- ///
- /// let mut rdr = Cursor::new(vec![
- /// 0x40, 0x09, 0x21, 0xfb, 0x54, 0x44, 0x2d, 0x18,
- /// 0x3f, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- /// ]);
- /// let mut dst = [0.0; 2];
- /// rdr.read_f64_into_unchecked::<BigEndian>(&mut dst).unwrap();
- /// assert_eq!([f64::consts::PI, 1.0], dst);
- /// ```
- #[inline]
- #[deprecated(since = "1.2.0", note = "please use `read_f64_into` instead")]
- fn read_f64_into_unchecked<T: ByteOrder>(
- &mut self,
- dst: &mut [f64],
- ) -> Result<()> {
- self.read_f64_into::<T>(dst)
- }
-}
-
-/// All types that implement `Read` get methods defined in `ReadBytesExt`
-/// for free.
-impl<R: io::Read + ?Sized> ReadBytesExt for R {}
-
-/// Extends [`Write`] with methods for writing numbers. (For `std::io`.)
-///
-/// Most of the methods defined here have an unconstrained type parameter that
-/// must be explicitly instantiated. Typically, it is instantiated with either
-/// the [`BigEndian`] or [`LittleEndian`] types defined in this crate.
-///
-/// # Examples
-///
-/// Write unsigned 16 bit big-endian integers to a [`Write`]:
-///
-/// ```rust
-/// use byteorder::{BigEndian, WriteBytesExt};
-///
-/// let mut wtr = vec![];
-/// wtr.write_u16::<BigEndian>(517).unwrap();
-/// wtr.write_u16::<BigEndian>(768).unwrap();
-/// assert_eq!(wtr, vec![2, 5, 3, 0]);
-/// ```
-///
-/// [`BigEndian`]: enum.BigEndian.html
-/// [`LittleEndian`]: enum.LittleEndian.html
-/// [`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-pub trait WriteBytesExt: io::Write {
- /// Writes an unsigned 8 bit integer to the underlying writer.
- ///
- /// Note that since this writes a single byte, no byte order conversions
- /// are used. It is included for completeness.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write unsigned 8 bit integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::WriteBytesExt;
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_u8(2).unwrap();
- /// wtr.write_u8(5).unwrap();
- /// assert_eq!(wtr, b"\x02\x05");
- /// ```
- #[inline]
- fn write_u8(&mut self, n: u8) -> Result<()> {
- self.write_all(&[n])
- }
-
- /// Writes a signed 8 bit integer to the underlying writer.
- ///
- /// Note that since this writes a single byte, no byte order conversions
- /// are used. It is included for completeness.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write signed 8 bit integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::WriteBytesExt;
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_i8(2).unwrap();
- /// wtr.write_i8(-5).unwrap();
- /// assert_eq!(wtr, b"\x02\xfb");
- /// ```
- #[inline]
- fn write_i8(&mut self, n: i8) -> Result<()> {
- self.write_all(&[n as u8])
- }
-
- /// Writes an unsigned 16 bit integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write unsigned 16 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_u16::<BigEndian>(517).unwrap();
- /// wtr.write_u16::<BigEndian>(768).unwrap();
- /// assert_eq!(wtr, b"\x02\x05\x03\x00");
- /// ```
- #[inline]
- fn write_u16<T: ByteOrder>(&mut self, n: u16) -> Result<()> {
- let mut buf = [0; 2];
- T::write_u16(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes a signed 16 bit integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write signed 16 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_i16::<BigEndian>(193).unwrap();
- /// wtr.write_i16::<BigEndian>(-132).unwrap();
- /// assert_eq!(wtr, b"\x00\xc1\xff\x7c");
- /// ```
- #[inline]
- fn write_i16<T: ByteOrder>(&mut self, n: i16) -> Result<()> {
- let mut buf = [0; 2];
- T::write_i16(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes an unsigned 24 bit integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write unsigned 24 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_u24::<BigEndian>(267).unwrap();
- /// wtr.write_u24::<BigEndian>(120111).unwrap();
- /// assert_eq!(wtr, b"\x00\x01\x0b\x01\xd5\x2f");
- /// ```
- #[inline]
- fn write_u24<T: ByteOrder>(&mut self, n: u32) -> Result<()> {
- let mut buf = [0; 3];
- T::write_u24(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes a signed 24 bit integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write signed 24 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_i24::<BigEndian>(-34253).unwrap();
- /// wtr.write_i24::<BigEndian>(120111).unwrap();
- /// assert_eq!(wtr, b"\xff\x7a\x33\x01\xd5\x2f");
- /// ```
- #[inline]
- fn write_i24<T: ByteOrder>(&mut self, n: i32) -> Result<()> {
- let mut buf = [0; 3];
- T::write_i24(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes an unsigned 32 bit integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write unsigned 32 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_u32::<BigEndian>(267).unwrap();
- /// wtr.write_u32::<BigEndian>(1205419366).unwrap();
- /// assert_eq!(wtr, b"\x00\x00\x01\x0b\x47\xd9\x3d\x66");
- /// ```
- #[inline]
- fn write_u32<T: ByteOrder>(&mut self, n: u32) -> Result<()> {
- let mut buf = [0; 4];
- T::write_u32(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes a signed 32 bit integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write signed 32 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_i32::<BigEndian>(-34253).unwrap();
- /// wtr.write_i32::<BigEndian>(1205419366).unwrap();
- /// assert_eq!(wtr, b"\xff\xff\x7a\x33\x47\xd9\x3d\x66");
- /// ```
- #[inline]
- fn write_i32<T: ByteOrder>(&mut self, n: i32) -> Result<()> {
- let mut buf = [0; 4];
- T::write_i32(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes an unsigned 48 bit integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write unsigned 48 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_u48::<BigEndian>(52360336390828).unwrap();
- /// wtr.write_u48::<BigEndian>(541).unwrap();
- /// assert_eq!(wtr, b"\x2f\x9f\x17\x40\x3a\xac\x00\x00\x00\x00\x02\x1d");
- /// ```
- #[inline]
- fn write_u48<T: ByteOrder>(&mut self, n: u64) -> Result<()> {
- let mut buf = [0; 6];
- T::write_u48(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes a signed 48 bit integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write signed 48 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_i48::<BigEndian>(-108363435763825).unwrap();
- /// wtr.write_i48::<BigEndian>(77).unwrap();
- /// assert_eq!(wtr, b"\x9d\x71\xab\xe7\x97\x8f\x00\x00\x00\x00\x00\x4d");
- /// ```
- #[inline]
- fn write_i48<T: ByteOrder>(&mut self, n: i64) -> Result<()> {
- let mut buf = [0; 6];
- T::write_i48(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes an unsigned 64 bit integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write unsigned 64 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_u64::<BigEndian>(918733457491587).unwrap();
- /// wtr.write_u64::<BigEndian>(143).unwrap();
- /// assert_eq!(wtr, b"\x00\x03\x43\x95\x4d\x60\x86\x83\x00\x00\x00\x00\x00\x00\x00\x8f");
- /// ```
- #[inline]
- fn write_u64<T: ByteOrder>(&mut self, n: u64) -> Result<()> {
- let mut buf = [0; 8];
- T::write_u64(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes a signed 64 bit integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write signed 64 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_i64::<BigEndian>(i64::min_value()).unwrap();
- /// wtr.write_i64::<BigEndian>(i64::max_value()).unwrap();
- /// assert_eq!(wtr, b"\x80\x00\x00\x00\x00\x00\x00\x00\x7f\xff\xff\xff\xff\xff\xff\xff");
- /// ```
- #[inline]
- fn write_i64<T: ByteOrder>(&mut self, n: i64) -> Result<()> {
- let mut buf = [0; 8];
- T::write_i64(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes an unsigned 128 bit integer to the underlying writer.
- #[inline]
- fn write_u128<T: ByteOrder>(&mut self, n: u128) -> Result<()> {
- let mut buf = [0; 16];
- T::write_u128(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes a signed 128 bit integer to the underlying writer.
- #[inline]
- fn write_i128<T: ByteOrder>(&mut self, n: i128) -> Result<()> {
- let mut buf = [0; 16];
- T::write_i128(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes an unsigned n-bytes integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Panics
- ///
- /// If the given integer is not representable in the given number of bytes,
- /// this method panics. If `nbytes > 8`, this method panics.
- ///
- /// # Examples
- ///
- /// Write unsigned 40 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_uint::<BigEndian>(312550384361, 5).unwrap();
- /// wtr.write_uint::<BigEndian>(43, 5).unwrap();
- /// assert_eq!(wtr, b"\x48\xc5\x74\x62\xe9\x00\x00\x00\x00\x2b");
- /// ```
- #[inline]
- fn write_uint<T: ByteOrder>(
- &mut self,
- n: u64,
- nbytes: usize,
- ) -> Result<()> {
- let mut buf = [0; 8];
- T::write_uint(&mut buf, n, nbytes);
- self.write_all(&buf[0..nbytes])
- }
-
- /// Writes a signed n-bytes integer to the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Panics
- ///
- /// If the given integer is not representable in the given number of bytes,
- /// this method panics. If `nbytes > 8`, this method panics.
- ///
- /// # Examples
- ///
- /// Write signed 56 bit big-endian integers to a `Write`:
- ///
- /// ```rust
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_int::<BigEndian>(-3548172039376767, 7).unwrap();
- /// wtr.write_int::<BigEndian>(43, 7).unwrap();
- /// assert_eq!(wtr, b"\xf3\x64\xf4\xd1\xfd\xb0\x81\x00\x00\x00\x00\x00\x00\x2b");
- /// ```
- #[inline]
- fn write_int<T: ByteOrder>(
- &mut self,
- n: i64,
- nbytes: usize,
- ) -> Result<()> {
- let mut buf = [0; 8];
- T::write_int(&mut buf, n, nbytes);
- self.write_all(&buf[0..nbytes])
- }
-
- /// Writes an unsigned n-bytes integer to the underlying writer.
- ///
- /// If the given integer is not representable in the given number of bytes,
- /// this method panics. If `nbytes > 16`, this method panics.
- #[inline]
- fn write_uint128<T: ByteOrder>(
- &mut self,
- n: u128,
- nbytes: usize,
- ) -> Result<()> {
- let mut buf = [0; 16];
- T::write_uint128(&mut buf, n, nbytes);
- self.write_all(&buf[0..nbytes])
- }
-
- /// Writes a signed n-bytes integer to the underlying writer.
- ///
- /// If the given integer is not representable in the given number of bytes,
- /// this method panics. If `nbytes > 16`, this method panics.
- #[inline]
- fn write_int128<T: ByteOrder>(
- &mut self,
- n: i128,
- nbytes: usize,
- ) -> Result<()> {
- let mut buf = [0; 16];
- T::write_int128(&mut buf, n, nbytes);
- self.write_all(&buf[0..nbytes])
- }
-
- /// Writes a IEEE754 single-precision (4 bytes) floating point number to
- /// the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write a big-endian single-precision floating point number to a `Write`:
- ///
- /// ```rust
- /// use std::f32;
- ///
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_f32::<BigEndian>(f32::consts::PI).unwrap();
- /// assert_eq!(wtr, b"\x40\x49\x0f\xdb");
- /// ```
- #[inline]
- fn write_f32<T: ByteOrder>(&mut self, n: f32) -> Result<()> {
- let mut buf = [0; 4];
- T::write_f32(&mut buf, n);
- self.write_all(&buf)
- }
-
- /// Writes a IEEE754 double-precision (8 bytes) floating point number to
- /// the underlying writer.
- ///
- /// # Errors
- ///
- /// This method returns the same errors as [`Write::write_all`].
- ///
- /// [`Write::write_all`]: https://doc.rust-lang.org/std/io/trait.Write.html#method.write_all
- ///
- /// # Examples
- ///
- /// Write a big-endian double-precision floating point number to a `Write`:
- ///
- /// ```rust
- /// use std::f64;
- ///
- /// use byteorder::{BigEndian, WriteBytesExt};
- ///
- /// let mut wtr = Vec::new();
- /// wtr.write_f64::<BigEndian>(f64::consts::PI).unwrap();
- /// assert_eq!(wtr, b"\x40\x09\x21\xfb\x54\x44\x2d\x18");
- /// ```
- #[inline]
- fn write_f64<T: ByteOrder>(&mut self, n: f64) -> Result<()> {
- let mut buf = [0; 8];
- T::write_f64(&mut buf, n);
- self.write_all(&buf)
- }
-}
-
-/// All types that implement `Write` get methods defined in `WriteBytesExt`
-/// for free.
-impl<W: io::Write + ?Sized> WriteBytesExt for W {}
-
-/// Convert a slice of T (where T is plain old data) to its mutable binary
-/// representation.
-///
-/// This function is wildly unsafe because it permits arbitrary modification of
-/// the binary representation of any `Copy` type. Use with care. It's intended
-/// to be called only where `T` is a numeric type.
-unsafe fn slice_to_u8_mut<T: Copy>(slice: &mut [T]) -> &mut [u8] {
- use std::mem::size_of;
-
- let len = size_of::<T>() * slice.len();
- slice::from_raw_parts_mut(slice.as_mut_ptr() as *mut u8, len)
-}
diff --git a/vendor/byteorder/src/lib.rs b/vendor/byteorder/src/lib.rs
deleted file mode 100644
index cc37cca6a..000000000
--- a/vendor/byteorder/src/lib.rs
+++ /dev/null
@@ -1,4052 +0,0 @@
-/*!
-This crate provides convenience methods for encoding and decoding numbers in
-either [big-endian or little-endian order].
-
-The organization of the crate is pretty simple. A trait, [`ByteOrder`], specifies
-byte conversion methods for each type of number in Rust (sans numbers that have
-a platform dependent size like `usize` and `isize`). Two types, [`BigEndian`]
-and [`LittleEndian`] implement these methods. Finally, [`ReadBytesExt`] and
-[`WriteBytesExt`] provide convenience methods available to all types that
-implement [`Read`] and [`Write`].
-
-An alias, [`NetworkEndian`], for [`BigEndian`] is provided to help improve
-code clarity.
-
-An additional alias, [`NativeEndian`], is provided for the endianness of the
-local platform. This is convenient when serializing data for use and
-conversions are not desired.
-
-# Examples
-
-Read unsigned 16 bit big-endian integers from a [`Read`] type:
-
-```rust
-use std::io::Cursor;
-use byteorder::{BigEndian, ReadBytesExt};
-
-let mut rdr = Cursor::new(vec![2, 5, 3, 0]);
-// Note that we use type parameters to indicate which kind of byte order
-// we want!
-assert_eq!(517, rdr.read_u16::<BigEndian>().unwrap());
-assert_eq!(768, rdr.read_u16::<BigEndian>().unwrap());
-```
-
-Write unsigned 16 bit little-endian integers to a [`Write`] type:
-
-```rust
-use byteorder::{LittleEndian, WriteBytesExt};
-
-let mut wtr = vec![];
-wtr.write_u16::<LittleEndian>(517).unwrap();
-wtr.write_u16::<LittleEndian>(768).unwrap();
-assert_eq!(wtr, vec![5, 2, 0, 3]);
-```
-
-# Optional Features
-
-This crate optionally provides support for 128 bit values (`i128` and `u128`)
-when built with the `i128` feature enabled.
-
-This crate can also be used without the standard library.
-
-# Alternatives
-
-Note that as of Rust 1.32, the standard numeric types provide built-in methods
-like `to_le_bytes` and `from_le_bytes`, which support some of the same use
-cases.
-
-[big-endian or little-endian order]: https://en.wikipedia.org/wiki/Endianness
-[`ByteOrder`]: trait.ByteOrder.html
-[`BigEndian`]: enum.BigEndian.html
-[`LittleEndian`]: enum.LittleEndian.html
-[`ReadBytesExt`]: trait.ReadBytesExt.html
-[`WriteBytesExt`]: trait.WriteBytesExt.html
-[`NetworkEndian`]: type.NetworkEndian.html
-[`NativeEndian`]: type.NativeEndian.html
-[`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html
-[`Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
-*/
-
-#![deny(missing_docs)]
-#![cfg_attr(not(feature = "std"), no_std)]
-
-use core::{
- convert::TryInto, fmt::Debug, hash::Hash, ptr::copy_nonoverlapping, slice,
-};
-
-#[cfg(feature = "std")]
-pub use crate::io::{ReadBytesExt, WriteBytesExt};
-
-#[cfg(feature = "std")]
-mod io;
-
-#[inline]
-fn extend_sign(val: u64, nbytes: usize) -> i64 {
- let shift = (8 - nbytes) * 8;
- (val << shift) as i64 >> shift
-}
-
-#[inline]
-fn extend_sign128(val: u128, nbytes: usize) -> i128 {
- let shift = (16 - nbytes) * 8;
- (val << shift) as i128 >> shift
-}
-
-#[inline]
-fn unextend_sign(val: i64, nbytes: usize) -> u64 {
- let shift = (8 - nbytes) * 8;
- (val << shift) as u64 >> shift
-}
-
-#[inline]
-fn unextend_sign128(val: i128, nbytes: usize) -> u128 {
- let shift = (16 - nbytes) * 8;
- (val << shift) as u128 >> shift
-}
-
-#[inline]
-fn pack_size(n: u64) -> usize {
- if n < 1 << 8 {
- 1
- } else if n < 1 << 16 {
- 2
- } else if n < 1 << 24 {
- 3
- } else if n < 1 << 32 {
- 4
- } else if n < 1 << 40 {
- 5
- } else if n < 1 << 48 {
- 6
- } else if n < 1 << 56 {
- 7
- } else {
- 8
- }
-}
-
-#[inline]
-fn pack_size128(n: u128) -> usize {
- if n < 1 << 8 {
- 1
- } else if n < 1 << 16 {
- 2
- } else if n < 1 << 24 {
- 3
- } else if n < 1 << 32 {
- 4
- } else if n < 1 << 40 {
- 5
- } else if n < 1 << 48 {
- 6
- } else if n < 1 << 56 {
- 7
- } else if n < 1 << 64 {
- 8
- } else if n < 1 << 72 {
- 9
- } else if n < 1 << 80 {
- 10
- } else if n < 1 << 88 {
- 11
- } else if n < 1 << 96 {
- 12
- } else if n < 1 << 104 {
- 13
- } else if n < 1 << 112 {
- 14
- } else if n < 1 << 120 {
- 15
- } else {
- 16
- }
-}
-
-mod private {
- /// Sealed stops crates other than byteorder from implementing any traits
- /// that use it.
- pub trait Sealed {}
- impl Sealed for super::LittleEndian {}
- impl Sealed for super::BigEndian {}
-}
-
-/// `ByteOrder` describes types that can serialize integers as bytes.
-///
-/// Note that `Self` does not appear anywhere in this trait's definition!
-/// Therefore, in order to use it, you'll need to use syntax like
-/// `T::read_u16(&[0, 1])` where `T` implements `ByteOrder`.
-///
-/// This crate provides two types that implement `ByteOrder`: [`BigEndian`]
-/// and [`LittleEndian`].
-/// This trait is sealed and cannot be implemented for callers to avoid
-/// breaking backwards compatibility when adding new derived traits.
-///
-/// # Examples
-///
-/// Write and read `u32` numbers in little endian order:
-///
-/// ```rust
-/// use byteorder::{ByteOrder, LittleEndian};
-///
-/// let mut buf = [0; 4];
-/// LittleEndian::write_u32(&mut buf, 1_000_000);
-/// assert_eq!(1_000_000, LittleEndian::read_u32(&buf));
-/// ```
-///
-/// Write and read `i16` numbers in big endian order:
-///
-/// ```rust
-/// use byteorder::{ByteOrder, BigEndian};
-///
-/// let mut buf = [0; 2];
-/// BigEndian::write_i16(&mut buf, -5_000);
-/// assert_eq!(-5_000, BigEndian::read_i16(&buf));
-/// ```
-///
-/// [`BigEndian`]: enum.BigEndian.html
-/// [`LittleEndian`]: enum.LittleEndian.html
-pub trait ByteOrder:
- Clone
- + Copy
- + Debug
- + Default
- + Eq
- + Hash
- + Ord
- + PartialEq
- + PartialOrd
- + private::Sealed
-{
- /// Reads an unsigned 16 bit integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 2`.
- fn read_u16(buf: &[u8]) -> u16;
-
- /// Reads an unsigned 24 bit integer from `buf`, stored in u32.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 3`.
- ///
- /// # Examples
- ///
- /// Write and read 24 bit `u32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_u24(&mut buf, 1_000_000);
- /// assert_eq!(1_000_000, LittleEndian::read_u24(&buf));
- /// ```
- fn read_u24(buf: &[u8]) -> u32 {
- Self::read_uint(buf, 3) as u32
- }
-
- /// Reads an unsigned 32 bit integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 4`.
- ///
- /// # Examples
- ///
- /// Write and read `u32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 4];
- /// LittleEndian::write_u32(&mut buf, 1_000_000);
- /// assert_eq!(1_000_000, LittleEndian::read_u32(&buf));
- /// ```
- fn read_u32(buf: &[u8]) -> u32;
-
- /// Reads an unsigned 48 bit integer from `buf`, stored in u64.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 6`.
- ///
- /// # Examples
- ///
- /// Write and read 48 bit `u64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 6];
- /// LittleEndian::write_u48(&mut buf, 1_000_000_000_000);
- /// assert_eq!(1_000_000_000_000, LittleEndian::read_u48(&buf));
- /// ```
- fn read_u48(buf: &[u8]) -> u64 {
- Self::read_uint(buf, 6) as u64
- }
-
- /// Reads an unsigned 64 bit integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 8`.
- ///
- /// # Examples
- ///
- /// Write and read `u64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 8];
- /// LittleEndian::write_u64(&mut buf, 1_000_000);
- /// assert_eq!(1_000_000, LittleEndian::read_u64(&buf));
- /// ```
- fn read_u64(buf: &[u8]) -> u64;
-
- /// Reads an unsigned 128 bit integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 16`.
- ///
- /// # Examples
- ///
- /// Write and read `u128` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 16];
- /// LittleEndian::write_u128(&mut buf, 1_000_000);
- /// assert_eq!(1_000_000, LittleEndian::read_u128(&buf));
- /// ```
- fn read_u128(buf: &[u8]) -> u128;
-
- /// Reads an unsigned n-bytes integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `nbytes < 1` or `nbytes > 8` or
- /// `buf.len() < nbytes`
- ///
- /// # Examples
- ///
- /// Write and read an n-byte number in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_uint(&mut buf, 1_000_000, 3);
- /// assert_eq!(1_000_000, LittleEndian::read_uint(&buf, 3));
- /// ```
- fn read_uint(buf: &[u8], nbytes: usize) -> u64;
-
- /// Reads an unsigned n-bytes integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `nbytes < 1` or `nbytes > 16` or
- /// `buf.len() < nbytes`
- ///
- /// # Examples
- ///
- /// Write and read an n-byte number in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_uint128(&mut buf, 1_000_000, 3);
- /// assert_eq!(1_000_000, LittleEndian::read_uint128(&buf, 3));
- /// ```
- fn read_uint128(buf: &[u8], nbytes: usize) -> u128;
-
- /// Writes an unsigned 16 bit integer `n` to `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 2`.
- ///
- /// # Examples
- ///
- /// Write and read `u16` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 2];
- /// LittleEndian::write_u16(&mut buf, 1_000);
- /// assert_eq!(1_000, LittleEndian::read_u16(&buf));
- /// ```
- fn write_u16(buf: &mut [u8], n: u16);
-
- /// Writes an unsigned 24 bit integer `n` to `buf`, stored in u32.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 3`.
- ///
- /// # Examples
- ///
- /// Write and read 24 bit `u32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_u24(&mut buf, 1_000_000);
- /// assert_eq!(1_000_000, LittleEndian::read_u24(&buf));
- /// ```
- fn write_u24(buf: &mut [u8], n: u32) {
- Self::write_uint(buf, n as u64, 3)
- }
-
- /// Writes an unsigned 32 bit integer `n` to `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 4`.
- ///
- /// # Examples
- ///
- /// Write and read `u32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 4];
- /// LittleEndian::write_u32(&mut buf, 1_000_000);
- /// assert_eq!(1_000_000, LittleEndian::read_u32(&buf));
- /// ```
- fn write_u32(buf: &mut [u8], n: u32);
-
- /// Writes an unsigned 48 bit integer `n` to `buf`, stored in u64.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 6`.
- ///
- /// # Examples
- ///
- /// Write and read 48 bit `u64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 6];
- /// LittleEndian::write_u48(&mut buf, 1_000_000_000_000);
- /// assert_eq!(1_000_000_000_000, LittleEndian::read_u48(&buf));
- /// ```
- fn write_u48(buf: &mut [u8], n: u64) {
- Self::write_uint(buf, n as u64, 6)
- }
-
- /// Writes an unsigned 64 bit integer `n` to `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 8`.
- ///
- /// # Examples
- ///
- /// Write and read `u64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 8];
- /// LittleEndian::write_u64(&mut buf, 1_000_000);
- /// assert_eq!(1_000_000, LittleEndian::read_u64(&buf));
- /// ```
- fn write_u64(buf: &mut [u8], n: u64);
-
- /// Writes an unsigned 128 bit integer `n` to `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 16`.
- ///
- /// # Examples
- ///
- /// Write and read `u128` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 16];
- /// LittleEndian::write_u128(&mut buf, 1_000_000);
- /// assert_eq!(1_000_000, LittleEndian::read_u128(&buf));
- /// ```
- fn write_u128(buf: &mut [u8], n: u128);
-
- /// Writes an unsigned integer `n` to `buf` using only `nbytes`.
- ///
- /// # Panics
- ///
- /// If `n` is not representable in `nbytes`, or if `nbytes` is `> 8`, then
- /// this method panics.
- ///
- /// # Examples
- ///
- /// Write and read an n-byte number in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_uint(&mut buf, 1_000_000, 3);
- /// assert_eq!(1_000_000, LittleEndian::read_uint(&buf, 3));
- /// ```
- fn write_uint(buf: &mut [u8], n: u64, nbytes: usize);
-
- /// Writes an unsigned integer `n` to `buf` using only `nbytes`.
- ///
- /// # Panics
- ///
- /// If `n` is not representable in `nbytes`, or if `nbytes` is `> 16`, then
- /// this method panics.
- ///
- /// # Examples
- ///
- /// Write and read an n-byte number in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_uint128(&mut buf, 1_000_000, 3);
- /// assert_eq!(1_000_000, LittleEndian::read_uint128(&buf, 3));
- /// ```
- fn write_uint128(buf: &mut [u8], n: u128, nbytes: usize);
-
- /// Reads a signed 16 bit integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 2`.
- ///
- /// # Examples
- ///
- /// Write and read `i16` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 2];
- /// LittleEndian::write_i16(&mut buf, -1_000);
- /// assert_eq!(-1_000, LittleEndian::read_i16(&buf));
- /// ```
- #[inline]
- fn read_i16(buf: &[u8]) -> i16 {
- Self::read_u16(buf) as i16
- }
-
- /// Reads a signed 24 bit integer from `buf`, stored in i32.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 3`.
- ///
- /// # Examples
- ///
- /// Write and read 24 bit `i32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_i24(&mut buf, -1_000_000);
- /// assert_eq!(-1_000_000, LittleEndian::read_i24(&buf));
- /// ```
- #[inline]
- fn read_i24(buf: &[u8]) -> i32 {
- Self::read_int(buf, 3) as i32
- }
-
- /// Reads a signed 32 bit integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 4`.
- ///
- /// # Examples
- ///
- /// Write and read `i32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 4];
- /// LittleEndian::write_i32(&mut buf, -1_000_000);
- /// assert_eq!(-1_000_000, LittleEndian::read_i32(&buf));
- /// ```
- #[inline]
- fn read_i32(buf: &[u8]) -> i32 {
- Self::read_u32(buf) as i32
- }
-
- /// Reads a signed 48 bit integer from `buf`, stored in i64.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 6`.
- ///
- /// # Examples
- ///
- /// Write and read 48 bit `i64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 6];
- /// LittleEndian::write_i48(&mut buf, -1_000_000_000_000);
- /// assert_eq!(-1_000_000_000_000, LittleEndian::read_i48(&buf));
- /// ```
- #[inline]
- fn read_i48(buf: &[u8]) -> i64 {
- Self::read_int(buf, 6) as i64
- }
-
- /// Reads a signed 64 bit integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 8`.
- ///
- /// # Examples
- ///
- /// Write and read `i64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 8];
- /// LittleEndian::write_i64(&mut buf, -1_000_000_000);
- /// assert_eq!(-1_000_000_000, LittleEndian::read_i64(&buf));
- /// ```
- #[inline]
- fn read_i64(buf: &[u8]) -> i64 {
- Self::read_u64(buf) as i64
- }
-
- /// Reads a signed 128 bit integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 16`.
- ///
- /// # Examples
- ///
- /// Write and read `i128` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 16];
- /// LittleEndian::write_i128(&mut buf, -1_000_000_000);
- /// assert_eq!(-1_000_000_000, LittleEndian::read_i128(&buf));
- /// ```
- #[inline]
- fn read_i128(buf: &[u8]) -> i128 {
- Self::read_u128(buf) as i128
- }
-
- /// Reads a signed n-bytes integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `nbytes < 1` or `nbytes > 8` or
- /// `buf.len() < nbytes`
- ///
- /// # Examples
- ///
- /// Write and read n-length signed numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_int(&mut buf, -1_000, 3);
- /// assert_eq!(-1_000, LittleEndian::read_int(&buf, 3));
- /// ```
- #[inline]
- fn read_int(buf: &[u8], nbytes: usize) -> i64 {
- extend_sign(Self::read_uint(buf, nbytes), nbytes)
- }
-
- /// Reads a signed n-bytes integer from `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `nbytes < 1` or `nbytes > 16` or
- /// `buf.len() < nbytes`
- ///
- /// # Examples
- ///
- /// Write and read n-length signed numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_int128(&mut buf, -1_000, 3);
- /// assert_eq!(-1_000, LittleEndian::read_int128(&buf, 3));
- /// ```
- #[inline]
- fn read_int128(buf: &[u8], nbytes: usize) -> i128 {
- extend_sign128(Self::read_uint128(buf, nbytes), nbytes)
- }
-
- /// Reads a IEEE754 single-precision (4 bytes) floating point number.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 4`.
- ///
- /// # Examples
- ///
- /// Write and read `f32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let e = 2.71828;
- /// let mut buf = [0; 4];
- /// LittleEndian::write_f32(&mut buf, e);
- /// assert_eq!(e, LittleEndian::read_f32(&buf));
- /// ```
- #[inline]
- fn read_f32(buf: &[u8]) -> f32 {
- f32::from_bits(Self::read_u32(buf))
- }
-
- /// Reads a IEEE754 double-precision (8 bytes) floating point number.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 8`.
- ///
- /// # Examples
- ///
- /// Write and read `f64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let phi = 1.6180339887;
- /// let mut buf = [0; 8];
- /// LittleEndian::write_f64(&mut buf, phi);
- /// assert_eq!(phi, LittleEndian::read_f64(&buf));
- /// ```
- #[inline]
- fn read_f64(buf: &[u8]) -> f64 {
- f64::from_bits(Self::read_u64(buf))
- }
-
- /// Writes a signed 16 bit integer `n` to `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 2`.
- ///
- /// # Examples
- ///
- /// Write and read `i16` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 2];
- /// LittleEndian::write_i16(&mut buf, -1_000);
- /// assert_eq!(-1_000, LittleEndian::read_i16(&buf));
- /// ```
- #[inline]
- fn write_i16(buf: &mut [u8], n: i16) {
- Self::write_u16(buf, n as u16)
- }
-
- /// Writes a signed 24 bit integer `n` to `buf`, stored in i32.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 3`.
- ///
- /// # Examples
- ///
- /// Write and read 24 bit `i32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_i24(&mut buf, -1_000_000);
- /// assert_eq!(-1_000_000, LittleEndian::read_i24(&buf));
- /// ```
- #[inline]
- fn write_i24(buf: &mut [u8], n: i32) {
- Self::write_int(buf, n as i64, 3)
- }
-
- /// Writes a signed 32 bit integer `n` to `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 4`.
- ///
- /// # Examples
- ///
- /// Write and read `i32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 4];
- /// LittleEndian::write_i32(&mut buf, -1_000_000);
- /// assert_eq!(-1_000_000, LittleEndian::read_i32(&buf));
- /// ```
- #[inline]
- fn write_i32(buf: &mut [u8], n: i32) {
- Self::write_u32(buf, n as u32)
- }
-
- /// Writes a signed 48 bit integer `n` to `buf`, stored in i64.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 6`.
- ///
- /// # Examples
- ///
- /// Write and read 48 bit `i64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 6];
- /// LittleEndian::write_i48(&mut buf, -1_000_000_000_000);
- /// assert_eq!(-1_000_000_000_000, LittleEndian::read_i48(&buf));
- /// ```
- #[inline]
- fn write_i48(buf: &mut [u8], n: i64) {
- Self::write_int(buf, n as i64, 6)
- }
-
- /// Writes a signed 64 bit integer `n` to `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 8`.
- ///
- /// # Examples
- ///
- /// Write and read `i64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 8];
- /// LittleEndian::write_i64(&mut buf, -1_000_000_000);
- /// assert_eq!(-1_000_000_000, LittleEndian::read_i64(&buf));
- /// ```
- #[inline]
- fn write_i64(buf: &mut [u8], n: i64) {
- Self::write_u64(buf, n as u64)
- }
-
- /// Writes a signed 128 bit integer `n` to `buf`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 16`.
- ///
- /// # Examples
- ///
- /// Write and read n-byte `i128` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 16];
- /// LittleEndian::write_i128(&mut buf, -1_000_000_000);
- /// assert_eq!(-1_000_000_000, LittleEndian::read_i128(&buf));
- /// ```
- #[inline]
- fn write_i128(buf: &mut [u8], n: i128) {
- Self::write_u128(buf, n as u128)
- }
-
- /// Writes a signed integer `n` to `buf` using only `nbytes`.
- ///
- /// # Panics
- ///
- /// If `n` is not representable in `nbytes`, or if `nbytes` is `> 8`, then
- /// this method panics.
- ///
- /// # Examples
- ///
- /// Write and read an n-byte number in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_int(&mut buf, -1_000, 3);
- /// assert_eq!(-1_000, LittleEndian::read_int(&buf, 3));
- /// ```
- #[inline]
- fn write_int(buf: &mut [u8], n: i64, nbytes: usize) {
- Self::write_uint(buf, unextend_sign(n, nbytes), nbytes)
- }
-
- /// Writes a signed integer `n` to `buf` using only `nbytes`.
- ///
- /// # Panics
- ///
- /// If `n` is not representable in `nbytes`, or if `nbytes` is `> 16`, then
- /// this method panics.
- ///
- /// # Examples
- ///
- /// Write and read n-length signed numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut buf = [0; 3];
- /// LittleEndian::write_int128(&mut buf, -1_000, 3);
- /// assert_eq!(-1_000, LittleEndian::read_int128(&buf, 3));
- /// ```
- #[inline]
- fn write_int128(buf: &mut [u8], n: i128, nbytes: usize) {
- Self::write_uint128(buf, unextend_sign128(n, nbytes), nbytes)
- }
-
- /// Writes a IEEE754 single-precision (4 bytes) floating point number.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 4`.
- ///
- /// # Examples
- ///
- /// Write and read `f32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let e = 2.71828;
- /// let mut buf = [0; 4];
- /// LittleEndian::write_f32(&mut buf, e);
- /// assert_eq!(e, LittleEndian::read_f32(&buf));
- /// ```
- #[inline]
- fn write_f32(buf: &mut [u8], n: f32) {
- Self::write_u32(buf, n.to_bits())
- }
-
- /// Writes a IEEE754 double-precision (8 bytes) floating point number.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() < 8`.
- ///
- /// # Examples
- ///
- /// Write and read `f64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let phi = 1.6180339887;
- /// let mut buf = [0; 8];
- /// LittleEndian::write_f64(&mut buf, phi);
- /// assert_eq!(phi, LittleEndian::read_f64(&buf));
- /// ```
- #[inline]
- fn write_f64(buf: &mut [u8], n: f64) {
- Self::write_u64(buf, n.to_bits())
- }
-
- /// Reads unsigned 16 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 2*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `u16` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 8];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_u16_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_u16_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn read_u16_into(src: &[u8], dst: &mut [u16]);
-
- /// Reads unsigned 32 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 4*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `u32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 16];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_u32_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_u32_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn read_u32_into(src: &[u8], dst: &mut [u32]);
-
- /// Reads unsigned 64 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 8*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `u64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 32];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_u64_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_u64_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn read_u64_into(src: &[u8], dst: &mut [u64]);
-
- /// Reads unsigned 128 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 16*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `u128` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 64];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_u128_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_u128_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn read_u128_into(src: &[u8], dst: &mut [u128]);
-
- /// Reads signed 16 bit integers from `src` to `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() != 2*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `i16` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 8];
- /// let numbers_given = [1, 2, 0x0f, 0xee];
- /// LittleEndian::write_i16_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_i16_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- #[inline]
- fn read_i16_into(src: &[u8], dst: &mut [i16]) {
- let dst = unsafe {
- slice::from_raw_parts_mut(dst.as_mut_ptr() as *mut u16, dst.len())
- };
- Self::read_u16_into(src, dst)
- }
-
- /// Reads signed 32 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 4*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `i32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 16];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_i32_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_i32_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- #[inline]
- fn read_i32_into(src: &[u8], dst: &mut [i32]) {
- let dst = unsafe {
- slice::from_raw_parts_mut(dst.as_mut_ptr() as *mut u32, dst.len())
- };
- Self::read_u32_into(src, dst);
- }
-
- /// Reads signed 64 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 8*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `i64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 32];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_i64_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_i64_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- #[inline]
- fn read_i64_into(src: &[u8], dst: &mut [i64]) {
- let dst = unsafe {
- slice::from_raw_parts_mut(dst.as_mut_ptr() as *mut u64, dst.len())
- };
- Self::read_u64_into(src, dst);
- }
-
- /// Reads signed 128 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 16*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `i128` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 64];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_i128_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_i128_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- #[inline]
- fn read_i128_into(src: &[u8], dst: &mut [i128]) {
- let dst = unsafe {
- slice::from_raw_parts_mut(dst.as_mut_ptr() as *mut u128, dst.len())
- };
- Self::read_u128_into(src, dst);
- }
-
- /// Reads IEEE754 single-precision (4 bytes) floating point numbers from
- /// `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 4*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `f32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 16];
- /// let numbers_given = [1.0, 2.0, 31.312e31, -11.32e19];
- /// LittleEndian::write_f32_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0.0; 4];
- /// LittleEndian::read_f32_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- #[inline]
- fn read_f32_into(src: &[u8], dst: &mut [f32]) {
- let dst = unsafe {
- slice::from_raw_parts_mut(dst.as_mut_ptr() as *mut u32, dst.len())
- };
- Self::read_u32_into(src, dst);
- }
-
- /// **DEPRECATED**.
- ///
- /// This method is deprecated. Use `read_f32_into` instead.
- /// Reads IEEE754 single-precision (4 bytes) floating point numbers from
- /// `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 4*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `f32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 16];
- /// let numbers_given = [1.0, 2.0, 31.312e31, -11.32e19];
- /// LittleEndian::write_f32_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0.0; 4];
- /// LittleEndian::read_f32_into_unchecked(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- #[inline]
- #[deprecated(since = "1.3.0", note = "please use `read_f32_into` instead")]
- fn read_f32_into_unchecked(src: &[u8], dst: &mut [f32]) {
- Self::read_f32_into(src, dst);
- }
-
- /// Reads IEEE754 single-precision (4 bytes) floating point numbers from
- /// `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 8*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `f64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 32];
- /// let numbers_given = [1.0, 2.0, 31.312e211, -11.32e91];
- /// LittleEndian::write_f64_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0.0; 4];
- /// LittleEndian::read_f64_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- #[inline]
- fn read_f64_into(src: &[u8], dst: &mut [f64]) {
- let dst = unsafe {
- slice::from_raw_parts_mut(dst.as_mut_ptr() as *mut u64, dst.len())
- };
- Self::read_u64_into(src, dst);
- }
-
- /// **DEPRECATED**.
- ///
- /// This method is deprecated. Use `read_f64_into` instead.
- ///
- /// Reads IEEE754 single-precision (4 bytes) floating point numbers from
- /// `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 8*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `f64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 32];
- /// let numbers_given = [1.0, 2.0, 31.312e211, -11.32e91];
- /// LittleEndian::write_f64_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0.0; 4];
- /// LittleEndian::read_f64_into_unchecked(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- #[inline]
- #[deprecated(since = "1.3.0", note = "please use `read_f64_into` instead")]
- fn read_f64_into_unchecked(src: &[u8], dst: &mut [f64]) {
- Self::read_f64_into(src, dst);
- }
-
- /// Writes unsigned 16 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `dst.len() != 2*src.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `u16` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 8];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_u16_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_u16_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_u16_into(src: &[u16], dst: &mut [u8]);
-
- /// Writes unsigned 32 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `dst.len() != 4*src.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `u32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 16];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_u32_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_u32_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_u32_into(src: &[u32], dst: &mut [u8]);
-
- /// Writes unsigned 64 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `dst.len() != 8*src.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `u64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 32];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_u64_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_u64_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_u64_into(src: &[u64], dst: &mut [u8]);
-
- /// Writes unsigned 128 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `dst.len() != 16*src.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `u128` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 64];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_u128_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_u128_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_u128_into(src: &[u128], dst: &mut [u8]);
-
- /// Writes signed 8 bit integers from `src` into `dst`.
- ///
- /// Note that since each `i8` is a single byte, no byte order conversions
- /// are used. This method is included because it provides a safe, simple
- /// way for the caller to write from a `&[i8]` buffer. (Without this
- /// method, the caller would have to either use `unsafe` code or convert
- /// each byte to `u8` individually.)
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() != src.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `i8` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian, ReadBytesExt};
- ///
- /// let mut bytes = [0; 4];
- /// let numbers_given = [1, 2, 0xf, 0xe];
- /// LittleEndian::write_i8_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// bytes.as_ref().read_i8_into(&mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_i8_into(src: &[i8], dst: &mut [u8]) {
- let src = unsafe {
- slice::from_raw_parts(src.as_ptr() as *const u8, src.len())
- };
- dst.copy_from_slice(src);
- }
-
- /// Writes signed 16 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `buf.len() != 2*src.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `i16` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 8];
- /// let numbers_given = [1, 2, 0x0f, 0xee];
- /// LittleEndian::write_i16_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_i16_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_i16_into(src: &[i16], dst: &mut [u8]) {
- let src = unsafe {
- slice::from_raw_parts(src.as_ptr() as *const u16, src.len())
- };
- Self::write_u16_into(src, dst);
- }
-
- /// Writes signed 32 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `dst.len() != 4*src.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `i32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 16];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_i32_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_i32_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_i32_into(src: &[i32], dst: &mut [u8]) {
- let src = unsafe {
- slice::from_raw_parts(src.as_ptr() as *const u32, src.len())
- };
- Self::write_u32_into(src, dst);
- }
-
- /// Writes signed 64 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `dst.len() != 8*src.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `i64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 32];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_i64_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_i64_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_i64_into(src: &[i64], dst: &mut [u8]) {
- let src = unsafe {
- slice::from_raw_parts(src.as_ptr() as *const u64, src.len())
- };
- Self::write_u64_into(src, dst);
- }
-
- /// Writes signed 128 bit integers from `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `dst.len() != 16*src.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `i128` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 64];
- /// let numbers_given = [1, 2, 0xf00f, 0xffee];
- /// LittleEndian::write_i128_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0; 4];
- /// LittleEndian::read_i128_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_i128_into(src: &[i128], dst: &mut [u8]) {
- let src = unsafe {
- slice::from_raw_parts(src.as_ptr() as *const u128, src.len())
- };
- Self::write_u128_into(src, dst);
- }
-
- /// Writes IEEE754 single-precision (4 bytes) floating point numbers from
- /// `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 4*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `f32` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 16];
- /// let numbers_given = [1.0, 2.0, 31.312e31, -11.32e19];
- /// LittleEndian::write_f32_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0.0; 4];
- /// LittleEndian::read_f32_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_f32_into(src: &[f32], dst: &mut [u8]) {
- let src = unsafe {
- slice::from_raw_parts(src.as_ptr() as *const u32, src.len())
- };
- Self::write_u32_into(src, dst);
- }
-
- /// Writes IEEE754 double-precision (8 bytes) floating point numbers from
- /// `src` into `dst`.
- ///
- /// # Panics
- ///
- /// Panics when `src.len() != 8*dst.len()`.
- ///
- /// # Examples
- ///
- /// Write and read `f64` numbers in little endian order:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, LittleEndian};
- ///
- /// let mut bytes = [0; 32];
- /// let numbers_given = [1.0, 2.0, 31.312e211, -11.32e91];
- /// LittleEndian::write_f64_into(&numbers_given, &mut bytes);
- ///
- /// let mut numbers_got = [0.0; 4];
- /// LittleEndian::read_f64_into(&bytes, &mut numbers_got);
- /// assert_eq!(numbers_given, numbers_got);
- /// ```
- fn write_f64_into(src: &[f64], dst: &mut [u8]) {
- let src = unsafe {
- slice::from_raw_parts(src.as_ptr() as *const u64, src.len())
- };
- Self::write_u64_into(src, dst);
- }
-
- /// Converts the given slice of unsigned 16 bit integers to a particular
- /// endianness.
- ///
- /// If the endianness matches the endianness of the host platform, then
- /// this is a no-op.
- ///
- /// # Examples
- ///
- /// Convert the host platform's endianness to big-endian:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, BigEndian};
- ///
- /// let mut numbers = [5, 65000];
- /// BigEndian::from_slice_u16(&mut numbers);
- /// assert_eq!(numbers, [5u16.to_be(), 65000u16.to_be()]);
- /// ```
- fn from_slice_u16(numbers: &mut [u16]);
-
- /// Converts the given slice of unsigned 32 bit integers to a particular
- /// endianness.
- ///
- /// If the endianness matches the endianness of the host platform, then
- /// this is a no-op.
- ///
- /// # Examples
- ///
- /// Convert the host platform's endianness to big-endian:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, BigEndian};
- ///
- /// let mut numbers = [5, 65000];
- /// BigEndian::from_slice_u32(&mut numbers);
- /// assert_eq!(numbers, [5u32.to_be(), 65000u32.to_be()]);
- /// ```
- fn from_slice_u32(numbers: &mut [u32]);
-
- /// Converts the given slice of unsigned 64 bit integers to a particular
- /// endianness.
- ///
- /// If the endianness matches the endianness of the host platform, then
- /// this is a no-op.
- ///
- /// # Examples
- ///
- /// Convert the host platform's endianness to big-endian:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, BigEndian};
- ///
- /// let mut numbers = [5, 65000];
- /// BigEndian::from_slice_u64(&mut numbers);
- /// assert_eq!(numbers, [5u64.to_be(), 65000u64.to_be()]);
- /// ```
- fn from_slice_u64(numbers: &mut [u64]);
-
- /// Converts the given slice of unsigned 128 bit integers to a particular
- /// endianness.
- ///
- /// If the endianness matches the endianness of the host platform, then
- /// this is a no-op.
- ///
- /// # Examples
- ///
- /// Convert the host platform's endianness to big-endian:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, BigEndian};
- ///
- /// let mut numbers = [5, 65000];
- /// BigEndian::from_slice_u128(&mut numbers);
- /// assert_eq!(numbers, [5u128.to_be(), 65000u128.to_be()]);
- /// ```
- fn from_slice_u128(numbers: &mut [u128]);
-
- /// Converts the given slice of signed 16 bit integers to a particular
- /// endianness.
- ///
- /// If the endianness matches the endianness of the host platform, then
- /// this is a no-op.
- ///
- /// # Examples
- ///
- /// Convert the host platform's endianness to big-endian:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, BigEndian};
- ///
- /// let mut numbers = [5, 6500];
- /// BigEndian::from_slice_i16(&mut numbers);
- /// assert_eq!(numbers, [5i16.to_be(), 6500i16.to_be()]);
- /// ```
- #[inline]
- fn from_slice_i16(src: &mut [i16]) {
- let src = unsafe {
- slice::from_raw_parts_mut(src.as_mut_ptr() as *mut u16, src.len())
- };
- Self::from_slice_u16(src);
- }
-
- /// Converts the given slice of signed 32 bit integers to a particular
- /// endianness.
- ///
- /// If the endianness matches the endianness of the host platform, then
- /// this is a no-op.
- ///
- /// # Examples
- ///
- /// Convert the host platform's endianness to big-endian:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, BigEndian};
- ///
- /// let mut numbers = [5, 65000];
- /// BigEndian::from_slice_i32(&mut numbers);
- /// assert_eq!(numbers, [5i32.to_be(), 65000i32.to_be()]);
- /// ```
- #[inline]
- fn from_slice_i32(src: &mut [i32]) {
- let src = unsafe {
- slice::from_raw_parts_mut(src.as_mut_ptr() as *mut u32, src.len())
- };
- Self::from_slice_u32(src);
- }
-
- /// Converts the given slice of signed 64 bit integers to a particular
- /// endianness.
- ///
- /// If the endianness matches the endianness of the host platform, then
- /// this is a no-op.
- ///
- /// # Examples
- ///
- /// Convert the host platform's endianness to big-endian:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, BigEndian};
- ///
- /// let mut numbers = [5, 65000];
- /// BigEndian::from_slice_i64(&mut numbers);
- /// assert_eq!(numbers, [5i64.to_be(), 65000i64.to_be()]);
- /// ```
- #[inline]
- fn from_slice_i64(src: &mut [i64]) {
- let src = unsafe {
- slice::from_raw_parts_mut(src.as_mut_ptr() as *mut u64, src.len())
- };
- Self::from_slice_u64(src);
- }
-
- /// Converts the given slice of signed 128 bit integers to a particular
- /// endianness.
- ///
- /// If the endianness matches the endianness of the host platform, then
- /// this is a no-op.
- ///
- /// # Examples
- ///
- /// Convert the host platform's endianness to big-endian:
- ///
- /// ```rust
- /// use byteorder::{ByteOrder, BigEndian};
- ///
- /// let mut numbers = [5, 65000];
- /// BigEndian::from_slice_i128(&mut numbers);
- /// assert_eq!(numbers, [5i128.to_be(), 65000i128.to_be()]);
- /// ```
- #[inline]
- fn from_slice_i128(src: &mut [i128]) {
- let src = unsafe {
- slice::from_raw_parts_mut(src.as_mut_ptr() as *mut u128, src.len())
- };
- Self::from_slice_u128(src);
- }
-
- /// Converts the given slice of IEEE754 single-precision (4 bytes) floating
- /// point numbers to a particular endianness.
- ///
- /// If the endianness matches the endianness of the host platform, then
- /// this is a no-op.
- fn from_slice_f32(numbers: &mut [f32]);
-
- /// Converts the given slice of IEEE754 double-precision (8 bytes) floating
- /// point numbers to a particular endianness.
- ///
- /// If the endianness matches the endianness of the host platform, then
- /// this is a no-op.
- fn from_slice_f64(numbers: &mut [f64]);
-}
-
-/// Defines big-endian serialization.
-///
-/// Note that this type has no value constructor. It is used purely at the
-/// type level.
-///
-/// # Examples
-///
-/// Write and read `u32` numbers in big endian order:
-///
-/// ```rust
-/// use byteorder::{ByteOrder, BigEndian};
-///
-/// let mut buf = [0; 4];
-/// BigEndian::write_u32(&mut buf, 1_000_000);
-/// assert_eq!(1_000_000, BigEndian::read_u32(&buf));
-/// ```
-#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub enum BigEndian {}
-
-impl Default for BigEndian {
- fn default() -> BigEndian {
- panic!("BigEndian default")
- }
-}
-
-/// A type alias for [`BigEndian`].
-///
-/// [`BigEndian`]: enum.BigEndian.html
-pub type BE = BigEndian;
-
-/// Defines little-endian serialization.
-///
-/// Note that this type has no value constructor. It is used purely at the
-/// type level.
-///
-/// # Examples
-///
-/// Write and read `u32` numbers in little endian order:
-///
-/// ```rust
-/// use byteorder::{ByteOrder, LittleEndian};
-///
-/// let mut buf = [0; 4];
-/// LittleEndian::write_u32(&mut buf, 1_000_000);
-/// assert_eq!(1_000_000, LittleEndian::read_u32(&buf));
-/// ```
-#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
-pub enum LittleEndian {}
-
-impl Default for LittleEndian {
- fn default() -> LittleEndian {
- panic!("LittleEndian default")
- }
-}
-
-/// A type alias for [`LittleEndian`].
-///
-/// [`LittleEndian`]: enum.LittleEndian.html
-pub type LE = LittleEndian;
-
-/// Defines network byte order serialization.
-///
-/// Network byte order is defined by [RFC 1700][1] to be big-endian, and is
-/// referred to in several protocol specifications. This type is an alias of
-/// [`BigEndian`].
-///
-/// [1]: https://tools.ietf.org/html/rfc1700
-///
-/// Note that this type has no value constructor. It is used purely at the
-/// type level.
-///
-/// # Examples
-///
-/// Write and read `i16` numbers in big endian order:
-///
-/// ```rust
-/// use byteorder::{ByteOrder, NetworkEndian, BigEndian};
-///
-/// let mut buf = [0; 2];
-/// BigEndian::write_i16(&mut buf, -5_000);
-/// assert_eq!(-5_000, NetworkEndian::read_i16(&buf));
-/// ```
-///
-/// [`BigEndian`]: enum.BigEndian.html
-pub type NetworkEndian = BigEndian;
-
-/// Defines system native-endian serialization.
-///
-/// Note that this type has no value constructor. It is used purely at the
-/// type level.
-///
-/// On this platform, this is an alias for [`LittleEndian`].
-///
-/// [`LittleEndian`]: enum.LittleEndian.html
-#[cfg(target_endian = "little")]
-pub type NativeEndian = LittleEndian;
-
-/// Defines system native-endian serialization.
-///
-/// Note that this type has no value constructor. It is used purely at the
-/// type level.
-///
-/// On this platform, this is an alias for [`BigEndian`].
-///
-/// [`BigEndian`]: enum.BigEndian.html
-#[cfg(target_endian = "big")]
-pub type NativeEndian = BigEndian;
-
-/// Copies $size bytes from a number $n to a &mut [u8] $dst. $ty represents the
-/// numeric type of $n and $which must be either to_be or to_le, depending on
-/// which endianness one wants to use when writing to $dst.
-///
-/// This macro is only safe to call when $ty is a numeric type and $size ==
-/// size_of::<$ty>() and where $dst is a &mut [u8].
-macro_rules! unsafe_write_num_bytes {
- ($ty:ty, $size:expr, $n:expr, $dst:expr, $which:ident) => {{
- assert!($size <= $dst.len());
- unsafe {
- // N.B. https://github.com/rust-lang/rust/issues/22776
- let bytes = *(&$n.$which() as *const _ as *const [u8; $size]);
- copy_nonoverlapping((&bytes).as_ptr(), $dst.as_mut_ptr(), $size);
- }
- }};
-}
-
-/// Copies a &[u8] $src into a &mut [<numeric>] $dst for the endianness given
-/// by $which (must be either to_be or to_le).
-///
-/// This macro is only safe to call when $src and $dst are &[u8] and &mut [u8],
-/// respectively. The macro will panic if $src.len() != $size * $dst.len(),
-/// where $size represents the size of the integers encoded in $src.
-macro_rules! unsafe_read_slice {
- ($src:expr, $dst:expr, $size:expr, $which:ident) => {{
- assert_eq!($src.len(), $size * $dst.len());
-
- unsafe {
- copy_nonoverlapping(
- $src.as_ptr(),
- $dst.as_mut_ptr() as *mut u8,
- $src.len(),
- );
- }
- for v in $dst.iter_mut() {
- *v = v.$which();
- }
- }};
-}
-
-/// Copies a &[$ty] $src into a &mut [u8] $dst, where $ty must be a numeric
-/// type. This panics if size_of::<$ty>() * $src.len() != $dst.len().
-///
-/// This macro is only safe to call when $src is a slice of numeric types and
-/// $dst is a &mut [u8] and where $ty represents the type of the integers in
-/// $src.
-macro_rules! unsafe_write_slice_native {
- ($src:expr, $dst:expr, $ty:ty) => {{
- let size = core::mem::size_of::<$ty>();
- assert_eq!(size * $src.len(), $dst.len());
-
- unsafe {
- copy_nonoverlapping(
- $src.as_ptr() as *const u8,
- $dst.as_mut_ptr(),
- $dst.len(),
- );
- }
- }};
-}
-
-macro_rules! write_slice {
- ($src:expr, $dst:expr, $ty:ty, $size:expr, $write:expr) => {{
- assert!($size == ::core::mem::size_of::<$ty>());
- assert_eq!($size * $src.len(), $dst.len());
-
- for (&n, chunk) in $src.iter().zip($dst.chunks_mut($size)) {
- $write(chunk, n);
- }
- }};
-}
-
-impl ByteOrder for BigEndian {
- #[inline]
- fn read_u16(buf: &[u8]) -> u16 {
- u16::from_be_bytes(buf[..2].try_into().unwrap())
- }
-
- #[inline]
- fn read_u32(buf: &[u8]) -> u32 {
- u32::from_be_bytes(buf[..4].try_into().unwrap())
- }
-
- #[inline]
- fn read_u64(buf: &[u8]) -> u64 {
- u64::from_be_bytes(buf[..8].try_into().unwrap())
- }
-
- #[inline]
- fn read_u128(buf: &[u8]) -> u128 {
- u128::from_be_bytes(buf[..16].try_into().unwrap())
- }
-
- #[inline]
- fn read_uint(buf: &[u8], nbytes: usize) -> u64 {
- assert!(1 <= nbytes && nbytes <= 8 && nbytes <= buf.len());
- let mut out = 0u64;
- let ptr_out = &mut out as *mut u64 as *mut u8;
- unsafe {
- copy_nonoverlapping(
- buf.as_ptr(),
- ptr_out.offset((8 - nbytes) as isize),
- nbytes,
- );
- }
- out.to_be()
- }
-
- #[inline]
- fn read_uint128(buf: &[u8], nbytes: usize) -> u128 {
- assert!(1 <= nbytes && nbytes <= 16 && nbytes <= buf.len());
- let mut out: u128 = 0;
- let ptr_out = &mut out as *mut u128 as *mut u8;
- unsafe {
- copy_nonoverlapping(
- buf.as_ptr(),
- ptr_out.offset((16 - nbytes) as isize),
- nbytes,
- );
- }
- out.to_be()
- }
-
- #[inline]
- fn write_u16(buf: &mut [u8], n: u16) {
- unsafe_write_num_bytes!(u16, 2, n, buf, to_be);
- }
-
- #[inline]
- fn write_u32(buf: &mut [u8], n: u32) {
- unsafe_write_num_bytes!(u32, 4, n, buf, to_be);
- }
-
- #[inline]
- fn write_u64(buf: &mut [u8], n: u64) {
- unsafe_write_num_bytes!(u64, 8, n, buf, to_be);
- }
-
- #[inline]
- fn write_u128(buf: &mut [u8], n: u128) {
- unsafe_write_num_bytes!(u128, 16, n, buf, to_be);
- }
-
- #[inline]
- fn write_uint(buf: &mut [u8], n: u64, nbytes: usize) {
- assert!(pack_size(n) <= nbytes && nbytes <= 8);
- assert!(nbytes <= buf.len());
- unsafe {
- let bytes = *(&n.to_be() as *const u64 as *const [u8; 8]);
- copy_nonoverlapping(
- bytes.as_ptr().offset((8 - nbytes) as isize),
- buf.as_mut_ptr(),
- nbytes,
- );
- }
- }
-
- #[inline]
- fn write_uint128(buf: &mut [u8], n: u128, nbytes: usize) {
- assert!(pack_size128(n) <= nbytes && nbytes <= 16);
- assert!(nbytes <= buf.len());
- unsafe {
- let bytes = *(&n.to_be() as *const u128 as *const [u8; 16]);
- copy_nonoverlapping(
- bytes.as_ptr().offset((16 - nbytes) as isize),
- buf.as_mut_ptr(),
- nbytes,
- );
- }
- }
-
- #[inline]
- fn read_u16_into(src: &[u8], dst: &mut [u16]) {
- unsafe_read_slice!(src, dst, 2, to_be);
- }
-
- #[inline]
- fn read_u32_into(src: &[u8], dst: &mut [u32]) {
- unsafe_read_slice!(src, dst, 4, to_be);
- }
-
- #[inline]
- fn read_u64_into(src: &[u8], dst: &mut [u64]) {
- unsafe_read_slice!(src, dst, 8, to_be);
- }
-
- #[inline]
- fn read_u128_into(src: &[u8], dst: &mut [u128]) {
- unsafe_read_slice!(src, dst, 16, to_be);
- }
-
- #[inline]
- fn write_u16_into(src: &[u16], dst: &mut [u8]) {
- if cfg!(target_endian = "big") {
- unsafe_write_slice_native!(src, dst, u16);
- } else {
- write_slice!(src, dst, u16, 2, Self::write_u16);
- }
- }
-
- #[inline]
- fn write_u32_into(src: &[u32], dst: &mut [u8]) {
- if cfg!(target_endian = "big") {
- unsafe_write_slice_native!(src, dst, u32);
- } else {
- write_slice!(src, dst, u32, 4, Self::write_u32);
- }
- }
-
- #[inline]
- fn write_u64_into(src: &[u64], dst: &mut [u8]) {
- if cfg!(target_endian = "big") {
- unsafe_write_slice_native!(src, dst, u64);
- } else {
- write_slice!(src, dst, u64, 8, Self::write_u64);
- }
- }
-
- #[inline]
- fn write_u128_into(src: &[u128], dst: &mut [u8]) {
- if cfg!(target_endian = "big") {
- unsafe_write_slice_native!(src, dst, u128);
- } else {
- write_slice!(src, dst, u128, 16, Self::write_u128);
- }
- }
-
- #[inline]
- fn from_slice_u16(numbers: &mut [u16]) {
- if cfg!(target_endian = "little") {
- for n in numbers {
- *n = n.to_be();
- }
- }
- }
-
- #[inline]
- fn from_slice_u32(numbers: &mut [u32]) {
- if cfg!(target_endian = "little") {
- for n in numbers {
- *n = n.to_be();
- }
- }
- }
-
- #[inline]
- fn from_slice_u64(numbers: &mut [u64]) {
- if cfg!(target_endian = "little") {
- for n in numbers {
- *n = n.to_be();
- }
- }
- }
-
- #[inline]
- fn from_slice_u128(numbers: &mut [u128]) {
- if cfg!(target_endian = "little") {
- for n in numbers {
- *n = n.to_be();
- }
- }
- }
-
- #[inline]
- fn from_slice_f32(numbers: &mut [f32]) {
- if cfg!(target_endian = "little") {
- for n in numbers {
- unsafe {
- let int = *(n as *const f32 as *const u32);
- *n = *(&int.to_be() as *const u32 as *const f32);
- }
- }
- }
- }
-
- #[inline]
- fn from_slice_f64(numbers: &mut [f64]) {
- if cfg!(target_endian = "little") {
- for n in numbers {
- unsafe {
- let int = *(n as *const f64 as *const u64);
- *n = *(&int.to_be() as *const u64 as *const f64);
- }
- }
- }
- }
-}
-
-impl ByteOrder for LittleEndian {
- #[inline]
- fn read_u16(buf: &[u8]) -> u16 {
- u16::from_le_bytes(buf[..2].try_into().unwrap())
- }
-
- #[inline]
- fn read_u32(buf: &[u8]) -> u32 {
- u32::from_le_bytes(buf[..4].try_into().unwrap())
- }
-
- #[inline]
- fn read_u64(buf: &[u8]) -> u64 {
- u64::from_le_bytes(buf[..8].try_into().unwrap())
- }
-
- #[inline]
- fn read_u128(buf: &[u8]) -> u128 {
- u128::from_le_bytes(buf[..16].try_into().unwrap())
- }
-
- #[inline]
- fn read_uint(buf: &[u8], nbytes: usize) -> u64 {
- assert!(1 <= nbytes && nbytes <= 8 && nbytes <= buf.len());
- let mut out = 0u64;
- let ptr_out = &mut out as *mut u64 as *mut u8;
- unsafe {
- copy_nonoverlapping(buf.as_ptr(), ptr_out, nbytes);
- }
- out.to_le()
- }
-
- #[inline]
- fn read_uint128(buf: &[u8], nbytes: usize) -> u128 {
- assert!(1 <= nbytes && nbytes <= 16 && nbytes <= buf.len());
- let mut out: u128 = 0;
- let ptr_out = &mut out as *mut u128 as *mut u8;
- unsafe {
- copy_nonoverlapping(buf.as_ptr(), ptr_out, nbytes);
- }
- out.to_le()
- }
-
- #[inline]
- fn write_u16(buf: &mut [u8], n: u16) {
- unsafe_write_num_bytes!(u16, 2, n, buf, to_le);
- }
-
- #[inline]
- fn write_u32(buf: &mut [u8], n: u32) {
- unsafe_write_num_bytes!(u32, 4, n, buf, to_le);
- }
-
- #[inline]
- fn write_u64(buf: &mut [u8], n: u64) {
- unsafe_write_num_bytes!(u64, 8, n, buf, to_le);
- }
-
- #[inline]
- fn write_u128(buf: &mut [u8], n: u128) {
- unsafe_write_num_bytes!(u128, 16, n, buf, to_le);
- }
-
- #[inline]
- fn write_uint(buf: &mut [u8], n: u64, nbytes: usize) {
- assert!(pack_size(n as u64) <= nbytes && nbytes <= 8);
- assert!(nbytes <= buf.len());
- unsafe {
- let bytes = *(&n.to_le() as *const u64 as *const [u8; 8]);
- copy_nonoverlapping(bytes.as_ptr(), buf.as_mut_ptr(), nbytes);
- }
- }
-
- #[inline]
- fn write_uint128(buf: &mut [u8], n: u128, nbytes: usize) {
- assert!(pack_size128(n as u128) <= nbytes && nbytes <= 16);
- assert!(nbytes <= buf.len());
- unsafe {
- let bytes = *(&n.to_le() as *const u128 as *const [u8; 16]);
- copy_nonoverlapping(bytes.as_ptr(), buf.as_mut_ptr(), nbytes);
- }
- }
-
- #[inline]
- fn read_u16_into(src: &[u8], dst: &mut [u16]) {
- unsafe_read_slice!(src, dst, 2, to_le);
- }
-
- #[inline]
- fn read_u32_into(src: &[u8], dst: &mut [u32]) {
- unsafe_read_slice!(src, dst, 4, to_le);
- }
-
- #[inline]
- fn read_u64_into(src: &[u8], dst: &mut [u64]) {
- unsafe_read_slice!(src, dst, 8, to_le);
- }
-
- #[inline]
- fn read_u128_into(src: &[u8], dst: &mut [u128]) {
- unsafe_read_slice!(src, dst, 16, to_le);
- }
-
- #[inline]
- fn write_u16_into(src: &[u16], dst: &mut [u8]) {
- if cfg!(target_endian = "little") {
- unsafe_write_slice_native!(src, dst, u16);
- } else {
- write_slice!(src, dst, u16, 2, Self::write_u16);
- }
- }
-
- #[inline]
- fn write_u32_into(src: &[u32], dst: &mut [u8]) {
- if cfg!(target_endian = "little") {
- unsafe_write_slice_native!(src, dst, u32);
- } else {
- write_slice!(src, dst, u32, 4, Self::write_u32);
- }
- }
-
- #[inline]
- fn write_u64_into(src: &[u64], dst: &mut [u8]) {
- if cfg!(target_endian = "little") {
- unsafe_write_slice_native!(src, dst, u64);
- } else {
- write_slice!(src, dst, u64, 8, Self::write_u64);
- }
- }
-
- #[inline]
- fn write_u128_into(src: &[u128], dst: &mut [u8]) {
- if cfg!(target_endian = "little") {
- unsafe_write_slice_native!(src, dst, u128);
- } else {
- write_slice!(src, dst, u128, 16, Self::write_u128);
- }
- }
-
- #[inline]
- fn from_slice_u16(numbers: &mut [u16]) {
- if cfg!(target_endian = "big") {
- for n in numbers {
- *n = n.to_le();
- }
- }
- }
-
- #[inline]
- fn from_slice_u32(numbers: &mut [u32]) {
- if cfg!(target_endian = "big") {
- for n in numbers {
- *n = n.to_le();
- }
- }
- }
-
- #[inline]
- fn from_slice_u64(numbers: &mut [u64]) {
- if cfg!(target_endian = "big") {
- for n in numbers {
- *n = n.to_le();
- }
- }
- }
-
- #[inline]
- fn from_slice_u128(numbers: &mut [u128]) {
- if cfg!(target_endian = "big") {
- for n in numbers {
- *n = n.to_le();
- }
- }
- }
-
- #[inline]
- fn from_slice_f32(numbers: &mut [f32]) {
- if cfg!(target_endian = "big") {
- for n in numbers {
- unsafe {
- let int = *(n as *const f32 as *const u32);
- *n = *(&int.to_le() as *const u32 as *const f32);
- }
- }
- }
- }
-
- #[inline]
- fn from_slice_f64(numbers: &mut [f64]) {
- if cfg!(target_endian = "big") {
- for n in numbers {
- unsafe {
- let int = *(n as *const f64 as *const u64);
- *n = *(&int.to_le() as *const u64 as *const f64);
- }
- }
- }
- }
-}
-
-#[cfg(test)]
-mod test {
- use quickcheck::{Arbitrary, Gen, QuickCheck, StdGen, Testable};
- use rand::{thread_rng, Rng};
-
- pub const U24_MAX: u32 = 16_777_215;
- pub const I24_MAX: i32 = 8_388_607;
- pub const U48_MAX: u64 = 281_474_976_710_655;
- pub const I48_MAX: i64 = 140_737_488_355_327;
-
- pub const U64_MAX: u64 = ::core::u64::MAX;
- pub const I64_MAX: u64 = ::core::i64::MAX as u64;
-
- macro_rules! calc_max {
- ($max:expr, $bytes:expr) => {
- calc_max!($max, $bytes, 8)
- };
- ($max:expr, $bytes:expr, $maxbytes:expr) => {
- ($max - 1) >> (8 * ($maxbytes - $bytes))
- };
- }
-
- #[derive(Clone, Debug)]
- pub struct Wi128<T>(pub T);
-
- impl<T: Clone> Wi128<T> {
- pub fn clone(&self) -> T {
- self.0.clone()
- }
- }
-
- impl<T: PartialEq> PartialEq<T> for Wi128<T> {
- fn eq(&self, other: &T) -> bool {
- self.0.eq(other)
- }
- }
-
- impl Arbitrary for Wi128<u128> {
- fn arbitrary<G: Gen>(gen: &mut G) -> Wi128<u128> {
- let max = calc_max!(::core::u128::MAX, gen.size(), 16);
- let output = (gen.gen::<u64>() as u128)
- | ((gen.gen::<u64>() as u128) << 64);
- Wi128(output & (max - 1))
- }
- }
-
- impl Arbitrary for Wi128<i128> {
- fn arbitrary<G: Gen>(gen: &mut G) -> Wi128<i128> {
- let max = calc_max!(::core::i128::MAX, gen.size(), 16);
- let output = (gen.gen::<i64>() as i128)
- | ((gen.gen::<i64>() as i128) << 64);
- Wi128(output & (max - 1))
- }
- }
-
- pub fn qc_sized<A: Testable>(f: A, size: u64) {
- QuickCheck::new()
- .gen(StdGen::new(thread_rng(), size as usize))
- .tests(1_00)
- .max_tests(10_000)
- .quickcheck(f);
- }
-
- macro_rules! qc_byte_order {
- ($name:ident, $ty_int:ty, $max:expr,
- $bytes:expr, $read:ident, $write:ident) => {
- mod $name {
- #[allow(unused_imports)]
- use super::{qc_sized, Wi128};
- use crate::{
- BigEndian, ByteOrder, LittleEndian, NativeEndian,
- };
-
- #[test]
- fn big_endian() {
- fn prop(n: $ty_int) -> bool {
- let mut buf = [0; 16];
- BigEndian::$write(&mut buf, n.clone(), $bytes);
- n == BigEndian::$read(&buf[..$bytes], $bytes)
- }
- qc_sized(prop as fn($ty_int) -> bool, $max);
- }
-
- #[test]
- fn little_endian() {
- fn prop(n: $ty_int) -> bool {
- let mut buf = [0; 16];
- LittleEndian::$write(&mut buf, n.clone(), $bytes);
- n == LittleEndian::$read(&buf[..$bytes], $bytes)
- }
- qc_sized(prop as fn($ty_int) -> bool, $max);
- }
-
- #[test]
- fn native_endian() {
- fn prop(n: $ty_int) -> bool {
- let mut buf = [0; 16];
- NativeEndian::$write(&mut buf, n.clone(), $bytes);
- n == NativeEndian::$read(&buf[..$bytes], $bytes)
- }
- qc_sized(prop as fn($ty_int) -> bool, $max);
- }
- }
- };
- ($name:ident, $ty_int:ty, $max:expr,
- $read:ident, $write:ident) => {
- mod $name {
- #[allow(unused_imports)]
- use super::{qc_sized, Wi128};
- use crate::{
- BigEndian, ByteOrder, LittleEndian, NativeEndian,
- };
- use core::mem::size_of;
-
- #[test]
- fn big_endian() {
- fn prop(n: $ty_int) -> bool {
- let bytes = size_of::<$ty_int>();
- let mut buf = [0; 16];
- BigEndian::$write(&mut buf[16 - bytes..], n.clone());
- n == BigEndian::$read(&buf[16 - bytes..])
- }
- qc_sized(prop as fn($ty_int) -> bool, $max - 1);
- }
-
- #[test]
- fn little_endian() {
- fn prop(n: $ty_int) -> bool {
- let bytes = size_of::<$ty_int>();
- let mut buf = [0; 16];
- LittleEndian::$write(&mut buf[..bytes], n.clone());
- n == LittleEndian::$read(&buf[..bytes])
- }
- qc_sized(prop as fn($ty_int) -> bool, $max - 1);
- }
-
- #[test]
- fn native_endian() {
- fn prop(n: $ty_int) -> bool {
- let bytes = size_of::<$ty_int>();
- let mut buf = [0; 16];
- NativeEndian::$write(&mut buf[..bytes], n.clone());
- n == NativeEndian::$read(&buf[..bytes])
- }
- qc_sized(prop as fn($ty_int) -> bool, $max - 1);
- }
- }
- };
- }
-
- qc_byte_order!(
- prop_u16,
- u16,
- ::core::u16::MAX as u64,
- read_u16,
- write_u16
- );
- qc_byte_order!(
- prop_i16,
- i16,
- ::core::i16::MAX as u64,
- read_i16,
- write_i16
- );
- qc_byte_order!(
- prop_u24,
- u32,
- crate::test::U24_MAX as u64,
- read_u24,
- write_u24
- );
- qc_byte_order!(
- prop_i24,
- i32,
- crate::test::I24_MAX as u64,
- read_i24,
- write_i24
- );
- qc_byte_order!(
- prop_u32,
- u32,
- ::core::u32::MAX as u64,
- read_u32,
- write_u32
- );
- qc_byte_order!(
- prop_i32,
- i32,
- ::core::i32::MAX as u64,
- read_i32,
- write_i32
- );
- qc_byte_order!(
- prop_u48,
- u64,
- crate::test::U48_MAX as u64,
- read_u48,
- write_u48
- );
- qc_byte_order!(
- prop_i48,
- i64,
- crate::test::I48_MAX as u64,
- read_i48,
- write_i48
- );
- qc_byte_order!(
- prop_u64,
- u64,
- ::core::u64::MAX as u64,
- read_u64,
- write_u64
- );
- qc_byte_order!(
- prop_i64,
- i64,
- ::core::i64::MAX as u64,
- read_i64,
- write_i64
- );
- qc_byte_order!(
- prop_f32,
- f32,
- ::core::u64::MAX as u64,
- read_f32,
- write_f32
- );
- qc_byte_order!(
- prop_f64,
- f64,
- ::core::i64::MAX as u64,
- read_f64,
- write_f64
- );
-
- qc_byte_order!(prop_u128, Wi128<u128>, 16 + 1, read_u128, write_u128);
- qc_byte_order!(prop_i128, Wi128<i128>, 16 + 1, read_i128, write_i128);
-
- qc_byte_order!(
- prop_uint_1,
- u64,
- calc_max!(super::U64_MAX, 1),
- 1,
- read_uint,
- write_uint
- );
- qc_byte_order!(
- prop_uint_2,
- u64,
- calc_max!(super::U64_MAX, 2),
- 2,
- read_uint,
- write_uint
- );
- qc_byte_order!(
- prop_uint_3,
- u64,
- calc_max!(super::U64_MAX, 3),
- 3,
- read_uint,
- write_uint
- );
- qc_byte_order!(
- prop_uint_4,
- u64,
- calc_max!(super::U64_MAX, 4),
- 4,
- read_uint,
- write_uint
- );
- qc_byte_order!(
- prop_uint_5,
- u64,
- calc_max!(super::U64_MAX, 5),
- 5,
- read_uint,
- write_uint
- );
- qc_byte_order!(
- prop_uint_6,
- u64,
- calc_max!(super::U64_MAX, 6),
- 6,
- read_uint,
- write_uint
- );
- qc_byte_order!(
- prop_uint_7,
- u64,
- calc_max!(super::U64_MAX, 7),
- 7,
- read_uint,
- write_uint
- );
- qc_byte_order!(
- prop_uint_8,
- u64,
- calc_max!(super::U64_MAX, 8),
- 8,
- read_uint,
- write_uint
- );
-
- qc_byte_order!(
- prop_uint128_1,
- Wi128<u128>,
- 1,
- 1,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_2,
- Wi128<u128>,
- 2,
- 2,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_3,
- Wi128<u128>,
- 3,
- 3,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_4,
- Wi128<u128>,
- 4,
- 4,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_5,
- Wi128<u128>,
- 5,
- 5,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_6,
- Wi128<u128>,
- 6,
- 6,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_7,
- Wi128<u128>,
- 7,
- 7,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_8,
- Wi128<u128>,
- 8,
- 8,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_9,
- Wi128<u128>,
- 9,
- 9,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_10,
- Wi128<u128>,
- 10,
- 10,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_11,
- Wi128<u128>,
- 11,
- 11,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_12,
- Wi128<u128>,
- 12,
- 12,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_13,
- Wi128<u128>,
- 13,
- 13,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_14,
- Wi128<u128>,
- 14,
- 14,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_15,
- Wi128<u128>,
- 15,
- 15,
- read_uint128,
- write_uint128
- );
- qc_byte_order!(
- prop_uint128_16,
- Wi128<u128>,
- 16,
- 16,
- read_uint128,
- write_uint128
- );
-
- qc_byte_order!(
- prop_int_1,
- i64,
- calc_max!(super::I64_MAX, 1),
- 1,
- read_int,
- write_int
- );
- qc_byte_order!(
- prop_int_2,
- i64,
- calc_max!(super::I64_MAX, 2),
- 2,
- read_int,
- write_int
- );
- qc_byte_order!(
- prop_int_3,
- i64,
- calc_max!(super::I64_MAX, 3),
- 3,
- read_int,
- write_int
- );
- qc_byte_order!(
- prop_int_4,
- i64,
- calc_max!(super::I64_MAX, 4),
- 4,
- read_int,
- write_int
- );
- qc_byte_order!(
- prop_int_5,
- i64,
- calc_max!(super::I64_MAX, 5),
- 5,
- read_int,
- write_int
- );
- qc_byte_order!(
- prop_int_6,
- i64,
- calc_max!(super::I64_MAX, 6),
- 6,
- read_int,
- write_int
- );
- qc_byte_order!(
- prop_int_7,
- i64,
- calc_max!(super::I64_MAX, 7),
- 7,
- read_int,
- write_int
- );
- qc_byte_order!(
- prop_int_8,
- i64,
- calc_max!(super::I64_MAX, 8),
- 8,
- read_int,
- write_int
- );
-
- qc_byte_order!(
- prop_int128_1,
- Wi128<i128>,
- 1,
- 1,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_2,
- Wi128<i128>,
- 2,
- 2,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_3,
- Wi128<i128>,
- 3,
- 3,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_4,
- Wi128<i128>,
- 4,
- 4,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_5,
- Wi128<i128>,
- 5,
- 5,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_6,
- Wi128<i128>,
- 6,
- 6,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_7,
- Wi128<i128>,
- 7,
- 7,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_8,
- Wi128<i128>,
- 8,
- 8,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_9,
- Wi128<i128>,
- 9,
- 9,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_10,
- Wi128<i128>,
- 10,
- 10,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_11,
- Wi128<i128>,
- 11,
- 11,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_12,
- Wi128<i128>,
- 12,
- 12,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_13,
- Wi128<i128>,
- 13,
- 13,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_14,
- Wi128<i128>,
- 14,
- 14,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_15,
- Wi128<i128>,
- 15,
- 15,
- read_int128,
- write_int128
- );
- qc_byte_order!(
- prop_int128_16,
- Wi128<i128>,
- 16,
- 16,
- read_int128,
- write_int128
- );
-
- // Test that all of the byte conversion functions panic when given a
- // buffer that is too small.
- //
- // These tests are critical to ensure safety, otherwise we might end up
- // with a buffer overflow.
- macro_rules! too_small {
- ($name:ident, $maximally_small:expr, $zero:expr,
- $read:ident, $write:ident) => {
- mod $name {
- use crate::{
- BigEndian, ByteOrder, LittleEndian, NativeEndian,
- };
-
- #[test]
- #[should_panic]
- fn read_big_endian() {
- let buf = [0; $maximally_small];
- BigEndian::$read(&buf);
- }
-
- #[test]
- #[should_panic]
- fn read_little_endian() {
- let buf = [0; $maximally_small];
- LittleEndian::$read(&buf);
- }
-
- #[test]
- #[should_panic]
- fn read_native_endian() {
- let buf = [0; $maximally_small];
- NativeEndian::$read(&buf);
- }
-
- #[test]
- #[should_panic]
- fn write_big_endian() {
- let mut buf = [0; $maximally_small];
- BigEndian::$write(&mut buf, $zero);
- }
-
- #[test]
- #[should_panic]
- fn write_little_endian() {
- let mut buf = [0; $maximally_small];
- LittleEndian::$write(&mut buf, $zero);
- }
-
- #[test]
- #[should_panic]
- fn write_native_endian() {
- let mut buf = [0; $maximally_small];
- NativeEndian::$write(&mut buf, $zero);
- }
- }
- };
- ($name:ident, $maximally_small:expr, $read:ident) => {
- mod $name {
- use crate::{
- BigEndian, ByteOrder, LittleEndian, NativeEndian,
- };
-
- #[test]
- #[should_panic]
- fn read_big_endian() {
- let buf = [0; $maximally_small];
- BigEndian::$read(&buf, $maximally_small + 1);
- }
-
- #[test]
- #[should_panic]
- fn read_little_endian() {
- let buf = [0; $maximally_small];
- LittleEndian::$read(&buf, $maximally_small + 1);
- }
-
- #[test]
- #[should_panic]
- fn read_native_endian() {
- let buf = [0; $maximally_small];
- NativeEndian::$read(&buf, $maximally_small + 1);
- }
- }
- };
- }
-
- too_small!(small_u16, 1, 0, read_u16, write_u16);
- too_small!(small_i16, 1, 0, read_i16, write_i16);
- too_small!(small_u32, 3, 0, read_u32, write_u32);
- too_small!(small_i32, 3, 0, read_i32, write_i32);
- too_small!(small_u64, 7, 0, read_u64, write_u64);
- too_small!(small_i64, 7, 0, read_i64, write_i64);
- too_small!(small_f32, 3, 0.0, read_f32, write_f32);
- too_small!(small_f64, 7, 0.0, read_f64, write_f64);
- too_small!(small_u128, 15, 0, read_u128, write_u128);
- too_small!(small_i128, 15, 0, read_i128, write_i128);
-
- too_small!(small_uint_1, 1, read_uint);
- too_small!(small_uint_2, 2, read_uint);
- too_small!(small_uint_3, 3, read_uint);
- too_small!(small_uint_4, 4, read_uint);
- too_small!(small_uint_5, 5, read_uint);
- too_small!(small_uint_6, 6, read_uint);
- too_small!(small_uint_7, 7, read_uint);
-
- too_small!(small_uint128_1, 1, read_uint128);
- too_small!(small_uint128_2, 2, read_uint128);
- too_small!(small_uint128_3, 3, read_uint128);
- too_small!(small_uint128_4, 4, read_uint128);
- too_small!(small_uint128_5, 5, read_uint128);
- too_small!(small_uint128_6, 6, read_uint128);
- too_small!(small_uint128_7, 7, read_uint128);
- too_small!(small_uint128_8, 8, read_uint128);
- too_small!(small_uint128_9, 9, read_uint128);
- too_small!(small_uint128_10, 10, read_uint128);
- too_small!(small_uint128_11, 11, read_uint128);
- too_small!(small_uint128_12, 12, read_uint128);
- too_small!(small_uint128_13, 13, read_uint128);
- too_small!(small_uint128_14, 14, read_uint128);
- too_small!(small_uint128_15, 15, read_uint128);
-
- too_small!(small_int_1, 1, read_int);
- too_small!(small_int_2, 2, read_int);
- too_small!(small_int_3, 3, read_int);
- too_small!(small_int_4, 4, read_int);
- too_small!(small_int_5, 5, read_int);
- too_small!(small_int_6, 6, read_int);
- too_small!(small_int_7, 7, read_int);
-
- too_small!(small_int128_1, 1, read_int128);
- too_small!(small_int128_2, 2, read_int128);
- too_small!(small_int128_3, 3, read_int128);
- too_small!(small_int128_4, 4, read_int128);
- too_small!(small_int128_5, 5, read_int128);
- too_small!(small_int128_6, 6, read_int128);
- too_small!(small_int128_7, 7, read_int128);
- too_small!(small_int128_8, 8, read_int128);
- too_small!(small_int128_9, 9, read_int128);
- too_small!(small_int128_10, 10, read_int128);
- too_small!(small_int128_11, 11, read_int128);
- too_small!(small_int128_12, 12, read_int128);
- too_small!(small_int128_13, 13, read_int128);
- too_small!(small_int128_14, 14, read_int128);
- too_small!(small_int128_15, 15, read_int128);
-
- // Test that reading/writing slices enforces the correct lengths.
- macro_rules! slice_lengths {
- ($name:ident, $read:ident, $write:ident,
- $num_bytes:expr, $numbers:expr) => {
- mod $name {
- use crate::{
- BigEndian, ByteOrder, LittleEndian, NativeEndian,
- };
-
- #[test]
- #[should_panic]
- fn read_big_endian() {
- let bytes = [0; $num_bytes];
- let mut numbers = $numbers;
- BigEndian::$read(&bytes, &mut numbers);
- }
-
- #[test]
- #[should_panic]
- fn read_little_endian() {
- let bytes = [0; $num_bytes];
- let mut numbers = $numbers;
- LittleEndian::$read(&bytes, &mut numbers);
- }
-
- #[test]
- #[should_panic]
- fn read_native_endian() {
- let bytes = [0; $num_bytes];
- let mut numbers = $numbers;
- NativeEndian::$read(&bytes, &mut numbers);
- }
-
- #[test]
- #[should_panic]
- fn write_big_endian() {
- let mut bytes = [0; $num_bytes];
- let numbers = $numbers;
- BigEndian::$write(&numbers, &mut bytes);
- }
-
- #[test]
- #[should_panic]
- fn write_little_endian() {
- let mut bytes = [0; $num_bytes];
- let numbers = $numbers;
- LittleEndian::$write(&numbers, &mut bytes);
- }
-
- #[test]
- #[should_panic]
- fn write_native_endian() {
- let mut bytes = [0; $num_bytes];
- let numbers = $numbers;
- NativeEndian::$write(&numbers, &mut bytes);
- }
- }
- };
- }
-
- slice_lengths!(
- slice_len_too_small_u16,
- read_u16_into,
- write_u16_into,
- 3,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_big_u16,
- read_u16_into,
- write_u16_into,
- 5,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_small_i16,
- read_i16_into,
- write_i16_into,
- 3,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_big_i16,
- read_i16_into,
- write_i16_into,
- 5,
- [0, 0]
- );
-
- slice_lengths!(
- slice_len_too_small_u32,
- read_u32_into,
- write_u32_into,
- 7,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_big_u32,
- read_u32_into,
- write_u32_into,
- 9,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_small_i32,
- read_i32_into,
- write_i32_into,
- 7,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_big_i32,
- read_i32_into,
- write_i32_into,
- 9,
- [0, 0]
- );
-
- slice_lengths!(
- slice_len_too_small_u64,
- read_u64_into,
- write_u64_into,
- 15,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_big_u64,
- read_u64_into,
- write_u64_into,
- 17,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_small_i64,
- read_i64_into,
- write_i64_into,
- 15,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_big_i64,
- read_i64_into,
- write_i64_into,
- 17,
- [0, 0]
- );
-
- slice_lengths!(
- slice_len_too_small_u128,
- read_u128_into,
- write_u128_into,
- 31,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_big_u128,
- read_u128_into,
- write_u128_into,
- 33,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_small_i128,
- read_i128_into,
- write_i128_into,
- 31,
- [0, 0]
- );
- slice_lengths!(
- slice_len_too_big_i128,
- read_i128_into,
- write_i128_into,
- 33,
- [0, 0]
- );
-
- #[test]
- fn uint_bigger_buffer() {
- use crate::{ByteOrder, LittleEndian};
- let n = LittleEndian::read_uint(&[1, 2, 3, 4, 5, 6, 7, 8], 5);
- assert_eq!(n, 0x05_0403_0201);
- }
-
- #[test]
- fn regression173_array_impl() {
- use crate::{BigEndian, ByteOrder, LittleEndian};
-
- let xs = [0; 100];
-
- let x = BigEndian::read_u16(&xs);
- assert_eq!(x, 0);
- let x = BigEndian::read_u32(&xs);
- assert_eq!(x, 0);
- let x = BigEndian::read_u64(&xs);
- assert_eq!(x, 0);
- let x = BigEndian::read_u128(&xs);
- assert_eq!(x, 0);
- let x = BigEndian::read_i16(&xs);
- assert_eq!(x, 0);
- let x = BigEndian::read_i32(&xs);
- assert_eq!(x, 0);
- let x = BigEndian::read_i64(&xs);
- assert_eq!(x, 0);
- let x = BigEndian::read_i128(&xs);
- assert_eq!(x, 0);
-
- let x = LittleEndian::read_u16(&xs);
- assert_eq!(x, 0);
- let x = LittleEndian::read_u32(&xs);
- assert_eq!(x, 0);
- let x = LittleEndian::read_u64(&xs);
- assert_eq!(x, 0);
- let x = LittleEndian::read_u128(&xs);
- assert_eq!(x, 0);
- let x = LittleEndian::read_i16(&xs);
- assert_eq!(x, 0);
- let x = LittleEndian::read_i32(&xs);
- assert_eq!(x, 0);
- let x = LittleEndian::read_i64(&xs);
- assert_eq!(x, 0);
- let x = LittleEndian::read_i128(&xs);
- assert_eq!(x, 0);
- }
-}
-
-#[cfg(test)]
-#[cfg(feature = "std")]
-mod stdtests {
- extern crate quickcheck;
- extern crate rand;
-
- use self::quickcheck::{QuickCheck, StdGen, Testable};
- use self::rand::thread_rng;
-
- fn qc_unsized<A: Testable>(f: A) {
- QuickCheck::new()
- .gen(StdGen::new(thread_rng(), 16))
- .tests(1_00)
- .max_tests(10_000)
- .quickcheck(f);
- }
-
- macro_rules! calc_max {
- ($max:expr, $bytes:expr) => {
- ($max - 1) >> (8 * (8 - $bytes))
- };
- }
-
- macro_rules! qc_bytes_ext {
- ($name:ident, $ty_int:ty, $max:expr,
- $bytes:expr, $read:ident, $write:ident) => {
- mod $name {
- #[allow(unused_imports)]
- use crate::test::{qc_sized, Wi128};
- use crate::{
- BigEndian, LittleEndian, NativeEndian, ReadBytesExt,
- WriteBytesExt,
- };
- use std::io::Cursor;
-
- #[test]
- fn big_endian() {
- fn prop(n: $ty_int) -> bool {
- let mut wtr = vec![];
- wtr.$write::<BigEndian>(n.clone()).unwrap();
- let offset = wtr.len() - $bytes;
- let mut rdr = Cursor::new(&mut wtr[offset..]);
- n == rdr.$read::<BigEndian>($bytes).unwrap()
- }
- qc_sized(prop as fn($ty_int) -> bool, $max);
- }
-
- #[test]
- fn little_endian() {
- fn prop(n: $ty_int) -> bool {
- let mut wtr = vec![];
- wtr.$write::<LittleEndian>(n.clone()).unwrap();
- let mut rdr = Cursor::new(wtr);
- n == rdr.$read::<LittleEndian>($bytes).unwrap()
- }
- qc_sized(prop as fn($ty_int) -> bool, $max);
- }
-
- #[test]
- fn native_endian() {
- fn prop(n: $ty_int) -> bool {
- let mut wtr = vec![];
- wtr.$write::<NativeEndian>(n.clone()).unwrap();
- let offset = if cfg!(target_endian = "big") {
- wtr.len() - $bytes
- } else {
- 0
- };
- let mut rdr = Cursor::new(&mut wtr[offset..]);
- n == rdr.$read::<NativeEndian>($bytes).unwrap()
- }
- qc_sized(prop as fn($ty_int) -> bool, $max);
- }
- }
- };
- ($name:ident, $ty_int:ty, $max:expr, $read:ident, $write:ident) => {
- mod $name {
- #[allow(unused_imports)]
- use crate::test::{qc_sized, Wi128};
- use crate::{
- BigEndian, LittleEndian, NativeEndian, ReadBytesExt,
- WriteBytesExt,
- };
- use std::io::Cursor;
-
- #[test]
- fn big_endian() {
- fn prop(n: $ty_int) -> bool {
- let mut wtr = vec![];
- wtr.$write::<BigEndian>(n.clone()).unwrap();
- let mut rdr = Cursor::new(wtr);
- n == rdr.$read::<BigEndian>().unwrap()
- }
- qc_sized(prop as fn($ty_int) -> bool, $max - 1);
- }
-
- #[test]
- fn little_endian() {
- fn prop(n: $ty_int) -> bool {
- let mut wtr = vec![];
- wtr.$write::<LittleEndian>(n.clone()).unwrap();
- let mut rdr = Cursor::new(wtr);
- n == rdr.$read::<LittleEndian>().unwrap()
- }
- qc_sized(prop as fn($ty_int) -> bool, $max - 1);
- }
-
- #[test]
- fn native_endian() {
- fn prop(n: $ty_int) -> bool {
- let mut wtr = vec![];
- wtr.$write::<NativeEndian>(n.clone()).unwrap();
- let mut rdr = Cursor::new(wtr);
- n == rdr.$read::<NativeEndian>().unwrap()
- }
- qc_sized(prop as fn($ty_int) -> bool, $max - 1);
- }
- }
- };
- }
-
- qc_bytes_ext!(
- prop_ext_u16,
- u16,
- ::std::u16::MAX as u64,
- read_u16,
- write_u16
- );
- qc_bytes_ext!(
- prop_ext_i16,
- i16,
- ::std::i16::MAX as u64,
- read_i16,
- write_i16
- );
- qc_bytes_ext!(
- prop_ext_u32,
- u32,
- ::std::u32::MAX as u64,
- read_u32,
- write_u32
- );
- qc_bytes_ext!(
- prop_ext_i32,
- i32,
- ::std::i32::MAX as u64,
- read_i32,
- write_i32
- );
- qc_bytes_ext!(
- prop_ext_u64,
- u64,
- ::std::u64::MAX as u64,
- read_u64,
- write_u64
- );
- qc_bytes_ext!(
- prop_ext_i64,
- i64,
- ::std::i64::MAX as u64,
- read_i64,
- write_i64
- );
- qc_bytes_ext!(
- prop_ext_f32,
- f32,
- ::std::u64::MAX as u64,
- read_f32,
- write_f32
- );
- qc_bytes_ext!(
- prop_ext_f64,
- f64,
- ::std::i64::MAX as u64,
- read_f64,
- write_f64
- );
-
- qc_bytes_ext!(prop_ext_u128, Wi128<u128>, 16 + 1, read_u128, write_u128);
- qc_bytes_ext!(prop_ext_i128, Wi128<i128>, 16 + 1, read_i128, write_i128);
-
- qc_bytes_ext!(
- prop_ext_uint_1,
- u64,
- calc_max!(crate::test::U64_MAX, 1),
- 1,
- read_uint,
- write_u64
- );
- qc_bytes_ext!(
- prop_ext_uint_2,
- u64,
- calc_max!(crate::test::U64_MAX, 2),
- 2,
- read_uint,
- write_u64
- );
- qc_bytes_ext!(
- prop_ext_uint_3,
- u64,
- calc_max!(crate::test::U64_MAX, 3),
- 3,
- read_uint,
- write_u64
- );
- qc_bytes_ext!(
- prop_ext_uint_4,
- u64,
- calc_max!(crate::test::U64_MAX, 4),
- 4,
- read_uint,
- write_u64
- );
- qc_bytes_ext!(
- prop_ext_uint_5,
- u64,
- calc_max!(crate::test::U64_MAX, 5),
- 5,
- read_uint,
- write_u64
- );
- qc_bytes_ext!(
- prop_ext_uint_6,
- u64,
- calc_max!(crate::test::U64_MAX, 6),
- 6,
- read_uint,
- write_u64
- );
- qc_bytes_ext!(
- prop_ext_uint_7,
- u64,
- calc_max!(crate::test::U64_MAX, 7),
- 7,
- read_uint,
- write_u64
- );
- qc_bytes_ext!(
- prop_ext_uint_8,
- u64,
- calc_max!(crate::test::U64_MAX, 8),
- 8,
- read_uint,
- write_u64
- );
-
- qc_bytes_ext!(
- prop_ext_uint128_1,
- Wi128<u128>,
- 1,
- 1,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_2,
- Wi128<u128>,
- 2,
- 2,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_3,
- Wi128<u128>,
- 3,
- 3,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_4,
- Wi128<u128>,
- 4,
- 4,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_5,
- Wi128<u128>,
- 5,
- 5,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_6,
- Wi128<u128>,
- 6,
- 6,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_7,
- Wi128<u128>,
- 7,
- 7,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_8,
- Wi128<u128>,
- 8,
- 8,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_9,
- Wi128<u128>,
- 9,
- 9,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_10,
- Wi128<u128>,
- 10,
- 10,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_11,
- Wi128<u128>,
- 11,
- 11,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_12,
- Wi128<u128>,
- 12,
- 12,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_13,
- Wi128<u128>,
- 13,
- 13,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_14,
- Wi128<u128>,
- 14,
- 14,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_15,
- Wi128<u128>,
- 15,
- 15,
- read_uint128,
- write_u128
- );
- qc_bytes_ext!(
- prop_ext_uint128_16,
- Wi128<u128>,
- 16,
- 16,
- read_uint128,
- write_u128
- );
-
- qc_bytes_ext!(
- prop_ext_int_1,
- i64,
- calc_max!(crate::test::I64_MAX, 1),
- 1,
- read_int,
- write_i64
- );
- qc_bytes_ext!(
- prop_ext_int_2,
- i64,
- calc_max!(crate::test::I64_MAX, 2),
- 2,
- read_int,
- write_i64
- );
- qc_bytes_ext!(
- prop_ext_int_3,
- i64,
- calc_max!(crate::test::I64_MAX, 3),
- 3,
- read_int,
- write_i64
- );
- qc_bytes_ext!(
- prop_ext_int_4,
- i64,
- calc_max!(crate::test::I64_MAX, 4),
- 4,
- read_int,
- write_i64
- );
- qc_bytes_ext!(
- prop_ext_int_5,
- i64,
- calc_max!(crate::test::I64_MAX, 5),
- 5,
- read_int,
- write_i64
- );
- qc_bytes_ext!(
- prop_ext_int_6,
- i64,
- calc_max!(crate::test::I64_MAX, 6),
- 6,
- read_int,
- write_i64
- );
- qc_bytes_ext!(
- prop_ext_int_7,
- i64,
- calc_max!(crate::test::I64_MAX, 1),
- 7,
- read_int,
- write_i64
- );
- qc_bytes_ext!(
- prop_ext_int_8,
- i64,
- calc_max!(crate::test::I64_MAX, 8),
- 8,
- read_int,
- write_i64
- );
-
- qc_bytes_ext!(
- prop_ext_int128_1,
- Wi128<i128>,
- 1,
- 1,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_2,
- Wi128<i128>,
- 2,
- 2,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_3,
- Wi128<i128>,
- 3,
- 3,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_4,
- Wi128<i128>,
- 4,
- 4,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_5,
- Wi128<i128>,
- 5,
- 5,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_6,
- Wi128<i128>,
- 6,
- 6,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_7,
- Wi128<i128>,
- 7,
- 7,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_8,
- Wi128<i128>,
- 8,
- 8,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_9,
- Wi128<i128>,
- 9,
- 9,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_10,
- Wi128<i128>,
- 10,
- 10,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_11,
- Wi128<i128>,
- 11,
- 11,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_12,
- Wi128<i128>,
- 12,
- 12,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_13,
- Wi128<i128>,
- 13,
- 13,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_14,
- Wi128<i128>,
- 14,
- 14,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_15,
- Wi128<i128>,
- 15,
- 15,
- read_int128,
- write_i128
- );
- qc_bytes_ext!(
- prop_ext_int128_16,
- Wi128<i128>,
- 16,
- 16,
- read_int128,
- write_i128
- );
-
- // Test slice serialization/deserialization.
- macro_rules! qc_slice {
- ($name:ident, $ty_int:ty, $read:ident, $write:ident, $zero:expr) => {
- mod $name {
- use super::qc_unsized;
- #[allow(unused_imports)]
- use crate::test::Wi128;
- use crate::{
- BigEndian, ByteOrder, LittleEndian, NativeEndian,
- };
- use core::mem::size_of;
-
- #[test]
- fn big_endian() {
- #[allow(unused_unsafe)]
- fn prop(numbers: Vec<$ty_int>) -> bool {
- let numbers: Vec<_> =
- numbers.into_iter().map(|x| x.clone()).collect();
- let num_bytes = size_of::<$ty_int>() * numbers.len();
- let mut bytes = vec![0; num_bytes];
-
- BigEndian::$write(&numbers, &mut bytes);
-
- let mut got = vec![$zero; numbers.len()];
- unsafe {
- BigEndian::$read(&bytes, &mut got);
- }
-
- numbers == got
- }
- qc_unsized(prop as fn(_) -> bool);
- }
-
- #[test]
- fn little_endian() {
- #[allow(unused_unsafe)]
- fn prop(numbers: Vec<$ty_int>) -> bool {
- let numbers: Vec<_> =
- numbers.into_iter().map(|x| x.clone()).collect();
- let num_bytes = size_of::<$ty_int>() * numbers.len();
- let mut bytes = vec![0; num_bytes];
-
- LittleEndian::$write(&numbers, &mut bytes);
-
- let mut got = vec![$zero; numbers.len()];
- unsafe {
- LittleEndian::$read(&bytes, &mut got);
- }
-
- numbers == got
- }
- qc_unsized(prop as fn(_) -> bool);
- }
-
- #[test]
- fn native_endian() {
- #[allow(unused_unsafe)]
- fn prop(numbers: Vec<$ty_int>) -> bool {
- let numbers: Vec<_> =
- numbers.into_iter().map(|x| x.clone()).collect();
- let num_bytes = size_of::<$ty_int>() * numbers.len();
- let mut bytes = vec![0; num_bytes];
-
- NativeEndian::$write(&numbers, &mut bytes);
-
- let mut got = vec![$zero; numbers.len()];
- unsafe {
- NativeEndian::$read(&bytes, &mut got);
- }
-
- numbers == got
- }
- qc_unsized(prop as fn(_) -> bool);
- }
- }
- };
- }
-
- qc_slice!(prop_slice_u16, u16, read_u16_into, write_u16_into, 0);
- qc_slice!(prop_slice_i16, i16, read_i16_into, write_i16_into, 0);
- qc_slice!(prop_slice_u32, u32, read_u32_into, write_u32_into, 0);
- qc_slice!(prop_slice_i32, i32, read_i32_into, write_i32_into, 0);
- qc_slice!(prop_slice_u64, u64, read_u64_into, write_u64_into, 0);
- qc_slice!(prop_slice_i64, i64, read_i64_into, write_i64_into, 0);
- qc_slice!(
- prop_slice_u128,
- Wi128<u128>,
- read_u128_into,
- write_u128_into,
- 0
- );
- qc_slice!(
- prop_slice_i128,
- Wi128<i128>,
- read_i128_into,
- write_i128_into,
- 0
- );
-
- qc_slice!(prop_slice_f32, f32, read_f32_into, write_f32_into, 0.0);
- qc_slice!(prop_slice_f64, f64, read_f64_into, write_f64_into, 0.0);
-}
diff --git a/vendor/camino/.cargo-checksum.json b/vendor/camino/.cargo-checksum.json
index 1de1f0c97..81a1f0f60 100644
--- a/vendor/camino/.cargo-checksum.json
+++ b/vendor/camino/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"886087c5abaa1078e179e173b997fd4bffd93e47b2914defd8148f3f396e98f0","CODE_OF_CONDUCT.md":"f51e207c2961ec061cac5c8aa9dd3098c3437de2c106d740c2aae90771bc0f86","Cargo.toml":"17bc7f765ef82a295aff4292261d23dc0c6c75b44e6c3016631cc087d5fe20f6","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"84762d717d0f2358c56f54ee46a6ca5f1582b7d3843f7a4d6e553ea04a57ca1b","build.rs":"4e46d73efd79ec269ddc1b2578cad051c66195225bfdf012e4ed430f9f98a3ab","clippy.toml":"818cba7332cc56b019d59e09805a3498f523da788f51454742905f1987c0b563","rustfmt.toml":"bf9776adb152b3fdc0d75c0929ede148c3e28c58f909a7d052865bc332e8958f","src/lib.rs":"a59a425a4bf1e2ae8f16bc0349fadf0fe3f7ec2effa44137bd59e17c3ff15456","src/proptest_impls.rs":"aa17bad810abe4a7b6c7a2c3163ae9749b03dd8bcef5043b0c4b9d00977f981c","src/serde_impls.rs":"eb7f00d1ceb7135506047dbefd7e6acee0364b5a9194111f49dbf2d1eb3661ac","src/tests.rs":"d6108c540dc93446b17d297b50372f799ef777c2cb0280fd37824a102ec24533","tests/integration_tests.rs":"b664a7555d2e5ac9ab71384e3ccfb73c01abe4c401f8de32e234c03b4d19d0f8"},"package":"869119e97797867fd90f5e22af7d0bd274bd4635ebb9eb68c04f3f513ae6c412"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"2530b12d7ddf3395bbc4c10557e57531498039ba28528b91ffc3f3deefc76f77","CODE_OF_CONDUCT.md":"f51e207c2961ec061cac5c8aa9dd3098c3437de2c106d740c2aae90771bc0f86","Cargo.toml":"7bf7de17ab10cd95aadf102f37c0b8a58f0c31f90cfeee81126ead8ad3cb0a26","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"84762d717d0f2358c56f54ee46a6ca5f1582b7d3843f7a4d6e553ea04a57ca1b","build.rs":"ca6914ad35e69842b6fba6e436d0417f39dbe6ee18694d4dd89b372d31cbf715","clippy.toml":"818cba7332cc56b019d59e09805a3498f523da788f51454742905f1987c0b563","rustfmt.toml":"bf9776adb152b3fdc0d75c0929ede148c3e28c58f909a7d052865bc332e8958f","src/lib.rs":"3a744ca7df473bb8bd97e1f4a961d517cb7379b8756e38893dd9d53a169c41e1","src/proptest_impls.rs":"aa17bad810abe4a7b6c7a2c3163ae9749b03dd8bcef5043b0c4b9d00977f981c","src/serde_impls.rs":"eb7f00d1ceb7135506047dbefd7e6acee0364b5a9194111f49dbf2d1eb3661ac","src/tests.rs":"d6108c540dc93446b17d297b50372f799ef777c2cb0280fd37824a102ec24533","tests/integration_tests.rs":"b664a7555d2e5ac9ab71384e3ccfb73c01abe4c401f8de32e234c03b4d19d0f8"},"package":"88ad0e1e3e88dd237a156ab9f571021b8a158caa0ae44b1968a241efb5144c1e"} \ No newline at end of file
diff --git a/vendor/camino/CHANGELOG.md b/vendor/camino/CHANGELOG.md
index b9a04de7a..67c2ea8d3 100644
--- a/vendor/camino/CHANGELOG.md
+++ b/vendor/camino/CHANGELOG.md
@@ -3,6 +3,24 @@
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [1.1.1] - 2022-08-12
+
+### Fixed
+
+- Fixed a build regression on older nightlies in the 1.63 series
+ ([#22](https://github.com/camino-rs/camino/issues/22)).
+- Documentation fixes.
+
+## [1.1.0] - 2022-08-11
+
+### Added
+
+- New methods, mirroring those in recent versions of Rust:
+ - `Utf8Path::try_exists` checks whether a path exists. Note that while `std::path::Path` only provides this method for Rust 1.58 and above, `camino` backfills the method for all Rust versions it supports.
+ - `Utf8PathBuf::shrink_to` shrinks a `Utf8PathBuf` to a given size. This was added in, and is gated on, Rust 1.56+.
+ - `Utf8PathBuf::try_reserve` and `Utf8PathBuf::try_reserve_exact` implement fallible allocations. These were added in, and are gated on, Rust 1.63+.
+- A number of `#[must_use]` annotations to APIs, mirroring those added to `Path` and `PathBuf` in recent versions of Rust. The minor version bump is due to this change.
+
## [1.0.9] - 2022-05-19
### Fixed
@@ -24,7 +42,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- `Utf8Path::is_symlink` checks whether a path is a symlink. Note that while `std::path::Path` only
- provides this method for version 1.58 and above, `camino` polyfills the method for all Rust versions
+ provides this method for version 1.58 and above, `camino` backfills the method for all Rust versions
it supports.
### Changed
@@ -83,6 +101,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
Initial release.
+[1.1.1]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.1
+[1.1.0]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.0
[1.0.9]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.9
[1.0.8]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.8
[1.0.7]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.7
diff --git a/vendor/camino/Cargo.toml b/vendor/camino/Cargo.toml
index cd2bd9fea..28c007855 100644
--- a/vendor/camino/Cargo.toml
+++ b/vendor/camino/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "camino"
-version = "1.0.9"
+version = "1.1.1"
authors = [
"Without Boats <saoirse@without.boats>",
"Ashley Williams <ashley666ashley@gmail.com>",
diff --git a/vendor/camino/build.rs b/vendor/camino/build.rs
index bc3e4480d..7f5cbdf9b 100644
--- a/vendor/camino/build.rs
+++ b/vendor/camino/build.rs
@@ -21,10 +21,28 @@ fn main() {
if compiler.minor >= 44 {
println!("cargo:rustc-cfg=path_buf_capacity");
}
+ if compiler.minor >= 56 {
+ println!("cargo:rustc-cfg=shrink_to");
+ }
+ // Stable and beta 1.63 have a stable try_reserve_2.
+ if (compiler.minor >= 63
+ && (compiler.channel == ReleaseChannel::Stable || compiler.channel == ReleaseChannel::Beta))
+ || compiler.minor >= 64
+ {
+ println!("cargo:rustc-cfg=try_reserve_2");
+ }
}
struct Compiler {
minor: u32,
+ channel: ReleaseChannel,
+}
+
+#[derive(Clone, Copy, Debug, Eq, PartialEq)]
+enum ReleaseChannel {
+ Stable,
+ Beta,
+ Nightly,
}
fn rustc_version() -> Option<Compiler> {
@@ -36,5 +54,12 @@ fn rustc_version() -> Option<Compiler> {
return None;
}
let minor = pieces.next()?.parse().ok()?;
- Some(Compiler { minor })
+ let channel = if version.contains("nightly") {
+ ReleaseChannel::Nightly
+ } else if version.contains("beta") {
+ ReleaseChannel::Beta
+ } else {
+ ReleaseChannel::Stable
+ };
+ Some(Compiler { minor, channel })
}
diff --git a/vendor/camino/src/lib.rs b/vendor/camino/src/lib.rs
index 4a1b6dfd7..fcfba3805 100644
--- a/vendor/camino/src/lib.rs
+++ b/vendor/camino/src/lib.rs
@@ -120,6 +120,7 @@ impl Utf8PathBuf {
///
/// let path = Utf8PathBuf::new();
/// ```
+ #[must_use]
pub fn new() -> Utf8PathBuf {
Utf8PathBuf(PathBuf::new())
}
@@ -177,6 +178,7 @@ impl Utf8PathBuf {
/// let new_utf8_path_buf = Utf8PathBuf::from_path_buf(std_path_buf).unwrap();
/// assert_eq!(new_utf8_path_buf, "foo.txt");
/// ```
+ #[must_use = "`self` will be dropped if the result is not used"]
pub fn into_std_path_buf(self) -> PathBuf {
self.into()
}
@@ -202,6 +204,7 @@ impl Utf8PathBuf {
///
/// [`with_capacity`]: PathBuf::with_capacity
#[cfg(path_buf_capacity)]
+ #[must_use]
pub fn with_capacity(capacity: usize) -> Utf8PathBuf {
Utf8PathBuf(PathBuf::with_capacity(capacity))
}
@@ -216,6 +219,7 @@ impl Utf8PathBuf {
/// let p = Utf8PathBuf::from("/test");
/// assert_eq!(Utf8Path::new("/test"), p.as_path());
/// ```
+ #[must_use]
pub fn as_path(&self) -> &Utf8Path {
// SAFETY: every Utf8PathBuf constructor ensures that self is valid UTF-8
unsafe { Utf8Path::assume_utf8(&*self.0) }
@@ -347,6 +351,7 @@ impl Utf8PathBuf {
/// let s = p.into_string();
/// assert_eq!(s, "/the/head");
/// ```
+ #[must_use = "`self` will be dropped if the result is not used"]
pub fn into_string(self) -> String {
self.into_os_string().into_string().unwrap()
}
@@ -363,11 +368,13 @@ impl Utf8PathBuf {
/// let s = p.into_os_string();
/// assert_eq!(s, OsStr::new("/the/head"));
/// ```
+ #[must_use = "`self` will be dropped if the result is not used"]
pub fn into_os_string(self) -> OsString {
self.0.into_os_string()
}
/// Converts this `Utf8PathBuf` into a [boxed](Box) [`Utf8Path`].
+ #[must_use = "`self` will be dropped if the result is not used"]
pub fn into_boxed_path(self) -> Box<Utf8Path> {
let ptr = Box::into_raw(self.0.into_boxed_path()) as *mut Utf8Path;
// SAFETY:
@@ -384,6 +391,7 @@ impl Utf8PathBuf {
///
/// [`capacity`]: PathBuf::capacity
#[cfg(path_buf_capacity)]
+ #[must_use]
pub fn capacity(&self) -> usize {
self.0.capacity()
}
@@ -408,6 +416,20 @@ impl Utf8PathBuf {
self.0.reserve(additional)
}
+ /// Invokes [`try_reserve`] on the underlying instance of [`PathBuf`].
+ ///
+ /// *Requires Rust 1.63 or newer.*
+ ///
+ /// [`try_reserve`]: PathBuf::try_reserve
+ #[cfg(try_reserve_2)]
+ #[inline]
+ pub fn try_reserve(
+ &mut self,
+ additional: usize,
+ ) -> Result<(), std::collections::TryReserveError> {
+ self.0.try_reserve(additional)
+ }
+
/// Invokes [`reserve_exact`] on the underlying instance of [`PathBuf`].
///
/// *Requires Rust 1.44 or newer.*
@@ -418,6 +440,20 @@ impl Utf8PathBuf {
self.0.reserve_exact(additional)
}
+ /// Invokes [`try_reserve_exact`] on the underlying instance of [`PathBuf`].
+ ///
+ /// *Requires Rust 1.63 or newer.*
+ ///
+ /// [`try_reserve_exact`]: PathBuf::try_reserve_exact
+ #[cfg(try_reserve_2)]
+ #[inline]
+ pub fn try_reserve_exact(
+ &mut self,
+ additional: usize,
+ ) -> Result<(), std::collections::TryReserveError> {
+ self.0.try_reserve_exact(additional)
+ }
+
/// Invokes [`shrink_to_fit`] on the underlying instance of [`PathBuf`].
///
/// *Requires Rust 1.44 or newer.*
@@ -427,6 +463,17 @@ impl Utf8PathBuf {
pub fn shrink_to_fit(&mut self) {
self.0.shrink_to_fit()
}
+
+ /// Invokes [`shrink_to`] on the underlying instance of [`PathBuf`].
+ ///
+ /// *Requires Rust 1.56 or newer.*
+ ///
+ /// [`shrink_to`]: PathBuf::shrink_to
+ #[cfg(shrink_to)]
+ #[inline]
+ pub fn shrink_to(&mut self, min_capacity: usize) {
+ self.0.shrink_to(min_capacity)
+ }
}
impl Deref for Utf8PathBuf {
@@ -586,6 +633,7 @@ impl Utf8Path {
/// ```
///
/// [`str`]: str
+ #[must_use]
pub fn as_str(&self) -> &str {
// SAFETY: every Utf8Path constructor ensures that self is valid UTF-8
unsafe { assume_utf8(self.as_os_str()) }
@@ -601,6 +649,7 @@ impl Utf8Path {
/// let os_str = Utf8Path::new("foo.txt").as_os_str();
/// assert_eq!(os_str, std::ffi::OsStr::new("foo.txt"));
/// ```
+ #[must_use]
pub fn as_os_str(&self) -> &OsStr {
self.0.as_os_str()
}
@@ -615,6 +664,8 @@ impl Utf8Path {
/// let path_buf = Utf8Path::new("foo.txt").to_path_buf();
/// assert_eq!(path_buf, Utf8PathBuf::from("foo.txt"));
/// ```
+ #[must_use = "this returns the result of the operation, \
+ without modifying the original"]
pub fn to_path_buf(&self) -> Utf8PathBuf {
Utf8PathBuf(self.0.to_path_buf())
}
@@ -637,6 +688,7 @@ impl Utf8Path {
/// ```
///
/// [`has_root`]: Utf8Path::has_root
+ #[must_use]
pub fn is_absolute(&self) -> bool {
self.0.is_absolute()
}
@@ -654,6 +706,7 @@ impl Utf8Path {
/// ```
///
/// [`is_absolute`]: Utf8Path::is_absolute
+ #[must_use]
pub fn is_relative(&self) -> bool {
self.0.is_relative()
}
@@ -674,6 +727,7 @@ impl Utf8Path {
///
/// assert!(Utf8Path::new("/etc/passwd").has_root());
/// ```
+ #[must_use]
pub fn has_root(&self) -> bool {
self.0.has_root()
}
@@ -695,6 +749,7 @@ impl Utf8Path {
/// assert_eq!(grand_parent, Utf8Path::new("/"));
/// assert_eq!(grand_parent.parent(), None);
/// ```
+ #[must_use]
pub fn parent(&self) -> Option<&Utf8Path> {
self.0.parent().map(|path| {
// SAFETY: self is valid UTF-8, so parent is valid UTF-8 as well
@@ -753,6 +808,7 @@ impl Utf8Path {
/// assert_eq!(None, Utf8Path::new("foo.txt/..").file_name());
/// assert_eq!(None, Utf8Path::new("/").file_name());
/// ```
+ #[must_use]
pub fn file_name(&self) -> Option<&str> {
self.0.file_name().map(|s| {
// SAFETY: self is valid UTF-8, so file_name is valid UTF-8 as well
@@ -818,6 +874,7 @@ impl Utf8Path {
///
/// assert!(!Utf8Path::new("/etc/foo.rs").starts_with("/etc/foo"));
/// ```
+ #[must_use]
pub fn starts_with(&self, base: impl AsRef<Path>) -> bool {
self.0.starts_with(base)
}
@@ -840,6 +897,7 @@ impl Utf8Path {
/// assert!(!path.ends_with("/resolv.conf"));
/// assert!(!path.ends_with("conf")); // use .extension() instead
/// ```
+ #[must_use]
pub fn ends_with(&self, base: impl AsRef<Path>) -> bool {
self.0.ends_with(base)
}
@@ -863,6 +921,7 @@ impl Utf8Path {
/// assert_eq!("foo", Utf8Path::new("foo.rs").file_stem().unwrap());
/// assert_eq!("foo.tar", Utf8Path::new("foo.tar.gz").file_stem().unwrap());
/// ```
+ #[must_use]
pub fn file_stem(&self) -> Option<&str> {
self.0.file_stem().map(|s| {
// SAFETY: self is valid UTF-8, so file_stem is valid UTF-8 as well
@@ -889,6 +948,7 @@ impl Utf8Path {
/// assert_eq!("rs", Utf8Path::new("foo.rs").extension().unwrap());
/// assert_eq!("gz", Utf8Path::new("foo.tar.gz").extension().unwrap());
/// ```
+ #[must_use]
pub fn extension(&self) -> Option<&str> {
self.0.extension().map(|s| {
// SAFETY: self is valid UTF-8, so extension is valid UTF-8 as well
@@ -907,6 +967,7 @@ impl Utf8Path {
///
/// assert_eq!(Utf8Path::new("/etc").join("passwd"), Utf8PathBuf::from("/etc/passwd"));
/// ```
+ #[must_use]
pub fn join(&self, path: impl AsRef<Utf8Path>) -> Utf8PathBuf {
Utf8PathBuf(self.0.join(&path.as_ref().0))
}
@@ -923,6 +984,7 @@ impl Utf8Path {
///
/// assert_eq!(Utf8Path::new("/etc").join_os("passwd"), PathBuf::from("/etc/passwd"));
/// ```
+ #[must_use]
pub fn join_os(&self, path: impl AsRef<Path>) -> PathBuf {
self.0.join(path)
}
@@ -942,6 +1004,7 @@ impl Utf8Path {
/// let path = Utf8Path::new("/tmp");
/// assert_eq!(path.with_file_name("var"), Utf8PathBuf::from("/var"));
/// ```
+ #[must_use]
pub fn with_file_name(&self, file_name: impl AsRef<str>) -> Utf8PathBuf {
Utf8PathBuf(self.0.with_file_name(file_name.as_ref()))
}
@@ -1223,6 +1286,9 @@ impl Utf8Path {
/// Returns `true` if the path points at an existing entity.
///
+ /// Warning: this method may be error-prone, consider using [`try_exists()`] instead!
+ /// It also has a risk of introducing time-of-check to time-of-use (TOCTOU) bugs.
+ ///
/// This function will traverse symbolic links to query information about the
/// destination file. In case of broken symbolic links this will return `false`.
///
@@ -1240,10 +1306,51 @@ impl Utf8Path {
///
/// This is a convenience function that coerces errors to false. If you want to
/// check errors, call [`fs::metadata`].
+ ///
+ /// [`try_exists()`]: Self::try_exists
+ #[must_use]
pub fn exists(&self) -> bool {
self.0.exists()
}
+ /// Returns `Ok(true)` if the path points at an existing entity.
+ ///
+ /// This function will traverse symbolic links to query information about the
+ /// destination file. In case of broken symbolic links this will return `Ok(false)`.
+ ///
+ /// As opposed to the [`exists()`] method, this one doesn't silently ignore errors
+ /// unrelated to the path not existing. (E.g. it will return `Err(_)` in case of permission
+ /// denied on some of the parent directories.)
+ ///
+ /// Note that while this avoids some pitfalls of the `exists()` method, it still can not
+ /// prevent time-of-check to time-of-use (TOCTOU) bugs. You should only use it in scenarios
+ /// where those bugs are not an issue.
+ ///
+ /// # Examples
+ ///
+ /// ```no_run
+ /// use camino::Utf8Path;
+ /// assert!(!Utf8Path::new("does_not_exist.txt").try_exists().expect("Can't check existence of file does_not_exist.txt"));
+ /// assert!(Utf8Path::new("/root/secret_file.txt").try_exists().is_err());
+ /// ```
+ ///
+ /// [`exists()`]: Self::exists
+ #[inline]
+ pub fn try_exists(&self) -> io::Result<bool> {
+ // Note: this block is written this way rather than with a pattern guard to appease Rust
+ // 1.34.
+ match fs::metadata(self) {
+ Ok(_) => Ok(true),
+ Err(error) => {
+ if error.kind() == io::ErrorKind::NotFound {
+ Ok(false)
+ } else {
+ Err(error)
+ }
+ }
+ }
+ }
+
/// Returns `true` if the path exists on disk and is pointing at a regular file.
///
/// This function will traverse symbolic links to query information about the
@@ -1271,6 +1378,7 @@ impl Utf8Path {
/// it. Only using `is_file` can break workflows like `diff <( prog_a )` on
/// a Unix-like system for example. See [`fs::File::open`] or
/// [`fs::OpenOptions::open`] for more information.
+ #[must_use]
pub fn is_file(&self) -> bool {
self.0.is_file()
}
@@ -1296,6 +1404,7 @@ impl Utf8Path {
/// This is a convenience function that coerces errors to false. If you want to
/// check errors, call [`fs::metadata`] and handle its [`Result`]. Then call
/// [`fs::Metadata::is_dir`] if it was [`Ok`].
+ #[must_use]
pub fn is_dir(&self) -> bool {
self.0.is_dir()
}
@@ -1334,6 +1443,7 @@ impl Utf8Path {
}
/// Converts a `Box<Utf8Path>` into a [`Utf8PathBuf`] without copying or allocating.
+ #[must_use = "`self` will be dropped if the result is not used"]
pub fn into_path_buf(self: Box<Utf8Path>) -> Utf8PathBuf {
let ptr = Box::into_raw(self) as *mut Path;
// SAFETY:
@@ -1397,6 +1507,7 @@ impl fmt::Debug for Utf8Path {
///
/// [`ancestors`]: Utf8Path::ancestors
#[derive(Copy, Clone)]
+#[must_use = "iterators are lazy and do nothing unless consumed"]
#[repr(transparent)]
pub struct Utf8Ancestors<'a>(Ancestors<'a>);
@@ -1439,6 +1550,7 @@ impl<'a> FusedIterator for Utf8Ancestors<'a> {}
///
/// [`components`]: Utf8Path::components
#[derive(Clone, Eq, Ord, PartialEq, PartialOrd)]
+#[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct Utf8Components<'a>(Components<'a>);
impl<'a> Utf8Components<'a> {
@@ -1455,6 +1567,7 @@ impl<'a> Utf8Components<'a> {
///
/// assert_eq!(Utf8Path::new("foo/bar.txt"), components.as_path());
/// ```
+ #[must_use]
pub fn as_path(&self) -> &'a Utf8Path {
// SAFETY: Utf8Components was constructed from a Utf8Path, so it is guaranteed to be valid
// UTF-8
@@ -1523,6 +1636,7 @@ impl AsRef<OsStr> for Utf8Components<'_> {
///
/// [`iter`]: Utf8Path::iter
#[derive(Clone)]
+#[must_use = "iterators are lazy and do nothing unless consumed"]
pub struct Iter<'a> {
inner: Utf8Components<'a>,
}
@@ -1557,6 +1671,7 @@ impl<'a> Iter<'a> {
///
/// assert_eq!(Utf8Path::new("foo/bar.txt"), iter.as_path());
/// ```
+ #[must_use]
pub fn as_path(&self) -> &'a Utf8Path {
self.inner.as_path()
}
@@ -1674,6 +1789,7 @@ impl<'a> Utf8Component<'a> {
/// let components: Vec<_> = path.components().map(|comp| comp.as_str()).collect();
/// assert_eq!(&components, &[".", "tmp", "foo", "bar.txt"]);
/// ```
+ #[must_use]
pub fn as_str(&self) -> &'a str {
// SAFETY: Utf8Component was constructed from a Utf8Path, so it is guaranteed to be
// valid UTF-8
@@ -1691,6 +1807,7 @@ impl<'a> Utf8Component<'a> {
/// let components: Vec<_> = path.components().map(|comp| comp.as_os_str()).collect();
/// assert_eq!(&components, &[".", "tmp", "foo", "bar.txt"]);
/// ```
+ #[must_use]
pub fn as_os_str(&self) -> &'a OsStr {
match *self {
Utf8Component::Prefix(prefix) => prefix.as_os_str(),
@@ -1821,6 +1938,7 @@ impl<'a> Utf8Prefix<'a> {
/// assert!(!UNC("server", "share").is_verbatim());
/// assert!(!Disk(b'C').is_verbatim());
/// ```
+ #[must_use]
pub fn is_verbatim(&self) -> bool {
use Utf8Prefix::*;
match self {
@@ -1872,6 +1990,7 @@ impl<'a> Utf8PrefixComponent<'a> {
///
/// See [`Utf8Prefix`]'s documentation for more information on the different
/// kinds of prefixes.
+ #[must_use]
pub fn kind(&self) -> Utf8Prefix<'a> {
// SAFETY for all the below unsafe blocks: the path self was originally constructed from was
// UTF-8 so any parts of it are valid UTF-8
@@ -1894,6 +2013,7 @@ impl<'a> Utf8PrefixComponent<'a> {
}
/// Returns the [`str`] slice for this prefix.
+ #[must_use]
pub fn as_str(&self) -> &'a str {
// SAFETY: Utf8PrefixComponent was constructed from a Utf8Path, so it is guaranteed to be
// valid UTF-8
@@ -1901,6 +2021,7 @@ impl<'a> Utf8PrefixComponent<'a> {
}
/// Returns the raw [`OsStr`] slice for this prefix.
+ #[must_use]
pub fn as_os_str(&self) -> &'a OsStr {
self.0.as_os_str()
}
@@ -2596,6 +2717,7 @@ impl<'a> IntoIterator for &'a Utf8Path {
macro_rules! impl_cmp {
($lhs:ty, $rhs: ty) => {
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialEq<$rhs> for $lhs {
#[inline]
fn eq(&self, other: &$rhs) -> bool {
@@ -2603,6 +2725,7 @@ macro_rules! impl_cmp {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialEq<$lhs> for $rhs {
#[inline]
fn eq(&self, other: &$lhs) -> bool {
@@ -2610,6 +2733,7 @@ macro_rules! impl_cmp {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialOrd<$rhs> for $lhs {
#[inline]
fn partial_cmp(&self, other: &$rhs) -> Option<Ordering> {
@@ -2617,6 +2741,7 @@ macro_rules! impl_cmp {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialOrd<$lhs> for $rhs {
#[inline]
fn partial_cmp(&self, other: &$lhs) -> Option<Ordering> {
@@ -2634,6 +2759,7 @@ impl_cmp!(Cow<'a, Utf8Path>, Utf8PathBuf);
macro_rules! impl_cmp_std_path {
($lhs:ty, $rhs: ty) => {
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialEq<$rhs> for $lhs {
#[inline]
fn eq(&self, other: &$rhs) -> bool {
@@ -2641,6 +2767,7 @@ macro_rules! impl_cmp_std_path {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialEq<$lhs> for $rhs {
#[inline]
fn eq(&self, other: &$lhs) -> bool {
@@ -2648,6 +2775,7 @@ macro_rules! impl_cmp_std_path {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialOrd<$rhs> for $lhs {
#[inline]
fn partial_cmp(&self, other: &$rhs) -> Option<std::cmp::Ordering> {
@@ -2655,6 +2783,7 @@ macro_rules! impl_cmp_std_path {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialOrd<$lhs> for $rhs {
#[inline]
fn partial_cmp(&self, other: &$lhs) -> Option<std::cmp::Ordering> {
@@ -2679,6 +2808,7 @@ impl_cmp_std_path!(&'a Utf8Path, PathBuf);
macro_rules! impl_cmp_str {
($lhs:ty, $rhs: ty) => {
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialEq<$rhs> for $lhs {
#[inline]
fn eq(&self, other: &$rhs) -> bool {
@@ -2686,6 +2816,7 @@ macro_rules! impl_cmp_str {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialEq<$lhs> for $rhs {
#[inline]
fn eq(&self, other: &$lhs) -> bool {
@@ -2693,6 +2824,7 @@ macro_rules! impl_cmp_str {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialOrd<$rhs> for $lhs {
#[inline]
fn partial_cmp(&self, other: &$rhs) -> Option<std::cmp::Ordering> {
@@ -2700,6 +2832,7 @@ macro_rules! impl_cmp_str {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialOrd<$lhs> for $rhs {
#[inline]
fn partial_cmp(&self, other: &$lhs) -> Option<std::cmp::Ordering> {
@@ -2724,6 +2857,7 @@ impl_cmp_str!(&'a Utf8Path, String);
macro_rules! impl_cmp_os_str {
($lhs:ty, $rhs: ty) => {
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialEq<$rhs> for $lhs {
#[inline]
fn eq(&self, other: &$rhs) -> bool {
@@ -2731,6 +2865,7 @@ macro_rules! impl_cmp_os_str {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialEq<$lhs> for $rhs {
#[inline]
fn eq(&self, other: &$lhs) -> bool {
@@ -2738,6 +2873,7 @@ macro_rules! impl_cmp_os_str {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialOrd<$rhs> for $lhs {
#[inline]
fn partial_cmp(&self, other: &$rhs) -> Option<std::cmp::Ordering> {
@@ -2745,6 +2881,7 @@ macro_rules! impl_cmp_os_str {
}
}
+ #[allow(clippy::extra_unused_lifetimes)]
impl<'a, 'b> PartialOrd<$lhs> for $rhs {
#[inline]
fn partial_cmp(&self, other: &$lhs) -> Option<std::cmp::Ordering> {
diff --git a/vendor/clap-3.2.20/.cargo-checksum.json b/vendor/clap-3.2.20/.cargo-checksum.json
new file mode 100644
index 000000000..22fa24875
--- /dev/null
+++ b/vendor/clap-3.2.20/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.lock":"60560d6b2bec73734ebea64f8b916cbe9361e672157119801ba0e2f89334453c","Cargo.toml":"5def59eada2aa1a035cb39b38da4ba02baec2dd9271e4ef16731a8ef06c4d58f","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"0d687e1f07b58fe68bda74668ff6326125e5e5efa184cce755cd84ac535b7058","README.md":"ee049ee3ccab683cd3fa7c980db71c22ed8577378433cad5a93c1bc2a9dbe20f","examples/cargo-example-derive.md":"8305e66dd56619ec3a1d116951c893965cc8435574f5bf8baea923492357c626","examples/cargo-example-derive.rs":"a94003c9fadd1a11c35616ea4e5132c768bad08650e207848e1de56bffd86c8f","examples/cargo-example.md":"b7e51be8f05538ae39ce232ef12c873af81ab5abb5740c079d09b7cdd27a3b71","examples/cargo-example.rs":"be19a1ccb9d91882d76e7553f692ef89fa2a7acbbc1500232ce9fb60b6e8a85b","examples/demo.md":"9db305e9ff333f5e783dcc3142683280816d7bc111a57e9dcc4127f07ca44055","examples/demo.rs":"8a18ab15a235b84efd82017e51a891ed2df5f0154adbfce2806dcac089296b64","examples/derive_ref/augment_args.rs":"93fa1e122328a5d12ca4f921d17902dff6ec47b69fb2140124e2a00809ec4a1a","examples/derive_ref/augment_subcommands.rs":"5535f8ca1893101acb5eba8edc311497431ff9aa26f62f1d9743bdc147bef7a4","examples/derive_ref/custom-bool.md":"d92e441199c7584d4b888c45124366cc4802ec8ea67cdcbb3423ffaa3c5268ac","examples/derive_ref/custom-bool.rs":"f88e9c68d2447a24bc98e05124fea17836155f32cff30a2b8a03ad254383247c","examples/derive_ref/flatten_hand_args.rs":"abdb4e55b0cb71e5c4d14fe20ae0930df6888b2dca01225a02d3c6828bcbc791","examples/derive_ref/hand_subcommand.rs":"1a5464b9c5791361930b5591adeb6fcf6f14b83abdfa6443d2c80bcf0c097b3e","examples/derive_ref/interop_tests.md":"3a357e82cfc155f71e0348be33f78295aa77839c3e3a5b7c1783cbd1259e6a61","examples/escaped-positional-derive.md":"64329a454ad399cfde7cae37c2419fb68f1dfcdf2b7d809e113bab69c5f9b947","examples/escaped-positional-derive.rs":"68b0b474509d0d0b19a2ad756c15a18a9d3b30278390ddf1b7bc11b40fe5f937","examples/escaped-positional.md":"a8259da128ad7ad1f898527bb9e3c1c55541fdc2a59a8599fcddbe9cf58a3563","examples/escaped-positional.rs":"ca33f37267df8de835eeb5817e906a957e96c4ee9bd95b97abee3af25639f3c2","examples/git-derive.md":"280909b56757f102cad3a3274a92c884a0cec4e698c0f8718d2edee73fbbd810","examples/git-derive.rs":"2e8310364f2622b1b11c916643dda7392ec4a4fd585f30d537672d2fed48ea6e","examples/git.md":"31c172433b05ce581179aaba10d610de5cf097b0da894f1330a0437ef332feab","examples/git.rs":"9da386531604fc2afbd375685e213200ad10e34100ec92b4bfa6fb5730283aa1","examples/multicall-busybox.md":"0e07a2f79f94daf4586db85bf207b4bd8f0653b59858d6b4f0b66956a5b2178f","examples/multicall-busybox.rs":"709f71a82295a539d0a239371d35d1eeb517eaa3bb0a4db406bb7e5d3541a4a5","examples/multicall-hostname.md":"b547e42135269ab1e8be8dea4da6a4e99dfaa006a320fa319198d5934e1e97ab","examples/multicall-hostname.rs":"cc58a924dd2e57281f36e30481a1cbc8186952adbf149f9e1e13f9c673614fd9","examples/pacman.md":"c91e1582caf8a2cdeca208c856d1ede3f3ff26948b288a98ef69ea695f12f555","examples/pacman.rs":"f249824b950e1c34fae37afe04389143a037452a1f699c215172ac20e0285984","examples/repl.rs":"d50c1da634c237b26989994b1efa6fd1a087874a82d1fc8c1863be4ea8deaa8c","examples/tutorial_builder/01_quick.md":"80878c8630e0ecf7bb172c2645c2c17480ca5a37e5f4f481ab99e88d3a37da8e","examples/tutorial_builder/01_quick.rs":"c19b165fce9468fb3c9d3d9354a2b9829ceea7ffba6b7134d4941a6e986429a9","examples/tutorial_builder/02_app_settings.md":"f0f7b48afa7a97c9270f9d63a0e9e0f3117733ee0201639eae2199a4aca4944e","examples/tutorial_builder/02_app_settings.rs":"dd770d131726c3f37e202c9b10c969cc4eba90249c54a05594535cea6efe2749","examples/tutorial_builder/02_apps.md":"815a9197925d403b1d93969ace87e80e32667333fa83f2c86abcbdfa17cf0d7e","examples/tutorial_builder/02_apps.rs":"a7016469d10259ae0025fb6ad5b9d3c732cf082869348005d4774d2bb0722d2d","examples/tutorial_builder/02_crate.md":"086581912b34d305bb7cf3c5a35238c151bd366fac4c0923057883253731c250","examples/tutorial_builder/02_crate.rs":"2742c6a3f1946b89b4f1146893e126d68e1cf55ad4130fb94105091900421273","examples/tutorial_builder/03_01_flag_bool.md":"068378b1e76ce624dd0153dfaa9a7ae2d1a84205b1e169f5f1a16bebd50715cf","examples/tutorial_builder/03_01_flag_bool.rs":"d49b30b527faa6a383b334e572d546fab5c4b298a5549842073ab42a33a05c94","examples/tutorial_builder/03_01_flag_count.md":"8d62fbef076eac962a1d0082afa4916de22277aee973d693de33e9fd73b16669","examples/tutorial_builder/03_01_flag_count.rs":"2bfaac3aa9bcbbf37e18e74a40d966391e208d44b45a1e9c4ab61d22fd14dd40","examples/tutorial_builder/03_02_option.md":"585793524138da00c25b9fdd883b25eb8addfaf8742365d84cde63169a9289a7","examples/tutorial_builder/03_02_option.rs":"ce43934605e0438f1e8706e5e970cfcd930f76c4ebee02450ffc63de520994bd","examples/tutorial_builder/03_03_positional.md":"46fe5085841342243efd9614e80db7db3c52ae5af7c6cdd402b569d310e63fe9","examples/tutorial_builder/03_03_positional.rs":"fc7538d0fe8501c56070f0f22be699f128890636aa4ff8478cd6c7beeea279da","examples/tutorial_builder/03_04_subcommands.md":"fc5a92c5290b3cc119a6421779cdd8f4791465a1d3f50f4f29ccb08f3063a6f5","examples/tutorial_builder/03_04_subcommands.rs":"a309a332004edbed6dc14b64b1ba6cc0cd42871f3c5b8da7daab772764839c68","examples/tutorial_builder/03_05_default_values.md":"431800610a29d9a5587b74b30d709e67af5a0b8980900de20e5876fb9491144c","examples/tutorial_builder/03_05_default_values.rs":"b277be9cfe5d87958f9cf2e8a178bb007b070723528bedc8b81163aedb3a2880","examples/tutorial_builder/04_01_enum.md":"d1310efc5c8acb5ca9c86b57deebbcbd8766869284d2e8ea51e32b3eeac38439","examples/tutorial_builder/04_01_enum.rs":"596aa44bc401674a4ccf091b81b2df79b911dbb01d61fd167fd270d1e21a3609","examples/tutorial_builder/04_01_possible.md":"308cd6530b3c389bf2a82b2b66ad33025be230d84d94835273af35a90eb6a753","examples/tutorial_builder/04_01_possible.rs":"3d781b26d257061b55a957744c2dbd99c1d2346c151230fb18fe5f576d19585c","examples/tutorial_builder/04_02_parse.md":"ea14a355913fd7a8af5aac4be2bdecfda72c039b62ccadfb91ff8d39a447955e","examples/tutorial_builder/04_02_parse.rs":"a65f596341e65f41d555b38a6f5e22a5e03aac6faa4e8b3e3c85fa0e0935a2d7","examples/tutorial_builder/04_02_validate.md":"7536f4fb1a11ab94e54b6b98b7364c77912b7600803aeda5988c5b29f3f037c8","examples/tutorial_builder/04_02_validate.rs":"af6d9f748c6956aaa1006ce96834e0d013a9dbfb6d0acc63df5eb63caac56eef","examples/tutorial_builder/04_03_relations.md":"ffc6b8a2d606856fbb6cce677c5280e08eaffbe6a4c8e40cd68ce35959370ed7","examples/tutorial_builder/04_03_relations.rs":"a2dbb6d77587f64775ef57c4bb3869a2760e5c124e2870898bbf1191ef349b99","examples/tutorial_builder/04_04_custom.md":"d562fd072b5d91e8ea145771a2b6eb0284d3d21bfac707ba48ee00e92d76ad2d","examples/tutorial_builder/04_04_custom.rs":"ea0879629da2dab2d2e7fd25bdde53386d863a3e2d468e7ea306a6f8240a5522","examples/tutorial_builder/05_01_assert.rs":"69fc5a3d330be1f90055f886d65684204d7f0585459f362cf3c43b5caf4bbd7b","examples/tutorial_derive/01_quick.md":"1416029b09409468ba6b39ae5f91c41547f7f389c2534961f867ab17260638da","examples/tutorial_derive/01_quick.rs":"e17262c915199c4507d8950d5eafb73f3047e09b6dee2abbfe9f82ebf1b7ddd5","examples/tutorial_derive/02_app_settings.md":"3f4a81ebc7b674482768763bab70acf9bc31f68cc3ecb118c6f5493feaff3d42","examples/tutorial_derive/02_app_settings.rs":"7e81f4c1640b0bfbd87aedd3eda79ae7c47c669dee79b643b35e54c1dc076ee8","examples/tutorial_derive/02_apps.md":"27d22d45e438f60b346d34508a75783871e0fe9b1ae41ec759e56118a10feff7","examples/tutorial_derive/02_apps.rs":"e8cd02b5983b2203f1585b96858fade4cedfb124e366171d6b21fcb3f05b514e","examples/tutorial_derive/02_crate.md":"eb396e17db1dd68eb7689bcd806b63dbfe01ad48dfc12c285f00c42e1d4b8c1f","examples/tutorial_derive/02_crate.rs":"0b12a0790d23cee1e5d275893f428cc0af36d5532c2af00806e64c18ef9d309c","examples/tutorial_derive/03_01_flag_bool.md":"f6dd5ab050f0f1ac5924949a4ba45f248b2d4b1bd77210d78b9d8e9b3395d111","examples/tutorial_derive/03_01_flag_bool.rs":"07c31218d0332d7437d80e19c7e3c7be711bf0f56bee3ffb1c4d6f7f253b9304","examples/tutorial_derive/03_01_flag_count.md":"74d5c8a79581ceb7e6a11ec20ae59fa8c7f42591e10464aad50bbdd3d06916fc","examples/tutorial_derive/03_01_flag_count.rs":"945be42994845145b9c579b3834f8c6375f239293ded84fba35754bbe9fdcf9b","examples/tutorial_derive/03_02_option.md":"034b65008d05c1598fe3c1918f23d654d7a14cb610dd636a3c649d9d7a3b1559","examples/tutorial_derive/03_02_option.rs":"48be4cf49b498173200ad86d5d3cd64ce9381f86fdaaab70f05fc471f64a2185","examples/tutorial_derive/03_03_positional.md":"14f6b36eee218a38733b534e7b621f68a6f799bd96682a82980cba9f6e99a40e","examples/tutorial_derive/03_03_positional.rs":"f368ab1465ee4d84b84d175b97af6f64ce0676bec2482adef3ce966d2d8de26a","examples/tutorial_derive/03_04_subcommands.md":"3e1870fb10c78a01b63903060b1164f3f4d0e51c052e449abe11e2d06c252811","examples/tutorial_derive/03_04_subcommands.rs":"b25c8aec8f3816923b1154be91caafe0c2d2841fc1af5f0ef048f03d1273879e","examples/tutorial_derive/03_04_subcommands_alt.rs":"7ba6e81c2af6085b7e2721254500b34ee3e8622e20790b3c6f2786e165151b70","examples/tutorial_derive/03_05_default_values.md":"9ac52230ba7d9c214dcb64922cbf161970947d9650e8e7ea8d0ee949eba99c0e","examples/tutorial_derive/03_05_default_values.rs":"0ba14153a3c72a2435ac3688b990171a1670eb3f2f7cef21886732e489fad435","examples/tutorial_derive/04_01_enum.md":"ee57dc12a88a560d70f344629ac79cc497f96e967e97b4c643467747c8075172","examples/tutorial_derive/04_01_enum.rs":"d30abd8570357be26871c06939dee8173d34408250b6bdc3b1e76f1cbc06f888","examples/tutorial_derive/04_02_parse.md":"f191e6c77e6b133f78bd1123cec2b09c8dfe8bb17198d6348e26adade7465daf","examples/tutorial_derive/04_02_parse.rs":"fbb23ef2d98d3cb401cec9dd29d5818e4c189cc9f54fe961a2fbd08632a9634c","examples/tutorial_derive/04_02_validate.md":"c88670017d06261d454818ff18f21a06275f35d564e637c5346ce3b7fca8a02b","examples/tutorial_derive/04_02_validate.rs":"87d9c465f912b69e5839ea87404a221a39421404012c1a7fd6e327b03ceb12f0","examples/tutorial_derive/04_03_relations.md":"5657bbeee193f21a312db682cfa216f1001a94ace024c56a959985feb2e29069","examples/tutorial_derive/04_03_relations.rs":"eb8e737733261d3d1b7f4def7a05c37ba7c1c010357c7de33ee42c8adfdf6dc2","examples/tutorial_derive/04_04_custom.md":"9627d0025c5c063682387d8e00b3fb097114d1431c1ce8808038be34f781576a","examples/tutorial_derive/04_04_custom.rs":"0e745c6dab0881c62190e82e01409b70cf3286dd0983db4a612f1be88fdd1a8d","examples/tutorial_derive/05_01_assert.rs":"653450ff2e528f29b6b31d979fd7da094ea8e74b8b61a4657935c9ac2efbc28e","examples/typed-derive.md":"c22bb8da2e294f1d3725624e0c442713e5f263b10a2ee76a22ffa07f89af735a","examples/typed-derive.rs":"1c88bb1c8cec4e2e7a452552fa52675d96ffd6f201f5384b4e98d0a70fce1e4c","src/_cookbook/cargo_example.rs":"fe7594a5233e9106a159aa1f5d5f0cde0d844356f630d55c78b8ef322327d4e5","src/_cookbook/cargo_example_derive":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","src/_cookbook/cargo_example_derive.rs":"badf3e931ef5d5b7f5addc4912aca057ba83ee6302c43d7eeecd1661673fd407","src/_cookbook/escaped_positional.rs":"2789d8fea126355805b29e76b52c6cea4982565014087a46e0d48e4ddfbed7ab","src/_cookbook/escaped_positional_derive.rs":"802d0b672f4ed48152235d4a26a64c97fa921b361177bdd3a1a33cbac96f665d","src/_cookbook/git.rs":"372977252a22fc776e3acaa4629e964114ccd6a49b8ef334d2b6646f12e8b5ee","src/_cookbook/git_derive.rs":"4ab7c0197efda06607ca60c2a85ea743aed3494f5fe9e408d935ea0500a345fc","src/_cookbook/mod.rs":"34c53c6273512976676a82dded921f8d99e0312dd3e823ae1549606754625827","src/_cookbook/multicall_busybox.rs":"56176b4fa15e7a39c433706971d4e68aaf26ddc2a5790078b6dbe722ee13efee","src/_cookbook/multicall_hostname.rs":"907f8decf81ea4d4cbf81639ea4cd2f925eda64d4831454a7656369b65522780","src/_cookbook/pacman.rs":"863125b2d3d7931a9e4541c8ab1242b8bfcb421d8b5c604ea681efd805f68da7","src/_cookbook/repl.rs":"1393209b2cc5c203296d57c5a065b764b4318be7855e48baf16de851e250cf90","src/_cookbook/typed_derive.rs":"3d28e78cd0b068b4fcb32a7fea6244de176f2fe75dfcb59e99c33b66a7ae4864","src/_derive/_tutorial.rs":"237d316ad5f9838dc011283e454afce24d47bf2e9c5038ba5402bafeb2959090","src/_derive/mod.rs":"7f1f6b59332044681324f0753dfb51641e52f46dee74a21b8c94a413bc06be02","src/_faq.rs":"06d10de865ae34305fa973db9b00dc31f54e0f63f8fe039805aa371c36a796b9","src/_features.rs":"bbcbf1b256136d20f89e4f8a16ff37b04f07dfee0d2d4f2b013f445467628032","src/_tutorial.rs":"e7c7359b6b6c86cf6e18f4bdc3c90ce440b82bf07ce304ca2e127fb2a04cbf9f","src/bin/stdio-fixture.rs":"e8f10afbfe1857bcf986d2f55be0ca19a50c905d9f650c6e1fd42dbacf219b04","src/builder/action.rs":"beab4d8dca6337dfd64f387ee3198a88a6dcb71ec94f5bbbfe6bb4c0175ab9ee","src/builder/app_settings.rs":"17b094a5c044b2387467706bade1b19b5703bf99fc5081ac9508f410f871a1f2","src/builder/arg.rs":"e7120b60bf72d2572fc1f325b377a32da9ece4d7ac00b4a580a0f6a42c08ea8a","src/builder/arg_group.rs":"263d9c79e03015fe4e2fab4616fc73089be60fb2ec17aa2a06f3d6a24740432c","src/builder/arg_predicate.rs":"8c9fd14780cd42465f32f2e8927b97c06e686d09b5927ba3cd5bbd792af7a13d","src/builder/arg_settings.rs":"b7966dfea529a1be1164ca2d76494b1712cb2f73b024d2a23307dcd473933887","src/builder/command.rs":"57f0076465feb3cf6a0a16610b345fae8dbde8d248e4ef94111a27051c40789b","src/builder/debug_asserts.rs":"d1d5adc82cb8269445b2ef197f1e566f61e7f13d6a24afaad928e45e95aed170","src/builder/macros.rs":"904e42e72c49107ae324f45d5df24fbff13b9c7d4589f1a4ae38594add704434","src/builder/mod.rs":"205367cb5ba5d5ba7894091535ce3a5dd23b35fd436e003196d89523e7705566","src/builder/possible_value.rs":"62268b9da9eec8f4d1904ebfbd3a288fb78cfa71c357efadced28f0378bcfb93","src/builder/regex.rs":"b18891310186ecdcca9bb611833b7188cc80fe72e9fef27b63fa076b880a1acb","src/builder/tests.rs":"995c7d6be608b94c6f392f1356eba0cb8adb9ca661ffeebf7ebe6e8ad01a868c","src/builder/usage_parser.rs":"91d1af89196116aac2c0fb021f42f43f954aa3252df264e19a02a0cf5911d16b","src/builder/value_hint.rs":"0dd974d495c313430898d28b79991a70983c9aa44e88fa9aa1776d3308935438","src/builder/value_parser.rs":"64bb7f4808bdf65f30cb434198038a06db556e5ca045d900da392cc1a3186896","src/derive.rs":"11eaddc27a06229322a6bbce4458cb1424e6a5805c79166cba342c2905093b51","src/error/context.rs":"1dc561c7877d7f9b90f04bb7915744f0b3cc4ac2aa928ae100b2825a97077142","src/error/kind.rs":"3b4f9dfe5be5843cec8380c8f8965dcb9d0beee0aaa02cadf8dcffd400626ede","src/error/mod.rs":"e5b60fee401975d95c460c2567d09e17972eaae336154a8b90d9c806083f63fa","src/lib.rs":"4a197eab3f447c58a266af4f9a787af5c98b18f4612f33d9189cce52f4f9de18","src/macros.rs":"72585e32051a6872bbb29e39f7e9f9a88334a03f39ec3c768984db2f38211001","src/mkeymap.rs":"3565a5bae5d6cdcf8ba41a24eb602c510a14e150c4a6d3085ad72a35778e9c5f","src/output/fmt.rs":"efb741b5854500d946c6c09763ece1badc2b9cd3efa616cb58012039836c2b7f","src/output/help.rs":"ebdd123d6b70279c25af4b08432b547498834853adf99821ff6c6cd65dd87d4e","src/output/mod.rs":"3a61f89a4568e95114a3ab839da8f3c4c92de2a228549308f5d1be076a474917","src/output/usage.rs":"1921d2fa362f111b3f9613fc98eb5e24686483fe112b337855da7eb17b643f71","src/parser/arg_matcher.rs":"0c9ae639ed241e8ff1f62cd9e5eab2de9e5db1be0e86f58d5d94619d6dad05fd","src/parser/error.rs":"51e8fbd7cc73bba78cca50417e9b4fb25e11eefc60ff4b957940176bdb995e5c","src/parser/features/mod.rs":"6ed075e97af56bff22f22ed1ee83ff6479360e05f9d3661a3145f822c242b694","src/parser/features/suggestions.rs":"79127956b2f1adb9d658925e2779ebebfe9ddea434408762fefb60afdb545f47","src/parser/matches/any_value.rs":"7b6e711fe205e8808394c562dd6a260b56ce350cf9298a308ba9727ab012b664","src/parser/matches/arg_matches.rs":"666e3640b5347aba5806fc15b5caa599b171e684ee15d933ddc7f8185a0d2032","src/parser/matches/matched_arg.rs":"fb12eb2afaf631bb60aa8c4e42b0f510a877d35a9eaa07a7afd253280c27c251","src/parser/matches/mod.rs":"1467aa752cb1c79d30e4aeaaa55e10a0bb9dcf6f3980496234251431c79c49e6","src/parser/matches/value_source.rs":"e6a477ae36f2f7155960239a97b7d142eef4eb227c41c9eefea147289547d713","src/parser/mod.rs":"358f46d3b7f43dec2563d4c35bd2536fab2491f28e300a9bcdeaf6ca0513ce12","src/parser/parser.rs":"9e338dfd60aa8bfbcfbbda15c73d4722767a4d2e7b8f8ed3a07c296ddd98762c","src/parser/validator.rs":"30066cb41ab23800231fb6b028cbce57d118570859659ebc67affbe5226f31f9","src/util/color.rs":"63df5e1cda1001b4c536dc0b04e09dd85dae6d317e34e660abbe3c71e17eaa29","src/util/fnv.rs":"82492d91d990f38b62de8b3c3e67f1fad55919117b1f448aa28acf6d21919fd7","src/util/graph.rs":"f35396b6e2a427377dcbbca69b1b98737d89684a3834cfda98cbf8cc70ff9c2f","src/util/id.rs":"fc498c65887385d92a51359a2f72556c2e508ee49b8cac4b3f827512795d690d","src/util/mod.rs":"8d328a15ef06989d0ce5e65cf3b7ec79c083984b25c0b31ba177bdb22df28a10","src/util/str_to_bool.rs":"1ce90b4939a884eeefc73392722bdfcf906e3070c4398e1557c586c10c684cd0"},"package":"23b71c3ce99b7611011217b366d923f1d0a7e07a92bb2dbf1e84508c673ca3bd"} \ No newline at end of file
diff --git a/vendor/clap/Cargo.lock b/vendor/clap-3.2.20/Cargo.lock
index 269dea5ad..57d007104 100644
--- a/vendor/clap/Cargo.lock
+++ b/vendor/clap-3.2.20/Cargo.lock
@@ -45,9 +45,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "backtrace"
-version = "0.3.65"
+version = "0.3.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61"
+checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7"
dependencies = [
"addr2line",
"cc",
@@ -66,9 +66,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bytes"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
+checksum = "f0b3de4a0c5e67e16066a0715723abd91edc2f9001d09c46e1dca929351e130e"
[[package]]
name = "cc"
@@ -84,7 +84,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "clap"
-version = "3.2.5"
+version = "3.2.20"
dependencies = [
"atty",
"backtrace",
@@ -98,6 +98,7 @@ dependencies = [
"rustversion",
"shlex",
"snapbox",
+ "static_assertions",
"strsim",
"termcolor",
"terminal_size",
@@ -110,9 +111,9 @@ dependencies = [
[[package]]
name = "clap_derive"
-version = "3.2.5"
+version = "3.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c11d40217d16aee8508cc8e5fde8b4ff24639758608e5374e731b53f85749fb9"
+checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65"
dependencies = [
"heck",
"proc-macro-error",
@@ -123,9 +124,9 @@ dependencies = [
[[package]]
name = "clap_lex"
-version = "0.2.2"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5538cd660450ebeb4234cfecf8f2284b844ffc4c50531e66d584ad5b91293613"
+checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
dependencies = [
"os_str_bytes",
]
@@ -159,9 +160,9 @@ checksum = "d6417fe6fc03a8b533fd2177742eeb39a90c7233eedec7bac96d4d6b69a09449"
[[package]]
name = "crossbeam-channel"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"
+checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c"
dependencies = [
"cfg-if",
"crossbeam-utils",
@@ -180,33 +181,33 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
-version = "0.9.8"
+version = "0.9.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"
+checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d"
dependencies = [
"autocfg",
"cfg-if",
"crossbeam-utils",
- "lazy_static",
"memoffset",
+ "once_cell",
"scopeguard",
]
[[package]]
name = "crossbeam-utils"
-version = "0.8.8"
+version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
+checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83"
dependencies = [
"cfg-if",
- "lazy_static",
+ "once_cell",
]
[[package]]
name = "either"
-version = "1.6.1"
+version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
+checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be"
[[package]]
name = "escargot"
@@ -222,9 +223,9 @@ dependencies = [
[[package]]
name = "gimli"
-version = "0.26.1"
+version = "0.26.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4"
+checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d"
[[package]]
name = "glob"
@@ -234,9 +235,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
[[package]]
name = "hashbrown"
-version = "0.11.2"
+version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
+checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "heck"
@@ -271,9 +272,9 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "1.8.1"
+version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee"
+checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
dependencies = [
"autocfg",
"hashbrown",
@@ -290,27 +291,21 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
[[package]]
name = "libc"
-version = "0.2.125"
+version = "0.2.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b"
+checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
[[package]]
name = "linked-hash-map"
-version = "0.5.4"
+version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
+checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
[[package]]
name = "log"
@@ -338,9 +333,9 @@ dependencies = [
[[package]]
name = "miniz_oxide"
-version = "0.5.1"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082"
+checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"
dependencies = [
"adler",
]
@@ -363,18 +358,18 @@ dependencies = [
[[package]]
name = "object"
-version = "0.28.3"
+version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "40bec70ba014595f99f7aa110b84331ffe1ee9aece7fe6f387cc7e3ecda4d456"
+checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53"
dependencies = [
"memchr",
]
[[package]]
name = "once_cell"
-version = "1.12.0"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
+checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
[[package]]
name = "os_pipe"
@@ -418,27 +413,27 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.37"
+version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1"
+checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
dependencies = [
- "unicode-xid",
+ "unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.18"
+version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
+checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rayon"
-version = "1.5.2"
+version = "1.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd249e82c21598a9a426a4e00dd7adc1d640b22445ec8545feef801d1a74c221"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
dependencies = [
"autocfg",
"crossbeam-deque",
@@ -448,9 +443,9 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.9.2"
+version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9f51245e1e62e1f1629cbfec37b5793bbabcaeb90f30e94d2ba03564687353e4"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
@@ -460,9 +455,9 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.5.5"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
dependencies = [
"aho-corasick",
"memchr",
@@ -471,9 +466,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.6.25"
+version = "0.6.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
[[package]]
name = "rustc-demangle"
@@ -483,15 +478,15 @@ checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
[[package]]
name = "rustversion"
-version = "1.0.6"
+version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
+checksum = "24c8ad4f0c00e1eb5bc7614d236a7f1300e3dbd76b68cac8e06fb00b015ad8d8"
[[package]]
name = "ryu"
-version = "1.0.9"
+version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
+checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"
[[package]]
name = "scopeguard"
@@ -501,18 +496,18 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "serde"
-version = "1.0.137"
+version = "1.0.139"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1"
+checksum = "0171ebb889e45aa68b44aee0859b3eede84c6f5f5c228e6f140c0b2a0a46cad6"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
-version = "1.0.137"
+version = "1.0.139"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be"
+checksum = "dc1d3230c1de7932af58ad8ffbe1d784bd55efd5a9d84ac24f69c72d83543dfb"
dependencies = [
"proc-macro2",
"quote",
@@ -521,9 +516,9 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.81"
+version = "1.0.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c"
+checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7"
dependencies = [
"itoa",
"ryu",
@@ -564,6 +559,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c01dea7e04cbb27ef4c86e9922184608185f7cd95c1763bc30d727cda4a5e930"
[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
name = "strsim"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -571,13 +572,13 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
[[package]]
name = "syn"
-version = "1.0.92"
+version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ff7c592601f11445996a06f8ad0c27f094a58857c2f89e97974ab9235b92c52"
+checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
dependencies = [
"proc-macro2",
"quote",
- "unicode-xid",
+ "unicode-ident",
]
[[package]]
@@ -620,9 +621,9 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.14.3"
+version = "0.14.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ba98375fd631b83696f87c64e4ed8e29e6a1f3404d6aed95fa95163bad38e705"
+checksum = "5376256e44f2443f8896ac012507c19a012df0fe8758b55246ae51a2279db51f"
dependencies = [
"combine",
"indexmap",
@@ -632,9 +633,9 @@ dependencies = [
[[package]]
name = "trybuild"
-version = "1.0.61"
+version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fc92f558afb6d1d7c6f175eb8d615b8ef49c227543e68e19c123d4ee43d8a7d"
+checksum = "764b9e244b482a9b81bde596aa37aa6f1347bf8007adab25e59f901b32b4e0a0"
dependencies = [
"glob",
"once_cell",
@@ -672,16 +673,16 @@ dependencies = [
]
[[package]]
-name = "unicode-width"
-version = "0.1.9"
+name = "unicode-ident"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
+checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7"
[[package]]
-name = "unicode-xid"
-version = "0.2.3"
+name = "unicode-width"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
+checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
[[package]]
name = "version_check"
diff --git a/vendor/clap/Cargo.toml b/vendor/clap-3.2.20/Cargo.toml
index aba082f3a..197454c07 100644
--- a/vendor/clap/Cargo.toml
+++ b/vendor/clap-3.2.20/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.56.0"
+rust-version = "1.56.1"
name = "clap"
-version = "3.2.5"
+version = "3.2.20"
include = [
"build.rs",
"src/**/*",
@@ -24,7 +24,6 @@ include = [
"examples/**/*",
]
description = "A simple to use, efficient, and full-featured Command Line Argument Parser"
-documentation = "https://docs.rs/clap/"
readme = "README.md"
keywords = [
"argument",
@@ -91,27 +90,6 @@ replace = """
[Unreleased]: https://github.com/clap-rs/clap/compare/{{tag_name}}...HEAD"""
exactly = 1
-[[package.metadata.release.pre-release-replacements]]
-file = "README.md"
-search = "github.com/clap-rs/clap/blob/[^/]+/"
-replace = "github.com/clap-rs/clap/blob/{{tag_name}}/"
-exactly = 13
-prerelease = true
-
-[[package.metadata.release.pre-release-replacements]]
-file = "README.md"
-search = 'version = "[a-z0-9\.-]+"'
-replace = "version = \"{{version}}\""
-exactly = 1
-prerelease = true
-
-[[package.metadata.release.pre-release-replacements]]
-file = "src/derive.rs"
-search = "github.com/clap-rs/clap/blob/[^/]+/"
-replace = "github.com/clap-rs/clap/blob/{{tag_name}}/"
-exactly = 4
-prerelease = true
-
[profile.bench]
lto = true
codegen-units = 1
@@ -219,10 +197,7 @@ required-features = ["cargo"]
[[example]]
name = "04_01_enum"
path = "examples/tutorial_builder/04_01_enum.rs"
-required-features = [
- "cargo",
- "derive",
-]
+required-features = ["cargo"]
[[example]]
name = "04_02_parse"
@@ -373,7 +348,7 @@ optional = true
version = "1.2"
[dependencies.clap_derive]
-version = "=3.2.5"
+version = "=3.2.18"
optional = true
[dependencies.clap_lex]
@@ -430,6 +405,9 @@ version = "1.1.0"
[dev-dependencies.snapbox]
version = "0.2.9"
+[dev-dependencies.static_assertions]
+version = "1.1.0"
+
[dev-dependencies.trybuild]
version = "1.0.18"
diff --git a/vendor/annotate-snippets-0.8.0/LICENSE-APACHE b/vendor/clap-3.2.20/LICENSE-APACHE
index 261eeb9e9..261eeb9e9 100644
--- a/vendor/annotate-snippets-0.8.0/LICENSE-APACHE
+++ b/vendor/clap-3.2.20/LICENSE-APACHE
diff --git a/vendor/clap_lex/LICENSE-MIT b/vendor/clap-3.2.20/LICENSE-MIT
index 5acedf041..7b05b8453 100644
--- a/vendor/clap_lex/LICENSE-MIT
+++ b/vendor/clap-3.2.20/LICENSE-MIT
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2015-2016 Kevin B. Knapp
+Copyright (c) 2015-2022 Kevin B. Knapp and Clap Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/clap-3.2.20/README.md b/vendor/clap-3.2.20/README.md
new file mode 100644
index 000000000..eea6ba6f0
--- /dev/null
+++ b/vendor/clap-3.2.20/README.md
@@ -0,0 +1,43 @@
+# clap
+
+> **Command Line Argument Parser for Rust**
+
+[![Crates.io](https://img.shields.io/crates/v/clap?style=flat-square)](https://crates.io/crates/clap)
+[![Crates.io](https://img.shields.io/crates/d/clap?style=flat-square)](https://crates.io/crates/clap)
+[![License](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](LICENSE-APACHE)
+[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](LICENSE-MIT)
+[![Build Status](https://img.shields.io/github/workflow/status/clap-rs/clap/CI/staging?style=flat-square)](https://github.com/clap-rs/clap/actions/workflows/ci.yml?query=branch%3Astaging)
+[![Coverage Status](https://img.shields.io/coveralls/github/clap-rs/clap/master?style=flat-square)](https://coveralls.io/github/clap-rs/clap?branch=master)
+[![Contributors](https://img.shields.io/github/contributors/clap-rs/clap?style=flat-square)](https://github.com/clap-rs/clap/graphs/contributors)
+
+Dual-licensed under [Apache 2.0](LICENSE-APACHE) or [MIT](LICENSE-MIT).
+
+## About
+
+Create your command-line parser, with all of the bells and whistles, declaratively or procedurally.
+
+For more details, see:
+- [docs.rs](https://docs.rs/clap/latest/clap/)
+- [examples](examples/)
+
+## Sponsors
+
+<!-- omit in TOC -->
+### Gold
+
+[![](https://opencollective.com/clap/tiers/gold.svg?avatarHeight=36&width=600)](https://opencollective.com/clap)
+
+<!-- omit in TOC -->
+### Silver
+
+[![](https://opencollective.com/clap/tiers/silver.svg?avatarHeight=36&width=600)](https://opencollective.com/clap)
+
+<!-- omit in TOC -->
+### Bronze
+
+[![](https://opencollective.com/clap/tiers/bronze.svg?avatarHeight=36&width=600)](https://opencollective.com/clap)
+
+<!-- omit in TOC -->
+### Backer
+
+[![](https://opencollective.com/clap/tiers/backer.svg?avatarHeight=36&width=600)](https://opencollective.com/clap)
diff --git a/vendor/clap/examples/cargo-example-derive.md b/vendor/clap-3.2.20/examples/cargo-example-derive.md
index 994c6d4d8..2c7a11b88 100644
--- a/vendor/clap/examples/cargo-example-derive.md
+++ b/vendor/clap-3.2.20/examples/cargo-example-derive.md
@@ -1,5 +1,3 @@
-*Jump to [source](cargo-example-derive.rs)*
-
For more on creating a custom subcommand, see [the cargo
book](https://doc.rust-lang.org/cargo/reference/external-tools.html#custom-subcommands).
The crate [`clap-cargo`](https://github.com/crate-ci/clap-cargo) can help in
diff --git a/vendor/clap/examples/cargo-example-derive.rs b/vendor/clap-3.2.20/examples/cargo-example-derive.rs
index 6667a4a7d..f0aad29c7 100644
--- a/vendor/clap/examples/cargo-example-derive.rs
+++ b/vendor/clap-3.2.20/examples/cargo-example-derive.rs
@@ -1,8 +1,6 @@
-// Note: this requires the `derive` feature
-
use clap::Parser;
-#[derive(Parser)]
+#[derive(Parser)] // requires `derive` feature
#[clap(name = "cargo")]
#[clap(bin_name = "cargo")]
enum Cargo {
diff --git a/vendor/clap/examples/cargo-example.md b/vendor/clap-3.2.20/examples/cargo-example.md
index 9279cc492..6fb6a3c4d 100644
--- a/vendor/clap/examples/cargo-example.md
+++ b/vendor/clap-3.2.20/examples/cargo-example.md
@@ -1,5 +1,3 @@
-*Jump to [source](cargo-example.rs)*
-
For more on creating a custom subcommand, see [the cargo
book](https://doc.rust-lang.org/cargo/reference/external-tools.html#custom-subcommands).
The crate [`clap-cargo`](https://github.com/crate-ci/clap-cargo) can help in
diff --git a/vendor/clap/examples/cargo-example.rs b/vendor/clap-3.2.20/examples/cargo-example.rs
index 45ae67c81..d9a909f4f 100644
--- a/vendor/clap/examples/cargo-example.rs
+++ b/vendor/clap-3.2.20/examples/cargo-example.rs
@@ -1,5 +1,3 @@
-// Note: this requires the `cargo` feature
-
fn main() {
let cmd = clap::Command::new("cargo")
.bin_name("cargo")
diff --git a/vendor/clap/examples/demo.md b/vendor/clap-3.2.20/examples/demo.md
index 9b0e7e260..93ee49c37 100644
--- a/vendor/clap/examples/demo.md
+++ b/vendor/clap-3.2.20/examples/demo.md
@@ -1,8 +1,3 @@
-*Jump to [source](demo.rs)*
-
-**This requires enabling the `derive` feature flag.**
-
-Used to validate README.md's content
```console
$ demo --help
clap [..]
@@ -17,4 +12,8 @@ OPTIONS:
-n, --name <NAME> Name of the person to greet
-V, --version Print version information
+$ demo --name Me
+Hello Me!
+
```
+*(version number and `.exe` extension on windows replaced by placeholders)*
diff --git a/vendor/clap/examples/demo.rs b/vendor/clap-3.2.20/examples/demo.rs
index 957489724..a7cecfb0c 100644
--- a/vendor/clap/examples/demo.rs
+++ b/vendor/clap-3.2.20/examples/demo.rs
@@ -1,5 +1,3 @@
-// Note: this requires the `derive` feature
-
use clap::Parser;
/// Simple program to greet a person
diff --git a/vendor/clap/examples/derive_ref/augment_args.rs b/vendor/clap-3.2.20/examples/derive_ref/augment_args.rs
index 390c72f4a..310556914 100644
--- a/vendor/clap/examples/derive_ref/augment_args.rs
+++ b/vendor/clap-3.2.20/examples/derive_ref/augment_args.rs
@@ -1,6 +1,6 @@
-use clap::{arg, Args as _, Command, FromArgMatches as _, Parser};
+use clap::{arg, Args, Command, FromArgMatches as _};
-#[derive(Parser, Debug)]
+#[derive(Args, Debug)]
struct DerivedArgs {
#[clap(short, long, action)]
derived: bool,
@@ -12,13 +12,10 @@ fn main() {
let cli = DerivedArgs::augment_args(cli);
let matches = cli.get_matches();
- println!(
- "Value of built: {:?}",
- *matches.get_one::<bool>("built").unwrap()
- );
+ println!("Value of built: {:?}", matches.get_flag("built"));
println!(
"Value of derived via ArgMatches: {:?}",
- *matches.get_one::<bool>("derived").unwrap()
+ matches.get_flag("derived")
);
// Since DerivedArgs implements FromArgMatches, we can extract it from the unstructured ArgMatches.
diff --git a/vendor/clap/examples/derive_ref/augment_subcommands.rs b/vendor/clap-3.2.20/examples/derive_ref/augment_subcommands.rs
index 199da98b4..199da98b4 100644
--- a/vendor/clap/examples/derive_ref/augment_subcommands.rs
+++ b/vendor/clap-3.2.20/examples/derive_ref/augment_subcommands.rs
diff --git a/vendor/clap/examples/derive_ref/custom-bool.md b/vendor/clap-3.2.20/examples/derive_ref/custom-bool.md
index 619f9ba8e..619f9ba8e 100644
--- a/vendor/clap/examples/derive_ref/custom-bool.md
+++ b/vendor/clap-3.2.20/examples/derive_ref/custom-bool.md
diff --git a/vendor/clap/examples/derive_ref/custom-bool.rs b/vendor/clap-3.2.20/examples/derive_ref/custom-bool.rs
index d3c321e72..d3c321e72 100644
--- a/vendor/clap/examples/derive_ref/custom-bool.rs
+++ b/vendor/clap-3.2.20/examples/derive_ref/custom-bool.rs
diff --git a/vendor/clap/examples/derive_ref/flatten_hand_args.rs b/vendor/clap-3.2.20/examples/derive_ref/flatten_hand_args.rs
index 74d10edec..c10e0b29f 100644
--- a/vendor/clap/examples/derive_ref/flatten_hand_args.rs
+++ b/vendor/clap-3.2.20/examples/derive_ref/flatten_hand_args.rs
@@ -15,8 +15,8 @@ impl FromArgMatches for CliArgs {
}
fn from_arg_matches_mut(matches: &mut ArgMatches) -> Result<Self, Error> {
Ok(Self {
- foo: *matches.get_one::<bool>("foo").expect("defaulted by clap"),
- bar: *matches.get_one::<bool>("bar").expect("defaulted by clap"),
+ foo: matches.get_flag("foo"),
+ bar: matches.get_flag("bar"),
quuz: matches.remove_one::<String>("quuz"),
})
}
@@ -25,8 +25,8 @@ impl FromArgMatches for CliArgs {
self.update_from_arg_matches_mut(&mut matches)
}
fn update_from_arg_matches_mut(&mut self, matches: &mut ArgMatches) -> Result<(), Error> {
- self.foo |= *matches.get_one::<bool>("foo").expect("defaulted by clap");
- self.bar |= *matches.get_one::<bool>("bar").expect("defaulted by clap");
+ self.foo |= matches.get_flag("foo");
+ self.bar |= matches.get_flag("bar");
if let Some(quuz) = matches.remove_one::<String>("quuz") {
self.quuz = Some(quuz);
}
diff --git a/vendor/clap/examples/derive_ref/hand_subcommand.rs b/vendor/clap-3.2.20/examples/derive_ref/hand_subcommand.rs
index e9423bdc0..e9423bdc0 100644
--- a/vendor/clap/examples/derive_ref/hand_subcommand.rs
+++ b/vendor/clap-3.2.20/examples/derive_ref/hand_subcommand.rs
diff --git a/vendor/clap/examples/derive_ref/interop_tests.md b/vendor/clap-3.2.20/examples/derive_ref/interop_tests.md
index 746fe1878..746fe1878 100644
--- a/vendor/clap/examples/derive_ref/interop_tests.md
+++ b/vendor/clap-3.2.20/examples/derive_ref/interop_tests.md
diff --git a/vendor/clap/examples/escaped-positional-derive.md b/vendor/clap-3.2.20/examples/escaped-positional-derive.md
index 3b5f8fe56..fa39a2c03 100644
--- a/vendor/clap/examples/escaped-positional-derive.md
+++ b/vendor/clap-3.2.20/examples/escaped-positional-derive.md
@@ -1,6 +1,4 @@
-*Jump to [source](escaped-positional-derive.rs)*
-
-**This requires enabling the `derive` feature flag.**
+**This requires enabling the [`derive` feature flag][crate::_features].**
You can use `--` to escape further arguments.
diff --git a/vendor/clap/examples/escaped-positional-derive.rs b/vendor/clap-3.2.20/examples/escaped-positional-derive.rs
index 54dbc853b..fd8fde4ed 100644
--- a/vendor/clap/examples/escaped-positional-derive.rs
+++ b/vendor/clap-3.2.20/examples/escaped-positional-derive.rs
@@ -1,8 +1,6 @@
-// Note: this requires the `derive` feature
-
use clap::Parser;
-#[derive(Parser)]
+#[derive(Parser)] // requires `derive` feature
#[clap(author, version, about, long_about = None)]
struct Cli {
#[clap(short = 'f', action)]
diff --git a/vendor/clap/examples/escaped-positional.md b/vendor/clap-3.2.20/examples/escaped-positional.md
index 1f71a8736..987b26139 100644
--- a/vendor/clap/examples/escaped-positional.md
+++ b/vendor/clap-3.2.20/examples/escaped-positional.md
@@ -1,6 +1,4 @@
-*Jump to [source](escaped-positional.rs)*
-
-**This requires enabling the `cargo` feature flag.**
+**This requires enabling the [`cargo` feature flag][crate::_features].**
You can use `--` to escape further arguments.
diff --git a/vendor/clap/examples/escaped-positional.rs b/vendor/clap-3.2.20/examples/escaped-positional.rs
index a0fff790b..fdcb930fb 100644
--- a/vendor/clap/examples/escaped-positional.rs
+++ b/vendor/clap-3.2.20/examples/escaped-positional.rs
@@ -1,9 +1,7 @@
-// Note: this requires the `cargo` feature
-
use clap::{arg, command, value_parser, ArgAction};
fn main() {
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
.arg(arg!(eff: -f).action(ArgAction::SetTrue))
.arg(
arg!(pea: -p <PEAR>)
@@ -22,10 +20,7 @@ fn main() {
// This is what will happen with `myprog -f -p=bob -- sloppy slop slop`...
// -f used: true
- println!(
- "-f used: {:?}",
- *matches.get_one::<bool>("eff").expect("defaulted by clap")
- );
+ println!("-f used: {:?}", matches.get_flag("eff"));
// -p's value: Some("bob")
println!("-p's value: {:?}", matches.get_one::<String>("pea"));
// 'slops' values: Some(["sloppy", "slop", "slop"])
diff --git a/vendor/clap/examples/git-derive.md b/vendor/clap-3.2.20/examples/git-derive.md
index dc27776f5..aa1ca6d9d 100644
--- a/vendor/clap/examples/git-derive.md
+++ b/vendor/clap-3.2.20/examples/git-derive.md
@@ -1,6 +1,4 @@
-*Jump to [source](git-derive.rs)*
-
-**This requires enabling the `derive` feature flag.**
+**This requires enabling the [`derive` feature flag][crate::_features].**
Git is an example of several common subcommand patterns.
diff --git a/vendor/clap/examples/git-derive.rs b/vendor/clap-3.2.20/examples/git-derive.rs
index ecbda3fe9..ac500ddad 100644
--- a/vendor/clap/examples/git-derive.rs
+++ b/vendor/clap-3.2.20/examples/git-derive.rs
@@ -1,12 +1,10 @@
-// Note: this requires the `derive` feature
-
use std::ffi::OsString;
use std::path::PathBuf;
use clap::{Args, Parser, Subcommand};
/// A fictional versioning CLI
-#[derive(Debug, Parser)]
+#[derive(Debug, Parser)] // requires `derive` feature
#[clap(name = "git")]
#[clap(about = "A fictional versioning CLI", long_about = None)]
struct Cli {
diff --git a/vendor/clap/examples/git.md b/vendor/clap-3.2.20/examples/git.md
index 2cdfe653b..9e413415a 100644
--- a/vendor/clap/examples/git.md
+++ b/vendor/clap-3.2.20/examples/git.md
@@ -1,5 +1,3 @@
-*Jump to [source](git.rs)*
-
Git is an example of several common subcommand patterns.
Help:
diff --git a/vendor/clap/examples/git.rs b/vendor/clap-3.2.20/examples/git.rs
index 5536f1487..e56f427a6 100644
--- a/vendor/clap/examples/git.rs
+++ b/vendor/clap-3.2.20/examples/git.rs
@@ -1,5 +1,3 @@
-// Note: this requires the `cargo` feature
-
use std::ffi::OsString;
use std::path::PathBuf;
diff --git a/vendor/clap/examples/multicall-busybox.md b/vendor/clap-3.2.20/examples/multicall-busybox.md
index a09418403..5ca2cad5b 100644
--- a/vendor/clap/examples/multicall-busybox.md
+++ b/vendor/clap-3.2.20/examples/multicall-busybox.md
@@ -1,8 +1,4 @@
-*Jump to [source](multicall-busybox.rs)*
-
-Example of a busybox-style multicall program
-
-See the documentation for `clap::Command::multicall` for rationale.
+See the documentation for [`Command::multicall`][crate::App::multicall] for rationale.
This example omits every command except true and false,
which are the most trivial to implement,
diff --git a/vendor/clap/examples/multicall-busybox.rs b/vendor/clap-3.2.20/examples/multicall-busybox.rs
index 2e7f976c1..2e7f976c1 100644
--- a/vendor/clap/examples/multicall-busybox.rs
+++ b/vendor/clap-3.2.20/examples/multicall-busybox.rs
diff --git a/vendor/clap/examples/multicall-hostname.md b/vendor/clap-3.2.20/examples/multicall-hostname.md
index 9e17ca16c..d22b85fba 100644
--- a/vendor/clap/examples/multicall-hostname.md
+++ b/vendor/clap-3.2.20/examples/multicall-hostname.md
@@ -1,8 +1,4 @@
-*Jump to [source](multicall-hostname.rs)*
-
-Example of a `hostname-style` multicall program
-
-See the documentation for `clap::Command::multicall` for rationale.
+See the documentation for [`Command::multicall`][crate::App::multicall] for rationale.
This example omits the implementation of displaying address config
diff --git a/vendor/clap/examples/multicall-hostname.rs b/vendor/clap-3.2.20/examples/multicall-hostname.rs
index b57680a5c..b57680a5c 100644
--- a/vendor/clap/examples/multicall-hostname.rs
+++ b/vendor/clap-3.2.20/examples/multicall-hostname.rs
diff --git a/vendor/clap/examples/pacman.md b/vendor/clap-3.2.20/examples/pacman.md
index 7f6c5a7d3..b8ddd09d9 100644
--- a/vendor/clap/examples/pacman.md
+++ b/vendor/clap-3.2.20/examples/pacman.md
@@ -1,5 +1,3 @@
-*Jump to [source](pacman.rs)*
-
[`pacman`](https://wiki.archlinux.org/index.php/pacman) defines subcommands via flags.
Here, `-S` is a short flag subcommand:
diff --git a/vendor/clap/examples/pacman.rs b/vendor/clap-3.2.20/examples/pacman.rs
index 6a60a8bf5..aee7cd892 100644
--- a/vendor/clap/examples/pacman.rs
+++ b/vendor/clap-3.2.20/examples/pacman.rs
@@ -89,10 +89,7 @@ fn main() {
.collect();
let values = packages.join(", ");
- if *sync_matches
- .get_one::<bool>("info")
- .expect("defaulted by clap")
- {
+ if sync_matches.get_flag("info") {
println!("Retrieving info for {}...", values);
} else {
println!("Installing {}...", values);
diff --git a/vendor/clap/examples/repl.rs b/vendor/clap-3.2.20/examples/repl.rs
index c509adee6..c509adee6 100644
--- a/vendor/clap/examples/repl.rs
+++ b/vendor/clap-3.2.20/examples/repl.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/01_quick.md b/vendor/clap-3.2.20/examples/tutorial_builder/01_quick.md
new file mode 100644
index 000000000..4a9e3fca1
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/01_quick.md
@@ -0,0 +1,37 @@
+```console
+$ 01_quick --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 01_quick[EXE] [OPTIONS] [name] [SUBCOMMAND]
+
+ARGS:
+ <name> Optional name to operate on
+
+OPTIONS:
+ -c, --config <FILE> Sets a custom config file
+ -d, --debug Turn debugging information on
+ -h, --help Print help information
+ -V, --version Print version information
+
+SUBCOMMANDS:
+ help Print this message or the help of the given subcommand(s)
+ test does testing things
+
+```
+
+By default, the program does nothing:
+```console
+$ 01_quick
+Debug mode is off
+
+```
+
+But you can mix and match the various features
+```console
+$ 01_quick -dd test
+Debug mode is on
+Not printing testing lists...
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/01_quick.rs b/vendor/clap-3.2.20/examples/tutorial_builder/01_quick.rs
index 61cc3432d..393d6aeae 100644
--- a/vendor/clap/examples/tutorial_builder/01_quick.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/01_quick.rs
@@ -1,11 +1,9 @@
-// Note: this requires the `cargo` feature
-
use std::path::PathBuf;
use clap::{arg, command, value_parser, ArgAction, Command};
fn main() {
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
.arg(arg!([name] "Optional name to operate on"))
.arg(
arg!(
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/02_app_settings.md b/vendor/clap-3.2.20/examples/tutorial_builder/02_app_settings.md
new file mode 100644
index 000000000..247843bcf
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/02_app_settings.md
@@ -0,0 +1,19 @@
+```console
+$ 02_app_settings --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 02_app_settings[EXE] --two <VALUE> --one <VALUE>
+
+OPTIONS:
+ --two <VALUE>
+ --one <VALUE>
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 02_app_settings --one -1 --one -3 --two 10
+two: "10"
+one: "-3"
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/02_app_settings.rs b/vendor/clap-3.2.20/examples/tutorial_builder/02_app_settings.rs
index 7bbedd3eb..5f374d7f0 100644
--- a/vendor/clap/examples/tutorial_builder/02_app_settings.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/02_app_settings.rs
@@ -1,9 +1,7 @@
-// Note: this requires the `cargo` feature
-
use clap::{arg, command, AppSettings, ArgAction};
fn main() {
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
.global_setting(AppSettings::DeriveDisplayOrder)
.allow_negative_numbers(true)
.arg(arg!(--two <VALUE>).action(ArgAction::Set))
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/02_apps.md b/vendor/clap-3.2.20/examples/tutorial_builder/02_apps.md
new file mode 100644
index 000000000..8504b5f52
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/02_apps.md
@@ -0,0 +1,19 @@
+```console
+$ 02_apps --help
+MyApp 1.0
+Kevin K. <kbknapp@gmail.com>
+Does awesome things
+
+USAGE:
+ 02_apps[EXE] --two <VALUE> --one <VALUE>
+
+OPTIONS:
+ -h, --help Print help information
+ --one <VALUE>
+ --two <VALUE>
+ -V, --version Print version information
+
+$ 02_apps --version
+MyApp 1.0
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/02_apps.rs b/vendor/clap-3.2.20/examples/tutorial_builder/02_apps.rs
index db9da18f9..db9da18f9 100644
--- a/vendor/clap/examples/tutorial_builder/02_apps.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/02_apps.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/02_crate.md b/vendor/clap-3.2.20/examples/tutorial_builder/02_crate.md
new file mode 100644
index 000000000..f76e0d608
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/02_crate.md
@@ -0,0 +1,18 @@
+```console
+$ 02_crate --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 02_crate[EXE] --two <VALUE> --one <VALUE>
+
+OPTIONS:
+ -h, --help Print help information
+ --one <VALUE>
+ --two <VALUE>
+ -V, --version Print version information
+
+$ 02_crate --version
+clap [..]
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/02_crate.rs b/vendor/clap-3.2.20/examples/tutorial_builder/02_crate.rs
index 16b7e7ee0..8a1722fd3 100644
--- a/vendor/clap/examples/tutorial_builder/02_crate.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/02_crate.rs
@@ -1,8 +1,7 @@
-// Note: this requires the `cargo` feature
-
use clap::{arg, command};
fn main() {
+ // requires `cargo` feature, reading name, version, author, and description from `Cargo.toml`
let matches = command!()
.arg(arg!(--two <VALUE>))
.arg(arg!(--one <VALUE>))
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_bool.md b/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_bool.md
new file mode 100644
index 000000000..b0ee2a126
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_bool.md
@@ -0,0 +1,23 @@
+```console
+$ 03_01_flag_bool --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_01_flag_bool[EXE] [OPTIONS]
+
+OPTIONS:
+ -h, --help Print help information
+ -v, --verbose
+ -V, --version Print version information
+
+$ 03_01_flag_bool
+verbose: false
+
+$ 03_01_flag_bool --verbose
+verbose: true
+
+$ 03_01_flag_bool --verbose --verbose
+verbose: true
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/03_01_flag_bool.rs b/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_bool.rs
index 41ecbb1d7..03f2f1756 100644
--- a/vendor/clap/examples/tutorial_builder/03_01_flag_bool.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_bool.rs
@@ -1,9 +1,7 @@
-// Note: this requires the `cargo` feature
-
use clap::{command, Arg, ArgAction};
fn main() {
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
.arg(
Arg::new("verbose")
.short('v')
@@ -12,10 +10,5 @@ fn main() {
)
.get_matches();
- println!(
- "verbose: {:?}",
- *matches
- .get_one::<bool>("verbose")
- .expect("defaulted by clap")
- );
+ println!("verbose: {:?}", matches.get_flag("verbose"));
}
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_count.md b/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_count.md
new file mode 100644
index 000000000..ca4bcd6eb
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_count.md
@@ -0,0 +1,23 @@
+```console
+$ 03_01_flag_count --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_01_flag_count[EXE] [OPTIONS]
+
+OPTIONS:
+ -h, --help Print help information
+ -v, --verbose
+ -V, --version Print version information
+
+$ 03_01_flag_count
+verbose: 0
+
+$ 03_01_flag_count --verbose
+verbose: 1
+
+$ 03_01_flag_count --verbose --verbose
+verbose: 2
+
+```
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_count.rs b/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_count.rs
new file mode 100644
index 000000000..7f23649d6
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_01_flag_count.rs
@@ -0,0 +1,9 @@
+use clap::{arg, command, ArgAction};
+
+fn main() {
+ let matches = command!() // requires `cargo` feature
+ .arg(arg!(-v - -verbose).action(ArgAction::Count))
+ .get_matches();
+
+ println!("verbose: {:?}", matches.get_count("verbose"));
+}
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/03_02_option.md b/vendor/clap-3.2.20/examples/tutorial_builder/03_02_option.md
new file mode 100644
index 000000000..6198bcc73
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_02_option.md
@@ -0,0 +1,32 @@
+```console
+$ 03_02_option --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_02_option[EXE] [OPTIONS]
+
+OPTIONS:
+ -h, --help Print help information
+ -n, --name <NAME>
+ -V, --version Print version information
+
+$ 03_02_option
+name: None
+
+$ 03_02_option --name bob
+name: Some("bob")
+
+$ 03_02_option --name=bob
+name: Some("bob")
+
+$ 03_02_option -n bob
+name: Some("bob")
+
+$ 03_02_option -n=bob
+name: Some("bob")
+
+$ 03_02_option -nbob
+name: Some("bob")
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/03_02_option.rs b/vendor/clap-3.2.20/examples/tutorial_builder/03_02_option.rs
index 80e2b9159..188244566 100644
--- a/vendor/clap/examples/tutorial_builder/03_02_option.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_02_option.rs
@@ -1,9 +1,7 @@
-// Note: this requires the `cargo` feature
-
use clap::{arg, command};
fn main() {
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
.arg(arg!(-n --name <NAME>).required(false))
.get_matches();
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/03_03_positional.md b/vendor/clap-3.2.20/examples/tutorial_builder/03_03_positional.md
new file mode 100644
index 000000000..a3d7b8cf3
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_03_positional.md
@@ -0,0 +1,22 @@
+```console
+$ 03_03_positional --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_03_positional[EXE] [NAME]
+
+ARGS:
+ <NAME>
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 03_03_positional
+NAME: None
+
+$ 03_03_positional bob
+NAME: Some("bob")
+
+```
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/03_03_positional.rs b/vendor/clap-3.2.20/examples/tutorial_builder/03_03_positional.rs
new file mode 100644
index 000000000..0c3a5f037
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_03_positional.rs
@@ -0,0 +1,9 @@
+use clap::{arg, command};
+
+fn main() {
+ let matches = command!() // requires `cargo` feature
+ .arg(arg!([NAME]))
+ .get_matches();
+
+ println!("NAME: {:?}", matches.get_one::<String>("NAME"));
+}
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/03_04_subcommands.md b/vendor/clap-3.2.20/examples/tutorial_builder/03_04_subcommands.md
new file mode 100644
index 000000000..8f9efa911
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_04_subcommands.md
@@ -0,0 +1,64 @@
+```console
+$ 03_04_subcommands help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_04_subcommands[EXE] <SUBCOMMAND>
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+SUBCOMMANDS:
+ add Adds files to myapp
+ help Print this message or the help of the given subcommand(s)
+
+$ 03_04_subcommands help add
+03_04_subcommands[EXE]-add [..]
+Adds files to myapp
+
+USAGE:
+ 03_04_subcommands[EXE] add [NAME]
+
+ARGS:
+ <NAME>
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 03_04_subcommands add bob
+'myapp add' was used, name is: Some("bob")
+
+```
+
+Because we set [`Command::arg_required_else_help`][crate::Command::arg_required_else_help]:
+```console
+$ 03_04_subcommands
+? failed
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_04_subcommands[EXE] <SUBCOMMAND>
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+SUBCOMMANDS:
+ add Adds files to myapp
+ help Print this message or the help of the given subcommand(s)
+
+```
+
+Because we set [`Command::propagate_version`][crate::Command::propagate_version]:
+```console
+$ 03_04_subcommands --version
+clap [..]
+
+$ 03_04_subcommands add --version
+03_04_subcommands[EXE]-add [..]
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/03_04_subcommands.rs b/vendor/clap-3.2.20/examples/tutorial_builder/03_04_subcommands.rs
index 1dd1cbf09..fbe23809e 100644
--- a/vendor/clap/examples/tutorial_builder/03_04_subcommands.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_04_subcommands.rs
@@ -1,9 +1,7 @@
-// Note: this requires the `cargo` feature
-
use clap::{arg, command, Command};
fn main() {
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
.propagate_version(true)
.subcommand_required(true)
.arg_required_else_help(true)
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/03_05_default_values.md b/vendor/clap-3.2.20/examples/tutorial_builder/03_05_default_values.md
new file mode 100644
index 000000000..7b6c0307d
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_05_default_values.md
@@ -0,0 +1,22 @@
+```console
+$ 03_05_default_values --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_05_default_values[EXE] [NAME]
+
+ARGS:
+ <NAME> [default: alice]
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 03_05_default_values
+NAME: "alice"
+
+$ 03_05_default_values bob
+NAME: "bob"
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/03_05_default_values.rs b/vendor/clap-3.2.20/examples/tutorial_builder/03_05_default_values.rs
index c68e87973..cb3e3831f 100644
--- a/vendor/clap/examples/tutorial_builder/03_05_default_values.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/03_05_default_values.rs
@@ -1,9 +1,7 @@
-// Note: this requires the `cargo` feature
-
use clap::{arg, command};
fn main() {
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
.arg(arg!([NAME]).default_value("alice"))
.get_matches();
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/04_01_enum.md b/vendor/clap-3.2.20/examples/tutorial_builder/04_01_enum.md
new file mode 100644
index 000000000..282b1e613
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_01_enum.md
@@ -0,0 +1,29 @@
+```console
+$ 04_01_enum --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_01_enum[EXE] <MODE>
+
+ARGS:
+ <MODE> What mode to run the program in [possible values: fast, slow]
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 04_01_enum fast
+Hare
+
+$ 04_01_enum slow
+Tortoise
+
+$ 04_01_enum medium
+? failed
+error: "medium" isn't a valid value for '<MODE>'
+ [possible values: fast, slow]
+
+For more information try --help
+
+```
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/04_01_enum.rs b/vendor/clap-3.2.20/examples/tutorial_builder/04_01_enum.rs
new file mode 100644
index 000000000..e8cf70f5c
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_01_enum.rs
@@ -0,0 +1,66 @@
+use clap::{arg, builder::PossibleValue, command, value_parser, ValueEnum};
+
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord)]
+enum Mode {
+ Fast,
+ Slow,
+}
+
+// Can also be derived] with feature flag `derive`
+impl ValueEnum for Mode {
+ fn value_variants<'a>() -> &'a [Self] {
+ &[Mode::Fast, Mode::Slow]
+ }
+
+ fn to_possible_value<'a>(&self) -> Option<PossibleValue<'a>> {
+ Some(match self {
+ Mode::Fast => PossibleValue::new("fast"),
+ Mode::Slow => PossibleValue::new("slow"),
+ })
+ }
+}
+
+impl std::fmt::Display for Mode {
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ self.to_possible_value()
+ .expect("no values are skipped")
+ .get_name()
+ .fmt(f)
+ }
+}
+
+impl std::str::FromStr for Mode {
+ type Err = String;
+
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
+ for variant in Self::value_variants() {
+ if variant.to_possible_value().unwrap().matches(s, false) {
+ return Ok(*variant);
+ }
+ }
+ Err(format!("Invalid variant: {}", s))
+ }
+}
+
+fn main() {
+ let matches = command!() // requires `cargo` feature
+ .arg(
+ arg!(<MODE>)
+ .help("What mode to run the program in")
+ .value_parser(value_parser!(Mode)),
+ )
+ .get_matches();
+
+ // Note, it's safe to call unwrap() because the arg is required
+ match matches
+ .get_one::<Mode>("MODE")
+ .expect("'MODE' is required and parsing will fail if its missing")
+ {
+ Mode::Fast => {
+ println!("Hare");
+ }
+ Mode::Slow => {
+ println!("Tortoise");
+ }
+ }
+}
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/04_01_possible.md b/vendor/clap-3.2.20/examples/tutorial_builder/04_01_possible.md
new file mode 100644
index 000000000..2909bfb17
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_01_possible.md
@@ -0,0 +1,29 @@
+```console
+$ 04_01_possible --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_01_possible[EXE] <MODE>
+
+ARGS:
+ <MODE> What mode to run the program in [possible values: fast, slow]
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 04_01_possible fast
+Hare
+
+$ 04_01_possible slow
+Tortoise
+
+$ 04_01_possible medium
+? failed
+error: "medium" isn't a valid value for '<MODE>'
+ [possible values: fast, slow]
+
+For more information try --help
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/04_01_possible.rs b/vendor/clap-3.2.20/examples/tutorial_builder/04_01_possible.rs
index f7b0cfb34..3da7aca74 100644
--- a/vendor/clap/examples/tutorial_builder/04_01_possible.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_01_possible.rs
@@ -1,9 +1,7 @@
-// Note: this requires the `cargo` feature
-
use clap::{arg, command};
fn main() {
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
.arg(
arg!(<MODE>)
.help("What mode to run the program in")
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/04_02_parse.md b/vendor/clap-3.2.20/examples/tutorial_builder/04_02_parse.md
new file mode 100644
index 000000000..605bf4b59
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_02_parse.md
@@ -0,0 +1,31 @@
+```console
+$ 04_02_parse --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_02_parse[EXE] <PORT>
+
+ARGS:
+ <PORT> Network port to use
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 04_02_parse 22
+PORT = 22
+
+$ 04_02_parse foobar
+? failed
+error: Invalid value "foobar" for '<PORT>': invalid digit found in string
+
+For more information try --help
+
+$ 04_02_parse_derive 0
+? failed
+error: Invalid value "0" for '<PORT>': 0 is not in 1..=65535
+
+For more information try --help
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/04_02_parse.rs b/vendor/clap-3.2.20/examples/tutorial_builder/04_02_parse.rs
index c2f3cc533..13f41a18e 100644
--- a/vendor/clap/examples/tutorial_builder/04_02_parse.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_02_parse.rs
@@ -1,9 +1,7 @@
-// Note: this requires the `cargo` feature
-
use clap::{arg, command, value_parser};
fn main() {
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
.arg(
arg!(<PORT>)
.help("Network port to use")
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/04_02_validate.md b/vendor/clap-3.2.20/examples/tutorial_builder/04_02_validate.md
new file mode 100644
index 000000000..a317a8eb7
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_02_validate.md
@@ -0,0 +1,31 @@
+```console
+$ 04_02_validate --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_02_validate[EXE] <PORT>
+
+ARGS:
+ <PORT> Network port to use
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 04_02_validate 22
+PORT = 22
+
+$ 04_02_validate foobar
+? failed
+error: Invalid value "foobar" for '<PORT>': `foobar` isn't a port number
+
+For more information try --help
+
+$ 04_02_validate 0
+? failed
+error: Invalid value "0" for '<PORT>': Port not in range 1-65535
+
+For more information try --help
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/04_02_validate.rs b/vendor/clap-3.2.20/examples/tutorial_builder/04_02_validate.rs
index e60018a46..ea2f32e67 100644
--- a/vendor/clap/examples/tutorial_builder/04_02_validate.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_02_validate.rs
@@ -1,11 +1,9 @@
-// Note: this requires the `cargo` feature
-
use std::ops::RangeInclusive;
use clap::{arg, command};
fn main() {
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
.arg(
arg!(<PORT>)
.help("Network port to use")
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/04_03_relations.md b/vendor/clap-3.2.20/examples/tutorial_builder/04_03_relations.md
new file mode 100644
index 000000000..3ea336363
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_03_relations.md
@@ -0,0 +1,58 @@
+```console
+$ 04_03_relations --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_03_relations[EXE] [OPTIONS] <--set-ver <VER>|--major|--minor|--patch> [INPUT_FILE]
+
+ARGS:
+ <INPUT_FILE> some regular input
+
+OPTIONS:
+ -c <CONFIG>
+ -h, --help Print help information
+ --major auto inc major
+ --minor auto inc minor
+ --patch auto inc patch
+ --set-ver <VER> set version manually
+ --spec-in <SPEC_IN> some special input argument
+ -V, --version Print version information
+
+$ 04_03_relations
+? failed
+error: The following required arguments were not provided:
+ <--set-ver <VER>|--major|--minor|--patch>
+
+USAGE:
+ 04_03_relations[EXE] [OPTIONS] <--set-ver <VER>|--major|--minor|--patch> [INPUT_FILE]
+
+For more information try --help
+
+$ 04_03_relations --major
+Version: 2.2.3
+
+$ 04_03_relations --major --minor
+? failed
+error: The argument '--major' cannot be used with '--minor'
+
+USAGE:
+ 04_03_relations[EXE] <--set-ver <VER>|--major|--minor|--patch>
+
+For more information try --help
+
+$ 04_03_relations --major -c config.toml
+? failed
+error: The following required arguments were not provided:
+ <INPUT_FILE|--spec-in <SPEC_IN>>
+
+USAGE:
+ 04_03_relations[EXE] -c <CONFIG> <--set-ver <VER>|--major|--minor|--patch> <INPUT_FILE|--spec-in <SPEC_IN>>
+
+For more information try --help
+
+$ 04_03_relations --major -c config.toml --spec-in input.txt
+Version: 2.2.3
+Doing work using input input.txt and config config.toml
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/04_03_relations.rs b/vendor/clap-3.2.20/examples/tutorial_builder/04_03_relations.rs
index 605e5b48e..8e26d3ea9 100644
--- a/vendor/clap/examples/tutorial_builder/04_03_relations.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_03_relations.rs
@@ -1,12 +1,10 @@
-// Note: this requires the `cargo` feature
-
use std::path::PathBuf;
use clap::{arg, command, value_parser, ArgAction, ArgGroup};
fn main() {
// Create application like normal
- let matches = command!()
+ let matches = command!() // requires `cargo` feature
// Add the version arguments
.arg(arg!(--"set-ver" <VER> "set version manually").required(false))
.arg(arg!(--major "auto inc major").action(ArgAction::SetTrue))
@@ -52,9 +50,9 @@ fn main() {
} else {
// Increment the one requested (in a real program, we'd reset the lower numbers)
let (maj, min, pat) = (
- *matches.get_one::<bool>("major").expect("defaulted by clap"),
- *matches.get_one::<bool>("minor").expect("defaulted by clap"),
- *matches.get_one::<bool>("patch").expect("defaulted by clap"),
+ matches.get_flag("major"),
+ matches.get_flag("minor"),
+ matches.get_flag("patch"),
);
match (maj, min, pat) {
(true, _, _) => major += 1,
diff --git a/vendor/clap-3.2.20/examples/tutorial_builder/04_04_custom.md b/vendor/clap-3.2.20/examples/tutorial_builder/04_04_custom.md
new file mode 100644
index 000000000..26a3df1ab
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_04_custom.md
@@ -0,0 +1,57 @@
+```console
+$ 04_04_custom --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_04_custom[EXE] [OPTIONS] [INPUT_FILE]
+
+ARGS:
+ <INPUT_FILE> some regular input
+
+OPTIONS:
+ -c <CONFIG>
+ -h, --help Print help information
+ --major auto inc major
+ --minor auto inc minor
+ --patch auto inc patch
+ --set-ver <VER> set version manually
+ --spec-in <SPEC_IN> some special input argument
+ -V, --version Print version information
+
+$ 04_04_custom
+? failed
+error: Can only modify one version field
+
+USAGE:
+ 04_04_custom[EXE] [OPTIONS] [INPUT_FILE]
+
+For more information try --help
+
+$ 04_04_custom --major
+Version: 2.2.3
+
+$ 04_04_custom --major --minor
+? failed
+error: Can only modify one version field
+
+USAGE:
+ 04_04_custom[EXE] [OPTIONS] [INPUT_FILE]
+
+For more information try --help
+
+$ 04_04_custom --major -c config.toml
+? failed
+Version: 2.2.3
+error: INPUT_FILE or --spec-in is required when using --config
+
+USAGE:
+ 04_04_custom[EXE] [OPTIONS] [INPUT_FILE]
+
+For more information try --help
+
+$ 04_04_custom --major -c config.toml --spec-in input.txt
+Version: 2.2.3
+Doing work using input input.txt and config config.toml
+
+```
diff --git a/vendor/clap/examples/tutorial_builder/04_04_custom.rs b/vendor/clap-3.2.20/examples/tutorial_builder/04_04_custom.rs
index 3dc080505..fb40b2fc4 100644
--- a/vendor/clap/examples/tutorial_builder/04_04_custom.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/04_04_custom.rs
@@ -1,12 +1,10 @@
-// Note: this requires the `cargo` feature
-
use std::path::PathBuf;
use clap::{arg, command, value_parser, ArgAction, ErrorKind};
fn main() {
// Create application like normal
- let mut cmd = command!()
+ let mut cmd = command!() // requires `cargo` feature
// Add the version arguments
.arg(arg!(--"set-ver" <VER> "set version manually").required(false))
.arg(arg!(--major "auto inc major").action(ArgAction::SetTrue))
@@ -36,10 +34,7 @@ fn main() {
// See if --set-ver was used to set the version manually
let version = if let Some(ver) = matches.get_one::<String>("set-ver") {
- if *matches.get_one::<bool>("major").expect("defaulted by clap")
- || *matches.get_one::<bool>("minor").expect("defaulted by clap")
- || *matches.get_one::<bool>("patch").expect("defaulted by clap")
- {
+ if matches.get_flag("major") || matches.get_flag("minor") || matches.get_flag("patch") {
cmd.error(
ErrorKind::ArgumentConflict,
"Can't do relative and absolute version change",
@@ -50,9 +45,9 @@ fn main() {
} else {
// Increment the one requested (in a real program, we'd reset the lower numbers)
let (maj, min, pat) = (
- *matches.get_one::<bool>("major").expect("defaulted by clap"),
- *matches.get_one::<bool>("minor").expect("defaulted by clap"),
- *matches.get_one::<bool>("patch").expect("defaulted by clap"),
+ matches.get_flag("major"),
+ matches.get_flag("minor"),
+ matches.get_flag("patch"),
);
match (maj, min, pat) {
(true, false, false) => major += 1,
diff --git a/vendor/clap/examples/tutorial_builder/05_01_assert.rs b/vendor/clap-3.2.20/examples/tutorial_builder/05_01_assert.rs
index d6f19ffe5..4b9254230 100644
--- a/vendor/clap/examples/tutorial_builder/05_01_assert.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_builder/05_01_assert.rs
@@ -1,5 +1,3 @@
-// Note: this requires the `cargo` feature
-
use clap::{arg, command, value_parser};
fn main() {
@@ -13,14 +11,15 @@ fn main() {
}
fn cmd() -> clap::Command<'static> {
- command!().arg(
- arg!(<PORT>)
- .help("Network port to use")
- .value_parser(value_parser!(usize)),
- )
+ command!() // requires `cargo` feature
+ .arg(
+ arg!(<PORT>)
+ .help("Network port to use")
+ .value_parser(value_parser!(usize)),
+ )
}
#[test]
-fn verify_app() {
+fn verify_cmd() {
cmd().debug_assert();
}
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/01_quick.md b/vendor/clap-3.2.20/examples/tutorial_derive/01_quick.md
new file mode 100644
index 000000000..6f70d2cce
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/01_quick.md
@@ -0,0 +1,37 @@
+```console
+$ 01_quick_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 01_quick_derive[EXE] [OPTIONS] [NAME] [SUBCOMMAND]
+
+ARGS:
+ <NAME> Optional name to operate on
+
+OPTIONS:
+ -c, --config <FILE> Sets a custom config file
+ -d, --debug Turn debugging information on
+ -h, --help Print help information
+ -V, --version Print version information
+
+SUBCOMMANDS:
+ help Print this message or the help of the given subcommand(s)
+ test does testing things
+
+```
+
+By default, the program does nothing:
+```console
+$ 01_quick_derive
+Debug mode is off
+
+```
+
+But you can mix and match the various features
+```console
+$ 01_quick_derive -dd test
+Debug mode is on
+Not printing testing lists...
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/01_quick.rs b/vendor/clap-3.2.20/examples/tutorial_derive/01_quick.rs
index 2c2031061..2c2031061 100644
--- a/vendor/clap/examples/tutorial_derive/01_quick.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/01_quick.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/02_app_settings.md b/vendor/clap-3.2.20/examples/tutorial_derive/02_app_settings.md
new file mode 100644
index 000000000..ee16c66df
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/02_app_settings.md
@@ -0,0 +1,19 @@
+```console
+$ 02_app_settings_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 02_app_settings_derive[EXE] --two <TWO> --one <ONE>
+
+OPTIONS:
+ --two <TWO>
+ --one <ONE>
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 02_app_settings_derive --one -1 --one -3 --two 10
+two: "10"
+one: "-3"
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/02_app_settings.rs b/vendor/clap-3.2.20/examples/tutorial_derive/02_app_settings.rs
index 6a06929bb..6a06929bb 100644
--- a/vendor/clap/examples/tutorial_derive/02_app_settings.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/02_app_settings.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/02_apps.md b/vendor/clap-3.2.20/examples/tutorial_derive/02_apps.md
new file mode 100644
index 000000000..0141581c4
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/02_apps.md
@@ -0,0 +1,19 @@
+```console
+$ 02_apps_derive --help
+MyApp 1.0
+Kevin K. <kbknapp@gmail.com>
+Does awesome things
+
+USAGE:
+ 02_apps_derive[EXE] --two <TWO> --one <ONE>
+
+OPTIONS:
+ -h, --help Print help information
+ --one <ONE>
+ --two <TWO>
+ -V, --version Print version information
+
+$ 02_apps_derive --version
+MyApp 1.0
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/02_apps.rs b/vendor/clap-3.2.20/examples/tutorial_derive/02_apps.rs
index b97ce1eed..b97ce1eed 100644
--- a/vendor/clap/examples/tutorial_derive/02_apps.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/02_apps.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/02_crate.md b/vendor/clap-3.2.20/examples/tutorial_derive/02_crate.md
new file mode 100644
index 000000000..92c820758
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/02_crate.md
@@ -0,0 +1,18 @@
+```console
+$ 02_crate_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 02_crate_derive[EXE] --two <TWO> --one <ONE>
+
+OPTIONS:
+ -h, --help Print help information
+ --one <ONE>
+ --two <TWO>
+ -V, --version Print version information
+
+$ 02_crate_derive --version
+clap [..]
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/02_crate.rs b/vendor/clap-3.2.20/examples/tutorial_derive/02_crate.rs
index df16468d0..5576f998c 100644
--- a/vendor/clap/examples/tutorial_derive/02_crate.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/02_crate.rs
@@ -1,7 +1,7 @@
use clap::Parser;
#[derive(Parser)]
-#[clap(author, version, about, long_about = None)]
+#[clap(author, version, about, long_about = None)] // Read from `Cargo.toml`
struct Cli {
#[clap(long, value_parser)]
two: String,
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_bool.md b/vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_bool.md
new file mode 100644
index 000000000..0baaa10ca
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_bool.md
@@ -0,0 +1,23 @@
+```console
+$ 03_01_flag_bool_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_01_flag_bool_derive[EXE] [OPTIONS]
+
+OPTIONS:
+ -h, --help Print help information
+ -v, --verbose
+ -V, --version Print version information
+
+$ 03_01_flag_bool_derive
+verbose: false
+
+$ 03_01_flag_bool_derive --verbose
+verbose: true
+
+$ 03_01_flag_bool_derive --verbose --verbose
+verbose: true
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/03_01_flag_bool.rs b/vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_bool.rs
index de677d8c6..de677d8c6 100644
--- a/vendor/clap/examples/tutorial_derive/03_01_flag_bool.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_bool.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_count.md b/vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_count.md
new file mode 100644
index 000000000..3d5a53084
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_count.md
@@ -0,0 +1,23 @@
+```console
+$ 03_01_flag_count_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_01_flag_count_derive[EXE] [OPTIONS]
+
+OPTIONS:
+ -h, --help Print help information
+ -v, --verbose
+ -V, --version Print version information
+
+$ 03_01_flag_count_derive
+verbose: 0
+
+$ 03_01_flag_count_derive --verbose
+verbose: 1
+
+$ 03_01_flag_count_derive --verbose --verbose
+verbose: 2
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/03_01_flag_count.rs b/vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_count.rs
index 680f7f5e5..680f7f5e5 100644
--- a/vendor/clap/examples/tutorial_derive/03_01_flag_count.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_01_flag_count.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/03_02_option.md b/vendor/clap-3.2.20/examples/tutorial_derive/03_02_option.md
new file mode 100644
index 000000000..84ff7fa74
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_02_option.md
@@ -0,0 +1,32 @@
+```console
+$ 03_02_option_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_02_option_derive[EXE] [OPTIONS]
+
+OPTIONS:
+ -h, --help Print help information
+ -n, --name <NAME>
+ -V, --version Print version information
+
+$ 03_02_option_derive
+name: None
+
+$ 03_02_option_derive --name bob
+name: Some("bob")
+
+$ 03_02_option_derive --name=bob
+name: Some("bob")
+
+$ 03_02_option_derive -n bob
+name: Some("bob")
+
+$ 03_02_option_derive -n=bob
+name: Some("bob")
+
+$ 03_02_option_derive -nbob
+name: Some("bob")
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/03_02_option.rs b/vendor/clap-3.2.20/examples/tutorial_derive/03_02_option.rs
index 75b67afe7..75b67afe7 100644
--- a/vendor/clap/examples/tutorial_derive/03_02_option.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_02_option.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/03_03_positional.md b/vendor/clap-3.2.20/examples/tutorial_derive/03_03_positional.md
new file mode 100644
index 000000000..7281fe3ff
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_03_positional.md
@@ -0,0 +1,22 @@
+```console
+$ 03_03_positional_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_03_positional_derive[EXE] [NAME]
+
+ARGS:
+ <NAME>
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 03_03_positional_derive
+name: None
+
+$ 03_03_positional_derive bob
+name: Some("bob")
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/03_03_positional.rs b/vendor/clap-3.2.20/examples/tutorial_derive/03_03_positional.rs
index 7478951f1..7478951f1 100644
--- a/vendor/clap/examples/tutorial_derive/03_03_positional.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_03_positional.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/03_04_subcommands.md b/vendor/clap-3.2.20/examples/tutorial_derive/03_04_subcommands.md
new file mode 100644
index 000000000..02f96e3d3
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_04_subcommands.md
@@ -0,0 +1,64 @@
+```console
+$ 03_04_subcommands_derive help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_04_subcommands_derive[EXE] <SUBCOMMAND>
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+SUBCOMMANDS:
+ add Adds files to myapp
+ help Print this message or the help of the given subcommand(s)
+
+$ 03_04_subcommands_derive help add
+03_04_subcommands_derive[EXE]-add [..]
+Adds files to myapp
+
+USAGE:
+ 03_04_subcommands_derive[EXE] add [NAME]
+
+ARGS:
+ <NAME>
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 03_04_subcommands_derive add bob
+'myapp add' was used, name is: Some("bob")
+
+```
+
+Because we used `command: Commands` instead of `command: Option<Commands>`:
+```console
+$ 03_04_subcommands_derive
+? failed
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_04_subcommands_derive[EXE] <SUBCOMMAND>
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+SUBCOMMANDS:
+ add Adds files to myapp
+ help Print this message or the help of the given subcommand(s)
+
+```
+
+Because we added `#[clap(propagate_version = true)]`:
+```console
+$ 03_04_subcommands_derive --version
+clap [..]
+
+$ 03_04_subcommands_derive add --version
+03_04_subcommands_derive[EXE]-add [..]
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/03_04_subcommands.rs b/vendor/clap-3.2.20/examples/tutorial_derive/03_04_subcommands.rs
index 62a45a97e..62a45a97e 100644
--- a/vendor/clap/examples/tutorial_derive/03_04_subcommands.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_04_subcommands.rs
diff --git a/vendor/clap/examples/tutorial_derive/03_04_subcommands_alt.rs b/vendor/clap-3.2.20/examples/tutorial_derive/03_04_subcommands_alt.rs
index b6124936c..b6124936c 100644
--- a/vendor/clap/examples/tutorial_derive/03_04_subcommands_alt.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_04_subcommands_alt.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/03_05_default_values.md b/vendor/clap-3.2.20/examples/tutorial_derive/03_05_default_values.md
new file mode 100644
index 000000000..f7315e736
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_05_default_values.md
@@ -0,0 +1,22 @@
+```console
+$ 03_05_default_values_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 03_05_default_values_derive[EXE] [NAME]
+
+ARGS:
+ <NAME> [default: alice]
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 03_05_default_values_derive
+name: "alice"
+
+$ 03_05_default_values_derive bob
+name: "bob"
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/03_05_default_values.rs b/vendor/clap-3.2.20/examples/tutorial_derive/03_05_default_values.rs
index 10a1ec808..10a1ec808 100644
--- a/vendor/clap/examples/tutorial_derive/03_05_default_values.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/03_05_default_values.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/04_01_enum.md b/vendor/clap-3.2.20/examples/tutorial_derive/04_01_enum.md
new file mode 100644
index 000000000..2523af924
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/04_01_enum.md
@@ -0,0 +1,29 @@
+```console
+$ 04_01_enum_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_01_enum_derive[EXE] <MODE>
+
+ARGS:
+ <MODE> What mode to run the program in [possible values: fast, slow]
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 04_01_enum_derive fast
+Hare
+
+$ 04_01_enum_derive slow
+Tortoise
+
+$ 04_01_enum_derive medium
+? failed
+error: "medium" isn't a valid value for '<MODE>'
+ [possible values: fast, slow]
+
+For more information try --help
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/04_01_enum.rs b/vendor/clap-3.2.20/examples/tutorial_derive/04_01_enum.rs
index 84b4cace4..1ac984288 100644
--- a/vendor/clap/examples/tutorial_derive/04_01_enum.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/04_01_enum.rs
@@ -1,4 +1,4 @@
-use clap::{ArgEnum, Parser};
+use clap::{Parser, ValueEnum};
#[derive(Parser)]
#[clap(author, version, about, long_about = None)]
@@ -8,7 +8,7 @@ struct Cli {
mode: Mode,
}
-#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ArgEnum)]
+#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
enum Mode {
Fast,
Slow,
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/04_02_parse.md b/vendor/clap-3.2.20/examples/tutorial_derive/04_02_parse.md
new file mode 100644
index 000000000..6079ef193
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/04_02_parse.md
@@ -0,0 +1,31 @@
+```console
+$ 04_02_parse_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_02_parse_derive[EXE] <PORT>
+
+ARGS:
+ <PORT> Network port to use
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 04_02_parse_derive 22
+PORT = 22
+
+$ 04_02_parse_derive foobar
+? failed
+error: Invalid value "foobar" for '<PORT>': invalid digit found in string
+
+For more information try --help
+
+$ 04_02_parse_derive 0
+? failed
+error: Invalid value "0" for '<PORT>': 0 is not in 1..=65535
+
+For more information try --help
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/04_02_parse.rs b/vendor/clap-3.2.20/examples/tutorial_derive/04_02_parse.rs
index 6336a9cf1..6336a9cf1 100644
--- a/vendor/clap/examples/tutorial_derive/04_02_parse.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/04_02_parse.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/04_02_validate.md b/vendor/clap-3.2.20/examples/tutorial_derive/04_02_validate.md
new file mode 100644
index 000000000..cc43440ef
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/04_02_validate.md
@@ -0,0 +1,31 @@
+```console
+$ 04_02_validate_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_02_validate_derive[EXE] <PORT>
+
+ARGS:
+ <PORT> Network port to use
+
+OPTIONS:
+ -h, --help Print help information
+ -V, --version Print version information
+
+$ 04_02_validate_derive 22
+PORT = 22
+
+$ 04_02_validate_derive foobar
+? failed
+error: Invalid value "foobar" for '<PORT>': `foobar` isn't a port number
+
+For more information try --help
+
+$ 04_02_validate_derive 0
+? failed
+error: Invalid value "0" for '<PORT>': Port not in range 1-65535
+
+For more information try --help
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/04_02_validate.rs b/vendor/clap-3.2.20/examples/tutorial_derive/04_02_validate.rs
index 7dac79c9f..7dac79c9f 100644
--- a/vendor/clap/examples/tutorial_derive/04_02_validate.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/04_02_validate.rs
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/04_03_relations.md b/vendor/clap-3.2.20/examples/tutorial_derive/04_03_relations.md
new file mode 100644
index 000000000..4f5703d82
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/04_03_relations.md
@@ -0,0 +1,58 @@
+```console
+$ 04_03_relations_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_03_relations_derive[EXE] [OPTIONS] <--set-ver <VER>|--major|--minor|--patch> [INPUT_FILE]
+
+ARGS:
+ <INPUT_FILE> some regular input
+
+OPTIONS:
+ -c <CONFIG>
+ -h, --help Print help information
+ --major auto inc major
+ --minor auto inc minor
+ --patch auto inc patch
+ --set-ver <VER> set version manually
+ --spec-in <SPEC_IN> some special input argument
+ -V, --version Print version information
+
+$ 04_03_relations_derive
+? failed
+error: The following required arguments were not provided:
+ <--set-ver <VER>|--major|--minor|--patch>
+
+USAGE:
+ 04_03_relations_derive[EXE] [OPTIONS] <--set-ver <VER>|--major|--minor|--patch> [INPUT_FILE]
+
+For more information try --help
+
+$ 04_03_relations_derive --major
+Version: 2.2.3
+
+$ 04_03_relations_derive --major --minor
+? failed
+error: The argument '--major' cannot be used with '--minor'
+
+USAGE:
+ 04_03_relations_derive[EXE] <--set-ver <VER>|--major|--minor|--patch>
+
+For more information try --help
+
+$ 04_03_relations_derive --major -c config.toml
+? failed
+error: The following required arguments were not provided:
+ <INPUT_FILE|--spec-in <SPEC_IN>>
+
+USAGE:
+ 04_03_relations_derive[EXE] -c <CONFIG> <--set-ver <VER>|--major|--minor|--patch> <INPUT_FILE|--spec-in <SPEC_IN>>
+
+For more information try --help
+
+$ 04_03_relations_derive --major -c config.toml --spec-in input.txt
+Version: 2.2.3
+Doing work using input input.txt and config config.toml
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/04_03_relations.rs b/vendor/clap-3.2.20/examples/tutorial_derive/04_03_relations.rs
index f8523902d..37efe95e3 100644
--- a/vendor/clap/examples/tutorial_derive/04_03_relations.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/04_03_relations.rs
@@ -44,7 +44,7 @@ fn main() {
let mut minor = 2;
let mut patch = 3;
- // See if --set-ver was used to set the version manually
+ // See if --set_ver was used to set the version manually
let version = if let Some(ver) = cli.set_ver.as_deref() {
ver.to_string()
} else {
diff --git a/vendor/clap-3.2.20/examples/tutorial_derive/04_04_custom.md b/vendor/clap-3.2.20/examples/tutorial_derive/04_04_custom.md
new file mode 100644
index 000000000..0f19bfe31
--- /dev/null
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/04_04_custom.md
@@ -0,0 +1,57 @@
+```console
+$ 04_04_custom_derive --help
+clap [..]
+A simple to use, efficient, and full-featured Command Line Argument Parser
+
+USAGE:
+ 04_04_custom_derive[EXE] [OPTIONS] [INPUT_FILE]
+
+ARGS:
+ <INPUT_FILE> some regular input
+
+OPTIONS:
+ -c <CONFIG>
+ -h, --help Print help information
+ --major auto inc major
+ --minor auto inc minor
+ --patch auto inc patch
+ --set-ver <VER> set version manually
+ --spec-in <SPEC_IN> some special input argument
+ -V, --version Print version information
+
+$ 04_04_custom_derive
+? failed
+error: Can only modify one version field
+
+USAGE:
+ clap [OPTIONS] [INPUT_FILE]
+
+For more information try --help
+
+$ 04_04_custom_derive --major
+Version: 2.2.3
+
+$ 04_04_custom_derive --major --minor
+? failed
+error: Can only modify one version field
+
+USAGE:
+ clap [OPTIONS] [INPUT_FILE]
+
+For more information try --help
+
+$ 04_04_custom_derive --major -c config.toml
+? failed
+Version: 2.2.3
+error: INPUT_FILE or --spec-in is required when using --config
+
+USAGE:
+ clap [OPTIONS] [INPUT_FILE]
+
+For more information try --help
+
+$ 04_04_custom_derive --major -c config.toml --spec-in input.txt
+Version: 2.2.3
+Doing work using input input.txt and config config.toml
+
+```
diff --git a/vendor/clap/examples/tutorial_derive/04_04_custom.rs b/vendor/clap-3.2.20/examples/tutorial_derive/04_04_custom.rs
index 454d489c1..454d489c1 100644
--- a/vendor/clap/examples/tutorial_derive/04_04_custom.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/04_04_custom.rs
diff --git a/vendor/clap/examples/tutorial_derive/05_01_assert.rs b/vendor/clap-3.2.20/examples/tutorial_derive/05_01_assert.rs
index f5fa3f6c5..66dca727f 100644
--- a/vendor/clap/examples/tutorial_derive/05_01_assert.rs
+++ b/vendor/clap-3.2.20/examples/tutorial_derive/05_01_assert.rs
@@ -15,7 +15,7 @@ fn main() {
}
#[test]
-fn verify_app() {
+fn verify_cli() {
use clap::CommandFactory;
Cli::command().debug_assert()
}
diff --git a/vendor/clap/examples/typed-derive.md b/vendor/clap-3.2.20/examples/typed-derive.md
index 7c61f70d9..9c7615c63 100644
--- a/vendor/clap/examples/typed-derive.md
+++ b/vendor/clap-3.2.20/examples/typed-derive.md
@@ -1,6 +1,4 @@
-*Jump to [source](typed-derive.rs)*
-
-**This requires enabling the `derive` feature flag.**
+**This requires enabling the [`derive` feature flag][crate::_features].**
Help:
```console
diff --git a/vendor/clap/examples/typed-derive.rs b/vendor/clap-3.2.20/examples/typed-derive.rs
index 85c750f9c..31084029d 100644
--- a/vendor/clap/examples/typed-derive.rs
+++ b/vendor/clap-3.2.20/examples/typed-derive.rs
@@ -1,9 +1,7 @@
-// Note: this requires the `derive` feature
-
use clap::Parser;
use std::error::Error;
-#[derive(Parser, Debug)]
+#[derive(Parser, Debug)] // requires `derive` feature
struct Args {
/// Implicitly using `std::str::FromStr`
#[clap(short = 'O', value_parser)]
diff --git a/vendor/clap-3.2.20/src/_cookbook/cargo_example.rs b/vendor/clap-3.2.20/src/_cookbook/cargo_example.rs
new file mode 100644
index 000000000..ec5d582db
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/cargo_example.rs
@@ -0,0 +1,7 @@
+//! # Example: cargo subcommand (Builder API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/cargo-example.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/cargo-example.md")]
diff --git a/vendor/clap-3.2.20/src/_cookbook/cargo_example_derive b/vendor/clap-3.2.20/src/_cookbook/cargo_example_derive
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/cargo_example_derive
diff --git a/vendor/clap-3.2.20/src/_cookbook/cargo_example_derive.rs b/vendor/clap-3.2.20/src/_cookbook/cargo_example_derive.rs
new file mode 100644
index 000000000..d49f956f9
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/cargo_example_derive.rs
@@ -0,0 +1,7 @@
+//! # Example: cargo subcommand (Derive API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/cargo-example-derive.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/cargo-example-derive.md")]
diff --git a/vendor/clap-3.2.20/src/_cookbook/escaped_positional.rs b/vendor/clap-3.2.20/src/_cookbook/escaped_positional.rs
new file mode 100644
index 000000000..99a3f83f3
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/escaped_positional.rs
@@ -0,0 +1,7 @@
+//! # Example (Builder API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/escaped-positional.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/escaped-positional.md")]
diff --git a/vendor/clap-3.2.20/src/_cookbook/escaped_positional_derive.rs b/vendor/clap-3.2.20/src/_cookbook/escaped_positional_derive.rs
new file mode 100644
index 000000000..e6f99ad17
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/escaped_positional_derive.rs
@@ -0,0 +1,7 @@
+//! # Example (Derive API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/escaped-positional-derive.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/escaped-positional-derive.md")]
diff --git a/vendor/clap-3.2.20/src/_cookbook/git.rs b/vendor/clap-3.2.20/src/_cookbook/git.rs
new file mode 100644
index 000000000..03a926ca8
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/git.rs
@@ -0,0 +1,7 @@
+//! # Example: git-like CLI (Builder API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/git.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/git.md")]
diff --git a/vendor/clap-3.2.20/src/_cookbook/git_derive.rs b/vendor/clap-3.2.20/src/_cookbook/git_derive.rs
new file mode 100644
index 000000000..d3119736d
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/git_derive.rs
@@ -0,0 +1,7 @@
+//! # Example: git-like CLI (Derive API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/git-derive.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/git-derive.md")]
diff --git a/vendor/clap-3.2.20/src/_cookbook/mod.rs b/vendor/clap-3.2.20/src/_cookbook/mod.rs
new file mode 100644
index 000000000..1a78ed11b
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/mod.rs
@@ -0,0 +1,55 @@
+// Contributing
+//
+// New examples:
+// - Building: They must be added to `Cargo.toml` with the appropriate `required-features`.
+// - Testing: Ensure there is a markdown file with [trycmd](https://docs.rs/trycmd) syntax
+// - Link the `.md` file from here
+
+//! # Documentation: Cookbook
+//!
+//! Typed arguments: [derive][typed_derive]
+//! - Topics:
+//! - Custom `parse()`
+//!
+//! Custom cargo command: [builder][cargo_example], [derive][cargo_example_derive]
+//! - Topics:
+//! - Subcommands
+//! - Cargo plugins
+//!
+//! git-like interface: [builder][git], [derive][git_derive]
+//! - Topics:
+//! - Subcommands
+//! - External subcommands
+//! - Optional subcommands
+//! - Default subcommands
+//!
+//! pacman-like interface: [builder][pacman]
+//! - Topics:
+//! - Flag subcommands
+//! - Conflicting arguments
+//!
+//! Escaped positionals with `--`: [builder][escaped_positional], [derive][escaped_positional_derive]
+//!
+//! Multi-call
+//! - busybox: [builder][multicall_busybox]
+//! - Topics:
+//! - Subcommands
+//! - hostname: [builder][multicall_hostname]
+//! - Topics:
+//! - Subcommands
+//!
+//! repl: [builder][repl]
+//! - Topics:
+//! - Read-Eval-Print Loops / Custom command lines
+
+pub mod cargo_example;
+pub mod cargo_example_derive;
+pub mod escaped_positional;
+pub mod escaped_positional_derive;
+pub mod git;
+pub mod git_derive;
+pub mod multicall_busybox;
+pub mod multicall_hostname;
+pub mod pacman;
+pub mod repl;
+pub mod typed_derive;
diff --git a/vendor/clap-3.2.20/src/_cookbook/multicall_busybox.rs b/vendor/clap-3.2.20/src/_cookbook/multicall_busybox.rs
new file mode 100644
index 000000000..e3384d682
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/multicall_busybox.rs
@@ -0,0 +1,7 @@
+//! # Example: busybox-like CLI (Builder API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/multicall-busybox.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/multicall-busybox.md")]
diff --git a/vendor/clap-3.2.20/src/_cookbook/multicall_hostname.rs b/vendor/clap-3.2.20/src/_cookbook/multicall_hostname.rs
new file mode 100644
index 000000000..9777654dc
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/multicall_hostname.rs
@@ -0,0 +1,7 @@
+//! # Example: hostname-like CLI (Builder API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/multicall-hostname.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/multicall-hostname.md")]
diff --git a/vendor/clap-3.2.20/src/_cookbook/pacman.rs b/vendor/clap-3.2.20/src/_cookbook/pacman.rs
new file mode 100644
index 000000000..880c58158
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/pacman.rs
@@ -0,0 +1,7 @@
+//! # Example: pacman-like CLI (Builder API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/pacman.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/pacman.md")]
diff --git a/vendor/clap-3.2.20/src/_cookbook/repl.rs b/vendor/clap-3.2.20/src/_cookbook/repl.rs
new file mode 100644
index 000000000..549ec8259
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/repl.rs
@@ -0,0 +1,5 @@
+//! # Example: Command REPL (Builder API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/repl.rs")]
+//! ```
diff --git a/vendor/clap-3.2.20/src/_cookbook/typed_derive.rs b/vendor/clap-3.2.20/src/_cookbook/typed_derive.rs
new file mode 100644
index 000000000..a5fd15ff8
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_cookbook/typed_derive.rs
@@ -0,0 +1,7 @@
+//! # Example: Custom Types (Derive API)
+//!
+//! ```rust
+#![doc = include_str!("../../examples/typed-derive.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/typed-derive.md")]
diff --git a/vendor/clap-3.2.20/src/_derive/_tutorial.rs b/vendor/clap-3.2.20/src/_derive/_tutorial.rs
new file mode 100644
index 000000000..abd57cef8
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_derive/_tutorial.rs
@@ -0,0 +1,205 @@
+// Contributing
+//
+// New example code:
+// - Please update the corresponding section in the derive tutorial
+// - Building: They must be added to `Cargo.toml` with the appropriate `required-features`.
+// - Testing: Ensure there is a markdown file with [trycmd](https://docs.rs/trycmd) syntax
+//
+// See also the general CONTRIBUTING
+
+//! # Documentation: Derive Tutorial
+//!
+//! 1. [Quick Start](#quick-start)
+//! 2. [Configuring the Parser](#configuring-the-parser)
+//! 3. [Adding Arguments](#adding-arguments)
+//! 1. [Positionals](#positionals)
+//! 2. [Options](#options)
+//! 3. [Flags](#flags)
+//! 4. [Subcommands](#subcommands)
+//! 5. [Defaults](#defaults)
+//! 4. Validation
+//! 1. [Enumerated values](#enumerated-values)
+//! 2. [Validated values](#validated-values)
+//! 3. [Argument Relations](#argument-relations)
+//! 4. [Custom Validation](#custom-validation)
+//! 5. [Testing](#testing)
+//!
+//! See also
+//! - [FAQ: When should I use the builder vs derive APIs?][crate::_faq#when-should-i-use-the-builder-vs-derive-apis]
+//! - The [cookbook][crate::_cookbook] for more application-focused examples
+//!
+//! ## Quick Start
+//!
+//! You can create an application declaratively with a `struct` and some
+//! attributes. **This requires enabling the [`derive` feature flag][crate::_features].**
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/01_quick.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/tutorial_derive/01_quick.md")]
+//!
+//! ## Configuring the Parser
+//!
+//! You use derive [`Parser`][crate::Parser] to start building a parser.
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/02_apps.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/tutorial_derive/02_apps.md")]
+//!
+//! You can use `#[clap(author, version, about)]` attribute defaults to fill these fields in from your `Cargo.toml` file.
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/02_crate.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/02_crate.md")]
+//!
+//! You can use attributes to change the application level behavior of clap. Any [`Command`][crate::Command]] builder function can be used as an attribute.
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/02_app_settings.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/02_app_settings.md")]
+//!
+//! ## Adding Arguments
+//!
+//! ### Positionals
+//!
+//! You can have users specify values by their position on the command-line:
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/03_03_positional.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/03_03_positional.md")]
+//!
+//! ### Options
+//!
+//! You can name your arguments with a flag:
+//! - Order doesn't matter
+//! - They can be optional
+//! - Intent is clearer
+//!
+//! The `#[clap(short = 'n')]` and `#[clap(long = "name")]` attributes that define
+//! the flags are [`Arg`][crate::Args] methods that are derived from the field name when no value
+//! is specified (`#[clap(short)]` and `#[clap(long)]`).
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/03_02_option.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/03_02_option.md")]
+//!
+//! ### Flags
+//!
+//! Flags can also be switches that can be on/off. This is enabled via the
+//! `#[clap(action = ArgAction::SetTrue)]` attribute though this is implied when the field is a
+//! `bool`.
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/03_01_flag_bool.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/03_01_flag_bool.md")]
+//!
+//! Or counted with `#[clap(action = clap::ArgAction::Count)]`:
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/03_01_flag_count.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/03_01_flag_count.md")]
+//!
+//! ### Subcommands
+//!
+//! Subcommands are derived with `#[derive(Subcommand)]` and be added via `#[clap(subcommand)]` attribute. Each
+//! instance of a [Subcommand][crate::Subcommand] can have its own version, author(s), Args, and even its own
+//! subcommands.
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/03_04_subcommands.rs")]
+//! ```
+//! We used a struct-variant to define the `add` subcommand.
+//! Alternatively, you can use a struct for your subcommand's arguments:
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/03_04_subcommands_alt.rs")]
+//! ```
+//!
+#![doc = include_str!("../../examples/tutorial_derive/03_04_subcommands.md")]
+//!
+//! ### Defaults
+//!
+//! We've previously showed that arguments can be [`required`][crate::Arg::required] or optional.
+//! When optional, you work with a `Option` and can `unwrap_or`. Alternatively, you can
+//! set `#[clap(default_value_t)]`.
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/03_05_default_values.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/03_05_default_values.md")]
+//!
+//! ## Validation
+//!
+//! ### Enumerated values
+//!
+//! If you have arguments of specific values you want to test for, you can derive
+//! [`ValueEnum`][crate::ValueEnum].
+//!
+//! This allows you specify the valid values for that argument. If the user does not use one of
+//! those specific values, they will receive a graceful exit with error message informing them
+//! of the mistake, and what the possible valid values are
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/04_01_enum.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/04_01_enum.md")]
+//!
+//! ### Validated values
+//!
+//! More generally, you can validate and parse into any data type.
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/04_02_parse.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/04_02_parse.md")]
+//!
+//! A custom parser can be used to improve the error messages or provide additional validation:
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/04_02_validate.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/04_02_validate.md")]
+//!
+//! ### Argument Relations
+//!
+//! You can declare dependencies or conflicts between [`Arg`][crate::Arg]s or even
+//! [`ArgGroup`][crate::ArgGroup]s.
+//!
+//! [`ArgGroup`][crate::ArgGroup]s make it easier to declare relations instead of having to list
+//! each individually, or when you want a rule to apply "any but not all" arguments.
+//!
+//! Perhaps the most common use of [`ArgGroup`][crate::ArgGroup]s is to require one and *only* one
+//! argument to be present out of a given set. Imagine that you had multiple arguments, and you
+//! want one of them to be required, but making all of them required isn't feasible because perhaps
+//! they conflict with each other.
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/04_03_relations.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/04_03_relations.md")]
+//!
+//! ### Custom Validation
+//!
+//! As a last resort, you can create custom errors with the basics of clap's formatting.
+//!
+//! ```rust
+#![doc = include_str!("../../examples/tutorial_derive/04_04_custom.rs")]
+//! ```
+#![doc = include_str!("../../examples/tutorial_derive/04_04_custom.md")]
+//!
+//! ## Testing
+//!
+//! clap reports most development errors as `debug_assert!`s. Rather than checking every
+//! subcommand, you should have a test that calls
+//! [`Command::debug_assert`][crate::App::debug_assert]:
+//! ```rust,no_run
+#![doc = include_str!("../../examples/tutorial_derive/05_01_assert.rs")]
+//! ```
diff --git a/vendor/clap-3.2.20/src/_derive/mod.rs b/vendor/clap-3.2.20/src/_derive/mod.rs
new file mode 100644
index 000000000..fc9f35db5
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_derive/mod.rs
@@ -0,0 +1,510 @@
+//! # Documentation: Derive Reference
+//!
+//! 1. [Overview](#overview)
+//! 2. [Attributes](#attributes)
+//! 1. [Terminology](#terminology)
+//! 2. [Command Attributes](#command-attributes)
+//! 3. [Arg Attributes](#arg-attributes)
+//! 4. [ValueEnum Attributes](#valueenum-attributes)
+//! 5. [Possible Value Attributes](#possible-value-attributes)
+//! 3. [Arg Types](#arg-types)
+//! 4. [Doc Comments](#doc-comments)
+//! 5. [Mixing Builder and Derive APIs](#mixing-builder-and-derive-apis)
+//! 6. [Tips](#tips)
+//!
+//! ## Overview
+//!
+//! To derive `clap` types, you need to enable the [`derive` feature flag][crate::_features].
+//!
+//! Example:
+//! ```rust
+#![doc = include_str!("../../examples/demo.rs")]
+//! ```
+//!
+//! Let's start by breaking down the anatomy of the derive attributes:
+//! ```rust
+//! use clap::{Parser, Args, Subcommand, ValueEnum};
+//!
+//! /// Doc comment
+//! #[derive(Parser)]
+//! #[clap(APP ATTRIBUTE)]
+//! struct Cli {
+//! /// Doc comment
+//! #[clap(ARG ATTRIBUTE)]
+//! field: UserType,
+//!
+//! #[clap(value_enum, ARG ATTRIBUTE...)]
+//! field: EnumValues,
+//!
+//! #[clap(flatten)]
+//! delegate: Struct,
+//!
+//! #[clap(subcommand)]
+//! command: Command,
+//! }
+//!
+//! /// Doc comment
+//! #[derive(Args)]
+//! #[clap(PARENT APP ATTRIBUTE)]
+//! struct Struct {
+//! /// Doc comment
+//! #[clap(ARG ATTRIBUTE)]
+//! field: UserType,
+//! }
+//!
+//! /// Doc comment
+//! #[derive(Subcommand)]
+//! #[clap(PARENT APP ATTRIBUTE)]
+//! enum Command {
+//! /// Doc comment
+//! #[clap(APP ATTRIBUTE)]
+//! Variant1(Struct),
+//!
+//! /// Doc comment
+//! #[clap(APP ATTRIBUTE)]
+//! Variant2 {
+//! /// Doc comment
+//! #[clap(ARG ATTRIBUTE)]
+//! field: UserType,
+//! }
+//! }
+//!
+//! /// Doc comment
+//! #[derive(ValueEnum)]
+//! #[clap(VALUE ENUM ATTRIBUTE)]
+//! enum EnumValues {
+//! /// Doc comment
+//! #[clap(POSSIBLE VALUE ATTRIBUTE)]
+//! Variant1,
+//! }
+//!
+//! fn main() {
+//! let cli = Cli::parse();
+//! }
+//! ```
+//!
+//! Traits:
+//! - [`Parser`][crate::Parser] parses arguments into a `struct` (arguments) or `enum` (subcommands).
+//! - [`Args`][crate::Args] allows defining a set of re-usable arguments that get merged into their parent container.
+//! - [`Subcommand`][crate::Subcommand] defines available subcommands.
+//! - Subcommand arguments can be defined in a struct-variant or automatically flattened with a tuple-variant.
+//! - [`ValueEnum`][crate::ValueEnum] allows parsing a value directly into an `enum`, erroring on unsupported values.
+//! - The derive doesn't work on enums that contain non-unit variants, unless they are skipped
+//!
+//! *See also the [derive tutorial][crate::_derive::_tutorial] and [cookbook][crate::_cookbook]*
+//!
+//! ## Attributes
+//!
+//! ### Terminology
+//!
+//! **Raw attributes** are forwarded directly to the underlying [`clap` builder][crate::builder]. Any
+//! [`Command`][crate::Command], [`Arg`][crate::Arg], or [`PossibleValue`][crate::PossibleValue] method can be used as an attribute.
+//!
+//! Raw attributes come in two different syntaxes:
+//! ```rust,ignore
+//! #[clap(
+//! global = true, // name = arg form, neat for one-arg methods
+//! required_if_eq("out", "file") // name(arg1, arg2, ...) form.
+//! )]
+//! ```
+//!
+//! - `method = arg` can only be used for methods which take only one argument.
+//! - `method(arg1, arg2)` can be used with any method.
+//!
+//! As long as `method_name` is not one of the magical methods it will be
+//! translated into a mere method call.
+//!
+//! **Magic attributes** have post-processing done to them, whether that is
+//! - Providing of defaults
+//! - Special behavior is triggered off of it
+//!
+//! Magic attributes are more constrained in the syntax they support, usually just
+//! `<attr> = <value>` though some use `<attr>(<value>)` instead. See the specific
+//! magic attributes documentation for details. This allows users to access the
+//! raw behavior of an attribute via `<attr>(<value>)` syntax.
+//!
+//! **NOTE:** Some attributes are inferred from [Arg Types](#arg-types) and [Doc
+//! Comments](#doc-comments). Explicit attributes take precedence over inferred
+//! attributes.
+//!
+//! ### Command Attributes
+//!
+//! These correspond to a [`Command`][crate::Command] which is used for both top-level parsers and
+//! when defining subcommands.
+//!
+//! **Raw attributes:** Any [`Command` method][crate::Command] can also be used as an attribute,
+//! see [Terminology](#terminology) for syntax.
+//! - e.g. `#[clap(arg_required_else_help(true))]` would translate to `cmd.arg_required_else_help(true)`
+//!
+//! **Magic attributes:**
+//! - `name = <expr>`: [`Command::name`][crate::App::name]
+//! - When not present: [crate `name`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field) (if on [`Parser`][crate::Parser] container), variant name (if on [`Subcommand`][crate::Subcommand] variant)
+//! - `version [= <expr>]`: [`Command::version`][crate::App::version]
+//! - When not present: no version set
+//! - Without `<expr>`: defaults to [crate `version`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-version-field)
+//! - `author [= <expr>]`: [`Command::author`][crate::App::author]
+//! - When not present: no author set
+//! - Without `<expr>`: defaults to [crate `authors`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-authors-field)
+//! - `about [= <expr>]`: [`Command::about`][crate::App::about]
+//! - When not present: [Doc comment summary](#doc-comments)
+//! - Without `<expr>`: [crate `description`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-description-field) ([`Parser`][crate::Parser] container)
+//! - **TIP:** When a doc comment is also present, you most likely want to add
+//! `#[clap(long_about = None)]` to clear the doc comment so only [`about`][crate::App::about]
+//! gets shown with both `-h` and `--help`.
+//! - `long_about = <expr>`: [`Command::long_about`][crate::App::long_about]
+//! - When not present: [Doc comment](#doc-comments) if there is a blank line, else nothing
+//! - `verbatim_doc_comment`: Minimizes pre-processing when converting doc comments to [`about`][crate::App::about] / [`long_about`][crate::App::long_about]
+//! - `next_display_order`: [`Command::next_display_order`][crate::App::next_display_order]
+//! - `next_help_heading`: [`Command::next_help_heading`][crate::App::next_help_heading]
+//! - When `flatten`ing [`Args`][crate::Args], this is scoped to just the args in this struct and any struct `flatten`ed into it
+//! - `rename_all = <string_literal>`: Override default field / variant name case conversion for [`Command::name`][crate::Command::name] / [`Arg::id`][crate::Arg::id]
+//! - When not present: `"kebab-case"`
+//! - Available values: `"camelCase"`, `"kebab-case"`, `"PascalCase"`, `"SCREAMING_SNAKE_CASE"`, `"snake_case"`, `"lower"`, `"UPPER"`, `"verbatim"`
+//! - `rename_all_env = <string_literal>`: Override default field name case conversion for env variables for [`Arg::env`][crate::Arg::env]
+//! - When not present: `"SCREAMING_SNAKE_CASE"`
+//! - Available values: `"camelCase"`, `"kebab-case"`, `"PascalCase"`, `"SCREAMING_SNAKE_CASE"`, `"snake_case"`, `"lower"`, `"UPPER"`, `"verbatim"`
+//!
+//! And for [`Subcommand`][crate::Subcommand] variants:
+//! - `skip`: Ignore this variant
+//! - `flatten`: Delegates to the variant for more subcommands (must implement
+//! [`Subcommand`][crate::Subcommand])
+//! - `subcommand`: Nest subcommands under the current set of subcommands (must implement
+//! [`Subcommand`][crate::Subcommand])
+//! - `external_subcommand`: [`Command::allow_external_subcommand(true)`][crate::App::allow_external_subcommands]
+//! - Variant must be either `Variant(Vec<String>)` or `Variant(Vec<OsString>)`
+//!
+//! ### Arg Attributes
+//!
+//! These correspond to a [`Arg`][crate::Arg].
+//!
+//! **Raw attributes:** Any [`Arg` method][crate::Arg] can also be used as an attribute, see [Terminology](#terminology) for syntax.
+//! - e.g. `#[clap(max_values(3))]` would translate to `arg.max_values(3)`
+//!
+//! **Magic attributes**:
+//! - `id = <expr>`: [`Arg::id`][crate::Arg::id]
+//! - When not present: case-converted field name is used
+//! - `name = <expr>`: [`Arg::id`][crate::Arg::id]
+//! - **Deprecated:** use `id`
+//! - `value_parser [= <expr>]`: [`Arg::value_parser`][crate::Arg::value_parser]
+//! - When not present: will auto-select an implementation based on the field type using
+//! [`value_parser!][crate::value_parser!]
+//! - When present but defaulted: opt-in to clap v4 semantics
+//! - Env parsing is now dependent on inferred parser
+//! - `PathBuf` will implicitly skip UTF-8 validation (before it required specifying
+//! `try_from_os_str`)
+//! - When present, implies `#[clap(action)]`
+//! - To register a custom type's [`ValueParser`][crate::builder::ValueParser], implement [`ValueParserFactory`][crate::builder::ValueParserFactory]
+//! - `action [= <expr>]`: [`Arg::action`][crate::Arg::action]
+//! - When not present: will auto-select an action based on the field type
+//! - When present but defaulted: opt-in to clap v4 semantics
+//! - When present, implies `#[clap(value_parser)]`
+//! - `args_override_self` is forced on for single flags
+//! - `help = <expr>`: [`Arg::help`][crate::Arg::help]
+//! - When not present: [Doc comment summary](#doc-comments)
+//! - `long_help = <expr>`: [`Arg::long_help`][crate::Arg::long_help]
+//! - When not present: [Doc comment](#doc-comments) if there is a blank line, else nothing
+//! - `verbatim_doc_comment`: Minimizes pre-processing when converting doc comments to [`help`][crate::Arg::help] / [`long_help`][crate::Arg::long_help]
+//! - `short [= <char>]`: [`Arg::short`][crate::Arg::short]
+//! - When not present: no short set
+//! - Without `<char>`: defaults to first character in the case-converted field name
+//! - `long [= <str>]`: [`Arg::long`][crate::Arg::long]
+//! - When not present: no long set
+//! - Without `<str>`: defaults to the case-converted field name
+//! - `env [= <str>]`: [`Arg::env`][crate::Arg::env] (needs [`env` feature][crate::_features] enabled)
+//! - When not present: no env set
+//! - Without `<str>`: defaults to the case-converted field name
+//! - `flatten`: Delegates to the field for more arguments (must implement [`Args`][crate::Args])
+//! - Only [`next_help_heading`][crate::Command::next_help_heading] can be used with `flatten`. See
+//! [clap-rs/clap#3269](https://github.com/clap-rs/clap/issues/3269) for why
+//! arg attributes are not generally supported.
+//! - **Tip:** Though we do apply a flattened [`Args`][crate::Args]'s Parent Command Attributes, this
+//! makes reuse harder. Generally prefer putting the cmd attributes on the
+//! [`Parser`][crate::Parser] or on the flattened field.
+//! - `subcommand`: Delegates definition of subcommands to the field (must implement
+//! [`Subcommand`][crate::Subcommand])
+//! - When `Option<T>`, the subcommand becomes optional
+//! - `from_global`: Read a [`Arg::global`][crate::Arg::global] argument (raw attribute), regardless of what subcommand you are in
+//! - `parse(<kind> [= <function>])`: [`Arg::validator`][crate::Arg::validator] and [`ArgMatches::values_of_t`][crate::ArgMatches::values_of_t]
+//! - **Deprecated:**
+//! - Use `value_parser(...)` for `from_str`, `try_from_str`, `from_os_str`, and `try_from_os_str`
+//! - Use `action(ArgAction::Count` for `from_occurrences`
+//! - Use `action(ArgAction::SetTrue` for `from_flag`
+//! - Default: `try_from_str`
+//! - Warning: for `Path` / `OsString`, be sure to use `try_from_os_str`
+//! - See [Arg Types](#arg-types) for more details
+//! - `value_enum`: Parse the value using the [`ValueEnum`][crate::ValueEnum]
+//! - `skip [= <expr>]`: Ignore this field, filling in with `<expr>`
+//! - Without `<expr>`: fills the field with `Default::default()`
+//! - `default_value = <str>`: [`Arg::default_value`][crate::Arg::default_value] and [`Arg::required(false)`][crate::Arg::required]
+//! - `default_value_t [= <expr>]`: [`Arg::default_value`][crate::Arg::default_value] and [`Arg::required(false)`][crate::Arg::required]
+//! - Requires `std::fmt::Display` or `#[clap(value_enum)]`
+//! - Without `<expr>`, relies on `Default::default()`
+//! - `default_values_t = <expr>`: [`Arg::default_values`][crate::Arg::default_values] and [`Arg::required(false)`][crate::Arg::required]
+//! - Requires field arg to be of type `Vec<T>` and `T` to implement `std::fmt::Display` or `#[clap(value_enum)]`
+//! - `<expr>` must implement `IntoIterator<T>`
+//! - `default_value_os_t [= <expr>]`: [`Arg::default_value_os`][crate::Arg::default_value_os] and [`Arg::required(false)`][crate::Arg::required]
+//! - Requires `std::convert::Into<OsString>` or `#[clap(value_enum)]`
+//! - Without `<expr>`, relies on `Default::default()`
+//! - `default_values_os_t = <expr>`: [`Arg::default_values_os`][crate::Arg::default_values_os] and [`Arg::required(false)`][crate::Arg::required]
+//! - Requires field arg to be of type `Vec<T>` and `T` to implement `std::convert::Into<OsString>` or `#[clap(value_enum)]`
+//! - `<expr>` must implement `IntoIterator<T>`
+//!
+//! ### ValueEnum Attributes
+//!
+//! - `rename_all = <string_literal>`: Override default field / variant name case conversion for [`PossibleValue::new`][crate::PossibleValue]
+//! - When not present: `"kebab-case"`
+//! - Available values: `"camelCase"`, `"kebab-case"`, `"PascalCase"`, `"SCREAMING_SNAKE_CASE"`, `"snake_case"`, `"lower"`, `"UPPER"`, `"verbatim"`
+//!
+//! ### Possible Value Attributes
+//!
+//! These correspond to a [`PossibleValue`][crate::PossibleValue].
+//!
+//! **Raw attributes:** Any [`PossibleValue` method][crate::PossibleValue] can also be used as an attribute, see [Terminology](#terminology) for syntax.
+//! - e.g. `#[clap(alias("foo"))]` would translate to `pv.alias("foo")`
+//!
+//! **Magic attributes**:
+//! - `name = <expr>`: [`PossibleValue::new`][crate::PossibleValue::new]
+//! - When not present: case-converted field name is used
+//! - `help = <expr>`: [`PossibleValue::help`][crate::PossibleValue::help]
+//! - When not present: [Doc comment summary](#doc-comments)
+//!
+//! ## Arg Types
+//!
+//! `clap` assumes some intent based on the type used:
+//!
+//! | Type | Effect | Implies |
+//! |---------------------|--------------------------------------|------------------------------------------------------------------|
+//! | `bool` | flag | `#[clap(parse(from_flag))]` |
+//! | `Option<T>` | optional argument | `.takes_value(true).required(false)` |
+//! | `Option<Option<T>>` | optional value for optional argument | `.takes_value(true).required(false).min_values(0).max_values(1)` |
+//! | `T` | required argument | `.takes_value(true).required(!has_default)` |
+//! | `Vec<T>` | `0..` occurrences of argument | `.takes_value(true).required(false).multiple_occurrences(true)` |
+//! | `Option<Vec<T>>` | `0..` occurrences of argument | `.takes_value(true).required(false).multiple_occurrences(true)` |
+//!
+//! Notes:
+//! - For custom type behavior, you can override the implied attributes/settings and/or set additional ones
+//! - For example, see [custom-bool](./custom-bool.md)
+//! - `Option<Vec<T>>` will be `None` instead of `vec![]` if no arguments are provided.
+//! - This gives the user some flexibility in designing their argument, like with `min_values(0)`
+//!
+//! You can then support your custom type with `#[clap(parse(<kind> [= <function>]))]`:
+//!
+//! | `<kind>` | Signature | Default `<function>` |
+//! |--------------------------|---------------------------------------|---------------------------------|
+//! | `from_str` | `fn(&str) -> T` | `::std::convert::From::from` |
+//! | `try_from_str` (default) | `fn(&str) -> Result<T, E>` | `::std::str::FromStr::from_str` |
+//! | `from_os_str` | `fn(&OsStr) -> T` | `::std::convert::From::from` |
+//! | `try_from_os_str` | `fn(&OsStr) -> Result<T, E>` | (no default function) |
+//! | `from_occurrences` | `fn(u64) -> T` | `value as T` |
+//! | `from_flag` | `fn(bool) -> T` | `::std::convert::From::from` |
+//!
+//! Notes:
+//! - `from_os_str`:
+//! - Implies `arg.takes_value(true).allow_invalid_utf8(true)`
+//! - `try_from_os_str`:
+//! - Implies `arg.takes_value(true).allow_invalid_utf8(true)`
+//! - `from_occurrences`:
+//! - Implies `arg.takes_value(false).multiple_occurrences(true)`
+//! - Reads from `clap::ArgMatches::occurrences_of` rather than a `get_one` function
+//! - Note: operations on values, like `default_value`, are unlikely to do what you want
+//! - `from_flag`
+//! - Implies `arg.takes_value(false)`
+//! - Reads from `clap::ArgMatches::is_present` rather than a `get_one` function
+//! - Note: operations on values, like `default_value`, are unlikely to do what you want
+//!
+//! **Warning:**
+//! - To support non-UTF8 paths, you should use `#[clap(value_parser)]` otherwise
+//! `clap` will parse it as a `String` which will fail on some paths.
+//!
+//! ## Doc Comments
+//!
+//! In clap, help messages for the whole binary can be specified
+//! via [`Command::about`][crate::App::about] and [`Command::long_about`][crate::App::long_about] while help messages
+//! for individual arguments can be specified via [`Arg::help`][crate::Arg::help] and [`Arg::long_help`][crate::Arg::long_help].
+//!
+//! `long_*` variants are used when user calls the program with
+//! `--help` and "short" variants are used with `-h` flag.
+//!
+//! ```rust
+//! # use clap::Parser;
+//!
+//! #[derive(Parser)]
+//! #[clap(about = "I am a program and I work, just pass `-h`", long_about = None)]
+//! struct Foo {
+//! #[clap(short, help = "Pass `-h` and you'll see me!")]
+//! bar: String,
+//! }
+//! ```
+//!
+//! For convenience, doc comments can be used instead of raw methods
+//! (this example works exactly like the one above):
+//!
+//! ```rust
+//! # use clap::Parser;
+//!
+//! #[derive(Parser)]
+//! /// I am a program and I work, just pass `-h`
+//! struct Foo {
+//! /// Pass `-h` and you'll see me!
+//! bar: String,
+//! }
+//! ```
+//!
+//! **NOTE:** Attributes have priority over doc comments!
+//!
+//! **Top level doc comments always generate `Command::about/long_about` calls!**
+//! If you really want to use the `Command::about/long_about` methods (you likely don't),
+//! use the `about` / `long_about` attributes to override the calls generated from
+//! the doc comment. To clear `long_about`, you can use
+//! `#[clap(long_about = None)]`.
+//!
+//! **TIP:** Set `#![deny(missing_docs)]` to catch missing `--help` documentation at compile time.
+//!
+//! ### Pre-processing
+//!
+//! ```rust
+//! # use clap::Parser;
+//! #[derive(Parser)]
+//! /// Hi there, I'm Robo!
+//! ///
+//! /// I like beeping, stumbling, eating your electricity,
+//! /// and making records of you singing in a shower.
+//! /// Pay up, or I'll upload it to youtube!
+//! struct Robo {
+//! /// Call my brother SkyNet.
+//! ///
+//! /// I am artificial superintelligence. I won't rest
+//! /// until I'll have destroyed humanity. Enjoy your
+//! /// pathetic existence, you mere mortals.
+//! #[clap(long, action)]
+//! kill_all_humans: bool,
+//! }
+//! ```
+//!
+//! A doc comment consists of three parts:
+//! - Short summary
+//! - A blank line (whitespace only)
+//! - Detailed description, all the rest
+//!
+//! The summary corresponds with `Command::about` / `Arg::help`. When a blank line is
+//! present, the whole doc comment will be passed to `Command::long_about` /
+//! `Arg::long_help`. Or in other words, a doc may result in just a `Command::about` /
+//! `Arg::help` or `Command::about` / `Arg::help` and `Command::long_about` /
+//! `Arg::long_help`
+//!
+//! In addition, when `verbatim_doc_comment` is not present, `clap` applies some preprocessing, including:
+//!
+//! - Strip leading and trailing whitespace from every line, if present.
+//!
+//! - Strip leading and trailing blank lines, if present.
+//!
+//! - Interpret each group of non-empty lines as a word-wrapped paragraph.
+//!
+//! We replace newlines within paragraphs with spaces to allow the output
+//! to be re-wrapped to the terminal width.
+//!
+//! - Strip any excess blank lines so that there is exactly one per paragraph break.
+//!
+//! - If the first paragraph ends in exactly one period,
+//! remove the trailing period (i.e. strip trailing periods but not trailing ellipses).
+//!
+//! Sometimes you don't want this preprocessing to apply, for example the comment contains
+//! some ASCII art or markdown tables, you would need to preserve LFs along with
+//! blank lines and the leading/trailing whitespace. When you pass use the
+//! `verbatim_doc_comment` magic attribute, you preserve
+//! them.
+//!
+//! **Note:** Keep in mind that `verbatim_doc_comment` will *still*
+//! - Remove one leading space from each line, even if this attribute is present,
+//! to allow for a space between `///` and the content.
+//! - Remove leading and trailing blank lines
+//!
+//! ## Mixing Builder and Derive APIs
+//!
+//! The builder and derive APIs do not live in isolation. They can work together, which is
+//! especially helpful if some arguments can be specified at compile-time while others must be
+//! specified at runtime.
+//!
+//! ### Using derived arguments in a builder application
+//!
+//! When using the derive API, you can `#[clap(flatten)]` a struct deriving `Args` into a struct
+//! deriving `Args` or `Parser`. This example shows how you can augment a `Command` instance
+//! created using the builder API with `Args` created using the derive API.
+//!
+//! It uses the [`Args::augment_args`][crate::Args::augment_args] method to add the arguments to
+//! the `Command` instance.
+//!
+//! Crates such as [clap-verbosity-flag](https://github.com/rust-cli/clap-verbosity-flag) provide
+//! structs that implement `Args`. Without the technique shown in this example, it would not be
+//! possible to use such crates with the builder API.
+//!
+//! For example:
+//! ```rust
+#![doc = include_str!("../../examples/derive_ref/augment_args.rs")]
+//! ```
+//!
+//! ### Using derived subcommands in a builder application
+//!
+//! When using the derive API, you can use `#[clap(subcommand)]` inside the struct to add
+//! subcommands. The type of the field is usually an enum that derived `Parser`. However, you can
+//! also add the subcommands in that enum to a `Command` instance created with the builder API.
+//!
+//! It uses the [`Subcommand::augment_subcommands`][crate::Subcommand::augment_subcommands] method
+//! to add the subcommands to the `Command` instance.
+//!
+//! For example:
+//! ```rust
+#![doc = include_str!("../../examples/derive_ref/augment_subcommands.rs")]
+//! ```
+//!
+//! ### Adding hand-implemented subcommands to a derived application
+//!
+//! When using the derive API, you can use `#[clap(subcommand)]` inside the struct to add
+//! subcommands. The type of the field is usually an enum that derived `Parser`. However, you can
+//! also implement the `Subcommand` trait manually on this enum (or any other type) and it can
+//! still be used inside the struct created with the derive API. The implementation of the
+//! `Subcommand` trait will use the builder API to add the subcommands to the `Command` instance
+//! created behind the scenes for you by the derive API.
+//!
+//! Notice how in the previous example we used
+//! [`augment_subcommands`][crate::Subcommand::augment_subcommands] on an enum that derived
+//! `Parser`, whereas now we implement
+//! [`augment_subcommands`][crate::Subcommand::augment_subcommands] ourselves, but the derive API
+//! calls it automatically since we used the `#[clap(subcommand)]` attribute.
+//!
+//! For example:
+//! ```rust
+#![doc = include_str!("../../examples/derive_ref/hand_subcommand.rs")]
+//! ```
+//!
+//! ### Flattening hand-implemented args into a derived application
+//!
+//! When using the derive API, you can use `#[clap(flatten)]` inside the struct to add arguments as
+//! if they were added directly to the containing struct. The type of the field is usually an
+//! struct that derived `Args`. However, you can also implement the `Args` trait manually on this
+//! struct (or any other type) and it can still be used inside the struct created with the derive
+//! API. The implementation of the `Args` trait will use the builder API to add the arguments to
+//! the `Command` instance created behind the scenes for you by the derive API.
+//!
+//! Notice how in the previous example we used [`augment_args`][crate::Args::augment_args] on the
+//! struct that derived `Parser`, whereas now we implement
+//! [`augment_args`][crate::Args::augment_args] ourselves, but the derive API calls it
+//! automatically since we used the `#[clap(flatten)]` attribute.
+//!
+//! For example:
+//! ```rust
+#![doc = include_str!("../../examples/derive_ref/flatten_hand_args.rs")]
+//! ```
+//!
+//! ## Tips
+//!
+//! - To get access to a [`Command`][crate::Command] call
+//! [`CommandFactory::command`][crate::CommandFactory::command] (implemented when deriving
+//! [`Parser`][crate::Parser])
+//! - Proactively check for bad [`Command`][crate::Command] configurations by calling
+//! [`Command::debug_assert`][crate::App::debug_assert] in a test
+//! ([example](../tutorial_derive/05_01_assert.rs))
+
+pub mod _tutorial;
+#[doc(inline)]
+pub use crate::_cookbook;
diff --git a/vendor/clap-3.2.20/src/_faq.rs b/vendor/clap-3.2.20/src/_faq.rs
new file mode 100644
index 000000000..661a7e73d
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_faq.rs
@@ -0,0 +1,95 @@
+//! # Documentation: FAQ
+//!
+//! 1. [Comparisons](#comparisons)
+//! 1. [How does `clap` compare to structopt?](#how-does-clap-compare-to-structopt)
+//! 2. [What are some reasons to use `clap`? (The Pitch)](#what-are-some-reasons-to-use-clap-the-pitch)
+//! 3. [What are some reasons *not* to use `clap`? (The Anti Pitch)](#what-are-some-reasons-not-to-use-clap-the-anti-pitch)
+//! 4. [Reasons to use `clap`](#reasons-to-use-clap)
+//! 2. [How many approaches are there to create a parser?](#how-many-approaches-are-there-to-create-a-parser)
+//! 3. [When should I use the builder vs derive APIs?](#when-should-i-use-the-builder-vs-derive-apis)
+//! 4. [Why is there a default subcommand of help?](#why-is-there-a-default-subcommand-of-help)
+//!
+//! ### Comparisons
+//!
+//! First, let me say that these comparisons are highly subjective, and not meant
+//! in a critical or harsh manner. All the argument parsing libraries out there (to
+//! include `clap`) have their own strengths and weaknesses. Sometimes it just
+//! comes down to personal taste when all other factors are equal. When in doubt,
+//! try them all and pick one that you enjoy :) There's plenty of room in the Rust
+//! community for multiple implementations!
+//!
+//! For less detailed but more broad comparisons, see
+//! [argparse-benchmarks](https://github.com/rust-cli/argparse-benchmarks-rs).
+//!
+//! #### How does `clap` compare to [structopt](https://github.com/TeXitoi/structopt)?
+//!
+//! Simple! `clap` *is* `structopt`. `structopt` started as a derive API built on
+//! top of clap v2. With clap v3, we've forked structopt and integrated it
+//! directly into clap. structopt is in
+//! [maintenance mode](https://github.com/TeXitoi/structopt/issues/516#issuecomment-989566094)
+//! with the release of `clap_derive`.
+//!
+//! The benefits of integrating `structopt` and `clap` are:
+//! - Easier cross-linking in documentation
+//! - [Documentation parity](../examples)
+//! - Tighter design feedback loop, ensuring all new features are designed with
+//! derives in mind and easier to change `clap` in response to `structopt` bugs.
+//! - Clearer endorsement of `structopt`
+//!
+//! See also
+//! - [`clap` v3 CHANGELOG](../CHANGELOG.md#300---2021-12-31)
+//! - [`structopt` migration guide](../CHANGELOG.md#migrate-structopt)
+//!
+//! #### What are some reasons to use `clap`? (The Pitch)
+//!
+//! `clap` is as fast, and as lightweight as possible while still giving all the features you'd expect from a modern argument parser. In fact, for the amount and type of features `clap` offers it remains about as fast as `getopts`. If you use `clap` when just need some simple arguments parsed, you'll find it's a walk in the park. `clap` also makes it possible to represent extremely complex, and advanced requirements, without too much thought. `clap` aims to be intuitive, easy to use, and fully capable for wide variety use cases and needs.
+//!
+//! #### What are some reasons *not* to use `clap`? (The Anti Pitch)
+//!
+//! Depending on the style in which you choose to define the valid arguments, `clap` can be very verbose. `clap` also offers so many finetuning knobs and dials, that learning everything can seem overwhelming. I strive to keep the simple cases simple, but when turning all those custom dials it can get complex. `clap` is also opinionated about parsing. Even though so much can be tweaked and tuned with `clap` (and I'm adding more all the time), there are still certain features which `clap` implements in specific ways which may be contrary to some users use-cases.
+//!
+//! #### Reasons to use `clap`
+//!
+//! * You want all the nice CLI features your users may expect, yet you don't want to implement them all yourself. You'd like to focus your application, not argument parsing.
+//! * In addition to the point above; you don't want to sacrifice performance to get all those nice features
+//! * You have complex requirements/conflicts between your various valid args.
+//! * You want to use subcommands (although other libraries also support subcommands, they are not nearly as feature rich as those provided by `clap`)
+//! * You want some sort of custom validation built into the argument parsing process, instead of as part of your application (which allows for earlier failures, better error messages, more cohesive experience, etc.)
+//!
+//! ### How many approaches are there to create a parser?
+//!
+//! The following APIs are supported:
+//! - [Derive][crate::_derive::_tutorial]
+//! - [Builder][crate::_tutorial]
+//!
+//! Previously, we supported:
+//! - [YAML](https://github.com/clap-rs/clap/issues/3087)
+//! - [docopt](http://docopt.org/)-inspired [usage parser](https://github.com/clap-rs/clap/issues/3086)
+//! - [`clap_app!`](https://github.com/clap-rs/clap/issues/2835)
+//!
+//! There are also experiments with other APIs:
+//! - [fncmd](https://github.com/yuhr/fncmd): function attribute
+//! - [clap-serde](https://github.com/aobatact/clap-serde): create an `Command` from a deserializer
+//!
+//! ### When should I use the builder vs derive APIs?
+//!
+//! Our default answer is to use the [Derive API][crate::_derive::_tutorial]:
+//! - Easier to read, write, and modify
+//! - Easier to keep the argument declaration and reading of argument in sync
+//! - Easier to reuse, e.g. [clap-verbosity-flag](https://crates.io/crates/clap-verbosity-flag)
+//!
+//! The [Builder API][crate::_tutorial] is a lower-level API that someone might want to use for
+//! - Faster compile times if you aren't already using other procedural macros
+//! - More flexibility, e.g. you can look up an [arguments values][crate::ArgMatches::get_many],
+//! their [ordering with other arguments][crate::ArgMatches::indices_of], and [what set
+//! them][crate::ArgMatches::value_source]. The Derive API can only report values and not
+//! indices of or other data.
+//!
+//! You can [interop between Derive and Builder APIs][crate::_derive#mixing-builder-and-derive-apis].
+//!
+//! ### Why is there a default subcommand of help?
+//!
+//! There is only a default subcommand of `help` when other subcommands have been defined manually. So it's opt-in(ish), being that you only get a `help` subcommand if you're actually using subcommands.
+//!
+//! Also, if the user defined a `help` subcommand themselves, the auto-generated one wouldn't be added (meaning it's only generated if the user hasn't defined one themselves).
+//!
diff --git a/vendor/clap-3.2.20/src/_features.rs b/vendor/clap-3.2.20/src/_features.rs
new file mode 100644
index 000000000..923134c45
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_features.rs
@@ -0,0 +1,27 @@
+//! ## Documentation: Feature Flags
+//!
+//! Available [compile-time feature flags](https://doc.rust-lang.org/cargo/reference/features.html#dependency-features)
+//!
+//! #### Default Features
+//!
+//! * **std**: _Not Currently Used._ Placeholder for supporting `no_std` environments in a backwards compatible manner.
+//! * **color**: Turns on colored error messages.
+//! * **suggestions**: Turns on the `Did you mean '--myoption'?` feature for when users make typos.
+//!
+//! #### Optional features
+//!
+//! * **deprecated**: Guided experience to prepare for next breaking release (at different stages of development, this may become default)
+//! * **derive**: Enables the custom derive (i.e. `#[derive(Parser)]`). Without this you must use one of the other methods of creating a `clap` CLI listed above.
+//! * **cargo**: Turns on macros that read values from [`CARGO_*` environment variables](https://doc.rust-lang.org/cargo/reference/environment-variables.html#environment-variables-cargo-sets-for-crates).
+//! * **env**: Turns on the usage of environment variables during parsing.
+//! * **regex**: Enables regex validators.
+//! * **unicode**: Turns on support for unicode characters (including emoji) in arguments and help messages.
+//! * **wrap_help**: Turns on the help text wrapping feature, based on the terminal size.
+//!
+//! #### Experimental features
+//!
+//! **Warning:** These may contain breaking changes between minor releases.
+//!
+//! * **unstable-replace**: Enable [`Command::replace`](https://github.com/clap-rs/clap/issues/2836)
+//! * **unstable-grouped**: Enable [`ArgMatches::grouped_values_of`](https://github.com/clap-rs/clap/issues/2924)
+//! * **unstable-v4**: Preview features which will be stable on the v4.0 release
diff --git a/vendor/clap-3.2.20/src/_tutorial.rs b/vendor/clap-3.2.20/src/_tutorial.rs
new file mode 100644
index 000000000..9dbfc6864
--- /dev/null
+++ b/vendor/clap-3.2.20/src/_tutorial.rs
@@ -0,0 +1,204 @@
+// Contributing
+//
+// New example code:
+// - Please update the corresponding section in the derive tutorial
+// - Building: They must be added to `Cargo.toml` with the appropriate `required-features`.
+// - Testing: Ensure there is a markdown file with [trycmd](https://docs.rs/trycmd) syntax
+//
+// See also the general CONTRIBUTING
+
+//! # Documentation: Builder Tutorial
+//!
+//! 1. [Quick Start](#quick-start)
+//! 2. [Configuring the Parser](#configuring-the-parser)
+//! 3. [Adding Arguments](#adding-arguments)
+//! 1. [Positionals](#positionals)
+//! 2. [Options](#options)
+//! 3. [Flags](#flags)
+//! 4. [Subcommands](#subcommands)
+//! 5. [Defaults](#defaults)
+//! 4. Validation
+//! 1. [Enumerated values](#enumerated-values)
+//! 2. [Validated values](#validated-values)
+//! 3. [Argument Relations](#argument-relations)
+//! 4. [Custom Validation](#custom-validation)
+//! 5. [Testing](#testing)
+//!
+//! See also
+//! - [FAQ: When should I use the builder vs derive APIs?][crate::_faq#when-should-i-use-the-builder-vs-derive-apis]
+//! - The [cookbook][crate::_cookbook] for more application-focused examples
+//!
+//! ## Quick Start
+//!
+//! You can create an application with several arguments using usage strings.
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/01_quick.rs")]
+//! ```
+//!
+#![doc = include_str!("../examples/tutorial_builder/01_quick.md")]
+//!
+//! ## Configuring the Parser
+//!
+//! You use [`Command`][crate::Command] to start building a parser.
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/02_apps.rs")]
+//! ```
+//!
+#![doc = include_str!("../examples/tutorial_builder/02_apps.md")]
+//!
+//! You can use [`command!()`][crate::command!] to fill these fields in from your `Cargo.toml`
+//! file. **This requires the [`cargo` feature flag][crate::_features].**
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/02_crate.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/02_crate.md")]
+//!
+//! You can use [`Command`][crate::Command] methods to change the application level behavior of
+//! clap.
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/02_app_settings.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/02_app_settings.md")]
+//!
+//! ## Adding Arguments
+//!
+//! ### Positionals
+//!
+//! You can have users specify values by their position on the command-line:
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/03_03_positional.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/03_03_positional.md")]
+//!
+//! ### Options
+//!
+//! You can name your arguments with a flag:
+//! - Order doesn't matter
+//! - They can be optional
+//! - Intent is clearer
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/03_02_option.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/03_02_option.md")]
+//!
+//! ### Flags
+//!
+//! Flags can also be switches that can be on/off:
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/03_01_flag_bool.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/03_01_flag_bool.md")]
+//!
+//! Or counted.
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/03_01_flag_count.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/03_01_flag_count.md")]
+//!
+//! ### Subcommands
+//!
+//! Subcommands are defined as [`Command`][crate::Command]s that get added via
+//! [`Command::subcommand`][crate::Command::subcommand]. Each instance of a Subcommand can have its
+//! own version, author(s), Args, and even its own subcommands.
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/03_04_subcommands.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/03_04_subcommands.md")]
+//!
+//! ### Defaults
+//!
+//! We've previously showed that arguments can be [`required`][crate::Arg::required] or optional.
+//! When optional, you work with a `Option` and can `unwrap_or`. Alternatively, you can set
+//! [`Arg::default_value`][crate::Arg::default_value].
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/03_05_default_values.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/03_05_default_values.md")]
+//!
+//! ## Validation
+//!
+//! ### Enumerated values
+//!
+//! If you have arguments of specific values you want to test for, you can use the
+//! [`PossibleValuesParser`][crate::builder::PossibleValuesParser] or [`Arg::value_parser(["val1",
+//! ...])`][crate::Arg::value_parser] for short.
+//!
+//! This allows you specify the valid values for that argument. If the user does not use one of
+//! those specific values, they will receive a graceful exit with error message informing them
+//! of the mistake, and what the possible valid values are
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/04_01_possible.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/04_01_possible.md")]
+//!
+//! When enabling the [`derive` feature][crate::_features], you can use
+//! [`ValueEnum`][crate::ValueEnum] to take care of the boiler plate for you, giving the same
+//! results.
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/04_01_enum.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/04_01_enum.md")]
+//!
+//! ### Validated values
+//!
+//! More generally, you can validate and parse into any data type.
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/04_02_parse.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/04_02_parse.md")]
+//!
+//! A custom parser can be used to improve the error messages or provide additional validation:
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/04_02_validate.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/04_02_validate.md")]
+//!
+//! ### Argument Relations
+//!
+//! You can declare dependencies or conflicts between [`Arg`][crate::Arg]s or even
+//! [`ArgGroup`][crate::ArgGroup]s.
+//!
+//! [`ArgGroup`][crate::ArgGroup]s make it easier to declare relations instead of having to list
+//! each individually, or when you want a rule to apply "any but not all" arguments.
+//!
+//! Perhaps the most common use of [`ArgGroup`][crate::ArgGroup]s is to require one and *only* one
+//! argument to be present out of a given set. Imagine that you had multiple arguments, and you
+//! want one of them to be required, but making all of them required isn't feasible because perhaps
+//! they conflict with each other.
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/04_03_relations.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/04_03_relations.md")]
+//!
+//! ### Custom Validation
+//!
+//! As a last resort, you can create custom errors with the basics of clap's formatting.
+//!
+//! ```rust
+#![doc = include_str!("../examples/tutorial_builder/04_04_custom.rs")]
+//! ```
+#![doc = include_str!("../examples/tutorial_builder/04_04_custom.md")]
+//!
+//! ## Testing
+//!
+//! clap reports most development errors as `debug_assert!`s. Rather than checking every
+//! subcommand, you should have a test that calls
+//! [`Command::debug_assert`][crate::App::debug_assert]:
+//! ```rust,no_run
+#![doc = include_str!("../examples/tutorial_builder/05_01_assert.rs")]
+//! ```
diff --git a/vendor/clap/src/bin/stdio-fixture.rs b/vendor/clap-3.2.20/src/bin/stdio-fixture.rs
index e3f34b41a..e3f34b41a 100644
--- a/vendor/clap/src/bin/stdio-fixture.rs
+++ b/vendor/clap-3.2.20/src/bin/stdio-fixture.rs
diff --git a/vendor/clap/src/builder/action.rs b/vendor/clap-3.2.20/src/builder/action.rs
index ab3314290..71a91a8b1 100644
--- a/vendor/clap/src/builder/action.rs
+++ b/vendor/clap-3.2.20/src/builder/action.rs
@@ -183,16 +183,16 @@ pub enum ArgAction {
/// assert!(matches.contains_id("flag"));
/// assert_eq!(matches.occurrences_of("flag"), 0);
/// assert_eq!(
- /// matches.get_one::<u8>("flag").copied(),
- /// Some(2)
+ /// matches.get_count("flag"),
+ /// 2
/// );
///
/// let matches = cmd.try_get_matches_from(["mycmd"]).unwrap();
/// assert!(matches.contains_id("flag"));
/// assert_eq!(matches.occurrences_of("flag"), 0);
/// assert_eq!(
- /// matches.get_one::<u8>("flag").copied(),
- /// Some(0)
+ /// matches.get_count("flag"),
+ /// 0
/// );
/// ```
Count,
diff --git a/vendor/clap/src/builder/app_settings.rs b/vendor/clap-3.2.20/src/builder/app_settings.rs
index e2d9ba6b1..88bc243c4 100644
--- a/vendor/clap/src/builder/app_settings.rs
+++ b/vendor/clap-3.2.20/src/builder/app_settings.rs
@@ -400,23 +400,20 @@ pub enum AppSettings {
)]
NoAutoVersion,
- /// Deprecated, replaced with [`AppSettings::AllowHyphenValues`]
+ /// Deprecated, replaced with [`Command::allow_hyphen_values`]
#[cfg_attr(
feature = "deprecated",
- deprecated(
- since = "3.0.0",
- note = "Replaced with `AppSettings::AllowHyphenValues`"
- )
+ deprecated(since = "3.0.0", note = "Replaced with `Command::allow_hyphen_values`")
)]
#[doc(hidden)]
AllowLeadingHyphen,
- /// Deprecated, this is now the default, see [`AppSettings::AllowInvalidUtf8ForExternalSubcommands`] and [`ArgSettings::AllowInvalidUtf8`][crate::ArgSettings::AllowInvalidUtf8] for the opposite.
+ /// Deprecated, replaced with [`Command::allow_invalid_utf8_for_external_subcommands`] and [`Command::is_allow_invalid_utf8_for_external_subcommands_set`]
#[cfg_attr(
feature = "deprecated",
deprecated(
since = "3.0.0",
- note = "This is now the default see `AppSettings::AllowInvalidUtf8ForExternalSubcommands` and `ArgSettings::AllowInvalidUtf8` for the opposite."
+ note = "Replaced with `Command::allow_invalid_utf8_for_external_subcommands` and `Command::is_allow_invalid_utf8_for_external_subcommands_set`"
)
)]
#[doc(hidden)]
@@ -462,42 +459,47 @@ pub enum AppSettings {
#[doc(hidden)]
ColorNever,
- /// Deprecated, replaced with [`AppSettings::DisableHelpFlag`]
+ /// Deprecated, replaced with [`Command::disable_help_flag`] and [`Command::is_disable_help_flag_set`]
#[cfg_attr(
feature = "deprecated",
- deprecated(since = "3.0.0", note = "Replaced with `AppSettings::DisableHelpFlag`")
+ deprecated(
+ since = "3.0.0",
+ note = "Replaced with `Command::disable_help_flag` and `Command::is_disable_help_flag_set`"
+ )
)]
#[doc(hidden)]
DisableHelpFlags,
- /// Deprecated, replaced with [`AppSettings::DisableVersionFlag`]
+ /// Deprecated, replaced with [`Command::disable_version_flag`] and
+ /// [`Command::is_disable_version_flag_set`]
#[cfg_attr(
feature = "deprecated",
deprecated(
since = "3.0.0",
- note = "Replaced with `AppSettings::DisableVersionFlag`"
+ note = "Replaced with `Command::disable_version_flag` and `Command::is_disable_version_flag_set`"
)
)]
#[doc(hidden)]
DisableVersion,
- /// Deprecated, replaced with [`AppSettings::PropagateVersion`]
+ /// Deprecated, replaced with [`Command::propagate_version`] and [`Command::is_propagate_version_set`]
#[cfg_attr(
feature = "deprecated",
deprecated(
since = "3.0.0",
- note = "Replaced with `AppSettings::PropagateVersion`"
+ note = "Replaced with `Command::propagate_version` and `Command::is_propagate_version_set`"
)
)]
#[doc(hidden)]
GlobalVersion,
- /// Deprecated, replaced with [`AppSettings::HidePossibleValues`]
+ /// Deprecated, replaced with [`Command::hide_possible_values`] and
+ /// [`Arg::is_hide_possible_values_set`]
#[cfg_attr(
feature = "deprecated",
deprecated(
since = "3.0.0",
- note = "Replaced with AppSettings::HidePossibleValues"
+ note = "Replaced with `Command::hide_possible_values` and `Arg::is_hide_possible_values_set`"
)
)]
#[doc(hidden)]
diff --git a/vendor/clap/src/builder/arg.rs b/vendor/clap-3.2.20/src/builder/arg.rs
index 63e88e80e..e9403d0b7 100644
--- a/vendor/clap/src/builder/arg.rs
+++ b/vendor/clap-3.2.20/src/builder/arg.rs
@@ -4316,6 +4316,16 @@ impl<'help> Arg<'help> {
}
}
+ /// Get *all* short aliases for this argument, if any, both visible and hidden.
+ #[inline]
+ pub fn get_all_short_aliases(&self) -> Option<Vec<char>> {
+ if self.short_aliases.is_empty() {
+ None
+ } else {
+ Some(self.short_aliases.iter().map(|(s, _)| s).copied().collect())
+ }
+ }
+
/// Get the short option name and its visible aliases, if any
#[inline]
pub fn get_short_and_visible_aliases(&self) -> Option<Vec<char>> {
@@ -4351,6 +4361,16 @@ impl<'help> Arg<'help> {
}
}
+ /// Get *all* aliases for this argument, if any, both visible and hidden.
+ #[inline]
+ pub fn get_all_aliases(&self) -> Option<Vec<&'help str>> {
+ if self.aliases.is_empty() {
+ None
+ } else {
+ Some(self.aliases.iter().map(|(s, _)| s).copied().collect())
+ }
+ }
+
/// Get the long option name and its visible aliases, if any
#[inline]
pub fn get_long_and_visible_aliases(&self) -> Option<Vec<&'help str>> {
diff --git a/vendor/clap/src/builder/arg_group.rs b/vendor/clap-3.2.20/src/builder/arg_group.rs
index 0fe317109..0fe317109 100644
--- a/vendor/clap/src/builder/arg_group.rs
+++ b/vendor/clap-3.2.20/src/builder/arg_group.rs
diff --git a/vendor/clap/src/builder/arg_predicate.rs b/vendor/clap-3.2.20/src/builder/arg_predicate.rs
index 58eb5494c..58eb5494c 100644
--- a/vendor/clap/src/builder/arg_predicate.rs
+++ b/vendor/clap-3.2.20/src/builder/arg_predicate.rs
diff --git a/vendor/clap/src/builder/arg_settings.rs b/vendor/clap-3.2.20/src/builder/arg_settings.rs
index 3b7faf7bf..ecc064caa 100644
--- a/vendor/clap/src/builder/arg_settings.rs
+++ b/vendor/clap-3.2.20/src/builder/arg_settings.rs
@@ -50,14 +50,10 @@ pub enum ArgSettings {
)
)]
MultipleValues,
- /// Deprecated, replaced with [`Arg::multiple_occurrences`] and
- /// [`Arg::is_multiple_occurrences_set`]
+ /// Deprecated, replaced with [`Arg::action`] ([Issue #3772](https://github.com/clap-rs/clap/issues/3772))
#[cfg_attr(
feature = "deprecated",
- deprecated(
- since = "3.1.0",
- note = "Replaced with `Arg::multiple_occurrences` and `Arg::is_multiple_occurrences_set`"
- )
+ deprecated(since = "3.1.0", note = "Replaced with `Arg::action` (Issue #3772)")
)]
MultipleOccurrences,
/// Deprecated, see [`ArgSettings::MultipleOccurrences`] (most likely what you want) and
@@ -66,18 +62,17 @@ pub enum ArgSettings {
feature = "deprecated",
deprecated(
since = "3.0.0",
- note = "Split into `ArgSettings::MultipleOccurrences` (most likely what you want) and `ArgSettings::MultipleValues`"
+ note = "Split into `Arg::multiple_occurrences` (most likely what you want) and `Arg::multiple_values`"
)
)]
#[doc(hidden)]
Multiple,
- /// Deprecated, replaced with [`Arg::forbid_empty_values`] and
- /// [`Arg::is_forbid_empty_values_set`]
+ /// Deprecated, replaced with [`Arg::value_parser(NonEmptyStringValueParser::new())`]
#[cfg_attr(
feature = "deprecated",
deprecated(
since = "3.1.0",
- note = "Replaced with `Arg::forbid_empty_values` and `Arg::is_forbid_empty_values_set`"
+ note = "Replaced with `Arg::value_parser(NonEmptyStringValueParser::new())`"
)
)]
ForbidEmptyValues,
@@ -157,12 +152,13 @@ pub enum ArgSettings {
)
)]
AllowHyphenValues,
- /// Deprecated, replaced with [`ArgSettings::AllowHyphenValues`]
+ /// Deprecated, replaced with [`Arg::allow_hyphen_values`] and
+ /// [`Arg::is_allow_hyphen_values_set`]
#[cfg_attr(
feature = "deprecated",
deprecated(
since = "3.0.0",
- note = "Replaced with `ArgSettings::AllowHyphenValues`"
+ note = "Replaced with `Arg::allow_hyphen_values` and `Arg::is_allow_hyphen_values_set`"
)
)]
#[doc(hidden)]
@@ -203,10 +199,13 @@ pub enum ArgSettings {
)
)]
IgnoreCase,
- /// Deprecated, replaced with [`ArgSettings::IgnoreCase`]
+ /// Deprecated, replaced with [`Arg::ignore_case`] and [`Arg::is_ignore_case_set`]
#[cfg_attr(
feature = "deprecated",
- deprecated(since = "3.0.0", note = "Replaced with `ArgSettings::IgnoreCase`")
+ deprecated(
+ since = "3.0.0",
+ note = "Replaced with `Arg::ignore_case` and `Arg::is_ignore_case_set`"
+ )
)]
#[doc(hidden)]
CaseInsensitive,
diff --git a/vendor/clap/src/builder/command.rs b/vendor/clap-3.2.20/src/builder/command.rs
index 1fcb64ecc..de59ad8cd 100644
--- a/vendor/clap/src/builder/command.rs
+++ b/vendor/clap-3.2.20/src/builder/command.rs
@@ -274,6 +274,50 @@ impl<'help> App<'help> {
self
}
+ /// Allows one to mutate a [`Command`] after it's been added as a subcommand.
+ ///
+ /// This can be useful for modifying auto-generated arguments of nested subcommands with
+ /// [`Command::mut_arg`].
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// # use clap::Command;
+ ///
+ /// let mut cmd = Command::new("foo")
+ /// .subcommand(Command::new("bar"))
+ /// .mut_subcommand("bar", |subcmd| subcmd.disable_help_flag(true));
+ ///
+ /// let res = cmd.try_get_matches_from_mut(vec!["foo", "bar", "--help"]);
+ ///
+ /// // Since we disabled the help flag on the "bar" subcommand, this should err.
+ ///
+ /// assert!(res.is_err());
+ ///
+ /// let res = cmd.try_get_matches_from_mut(vec!["foo", "bar"]);
+ /// assert!(res.is_ok());
+ /// ```
+ #[must_use]
+ pub fn mut_subcommand<'a, T, F>(mut self, subcmd_id: T, f: F) -> Self
+ where
+ F: FnOnce(App<'help>) -> App<'help>,
+ T: Into<&'a str>,
+ {
+ let subcmd_id: &str = subcmd_id.into();
+ let id = Id::from(subcmd_id);
+
+ let pos = self.subcommands.iter().position(|s| s.id == id);
+
+ let subcmd = if let Some(idx) = pos {
+ self.subcommands.remove(idx)
+ } else {
+ App::new(subcmd_id)
+ };
+
+ self.subcommands.push(f(subcmd));
+ self
+ }
+
/// Adds an [`ArgGroup`] to the application.
///
/// [`ArgGroup`]s are a family of related arguments.
@@ -700,7 +744,7 @@ impl<'help> App<'help> {
/// [`io::stdout()`]: std::io::stdout()
pub fn print_help(&mut self) -> io::Result<()> {
self._build_self();
- let color = self.get_color();
+ let color = self.color_help();
let mut c = Colorizer::new(Stream::Stdout, color);
let usage = Usage::new(self);
@@ -725,7 +769,7 @@ impl<'help> App<'help> {
/// [`--help` (long)]: Arg::long_help()
pub fn print_long_help(&mut self) -> io::Result<()> {
self._build_self();
- let color = self.get_color();
+ let color = self.color_help();
let mut c = Colorizer::new(Stream::Stdout, color);
let usage = Usage::new(self);
@@ -1604,6 +1648,14 @@ impl<'help> App<'help> {
/// strings. After this setting is set, this will be *the only* usage string
/// displayed to the user!
///
+ /// **NOTE:** Multiple usage lines may be present in the usage argument, but
+ /// some rules need to be followed to ensure the usage lines are formatted
+ /// correctly by the default help formatter:
+ ///
+ /// - Do not indent the first usage line.
+ /// - Indent all subsequent usage lines with four spaces.
+ /// - The last line must not end with a newline.
+ ///
/// # Examples
///
/// ```no_run
@@ -1612,6 +1664,20 @@ impl<'help> App<'help> {
/// .override_usage("myapp [-clDas] <some_file>")
/// # ;
/// ```
+ ///
+ /// Or for multiple usage lines:
+ ///
+ /// ```no_run
+ /// # use clap::{Command, Arg};
+ /// Command::new("myprog")
+ /// .override_usage(
+ /// "myapp -X [-a] [-b] <file>\n \
+ /// myapp -Y [-c] <file1> <file2>\n \
+ /// myapp -Z [-d|-e]"
+ /// )
+ /// # ;
+ /// ```
+ ///
/// [`ArgMatches::usage`]: ArgMatches::usage()
#[must_use]
pub fn override_usage<S: Into<&'help str>>(mut self, usage: S) -> Self {
@@ -3512,15 +3578,21 @@ impl<'help> App<'help> {
if arg.is_global_set() {
self.get_global_arg_conflicts_with(arg)
} else {
- arg.blacklist
- .iter()
- .map(|id| {
- self.args.args().find(|arg| arg.id == *id).expect(
- "Command::get_arg_conflicts_with: \
- The passed arg conflicts with an arg unknown to the cmd",
- )
- })
- .collect()
+ let mut result = Vec::new();
+ for id in arg.blacklist.iter() {
+ if let Some(arg) = self.find(id) {
+ result.push(arg);
+ } else if let Some(group) = self.find_group(id) {
+ result.extend(
+ self.unroll_args_in_group(&group.id)
+ .iter()
+ .map(|id| self.find(id).expect(INTERNAL_ERROR_MSG)),
+ );
+ } else {
+ panic!("Command::get_arg_conflicts_with: The passed arg conflicts with an arg unknown to the cmd");
+ }
+ }
+ result
}
}
@@ -4264,7 +4336,8 @@ impl<'help> App<'help> {
use std::fmt::Write;
let mut mid_string = String::from(" ");
- if !self.is_subcommand_negates_reqs_set() {
+ if !self.is_subcommand_negates_reqs_set() && !self.is_args_conflicts_with_subcommands_set()
+ {
let reqs = Usage::new(self).get_required_usage_from(&[], None, true); // maybe Some(m)
for s in &reqs {
@@ -4347,7 +4420,9 @@ impl<'help> App<'help> {
if !self.is_set(AppSettings::BinNameBuilt) {
let mut mid_string = String::from(" ");
- if !self.is_subcommand_negates_reqs_set() {
+ if !self.is_subcommand_negates_reqs_set()
+ && !self.is_args_conflicts_with_subcommands_set()
+ {
let reqs = Usage::new(self).get_required_usage_from(&[], None, true); // maybe Some(m)
for s in &reqs {
@@ -5107,3 +5182,8 @@ where
_ => None,
}
}
+
+#[test]
+fn check_auto_traits() {
+ static_assertions::assert_impl_all!(Command: Send, Sync, Unpin);
+}
diff --git a/vendor/clap/src/builder/debug_asserts.rs b/vendor/clap-3.2.20/src/builder/debug_asserts.rs
index 864b8b479..864b8b479 100644
--- a/vendor/clap/src/builder/debug_asserts.rs
+++ b/vendor/clap-3.2.20/src/builder/debug_asserts.rs
diff --git a/vendor/clap/src/builder/macros.rs b/vendor/clap-3.2.20/src/builder/macros.rs
index 5be4d205e..5be4d205e 100644
--- a/vendor/clap/src/builder/macros.rs
+++ b/vendor/clap-3.2.20/src/builder/macros.rs
diff --git a/vendor/clap/src/builder/mod.rs b/vendor/clap-3.2.20/src/builder/mod.rs
index 4f24c74d3..4f24c74d3 100644
--- a/vendor/clap/src/builder/mod.rs
+++ b/vendor/clap-3.2.20/src/builder/mod.rs
diff --git a/vendor/clap/src/builder/possible_value.rs b/vendor/clap-3.2.20/src/builder/possible_value.rs
index 1c14217a6..1c14217a6 100644
--- a/vendor/clap/src/builder/possible_value.rs
+++ b/vendor/clap-3.2.20/src/builder/possible_value.rs
diff --git a/vendor/clap/src/builder/regex.rs b/vendor/clap-3.2.20/src/builder/regex.rs
index bf3a78e0c..bf3a78e0c 100644
--- a/vendor/clap/src/builder/regex.rs
+++ b/vendor/clap-3.2.20/src/builder/regex.rs
diff --git a/vendor/clap/src/builder/tests.rs b/vendor/clap-3.2.20/src/builder/tests.rs
index 76c8b8785..76c8b8785 100644
--- a/vendor/clap/src/builder/tests.rs
+++ b/vendor/clap-3.2.20/src/builder/tests.rs
diff --git a/vendor/clap/src/builder/usage_parser.rs b/vendor/clap-3.2.20/src/builder/usage_parser.rs
index 85d0d304e..85d0d304e 100644
--- a/vendor/clap/src/builder/usage_parser.rs
+++ b/vendor/clap-3.2.20/src/builder/usage_parser.rs
diff --git a/vendor/clap/src/builder/value_hint.rs b/vendor/clap-3.2.20/src/builder/value_hint.rs
index 7c35d1eb3..7c35d1eb3 100644
--- a/vendor/clap/src/builder/value_hint.rs
+++ b/vendor/clap-3.2.20/src/builder/value_hint.rs
diff --git a/vendor/clap/src/builder/value_parser.rs b/vendor/clap-3.2.20/src/builder/value_parser.rs
index 397537c9f..0492f2782 100644
--- a/vendor/clap/src/builder/value_parser.rs
+++ b/vendor/clap-3.2.20/src/builder/value_parser.rs
@@ -12,7 +12,7 @@ use crate::parser::AnyValueId;
/// use within an application.
///
/// See
-/// - [`value_parser!`] for automatically selecting an implementation for a given type
+/// - [`value_parser!`][crate::value_parser] for automatically selecting an implementation for a given type
/// - [`ValueParser::new`] for additional [`TypedValueParser`] that can be used
///
/// # Example
diff --git a/vendor/clap/src/derive.rs b/vendor/clap-3.2.20/src/derive.rs
index bfb7bdfa2..b6ac04df6 100644
--- a/vendor/clap/src/derive.rs
+++ b/vendor/clap-3.2.20/src/derive.rs
@@ -19,11 +19,9 @@ use std::ffi::OsString;
///
/// See also [`Subcommand`] and [`Args`].
///
-/// See the
-/// [derive reference](https://github.com/clap-rs/clap/blob/v3.2.5/examples/derive_ref/README.md)
-/// for attributes and best practices.
+/// See the [derive reference](crate::_derive) for attributes and best practices.
///
-/// **NOTE:** Deriving requires the `derive` feature flag
+/// **NOTE:** Deriving requires the [`derive` feature flag][crate::_features]
///
/// # Examples
///
@@ -156,13 +154,13 @@ pub trait Parser: FromArgMatches + CommandFactory + Sized {
.map_err(format_error::<Self>)
}
- /// Deprecated, `StructOpt::clap` replaced with [`IntoCommand::command`] (derive as part of
+ /// Deprecated, `StructOpt::clap` replaced with [`CommandFactory::command`] (derive as part of
/// [`Parser`])
#[cfg_attr(
feature = "deprecated",
deprecated(
since = "3.0.0",
- note = "`StructOpt::clap` is replaced with `IntoCommand::command` (derived as part of `Parser`)"
+ note = "`StructOpt::clap` is replaced with `CommandFactory::command` (derived as part of `Parser`)"
)
)]
#[doc(hidden)]
@@ -372,11 +370,9 @@ pub trait FromArgMatches: Sized {
/// `Args`.
/// - `Variant(ChildArgs)`: No attribute is used with enum variants that impl `Args`.
///
-/// See the
-/// [derive reference](https://github.com/clap-rs/clap/blob/v3.2.5/examples/derive_ref/README.md)
-/// for attributes and best practices.
+/// See the [derive reference](crate::_derive) for attributes and best practices.
///
-/// **NOTE:** Deriving requires the `derive` feature flag
+/// **NOTE:** Deriving requires the [`derive` feature flag][crate::_features]
///
/// # Example
///
@@ -416,11 +412,9 @@ pub trait Args: FromArgMatches + Sized {
/// - `#[clap(flatten)] Variant(SubCmd)`: Attribute can only be used with enum variants that impl
/// `Subcommand`.
///
-/// See the
-/// [derive reference](https://github.com/clap-rs/clap/blob/v3.2.5/examples/derive_ref/README.md)
-/// for attributes and best practices.
+/// See the [derive reference](crate::_derive) for attributes and best practices.
///
-/// **NOTE:** Deriving requires the `derive` feature flag
+/// **NOTE:** Deriving requires the [`derive` feature flag][crate::_features]
///
/// # Example
///
@@ -460,11 +454,9 @@ pub trait Subcommand: FromArgMatches + Sized {
/// - Call [`Arg::possible_values`][crate::Arg::possible_values]
/// - Allowing using the `#[clap(default_value_t)]` attribute without implementing `Display`.
///
-/// See the
-/// [derive reference](https://github.com/clap-rs/clap/blob/v3.2.5/examples/derive_ref/README.md)
-/// for attributes and best practices.
+/// See the [derive reference](crate::_derive) for attributes and best practices.
///
-/// **NOTE:** Deriving requires the `derive` feature flag
+/// **NOTE:** Deriving requires the [`derive` feature flag][crate::_features]
///
/// # Example
///
diff --git a/vendor/clap/src/error/context.rs b/vendor/clap-3.2.20/src/error/context.rs
index 985cd4d70..985cd4d70 100644
--- a/vendor/clap/src/error/context.rs
+++ b/vendor/clap-3.2.20/src/error/context.rs
diff --git a/vendor/clap/src/error/kind.rs b/vendor/clap-3.2.20/src/error/kind.rs
index 21256609a..4c3dc48b0 100644
--- a/vendor/clap/src/error/kind.rs
+++ b/vendor/clap-3.2.20/src/error/kind.rs
@@ -407,7 +407,7 @@ impl ErrorKind {
Self::UnrecognizedSubcommand => Some("A subcommand wasn't recognized"),
Self::EmptyValue => Some("An argument requires a value but none was supplied"),
Self::NoEquals => Some("Equal is needed when assigning values to one of the arguments"),
- Self::ValueValidation => Some("Invalid for for one of the arguments"),
+ Self::ValueValidation => Some("Invalid value for one of the arguments"),
Self::TooManyValues => Some("An argument received an unexpected value"),
Self::TooFewValues => Some("An argument requires more values"),
Self::TooManyOccurrences => Some("An argument occurred too many times"),
diff --git a/vendor/clap/src/error/mod.rs b/vendor/clap-3.2.20/src/error/mod.rs
index df9a84c56..fbd2b30a8 100644
--- a/vendor/clap/src/error/mod.rs
+++ b/vendor/clap-3.2.20/src/error/mod.rs
@@ -1147,12 +1147,7 @@ impl Display for Backtrace {
}
}
-#[cfg(test)]
-mod tests {
- /// Check `clap::Error` impls Send and Sync.
- mod clap_error_impl_send_sync {
- use crate::Error;
- trait Foo: std::error::Error + Send + Sync + 'static {}
- impl Foo for Error {}
- }
+#[test]
+fn check_auto_traits() {
+ static_assertions::assert_impl_all!(Error: Send, Sync, Unpin);
}
diff --git a/vendor/clap/src/lib.rs b/vendor/clap-3.2.20/src/lib.rs
index d9a97715f..5cefe6ec1 100644
--- a/vendor/clap/src/lib.rs
+++ b/vendor/clap-3.2.20/src/lib.rs
@@ -3,10 +3,79 @@
// (see LICENSE or <http://opensource.org/licenses/MIT>) All files in the project carrying such
// notice may not be copied, modified, or distributed except according to those terms.
+//! > **Command Line Argument Parser for Rust**
+//!
+//! Quick Links:
+//! - Derive [tutorial][_derive::_tutorial] and [reference][_derive]
+//! - Builder [tutorial][_tutorial] and [reference](index.html)
+//! - [Cookbook][_cookbook]
+//! - [FAQ][_faq]
+//! - [Discussions](https://github.com/clap-rs/clap/discussions)
+//!
+//! ## Aspirations
+//!
+//! - Out of the box, users get a polished CLI experience
+//! - Including common argument behavior, help generation, suggested fixes for users, colored output, [shell completions](https://github.com/clap-rs/clap/tree/master/clap_complete), etc
+//! - Flexible enough to port your existing CLI interface
+//! - However, we won't necessarily streamline support for each use case
+//! - Reasonable parse performance
+//! - Resilient maintainership, including
+//! - Willing to break compatibility rather than batching up breaking changes in large releases
+//! - Leverage feature flags to keep to one active branch
+//! - Being under [WG-CLI](https://github.com/rust-cli/team/) to increase the bus factor
+//! - We follow semver and will wait about 6-9 months between major breaking changes
+//! - We will support the last two minor Rust releases (MSRV, currently 1.56.1)
+//!
+//! While these aspirations can be at odds with fast build times and low binary
+//! size, we will still strive to keep these reasonable for the flexibility you
+//! get. Check out the
+//! [argparse-benchmarks](https://github.com/rust-cli/argparse-benchmarks-rs) for
+//! CLI parsers optimized for other use cases.
+//!
+//! ## Example
+//!
+//! Run
+//! ```console
+//! $ cargo add clap --features derive
+//! ```
+//! *(See also [feature flag reference][_features])*
+//!
+//! Then define your CLI in `main.rs`:
+#![cfg_attr(not(feature = "derive"), doc = " ```ignore")]
+#![cfg_attr(feature = "derive", doc = " ```no_run")]
+#![doc = include_str!("../examples/demo.rs")]
+//! ```
+//!
+//! And try it out:
+#![doc = include_str!("../examples/demo.md")]
+//!
+//! See also the derive [tutorial][_derive::_tutorial] and [reference][_derive]
+//!
+//! ### Related Projects
+//!
+//! Augment clap:
+//! - [wild](https://crates.io/crates/wild) for supporting wildcards (`*`) on Windows like you do Linux
+//! - [argfile](https://crates.io/crates/argfile) for loading additional arguments from a file (aka response files)
+//! - [shadow-rs](https://crates.io/crates/shadow-rs) for generating `Command::long_version`
+//! - [clap_mangen](https://crates.io/crates/clap_mangen) for generating man page source (roff)
+//! - [clap_complete](https://crates.io/crates/clap_complete) for shell completion support
+//!
+//! CLI Helpers
+//! - [clap-verbosity-flag](https://crates.io/crates/clap-verbosity-flag)
+//! - [clap-cargo](https://crates.io/crates/clap-cargo)
+//! - [concolor-clap](https://crates.io/crates/concolor-clap)
+//!
+//! Testing
+//! - [`trycmd`](https://crates.io/crates/trycmd): Bulk snapshot testing
+//! - [`snapbox`](https://crates.io/crates/snapbox): Specialized snapshot testing
+//! - [`assert_cmd`](https://crates.io/crates/assert_cmd) and [`assert_fs`](https://crates.io/crates/assert_fs): Customized testing
+//!
+//! Documentation:
+//! - [Command-line Apps for Rust](https://rust-cli.github.io/book/index.html) book
+//!
+
#![cfg_attr(docsrs, feature(doc_auto_cfg))]
#![doc(html_logo_url = "https://raw.githubusercontent.com/clap-rs/clap/master/assets/clap.png")]
-#![cfg_attr(feature = "derive", doc = include_str!("../README.md"))]
-//! <https://github.com/clap-rs/clap>
#![warn(
missing_docs,
missing_debug_implementations,
@@ -82,9 +151,23 @@ pub use Parser as StructOpt;
)]
pub use ValueEnum as ArgEnum;
-#[cfg(any(feature = "derive", feature = "cargo"))]
+#[cfg(feature = "unstable-doc")]
+pub mod _cookbook;
+#[cfg(feature = "unstable-doc")]
+pub mod _derive;
+#[cfg(feature = "unstable-doc")]
+pub mod _faq;
+#[cfg(feature = "unstable-doc")]
+pub mod _features;
+#[cfg(feature = "unstable-doc")]
+pub mod _tutorial;
+
#[doc(hidden)]
-pub use once_cell;
+pub mod __macro_refs {
+ #[cfg(any(feature = "derive", feature = "cargo"))]
+ #[doc(hidden)]
+ pub use once_cell;
+}
#[macro_use]
#[allow(missing_docs)]
diff --git a/vendor/clap/src/macros.rs b/vendor/clap-3.2.20/src/macros.rs
index 0b671a37a..1f9167408 100644
--- a/vendor/clap/src/macros.rs
+++ b/vendor/clap-3.2.20/src/macros.rs
@@ -20,7 +20,7 @@ macro_rules! load_yaml {
#[macro_export]
#[cfg_attr(
feature = "deprecated",
- deprecated(since = "3.0.0", note = "Replaced with `ArgMatches::value_of_t`")
+ deprecated(since = "3.0.0", note = "Replaced with `ArgMatches::get_one`")
)]
#[doc(hidden)]
macro_rules! value_t {
@@ -36,10 +36,7 @@ macro_rules! value_t {
#[macro_export]
#[cfg_attr(
feature = "deprecated",
- deprecated(
- since = "3.0.0",
- note = "Replaced with `ArgMatches::value_of_t_or_exit`"
- )
+ deprecated(since = "3.0.0", note = "Replaced with `ArgMatches::get_one`")
)]
#[doc(hidden)]
macro_rules! value_t_or_exit {
@@ -55,7 +52,7 @@ macro_rules! value_t_or_exit {
#[macro_export]
#[cfg_attr(
feature = "deprecated",
- deprecated(since = "3.0.0", note = "Replaced with `ArgMatches::values_of_t`")
+ deprecated(since = "3.0.0", note = "Replaced with `ArgMatches::get_many`")
)]
#[doc(hidden)]
macro_rules! values_t {
@@ -71,10 +68,7 @@ macro_rules! values_t {
#[macro_export]
#[cfg_attr(
feature = "deprecated",
- deprecated(
- since = "3.0.0",
- note = "Replaced with `ArgMatches::values_of_t_or_exit`"
- )
+ deprecated(since = "3.0.0", note = "Replaced with `ArgMatches::get_many`")
)]
#[doc(hidden)]
macro_rules! values_t_or_exit {
@@ -88,7 +82,7 @@ macro_rules! values_t_or_exit {
#[cfg_attr(
feature = "deprecated",
- deprecated(since = "3.0.0", note = "Replaced with `ArgEnum`")
+ deprecated(since = "3.0.0", note = "Replaced with `ValueEnum`")
)]
#[doc(hidden)]
#[macro_export]
@@ -101,7 +95,7 @@ macro_rules! _clap_count_exprs {
/// Deprecated, replaced with [`ArgEnum`][crate::ArgEnum]
#[cfg_attr(
feature = "deprecated",
- deprecated(since = "3.0.0", note = "Replaced with `ArgEnum`")
+ deprecated(since = "3.0.0", note = "Replaced with `ValueEnum`")
)]
#[doc(hidden)]
#[macro_export]
@@ -256,8 +250,10 @@ macro_rules! crate_version {
#[macro_export]
macro_rules! crate_authors {
($sep:expr) => {{
- static CACHED: clap::once_cell::sync::Lazy<String> =
- clap::once_cell::sync::Lazy::new(|| env!("CARGO_PKG_AUTHORS").replace(':', $sep));
+ static CACHED: clap::__macro_refs::once_cell::sync::Lazy<String> =
+ clap::__macro_refs::once_cell::sync::Lazy::new(|| {
+ env!("CARGO_PKG_AUTHORS").replace(':', $sep)
+ });
let s: &'static str = &*CACHED;
s
diff --git a/vendor/clap/src/mkeymap.rs b/vendor/clap-3.2.20/src/mkeymap.rs
index 97ecdda77..97ecdda77 100644
--- a/vendor/clap/src/mkeymap.rs
+++ b/vendor/clap-3.2.20/src/mkeymap.rs
diff --git a/vendor/clap/src/output/fmt.rs b/vendor/clap-3.2.20/src/output/fmt.rs
index dc1f46e08..dc1f46e08 100644
--- a/vendor/clap/src/output/fmt.rs
+++ b/vendor/clap-3.2.20/src/output/fmt.rs
diff --git a/vendor/clap/src/output/help.rs b/vendor/clap-3.2.20/src/output/help.rs
index eb53bfa54..eb53bfa54 100644
--- a/vendor/clap/src/output/help.rs
+++ b/vendor/clap-3.2.20/src/output/help.rs
diff --git a/vendor/clap/src/output/mod.rs b/vendor/clap-3.2.20/src/output/mod.rs
index e32aac26a..e32aac26a 100644
--- a/vendor/clap/src/output/mod.rs
+++ b/vendor/clap-3.2.20/src/output/mod.rs
diff --git a/vendor/clap/src/output/usage.rs b/vendor/clap-3.2.20/src/output/usage.rs
index 7adaf58c6..6f7a2cad4 100644
--- a/vendor/clap/src/output/usage.rs
+++ b/vendor/clap-3.2.20/src/output/usage.rs
@@ -382,73 +382,64 @@ impl<'help, 'cmd> Usage<'help, 'cmd> {
unrolled_reqs
);
- let args_in_groups = self
- .cmd
- .get_groups()
- .filter(|gn| required.contains(&gn.id))
- .flat_map(|g| self.cmd.unroll_args_in_group(&g.id))
- .collect::<Vec<_>>();
-
- for a in unrolled_reqs
- .iter()
- .chain(incls.iter())
- .filter(|name| !self.cmd.get_positionals().any(|p| &&p.id == name))
- .filter(|name| !self.cmd.get_groups().any(|g| &&g.id == name))
- .filter(|name| !args_in_groups.contains(name))
- .filter(|name| {
- !(matcher.is_some()
- && matcher
- .as_ref()
- .unwrap()
- .check_explicit(name, ArgPredicate::IsPresent))
- })
- {
- debug!("Usage::get_required_usage_from:iter:{:?}", a);
- let arg = self.cmd.find(a).expect(INTERNAL_ERROR_MSG).to_string();
- ret_val.insert(arg);
- }
- let mut g_vec: Vec<String> = vec![];
- for g in unrolled_reqs
- .iter()
- .filter(|n| self.cmd.get_groups().any(|g| g.id == **n))
- {
- // don't print requirement for required groups that have an arg.
- if let Some(m) = matcher {
- let have_group_entry = self
- .cmd
- .unroll_args_in_group(g)
- .iter()
- .any(|arg| m.check_explicit(arg, ArgPredicate::IsPresent));
- if have_group_entry {
- continue;
+ let mut required_groups_members = IndexSet::new();
+ let mut required_opts = IndexSet::new();
+ let mut required_groups = IndexSet::new();
+ let mut required_positionals = Vec::new();
+ for req in unrolled_reqs.iter().chain(incls.iter()) {
+ if let Some(arg) = self.cmd.find(req) {
+ let is_present = matcher
+ .map(|m| m.check_explicit(req, ArgPredicate::IsPresent))
+ .unwrap_or(false);
+ debug!(
+ "Usage::get_required_usage_from:iter:{:?} arg is_present={}",
+ req, is_present
+ );
+ if !is_present {
+ if arg.is_positional() {
+ if incl_last || !arg.is_last_set() {
+ required_positionals.push((arg.index.unwrap(), arg.to_string()));
+ }
+ } else {
+ required_opts.insert(arg.to_string());
+ }
+ }
+ } else {
+ debug_assert!(self.cmd.find_group(req).is_some());
+ let group_members = self.cmd.unroll_args_in_group(req);
+ let is_present = matcher
+ .map(|m| {
+ group_members
+ .iter()
+ .any(|arg| m.check_explicit(arg, ArgPredicate::IsPresent))
+ })
+ .unwrap_or(false);
+ debug!(
+ "Usage::get_required_usage_from:iter:{:?} group is_present={}",
+ req, is_present
+ );
+ if !is_present {
+ let elem = self.cmd.format_group(req);
+ required_groups.insert(elem);
+ required_groups_members.extend(
+ group_members
+ .iter()
+ .flat_map(|id| self.cmd.find(id))
+ .map(|arg| arg.to_string()),
+ );
}
- }
-
- let elem = self.cmd.format_group(g);
- if !g_vec.contains(&elem) {
- g_vec.push(elem);
}
}
- ret_val.extend(g_vec);
- let mut pvec = unrolled_reqs
- .iter()
- .chain(incls.iter())
- .filter(|a| self.cmd.get_positionals().any(|p| &&p.id == a))
- .filter(|&pos| {
- matcher.map_or(true, |m| !m.check_explicit(pos, ArgPredicate::IsPresent))
- })
- .filter_map(|pos| self.cmd.find(pos))
- .filter(|&pos| incl_last || !pos.is_last_set())
- .filter(|pos| !args_in_groups.contains(&pos.id))
- .map(|pos| (pos.index.unwrap(), pos))
- .collect::<Vec<(usize, &Arg)>>();
- pvec.sort_by_key(|(ind, _)| *ind); // sort by index
-
- for (_, p) in pvec {
- debug!("Usage::get_required_usage_from:push:{:?}", p.id);
- if !args_in_groups.contains(&p.id) {
- ret_val.insert(p.to_string());
+ required_opts.retain(|arg| !required_groups_members.contains(arg));
+ ret_val.extend(required_opts);
+
+ ret_val.extend(required_groups);
+
+ required_positionals.sort_by_key(|(ind, _)| *ind); // sort by index
+ for (_, p) in required_positionals {
+ if !required_groups_members.contains(&p) {
+ ret_val.insert(p);
}
}
diff --git a/vendor/clap/src/parser/arg_matcher.rs b/vendor/clap-3.2.20/src/parser/arg_matcher.rs
index 8d15c5799..22087e722 100644
--- a/vendor/clap/src/parser/arg_matcher.rs
+++ b/vendor/clap-3.2.20/src/parser/arg_matcher.rs
@@ -74,9 +74,7 @@ impl ArgMatcher {
// a default value of `other` myprog would have an existing MatchedArg for
// `--global-arg` where the value is `other`
let to_update = if let Some(parent_ma) = vals_map.get(global_arg) {
- if parent_ma.check_explicit(ArgPredicate::IsPresent)
- && !ma.check_explicit(ArgPredicate::IsPresent)
- {
+ if parent_ma.source() > ma.source() {
parent_ma
} else {
ma
diff --git a/vendor/clap/src/parser/error.rs b/vendor/clap-3.2.20/src/parser/error.rs
index bdafa9ae5..caeba4b8f 100644
--- a/vendor/clap/src/parser/error.rs
+++ b/vendor/clap-3.2.20/src/parser/error.rs
@@ -54,3 +54,14 @@ impl std::fmt::Display for MatchesError {
}
}
}
+
+#[test]
+fn check_auto_traits() {
+ static_assertions::assert_impl_all!(
+ MatchesError: Send,
+ Sync,
+ std::panic::RefUnwindSafe,
+ std::panic::UnwindSafe,
+ Unpin
+ );
+}
diff --git a/vendor/clap/src/parser/features/mod.rs b/vendor/clap-3.2.20/src/parser/features/mod.rs
index bdeb766ec..bdeb766ec 100644
--- a/vendor/clap/src/parser/features/mod.rs
+++ b/vendor/clap-3.2.20/src/parser/features/mod.rs
diff --git a/vendor/clap/src/parser/features/suggestions.rs b/vendor/clap-3.2.20/src/parser/features/suggestions.rs
index 9e46f3c9e..9e46f3c9e 100644
--- a/vendor/clap/src/parser/features/suggestions.rs
+++ b/vendor/clap-3.2.20/src/parser/features/suggestions.rs
diff --git a/vendor/clap/src/parser/matches/any_value.rs b/vendor/clap-3.2.20/src/parser/matches/any_value.rs
index a9277e75f..a9277e75f 100644
--- a/vendor/clap/src/parser/matches/any_value.rs
+++ b/vendor/clap-3.2.20/src/parser/matches/any_value.rs
diff --git a/vendor/clap/src/parser/matches/arg_matches.rs b/vendor/clap-3.2.20/src/parser/matches/arg_matches.rs
index 17fa63ca6..2585c0219 100644
--- a/vendor/clap/src/parser/matches/arg_matches.rs
+++ b/vendor/clap-3.2.20/src/parser/matches/arg_matches.rs
@@ -119,6 +119,69 @@ impl ArgMatches {
MatchesError::unwrap(&internal_id, self.try_get_one(id))
}
+ /// Gets the value of a specific [`ArgAction::Count`][crate::ArgAction::Count] flag
+ ///
+ /// # Panic
+ ///
+ /// If the argument's action is not [`ArgAction::Count`][crate::ArgAction::Count]
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// # use clap::Command;
+ /// # use clap::Arg;
+ /// let cmd = Command::new("mycmd")
+ /// .arg(
+ /// Arg::new("flag")
+ /// .long("flag")
+ /// .action(clap::ArgAction::Count)
+ /// );
+ ///
+ /// let matches = cmd.clone().try_get_matches_from(["mycmd", "--flag", "--flag"]).unwrap();
+ /// assert_eq!(
+ /// matches.get_count("flag"),
+ /// 2
+ /// );
+ /// ```
+ #[track_caller]
+ pub fn get_count(&self, id: &str) -> u8 {
+ *self
+ .get_one::<u8>(id)
+ .expect("ArgAction::Count is defaulted")
+ }
+
+ /// Gets the value of a specific [`ArgAction::SetTrue`][crate::ArgAction::SetTrue] or [`ArgAction::SetFalse`][crate::ArgAction::SetFalse] flag
+ ///
+ /// # Panic
+ ///
+ /// If the argument's action is not [`ArgAction::SetTrue`][crate::ArgAction::SetTrue] or [`ArgAction::SetFalse`][crate::ArgAction::SetFalse]
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// # use clap::Command;
+ /// # use clap::Arg;
+ /// let cmd = Command::new("mycmd")
+ /// .arg(
+ /// Arg::new("flag")
+ /// .long("flag")
+ /// .action(clap::ArgAction::SetTrue)
+ /// );
+ ///
+ /// let matches = cmd.clone().try_get_matches_from(["mycmd", "--flag", "--flag"]).unwrap();
+ /// assert!(matches.contains_id("flag"));
+ /// assert_eq!(
+ /// matches.get_flag("flag"),
+ /// true
+ /// );
+ /// ```
+ #[track_caller]
+ pub fn get_flag(&self, id: &str) -> bool {
+ *self
+ .get_one::<bool>(id)
+ .expect("ArgAction::SetTrue / ArgAction::SetFalse is defaulted")
+ }
+
/// Iterate over values of a specific option or positional argument.
///
/// i.e. an argument that takes multiple values at runtime.
@@ -604,13 +667,13 @@ impl ArgMatches {
value.and_then(MatchedArg::source)
}
- /// Deprecated, replaced with [`ArgAction::Count`][crate::ArgAction] or
- /// [`ArgMatches::get_many`]`.len()`.
+ /// Deprecated, replaced with [`ArgAction::Count`][crate::ArgAction],
+ /// [`ArgMatches::get_many`]`.len()`, or [`ArgMatches::value_source`].
#[cfg_attr(
feature = "deprecated",
deprecated(
since = "3.2.0",
- note = "Replaced with either `ArgAction::Count` or `ArgMatches::get_many(...).len()`"
+ note = "Replaced with either `ArgAction::Count`, `ArgMatches::get_many(...).len()`, or `ArgMatches::value_source`"
)
)]
#[cfg_attr(debug_assertions, track_caller)]
@@ -1742,6 +1805,11 @@ mod tests {
use super::*;
#[test]
+ fn check_auto_traits() {
+ static_assertions::assert_impl_all!(ArgMatches: Send, Sync, Unpin);
+ }
+
+ #[test]
fn test_default_values() {
#![allow(deprecated)]
let mut values: Values = Values::default();
diff --git a/vendor/clap/src/parser/matches/matched_arg.rs b/vendor/clap-3.2.20/src/parser/matches/matched_arg.rs
index fde6d37f3..fde6d37f3 100644
--- a/vendor/clap/src/parser/matches/matched_arg.rs
+++ b/vendor/clap-3.2.20/src/parser/matches/matched_arg.rs
diff --git a/vendor/clap/src/parser/matches/mod.rs b/vendor/clap-3.2.20/src/parser/matches/mod.rs
index 7b88eeca7..7b88eeca7 100644
--- a/vendor/clap/src/parser/matches/mod.rs
+++ b/vendor/clap-3.2.20/src/parser/matches/mod.rs
diff --git a/vendor/clap/src/parser/matches/value_source.rs b/vendor/clap-3.2.20/src/parser/matches/value_source.rs
index fb762d2af..fb762d2af 100644
--- a/vendor/clap/src/parser/matches/value_source.rs
+++ b/vendor/clap-3.2.20/src/parser/matches/value_source.rs
diff --git a/vendor/clap/src/parser/mod.rs b/vendor/clap-3.2.20/src/parser/mod.rs
index da81648e1..da81648e1 100644
--- a/vendor/clap/src/parser/mod.rs
+++ b/vendor/clap-3.2.20/src/parser/mod.rs
diff --git a/vendor/clap/src/parser/parser.rs b/vendor/clap-3.2.20/src/parser/parser.rs
index fc95dad22..ad2bc6e9c 100644
--- a/vendor/clap/src/parser/parser.rs
+++ b/vendor/clap-3.2.20/src/parser/parser.rs
@@ -98,77 +98,6 @@ impl<'help, 'cmd> Parser<'help, 'cmd> {
arg_os.to_value_os().as_raw_bytes()
);
- // Correct pos_counter.
- pos_counter = {
- let is_second_to_last = pos_counter + 1 == positional_count;
-
- // The last positional argument, or second to last positional
- // argument may be set to .multiple_values(true) or `.multiple_occurrences(true)`
- let low_index_mults = is_second_to_last
- && self
- .cmd
- .get_positionals()
- .any(|a| a.is_multiple() && (positional_count != a.index.unwrap_or(0)))
- && self
- .cmd
- .get_positionals()
- .last()
- .map_or(false, |p_name| !p_name.is_last_set());
-
- let missing_pos = self.cmd.is_allow_missing_positional_set()
- && is_second_to_last
- && !trailing_values;
-
- debug!(
- "Parser::get_matches_with: Positional counter...{}",
- pos_counter
- );
- debug!(
- "Parser::get_matches_with: Low index multiples...{:?}",
- low_index_mults
- );
-
- if low_index_mults || missing_pos {
- let skip_current = if let Some(n) = raw_args.peek(&args_cursor) {
- if let Some(arg) = self
- .cmd
- .get_positionals()
- .find(|a| a.index == Some(pos_counter))
- {
- // If next value looks like a new_arg or it's a
- // subcommand, skip positional argument under current
- // pos_counter(which means current value cannot be a
- // positional argument with a value next to it), assume
- // current value matches the next arg.
- self.is_new_arg(&n, arg)
- || self
- .possible_subcommand(n.to_value(), valid_arg_found)
- .is_some()
- } else {
- true
- }
- } else {
- true
- };
-
- if skip_current {
- debug!("Parser::get_matches_with: Bumping the positional counter...");
- pos_counter + 1
- } else {
- pos_counter
- }
- } else if trailing_values
- && (self.cmd.is_allow_missing_positional_set() || contains_last)
- {
- // Came to -- and one positional has .last(true) set, so we go immediately
- // to the last (highest index) positional
- debug!("Parser::get_matches_with: .last(true) and --, setting last pos");
- positional_count
- } else {
- pos_counter
- }
- };
-
// Has the user already passed '--'? Meaning only positional args follow
if !trailing_values {
if self.cmd.is_subcommand_precedence_over_arg_set()
@@ -376,6 +305,77 @@ impl<'help, 'cmd> Parser<'help, 'cmd> {
}
}
+ // Correct pos_counter.
+ pos_counter = {
+ let is_second_to_last = pos_counter + 1 == positional_count;
+
+ // The last positional argument, or second to last positional
+ // argument may be set to .multiple_values(true) or `.multiple_occurrences(true)`
+ let low_index_mults = is_second_to_last
+ && self
+ .cmd
+ .get_positionals()
+ .any(|a| a.is_multiple() && (positional_count != a.index.unwrap_or(0)))
+ && self
+ .cmd
+ .get_positionals()
+ .last()
+ .map_or(false, |p_name| !p_name.is_last_set());
+
+ let missing_pos = self.cmd.is_allow_missing_positional_set()
+ && is_second_to_last
+ && !trailing_values;
+
+ debug!(
+ "Parser::get_matches_with: Positional counter...{}",
+ pos_counter
+ );
+ debug!(
+ "Parser::get_matches_with: Low index multiples...{:?}",
+ low_index_mults
+ );
+
+ if low_index_mults || missing_pos {
+ let skip_current = if let Some(n) = raw_args.peek(&args_cursor) {
+ if let Some(arg) = self
+ .cmd
+ .get_positionals()
+ .find(|a| a.index == Some(pos_counter))
+ {
+ // If next value looks like a new_arg or it's a
+ // subcommand, skip positional argument under current
+ // pos_counter(which means current value cannot be a
+ // positional argument with a value next to it), assume
+ // current value matches the next arg.
+ self.is_new_arg(&n, arg)
+ || self
+ .possible_subcommand(n.to_value(), valid_arg_found)
+ .is_some()
+ } else {
+ true
+ }
+ } else {
+ true
+ };
+
+ if skip_current {
+ debug!("Parser::get_matches_with: Bumping the positional counter...");
+ pos_counter + 1
+ } else {
+ pos_counter
+ }
+ } else if trailing_values
+ && (self.cmd.is_allow_missing_positional_set() || contains_last)
+ {
+ // Came to -- and one positional has .last(true) set, so we go immediately
+ // to the last (highest index) positional
+ debug!("Parser::get_matches_with: .last(true) and --, setting last pos");
+ positional_count
+ } else {
+ pos_counter
+ }
+ };
+
if let Some(arg) = self.cmd.get_keymap().get(&pos_counter) {
if arg.is_last_set() && !trailing_values {
let _ = self.resolve_pending(matcher);
@@ -738,8 +738,10 @@ impl<'help, 'cmd> Parser<'help, 'cmd> {
}
};
if long_arg.is_empty() {
- debug_assert!(long_value.is_none(), "{:?}", long_value);
- return Ok(ParseResult::NoArg);
+ debug_assert!(
+ long_value.is_some(),
+ "`--` should be filtered out before this point"
+ );
}
let arg = if let Some(arg) = self.cmd.get_keymap().get(long_arg) {
diff --git a/vendor/clap/src/parser/validator.rs b/vendor/clap-3.2.20/src/parser/validator.rs
index ebf2b234d..ebf2b234d 100644
--- a/vendor/clap/src/parser/validator.rs
+++ b/vendor/clap-3.2.20/src/parser/validator.rs
diff --git a/vendor/clap/src/util/color.rs b/vendor/clap-3.2.20/src/util/color.rs
index 15c9901a0..15c9901a0 100644
--- a/vendor/clap/src/util/color.rs
+++ b/vendor/clap-3.2.20/src/util/color.rs
diff --git a/vendor/clap/src/util/fnv.rs b/vendor/clap-3.2.20/src/util/fnv.rs
index 4602300a4..4602300a4 100644
--- a/vendor/clap/src/util/fnv.rs
+++ b/vendor/clap-3.2.20/src/util/fnv.rs
diff --git a/vendor/clap/src/util/graph.rs b/vendor/clap-3.2.20/src/util/graph.rs
index d646400b0..d646400b0 100644
--- a/vendor/clap/src/util/graph.rs
+++ b/vendor/clap-3.2.20/src/util/graph.rs
diff --git a/vendor/clap/src/util/id.rs b/vendor/clap-3.2.20/src/util/id.rs
index 63a7e003e..63a7e003e 100644
--- a/vendor/clap/src/util/id.rs
+++ b/vendor/clap-3.2.20/src/util/id.rs
diff --git a/vendor/clap/src/util/mod.rs b/vendor/clap-3.2.20/src/util/mod.rs
index 8adc8db17..8adc8db17 100644
--- a/vendor/clap/src/util/mod.rs
+++ b/vendor/clap-3.2.20/src/util/mod.rs
diff --git a/vendor/clap/src/util/str_to_bool.rs b/vendor/clap-3.2.20/src/util/str_to_bool.rs
index 1fbdc7531..1fbdc7531 100644
--- a/vendor/clap/src/util/str_to_bool.rs
+++ b/vendor/clap-3.2.20/src/util/str_to_bool.rs
diff --git a/vendor/clap/.cargo-checksum.json b/vendor/clap/.cargo-checksum.json
deleted file mode 100644
index 729aee79b..000000000
--- a/vendor/clap/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.lock":"6d96d441076749454963df06d637e5680e5ecdcdd36026f160c2d181aaca3bdc","Cargo.toml":"cb59c1e945c5606119203d907c01a40606070414b8913440f32e250c5db8c211","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"6725d1437fc6c77301f2ff0e7d52914cf4f9509213e1078dc77d9356dbe6eac5","README.md":"b5d5ba727e9f1a8797016bb041bc7888a209099d7dc42e445a89b1f8d3ac510d","examples/README.md":"9d19f6dfb53aadbe18aca773136d34bd28352b8efd69dfee217f26ee0eb9269a","examples/cargo-example-derive.md":"53a35e48cd04dfa10d70f99eb6d97d0d74110958f7f9e4ffc460fca87a256a73","examples/cargo-example-derive.rs":"627a74b7dc6d829b8facd314d0de46418b2420c6998e883f71a3cb7639d3a22d","examples/cargo-example.md":"1f270b0a0ac9122feb9cdac0887c1c1bcf1b654fed27147871c9cfe71851a4d9","examples/cargo-example.rs":"66293c7e200a87fceca691ab858293142c8a1536ef1d2c0dd14a6056289866a2","examples/demo.md":"3e986afca0863142fdd4cc092b5969fba32a70fac8adf84a55bd652f4b30eedb","examples/demo.rs":"5361cac70b662dd6d4d785738b99cfadf1f838c90507f19ea1aeef05aba0ee72","examples/derive_ref/README.md":"be2cfd81b9e2dc5e5910243f4b2f032e0b2c8af0592dcd050705e8718be8038d","examples/derive_ref/augment_args.rs":"69057536807ceb08e35802f8cf65c0f6ddd260a66a90000c8c6294031d466be3","examples/derive_ref/augment_subcommands.rs":"5535f8ca1893101acb5eba8edc311497431ff9aa26f62f1d9743bdc147bef7a4","examples/derive_ref/custom-bool.md":"d92e441199c7584d4b888c45124366cc4802ec8ea67cdcbb3423ffaa3c5268ac","examples/derive_ref/custom-bool.rs":"f88e9c68d2447a24bc98e05124fea17836155f32cff30a2b8a03ad254383247c","examples/derive_ref/flatten_hand_args.rs":"c09b751eb4e89e825af4de25a67d735c7b4794536bcff96b0ab8ee816c34413a","examples/derive_ref/hand_subcommand.rs":"1a5464b9c5791361930b5591adeb6fcf6f14b83abdfa6443d2c80bcf0c097b3e","examples/derive_ref/interop_tests.md":"3a357e82cfc155f71e0348be33f78295aa77839c3e3a5b7c1783cbd1259e6a61","examples/escaped-positional-derive.md":"b2190ada5ad2634c3ceb7f9d98293512628762545f9519579cbee9867c6a406a","examples/escaped-positional-derive.rs":"ac3127e8cc7a8953886778824a4d6e12470488546f10eeac6f9817ecaef1532e","examples/escaped-positional.md":"b6a5c103f5cea1464b5ac8e63e1964f032a4dbb4a908e45b9b391f4857fe2684","examples/escaped-positional.rs":"aaf106cdbe8f1eb5d9f3032df485d5661885f95402f026a34c42431f98a08323","examples/git-derive.md":"1a20f30d1c6df28d7e48b527b0726e9440f54d55a1e0b9e059b2322a7960ee72","examples/git-derive.rs":"225a33b0cd84840de2ba623b6b506b2fa4b02a9f5fbf62cdc2b2626e661501bd","examples/git.md":"acb3a44f954a6e2160f8989952981fb4baea8b97b921e4227c67896bc64d5e4a","examples/git.rs":"293b1289550ea38eabf1af7c6a855065170ff785e97be113928f045c50c1a3e9","examples/multicall-busybox.md":"3cb9d00ad110fc99c298dac4aa471e2f7a304aecef51d2eda67f5fbf36c41293","examples/multicall-busybox.rs":"709f71a82295a539d0a239371d35d1eeb517eaa3bb0a4db406bb7e5d3541a4a5","examples/multicall-hostname.md":"8c2d95fa8b940d4f788f96cf6b08b81bb2541bf12adff63bdff90dfc24567c7e","examples/multicall-hostname.rs":"cc58a924dd2e57281f36e30481a1cbc8186952adbf149f9e1e13f9c673614fd9","examples/pacman.md":"e583ef465e55fa2fffef3b121e4a90835b8905ef3ffe2ec9ae91702832b7392d","examples/pacman.rs":"4aea4eed4408458d57d3ff91f0e7f8833eeee30dd71043f5a6d06968c6c9712e","examples/repl.rs":"d50c1da634c237b26989994b1efa6fd1a087874a82d1fc8c1863be4ea8deaa8c","examples/tutorial_builder/01_quick.rs":"2734001dc1f67842f8ff3486397738f10dcbdf4bdd15326c13aebd5fafe0dabd","examples/tutorial_builder/02_app_settings.rs":"ca7e0b49019a444053ed13a7df8108d460430819b4fb04c4c6097225dc630293","examples/tutorial_builder/02_apps.rs":"a7016469d10259ae0025fb6ad5b9d3c732cf082869348005d4774d2bb0722d2d","examples/tutorial_builder/02_crate.rs":"5d7397901ebf82e3975626b3737fca3a95868cde42ce74d41bb3c96429878906","examples/tutorial_builder/03_01_flag_bool.rs":"1e904b39c7aaafc407a841ab8b549152263073a1af11773d13dc04d43fd541ef","examples/tutorial_builder/03_01_flag_count.rs":"02778a53afd6170c7ef7d358909237d4fe548adc5d7e650916d26f765040c25b","examples/tutorial_builder/03_02_option.rs":"7bca1c12b4904f89516ebdb88019c959c5adcf2a84244047f988b71f82760bd4","examples/tutorial_builder/03_03_positional.rs":"290921224b17df7f77326df06421b2100462da143e7b5dbe014f7e8b6d727d2b","examples/tutorial_builder/03_04_subcommands.rs":"1d5769847403661b1bb82d7a39713c52e1decbe4027dfc3866d63f5cf6ae8a55","examples/tutorial_builder/03_05_default_values.rs":"5a4768214c57996b27989cd5af57c7b79cbccfab2f285a88a415c2b67b589e4b","examples/tutorial_builder/04_01_enum.rs":"813ce1cf91e2cacd7eb5bd7018b1125d41cd9b29970dfa3638a7cf73c06659a0","examples/tutorial_builder/04_01_possible.rs":"2ccba0ab59f6339bcd761160d17a1c7ec935716fbe137408338694c7d3ee56f0","examples/tutorial_builder/04_02_parse.rs":"9d022cb3a3af3e00fd6c7d647ee0915a275ce79e379676e98bebcd3484be344b","examples/tutorial_builder/04_02_validate.rs":"4450e7e1af3581be631ffe9afa363c88b44ee20a90ecbb4608246972d3f7fd93","examples/tutorial_builder/04_03_relations.rs":"90db469ca8a3f1c5eb90548e8c1c0afe796d163891bdac90f2d307949a400047","examples/tutorial_builder/04_04_custom.rs":"461a06cae62f5972937f71b42d04df44240dabd62e23058322f04026beceaec5","examples/tutorial_builder/05_01_assert.rs":"73c57b051550366ed412c8986f40549fd43dacf3894df7751313c5de16f46af1","examples/tutorial_builder/README.md":"027d95d9f951d4ffed9ec54a3950919ea4a3d9fd471bbda721151ed6ff6c5731","examples/tutorial_derive/01_quick.rs":"e17262c915199c4507d8950d5eafb73f3047e09b6dee2abbfe9f82ebf1b7ddd5","examples/tutorial_derive/02_app_settings.rs":"7e81f4c1640b0bfbd87aedd3eda79ae7c47c669dee79b643b35e54c1dc076ee8","examples/tutorial_derive/02_apps.rs":"e8cd02b5983b2203f1585b96858fade4cedfb124e366171d6b21fcb3f05b514e","examples/tutorial_derive/02_crate.rs":"c156589c36a8b21654b1a41f5f10240411053d3273e7af3797e91ca53fa61d28","examples/tutorial_derive/03_01_flag_bool.rs":"07c31218d0332d7437d80e19c7e3c7be711bf0f56bee3ffb1c4d6f7f253b9304","examples/tutorial_derive/03_01_flag_count.rs":"945be42994845145b9c579b3834f8c6375f239293ded84fba35754bbe9fdcf9b","examples/tutorial_derive/03_02_option.rs":"48be4cf49b498173200ad86d5d3cd64ce9381f86fdaaab70f05fc471f64a2185","examples/tutorial_derive/03_03_positional.rs":"f368ab1465ee4d84b84d175b97af6f64ce0676bec2482adef3ce966d2d8de26a","examples/tutorial_derive/03_04_subcommands.rs":"b25c8aec8f3816923b1154be91caafe0c2d2841fc1af5f0ef048f03d1273879e","examples/tutorial_derive/03_04_subcommands_alt.rs":"7ba6e81c2af6085b7e2721254500b34ee3e8622e20790b3c6f2786e165151b70","examples/tutorial_derive/03_05_default_values.rs":"0ba14153a3c72a2435ac3688b990171a1670eb3f2f7cef21886732e489fad435","examples/tutorial_derive/04_01_enum.rs":"a665af77196af86ba87f1725703011392fc27f24e3d442bbb5dfc4c0d4892c15","examples/tutorial_derive/04_02_parse.rs":"fbb23ef2d98d3cb401cec9dd29d5818e4c189cc9f54fe961a2fbd08632a9634c","examples/tutorial_derive/04_02_validate.rs":"87d9c465f912b69e5839ea87404a221a39421404012c1a7fd6e327b03ceb12f0","examples/tutorial_derive/04_03_relations.rs":"bfc12e66ad9c17182bed2ef86cd668242e6e87ab4ee20fa9bf3d2aa99385d61a","examples/tutorial_derive/04_04_custom.rs":"0e745c6dab0881c62190e82e01409b70cf3286dd0983db4a612f1be88fdd1a8d","examples/tutorial_derive/05_01_assert.rs":"4742d883a3446f32068d96c142ed18df40a50ad6ed4989e39980011f3d1adbdf","examples/tutorial_derive/README.md":"7902da25a153aa0032184e4ca54185d1a5d4c6aa53686b10a210b4decc276791","examples/typed-derive.md":"cf3ee8313709937cc9c5462e3826cca8679946a658d684e8a36e66b0950100a7","examples/typed-derive.rs":"67034bd557c0efb2a0b61ced263cab3ddddb4e4a2bff2f2901d4832f6961e17d","src/bin/stdio-fixture.rs":"e8f10afbfe1857bcf986d2f55be0ca19a50c905d9f650c6e1fd42dbacf219b04","src/builder/action.rs":"64633d218202f799a08fb43ce7f1fae6105ae5ed43386caf4aca2d8ac5352fc1","src/builder/app_settings.rs":"5a27df52d765b50f83ad1173525b66f92b156415aee62b238306b3b57c086e50","src/builder/arg.rs":"808037bb9e7084c27f9f136059653ab049630d07d9851e5e700c8a775655bd05","src/builder/arg_group.rs":"263d9c79e03015fe4e2fab4616fc73089be60fb2ec17aa2a06f3d6a24740432c","src/builder/arg_predicate.rs":"8c9fd14780cd42465f32f2e8927b97c06e686d09b5927ba3cd5bbd792af7a13d","src/builder/arg_settings.rs":"af739627b9b1451c633eb66b09536008d8b095cba518a4f28b82ea480e9400d6","src/builder/command.rs":"72d0031bce35aa6d6ebd6a2006fe26a9b222852fe5a58a23854d9ab7f27150c5","src/builder/debug_asserts.rs":"d1d5adc82cb8269445b2ef197f1e566f61e7f13d6a24afaad928e45e95aed170","src/builder/macros.rs":"904e42e72c49107ae324f45d5df24fbff13b9c7d4589f1a4ae38594add704434","src/builder/mod.rs":"205367cb5ba5d5ba7894091535ce3a5dd23b35fd436e003196d89523e7705566","src/builder/possible_value.rs":"62268b9da9eec8f4d1904ebfbd3a288fb78cfa71c357efadced28f0378bcfb93","src/builder/regex.rs":"b18891310186ecdcca9bb611833b7188cc80fe72e9fef27b63fa076b880a1acb","src/builder/tests.rs":"995c7d6be608b94c6f392f1356eba0cb8adb9ca661ffeebf7ebe6e8ad01a868c","src/builder/usage_parser.rs":"91d1af89196116aac2c0fb021f42f43f954aa3252df264e19a02a0cf5911d16b","src/builder/value_hint.rs":"0dd974d495c313430898d28b79991a70983c9aa44e88fa9aa1776d3308935438","src/builder/value_parser.rs":"1d731b5bf4e25344ae1de23c474255a310852721ecf66a98c5ef2cbca1452437","src/derive.rs":"cf3e108adf7022ef4a269a0ede687d19f8f549168e1f36c3592fbee40da51e61","src/error/context.rs":"1dc561c7877d7f9b90f04bb7915744f0b3cc4ac2aa928ae100b2825a97077142","src/error/kind.rs":"deba40c24adf04e67e87e383463d103907b7f8cc69f842fd3a5d8d81015d33c1","src/error/mod.rs":"c7bdd28240ee2fac6d9ae2c3d849483fabc3c64d5d577c0bc297c996f122a217","src/lib.rs":"9522f2b17cd505623468c5ff847f5aa906a40ae19dde0329c459a417c2b82a2b","src/macros.rs":"d39619976c3cf3b2b28eef3dfffd449080f4fcfbaa164b01901bf3e10d1a5a07","src/mkeymap.rs":"3565a5bae5d6cdcf8ba41a24eb602c510a14e150c4a6d3085ad72a35778e9c5f","src/output/fmt.rs":"efb741b5854500d946c6c09763ece1badc2b9cd3efa616cb58012039836c2b7f","src/output/help.rs":"ebdd123d6b70279c25af4b08432b547498834853adf99821ff6c6cd65dd87d4e","src/output/mod.rs":"3a61f89a4568e95114a3ab839da8f3c4c92de2a228549308f5d1be076a474917","src/output/usage.rs":"370d3544cf58a09f8d3b0bcc2d894531d7152d716eaffa745a858c6ba2e03b7c","src/parser/arg_matcher.rs":"79ab36a164df07e565d2c44b836f647ee2009463d0d55bd2e822cb72b5e009a7","src/parser/error.rs":"4568fb6b8bb05b43e81c5df4fba5f4cb8b19bfa06e6b8fc6b5af6ca4074766cf","src/parser/features/mod.rs":"6ed075e97af56bff22f22ed1ee83ff6479360e05f9d3661a3145f822c242b694","src/parser/features/suggestions.rs":"79127956b2f1adb9d658925e2779ebebfe9ddea434408762fefb60afdb545f47","src/parser/matches/any_value.rs":"7b6e711fe205e8808394c562dd6a260b56ce350cf9298a308ba9727ab012b664","src/parser/matches/arg_matches.rs":"a24fa086537ef72951821fbf1dc455a04270606ee411685991e79aaae509558c","src/parser/matches/matched_arg.rs":"fb12eb2afaf631bb60aa8c4e42b0f510a877d35a9eaa07a7afd253280c27c251","src/parser/matches/mod.rs":"1467aa752cb1c79d30e4aeaaa55e10a0bb9dcf6f3980496234251431c79c49e6","src/parser/matches/value_source.rs":"e6a477ae36f2f7155960239a97b7d142eef4eb227c41c9eefea147289547d713","src/parser/mod.rs":"358f46d3b7f43dec2563d4c35bd2536fab2491f28e300a9bcdeaf6ca0513ce12","src/parser/parser.rs":"c1339fdf44253b6cbf81fcf71f99bb68300f8d5eb5ab7f0d0d02d222ee63a873","src/parser/validator.rs":"30066cb41ab23800231fb6b028cbce57d118570859659ebc67affbe5226f31f9","src/util/color.rs":"63df5e1cda1001b4c536dc0b04e09dd85dae6d317e34e660abbe3c71e17eaa29","src/util/fnv.rs":"82492d91d990f38b62de8b3c3e67f1fad55919117b1f448aa28acf6d21919fd7","src/util/graph.rs":"f35396b6e2a427377dcbbca69b1b98737d89684a3834cfda98cbf8cc70ff9c2f","src/util/id.rs":"fc498c65887385d92a51359a2f72556c2e508ee49b8cac4b3f827512795d690d","src/util/mod.rs":"8d328a15ef06989d0ce5e65cf3b7ec79c083984b25c0b31ba177bdb22df28a10","src/util/str_to_bool.rs":"1ce90b4939a884eeefc73392722bdfcf906e3070c4398e1557c586c10c684cd0"},"package":"d53da17d37dba964b9b3ecb5c5a1f193a2762c700e6829201e645b9381c99dc7"} \ No newline at end of file
diff --git a/vendor/clap/README.md b/vendor/clap/README.md
deleted file mode 100644
index 48b7a3cbd..000000000
--- a/vendor/clap/README.md
+++ /dev/null
@@ -1,179 +0,0 @@
-<!-- omit in TOC -->
-# clap
-
-> **Command Line Argument Parser for Rust**
-
-[![Crates.io](https://img.shields.io/crates/v/clap?style=flat-square)](https://crates.io/crates/clap)
-[![Crates.io](https://img.shields.io/crates/d/clap?style=flat-square)](https://crates.io/crates/clap)
-[![License](https://img.shields.io/badge/license-Apache%202.0-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/v3.2.5/LICENSE-APACHE)
-[![License](https://img.shields.io/badge/license-MIT-blue?style=flat-square)](https://github.com/clap-rs/clap/blob/v3.2.5/LICENSE-MIT)
-[![Build Status](https://img.shields.io/github/workflow/status/clap-rs/clap/CI/staging?style=flat-square)](https://github.com/clap-rs/clap/actions/workflows/ci.yml?query=branch%3Astaging)
-[![Coverage Status](https://img.shields.io/coveralls/github/clap-rs/clap/master?style=flat-square)](https://coveralls.io/github/clap-rs/clap?branch=master)
-[![Contributors](https://img.shields.io/github/contributors/clap-rs/clap?style=flat-square)](https://github.com/clap-rs/clap/graphs/contributors)
-
-Dual-licensed under [Apache 2.0](LICENSE-APACHE) or [MIT](LICENSE-MIT).
-
-1. [About](#about)
-2. Tutorial: [Builder API](https://github.com/clap-rs/clap/blob/v3.2.5/examples/tutorial_builder/README.md), [Derive API](https://github.com/clap-rs/clap/blob/v3.2.5/examples/tutorial_derive/README.md)
-3. [Examples](https://github.com/clap-rs/clap/blob/v3.2.5/examples/README.md)
-4. [API Reference](https://docs.rs/clap)
- - [Derive Reference](https://github.com/clap-rs/clap/blob/v3.2.5/examples/derive_ref/README.md)
- - [Feature Flags](#feature-flags)
-5. [CHANGELOG](https://github.com/clap-rs/clap/blob/v3.2.5/CHANGELOG.md)
-6. [FAQ](https://github.com/clap-rs/clap/blob/v3.2.5/docs/FAQ.md)
-7. [Questions & Discussions](https://github.com/clap-rs/clap/discussions)
-8. [Contributing](https://github.com/clap-rs/clap/blob/v3.2.5/CONTRIBUTING.md)
-8. [Sponsors](#sponsors)
-
-## About
-
-Create your command-line parser, with all of the bells and whistles, declaratively or procedurally.
-
-### Example
-
-This uses our
-[Derive API](https://github.com/clap-rs/clap/blob/v3.2.5/examples/tutorial_derive/README.md)
-which provides access to the [Builder API](https://github.com/clap-rs/clap/blob/v3.2.5/examples/tutorial_builder/README.md) as attributes on a `struct`:
-
-<!-- Copied from examples/demo.{rs,md} -->
-```rust,no_run
-use clap::Parser;
-
-/// Simple program to greet a person
-#[derive(Parser, Debug)]
-#[clap(author, version, about, long_about = None)]
-struct Args {
- /// Name of the person to greet
- #[clap(short, long, value_parser)]
- name: String,
-
- /// Number of times to greet
- #[clap(short, long, value_parser, default_value_t = 1)]
- count: u8,
-}
-
-fn main() {
- let args = Args::parse();
-
- for _ in 0..args.count {
- println!("Hello {}!", args.name)
- }
-}
-```
-Add this to `Cargo.toml`:
-```toml
-[dependencies]
-clap = { version = "3.2.5", features = ["derive"] }
-```
-```bash
-$ demo --help
-clap [..]
-Simple program to greet a person
-
-USAGE:
- demo[EXE] [OPTIONS] --name <NAME>
-
-OPTIONS:
- -c, --count <COUNT> Number of times to greet [default: 1]
- -h, --help Print help information
- -n, --name <NAME> Name of the person to greet
- -V, --version Print version information
-```
-*(version number and `.exe` extension on windows replaced by placeholders)*
-
-### Aspirations
-
-- Out of the box, users get a polished CLI experience
- - Including common argument behavior, help generation, suggested fixes for users, colored output, [shell completions](https://github.com/clap-rs/clap/tree/master/clap_complete), etc
-- Flexible enough to port your existing CLI interface
- - However, we won't necessarily streamline support for each use case
-- Reasonable parse performance
-- Resilient maintainership, including
- - Willing to break compatibility rather than batching up breaking changes in large releases
- - Leverage feature flags to keep to one active branch
- - Being under [WG-CLI](https://github.com/rust-cli/team/) to increase the bus factor
-- We follow semver and will wait about 6-9 months between major breaking changes
-- We will support the last two minor Rust releases (MSRV, currently 1.56.0)
-
-While these aspirations can be at odds with fast build times and low binary
-size, we will still strive to keep these reasonable for the flexibility you
-get. Check out the
-[argparse-benchmarks](https://github.com/rust-cli/argparse-benchmarks-rs) for
-CLI parsers optimized for other use cases.
-
-### Selecting an API
-
-Why use the declarative [Derive API](https://github.com/clap-rs/clap/blob/v3.2.5/examples/tutorial_derive/README.md):
-- Easier to read, write, and modify
-- Easier to keep the argument declaration and reading of argument in sync
-- Easier to reuse, e.g. [clap-verbosity-flag](https://crates.io/crates/clap-verbosity-flag)
-
-Why use the procedural [Builder API](https://github.com/clap-rs/clap/blob/v3.2.5/examples/tutorial_builder/README.md):
-- Faster compile times if you aren't already using other procedural macros
-- More flexible, e.g. you can look up how many times an argument showed up,
- what its values were, and what were the indexes of those values. The Derive
- API can only report presence, number of occurrences, or values but no indices
- or combinations of data.
-
-### Related Projects
-
-- [wild](https://crates.io/crates/wild) for supporting wildcards (`*`) on Windows like you do Linux
-- [argfile](https://crates.io/crates/argfile) for loading additional arguments from a file (aka response files)
-- [shadow-rs](https://crates.io/crates/shadow-rs) for generating `Command::long_version`
-- [clap_lex](https://crates.io/crates/clap_lex) for a lighter-weight, battle-tested CLI parser
-- [clap_mangen](https://crates.io/crates/clap_mangen) for generating man page source (roff)
-- [clap_complete](https://crates.io/crates/clap_complete) for shell completion support
-- [clap-verbosity-flag](https://crates.io/crates/clap-verbosity-flag)
-- [clap-cargo](https://crates.io/crates/clap-cargo)
-- [concolor-clap](https://crates.io/crates/concolor-clap)
-- [Command-line Apps for Rust](https://rust-cli.github.io/book/index.html) book
-- [`trycmd`](https://crates.io/crates/trycmd): Snapshot testing
- - Or for more control, [`assert_cmd`](https://crates.io/crates/assert_cmd) and [`assert_fs`](https://crates.io/crates/assert_fs)
-
-## Feature Flags
-
-### Default Features
-
-* **std**: _Not Currently Used._ Placeholder for supporting `no_std` environments in a backwards compatible manner.
-* **color**: Turns on colored error messages.
-* **suggestions**: Turns on the `Did you mean '--myoption'?` feature for when users make typos.
-
-#### Optional features
-
-* **deprecated**: Guided experience to prepare for next breaking release (at different stages of development, this may become default)
-* **derive**: Enables the custom derive (i.e. `#[derive(Parser)]`). Without this you must use one of the other methods of creating a `clap` CLI listed above.
-* **cargo**: Turns on macros that read values from `CARGO_*` environment variables.
-* **env**: Turns on the usage of environment variables during parsing.
-* **regex**: Enables regex validators.
-* **unicode**: Turns on support for unicode characters (including emoji) in arguments and help messages.
-* **wrap_help**: Turns on the help text wrapping feature, based on the terminal size.
-
-#### Experimental features
-
-**Warning:** These may contain breaking changes between minor releases.
-
-* **unstable-replace**: Enable [`Command::replace`](https://github.com/clap-rs/clap/issues/2836)
-* **unstable-grouped**: Enable [`ArgMatches::grouped_values_of`](https://github.com/clap-rs/clap/issues/2924)
-* **unstable-v4**: Preview features which will be stable on the v4.0 release
-
-## Sponsors
-
-<!-- omit in TOC -->
-### Gold
-
-[![](https://opencollective.com/clap/tiers/gold.svg?avatarHeight=36&width=600)](https://opencollective.com/clap)
-
-<!-- omit in TOC -->
-### Silver
-
-[![](https://opencollective.com/clap/tiers/silver.svg?avatarHeight=36&width=600)](https://opencollective.com/clap)
-
-<!-- omit in TOC -->
-### Bronze
-
-[![](https://opencollective.com/clap/tiers/bronze.svg?avatarHeight=36&width=600)](https://opencollective.com/clap)
-
-<!-- omit in TOC -->
-### Backer
-
-[![](https://opencollective.com/clap/tiers/backer.svg?avatarHeight=36&width=600)](https://opencollective.com/clap)
diff --git a/vendor/clap/examples/README.md b/vendor/clap/examples/README.md
deleted file mode 100644
index 2034ab80e..000000000
--- a/vendor/clap/examples/README.md
+++ /dev/null
@@ -1,40 +0,0 @@
-# Examples
-
-- Basic demo: [derive](demo.md)
-- Typed arguments: [derive](typed-derive.md)
- - Topics:
- - Custom `parse()`
-- Custom cargo command: [builder](cargo-example.md), [derive](cargo-example-derive.md)
- - Topics:
- - Subcommands
- - Cargo plugins
-- git-like interface: [builder](git.md), [derive](git-derive.md)
- - Topics:
- - Subcommands
- - External subcommands
- - Optional subcommands
- - Default subcommands
-- pacman-like interface: [builder](pacman.md)
- - Topics:
- - Flag subcommands
- - Conflicting arguments
-- Escaped positionals with `--`: [builder](escaped-positional.md), [derive](escaped-positional-derive.md)
-- Multi-call
- - busybox: [builder](multicall-busybox.md)
- - Topics:
- - Subcommands
- - hostname: [builder](multicall-hostname.md)
- - Topics:
- - Subcommands
-- repl: [builder](repl.rs)
- - Topics:
- - Read-Eval-Print Loops / Custom command lines
-
-## Contributing
-
-New examples:
-- Building: They must be added to [Cargo.toml](../Cargo.toml) with the appropriate `required-features`.
-- Testing: Ensure there is a markdown file with [trycmd](https://docs.rs/trycmd) syntax
-- Link the `.md` file from here
-
-See also the general [CONTRIBUTING](../CONTRIBUTING.md).
diff --git a/vendor/clap/examples/derive_ref/README.md b/vendor/clap/examples/derive_ref/README.md
deleted file mode 100644
index a3b0c084d..000000000
--- a/vendor/clap/examples/derive_ref/README.md
+++ /dev/null
@@ -1,440 +0,0 @@
-# Derive Reference
-
-1. [Overview](#overview)
-2. [Attributes](#attributes)
- 1. [Terminology](#terminology)
- 2. [Command Attributes](#command-attributes)
- 3. [Arg Attributes](#arg-attributes)
- 4. [Arg Enum Attributes](#arg-enum-attributes)
- 5. [Possible Value Attributes](#possible-value-attributes)
-3. [Arg Types](#arg-types)
-4. [Doc Comments](#doc-comments)
-5. [Tips](#tips)
-6. [Mixing Builder and Derive APIS](#mixing-builder-and-derive-apis)
-
-## Overview
-
-To derive `clap` types, you need to enable the `derive` feature flag.
-
-See [demo.rs](../demo.rs) and [demo.md](../demo.md) for a brief example.
-
-Let's start by breaking down the anatomy of the derive attributes:
-```rust
-use clap::{Parser, Args, Subcommand, ValueEnum};
-
-/// Doc comment
-#[derive(Parser)]
-#[clap(APP ATTRIBUTE)]
-struct Cli {
- /// Doc comment
- #[clap(ARG ATTRIBUTE)]
- field: UserType,
-
- #[clap(value_enum, ARG ATTRIBUTE...)]
- field: EnumValues,
-
- #[clap(flatten)]
- delegate: Struct,
-
- #[clap(subcommand)]
- command: Command,
-}
-
-/// Doc comment
-#[derive(Args)]
-#[clap(PARENT APP ATTRIBUTE)]
-struct Struct {
- /// Doc comment
- #[clap(ARG ATTRIBUTE)]
- field: UserType,
-}
-
-/// Doc comment
-#[derive(Subcommand)]
-#[clap(PARENT APP ATTRIBUTE)]
-enum Command {
- /// Doc comment
- #[clap(APP ATTRIBUTE)]
- Variant1(Struct),
-
- /// Doc comment
- #[clap(APP ATTRIBUTE)]
- Variant2 {
- /// Doc comment
- #[clap(ARG ATTRIBUTE)]
- field: UserType,
- }
-}
-
-/// Doc comment
-#[derive(ValueEnum)]
-#[clap(ARG ENUM ATTRIBUTE)]
-enum EnumValues {
- /// Doc comment
- #[clap(POSSIBLE VALUE ATTRIBUTE)]
- Variant1,
-}
-
-fn main() {
- let cli = Cli::parse();
-}
-```
-
-- `Parser` parses arguments into a `struct` (arguments) or `enum` (subcommands).
-- `Args` allows defining a set of re-usable arguments that get merged into their parent container.
-- `Subcommand` defines available subcommands.
- - Subcommand arguments can be defined in a struct-variant or automatically flattened with a tuple-variant.
-- `ValueEnum` allows parsing a value directly into an `enum`, erroring on unsupported values.
- - The derive doesn't work on enums that contain non-unit variants, unless they are skipped
-
-See also the [tutorial](../tutorial_derive/README.md) and [examples](../README.md).
-
-## Attributes
-
-### Terminology
-
-**Raw attributes** are forwarded directly to the underlying `clap` builder. Any
-`Command`, `Arg`, or `PossibleValue` method can be used as an attribute.
-
-Raw attributes come in two different syntaxes:
-```rust
-#[clap(
- global = true, // name = arg form, neat for one-arg methods
- required_if_eq("out", "file") // name(arg1, arg2, ...) form.
-)]
-```
-
-- `method = arg` can only be used for methods which take only one argument.
-- `method(arg1, arg2)` can be used with any method.
-
-As long as `method_name` is not one of the magical methods - it will be
-translated into a mere method call.
-
-**Magic attributes** have post-processing done to them, whether that is
-- Providing of defaults
-- Special behavior is triggered off of it
-
-Magic attributes are more constrained in the syntax they support, usually just
-`<attr> = <value>` though some use `<attr>(<value>)` instead. See the specific
-magic attributes documentation for details. This allows users to access the
-raw behavior of an attribute via `<attr>(<value>)` syntax.
-
-**NOTE:** Some attributes are inferred from [Arg Types](#arg-types) and [Doc
-Comments](#doc-comments). Explicit attributes take precedence over inferred
-attributes.
-
-### Command Attributes
-
-These correspond to a `clap::Command` which is used for both top-level parsers and
-when defining subcommands.
-
-**Raw attributes:** Any [`Command` method](https://docs.rs/clap/latest/clap/type.Command.html) can also be used as an attribute, see [Terminology](#terminology) for syntax.
-- e.g. `#[clap(arg_required_else_help(true))]` would translate to `cmd.arg_required_else_help(true)`
-
-**Magic attributes:**
-- `name = <expr>`: `clap::Command::name`
- - When not present: [crate `name`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-name-field) (`Parser` container), variant name (`Subcommand` variant)
-- `version [= <expr>]`: `clap::Command::version`
- - When not present: no version set
- - Without `<expr>`: defaults to [crate `version`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-version-field)
-- `author [= <expr>]`: `clap::Command::author`
- - When not present: no author set
- - Without `<expr>`: defaults to [crate `authors`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-authors-field)
-- `about [= <expr>]`: `clap::Command::about`
- - When not present: [Doc comment summary](#doc-comments)
- - Without `<expr>`: [crate `description`](https://doc.rust-lang.org/cargo/reference/manifest.html#the-description-field) (`Parser` container)
- - **TIP:** When a doc comment is also present, you most likely want to add
- `#[clap(long_about = None)]` to clear the doc comment so only `about`
- gets shown with both `-h` and `--help`.
-- `long_about = <expr>`: `clap::Command::long_about`
- - When not present: [Doc comment](#doc-comments) if there is a blank line, else nothing
-- `verbatim_doc_comment`: Minimizes pre-processing when converting doc comments to `about` / `long_about`
-- `next_display_order`: `clap::Command::next_display_order`
-- `next_help_heading`: `clap::Command::next_help_heading`
- - When `flatten`ing `Args`, this is scoped to just the args in this struct and any struct `flatten`ed into it
-- `rename_all = <expr>`: Override default field / variant name case conversion for `Command::name` / `Arg::name`
- - When not present: `kebab-case`
- - Available values: `camelCase`, `kebab-case`, `PascalCase`, `SCREAMING_SNAKE_CASE`, `snake_case`, `lower`, `UPPER`, `verbatim`
-- `rename_all_env = <expr>`: Override default field name case conversion for env variables for `clap::Arg::env`
- - When not present: `SCREAMING_SNAKE_CASE`
- - Available values: `camelCase`, `kebab-case`, `PascalCase`, `SCREAMING_SNAKE_CASE`, `snake_case`, `lower`, `UPPER`, `verbatim`
-
-And for `Subcommand` variants:
-- `skip`: Ignore this variant
-- `flatten`: Delegates to the variant for more subcommands (must implement `Subcommand`)
-- `subcommand`: Nest subcommands under the current set of subcommands (must implement `Subcommand`)
-- `external_subcommand`: `clap::Command::allow_external_subcommand(true)`
- - Variant must be either `Variant(Vec<String>)` or `Variant(Vec<OsString>)`
-
-### Arg Attributes
-
-These correspond to a `clap::Arg`.
-
-**Raw attributes:** Any [`Arg` method](https://docs.rs/clap/latest/clap/struct.Arg.html) can also be used as an attribute, see [Terminology](#terminology) for syntax.
-- e.g. `#[clap(max_values(3))]` would translate to `arg.max_values(3)`
-
-**Magic attributes**:
-- `name = <expr>`: `clap::Arg::new`
- - When not present: case-converted field name is used
-- `value_parser [= <expr>]`: `clap::Arg::value_parser`
- - When not present: will auto-select an implementation based on the field type
- - To register a custom type's `ValueParser`, implement `ValueParserFactory`
- - When present, implies `#[clap(action)]`
-- `action [= <expr>]`: `clap::Arg::action`
- - When not present: will auto-select an action based on the field type
- - When present, implies `#[clap(value_parser)]`
-- `help = <expr>`: `clap::Arg::help`
- - When not present: [Doc comment summary](#doc-comments)
-- `long_help = <expr>`: `clap::Arg::long_help`
- - When not present: [Doc comment](#doc-comments) if there is a blank line, else nothing
-- `verbatim_doc_comment`: Minimizes pre-processing when converting doc comments to `help` / `long_help`
-- `short [= <char>]`: `clap::Arg::short`
- - When not present: no short set
- - Without `<char>`: defaults to first character in the case-converted field name
-- `long [= <str>]`: `clap::Arg::long`
- - When not present: no long set
- - Without `<str>`: defaults to the case-converted field name
-- `env [= <str>]`: `clap::Arg::env` (needs `env` feature enabled)
- - When not present: no env set
- - Without `<str>`: defaults to the case-converted field name
-- `flatten`: Delegates to the field for more arguments (must implement `Args`)
- - Only `help_heading` can be used with `flatten`. See
- [clap-rs/clap#3269](https://github.com/clap-rs/clap/issues/3269) for why
- arg attributes are not generally supported.
- - **Tip:** Though we do apply a flattened `Args`'s Parent Command Attributes, this
- makes reuse harder. Generally prefer putting the cmd attributes on the `Parser`
- or on the flattened field.
-- `subcommand`: Delegates definition of subcommands to the field (must implement `Subcommand`)
- - When `Option<T>`, the subcommand becomes optional
-- `from_global`: Read a `clap::Arg::global` argument (raw attribute), regardless of what subcommand you are in
-- `parse(<kind> [= <function>])`: `clap::Arg::validator` and `clap::ArgMatches::values_of_t`
- - **Deprecated:**
- - Use `value_parser(...)` for `from_str`, `try_from_str`, `from_os_str`, and `try_from_os_str`
- - Use `action(ArgAction::Count` for `from_occurrences`
- - Use `action(ArgAction::SetTrue` for `from_flag`
- - Default: `try_from_str`
- - Warning: for `Path` / `OsString`, be sure to use `try_from_os_str`
- - See [Arg Types](#arg-types) for more details
-- `value_enum`: Parse the value using the `ValueEnum` trait
-- `skip [= <expr>]`: Ignore this field, filling in with `<expr>`
- - Without `<expr>`: fills the field with `Default::default()`
-- `default_value = <str>`: `clap::Arg::default_value` and `clap::Arg::required(false)`
-- `default_value_t [= <expr>]`: `clap::Arg::default_value` and `clap::Arg::required(false)`
- - Requires `std::fmt::Display` or `#[clap(value_enum)]`
- - Without `<expr>`, relies on `Default::default()`
-- `default_value_os_t [= <expr>]`: `clap::Arg::default_value_os` and `clap::Arg::required(false)`
- - Requires `std::convert::Into<OsString>` or `#[clap(value_enum)]`
- - Without `<expr>`, relies on `Default::default()`
-
-### Arg Enum Attributes
-
-- `rename_all = <expr>`: Override default field / variant name case conversion for `PossibleValue::new`
- - When not present: `kebab-case`
- - Available values: `camelCase`, `kebab-case`, `PascalCase`, `SCREAMING_SNAKE_CASE`, `snake_case`, `lower`, `UPPER`, `verbatim`
-
-### Possible Value Attributes
-
-These correspond to a `clap::PossibleValue`.
-
-**Raw attributes:** Any [`PossibleValue` method](https://docs.rs/clap/latest/clap/struct.PossibleValue.html) can also be used as an attribute, see [Terminology](#terminology) for syntax.
-- e.g. `#[clap(alias("foo"))]` would translate to `pv.alias("foo")`
-
-**Magic attributes**:
-- `name = <expr>`: `clap::PossibleValue::new`
- - When not present: case-converted field name is used
-- `help = <expr>`: `clap::PossibleValue::help`
- - When not present: [Doc comment summary](#doc-comments)
-
-## Arg Types
-
-`clap` assumes some intent based on the type used:
-
-| Type | Effect | Implies |
-|---------------------|--------------------------------------|------------------------------------------------------------------|
-| `bool` | flag | `#[clap(parse(from_flag))]` |
-| `Option<T>` | optional argument | `.takes_value(true).required(false)` |
-| `Option<Option<T>>` | optional value for optional argument | `.takes_value(true).required(false).min_values(0).max_values(1)` |
-| `T` | required argument | `.takes_value(true).required(!has_default)` |
-| `Vec<T>` | `0..` occurrences of argument | `.takes_value(true).required(false).multiple_occurrences(true)` |
-| `Option<Vec<T>>` | `0..` occurrences of argument | `.takes_value(true).required(false).multiple_occurrences(true)` |
-
-Notes:
-- For custom type behavior, you can override the implied attributes/settings and/or set additional ones
- - For example, see [custom-bool](./custom-bool.md)
-- `Option<Vec<T>>` will be `None` instead of `vec![]` if no arguments are provided.
- - This gives the user some flexibility in designing their argument, like with `min_values(0)`
-
-You can then support your custom type with `#[clap(parse(<kind> [= <function>]))]`:
-
-| `<kind>` | Signature | Default `<function>` |
-|--------------------------|---------------------------------------|---------------------------------|
-| `from_str` | `fn(&str) -> T` | `::std::convert::From::from` |
-| `try_from_str` (default) | `fn(&str) -> Result<T, E>` | `::std::str::FromStr::from_str` |
-| `from_os_str` | `fn(&OsStr) -> T` | `::std::convert::From::from` |
-| `try_from_os_str` | `fn(&OsStr) -> Result<T, E>` | (no default function) |
-| `from_occurrences` | `fn(u64) -> T` | `value as T` |
-| `from_flag` | `fn(bool) -> T` | `::std::convert::From::from` |
-
-Notes:
-- `from_os_str`:
- - Implies `arg.takes_value(true).allow_invalid_utf8(true)`
-- `try_from_os_str`:
- - Implies `arg.takes_value(true).allow_invalid_utf8(true)`
-- `from_occurrences`:
- - Implies `arg.takes_value(false).multiple_occurrences(true)`
- - Reads from `clap::ArgMatches::occurrences_of` rather than a `get_one` function
- - Note: operations on values, like `default_value`, are unlikely to do what you want
-- `from_flag`
- - Implies `arg.takes_value(false)`
- - Reads from `clap::ArgMatches::is_present` rather than a `get_one` function
- - Note: operations on values, like `default_value`, are unlikely to do what you want
-
-**Warning:**
-- To support non-UTF8 paths, you should use `#[clap(value_parser)]` otherwise
- `clap` will parse it as a `String` which will fail on some paths.
-
-## Doc Comments
-
-In clap, help messages for the whole binary can be specified
-via [`Command::about`] and [`Command::long_about`] while help messages
-for individual arguments can be specified via [`Arg::help`] and [`Arg::long_help`]".
-
-`long_*` variants are used when user calls the program with
-`--help` and "short" variants are used with `-h` flag.
-
-```rust
-# use clap::Parser;
-
-#[derive(Parser)]
-#[clap(about = "I am a program and I work, just pass `-h`", long_about = None)]
-struct Foo {
- #[clap(short, help = "Pass `-h` and you'll see me!")]
- bar: String,
-}
-```
-
-For convenience, doc comments can be used instead of raw methods
-(this example works exactly like the one above):
-
-```rust
-# use clap::Parser;
-
-#[derive(Parser)]
-/// I am a program and I work, just pass `-h`
-struct Foo {
- /// Pass `-h` and you'll see me!
- bar: String,
-}
-```
-
-**NOTE:** Attributes have priority over doc comments!
-
-**Top level doc comments always generate `Command::about/long_about` calls!**
-If you really want to use the `Command::about/long_about` methods (you likely don't),
-use the `about` / `long_about` attributes to override the calls generated from
-the doc comment. To clear `long_about`, you can use
-`#[clap(long_about = None)]`.
-
-**TIP:** Set `#![deny(missing_docs)]` to catch missing `--help` documentation at compile time.
-
-### Pre-processing
-
-```rust
-# use clap::Parser;
-#[derive(Parser)]
-/// Hi there, I'm Robo!
-///
-/// I like beeping, stumbling, eating your electricity,
-/// and making records of you singing in a shower.
-/// Pay up, or I'll upload it to youtube!
-struct Robo {
- /// Call my brother SkyNet.
- ///
- /// I am artificial superintelligence. I won't rest
- /// until I'll have destroyed humanity. Enjoy your
- /// pathetic existence, you mere mortals.
- #[clap(long, action)]
- kill_all_humans: bool,
-}
-```
-
-A doc comment consists of three parts:
-- Short summary
-- A blank line (whitespace only)
-- Detailed description, all the rest
-
-The summary corresponds with `Command::about` / `Arg::help`. When a blank line is
-present, the whole doc comment will be passed to `Command::long_about` /
-`Arg::long_help`. Or in other words, a doc may result in just a `Command::about` /
-`Arg::help` or `Command::about` / `Arg::help` and `Command::long_about` /
-`Arg::long_help`
-
-In addition, when `verbatim_doc_comment` is not present, `clap` applies some preprocessing, including:
-
-- Strip leading and trailing whitespace from every line, if present.
-
-- Strip leading and trailing blank lines, if present.
-
-- Interpret each group of non-empty lines as a word-wrapped paragraph.
-
- We replace newlines within paragraphs with spaces to allow the output
- to be re-wrapped to the terminal width.
-
-- Strip any excess blank lines so that there is exactly one per paragraph break.
-
-- If the first paragraph ends in exactly one period,
- remove the trailing period (i.e. strip trailing periods but not trailing ellipses).
-
-Sometimes you don't want this preprocessing to apply, for example the comment contains
-some ASCII art or markdown tables, you would need to preserve LFs along with
-blank lines and the leading/trailing whitespace. When you pass use the
-`verbatim_doc_comment` magic attribute, you preserve
-them.
-
-**Note:** Keep in mind that `verbatim_doc_comment` will *still*
-- Remove one leading space from each line, even if this attribute is present,
- to allow for a space between `///` and the content.
-- Remove leading and trailing blank lines
-
-## Tips
-
-- To get access to a `Command` call `CommandFactory::command` (implemented when deriving `Parser`)
-- Proactively check for bad `Command` configurations by calling `Command::debug_assert` in a test ([example](../tutorial_derive/05_01_assert.rs))
-
-## Mixing Builder and Derive APIs
-
-The builder and derive APIs do not live in isolation. They can work together, which is especially helpful if some arguments can be specified at compile-time while others must be specified at runtime.
-
-### Using derived arguments in a builder application
-
-*[Jump to source](augment_args.rs)*
-
-When using the derive API, you can `#[clap(flatten)]` a struct deriving `Args` into a struct deriving `Args` or `Parser`. This example shows how you can augment a `Command` instance created using the builder API with `Args` created using the derive API.
-
-It uses the `Args::augment_args` method to add the arguments to the `Command` instance.
-
-Crates such as [clap-verbosity-flag](https://github.com/rust-cli/clap-verbosity-flag) provide structs that implement `Args` or `Parser`. Without the technique shown in this example, it would not be possible to use such crates with the builder API. `augment_args` to the rescue!
-
-### Using derived subcommands in a builder application
-
-*[Jump to source](augment_subcommands.rs)*
-
-When using the derive API, you can use `#[clap(subcommand)]` inside the struct to add subcommands. The type of the field is usually an enum that derived `Parser`. However, you can also add the subcommands in that enum to a `Command` instance created with the builder API.
-
-It uses the `Subcommand::augment_subcommands` method to add the subcommands to the `Command` instance.
-
-### Adding hand-implemented subcommands to a derived application
-
-*[Jump to source](hand_subcommand.rs)*
-
-When using the derive API, you can use `#[clap(subcommand)]` inside the struct to add subcommands. The type of the field is usually an enum that derived `Parser`. However, you can also implement the `Subcommand` trait manually on this enum (or any other type) and it can still be used inside the struct created with the derive API. The implementation of the `Subcommand` trait will use the builder API to add the subcommands to the `Command` instance created behind the scenes for you by the derive API.
-
-Notice how in the previous example we used `augment_subcommands` on an enum that derived `Parser`, whereas now we implement `augment_subcommands` ourselves, but the derive API calls it automatically since we used the `#[clap(subcommand)]` attribute.
-
-### Flattening hand-implemented args into a derived application
-
-*[Jump to source](flatten_hand_args.rs)*
-
-When using the derive API, you can use `#[clap(flatten)]` inside the struct to add arguments as if they were added directly to the containing struct. The type of the field is usually an struct that derived `Args`. However, you can also implement the `Args` trait manually on this struct (or any other type) and it can still be used inside the struct created with the derive API. The implementation of the `Args` trait will use the builder API to add the arguments to the `Command` instance created behind the scenes for you by the derive API.
-
-Notice how in the example 1 we used `augment_args` on the struct that derived `Parser`, whereas now we implement `augment_args` ourselves, but the derive API calls it automatically since we used the `#[clap(flatten)]` attribute.
diff --git a/vendor/clap/examples/tutorial_builder/03_01_flag_count.rs b/vendor/clap/examples/tutorial_builder/03_01_flag_count.rs
deleted file mode 100644
index 764affbd8..000000000
--- a/vendor/clap/examples/tutorial_builder/03_01_flag_count.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// Note: this requires the `cargo` feature
-
-use clap::{arg, command, ArgAction};
-
-fn main() {
- let matches = command!()
- .arg(arg!(-v - -verbose).action(ArgAction::Count))
- .get_matches();
-
- println!(
- "verbose: {:?}",
- matches
- .get_one::<u8>("verbose")
- .expect("Count always defaulted")
- );
-}
diff --git a/vendor/clap/examples/tutorial_builder/03_03_positional.rs b/vendor/clap/examples/tutorial_builder/03_03_positional.rs
deleted file mode 100644
index c6579409a..000000000
--- a/vendor/clap/examples/tutorial_builder/03_03_positional.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// Note: this requires the `cargo` feature
-
-use clap::{arg, command};
-
-fn main() {
- let matches = command!().arg(arg!([NAME])).get_matches();
-
- println!("NAME: {:?}", matches.get_one::<String>("NAME"));
-}
diff --git a/vendor/clap/examples/tutorial_builder/04_01_enum.rs b/vendor/clap/examples/tutorial_builder/04_01_enum.rs
deleted file mode 100644
index ad2177c23..000000000
--- a/vendor/clap/examples/tutorial_builder/04_01_enum.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-// Note: this requires the `cargo` feature
-
-use clap::{arg, command, value_parser, ValueEnum};
-
-#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, ValueEnum)]
-enum Mode {
- Fast,
- Slow,
-}
-
-fn main() {
- let matches = command!()
- .arg(
- arg!(<MODE>)
- .help("What mode to run the program in")
- .value_parser(value_parser!(Mode)),
- )
- .get_matches();
-
- // Note, it's safe to call unwrap() because the arg is required
- match matches
- .get_one::<Mode>("MODE")
- .expect("'MODE' is required and parsing will fail if its missing")
- {
- Mode::Fast => {
- println!("Hare");
- }
- Mode::Slow => {
- println!("Tortoise");
- }
- }
-}
diff --git a/vendor/clap/examples/tutorial_builder/README.md b/vendor/clap/examples/tutorial_builder/README.md
deleted file mode 100644
index 945b01e72..000000000
--- a/vendor/clap/examples/tutorial_builder/README.md
+++ /dev/null
@@ -1,658 +0,0 @@
-# Tutorial
-
-*Jump to [derive tutorial](../tutorial_derive/README.md)*
-
-1. [Quick Start](#quick-start)
-2. [Configuring the Parser](#configuring-the-parser)
-3. [Adding Arguments](#adding-arguments)
- 1. [Positionals](#positionals)
- 2. [Options](#options)
- 3. [Flags](#flags)
- 4. [Subcommands](#subcommands)
- 5. [Defaults](#defaults)
-4. Validation
- 1. [Enumerated values](#enumerated-values)
- 2. [Validated values](#validated-values)
- 3. [Argument Relations](#argument-relations)
- 4. [Custom Validation](#custom-validation)
-5. [Tips](#tips)
-6. [Contributing](#contributing)
-
-## Quick Start
-
-You can create an application with several arguments using usage strings.
-
-[Example:](01_quick.rs)
-```console
-$ 01_quick --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 01_quick[EXE] [OPTIONS] [name] [SUBCOMMAND]
-
-ARGS:
- <name> Optional name to operate on
-
-OPTIONS:
- -c, --config <FILE> Sets a custom config file
- -d, --debug Turn debugging information on
- -h, --help Print help information
- -V, --version Print version information
-
-SUBCOMMANDS:
- help Print this message or the help of the given subcommand(s)
- test does testing things
-
-```
-
-By default, the program does nothing:
-```console
-$ 01_quick
-Debug mode is off
-
-```
-
-But you can mix and match the various features
-```console
-$ 01_quick -dd test
-Debug mode is on
-Not printing testing lists...
-
-```
-
-## Configuring the Parser
-
-You use the `Command` the start building a parser.
-
-[Example:](02_apps.rs)
-```console
-$ 02_apps --help
-MyApp 1.0
-Kevin K. <kbknapp@gmail.com>
-Does awesome things
-
-USAGE:
- 02_apps[EXE] --two <VALUE> --one <VALUE>
-
-OPTIONS:
- -h, --help Print help information
- --one <VALUE>
- --two <VALUE>
- -V, --version Print version information
-
-$ 02_apps --version
-MyApp 1.0
-
-```
-
-You can use `command!()` to fill these fields in from your `Cargo.toml`
-file. **This requires the `cargo` feature flag.**
-
-[Example:](02_crate.rs)
-```console
-$ 02_crate --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 02_crate[EXE] --two <VALUE> --one <VALUE>
-
-OPTIONS:
- -h, --help Print help information
- --one <VALUE>
- --two <VALUE>
- -V, --version Print version information
-
-$ 02_crate --version
-clap [..]
-
-```
-
-You can use `Command` methods to change the application level behavior of clap.
-
-[Example:](02_app_settings.rs)
-```console
-$ 02_app_settings --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 02_app_settings[EXE] --two <VALUE> --one <VALUE>
-
-OPTIONS:
- --two <VALUE>
- --one <VALUE>
- -h, --help Print help information
- -V, --version Print version information
-
-$ 02_app_settings --one -1 --one -3 --two 10
-two: "10"
-one: "-3"
-
-```
-
-## Adding Arguments
-
-### Positionals
-
-You can have users specify values by their position on the command-line:
-
-[Example:](03_03_positional.rs)
-```console
-$ 03_03_positional --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_03_positional[EXE] [NAME]
-
-ARGS:
- <NAME>
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 03_03_positional
-NAME: None
-
-$ 03_03_positional bob
-NAME: Some("bob")
-
-```
-
-### Options
-
-You can name your arguments with a flag:
-- Order doesn't matter
-- They can be optional
-- Intent is clearer
-
-[Example:](03_02_option.rs)
-```console
-$ 03_02_option --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_02_option[EXE] [OPTIONS]
-
-OPTIONS:
- -h, --help Print help information
- -n, --name <NAME>
- -V, --version Print version information
-
-$ 03_02_option
-name: None
-
-$ 03_02_option --name bob
-name: Some("bob")
-
-$ 03_02_option --name=bob
-name: Some("bob")
-
-$ 03_02_option -n bob
-name: Some("bob")
-
-$ 03_02_option -n=bob
-name: Some("bob")
-
-$ 03_02_option -nbob
-name: Some("bob")
-
-```
-
-### Flags
-
-Flags can also be switches that can be on/off:
-
-[Example:](03_01_flag_bool.rs)
-```console
-$ 03_01_flag_bool --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_01_flag_bool[EXE] [OPTIONS]
-
-OPTIONS:
- -h, --help Print help information
- -v, --verbose
- -V, --version Print version information
-
-$ 03_01_flag_bool
-verbose: false
-
-$ 03_01_flag_bool --verbose
-verbose: true
-
-$ 03_01_flag_bool --verbose --verbose
-verbose: true
-
-```
-
-Or counted.
-
-[Example:](03_01_flag_count.rs)
-```console
-$ 03_01_flag_count --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_01_flag_count[EXE] [OPTIONS]
-
-OPTIONS:
- -h, --help Print help information
- -v, --verbose
- -V, --version Print version information
-
-$ 03_01_flag_count
-verbose: 0
-
-$ 03_01_flag_count --verbose
-verbose: 1
-
-$ 03_01_flag_count --verbose --verbose
-verbose: 2
-
-```
-
-### Subcommands
-
-Subcommands are defined as `Command`s that get added via `Command::subcommand`. Each
-instance of a Subcommand can have its own version, author(s), Args, and even its own
-subcommands.
-
-[Example:](03_04_subcommands.rs)
-```console
-$ 03_04_subcommands help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_04_subcommands[EXE] <SUBCOMMAND>
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-SUBCOMMANDS:
- add Adds files to myapp
- help Print this message or the help of the given subcommand(s)
-
-$ 03_04_subcommands help add
-03_04_subcommands[EXE]-add [..]
-Adds files to myapp
-
-USAGE:
- 03_04_subcommands[EXE] add [NAME]
-
-ARGS:
- <NAME>
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 03_04_subcommands add bob
-'myapp add' was used, name is: Some("bob")
-
-```
-
-Because we set `Command::arg_required_else_help`:
-```console
-$ 03_04_subcommands
-? failed
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_04_subcommands[EXE] <SUBCOMMAND>
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-SUBCOMMANDS:
- add Adds files to myapp
- help Print this message or the help of the given subcommand(s)
-
-```
-
-Because we set `Command::propagate_version`:
-```console
-$ 03_04_subcommands --version
-clap [..]
-
-$ 03_04_subcommands add --version
-03_04_subcommands[EXE]-add [..]
-
-```
-
-### Defaults
-
-We've previously showed that arguments can be `required` or optional. When
-optional, you work with a `Option` and can `unwrap_or`. Alternatively, you can
-set `Arg::default_value`.
-
-[Example:](03_05_default_values.rs)
-```console
-$ 03_05_default_values --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_05_default_values[EXE] [NAME]
-
-ARGS:
- <NAME> [default: alice]
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 03_05_default_values
-NAME: "alice"
-
-$ 03_05_default_values bob
-NAME: "bob"
-
-```
-
-## Validation
-
-### Enumerated values
-
-If you have arguments of specific values you want to test for, you can use the
-`PossibleValuesParser` or `Arg::value_parser(["val1", ...])` for short.
-
-This allows you specify the valid values for that argument. If the user does not use one of
-those specific values, they will receive a graceful exit with error message informing them
-of the mistake, and what the possible valid values are
-
-[Example:](04_01_possible.rs)
-```console
-$ 04_01_possible --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_01_possible[EXE] <MODE>
-
-ARGS:
- <MODE> What mode to run the program in [possible values: fast, slow]
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 04_01_possible fast
-Hare
-
-$ 04_01_possible slow
-Tortoise
-
-$ 04_01_possible medium
-? failed
-error: "medium" isn't a valid value for '<MODE>'
- [possible values: fast, slow]
-
-For more information try --help
-
-```
-
-When enabling the `derive` feature, you can use `ValueEnum` to take care of the boiler plate for you, giving the same results.
-
-[Example:](04_01_enum.rs)
-```console
-$ 04_01_enum --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_01_enum[EXE] <MODE>
-
-ARGS:
- <MODE> What mode to run the program in [possible values: fast, slow]
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 04_01_enum fast
-Hare
-
-$ 04_01_enum slow
-Tortoise
-
-$ 04_01_enum medium
-? failed
-error: "medium" isn't a valid value for '<MODE>'
- [possible values: fast, slow]
-
-For more information try --help
-
-```
-
-### Validated values
-
-More generally, you can validate and parse into any data type.
-
-[Example:](04_02_parse.rs)
-```console
-$ 04_02_parse --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_02_parse[EXE] <PORT>
-
-ARGS:
- <PORT> Network port to use
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 04_02_parse 22
-PORT = 22
-
-$ 04_02_parse foobar
-? failed
-error: Invalid value "foobar" for '<PORT>': invalid digit found in string
-
-For more information try --help
-
-$ 04_02_parse_derive 0
-? failed
-error: Invalid value "0" for '<PORT>': 0 is not in 1..=65535
-
-For more information try --help
-
-```
-
-A custom parser can be used to improve the error messages or provide additional validation:
-
-[Example:](04_02_validate.rs)
-```console
-$ 04_02_validate --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_02_validate[EXE] <PORT>
-
-ARGS:
- <PORT> Network port to use
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 04_02_validate 22
-PORT = 22
-
-$ 04_02_validate foobar
-? failed
-error: Invalid value "foobar" for '<PORT>': `foobar` isn't a port number
-
-For more information try --help
-
-$ 04_02_validate 0
-? failed
-error: Invalid value "0" for '<PORT>': Port not in range 1-65535
-
-For more information try --help
-
-```
-
-### Argument Relations
-
-You can declare dependencies or conflicts between `Arg`s or even `ArgGroup`s.
-
-`ArgGroup`s make it easier to declare relations instead of having to list each
-individually, or when you want a rule to apply "any but not all" arguments.
-
-Perhaps the most common use of `ArgGroup`s is to require one and *only* one argument to be
-present out of a given set. Imagine that you had multiple arguments, and you want one of them to
-be required, but making all of them required isn't feasible because perhaps they conflict with
-each other.
-
-[Example:](04_03_relations.rs)
-```console
-$ 04_03_relations --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_03_relations[EXE] [OPTIONS] <--set-ver <VER>|--major|--minor|--patch> [INPUT_FILE]
-
-ARGS:
- <INPUT_FILE> some regular input
-
-OPTIONS:
- -c <CONFIG>
- -h, --help Print help information
- --major auto inc major
- --minor auto inc minor
- --patch auto inc patch
- --set-ver <VER> set version manually
- --spec-in <SPEC_IN> some special input argument
- -V, --version Print version information
-
-$ 04_03_relations
-? failed
-error: The following required arguments were not provided:
- <--set-ver <VER>|--major|--minor|--patch>
-
-USAGE:
- 04_03_relations[EXE] [OPTIONS] <--set-ver <VER>|--major|--minor|--patch> [INPUT_FILE]
-
-For more information try --help
-
-$ 04_03_relations --major
-Version: 2.2.3
-
-$ 04_03_relations --major --minor
-? failed
-error: The argument '--major' cannot be used with '--minor'
-
-USAGE:
- 04_03_relations[EXE] <--set-ver <VER>|--major|--minor|--patch>
-
-For more information try --help
-
-$ 04_03_relations --major -c config.toml
-? failed
-error: The following required arguments were not provided:
- <INPUT_FILE|--spec-in <SPEC_IN>>
-
-USAGE:
- 04_03_relations[EXE] -c <CONFIG> <--set-ver <VER>|--major|--minor|--patch> <INPUT_FILE|--spec-in <SPEC_IN>>
-
-For more information try --help
-
-$ 04_03_relations --major -c config.toml --spec-in input.txt
-Version: 2.2.3
-Doing work using input input.txt and config config.toml
-
-```
-
-### Custom Validation
-
-As a last resort, you can create custom errors with the basics of clap's formatting.
-
-[Example:](04_04_custom.rs)
-```console
-$ 04_04_custom --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_04_custom[EXE] [OPTIONS] [INPUT_FILE]
-
-ARGS:
- <INPUT_FILE> some regular input
-
-OPTIONS:
- -c <CONFIG>
- -h, --help Print help information
- --major auto inc major
- --minor auto inc minor
- --patch auto inc patch
- --set-ver <VER> set version manually
- --spec-in <SPEC_IN> some special input argument
- -V, --version Print version information
-
-$ 04_04_custom
-? failed
-error: Can only modify one version field
-
-USAGE:
- 04_04_custom[EXE] [OPTIONS] [INPUT_FILE]
-
-For more information try --help
-
-$ 04_04_custom --major
-Version: 2.2.3
-
-$ 04_04_custom --major --minor
-? failed
-error: Can only modify one version field
-
-USAGE:
- 04_04_custom[EXE] [OPTIONS] [INPUT_FILE]
-
-For more information try --help
-
-$ 04_04_custom --major -c config.toml
-? failed
-Version: 2.2.3
-error: INPUT_FILE or --spec-in is required when using --config
-
-USAGE:
- 04_04_custom[EXE] [OPTIONS] [INPUT_FILE]
-
-For more information try --help
-
-$ 04_04_custom --major -c config.toml --spec-in input.txt
-Version: 2.2.3
-Doing work using input input.txt and config config.toml
-
-```
-
-## Tips
-
-- For more complex demonstration of features, see our [examples](../README.md).
-- Proactively check for bad `Command` configurations by calling `Command::debug_assert` in a test ([example](05_01_assert.rs))
-
-## Contributing
-
-New example code:
-- Please update the corresponding section in the [derive tutorial](../tutorial_derive/README.md)
-- Building: They must be added to [Cargo.toml](../../Cargo.toml) with the appropriate `required-features`.
-- Testing: Ensure there is a markdown file with [trycmd](https://docs.rs/trycmd) syntax (generally they'll go in here).
-
-See also the general [CONTRIBUTING](../../CONTRIBUTING.md).
diff --git a/vendor/clap/examples/tutorial_derive/README.md b/vendor/clap/examples/tutorial_derive/README.md
deleted file mode 100644
index 6127b6cd3..000000000
--- a/vendor/clap/examples/tutorial_derive/README.md
+++ /dev/null
@@ -1,639 +0,0 @@
-# Tutorial
-
-*Jump to [builder tutorial](../tutorial_builder/README.md)*
-
-1. [Quick Start](#quick-start)
-2. [Configuring the Parser](#configuring-the-parser)
-3. [Adding Arguments](#adding-arguments)
- 1. [Positionals](#positionals)
- 2. [Options](#options)
- 3. [Flags](#flags)
- 4. [Subcommands](#subcommands)
- 5. [Defaults](#defaults)
-4. Validation
- 1. [Enumerated values](#enumerated-values)
- 2. [Validated values](#validated-values)
- 3. [Argument Relations](#argument-relations)
- 4. [Custom Validation](#custom-validation)
-5. [Tips](#tips)
-6. [Contributing](#contributing)
-
-## Quick Start
-
-You can create an application declaratively with a `struct` and some
-attributes. **This requires enabling the `derive` feature flag.**
-
-[Example:](01_quick.rs)
-```console
-$ 01_quick_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 01_quick_derive[EXE] [OPTIONS] [NAME] [SUBCOMMAND]
-
-ARGS:
- <NAME> Optional name to operate on
-
-OPTIONS:
- -c, --config <FILE> Sets a custom config file
- -d, --debug Turn debugging information on
- -h, --help Print help information
- -V, --version Print version information
-
-SUBCOMMANDS:
- help Print this message or the help of the given subcommand(s)
- test does testing things
-
-```
-
-By default, the program does nothing:
-```console
-$ 01_quick_derive
-Debug mode is off
-
-```
-
-But you can mix and match the various features
-```console
-$ 01_quick_derive -dd test
-Debug mode is on
-Not printing testing lists...
-
-```
-
-In addition to this tutorial, see the [derive reference](../derive_ref/README.md).
-
-## Configuring the Parser
-
-You use derive `Parser` the start building a parser.
-
-[Example:](02_apps.rs)
-```console
-$ 02_apps_derive --help
-MyApp 1.0
-Kevin K. <kbknapp@gmail.com>
-Does awesome things
-
-USAGE:
- 02_apps_derive[EXE] --two <TWO> --one <ONE>
-
-OPTIONS:
- -h, --help Print help information
- --one <ONE>
- --two <TWO>
- -V, --version Print version information
-
-$ 02_apps_derive --version
-MyApp 1.0
-
-```
-
-You can use `#[clap(author, version, about)]` attribute defaults to fill these fields in from your `Cargo.toml` file.
-
-[Example:](02_crate.rs)
-```console
-$ 02_crate_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 02_crate_derive[EXE] --two <TWO> --one <ONE>
-
-OPTIONS:
- -h, --help Print help information
- --one <ONE>
- --two <TWO>
- -V, --version Print version information
-
-$ 02_crate_derive --version
-clap [..]
-
-```
-
-You can use attributes to change the application level behavior of clap. Any `Command` builder function can be used as an attribute.
-
-[Example:](02_app_settings.rs)
-```console
-$ 02_app_settings_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 02_app_settings_derive[EXE] --two <TWO> --one <ONE>
-
-OPTIONS:
- --two <TWO>
- --one <ONE>
- -h, --help Print help information
- -V, --version Print version information
-
-$ 02_app_settings_derive --one -1 --one -3 --two 10
-two: "10"
-one: "-3"
-
-```
-
-## Adding Arguments
-
-### Positionals
-
-You can have users specify values by their position on the command-line:
-
-[Example:](03_03_positional.rs)
-```console
-$ 03_03_positional_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_03_positional_derive[EXE] [NAME]
-
-ARGS:
- <NAME>
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 03_03_positional_derive
-name: None
-
-$ 03_03_positional_derive bob
-name: Some("bob")
-
-```
-
-### Options
-
-You can name your arguments with a flag:
-- Order doesn't matter
-- They can be optional
-- Intent is clearer
-
-The `#[clap(short = 'c')]` and `#[clap(long = "name")]` attributes that define
-the flags are `Arg` methods that are derived from the field name when no value
-is specified (`#[clap(short)]` and `#[clap(long)]`).
-
-[Example:](03_02_option.rs)
-```console
-$ 03_02_option_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_02_option_derive[EXE] [OPTIONS]
-
-OPTIONS:
- -h, --help Print help information
- -n, --name <NAME>
- -V, --version Print version information
-
-$ 03_02_option_derive
-name: None
-
-$ 03_02_option_derive --name bob
-name: Some("bob")
-
-$ 03_02_option_derive --name=bob
-name: Some("bob")
-
-$ 03_02_option_derive -n bob
-name: Some("bob")
-
-$ 03_02_option_derive -n=bob
-name: Some("bob")
-
-$ 03_02_option_derive -nbob
-name: Some("bob")
-
-```
-
-### Flags
-
-Flags can also be switches that can be on/off. This is enabled via the
-`#[clap(parse(from_flag)]` attribute though this is implied when the field is a
-`bool`.
-
-[Example:](03_01_flag_bool.rs)
-```console
-$ 03_01_flag_bool_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_01_flag_bool_derive[EXE] [OPTIONS]
-
-OPTIONS:
- -h, --help Print help information
- -v, --verbose
- -V, --version Print version information
-
-$ 03_01_flag_bool_derive
-verbose: false
-
-$ 03_01_flag_bool_derive --verbose
-verbose: true
-
-$ 03_01_flag_bool_derive --verbose --verbose
-verbose: true
-
-```
-
-Or counted with `#[clap(action = clap::ArgAction::Count)]`:
-
-[Example:](03_01_flag_count.rs)
-```console
-$ 03_01_flag_count_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_01_flag_count_derive[EXE] [OPTIONS]
-
-OPTIONS:
- -h, --help Print help information
- -v, --verbose
- -V, --version Print version information
-
-$ 03_01_flag_count_derive
-verbose: 0
-
-$ 03_01_flag_count_derive --verbose
-verbose: 1
-
-$ 03_01_flag_count_derive --verbose --verbose
-verbose: 2
-
-```
-
-### Subcommands
-
-Subcommands are derived with `#[derive(Subcommand)]` and be added via `#[clap(subcommand)]` attribute. Each
-instance of a Subcommand can have its own version, author(s), Args, and even its own
-subcommands.
-
-[Example:](03_04_subcommands.rs)
-```console
-$ 03_04_subcommands_derive help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_04_subcommands_derive[EXE] <SUBCOMMAND>
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-SUBCOMMANDS:
- add Adds files to myapp
- help Print this message or the help of the given subcommand(s)
-
-$ 03_04_subcommands_derive help add
-03_04_subcommands_derive[EXE]-add [..]
-Adds files to myapp
-
-USAGE:
- 03_04_subcommands_derive[EXE] add [NAME]
-
-ARGS:
- <NAME>
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 03_04_subcommands_derive add bob
-'myapp add' was used, name is: Some("bob")
-
-```
-
-Above, we used a struct-variant to define the `add` subcommand. Alternatively,
-you can
-[use a struct for your subcommand's arguments](03_04_subcommands_alt.rs).
-
-Because we used `command: Commands` instead of `command: Option<Commands>`:
-```console
-$ 03_04_subcommands_derive
-? failed
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_04_subcommands_derive[EXE] <SUBCOMMAND>
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-SUBCOMMANDS:
- add Adds files to myapp
- help Print this message or the help of the given subcommand(s)
-
-```
-
-Because we added `#[clap(propagate_version = true)]`:
-```console
-$ 03_04_subcommands_derive --version
-clap [..]
-
-$ 03_04_subcommands_derive add --version
-03_04_subcommands_derive[EXE]-add [..]
-
-```
-
-### Defaults
-
-We've previously showed that arguments can be `required` or optional. When
-optional, you work with an `Option` and can `unwrap_or`. Alternatively, you can
-set `#[clap(default_value_t)]`.
-
-[Example:](03_05_default_values.rs)
-```console
-$ 03_05_default_values_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 03_05_default_values_derive[EXE] [NAME]
-
-ARGS:
- <NAME> [default: alice]
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 03_05_default_values_derive
-name: "alice"
-
-$ 03_05_default_values_derive bob
-name: "bob"
-
-```
-
-## Validation
-
-### Enumerated values
-
-If you have arguments of specific values you want to test for, you can derive
-`ValueEnum`.
-
-This allows you specify the valid values for that argument. If the user does not use one of
-those specific values, they will receive a graceful exit with error message informing them
-of the mistake, and what the possible valid values are
-
-[Example:](04_01_enum.rs)
-```console
-$ 04_01_enum_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_01_enum_derive[EXE] <MODE>
-
-ARGS:
- <MODE> What mode to run the program in [possible values: fast, slow]
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 04_01_enum_derive fast
-Hare
-
-$ 04_01_enum_derive slow
-Tortoise
-
-$ 04_01_enum_derive medium
-? failed
-error: "medium" isn't a valid value for '<MODE>'
- [possible values: fast, slow]
-
-For more information try --help
-
-```
-
-### Validated values
-
-More generally, you can validate and parse into any data type.
-
-[Example:](04_02_parse.rs)
-```console
-$ 04_02_parse_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_02_parse_derive[EXE] <PORT>
-
-ARGS:
- <PORT> Network port to use
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 04_02_parse_derive 22
-PORT = 22
-
-$ 04_02_parse_derive foobar
-? failed
-error: Invalid value "foobar" for '<PORT>': invalid digit found in string
-
-For more information try --help
-
-$ 04_02_parse_derive 0
-? failed
-error: Invalid value "0" for '<PORT>': 0 is not in 1..=65535
-
-For more information try --help
-
-```
-
-A custom parser can be used to improve the error messages or provide additional validation:
-
-[Example:](04_02_validate.rs)
-```console
-$ 04_02_validate_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_02_validate_derive[EXE] <PORT>
-
-ARGS:
- <PORT> Network port to use
-
-OPTIONS:
- -h, --help Print help information
- -V, --version Print version information
-
-$ 04_02_validate_derive 22
-PORT = 22
-
-$ 04_02_validate_derive foobar
-? failed
-error: Invalid value "foobar" for '<PORT>': `foobar` isn't a port number
-
-For more information try --help
-
-$ 04_02_validate_derive 0
-? failed
-error: Invalid value "0" for '<PORT>': Port not in range 1-65535
-
-For more information try --help
-
-```
-
-### Argument Relations
-
-You can declare dependencies or conflicts between `Arg`s or even `ArgGroup`s.
-
-`ArgGroup`s make it easier to declare relations instead of having to list each
-individually, or when you want a rule to apply "any but not all" arguments.
-
-Perhaps the most common use of `ArgGroup`s is to require one and *only* one argument to be
-present out of a given set. Imagine that you had multiple arguments, and you want one of them to
-be required, but making all of them required isn't feasible because perhaps they conflict with
-each other.
-
-[Example:](04_03_relations.rs)
-```console
-$ 04_03_relations_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_03_relations_derive[EXE] [OPTIONS] <--set-ver <VER>|--major|--minor|--patch> [INPUT_FILE]
-
-ARGS:
- <INPUT_FILE> some regular input
-
-OPTIONS:
- -c <CONFIG>
- -h, --help Print help information
- --major auto inc major
- --minor auto inc minor
- --patch auto inc patch
- --set-ver <VER> set version manually
- --spec-in <SPEC_IN> some special input argument
- -V, --version Print version information
-
-$ 04_03_relations_derive
-? failed
-error: The following required arguments were not provided:
- <--set-ver <VER>|--major|--minor|--patch>
-
-USAGE:
- 04_03_relations_derive[EXE] [OPTIONS] <--set-ver <VER>|--major|--minor|--patch> [INPUT_FILE]
-
-For more information try --help
-
-$ 04_03_relations_derive --major
-Version: 2.2.3
-
-$ 04_03_relations_derive --major --minor
-? failed
-error: The argument '--major' cannot be used with '--minor'
-
-USAGE:
- 04_03_relations_derive[EXE] <--set-ver <VER>|--major|--minor|--patch>
-
-For more information try --help
-
-$ 04_03_relations_derive --major -c config.toml
-? failed
-error: The following required arguments were not provided:
- <INPUT_FILE|--spec-in <SPEC_IN>>
-
-USAGE:
- 04_03_relations_derive[EXE] -c <CONFIG> <--set-ver <VER>|--major|--minor|--patch> <INPUT_FILE|--spec-in <SPEC_IN>>
-
-For more information try --help
-
-$ 04_03_relations_derive --major -c config.toml --spec-in input.txt
-Version: 2.2.3
-Doing work using input input.txt and config config.toml
-
-```
-
-### Custom Validation
-
-As a last resort, you can create custom errors with the basics of clap's formatting.
-
-[Example:](04_04_custom.rs)
-```console
-$ 04_04_custom_derive --help
-clap [..]
-A simple to use, efficient, and full-featured Command Line Argument Parser
-
-USAGE:
- 04_04_custom_derive[EXE] [OPTIONS] [INPUT_FILE]
-
-ARGS:
- <INPUT_FILE> some regular input
-
-OPTIONS:
- -c <CONFIG>
- -h, --help Print help information
- --major auto inc major
- --minor auto inc minor
- --patch auto inc patch
- --set-ver <VER> set version manually
- --spec-in <SPEC_IN> some special input argument
- -V, --version Print version information
-
-$ 04_04_custom_derive
-? failed
-error: Can only modify one version field
-
-USAGE:
- clap [OPTIONS] [INPUT_FILE]
-
-For more information try --help
-
-$ 04_04_custom_derive --major
-Version: 2.2.3
-
-$ 04_04_custom_derive --major --minor
-? failed
-error: Can only modify one version field
-
-USAGE:
- clap [OPTIONS] [INPUT_FILE]
-
-For more information try --help
-
-$ 04_04_custom_derive --major -c config.toml
-? failed
-Version: 2.2.3
-error: INPUT_FILE or --spec-in is required when using --config
-
-USAGE:
- clap [OPTIONS] [INPUT_FILE]
-
-For more information try --help
-
-$ 04_04_custom_derive --major -c config.toml --spec-in input.txt
-Version: 2.2.3
-Doing work using input input.txt and config config.toml
-
-```
-
-## Tips
-
-- For more complex demonstration of features, see our [examples](../README.md).
-- See the [derive reference](../derive_ref/README.md) to understand how to use
- anything in the [builder API](https://docs.rs/clap/) in the derive API.
-- Proactively check for bad `Command` configurations by calling `Command::debug_assert` in a test ([example](05_01_assert.rs))
-
-## Contributing
-
-New example code:
-- Please update the corresponding section in the [builder tutorial](../tutorial_builder/README.md)
-- Building: They must be added to [Cargo.toml](../../Cargo.toml) with the appropriate `required-features`.
-- Testing: Ensure there is a markdown file with [trycmd](https://docs.rs/trycmd) syntax (generally they'll go in here).
-
-See also the general [CONTRIBUTING](../../CONTRIBUTING.md).
diff --git a/vendor/clap_derive/.cargo-checksum.json b/vendor/clap_derive/.cargo-checksum.json
index 8d3303f99..1dfa35a62 100644
--- a/vendor/clap_derive/.cargo-checksum.json
+++ b/vendor/clap_derive/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"29d214d0c807739f6d147a1a472dfab5d929b4dd31623f670df28a713be107e8","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"6725d1437fc6c77301f2ff0e7d52914cf4f9509213e1078dc77d9356dbe6eac5","README.md":"d99fca4ba5976a41b150cd7f5c17100e0d275b9bf48b51a0d964115dc81e20b9","src/attrs.rs":"dd4288ac38aeb184bbffade71af48706034f10d311068af2917c0f96d813698a","src/derives/args.rs":"27a13d33f24f7f7668c82fa653978e909514bd39e808c7996fddb0d3a3c0e570","src/derives/into_app.rs":"02c36d403ad35e3d49de6042cacecf2a724561b5e3948b5aec4b45646e031877","src/derives/mod.rs":"ff7947fddee4b3d8365e29459a02458382e13df022aee822e09bce1ac255d3bb","src/derives/parser.rs":"9ca609e6e5bfb303e22b4ecb8aca9035571179920b0df91031e9f987559252e0","src/derives/subcommand.rs":"0513c48013c2bd9f450ffc7bfcbf84b3a3290e37ff571dd070798356c2b291ac","src/derives/value_enum.rs":"27b87ccb6829925f6ffa631109217bffd81b74f61519841678bd6d8c5cfcbe40","src/dummies.rs":"02f111bbd84b8f0525faeb9189c59cb2fd2df05ae6c7b014735c82feac5ff23f","src/lib.rs":"e4be47e8db06a6555a2a4cd1802d17c16a3b51ae0ec291b3ec75ef2b6517eb0e","src/parse.rs":"f0d720da5477755bdce02fcd248a57efe74b2fbbc5e07c5dc17d9bf78b017958","src/utils/doc_comments.rs":"386859b274fd1e298aeaeafd2b20764db0957cbb4e6c9e8bab52a506a0b8ecda","src/utils/mod.rs":"ee28526587d2d80d5dba162f28191f44f6a0c296d0e52225eb74b90534d49b25","src/utils/spanned.rs":"e93600124c54985533f74fe23f096f4ada94b310eff97a16f0ce40fb0f690a3b","src/utils/ty.rs":"0a9b8c5dabfa28388b60423f4b6075a275b347258ac35301997cb0d7f763607f"},"package":"c11d40217d16aee8508cc8e5fde8b4ff24639758608e5374e731b53f85749fb9"} \ No newline at end of file
+{"files":{"Cargo.toml":"eaf10a4c685b527f604ea9f84fbe7095e15fe4424225c57481d0555a89dfb054","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-MIT":"0d687e1f07b58fe68bda74668ff6326125e5e5efa184cce755cd84ac535b7058","README.md":"4ec07b9c59a2ddcedcdc9d21d51c147b18157794b03ff2ea5ae57f2b5236943d","src/attrs.rs":"1c95a75fd377d19587f429d3f51544ac0ca96f868cce4ffe12d1163f7465fa73","src/derives/args.rs":"27a13d33f24f7f7668c82fa653978e909514bd39e808c7996fddb0d3a3c0e570","src/derives/into_app.rs":"02c36d403ad35e3d49de6042cacecf2a724561b5e3948b5aec4b45646e031877","src/derives/mod.rs":"ff7947fddee4b3d8365e29459a02458382e13df022aee822e09bce1ac255d3bb","src/derives/parser.rs":"9ca609e6e5bfb303e22b4ecb8aca9035571179920b0df91031e9f987559252e0","src/derives/subcommand.rs":"0513c48013c2bd9f450ffc7bfcbf84b3a3290e37ff571dd070798356c2b291ac","src/derives/value_enum.rs":"4d0958d3a767c82f2366d8fda20367c5aa033af616d09ef581e8abdb2e029a70","src/dummies.rs":"02f111bbd84b8f0525faeb9189c59cb2fd2df05ae6c7b014735c82feac5ff23f","src/lib.rs":"e4be47e8db06a6555a2a4cd1802d17c16a3b51ae0ec291b3ec75ef2b6517eb0e","src/parse.rs":"ceaac282cabccfac5bcf56ce02095c9acbf00dbfdd3c3009fa58e87bdde46218","src/utils/doc_comments.rs":"386859b274fd1e298aeaeafd2b20764db0957cbb4e6c9e8bab52a506a0b8ecda","src/utils/mod.rs":"ee28526587d2d80d5dba162f28191f44f6a0c296d0e52225eb74b90534d49b25","src/utils/spanned.rs":"e93600124c54985533f74fe23f096f4ada94b310eff97a16f0ce40fb0f690a3b","src/utils/ty.rs":"0a9b8c5dabfa28388b60423f4b6075a275b347258ac35301997cb0d7f763607f"},"package":"ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65"} \ No newline at end of file
diff --git a/vendor/clap_derive/Cargo.toml b/vendor/clap_derive/Cargo.toml
index 49e3fd963..f74476e68 100644
--- a/vendor/clap_derive/Cargo.toml
+++ b/vendor/clap_derive/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2021"
-rust-version = "1.56.0"
+rust-version = "1.56.1"
name = "clap_derive"
-version = "3.2.5"
+version = "3.2.18"
include = [
"build.rs",
"src/**/*",
@@ -24,7 +24,6 @@ include = [
"examples/**/*",
]
description = "Parse command line argument by defining a struct, derive crate."
-documentation = "https://docs.rs/clap_derive"
readme = "README.md"
keywords = [
"clap",
diff --git a/vendor/clap_derive/LICENSE-MIT b/vendor/clap_derive/LICENSE-MIT
index 5acedf041..7b05b8453 100644
--- a/vendor/clap_derive/LICENSE-MIT
+++ b/vendor/clap_derive/LICENSE-MIT
@@ -1,6 +1,6 @@
The MIT License (MIT)
-Copyright (c) 2015-2016 Kevin B. Knapp
+Copyright (c) 2015-2022 Kevin B. Knapp and Clap Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/vendor/clap_derive/README.md b/vendor/clap_derive/README.md
index 1acadb355..17f649eda 100644
--- a/vendor/clap_derive/README.md
+++ b/vendor/clap_derive/README.md
@@ -3,8 +3,8 @@
Macro implementation for clap's derives.
[docs.rs](https://docs.rs/clap)
-- [Derive Tutorial](https://github.com/clap-rs/clap/blob/v3.2.5/examples/tutorial_derive/README.md)
-- [Derive Reference](https://github.com/clap-rs/clap/blob/v3.2.5/examples/derive_ref/README.md)
+- [Derive Tutorial](https://github.com/clap-rs/clap/blob/v3.2.18/examples/tutorial_derive/README.md)
+- [Derive Reference](https://github.com/clap-rs/clap/blob/v3.2.18/examples/derive_ref/README.md)
## License
diff --git a/vendor/clap_derive/src/attrs.rs b/vendor/clap_derive/src/attrs.rs
index 3c685fbe8..2c5b47d95 100644
--- a/vendor/clap_derive/src/attrs.rs
+++ b/vendor/clap_derive/src/attrs.rs
@@ -450,7 +450,7 @@ impl Attrs {
}
fn push_method(&mut self, name: Ident, arg: impl ToTokens) {
- if name == "name" {
+ if name == "name" || name == "id" {
self.name = Name::Assigned(quote!(#arg));
} else if name == "value_parser" {
self.value_parser = Some(ValueParser::Explicit(Method::new(name, quote!(#arg))));
@@ -552,7 +552,7 @@ impl Attrs {
})
} else {
quote_spanned!(ident.span()=> {
- static DEFAULT_VALUE: clap::once_cell::sync::Lazy<String> = clap::once_cell::sync::Lazy::new(|| {
+ static DEFAULT_VALUE: clap::__macro_refs::once_cell::sync::Lazy<String> = clap::__macro_refs::once_cell::sync::Lazy::new(|| {
let val: #ty = #val;
::std::string::ToString::to_string(&val)
});
@@ -564,6 +564,81 @@ impl Attrs {
self.methods.push(Method::new(raw_ident, val));
}
+ DefaultValuesT(ident, expr) => {
+ let ty = if let Some(ty) = self.ty.as_ref() {
+ ty
+ } else {
+ abort!(
+ ident,
+ "#[clap(default_values_t)] (without an argument) can be used \
+ only on field level";
+
+ note = "see \
+ https://github.com/clap-rs/clap/blob/master/examples/derive_ref/README.md#magic-attributes")
+ };
+
+ let container_type = Ty::from_syn_ty(ty);
+ if *container_type != Ty::Vec {
+ abort!(
+ ident,
+ "#[clap(default_values_t)] can be used only on Vec types";
+
+ note = "see \
+ https://github.com/clap-rs/clap/blob/master/examples/derive_ref/README.md#magic-attributes")
+ }
+ let inner_type = inner_type(ty);
+
+ // Use `Borrow<#inner_type>` so we accept `&Vec<#inner_type>` and
+ // `Vec<#inner_type>`.
+ let val = if parsed.iter().any(|a| matches!(a, ValueEnum(_))) {
+ quote_spanned!(ident.span()=> {
+ {
+ fn iter_to_vals<T>(iterable: impl IntoIterator<Item = T>) -> Vec<&'static str>
+ where
+ T: ::std::borrow::Borrow<#inner_type>
+ {
+ iterable
+ .into_iter()
+ .map(|val| {
+ clap::ValueEnum::to_possible_value(val.borrow()).unwrap().get_name()
+ })
+ .collect()
+
+ }
+
+ static DEFAULT_VALUES: clap::__macro_refs::once_cell::sync::Lazy<Vec<&str>> = clap::__macro_refs::once_cell::sync::Lazy::new(|| {
+ iter_to_vals(#expr)
+ });
+ &*DEFAULT_VALUES.as_slice()
+ }
+ })
+ } else {
+ quote_spanned!(ident.span()=> {
+ {
+ fn iter_to_vals<T>(iterable: impl IntoIterator<Item = T>) -> Vec<String>
+ where
+ T: ::std::borrow::Borrow<#inner_type>
+ {
+ iterable.into_iter().map(|val| val.borrow().to_string()).collect()
+
+ }
+
+ static DEFAULT_STRINGS: clap::__macro_refs::once_cell::sync::Lazy<Vec<::std::string::String>> = clap::__macro_refs::once_cell::sync::Lazy::new(|| {
+ iter_to_vals(#expr)
+ });
+
+ static DEFAULT_VALUES: clap::__macro_refs::once_cell::sync::Lazy<Vec<&str>> = clap::__macro_refs::once_cell::sync::Lazy::new(|| {
+ DEFAULT_STRINGS.iter().map(::std::string::String::as_str).collect()
+ });
+ &*DEFAULT_VALUES.as_slice()
+ }
+ })
+ };
+
+ self.methods
+ .push(Method::new(Ident::new("default_values", ident.span()), val));
+ }
+
DefaultValueOsT(ident, expr) => {
let ty = if let Some(ty) = self.ty.as_ref() {
ty
@@ -592,7 +667,7 @@ impl Attrs {
})
} else {
quote_spanned!(ident.span()=> {
- static DEFAULT_VALUE: clap::once_cell::sync::Lazy<::std::ffi::OsString> = clap::once_cell::sync::Lazy::new(|| {
+ static DEFAULT_VALUE: clap::__macro_refs::once_cell::sync::Lazy<::std::ffi::OsString> = clap::__macro_refs::once_cell::sync::Lazy::new(|| {
let val: #ty = #val;
::std::ffi::OsString::from(val)
});
@@ -604,6 +679,84 @@ impl Attrs {
self.methods.push(Method::new(raw_ident, val));
}
+ DefaultValuesOsT(ident, expr) => {
+ let ty = if let Some(ty) = self.ty.as_ref() {
+ ty
+ } else {
+ abort!(
+ ident,
+ "#[clap(default_values_os_t)] (without an argument) can be used \
+ only on field level";
+
+ note = "see \
+ https://github.com/clap-rs/clap/blob/master/examples/derive_ref/README.md#magic-attributes")
+ };
+
+ let container_type = Ty::from_syn_ty(ty);
+ if *container_type != Ty::Vec {
+ abort!(
+ ident,
+ "#[clap(default_values_os_t)] can be used only on Vec types";
+
+ note = "see \
+ https://github.com/clap-rs/clap/blob/master/examples/derive_ref/README.md#magic-attributes")
+ }
+ let inner_type = inner_type(ty);
+
+ // Use `Borrow<#inner_type>` so we accept `&Vec<#inner_type>` and
+ // `Vec<#inner_type>`.
+ let val = if parsed.iter().any(|a| matches!(a, ValueEnum(_))) {
+ quote_spanned!(ident.span()=> {
+ {
+ fn iter_to_vals<T>(iterable: impl IntoIterator<Item = T>) -> Vec<&'static ::std::ffi::OsStr>
+ where
+ T: ::std::borrow::Borrow<#inner_type>
+ {
+ iterable
+ .into_iter()
+ .map(|val| {
+ clap::ValueEnum::to_possible_value(val.borrow()).unwrap().get_name()
+ })
+ .map(::std::ffi::OsStr::new)
+ .collect()
+
+ }
+
+ static DEFAULT_VALUES: clap::__macro_refs::once_cell::sync::Lazy<Vec<&::std::ffi::OsStr>> = clap::__macro_refs::once_cell::sync::Lazy::new(|| {
+ iter_to_vals(#expr)
+ });
+ &*DEFAULT_VALUES.as_slice()
+ }
+ })
+ } else {
+ quote_spanned!(ident.span()=> {
+ {
+ fn iter_to_vals<T>(iterable: impl IntoIterator<Item = T>) -> Vec<::std::ffi::OsString>
+ where
+ T: ::std::borrow::Borrow<#inner_type>
+ {
+ iterable.into_iter().map(|val| val.borrow().into()).collect()
+
+ }
+
+ static DEFAULT_OS_STRINGS: clap::__macro_refs::once_cell::sync::Lazy<Vec<::std::ffi::OsString>> = clap::__macro_refs::once_cell::sync::Lazy::new(|| {
+ iter_to_vals(#expr)
+ });
+
+ static DEFAULT_VALUES: clap::__macro_refs::once_cell::sync::Lazy<Vec<&::std::ffi::OsStr>> = clap::__macro_refs::once_cell::sync::Lazy::new(|| {
+ DEFAULT_OS_STRINGS.iter().map(::std::ffi::OsString::as_os_str).collect()
+ });
+ &*DEFAULT_VALUES.as_slice()
+ }
+ })
+ };
+
+ self.methods.push(Method::new(
+ Ident::new("default_values_os", ident.span()),
+ val,
+ ));
+ }
+
NextDisplayOrder(ident, expr) => {
self.next_display_order = Some(Method::new(ident, quote!(#expr)));
}
diff --git a/vendor/clap_derive/src/derives/value_enum.rs b/vendor/clap_derive/src/derives/value_enum.rs
index b18b665c4..06d514f0e 100644
--- a/vendor/clap_derive/src/derives/value_enum.rs
+++ b/vendor/clap_derive/src/derives/value_enum.rs
@@ -84,7 +84,7 @@ fn lits(
None
} else {
if !matches!(variant.fields, Fields::Unit) {
- abort!(variant.span(), "`#[derive(ValueEnum)]` only supports non-unit variants, unless they are skipped");
+ abort!(variant.span(), "`#[derive(ValueEnum)]` only supports unit variants. Non-unit variants must be skipped");
}
let fields = attrs.field_methods(false);
let name = attrs.cased_name();
diff --git a/vendor/clap_derive/src/parse.rs b/vendor/clap_derive/src/parse.rs
index 253736cfd..7d7e19cdc 100644
--- a/vendor/clap_derive/src/parse.rs
+++ b/vendor/clap_derive/src/parse.rs
@@ -53,7 +53,9 @@ pub enum ClapAttr {
// ident = arbitrary_expr
NameExpr(Ident, Expr),
DefaultValueT(Ident, Option<Expr>),
+ DefaultValuesT(Ident, Expr),
DefaultValueOsT(Ident, Option<Expr>),
+ DefaultValuesOsT(Ident, Expr),
NextDisplayOrder(Ident, Expr),
NextHelpHeading(Ident, Expr),
HelpHeading(Ident, Expr),
@@ -122,7 +124,9 @@ impl Parse for ClapAttr {
Ok(expr) => match &*name_str {
"skip" => Ok(Skip(name, Some(expr))),
"default_value_t" => Ok(DefaultValueT(name, Some(expr))),
+ "default_values_t" => Ok(DefaultValuesT(name, expr)),
"default_value_os_t" => Ok(DefaultValueOsT(name, Some(expr))),
+ "default_values_os_t" => Ok(DefaultValuesOsT(name, expr)),
"next_display_order" => Ok(NextDisplayOrder(name, expr)),
"next_help_heading" => Ok(NextHelpHeading(name, expr)),
"help_heading" => Ok(HelpHeading(name, expr)),
diff --git a/vendor/clap_lex/.cargo-checksum.json b/vendor/clap_lex-0.2.2/.cargo-checksum.json
index d1fc5c2fe..d1fc5c2fe 100644
--- a/vendor/clap_lex/.cargo-checksum.json
+++ b/vendor/clap_lex-0.2.2/.cargo-checksum.json
diff --git a/vendor/clap_lex/Cargo.toml b/vendor/clap_lex-0.2.2/Cargo.toml
index b089dcde8..b089dcde8 100644
--- a/vendor/clap_lex/Cargo.toml
+++ b/vendor/clap_lex-0.2.2/Cargo.toml
diff --git a/vendor/clap/LICENSE-APACHE b/vendor/clap_lex-0.2.2/LICENSE-APACHE
index 261eeb9e9..261eeb9e9 100644
--- a/vendor/clap/LICENSE-APACHE
+++ b/vendor/clap_lex-0.2.2/LICENSE-APACHE
diff --git a/vendor/clap/LICENSE-MIT b/vendor/clap_lex-0.2.2/LICENSE-MIT
index 5acedf041..5acedf041 100644
--- a/vendor/clap/LICENSE-MIT
+++ b/vendor/clap_lex-0.2.2/LICENSE-MIT
diff --git a/vendor/clap_lex/README.md b/vendor/clap_lex-0.2.2/README.md
index 0c21bc819..0c21bc819 100644
--- a/vendor/clap_lex/README.md
+++ b/vendor/clap_lex-0.2.2/README.md
diff --git a/vendor/clap_lex/src/lib.rs b/vendor/clap_lex-0.2.2/src/lib.rs
index f205c3de0..f205c3de0 100644
--- a/vendor/clap_lex/src/lib.rs
+++ b/vendor/clap_lex-0.2.2/src/lib.rs
diff --git a/vendor/clap_lex/LICENSE-APACHE b/vendor/clap_lex/LICENSE-APACHE
deleted file mode 100644
index 261eeb9e9..000000000
--- a/vendor/clap_lex/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/vendor/compiler_builtins/.cargo-checksum.json b/vendor/compiler_builtins/.cargo-checksum.json
index 9324f092f..90052bb9e 100644
--- a/vendor/compiler_builtins/.cargo-checksum.json
+++ b/vendor/compiler_builtins/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"b369bba03aca1dd529671fb54000fd8dfc0d4d5b5cfe1afe71294155c974bc34","Cargo.toml":"1f727cb37da8b846367a12e034c01aca729f745a695383dd596b05b7f86ba970","README.md":"5eb36fbab30693dbbe9f0de54749c95bd06fd6e42013b5b9eff3c062b9fdd34f","build.rs":"991919d9ab1eca85e87a85acafcb86d4880f1afe9fe35d6bd87039dcb1fa9aa7","examples/intrinsics.rs":"a7aa69c17af3aa8f6edff32c214e80827d3cbe3aea386a2be42244444752d253","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"56dac8538e4350cd7cf001327c89f087b68abb2e6aaad58edba8a094b09f6b0f","libm/src/math/acoshf.rs":"df5b0c4d8e37e64cf5ff2d8328b28bc35c78e84060ff769e64523ea9ff9065c1","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"e8fc94031015fddf35e9c26b94da9f6431ee17c81cd7bd37da8ffc98f7e0b32c","libm/src/math/asinhf.rs":"8a0b8933a98a17617a66fef4c7b89eba645fdf05302000babf4a5a5f45328430","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"5934dbd6b7395ca4f103ace7598da723a9270e1cf6b47e7f786debe4bb3651ff","libm/src/math/atanhf.rs":"8ba4711dda19ef2dc33622be65c1483902868083543198c6bbd040d4026293de","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"d80c880efaf0cdf2ce0a4d4f5a68dd6c36c88d46fa997ec8ac8604bfdb26fa33","libm/src/math/copysignf.rs":"1547116071e68a42b1605eb2fc722db6466a34517dc96b92de1f29a274c3d8e3","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"9c55fc6756ba816996f0b585e07ccfa4cd87575ad525cd30c4a968b30acffda3","libm/src/math/erff.rs":"cb020e8bada9a54573a11fe3271750d73f14fed3092a881a9ceaf98fe32fd5a6","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2deb037f88feac87a0e924b69dd496f0dd3b5d35f2a58e09d4c5166b207e517b","libm/src/math/exp10f.rs":"6979464dfe3f4f2da1f9afc909646499c4bfaef15e10a039384750e2f1586fea","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"8730d45aa4c591f91dccdcc1ce533fa23e9c6df0c38defb9c57f749cb25e1cd0","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d88e01c2c2d11333dd49b61166caa036ff5f08f3a8c5973b9e3c9574bf2eb675","libm/src/math/fmaf.rs":"3e0f5727e56f31218f674b9b8975d7e67b3a24a097f06a2a3eca9723cd786213","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"813413bf6266d4fc40db9c5921af3cef4f892ba93e8f6d9efe62a449d1234532","libm/src/math/ilogbf.rs":"dec462780f46682e16cfaa733238bed3b692729e951f53a44726100b6c73a716","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"498552658cc8106d7754f85ae8dbc3306ac2f0a9f7eb5a796be70c5beac92c41","libm/src/math/lgamma_r.rs":"77fb6442aeb5343926d8965e1549dde3e2cc4fd09555de6b56506001d956c344","libm/src/math/lgammaf.rs":"457105f53a4c8717e8f5a117d261dcf94e222e83981337fe23602abe883fe3f7","libm/src/math/lgammaf_r.rs":"44de75babbdd53c4a5879cd6f426e7311db82669def39df5f63914d67d6cc1b1","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"9de65aedb36910356bc47d25b1468b40ab63faf7e319e599e478a239681bdf9c","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"21762d08d72dc6f2e313123a7311683000974a09b8fcae50994d9c39239721b1","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"55b7446984db26bc118eb3d9b01f4fd2594de06558e0f9b6dc936a57888ca9be","libm/src/math/sincosf.rs":"f7b18383b242dad59e6033240d0e4a0fd08a2633e5048eff27532085f1c67f87","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"824570a631c2542ccee68b65e3eb08fe79c037a29bbaaf54da5367e7b236124a","libm/src/math/sqrtf.rs":"4cf418d74f7751d522a642a9a8d6b86ee3472c6aaef44f0eb1bc26f4d8a90985","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"a6aabb8365410af6611f19f58694ccb74e82bb9ba9e1cdec7e1af787cfa44815","libm/src/math/tgammaf.rs":"c95bd69957387533853532164f7e2251d2b04f5e775406b9e647226ae2bdd5ad","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/arm.rs":"8ccf47608cc7862d8d834ca292d0d3d97faaab6cc6f20ba59ccf2987ff0f3f77","src/arm_linux.rs":"87136556091817b2bded52c3ece101123aae84ff13ccaf13a196826b2e3fc297","src/float/add.rs":"3ec32ceaf470a89777b54f9cde61832fdadeade0f4894f268a949e968520bc57","src/float/cmp.rs":"79b1fdc8d5f943c4ad5ea4ad32623b18f63e17ac3852fbc64a4942228007e1fc","src/float/conv.rs":"55138604371e00ef14167894159156b68f939039b0e5b2b1f3db61456e3d3870","src/float/div.rs":"bc808a5372d041b96aa603ac814165e1e7dbd690e4ab9b026d9465c1cbc2c583","src/float/extend.rs":"180b2e791c58e0526de0a798845c580ce3222c8a15c8665e6e6a4bf5cf1a34aa","src/float/mod.rs":"48d76632575789a6ecf99213b1ed38c21c86ad5a5c3fa33ccb31f77829271b79","src/float/mul.rs":"0d0c1f0c28c149ecadeafd459d3c4c9327e4cfcae2cba479957bb8010ef51a01","src/float/pow.rs":"2ada190738731eb6f24104f8fb8c4d6f03cfb16451536dbee32f2b33db0c4b19","src/float/sub.rs":"c2a87f4628f51d5d908d0f25b5d51ce0599dc559d5a72b20e131261f484d5848","src/float/trunc.rs":"d21d2a2f9a1918b4bbb594691e397972a7c04b74b2acf04016c55693abf6d24b","src/int/addsub.rs":"7ec45ce1ba15b56a5b7129d3e5722c4db764c6545306d3fa9090983bcabd6f17","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"bb48d8fd42d8f9f5fe9271d8d0f7a92dbae320bf4346e19d1071eb2093cb8ed9","src/int/sdiv.rs":"ace4cb0ec388a38834e01cab2c5bc87182d31588dfc0b1ae117c11ed0c4781cf","src/int/shift.rs":"3967c28a8d61279546e91958d64745fec63f15aee9175eb0602cc6353830da6c","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"9f1ced81a394f000a21a329683144d68ee431a954136a3634eb55b1ee2cf6d51","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"c32a7c416f2c81d6368720053864c3e7082417bca983c329520a8e7dc8c34736","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"3732b490a472505411577f008b92f489287745968ce6791665201201377d3475","src/lib.rs":"557cd24974b4be235d3cdc4846eeacd8e536330ff54d037b8d56b21d99f64b3c","src/macros.rs":"4e6c006a47d7437f91a92802ecdceea63c60f3924ec98a429a14506c41c5f5dc","src/math.rs":"48bb0d97a1b56d960c6b5130b9a62a1cb1e8e5d62a522163022b8ea24c6cfcca","src/mem/impls.rs":"4517ae10a8adc2b0527529a872d8a7f98627f166d9a18a7aed6fc774b18dd843","src/mem/mod.rs":"791fa5fab759060e966de994b637e88c3c329cf2c0343efccca1da9dc80fcb66","src/mem/x86_64.rs":"912d4e955440113b97bd7dc836697df01a692524edd48cafaf599783ae277b85","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"8aa8cde1106a179e9a37724193bc5cea5defe212eb38e3049c23b254578f78d4","src/x86.rs":"117b50d6725ee0af0a7b3d197ea580655561f66a870ebc450d96af22bf7f39f6","src/x86_64.rs":"4f16bc9fad7757d48a6da3a078c715dd3a22154aadb4f1998d4c1b5d91396f9e"},"package":"71b72fde1d7792ca3bd654f7c3ea4508f9e4d0c826e24179eabb7fcc97a90bc3"} \ No newline at end of file
+{"files":{"Cargo.lock":"d76ea6435a58ea3155de70652b8c03e08e0c96645dcf7e2f8f3650c06cb699e2","Cargo.toml":"97342c77c2e481ff977fafc2a84d7c729f26e08dee2cf1d00b6be8ddad303797","LICENSE.txt":"0e13fed90654e0bc677d624a2d770833a09541fe0c0bdb3d051b3d081207393a","README.md":"5eb36fbab30693dbbe9f0de54749c95bd06fd6e42013b5b9eff3c062b9fdd34f","build.rs":"0c006642fbbe9fa5372a88cbbbb0bb4b391f635b2bde0c497de10740c1458c5e","examples/intrinsics.rs":"a7aa69c17af3aa8f6edff32c214e80827d3cbe3aea386a2be42244444752d253","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"99de01ded7922bb93a882ad5ad8b472b5cae0059dea0bdca2077f65e94483150","libm/src/math/acoshf.rs":"10750c4d39ef6717b20a15ef1ce43e15eb851682d2f820f7e94501adec98b9a5","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"4dd51affa71cce34a192ad66154e248f8d1c4b40fb497f29052333e425bb740f","libm/src/math/asinhf.rs":"914bfecf449f5e2bce786aa12c056d419073c6011d41c1bab7c39ba765fa4c53","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"57a8fb3f0f116fa4a966ac6bc2abd5f80236ead8e79013f468bd3786921f7110","libm/src/math/atanhf.rs":"6f2e57aaec1b5fc7609cb3938b3d155f51b4237dbda530739c34a0448cd9beb9","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"57ba5b6e207a0ccbd34190d1aa544389ca12126be23821dfb5746497f620ce03","libm/src/math/ceilf.rs":"c922a0475a599b9ea5473e615f74700b99707cebd6927f24ea59cb2a3cb3bbc3","libm/src/math/copysign.rs":"8b6440a251f0f1509d87f18122f74d0d5c03d0b60517e89e441434a3c5d84591","libm/src/math/copysignf.rs":"87d35436d224852ada93a2e93f6730cf1a727b808dd10e7d49ab4585866e336b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"52cc9d9d54074a692001fb2d8215cd6903b645d4291ea20482455bc7f6947726","libm/src/math/erff.rs":"d37af67007fe4e9bce994c8c9805dd8af1b0ada68a10db8d8db13424dce65d09","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2e136c6ecedd8e57a6c31796f57fae4546fcfd8bc6be66c836f553df9c74b907","libm/src/math/exp10f.rs":"9a3ce506ec587066a355ab74e0eb69a03a214ac405718087ae9772365050b20b","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"83a1f5f4d9ca899ba2b701d7332e18b40258b83e111db4c5d8fab2cc1be58aa3","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"916ae11e4763588518d64dee82afb41be9d1ee38ecc0679c821d4e7e22cd3dc5","libm/src/math/floor.rs":"5050804cae173af6775c0678d6c1aafb5ca2b744bc8a2f50d9d03b95dcee1fb0","libm/src/math/floorf.rs":"c903e0c57bc60a888c513eb7a873a87a4759ba68fc791b6b931652f8ee74cc03","libm/src/math/fma.rs":"d88e01c2c2d11333dd49b61166caa036ff5f08f3a8c5973b9e3c9574bf2eb675","libm/src/math/fmaf.rs":"1db6ee0d47ddbdb441cfe167edf89b431239f5805708fd0376cf5c01349a4bd6","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"d178ad7ca3439f82d565962b143f20448e45b2e2c51357b127abaec683297e32","libm/src/math/ilogbf.rs":"00f2b1b0496e21c6a42d68aea74d7156fa2ff0a735741b9051f3ca1cf0f57586","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"9c9b128752e8ea2e7d81b637ba84907ab54a545e7602c49167b313743927930b","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"0edd18e4f96bfcbe8b1b5af3eeca5208cd6d2d479dfa5ad117c9dfeccecf614f","libm/src/math/lgamma_r.rs":"f44a37aeccd56559ef784ae8edf217d14ad5cc2d910f0a65e70ffc86d7dc23dd","libm/src/math/lgammaf.rs":"967845357758b868a571857ec001f9f9154001110b8e97c08b6d10586bed9c49","libm/src/math/lgammaf_r.rs":"7143016d60e11fa235d53968125e57231b1104ce52149b5e1eed39629e0d1ff0","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"9de65aedb36910356bc47d25b1468b40ab63faf7e319e599e478a239681bdf9c","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"17c38297c5bf99accd915f292b777f8716ecf328916297c8bb9dfde6fd8ce522","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"3e53234977daf61c89c29c940791714aad2f676a6f38188c7d17543a2aa8806f","libm/src/math/rem_pio2_large.rs":"482f31ff4e4eacf885f6130ae26a1d59f76b382059d6c742f30e5036811d3ca8","libm/src/math/rem_pio2f.rs":"07fb48f6d5cbadfd32ce4124b2b74af98b8391a2a6f36ce2a7d32e4500cb65ac","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/round.rs":"f10797ef15dd34a74e912ba8621d60bc0200c87b94308c9de3cc88d7aec4feb4","libm/src/math/roundf.rs":"27e37cfcf82373709e7debf9c0c18f7ed00ae0f5d97a214c388041f7a6996d35","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"bb483a2138ca779e03a191222636f0c60fd75a77a2a12f263bda4b6aa9136317","libm/src/math/sincos.rs":"1cf62a16c215e367f51078a3ba23a3f257682032a8f3c657293029a886b18d82","libm/src/math/sincosf.rs":"b0f589e6ada8215944d7784f420c6721c90387d799e349ce7676674f3c475e75","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"824570a631c2542ccee68b65e3eb08fe79c037a29bbaaf54da5367e7b236124a","libm/src/math/sqrtf.rs":"4cf418d74f7751d522a642a9a8d6b86ee3472c6aaef44f0eb1bc26f4d8a90985","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"c889cfa49bbeb4dbb0941fe9fac3b4da7d5879dcf04a3b9bb6e56de529baf374","libm/src/math/tgammaf.rs":"0737b34777095d0e4d07fe533e8f105082dd4e8ece411bba6ae5993b45b9388c","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"dee3607baf1af0f01deae46e429e097234c50b268eaefebbe716f19f38597900","src/arm.rs":"acf149932aa46a2755cf8cd2eb7d6ae249e46b1e10ad45ce5f924561945d1273","src/arm_linux.rs":"35a4cb7b75015543feb15b0c692da0faf0e6037d3b97a4a18067ba416eae1a70","src/float/add.rs":"3ec32ceaf470a89777b54f9cde61832fdadeade0f4894f268a949e968520bc57","src/float/cmp.rs":"79b1fdc8d5f943c4ad5ea4ad32623b18f63e17ac3852fbc64a4942228007e1fc","src/float/conv.rs":"e2b5e6fe398f35c7db4af62ba1fd79b39591fe1bfaf304ae825ed3c8cf902d9c","src/float/div.rs":"fe21115ecb1b3330569fd85cb51c650bf80683f152333db988d8e0d564a9ae11","src/float/extend.rs":"180b2e791c58e0526de0a798845c580ce3222c8a15c8665e6e6a4bf5cf1a34aa","src/float/mod.rs":"48d76632575789a6ecf99213b1ed38c21c86ad5a5c3fa33ccb31f77829271b79","src/float/mul.rs":"0d0c1f0c28c149ecadeafd459d3c4c9327e4cfcae2cba479957bb8010ef51a01","src/float/pow.rs":"2ada190738731eb6f24104f8fb8c4d6f03cfb16451536dbee32f2b33db0c4b19","src/float/sub.rs":"c2a87f4628f51d5d908d0f25b5d51ce0599dc559d5a72b20e131261f484d5848","src/float/trunc.rs":"d21d2a2f9a1918b4bbb594691e397972a7c04b74b2acf04016c55693abf6d24b","src/int/addsub.rs":"7ec45ce1ba15b56a5b7129d3e5722c4db764c6545306d3fa9090983bcabd6f17","src/int/leading_zeros.rs":"ccf5e9d098c80034dcf6e38437c9a2eb670fa8043558bbfb574f2293164729a6","src/int/mod.rs":"bab1b77535ceebdebb89fd4e59e7105f8c45347bb638351a626615b24544a0b1","src/int/mul.rs":"bb48d8fd42d8f9f5fe9271d8d0f7a92dbae320bf4346e19d1071eb2093cb8ed9","src/int/sdiv.rs":"ace4cb0ec388a38834e01cab2c5bc87182d31588dfc0b1ae117c11ed0c4781cf","src/int/shift.rs":"3967c28a8d61279546e91958d64745fec63f15aee9175eb0602cc6353830da6c","src/int/specialized_div_rem/asymmetric.rs":"27f5bf70a35109f9d4e4e1ad1e8003aa17da5a1e436bf3e63a493d7528a3a566","src/int/specialized_div_rem/binary_long.rs":"9f1ced81a394f000a21a329683144d68ee431a954136a3634eb55b1ee2cf6d51","src/int/specialized_div_rem/delegate.rs":"9df141af98e391361e25d71ae38d5e845a91d896edd2c041132fd46af8268e85","src/int/specialized_div_rem/mod.rs":"73c98b9f69cc9b101ae4c9081e82d66af1df4a58cf0c9bb2a8c8659265687f12","src/int/specialized_div_rem/norm_shift.rs":"3be7ee0dea545c1f702d9daf67dad2b624bf7b17b075c8b90d3d3f7b53df4c21","src/int/specialized_div_rem/trifecta.rs":"87eef69da255b809fd710b14f2eb3f9f59e3dac625f8564ebc8ba78f9763523b","src/int/udiv.rs":"3732b490a472505411577f008b92f489287745968ce6791665201201377d3475","src/lib.rs":"d0e85291d12a57c61791257e3adefb8f2222e1ba6f9e5cd4cf7fba59d26477f4","src/macros.rs":"de690dffc59a5884ed06c67d38f06c41ed02fcd6318189397a0d4aafbd375ad8","src/math.rs":"7cafdf3d65e083b31a9ceebab9510236b2c7290dbf1927f435d0f9b2d62d2a0b","src/mem/impls.rs":"a8d1c28a77d9b334872abbebfcba3fd1802175bef53c0b545e85242860698780","src/mem/mod.rs":"5034543d963149c14a6823bee32a1fb9dfd950c32153d37f97e9df1dc6c23129","src/mem/x86_64.rs":"9f740891f666acf384159128eef233d9e15c6120da8016370c6f9f05cc29d653","src/probestack.rs":"ef5c07e9b95de7b2b77a937789fcfefd9846274317489ad6d623e377c9888601","src/riscv.rs":"8aa8cde1106a179e9a37724193bc5cea5defe212eb38e3049c23b254578f78d4","src/x86.rs":"117b50d6725ee0af0a7b3d197ea580655561f66a870ebc450d96af22bf7f39f6","src/x86_64.rs":"4f16bc9fad7757d48a6da3a078c715dd3a22154aadb4f1998d4c1b5d91396f9e"},"package":"18cd7635fea7bb481ea543b392789844c1ad581299da70184c7175ce3af76603"} \ No newline at end of file
diff --git a/vendor/compiler_builtins/Cargo.lock b/vendor/compiler_builtins/Cargo.lock
index e184f7e20..a498ea0ea 100644
--- a/vendor/compiler_builtins/Cargo.lock
+++ b/vendor/compiler_builtins/Cargo.lock
@@ -4,13 +4,13 @@ version = 3
[[package]]
name = "cc"
-version = "1.0.70"
+version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0"
+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
[[package]]
name = "compiler_builtins"
-version = "0.1.73"
+version = "0.1.82"
dependencies = [
"cc",
"rustc-std-workspace-core",
diff --git a/vendor/compiler_builtins/Cargo.toml b/vendor/compiler_builtins/Cargo.toml
index 765e99f94..13ec182df 100644
--- a/vendor/compiler_builtins/Cargo.toml
+++ b/vendor/compiler_builtins/Cargo.toml
@@ -11,7 +11,7 @@
[package]
name = "compiler_builtins"
-version = "0.1.73"
+version = "0.1.82"
authors = ["Jorge Aparicio <japaricious@gmail.com>"]
links = "compiler-rt"
include = [
diff --git a/vendor/compiler_builtins/LICENSE.txt b/vendor/compiler_builtins/LICENSE.txt
new file mode 100644
index 000000000..92bbe113a
--- /dev/null
+++ b/vendor/compiler_builtins/LICENSE.txt
@@ -0,0 +1,91 @@
+==============================================================================
+compiler-builtins License
+==============================================================================
+
+The compiler-builtins crate is dual licensed under both the University of
+Illinois "BSD-Like" license and the MIT license. As a user of this code you may
+choose to use it under either license. As a contributor, you agree to allow
+your code to be used under both.
+
+Full text of the relevant licenses is included below.
+
+==============================================================================
+
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2009-2016 by the contributors listed in CREDITS.TXT
+
+All rights reserved.
+
+Developed by:
+
+ LLVM Team
+
+ University of Illinois at Urbana-Champaign
+
+ http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimers.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimers in the
+ documentation and/or other materials provided with the distribution.
+
+ * Neither the names of the LLVM Team, University of Illinois at
+ Urbana-Champaign, nor the names of its contributors may be used to
+ endorse or promote products derived from this Software without specific
+ prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+==============================================================================
+
+Copyright (c) 2009-2015 by the contributors listed in CREDITS.TXT
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+==============================================================================
+Copyrights and Licenses for Third Party Software Distributed with LLVM:
+==============================================================================
+The LLVM software contains code written by third parties. Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
diff --git a/vendor/compiler_builtins/build.rs b/vendor/compiler_builtins/build.rs
index 11deffb9c..73952bb9f 100644
--- a/vendor/compiler_builtins/build.rs
+++ b/vendor/compiler_builtins/build.rs
@@ -29,6 +29,7 @@ fn main() {
|| (target.contains("sgx") && target.contains("fortanix"))
|| target.contains("-none")
|| target.contains("nvptx")
+ || target.contains("uefi")
{
println!("cargo:rustc-cfg=feature=\"mem\"");
}
@@ -58,9 +59,11 @@ fn main() {
// unlikely that the C is really that much better than our own Rust.
// * nvptx - everything is bitcode, not compatible with mixed C/Rust
// * riscv - the rust-lang/rust distribution container doesn't have a C
- // compiler nor is cc-rs ready for compilation to riscv (at this
- // time). This can probably be removed in the future
- if !target.contains("wasm") && !target.contains("nvptx") && !target.starts_with("riscv") {
+ // compiler.
+ if !target.contains("wasm")
+ && !target.contains("nvptx")
+ && (!target.starts_with("riscv") || target.contains("xous"))
+ {
#[cfg(feature = "c")]
c::compile(&llvm_target, &target);
}
@@ -457,6 +460,7 @@ mod c {
("__fe_getround", "fp_mode.c"),
("__divtf3", "divtf3.c"),
("__trunctfdf2", "trunctfdf2.c"),
+ ("__trunctfsf2", "trunctfsf2.c"),
]);
}
diff --git a/vendor/compiler_builtins/libm/src/math/acosh.rs b/vendor/compiler_builtins/libm/src/math/acosh.rs
index ac7a5f1c6..d1f5b9fa9 100644
--- a/vendor/compiler_builtins/libm/src/math/acosh.rs
+++ b/vendor/compiler_builtins/libm/src/math/acosh.rs
@@ -7,6 +7,7 @@ const LN2: f64 = 0.693147180559945309417232121458176568; /* 0x3fe62e42, 0xfefa3
/// Calculates the inverse hyperbolic cosine of `x`.
/// Is defined as `log(x + sqrt(x*x-1))`.
/// `x` must be a number greater than or equal to 1.
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn acosh(x: f64) -> f64 {
let u = x.to_bits();
let e = ((u >> 52) as usize) & 0x7ff;
diff --git a/vendor/compiler_builtins/libm/src/math/acoshf.rs b/vendor/compiler_builtins/libm/src/math/acoshf.rs
index 0879e1edb..ad3455fdd 100644
--- a/vendor/compiler_builtins/libm/src/math/acoshf.rs
+++ b/vendor/compiler_builtins/libm/src/math/acoshf.rs
@@ -7,6 +7,7 @@ const LN2: f32 = 0.693147180559945309417232121458176568;
/// Calculates the inverse hyperbolic cosine of `x`.
/// Is defined as `log(x + sqrt(x*x-1))`.
/// `x` must be a number greater than or equal to 1.
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn acoshf(x: f32) -> f32 {
let u = x.to_bits();
let a = u & 0x7fffffff;
diff --git a/vendor/compiler_builtins/libm/src/math/asinh.rs b/vendor/compiler_builtins/libm/src/math/asinh.rs
index 14295357a..0abd80c2f 100644
--- a/vendor/compiler_builtins/libm/src/math/asinh.rs
+++ b/vendor/compiler_builtins/libm/src/math/asinh.rs
@@ -7,6 +7,7 @@ const LN2: f64 = 0.693147180559945309417232121458176568; /* 0x3fe62e42, 0xfefa3
///
/// Calculates the inverse hyperbolic sine of `x`.
/// Is defined as `sgn(x)*log(|x|+sqrt(x*x+1))`.
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn asinh(mut x: f64) -> f64 {
let mut u = x.to_bits();
let e = ((u >> 52) as usize) & 0x7ff;
diff --git a/vendor/compiler_builtins/libm/src/math/asinhf.rs b/vendor/compiler_builtins/libm/src/math/asinhf.rs
index e22a29132..09c77823e 100644
--- a/vendor/compiler_builtins/libm/src/math/asinhf.rs
+++ b/vendor/compiler_builtins/libm/src/math/asinhf.rs
@@ -7,6 +7,7 @@ const LN2: f32 = 0.693147180559945309417232121458176568;
///
/// Calculates the inverse hyperbolic sine of `x`.
/// Is defined as `sgn(x)*log(|x|+sqrt(x*x+1))`.
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn asinhf(mut x: f32) -> f32 {
let u = x.to_bits();
let i = u & 0x7fffffff;
diff --git a/vendor/compiler_builtins/libm/src/math/atanh.rs b/vendor/compiler_builtins/libm/src/math/atanh.rs
index 79a989c42..b984c4ac6 100644
--- a/vendor/compiler_builtins/libm/src/math/atanh.rs
+++ b/vendor/compiler_builtins/libm/src/math/atanh.rs
@@ -5,6 +5,7 @@ use super::log1p;
///
/// Calculates the inverse hyperbolic tangent of `x`.
/// Is defined as `log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2`.
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn atanh(x: f64) -> f64 {
let u = x.to_bits();
let e = ((u >> 52) as usize) & 0x7ff;
diff --git a/vendor/compiler_builtins/libm/src/math/atanhf.rs b/vendor/compiler_builtins/libm/src/math/atanhf.rs
index 7b2f34d97..a1aa314a5 100644
--- a/vendor/compiler_builtins/libm/src/math/atanhf.rs
+++ b/vendor/compiler_builtins/libm/src/math/atanhf.rs
@@ -5,6 +5,7 @@ use super::log1pf;
///
/// Calculates the inverse hyperbolic tangent of `x`.
/// Is defined as `log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2`.
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn atanhf(mut x: f32) -> f32 {
let mut u = x.to_bits();
let sign = (u >> 31) != 0;
diff --git a/vendor/compiler_builtins/libm/src/math/copysign.rs b/vendor/compiler_builtins/libm/src/math/copysign.rs
index 1527fb6ea..1f4a35a33 100644
--- a/vendor/compiler_builtins/libm/src/math/copysign.rs
+++ b/vendor/compiler_builtins/libm/src/math/copysign.rs
@@ -2,6 +2,7 @@
///
/// Constructs a number with the magnitude (absolute value) of its
/// first argument, `x`, and the sign of its second argument, `y`.
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn copysign(x: f64, y: f64) -> f64 {
let mut ux = x.to_bits();
let uy = y.to_bits();
diff --git a/vendor/compiler_builtins/libm/src/math/copysignf.rs b/vendor/compiler_builtins/libm/src/math/copysignf.rs
index 35148561a..6c346e3a5 100644
--- a/vendor/compiler_builtins/libm/src/math/copysignf.rs
+++ b/vendor/compiler_builtins/libm/src/math/copysignf.rs
@@ -2,6 +2,7 @@
///
/// Constructs a number with the magnitude (absolute value) of its
/// first argument, `x`, and the sign of its second argument, `y`.
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn copysignf(x: f32, y: f32) -> f32 {
let mut ux = x.to_bits();
let uy = y.to_bits();
diff --git a/vendor/compiler_builtins/libm/src/math/erf.rs b/vendor/compiler_builtins/libm/src/math/erf.rs
index a2c617d34..5e21ba578 100644
--- a/vendor/compiler_builtins/libm/src/math/erf.rs
+++ b/vendor/compiler_builtins/libm/src/math/erf.rs
@@ -219,6 +219,7 @@ fn erfc2(ix: u32, mut x: f64) -> f64 {
/// Calculates an approximation to the “error function”, which estimates
/// the probability that an observation will fall within x standard
/// deviations of the mean (assuming a normal distribution).
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn erf(x: f64) -> f64 {
let r: f64;
let s: f64;
diff --git a/vendor/compiler_builtins/libm/src/math/erff.rs b/vendor/compiler_builtins/libm/src/math/erff.rs
index 384052293..f74d4b632 100644
--- a/vendor/compiler_builtins/libm/src/math/erff.rs
+++ b/vendor/compiler_builtins/libm/src/math/erff.rs
@@ -130,6 +130,7 @@ fn erfc2(mut ix: u32, mut x: f32) -> f32 {
/// Calculates an approximation to the “error function”, which estimates
/// the probability that an observation will fall within x standard
/// deviations of the mean (assuming a normal distribution).
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn erff(x: f32) -> f32 {
let r: f32;
let s: f32;
diff --git a/vendor/compiler_builtins/libm/src/math/exp10.rs b/vendor/compiler_builtins/libm/src/math/exp10.rs
index 9537f76f1..559930e10 100644
--- a/vendor/compiler_builtins/libm/src/math/exp10.rs
+++ b/vendor/compiler_builtins/libm/src/math/exp10.rs
@@ -6,16 +6,17 @@ const P10: &[f64] = &[
1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13, 1e14, 1e15,
];
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn exp10(x: f64) -> f64 {
let (mut y, n) = modf(x);
let u: u64 = n.to_bits();
/* fabs(n) < 16 without raising invalid on nan */
if (u >> 52 & 0x7ff) < 0x3ff + 4 {
if y == 0.0 {
- return P10[((n as isize) + 15) as usize];
+ return i!(P10, ((n as isize) + 15) as usize);
}
y = exp2(LN10 * y);
- return y * P10[((n as isize) + 15) as usize];
+ return y * i!(P10, ((n as isize) + 15) as usize);
}
return pow(10.0, x);
}
diff --git a/vendor/compiler_builtins/libm/src/math/exp10f.rs b/vendor/compiler_builtins/libm/src/math/exp10f.rs
index d45fff36e..1279bc6c5 100644
--- a/vendor/compiler_builtins/libm/src/math/exp10f.rs
+++ b/vendor/compiler_builtins/libm/src/math/exp10f.rs
@@ -6,16 +6,17 @@ const P10: &[f32] = &[
1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1e0, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7,
];
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn exp10f(x: f32) -> f32 {
let (mut y, n) = modff(x);
let u = n.to_bits();
/* fabsf(n) < 8 without raising invalid on nan */
if (u >> 23 & 0xff) < 0x7f + 3 {
if y == 0.0 {
- return P10[((n as isize) + 7) as usize];
+ return i!(P10, ((n as isize) + 7) as usize);
}
y = exp2f(LN10_F32 * y);
- return y * P10[((n as isize) + 7) as usize];
+ return y * i!(P10, ((n as isize) + 7) as usize);
}
return exp2(LN10_F64 * (x as f64)) as f32;
}
diff --git a/vendor/compiler_builtins/libm/src/math/fenv.rs b/vendor/compiler_builtins/libm/src/math/fenv.rs
index 652e60324..c91272e82 100644
--- a/vendor/compiler_builtins/libm/src/math/fenv.rs
+++ b/vendor/compiler_builtins/libm/src/math/fenv.rs
@@ -5,7 +5,6 @@ pub(crate) const FE_UNDERFLOW: i32 = 0;
pub(crate) const FE_INEXACT: i32 = 0;
pub(crate) const FE_TONEAREST: i32 = 0;
-pub(crate) const FE_TOWARDZERO: i32 = 0;
#[inline]
pub(crate) fn feclearexcept(_mask: i32) -> i32 {
@@ -26,8 +25,3 @@ pub(crate) fn fetestexcept(_mask: i32) -> i32 {
pub(crate) fn fegetround() -> i32 {
FE_TONEAREST
}
-
-#[inline]
-pub(crate) fn fesetround(_r: i32) -> i32 {
- 0
-}
diff --git a/vendor/compiler_builtins/libm/src/math/fmaf.rs b/vendor/compiler_builtins/libm/src/math/fmaf.rs
index 03d371c55..2848f2aee 100644
--- a/vendor/compiler_builtins/libm/src/math/fmaf.rs
+++ b/vendor/compiler_builtins/libm/src/math/fmaf.rs
@@ -29,8 +29,7 @@ use core::f32;
use core::ptr::read_volatile;
use super::fenv::{
- feclearexcept, fegetround, feraiseexcept, fesetround, fetestexcept, FE_INEXACT, FE_TONEAREST,
- FE_TOWARDZERO, FE_UNDERFLOW,
+ feclearexcept, fegetround, feraiseexcept, fetestexcept, FE_INEXACT, FE_TONEAREST, FE_UNDERFLOW,
};
/*
@@ -91,16 +90,28 @@ pub fn fmaf(x: f32, y: f32, mut z: f32) -> f32 {
* If result is inexact, and exactly halfway between two float values,
* we need to adjust the low-order bit in the direction of the error.
*/
- fesetround(FE_TOWARDZERO);
- // prevent `vxy + z` from being CSE'd with `xy + z` above
- let vxy: f64 = unsafe { read_volatile(&xy) };
- let mut adjusted_result: f64 = vxy + z as f64;
- fesetround(FE_TONEAREST);
- if result == adjusted_result {
- ui = adjusted_result.to_bits();
+ let neg = ui >> 63 != 0;
+ let err = if neg == (z as f64 > xy) {
+ xy - result + z as f64
+ } else {
+ z as f64 - result + xy
+ };
+ if neg == (err < 0.0) {
ui += 1;
- adjusted_result = f64::from_bits(ui);
+ } else {
+ ui -= 1;
+ }
+ f64::from_bits(ui) as f32
+}
+
+#[cfg(test)]
+mod tests {
+ #[test]
+ fn issue_263() {
+ let a = f32::from_bits(1266679807);
+ let b = f32::from_bits(1300234242);
+ let c = f32::from_bits(1115553792);
+ let expected = f32::from_bits(1501560833);
+ assert_eq!(super::fmaf(a, b, c), expected);
}
- z = adjusted_result as f32;
- z
}
diff --git a/vendor/compiler_builtins/libm/src/math/ilogb.rs b/vendor/compiler_builtins/libm/src/math/ilogb.rs
index 0a380b7ef..7d74dcfb6 100644
--- a/vendor/compiler_builtins/libm/src/math/ilogb.rs
+++ b/vendor/compiler_builtins/libm/src/math/ilogb.rs
@@ -1,6 +1,7 @@
const FP_ILOGBNAN: i32 = -1 - 0x7fffffff;
const FP_ILOGB0: i32 = FP_ILOGBNAN;
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn ilogb(x: f64) -> i32 {
let mut i: u64 = x.to_bits();
let e = ((i >> 52) & 0x7ff) as i32;
diff --git a/vendor/compiler_builtins/libm/src/math/ilogbf.rs b/vendor/compiler_builtins/libm/src/math/ilogbf.rs
index b384fa4b2..0fa58748c 100644
--- a/vendor/compiler_builtins/libm/src/math/ilogbf.rs
+++ b/vendor/compiler_builtins/libm/src/math/ilogbf.rs
@@ -1,6 +1,7 @@
const FP_ILOGBNAN: i32 = -1 - 0x7fffffff;
const FP_ILOGB0: i32 = FP_ILOGBNAN;
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn ilogbf(x: f32) -> i32 {
let mut i = x.to_bits();
let e = ((i >> 23) & 0xff) as i32;
diff --git a/vendor/compiler_builtins/libm/src/math/lgamma.rs b/vendor/compiler_builtins/libm/src/math/lgamma.rs
index 5bc87e85e..a08bc5b64 100644
--- a/vendor/compiler_builtins/libm/src/math/lgamma.rs
+++ b/vendor/compiler_builtins/libm/src/math/lgamma.rs
@@ -1,5 +1,6 @@
use super::lgamma_r;
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn lgamma(x: f64) -> f64 {
lgamma_r(x).0
}
diff --git a/vendor/compiler_builtins/libm/src/math/lgamma_r.rs b/vendor/compiler_builtins/libm/src/math/lgamma_r.rs
index 9533e882c..b26177e6e 100644
--- a/vendor/compiler_builtins/libm/src/math/lgamma_r.rs
+++ b/vendor/compiler_builtins/libm/src/math/lgamma_r.rs
@@ -152,7 +152,7 @@ fn sin_pi(mut x: f64) -> f64 {
x = 2.0 * (x * 0.5 - floor(x * 0.5)); /* x mod 2.0 */
n = (x * 4.0) as i32;
- n = (n + 1) / 2;
+ n = div!(n + 1, 2);
x -= (n as f64) * 0.5;
x *= PI;
@@ -164,6 +164,7 @@ fn sin_pi(mut x: f64) -> f64 {
}
}
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn lgamma_r(mut x: f64) -> (f64, i32) {
let u: u64 = x.to_bits();
let mut t: f64;
diff --git a/vendor/compiler_builtins/libm/src/math/lgammaf.rs b/vendor/compiler_builtins/libm/src/math/lgammaf.rs
index dfdc87f96..a9c2da75b 100644
--- a/vendor/compiler_builtins/libm/src/math/lgammaf.rs
+++ b/vendor/compiler_builtins/libm/src/math/lgammaf.rs
@@ -1,5 +1,6 @@
use super::lgammaf_r;
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn lgammaf(x: f32) -> f32 {
lgammaf_r(x).0
}
diff --git a/vendor/compiler_builtins/libm/src/math/lgammaf_r.rs b/vendor/compiler_builtins/libm/src/math/lgammaf_r.rs
index c5e559f46..723c90daf 100644
--- a/vendor/compiler_builtins/libm/src/math/lgammaf_r.rs
+++ b/vendor/compiler_builtins/libm/src/math/lgammaf_r.rs
@@ -88,7 +88,7 @@ fn sin_pi(mut x: f32) -> f32 {
x = 2.0 * (x * 0.5 - floorf(x * 0.5)); /* x mod 2.0 */
n = (x * 4.0) as isize;
- n = (n + 1) / 2;
+ n = div!(n + 1, 2);
y = (x as f64) - (n as f64) * 0.5;
y *= 3.14159265358979323846;
match n {
@@ -99,6 +99,7 @@ fn sin_pi(mut x: f32) -> f32 {
}
}
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn lgammaf_r(mut x: f32) -> (f32, i32) {
let u = x.to_bits();
let mut t: f32;
diff --git a/vendor/compiler_builtins/libm/src/math/rem_pio2_large.rs b/vendor/compiler_builtins/libm/src/math/rem_pio2_large.rs
index 65473f0ab..db97a39d4 100644
--- a/vendor/compiler_builtins/libm/src/math/rem_pio2_large.rs
+++ b/vendor/compiler_builtins/libm/src/math/rem_pio2_large.rs
@@ -27,7 +27,7 @@ const INIT_JK: [usize; 4] = [3, 4, 4, 6];
//
// NB: This table must have at least (e0-3)/24 + jk terms.
// For quad precision (e0 <= 16360, jk = 6), this is 686.
-#[cfg(target_pointer_width = "32")]
+#[cfg(any(target_pointer_width = "32", target_pointer_width = "16"))]
const IPIO2: [i32; 66] = [
0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62, 0x95993C, 0x439041, 0xFE5163,
0xABDEBB, 0xC561B7, 0x246E3A, 0x424DD2, 0xE00649, 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129,
diff --git a/vendor/compiler_builtins/libm/src/math/sincos.rs b/vendor/compiler_builtins/libm/src/math/sincos.rs
index 4ab588412..ff5d87a1c 100644
--- a/vendor/compiler_builtins/libm/src/math/sincos.rs
+++ b/vendor/compiler_builtins/libm/src/math/sincos.rs
@@ -12,6 +12,7 @@
use super::{get_high_word, k_cos, k_sin, rem_pio2};
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn sincos(x: f64) -> (f64, f64) {
let s: f64;
let c: f64;
diff --git a/vendor/compiler_builtins/libm/src/math/sincosf.rs b/vendor/compiler_builtins/libm/src/math/sincosf.rs
index 5304e8ca0..9a4c36104 100644
--- a/vendor/compiler_builtins/libm/src/math/sincosf.rs
+++ b/vendor/compiler_builtins/libm/src/math/sincosf.rs
@@ -23,6 +23,7 @@ const S2PIO2: f32 = 2.0 * PI_2; /* 0x400921FB, 0x54442D18 */
const S3PIO2: f32 = 3.0 * PI_2; /* 0x4012D97C, 0x7F3321D2 */
const S4PIO2: f32 = 4.0 * PI_2; /* 0x401921FB, 0x54442D18 */
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn sincosf(x: f32) -> (f32, f32) {
let s: f32;
let c: f32;
diff --git a/vendor/compiler_builtins/libm/src/math/tgamma.rs b/vendor/compiler_builtins/libm/src/math/tgamma.rs
index f8ccf669a..e64eff61f 100644
--- a/vendor/compiler_builtins/libm/src/math/tgamma.rs
+++ b/vendor/compiler_builtins/libm/src/math/tgamma.rs
@@ -38,7 +38,7 @@ fn sinpi(mut x: f64) -> f64 {
/* reduce x into [-.25,.25] */
n = (4.0 * x) as isize;
- n = (n + 1) / 2;
+ n = div!(n + 1, 2);
x -= (n as f64) * 0.5;
x *= PI;
@@ -118,18 +118,19 @@ fn s(x: f64) -> f64 {
/* to avoid overflow handle large x differently */
if x < 8.0 {
for i in (0..=N).rev() {
- num = num * x + SNUM[i];
- den = den * x + SDEN[i];
+ num = num * x + i!(SNUM, i);
+ den = den * x + i!(SDEN, i);
}
} else {
for i in 0..=N {
- num = num / x + SNUM[i];
- den = den / x + SDEN[i];
+ num = num / x + i!(SNUM, i);
+ den = den / x + i!(SDEN, i);
}
}
return num / den;
}
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn tgamma(mut x: f64) -> f64 {
let u: u64 = x.to_bits();
let absx: f64;
@@ -157,7 +158,7 @@ pub fn tgamma(mut x: f64) -> f64 {
return 0.0 / 0.0;
}
if x <= FACT.len() as f64 {
- return FACT[(x as usize) - 1];
+ return i!(FACT, (x as usize) - 1);
}
}
diff --git a/vendor/compiler_builtins/libm/src/math/tgammaf.rs b/vendor/compiler_builtins/libm/src/math/tgammaf.rs
index a8f161f0c..23e3814f9 100644
--- a/vendor/compiler_builtins/libm/src/math/tgammaf.rs
+++ b/vendor/compiler_builtins/libm/src/math/tgammaf.rs
@@ -1,5 +1,6 @@
use super::tgamma;
+#[cfg_attr(all(test, assert_no_panic), no_panic::no_panic)]
pub fn tgammaf(x: f32) -> f32 {
tgamma(x as f64) as f32
}
diff --git a/vendor/compiler_builtins/src/arm.rs b/vendor/compiler_builtins/src/arm.rs
index 9c1b6ad12..e517a9ef3 100644
--- a/vendor/compiler_builtins/src/arm.rs
+++ b/vendor/compiler_builtins/src/arm.rs
@@ -22,6 +22,7 @@ intrinsics! {
// custom calling convention which can't be implemented using a normal Rust function.
#[naked]
#[cfg(not(target_env = "msvc"))]
+ #[cfg_attr(all(not(windows), not(target_vendor="apple")), linkage = "weak")]
pub unsafe extern "C" fn __aeabi_uidivmod() {
core::arch::asm!(
"push {{lr}}",
@@ -36,6 +37,7 @@ intrinsics! {
}
#[naked]
+ #[cfg_attr(all(not(windows), not(target_vendor="apple")), linkage = "weak")]
pub unsafe extern "C" fn __aeabi_uldivmod() {
core::arch::asm!(
"push {{r4, lr}}",
@@ -52,6 +54,7 @@ intrinsics! {
}
#[naked]
+ #[cfg_attr(all(not(windows), not(target_vendor="apple")), linkage = "weak")]
pub unsafe extern "C" fn __aeabi_idivmod() {
core::arch::asm!(
"push {{r0, r1, r4, lr}}",
@@ -65,6 +68,7 @@ intrinsics! {
}
#[naked]
+ #[cfg_attr(all(not(windows), not(target_vendor="apple")), linkage = "weak")]
pub unsafe extern "C" fn __aeabi_ldivmod() {
core::arch::asm!(
"push {{r4, lr}}",
diff --git a/vendor/compiler_builtins/src/arm_linux.rs b/vendor/compiler_builtins/src/arm_linux.rs
index 8fe09485b..8f22eb628 100644
--- a/vendor/compiler_builtins/src/arm_linux.rs
+++ b/vendor/compiler_builtins/src/arm_linux.rs
@@ -55,7 +55,7 @@ fn insert_aligned(aligned: u32, val: u32, shift: u32, mask: u32) -> u32 {
}
// Generic atomic read-modify-write operation
-unsafe fn atomic_rmw<T, F: Fn(u32) -> u32>(ptr: *mut T, f: F) -> u32 {
+unsafe fn atomic_rmw<T, F: Fn(u32) -> u32, G: Fn(u32, u32) -> u32>(ptr: *mut T, f: F, g: G) -> u32 {
let aligned_ptr = align_ptr(ptr);
let (shift, mask) = get_shift_mask(ptr);
@@ -65,7 +65,7 @@ unsafe fn atomic_rmw<T, F: Fn(u32) -> u32>(ptr: *mut T, f: F) -> u32 {
let newval = f(curval);
let newval_aligned = insert_aligned(curval_aligned, newval, shift, mask);
if __kuser_cmpxchg(curval_aligned, newval_aligned, aligned_ptr) {
- return curval;
+ return g(curval, newval);
}
}
}
@@ -89,13 +89,21 @@ unsafe fn atomic_cmpxchg<T>(ptr: *mut T, oldval: u32, newval: u32) -> u32 {
}
macro_rules! atomic_rmw {
- ($name:ident, $ty:ty, $op:expr) => {
+ ($name:ident, $ty:ty, $op:expr, $fetch:expr) => {
intrinsics! {
pub unsafe extern "C" fn $name(ptr: *mut $ty, val: $ty) -> $ty {
- atomic_rmw(ptr, |x| $op(x as $ty, val) as u32) as $ty
+ atomic_rmw(ptr, |x| $op(x as $ty, val) as u32, |old, new| $fetch(old, new)) as $ty
}
}
};
+
+ (@old $name:ident, $ty:ty, $op:expr) => {
+ atomic_rmw!($name, $ty, $op, |old, _| old);
+ };
+
+ (@new $name:ident, $ty:ty, $op:expr) => {
+ atomic_rmw!($name, $ty, $op, |_, new| new);
+ };
}
macro_rules! atomic_cmpxchg {
($name:ident, $ty:ty) => {
@@ -107,101 +115,129 @@ macro_rules! atomic_cmpxchg {
};
}
-atomic_rmw!(__sync_fetch_and_add_1, u8, |a: u8, b: u8| a.wrapping_add(b));
-atomic_rmw!(__sync_fetch_and_add_2, u16, |a: u16, b: u16| a
+atomic_rmw!(@old __sync_fetch_and_add_1, u8, |a: u8, b: u8| a.wrapping_add(b));
+atomic_rmw!(@old __sync_fetch_and_add_2, u16, |a: u16, b: u16| a
+ .wrapping_add(b));
+atomic_rmw!(@old __sync_fetch_and_add_4, u32, |a: u32, b: u32| a
+ .wrapping_add(b));
+
+atomic_rmw!(@new __sync_add_and_fetch_1, u8, |a: u8, b: u8| a.wrapping_add(b));
+atomic_rmw!(@new __sync_add_and_fetch_2, u16, |a: u16, b: u16| a
.wrapping_add(b));
-atomic_rmw!(__sync_fetch_and_add_4, u32, |a: u32, b: u32| a
+atomic_rmw!(@new __sync_add_and_fetch_4, u32, |a: u32, b: u32| a
.wrapping_add(b));
-atomic_rmw!(__sync_fetch_and_sub_1, u8, |a: u8, b: u8| a.wrapping_sub(b));
-atomic_rmw!(__sync_fetch_and_sub_2, u16, |a: u16, b: u16| a
+atomic_rmw!(@old __sync_fetch_and_sub_1, u8, |a: u8, b: u8| a.wrapping_sub(b));
+atomic_rmw!(@old __sync_fetch_and_sub_2, u16, |a: u16, b: u16| a
.wrapping_sub(b));
-atomic_rmw!(__sync_fetch_and_sub_4, u32, |a: u32, b: u32| a
+atomic_rmw!(@old __sync_fetch_and_sub_4, u32, |a: u32, b: u32| a
.wrapping_sub(b));
-atomic_rmw!(__sync_fetch_and_and_1, u8, |a: u8, b: u8| a & b);
-atomic_rmw!(__sync_fetch_and_and_2, u16, |a: u16, b: u16| a & b);
-atomic_rmw!(__sync_fetch_and_and_4, u32, |a: u32, b: u32| a & b);
+atomic_rmw!(@new __sync_sub_and_fetch_1, u8, |a: u8, b: u8| a.wrapping_sub(b));
+atomic_rmw!(@new __sync_sub_and_fetch_2, u16, |a: u16, b: u16| a
+ .wrapping_sub(b));
+atomic_rmw!(@new __sync_sub_and_fetch_4, u32, |a: u32, b: u32| a
+ .wrapping_sub(b));
+
+atomic_rmw!(@old __sync_fetch_and_and_1, u8, |a: u8, b: u8| a & b);
+atomic_rmw!(@old __sync_fetch_and_and_2, u16, |a: u16, b: u16| a & b);
+atomic_rmw!(@old __sync_fetch_and_and_4, u32, |a: u32, b: u32| a & b);
+
+atomic_rmw!(@new __sync_and_and_fetch_1, u8, |a: u8, b: u8| a & b);
+atomic_rmw!(@new __sync_and_and_fetch_2, u16, |a: u16, b: u16| a & b);
+atomic_rmw!(@new __sync_and_and_fetch_4, u32, |a: u32, b: u32| a & b);
+
+atomic_rmw!(@old __sync_fetch_and_or_1, u8, |a: u8, b: u8| a | b);
+atomic_rmw!(@old __sync_fetch_and_or_2, u16, |a: u16, b: u16| a | b);
+atomic_rmw!(@old __sync_fetch_and_or_4, u32, |a: u32, b: u32| a | b);
+
+atomic_rmw!(@new __sync_or_and_fetch_1, u8, |a: u8, b: u8| a | b);
+atomic_rmw!(@new __sync_or_and_fetch_2, u16, |a: u16, b: u16| a | b);
+atomic_rmw!(@new __sync_or_and_fetch_4, u32, |a: u32, b: u32| a | b);
+
+atomic_rmw!(@old __sync_fetch_and_xor_1, u8, |a: u8, b: u8| a ^ b);
+atomic_rmw!(@old __sync_fetch_and_xor_2, u16, |a: u16, b: u16| a ^ b);
+atomic_rmw!(@old __sync_fetch_and_xor_4, u32, |a: u32, b: u32| a ^ b);
-atomic_rmw!(__sync_fetch_and_or_1, u8, |a: u8, b: u8| a | b);
-atomic_rmw!(__sync_fetch_and_or_2, u16, |a: u16, b: u16| a | b);
-atomic_rmw!(__sync_fetch_and_or_4, u32, |a: u32, b: u32| a | b);
+atomic_rmw!(@new __sync_xor_and_fetch_1, u8, |a: u8, b: u8| a ^ b);
+atomic_rmw!(@new __sync_xor_and_fetch_2, u16, |a: u16, b: u16| a ^ b);
+atomic_rmw!(@new __sync_xor_and_fetch_4, u32, |a: u32, b: u32| a ^ b);
-atomic_rmw!(__sync_fetch_and_xor_1, u8, |a: u8, b: u8| a ^ b);
-atomic_rmw!(__sync_fetch_and_xor_2, u16, |a: u16, b: u16| a ^ b);
-atomic_rmw!(__sync_fetch_and_xor_4, u32, |a: u32, b: u32| a ^ b);
+atomic_rmw!(@old __sync_fetch_and_nand_1, u8, |a: u8, b: u8| !(a & b));
+atomic_rmw!(@old __sync_fetch_and_nand_2, u16, |a: u16, b: u16| !(a & b));
+atomic_rmw!(@old __sync_fetch_and_nand_4, u32, |a: u32, b: u32| !(a & b));
-atomic_rmw!(__sync_fetch_and_nand_1, u8, |a: u8, b: u8| !(a & b));
-atomic_rmw!(__sync_fetch_and_nand_2, u16, |a: u16, b: u16| !(a & b));
-atomic_rmw!(__sync_fetch_and_nand_4, u32, |a: u32, b: u32| !(a & b));
+atomic_rmw!(@new __sync_nand_and_fetch_1, u8, |a: u8, b: u8| !(a & b));
+atomic_rmw!(@new __sync_nand_and_fetch_2, u16, |a: u16, b: u16| !(a & b));
+atomic_rmw!(@new __sync_nand_and_fetch_4, u32, |a: u32, b: u32| !(a & b));
-atomic_rmw!(__sync_fetch_and_max_1, i8, |a: i8, b: i8| if a > b {
+atomic_rmw!(@old __sync_fetch_and_max_1, i8, |a: i8, b: i8| if a > b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_max_2, i16, |a: i16, b: i16| if a > b {
+atomic_rmw!(@old __sync_fetch_and_max_2, i16, |a: i16, b: i16| if a > b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_max_4, i32, |a: i32, b: i32| if a > b {
+atomic_rmw!(@old __sync_fetch_and_max_4, i32, |a: i32, b: i32| if a > b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_umax_1, u8, |a: u8, b: u8| if a > b {
+atomic_rmw!(@old __sync_fetch_and_umax_1, u8, |a: u8, b: u8| if a > b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_umax_2, u16, |a: u16, b: u16| if a > b {
+atomic_rmw!(@old __sync_fetch_and_umax_2, u16, |a: u16, b: u16| if a > b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_umax_4, u32, |a: u32, b: u32| if a > b {
+atomic_rmw!(@old __sync_fetch_and_umax_4, u32, |a: u32, b: u32| if a > b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_min_1, i8, |a: i8, b: i8| if a < b {
+atomic_rmw!(@old __sync_fetch_and_min_1, i8, |a: i8, b: i8| if a < b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_min_2, i16, |a: i16, b: i16| if a < b {
+atomic_rmw!(@old __sync_fetch_and_min_2, i16, |a: i16, b: i16| if a < b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_min_4, i32, |a: i32, b: i32| if a < b {
+atomic_rmw!(@old __sync_fetch_and_min_4, i32, |a: i32, b: i32| if a < b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_umin_1, u8, |a: u8, b: u8| if a < b {
+atomic_rmw!(@old __sync_fetch_and_umin_1, u8, |a: u8, b: u8| if a < b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_umin_2, u16, |a: u16, b: u16| if a < b {
+atomic_rmw!(@old __sync_fetch_and_umin_2, u16, |a: u16, b: u16| if a < b {
a
} else {
b
});
-atomic_rmw!(__sync_fetch_and_umin_4, u32, |a: u32, b: u32| if a < b {
+atomic_rmw!(@old __sync_fetch_and_umin_4, u32, |a: u32, b: u32| if a < b {
a
} else {
b
});
-atomic_rmw!(__sync_lock_test_and_set_1, u8, |_: u8, b: u8| b);
-atomic_rmw!(__sync_lock_test_and_set_2, u16, |_: u16, b: u16| b);
-atomic_rmw!(__sync_lock_test_and_set_4, u32, |_: u32, b: u32| b);
+atomic_rmw!(@old __sync_lock_test_and_set_1, u8, |_: u8, b: u8| b);
+atomic_rmw!(@old __sync_lock_test_and_set_2, u16, |_: u16, b: u16| b);
+atomic_rmw!(@old __sync_lock_test_and_set_4, u32, |_: u32, b: u32| b);
atomic_cmpxchg!(__sync_val_compare_and_swap_1, u8);
atomic_cmpxchg!(__sync_val_compare_and_swap_2, u16);
diff --git a/vendor/compiler_builtins/src/float/conv.rs b/vendor/compiler_builtins/src/float/conv.rs
index 07b58f3d2..19fdc2fdc 100644
--- a/vendor/compiler_builtins/src/float/conv.rs
+++ b/vendor/compiler_builtins/src/float/conv.rs
@@ -13,7 +13,7 @@ mod int_to_float {
let a = (i << n) >> 8; // Significant bits, with bit 24 still in tact.
let b = (i << n) << 24; // Insignificant bits, only relevant for rounding.
let m = a + ((b - (b >> 31 & !a)) >> 31); // Add one when we need to round up. Break ties to even.
- let e = 157 - n as u32; // Exponent plus 127, minus one.
+ let e = 157 - n; // Exponent plus 127, minus one.
(e << 23) + m // + not |, so the mantissa can overflow into the exponent.
}
@@ -42,8 +42,8 @@ mod int_to_float {
return 0;
}
let n = i.leading_zeros();
- let a = ((i << n) >> 11) as u64; // Significant bits, with bit 53 still in tact.
- let b = ((i << n) << 53) as u64; // Insignificant bits, only relevant for rounding.
+ let a = (i << n) >> 11; // Significant bits, with bit 53 still in tact.
+ let b = (i << n) << 53; // Insignificant bits, only relevant for rounding.
let m = a + ((b - (b >> 63 & !a)) >> 63); // Add one when we need to round up. Break ties to even.
let e = 1085 - n as u64; // Exponent plus 1023, minus one.
(e << 52) + m // + not |, so the mantissa can overflow into the exponent.
@@ -92,12 +92,12 @@ intrinsics! {
f64::from_bits(int_to_float::u64_to_f64_bits(i))
}
- #[cfg_attr(not(target_feature = "llvm14-builtins-abi"), unadjusted_on_win64)]
+ #[cfg_attr(any(not(target_feature = "llvm14-builtins-abi"), target_os = "uefi"), unadjusted_on_win64)]
pub extern "C" fn __floatuntisf(i: u128) -> f32 {
f32::from_bits(int_to_float::u128_to_f32_bits(i))
}
- #[cfg_attr(not(target_feature = "llvm14-builtins-abi"), unadjusted_on_win64)]
+ #[cfg_attr(any(not(target_feature = "llvm14-builtins-abi"), target_os = "uefi"), unadjusted_on_win64)]
pub extern "C" fn __floatuntidf(i: u128) -> f64 {
f64::from_bits(int_to_float::u128_to_f64_bits(i))
}
@@ -129,13 +129,13 @@ intrinsics! {
f64::from_bits(int_to_float::u64_to_f64_bits(i.unsigned_abs()) | sign_bit)
}
- #[cfg_attr(not(target_feature = "llvm14-builtins-abi"), unadjusted_on_win64)]
+ #[cfg_attr(any(not(target_feature = "llvm14-builtins-abi"), target_os = "uefi"), unadjusted_on_win64)]
pub extern "C" fn __floattisf(i: i128) -> f32 {
let sign_bit = ((i >> 127) as u32) << 31;
f32::from_bits(int_to_float::u128_to_f32_bits(i.unsigned_abs()) | sign_bit)
}
- #[cfg_attr(not(target_feature = "llvm14-builtins-abi"), unadjusted_on_win64)]
+ #[cfg_attr(any(not(target_feature = "llvm14-builtins-abi"), target_os = "uefi"), unadjusted_on_win64)]
pub extern "C" fn __floattidf(i: i128) -> f64 {
let sign_bit = ((i >> 127) as u64) << 63;
f64::from_bits(int_to_float::u128_to_f64_bits(i.unsigned_abs()) | sign_bit)
diff --git a/vendor/compiler_builtins/src/float/div.rs b/vendor/compiler_builtins/src/float/div.rs
index 528a8368d..c2d6c07e7 100644
--- a/vendor/compiler_builtins/src/float/div.rs
+++ b/vendor/compiler_builtins/src/float/div.rs
@@ -135,11 +135,11 @@ where
let mut correction: u32 =
negate_u32(((reciprocal as u64).wrapping_mul(q31b as u64) >> 32) as u32);
- reciprocal = ((reciprocal as u64).wrapping_mul(correction as u64) as u64 >> 31) as u32;
+ reciprocal = ((reciprocal as u64).wrapping_mul(correction as u64) >> 31) as u32;
correction = negate_u32(((reciprocal as u64).wrapping_mul(q31b as u64) >> 32) as u32);
- reciprocal = ((reciprocal as u64).wrapping_mul(correction as u64) as u64 >> 31) as u32;
+ reciprocal = ((reciprocal as u64).wrapping_mul(correction as u64) >> 31) as u32;
correction = negate_u32(((reciprocal as u64).wrapping_mul(q31b as u64) >> 32) as u32);
- reciprocal = ((reciprocal as u64).wrapping_mul(correction as u64) as u64 >> 31) as u32;
+ reciprocal = ((reciprocal as u64).wrapping_mul(correction as u64) >> 31) as u32;
// Exhaustive testing shows that the error in reciprocal after three steps
// is in the interval [-0x1.f58108p-31, 0x1.d0e48cp-29], in line with our
diff --git a/vendor/compiler_builtins/src/int/specialized_div_rem/mod.rs b/vendor/compiler_builtins/src/int/specialized_div_rem/mod.rs
index 6ec4675df..77034eb54 100644
--- a/vendor/compiler_builtins/src/int/specialized_div_rem/mod.rs
+++ b/vendor/compiler_builtins/src/int/specialized_div_rem/mod.rs
@@ -72,7 +72,10 @@ mod asymmetric;
/// impossible to reach by Rust users, unless `compiler-builtins` public division functions or
/// `core/std::unchecked_div/rem` are directly used without a zero check in front.
fn zero_div_fn() -> ! {
- unsafe { core::hint::unreachable_unchecked() }
+ // Calling the intrinsic directly, to avoid the `assert_unsafe_precondition` that cannot be used
+ // here because it involves non-`inline` functions
+ // (https://github.com/rust-lang/compiler-builtins/issues/491).
+ unsafe { core::intrinsics::unreachable() }
}
const USE_LZ: bool = {
diff --git a/vendor/compiler_builtins/src/lib.rs b/vendor/compiler_builtins/src/lib.rs
index 009923d27..e7bc61e4c 100644
--- a/vendor/compiler_builtins/src/lib.rs
+++ b/vendor/compiler_builtins/src/lib.rs
@@ -6,6 +6,7 @@
#![feature(compiler_builtins)]
#![feature(core_ffi_c)]
#![feature(core_intrinsics)]
+#![feature(inline_const)]
#![feature(lang_items)]
#![feature(linkage)]
#![feature(naked_functions)]
@@ -45,6 +46,7 @@ pub mod int;
all(target_family = "wasm", target_os = "unknown"),
all(target_arch = "x86_64", target_os = "uefi"),
all(target_arch = "arm", target_os = "none"),
+ target_os = "xous",
all(target_vendor = "fortanix", target_env = "sgx")
))]
pub mod math;
diff --git a/vendor/compiler_builtins/src/macros.rs b/vendor/compiler_builtins/src/macros.rs
index 518a18d4d..477c25684 100644
--- a/vendor/compiler_builtins/src/macros.rs
+++ b/vendor/compiler_builtins/src/macros.rs
@@ -174,7 +174,7 @@ macro_rules! intrinsics {
$($rest:tt)*
) => (
- #[cfg(all(windows, target_pointer_width = "64"))]
+ #[cfg(all(any(windows, all(target_os = "uefi", target_arch = "x86_64")), target_pointer_width = "64"))]
intrinsics! {
$(#[$($attr)*])*
pub extern "unadjusted" fn $name( $($argname: $ty),* ) $(-> $ret)? {
@@ -182,7 +182,7 @@ macro_rules! intrinsics {
}
}
- #[cfg(not(all(windows, target_pointer_width = "64")))]
+ #[cfg(not(all(any(windows, all(target_os = "uefi", target_arch = "x86_64")), target_pointer_width = "64")))]
intrinsics! {
$(#[$($attr)*])*
pub extern $abi fn $name( $($argname: $ty),* ) $(-> $ret)? {
@@ -209,13 +209,13 @@ macro_rules! intrinsics {
$($rest:tt)*
) => (
- #[cfg(all(windows, target_arch = "x86_64"))]
+ #[cfg(all(any(windows, target_os = "uefi"), target_arch = "x86_64"))]
$(#[$($attr)*])*
pub extern $abi fn $name( $($argname: $ty),* ) $(-> $ret)? {
$($body)*
}
- #[cfg(all(windows, target_arch = "x86_64"))]
+ #[cfg(all(any(windows, target_os = "uefi"), target_arch = "x86_64"))]
pub mod $name {
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
pub extern $abi fn $name( $($argname: $ty),* )
@@ -226,7 +226,7 @@ macro_rules! intrinsics {
}
}
- #[cfg(not(all(windows, target_arch = "x86_64")))]
+ #[cfg(not(all(any(windows, target_os = "uefi"), target_arch = "x86_64")))]
intrinsics! {
$(#[$($attr)*])*
pub extern $abi fn $name( $($argname: $ty),* ) $(-> $ret)? {
@@ -266,6 +266,7 @@ macro_rules! intrinsics {
#[cfg(target_arch = "arm")]
pub mod $alias {
#[cfg_attr(not(feature = "mangled-names"), no_mangle)]
+ #[cfg_attr(all(not(windows), not(target_vendor="apple")), linkage = "weak")]
pub extern "aapcs" fn $alias( $($argname: $ty),* ) $(-> $ret)? {
super::$name($($argname),*)
}
@@ -426,7 +427,7 @@ macro_rules! intrinsics {
// Hack for LLVM expectations for ABI on windows. This is used by the
// `#[win64_128bit_abi_hack]` attribute recognized above
-#[cfg(all(windows, target_pointer_width = "64"))]
+#[cfg(all(any(windows, target_os = "uefi"), target_pointer_width = "64"))]
pub mod win64_128bit_abi_hack {
#[repr(simd)]
pub struct U64x2(u64, u64);
diff --git a/vendor/compiler_builtins/src/math.rs b/vendor/compiler_builtins/src/math.rs
index fa59753f8..3fc33b127 100644
--- a/vendor/compiler_builtins/src/math.rs
+++ b/vendor/compiler_builtins/src/math.rs
@@ -20,6 +20,7 @@ macro_rules! no_mangle {
target_os = "unknown",
not(target_env = "wasi")
),
+ target_os = "xous",
all(target_arch = "x86_64", target_os = "uefi"),
all(target_arch = "xtensa", target_os = "none"),
all(target_vendor = "fortanix", target_env = "sgx")
@@ -62,6 +63,8 @@ no_mangle! {
fn tanhf(n: f32) -> f32;
fn ldexp(f: f64, n: i32) -> f64;
fn ldexpf(f: f32, n: i32) -> f32;
+ fn tgamma(x: f64) -> f64;
+ fn tgammaf(x: f32) -> f32;
}
#[cfg(any(
@@ -70,6 +73,8 @@ no_mangle! {
target_os = "unknown",
not(target_env = "wasi")
),
+ target_os = "xous",
+ all(target_arch = "x86_64", target_os = "uefi"),
all(target_arch = "xtensa", target_os = "none"),
all(target_vendor = "fortanix", target_env = "sgx")
))]
@@ -93,7 +98,17 @@ no_mangle! {
fn tanf(n: f32) -> f32;
}
-#[cfg(all(target_vendor = "fortanix", target_env = "sgx"))]
+#[cfg(any(target_os = "xous", target_os = "uefi"))]
+no_mangle! {
+ fn sqrtf(x: f32) -> f32;
+ fn sqrt(x: f64) -> f64;
+}
+
+#[cfg(any(
+ all(target_vendor = "fortanix", target_env = "sgx"),
+ target_os = "xous",
+ target_os = "uefi"
+))]
no_mangle! {
fn ceil(x: f64) -> f64;
fn ceilf(x: f32) -> f32;
@@ -103,8 +118,11 @@ no_mangle! {
fn truncf(x: f32) -> f32;
}
-// only for the thumb*-none-eabi* targets
-#[cfg(all(target_arch = "arm", target_os = "none"))]
+// only for the thumb*-none-eabi* targets and riscv32*-none-elf targets that lack the floating point instruction set
+#[cfg(any(
+ all(target_arch = "arm", target_os = "none"),
+ all(target_arch = "riscv32", not(target_feature = "f"), target_os = "none")
+))]
no_mangle! {
fn fmin(x: f64, y: f64) -> f64;
fn fminf(x: f32, y: f32) -> f32;
diff --git a/vendor/compiler_builtins/src/mem/impls.rs b/vendor/compiler_builtins/src/mem/impls.rs
index 815132425..72003a5c4 100644
--- a/vendor/compiler_builtins/src/mem/impls.rs
+++ b/vendor/compiler_builtins/src/mem/impls.rs
@@ -265,3 +265,17 @@ pub unsafe fn set_bytes(mut s: *mut u8, c: u8, mut n: usize) {
}
set_bytes_bytes(s, c, n);
}
+
+#[inline(always)]
+pub unsafe fn compare_bytes(s1: *const u8, s2: *const u8, n: usize) -> i32 {
+ let mut i = 0;
+ while i < n {
+ let a = *s1.add(i);
+ let b = *s2.add(i);
+ if a != b {
+ return a as i32 - b as i32;
+ }
+ i += 1;
+ }
+ 0
+}
diff --git a/vendor/compiler_builtins/src/mem/mod.rs b/vendor/compiler_builtins/src/mem/mod.rs
index a55113861..c5b0ddc16 100644
--- a/vendor/compiler_builtins/src/mem/mod.rs
+++ b/vendor/compiler_builtins/src/mem/mod.rs
@@ -51,16 +51,7 @@ intrinsics! {
#[mem_builtin]
#[cfg_attr(not(all(target_os = "windows", target_env = "gnu")), linkage = "weak")]
pub unsafe extern "C" fn memcmp(s1: *const u8, s2: *const u8, n: usize) -> i32 {
- let mut i = 0;
- while i < n {
- let a = *s1.add(i);
- let b = *s2.add(i);
- if a != b {
- return a as i32 - b as i32;
- }
- i += 1;
- }
- 0
+ impls::compare_bytes(s1, s2, n)
}
#[mem_builtin]
diff --git a/vendor/compiler_builtins/src/mem/x86_64.rs b/vendor/compiler_builtins/src/mem/x86_64.rs
index a7ab6f605..17b461f79 100644
--- a/vendor/compiler_builtins/src/mem/x86_64.rs
+++ b/vendor/compiler_builtins/src/mem/x86_64.rs
@@ -16,6 +16,10 @@
// feature is present at compile-time. We don't bother detecting other features.
// Note that ERMSB does not enhance the backwards (DF=1) "rep movsb".
+use core::arch::asm;
+use core::intrinsics;
+use core::mem;
+
#[inline(always)]
#[cfg(target_feature = "ermsb")]
pub unsafe fn copy_forward(dest: *mut u8, src: *const u8, count: usize) {
@@ -31,16 +35,26 @@ pub unsafe fn copy_forward(dest: *mut u8, src: *const u8, count: usize) {
#[inline(always)]
#[cfg(not(target_feature = "ermsb"))]
-pub unsafe fn copy_forward(dest: *mut u8, src: *const u8, count: usize) {
- let qword_count = count >> 3;
- let byte_count = count & 0b111;
- // FIXME: Use the Intel syntax once we drop LLVM 9 support on rust-lang/rust.
- core::arch::asm!(
- "repe movsq (%rsi), (%rdi)",
- "mov {byte_count:e}, %ecx",
- "repe movsb (%rsi), (%rdi)",
- byte_count = in(reg) byte_count,
+pub unsafe fn copy_forward(mut dest: *mut u8, mut src: *const u8, count: usize) {
+ let (pre_byte_count, qword_count, byte_count) = rep_param(dest, count);
+ // Separating the blocks gives the compiler more freedom to reorder instructions.
+ asm!(
+ "rep movsb",
+ inout("ecx") pre_byte_count => _,
+ inout("rdi") dest => dest,
+ inout("rsi") src => src,
+ options(att_syntax, nostack, preserves_flags)
+ );
+ asm!(
+ "rep movsq",
inout("rcx") qword_count => _,
+ inout("rdi") dest => dest,
+ inout("rsi") src => src,
+ options(att_syntax, nostack, preserves_flags)
+ );
+ asm!(
+ "rep movsb",
+ inout("ecx") byte_count => _,
inout("rdi") dest => _,
inout("rsi") src => _,
options(att_syntax, nostack, preserves_flags)
@@ -49,22 +63,28 @@ pub unsafe fn copy_forward(dest: *mut u8, src: *const u8, count: usize) {
#[inline(always)]
pub unsafe fn copy_backward(dest: *mut u8, src: *const u8, count: usize) {
- let qword_count = count >> 3;
- let byte_count = count & 0b111;
- // FIXME: Use the Intel syntax once we drop LLVM 9 support on rust-lang/rust.
- core::arch::asm!(
+ let (pre_byte_count, qword_count, byte_count) = rep_param(dest, count);
+ // We can't separate this block due to std/cld
+ asm!(
"std",
- "repe movsq (%rsi), (%rdi)",
- "movl {byte_count:e}, %ecx",
- "addq $7, %rdi",
- "addq $7, %rsi",
- "repe movsb (%rsi), (%rdi)",
+ "rep movsb",
+ "sub $7, %rsi",
+ "sub $7, %rdi",
+ "mov {qword_count}, %rcx",
+ "rep movsq",
+ "test {pre_byte_count:e}, {pre_byte_count:e}",
+ "add $7, %rsi",
+ "add $7, %rdi",
+ "mov {pre_byte_count:e}, %ecx",
+ "rep movsb",
"cld",
- byte_count = in(reg) byte_count,
- inout("rcx") qword_count => _,
- inout("rdi") dest.add(count).wrapping_sub(8) => _,
- inout("rsi") src.add(count).wrapping_sub(8) => _,
- options(att_syntax, nostack)
+ pre_byte_count = in(reg) pre_byte_count,
+ qword_count = in(reg) qword_count,
+ inout("ecx") byte_count => _,
+ inout("rdi") dest.add(count - 1) => _,
+ inout("rsi") src.add(count - 1) => _,
+ // We modify flags, but we restore it afterwards
+ options(att_syntax, nostack, preserves_flags)
);
}
@@ -83,18 +103,82 @@ pub unsafe fn set_bytes(dest: *mut u8, c: u8, count: usize) {
#[inline(always)]
#[cfg(not(target_feature = "ermsb"))]
-pub unsafe fn set_bytes(dest: *mut u8, c: u8, count: usize) {
- let qword_count = count >> 3;
- let byte_count = count & 0b111;
- // FIXME: Use the Intel syntax once we drop LLVM 9 support on rust-lang/rust.
- core::arch::asm!(
- "repe stosq %rax, (%rdi)",
- "mov {byte_count:e}, %ecx",
- "repe stosb %al, (%rdi)",
- byte_count = in(reg) byte_count,
+pub unsafe fn set_bytes(mut dest: *mut u8, c: u8, count: usize) {
+ let c = c as u64 * 0x0101_0101_0101_0101;
+ let (pre_byte_count, qword_count, byte_count) = rep_param(dest, count);
+ // Separating the blocks gives the compiler more freedom to reorder instructions.
+ asm!(
+ "rep stosb",
+ inout("ecx") pre_byte_count => _,
+ inout("rdi") dest => dest,
+ in("rax") c,
+ options(att_syntax, nostack, preserves_flags)
+ );
+ asm!(
+ "rep stosq",
inout("rcx") qword_count => _,
+ inout("rdi") dest => dest,
+ in("rax") c,
+ options(att_syntax, nostack, preserves_flags)
+ );
+ asm!(
+ "rep stosb",
+ inout("ecx") byte_count => _,
inout("rdi") dest => _,
- in("rax") (c as u64) * 0x0101010101010101,
+ in("rax") c,
options(att_syntax, nostack, preserves_flags)
);
}
+
+#[inline(always)]
+pub unsafe fn compare_bytes(a: *const u8, b: *const u8, n: usize) -> i32 {
+ #[inline(always)]
+ unsafe fn cmp<T, U, F>(mut a: *const T, mut b: *const T, n: usize, f: F) -> i32
+ where
+ T: Clone + Copy + Eq,
+ U: Clone + Copy + Eq,
+ F: FnOnce(*const U, *const U, usize) -> i32,
+ {
+ // Ensure T is not a ZST.
+ const { assert!(mem::size_of::<T>() != 0) };
+
+ let end = a.add(intrinsics::unchecked_div(n, mem::size_of::<T>()));
+ while a != end {
+ if a.read_unaligned() != b.read_unaligned() {
+ return f(a.cast(), b.cast(), mem::size_of::<T>());
+ }
+ a = a.add(1);
+ b = b.add(1);
+ }
+ f(
+ a.cast(),
+ b.cast(),
+ intrinsics::unchecked_rem(n, mem::size_of::<T>()),
+ )
+ }
+ let c1 = |mut a: *const u8, mut b: *const u8, n| {
+ for _ in 0..n {
+ if a.read() != b.read() {
+ return i32::from(a.read()) - i32::from(b.read());
+ }
+ a = a.add(1);
+ b = b.add(1);
+ }
+ 0
+ };
+ let c2 = |a: *const u16, b, n| cmp(a, b, n, c1);
+ let c4 = |a: *const u32, b, n| cmp(a, b, n, c2);
+ let c8 = |a: *const u64, b, n| cmp(a, b, n, c4);
+ let c16 = |a: *const u128, b, n| cmp(a, b, n, c8);
+ c16(a.cast(), b.cast(), n)
+}
+
+/// Determine optimal parameters for a `rep` instruction.
+fn rep_param(dest: *mut u8, mut count: usize) -> (usize, usize, usize) {
+ // Unaligned writes are still slow on modern processors, so align the destination address.
+ let pre_byte_count = ((8 - (dest as usize & 0b111)) & 0b111).min(count);
+ count -= pre_byte_count;
+ let qword_count = count >> 3;
+ let byte_count = count & 0b111;
+ (pre_byte_count, qword_count, byte_count)
+}
diff --git a/vendor/compiletest_rs/.cargo-checksum.json b/vendor/compiletest_rs/.cargo-checksum.json
index 8533fd089..c7ba6752d 100644
--- a/vendor/compiletest_rs/.cargo-checksum.json
+++ b/vendor/compiletest_rs/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"e66bd0207f0ea860188e04376705d67a4658e78295bcaf579b2a89dbd9088d54","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0621878e61f0d0fda054bcbe02df75192c28bde1ecc8289cbd86aeba2dd72720","README.md":"e0655e85239c6e887c0f35e1b97fb2574127ea61c28e3deec93c20b560f47892","build.rs":"905784fbb4a75c17279a88fd476e7221104adf00b4dd745a4a66bd41cac8d77a","src/common.rs":"df14f9c75c6a341c5bbc90c4b386c20f66164196f3b4b2ffc19b454d6b658e2b","src/errors.rs":"88a36d1726d90b11bf9272b1439dd52cd4fdf2e70e6e0cb6cfb323f76d84e3ff","src/header.rs":"04e405d100c46dd82139705e8b833e03d19c597edf3a5f7fee92ad9cbd12c201","src/json.rs":"e278c4c3c32c60e840a250b0979926e2ac333dcbbbaae5ab6fcf01ca05bef625","src/lib.rs":"ac780a6ad8d9eb84bd0c6bd7c56fab64a98ef29b9133f1b4fb2a845b58c839bc","src/raise_fd_limit.rs":"b0840fe16df9edaae0571499e105db47768050fcd62729d1e56295f2db34318e","src/read2.rs":"fb9caa84bec8c9c3d2c1ee39a4a6698c461fdc77aec086c74fd7738a6acf4155","src/runtest.rs":"9dc12384637275790ca5a030f79e7ea72be991ff8d5365193e48895a30db6454","src/uidiff.rs":"2f612bd4ed76d68c0f6b3eb8dda5adf14a3e6ceef261c88c810ac6b6857e2d34","src/util.rs":"9cda9e803ffe5e1b5d4c74cf7da7bd51e28a8d1b09bda3d31e01c0f648c3262d","tests/bless.rs":"29031f02666102ab8cde316b9206bf1e770275f9fa6e0172754dcad859a52b5b","tests/test_support/mod.rs":"21ec96cca07cf95b6e3333917a5158a6c47356940063f77d52503b97fd3d8b79"},"package":"262134ef87408da1ddfe45e33daa0ca43b75286d6b1076446e602d264cf9847e"} \ No newline at end of file
+{"files":{"Cargo.toml":"cc0342b513ff3ec9dd349398d0a851131ce10afa5b7748997fe7b66f4c75ad32","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0621878e61f0d0fda054bcbe02df75192c28bde1ecc8289cbd86aeba2dd72720","README.md":"043fc0e7bbad6798c80b81640db2f45cea97b2cadadf8d21e08fe89119872e07","build.rs":"905784fbb4a75c17279a88fd476e7221104adf00b4dd745a4a66bd41cac8d77a","src/common.rs":"df14f9c75c6a341c5bbc90c4b386c20f66164196f3b4b2ffc19b454d6b658e2b","src/errors.rs":"88a36d1726d90b11bf9272b1439dd52cd4fdf2e70e6e0cb6cfb323f76d84e3ff","src/header.rs":"04e405d100c46dd82139705e8b833e03d19c597edf3a5f7fee92ad9cbd12c201","src/json.rs":"e278c4c3c32c60e840a250b0979926e2ac333dcbbbaae5ab6fcf01ca05bef625","src/lib.rs":"ac780a6ad8d9eb84bd0c6bd7c56fab64a98ef29b9133f1b4fb2a845b58c839bc","src/raise_fd_limit.rs":"b0840fe16df9edaae0571499e105db47768050fcd62729d1e56295f2db34318e","src/read2.rs":"fb9caa84bec8c9c3d2c1ee39a4a6698c461fdc77aec086c74fd7738a6acf4155","src/runtest.rs":"4d0d761d8f848ceda532ecc1363d5280951656c5a9ea7eff75d91475e7fcf269","src/uidiff.rs":"2f612bd4ed76d68c0f6b3eb8dda5adf14a3e6ceef261c88c810ac6b6857e2d34","src/util.rs":"9cda9e803ffe5e1b5d4c74cf7da7bd51e28a8d1b09bda3d31e01c0f648c3262d","tests/bless.rs":"29031f02666102ab8cde316b9206bf1e770275f9fa6e0172754dcad859a52b5b","tests/test_support/mod.rs":"21ec96cca07cf95b6e3333917a5158a6c47356940063f77d52503b97fd3d8b79"},"package":"70489bbb718aea4f92e5f48f2e3b5be670c2051de30e57cb6e5377b4aa08b372"} \ No newline at end of file
diff --git a/vendor/compiletest_rs/Cargo.toml b/vendor/compiletest_rs/Cargo.toml
index 9403548b8..f56e4d712 100644
--- a/vendor/compiletest_rs/Cargo.toml
+++ b/vendor/compiletest_rs/Cargo.toml
@@ -11,7 +11,7 @@
[package]
name = "compiletest_rs"
-version = "0.8.0"
+version = "0.9.0"
authors = [
"The Rust Project Developers",
"Thomas Bracht Laumann Jespersen <laumann.thomas@gmail.com>",
diff --git a/vendor/compiletest_rs/README.md b/vendor/compiletest_rs/README.md
index bf7cac194..c01a40c9b 100644
--- a/vendor/compiletest_rs/README.md
+++ b/vendor/compiletest_rs/README.md
@@ -14,7 +14,7 @@ To use `compiletest-rs` in your application, add the following to `Cargo.toml`
```toml
[dev-dependencies]
-compiletest_rs = "0.7"
+compiletest_rs = "0.9"
```
By default, `compiletest-rs` should be able to run on both stable, beta and
@@ -28,7 +28,7 @@ crate.
```toml
[dev-dependencies]
-compiletest_rs = { version = "0.7", features = [ "rustc" ] }
+compiletest_rs = { version = "0.9", features = [ "rustc" ] }
```
Create a `tests` folder in the root folder of your project. Create a test file
diff --git a/vendor/compiletest_rs/src/runtest.rs b/vendor/compiletest_rs/src/runtest.rs
index c52551488..47f9c4870 100644
--- a/vendor/compiletest_rs/src/runtest.rs
+++ b/vendor/compiletest_rs/src/runtest.rs
@@ -33,9 +33,28 @@ use std::io::{self, BufReader};
use std::path::{Path, PathBuf};
use std::process::{Command, Output, ExitStatus, Stdio, Child};
use std::str;
+use std::sync::{Arc, Mutex, RwLock};
use extract_gdb_version;
+fn get_or_create_coverage_file(path: &Path, create: impl FnOnce() -> File) -> Arc<Mutex<File>> {
+ lazy_static::lazy_static! {
+ static ref COVERAGE_FILE_LOCKS: RwLock<HashMap<PathBuf, Arc<Mutex<File>>>> = RwLock::new(HashMap::new());
+ }
+
+ {
+ let locks = COVERAGE_FILE_LOCKS.read().unwrap();
+ locks.get(path).map(Arc::clone)
+ }
+ .unwrap_or_else(|| {
+ let mut locks = COVERAGE_FILE_LOCKS.write().unwrap();
+ locks
+ .entry(path.to_path_buf())
+ .or_insert_with(|| Arc::new(Mutex::new(create())))
+ .clone()
+ })
+}
+
/// The name of the environment variable that holds dynamic library locations.
pub fn dylib_env_var() -> &'static str {
if cfg!(windows) {
@@ -2343,16 +2362,23 @@ actual:\n\
coverage_file_path.push("rustfix_missing_coverage.txt");
debug!("coverage_file_path: {}", coverage_file_path.display());
- let mut file = OpenOptions::new()
- .create(true)
- .append(true)
- .open(coverage_file_path.as_path())
- .expect("could not create or open file");
-
- if let Err(_) = writeln!(file, "{}", self.testpaths.file.display()) {
+ let file_ref = get_or_create_coverage_file(&coverage_file_path, || {
+ OpenOptions::new()
+ .create(true)
+ .write(true)
+ .truncate(true)
+ .open(coverage_file_path.as_path())
+ .expect("could not create or open file")
+ });
+ let mut file = file_ref.lock().unwrap();
+
+ if writeln!(file, "{}", self.testpaths.file.display())
+ .and_then(|_| file.sync_data())
+ .is_err()
+ {
panic!("couldn't write to {}", coverage_file_path.display());
}
- }
+ }
}
if self.props.run_rustfix {
@@ -2408,10 +2434,13 @@ actual:\n\
// And finally, compile the fixed code and make sure it both
// succeeds and has no diagnostics.
let mut rustc = self.make_compile_args(
- &self.testpaths.file.with_extension(UI_FIXED),
+ &expected_fixed_path,
TargetLocation::ThisFile(self.make_exe_name()),
AllowUnused::No,
);
+ // Set the crate name to avoid `file.revision.fixed` inferring the
+ // invalid name `file.revision`
+ rustc.arg("--crate-name=fixed");
rustc.arg("-L").arg(&self.aux_output_dir_name());
let res = self.compose_and_run_compiler(rustc, None);
if !res.status.success() {
diff --git a/vendor/crossbeam-channel/.cargo-checksum.json b/vendor/crossbeam-channel/.cargo-checksum.json
index dd210c73b..96db2f1ab 100644
--- a/vendor/crossbeam-channel/.cargo-checksum.json
+++ b/vendor/crossbeam-channel/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"704f57293fd91b9801cb8befda7622900b6f02ffe76387ea03bd7e9a041ede50","Cargo.lock":"3b56bd551cb1b7d4e733413036c67b1407ac40e4899e8a368641884e0986ce60","Cargo.toml":"d5d17d3cace2539f582aa6aa6b41c1be09e621266fd0839cdb63920db04e229a","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","LICENSE-THIRD-PARTY":"b16db96b93b1d7cf7bea533f572091ec6bca3234fbe0a83038be772ff391a44c","README.md":"415a71d4978cfd338a6ae1f1b41284652eccd277a815542c304647dc437a8274","benches/crossbeam.rs":"96cb1abd23cac3ef8a7174a802e94609926b555bb02c9658c78723d433f1dd92","examples/fibonacci.rs":"4e88fa40048cdc31e9c7bb60347d46f92543d7ddf39cab3b52bfe44affdb6a02","examples/matching.rs":"63c250e164607a7a9f643d46f107bb5da846d49e89cf9069909562d20e530f71","examples/stopwatch.rs":"d02121258f08d56f1eb7997e19bcb9bacb6836cfa0abbba90a9e59d8a50ae5cf","src/channel.rs":"9538e285101c152e23c5ff6a47b0305753d94a5b27f3426499052b0e3d0f97ee","src/context.rs":"ff4d39639ddf16aaab582d4a5f3d10ef2c71afe1abbf4e60f3d9d2ddbd72c230","src/counter.rs":"c49a9f44587888850edeb62f7c8ecd1acecb39c836834254ff3ac934c478440a","src/err.rs":"44cb2024ee6b0cd6fd24996430e53720769f64b4ac35016bc3e05cb9db48681d","src/flavors/array.rs":"08e37b7c07e9a525a32cc61f89b384b897a8d852b2eda5e85ea0cf4ba7527a3f","src/flavors/at.rs":"1db64919593b7c14f838c16a22732515f1e716d2d5f6cc639f42631380e545cd","src/flavors/list.rs":"c05da598d0759b05c345050df1f6206946098203e3021260bd722f5ea24d9240","src/flavors/mod.rs":"3d9d43bc38b0adb18c96c995c2bd3421d8e33ab6c30b20c3c467d21d48e485dc","src/flavors/never.rs":"747da857aa1a7601641f23f4930e6ad00ebaf50456d9be5c7aa270e2ecc24dcb","src/flavors/tick.rs":"69b2dfe0186bc8b9fd7a73e32da59d2656d8150da1e00fba92a412e0907568a3","src/flavors/zero.rs":"d7e67264d7b33152f52f1d4d8cdb565334b53508f56308f72140528d0645aa73","src/lib.rs":"3a65706d4124844ffc4c8cb1f8cc779631ec94f449f85cbb68364ad3619404f1","src/select.rs":"3b00c3929d3a8973e46188db41f6ae0b47c89ab108cf7ec2cb348e272e77e132","src/select_macro.rs":"283acd04870356b0c4d3d4046c5070638b562c9ffb8fa29c1a5b90a2509bf3af","src/utils.rs":"0b6e6621198236c077fcb6b66203317e36dc8f1a157dd3b22ad422b6599ae389","src/waker.rs":"6839108d1c9357b3c0c1c162c8b4633ff5ac4f756e95e677ac1293e7df942635","tests/after.rs":"0154a8e152880db17a20514ecdd49dabc361d3629858d119b9746b5e932c780c","tests/array.rs":"be8176ac8f1376567f28e60c15e95b9baf8cb4c8e0e2c1de9b286a49c988dc73","tests/golang.rs":"708a4d0d94abacb2c054ac117eff79689398f76a5cb089ca188dd2b4ed53ec6b","tests/iter.rs":"25dc02135bbae9d47a30f9047661648e66bdc134e40ba78bc2fbacbb8b3819bc","tests/list.rs":"0937da0413fa9ecdcba687c4c07c9b254bc82fb85cb2f836425550890c31ed36","tests/mpsc.rs":"5a49429a29c9028ade618994e82d03d4f4405b62fb89a4464ba9d89e68a1a88d","tests/never.rs":"ee40c4fc4dd5af4983fae8de6927f52b81174d222c162f745b26c4a6c7108e4f","tests/ready.rs":"d349702f123925a0781b48d677e6dcf64fc5d1fc788a7bf1e151a3d57e81871c","tests/same_channel.rs":"2bab761443671e841e1b2476bd8082d75533a2f6be7946f5dbcee67cdc82dccb","tests/select.rs":"e5e9308e3adcc4c99f98cd7ad5f8149ec7030845d6263e9a5a27c317aa96363f","tests/select_macro.rs":"141adb62fddc1c1973b24b0cbcf87bae06fc537be4f8fbb68e12e0864e73795c","tests/thread_locals.rs":"a1ce59e2aff69161621c0cb215eb6ea238088c06a31a8507a74cf179fd5a4299","tests/tick.rs":"5f697bd14c48505d932e82065b5302ef668e1cc19cac18e8ac22e0c83c221c1d","tests/zero.rs":"54f8ee1fa8316a99457f1c6bb5a8e31c4b21d39b3b4d79b276a53c6340940c8f"},"package":"4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"f87a526ab720644e07509dd76d29c08993a5e52a6d6ec230d809fc31a1c0e403","Cargo.lock":"8af0a5f8b3d1e6f036332a5ecc91b30222343f29a465ea398bca3298c0212f4a","Cargo.toml":"81a227ee6f529cd0cf62327f63eb098fed59c04dde2a8e68aeaa0ea32dbafbcf","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","LICENSE-THIRD-PARTY":"b16db96b93b1d7cf7bea533f572091ec6bca3234fbe0a83038be772ff391a44c","README.md":"4e16587d8f6a15f2016f256535aa6c9429424672ebdcd03c1a7d964746e46127","benches/crossbeam.rs":"96cb1abd23cac3ef8a7174a802e94609926b555bb02c9658c78723d433f1dd92","examples/fibonacci.rs":"4e88fa40048cdc31e9c7bb60347d46f92543d7ddf39cab3b52bfe44affdb6a02","examples/matching.rs":"63c250e164607a7a9f643d46f107bb5da846d49e89cf9069909562d20e530f71","examples/stopwatch.rs":"d02121258f08d56f1eb7997e19bcb9bacb6836cfa0abbba90a9e59d8a50ae5cf","src/channel.rs":"9538e285101c152e23c5ff6a47b0305753d94a5b27f3426499052b0e3d0f97ee","src/context.rs":"ff4d39639ddf16aaab582d4a5f3d10ef2c71afe1abbf4e60f3d9d2ddbd72c230","src/counter.rs":"c49a9f44587888850edeb62f7c8ecd1acecb39c836834254ff3ac934c478440a","src/err.rs":"44cb2024ee6b0cd6fd24996430e53720769f64b4ac35016bc3e05cb9db48681d","src/flavors/array.rs":"508e54587fc8d9e8dfacd16446a601e33838d7bb1dfd9d7ccc3e65315b66b35a","src/flavors/at.rs":"1db64919593b7c14f838c16a22732515f1e716d2d5f6cc639f42631380e545cd","src/flavors/list.rs":"d901d9259185a71aeb5cf74be70e5c38b550c7f38b87e023196cb47fed2d1a11","src/flavors/mod.rs":"3d9d43bc38b0adb18c96c995c2bd3421d8e33ab6c30b20c3c467d21d48e485dc","src/flavors/never.rs":"747da857aa1a7601641f23f4930e6ad00ebaf50456d9be5c7aa270e2ecc24dcb","src/flavors/tick.rs":"69b2dfe0186bc8b9fd7a73e32da59d2656d8150da1e00fba92a412e0907568a3","src/flavors/zero.rs":"7458eb0ece475dc5093b4f2cde13f6de57e4f70291258850de4fa3c951c8f594","src/lib.rs":"3a65706d4124844ffc4c8cb1f8cc779631ec94f449f85cbb68364ad3619404f1","src/select.rs":"3b00c3929d3a8973e46188db41f6ae0b47c89ab108cf7ec2cb348e272e77e132","src/select_macro.rs":"283acd04870356b0c4d3d4046c5070638b562c9ffb8fa29c1a5b90a2509bf3af","src/utils.rs":"0b6e6621198236c077fcb6b66203317e36dc8f1a157dd3b22ad422b6599ae389","src/waker.rs":"6839108d1c9357b3c0c1c162c8b4633ff5ac4f756e95e677ac1293e7df942635","tests/after.rs":"0154a8e152880db17a20514ecdd49dabc361d3629858d119b9746b5e932c780c","tests/array.rs":"a57ae6264e676f573d7adb5c4b024994e98bc6811352516adb3444f880f7125e","tests/golang.rs":"284bed0d4c07857f33de96f2addc9a69c5688f864935a3e3e113c88c04bd826b","tests/iter.rs":"25dc02135bbae9d47a30f9047661648e66bdc134e40ba78bc2fbacbb8b3819bc","tests/list.rs":"3d1a4ae23bb6b4767242b8109a8efda26f1d3b28c0f90da3368f8eb9ca0eee37","tests/mpsc.rs":"d1e185c6290240132a34aa91221271225959f8652d7fc4ceb546ee9712361176","tests/never.rs":"ee40c4fc4dd5af4983fae8de6927f52b81174d222c162f745b26c4a6c7108e4f","tests/ready.rs":"d349702f123925a0781b48d677e6dcf64fc5d1fc788a7bf1e151a3d57e81871c","tests/same_channel.rs":"2bab761443671e841e1b2476bd8082d75533a2f6be7946f5dbcee67cdc82dccb","tests/select.rs":"ce12a8e0284fb9ccf6c1543bec309d9054193e6d942663aed19aa8499ef69c43","tests/select_macro.rs":"597d526fbd021ce70619d9172c931439f778ee3034ec1479aea461b65971a81a","tests/thread_locals.rs":"25ab70a8dcd8a0da9173e5476e17dcc8916caa5b68207d9c403655deaa8e8f4a","tests/tick.rs":"5f697bd14c48505d932e82065b5302ef668e1cc19cac18e8ac22e0c83c221c1d","tests/zero.rs":"9c5af802d5efb2c711f8242b8905ed29cc2601e48dbd95e41c7e6fbfe2918398"},"package":"c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521"} \ No newline at end of file
diff --git a/vendor/crossbeam-channel/CHANGELOG.md b/vendor/crossbeam-channel/CHANGELOG.md
index 2f627cf26..f0d11e60c 100644
--- a/vendor/crossbeam-channel/CHANGELOG.md
+++ b/vendor/crossbeam-channel/CHANGELOG.md
@@ -1,3 +1,7 @@
+# Version 0.5.6
+
+- Bump the minimum supported Rust version to 1.38. (#877)
+
# Version 0.5.5
- Replace Spinlock with Mutex. (#835)
diff --git a/vendor/crossbeam-channel/Cargo.lock b/vendor/crossbeam-channel/Cargo.lock
index cd6eb056f..e40f83650 100644
--- a/vendor/crossbeam-channel/Cargo.lock
+++ b/vendor/crossbeam-channel/Cargo.lock
@@ -10,7 +10,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "crossbeam-channel"
-version = "0.5.5"
+version = "0.5.6"
dependencies = [
"cfg-if",
"crossbeam-utils",
@@ -21,9 +21,9 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
-version = "0.8.9"
+version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ff1f980957787286a554052d03c7aee98d99cc32e09f6d45f0a814133c87978"
+checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc"
dependencies = [
"cfg-if",
"once_cell",
@@ -67,9 +67,9 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.12.0"
+version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
+checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"
[[package]]
name = "ppv-lite86"
diff --git a/vendor/crossbeam-channel/Cargo.toml b/vendor/crossbeam-channel/Cargo.toml
index c02f8595c..619fad423 100644
--- a/vendor/crossbeam-channel/Cargo.toml
+++ b/vendor/crossbeam-channel/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2018"
-rust-version = "1.36"
+rust-version = "1.38"
name = "crossbeam-channel"
-version = "0.5.5"
+version = "0.5.6"
description = "Multi-producer multi-consumer channels for message passing"
homepage = "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-channel"
readme = "README.md"
diff --git a/vendor/crossbeam-channel/README.md b/vendor/crossbeam-channel/README.md
index f5077c556..4c42d863c 100644
--- a/vendor/crossbeam-channel/README.md
+++ b/vendor/crossbeam-channel/README.md
@@ -8,7 +8,7 @@ https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-channel#license)
https://crates.io/crates/crossbeam-channel)
[![Documentation](https://docs.rs/crossbeam-channel/badge.svg)](
https://docs.rs/crossbeam-channel)
-[![Rust 1.36+](https://img.shields.io/badge/rust-1.36+-lightgray.svg)](
+[![Rust 1.38+](https://img.shields.io/badge/rust-1.38+-lightgray.svg)](
https://www.rust-lang.org)
[![chat](https://img.shields.io/discord/569610676205781012.svg?logo=discord)](https://discord.com/invite/JXYwgWZ)
@@ -48,7 +48,7 @@ crossbeam-channel = "0.5"
Crossbeam Channel supports stable Rust releases going back at least six months,
and every time the minimum supported Rust version is increased, a new minor
-version is released. Currently, the minimum supported Rust version is 1.36.
+version is released. Currently, the minimum supported Rust version is 1.38.
## License
diff --git a/vendor/crossbeam-channel/src/flavors/array.rs b/vendor/crossbeam-channel/src/flavors/array.rs
index 73557d385..63b82eb85 100644
--- a/vendor/crossbeam-channel/src/flavors/array.rs
+++ b/vendor/crossbeam-channel/src/flavors/array.rs
@@ -216,7 +216,7 @@ impl<T> Channel<T> {
return Err(msg);
}
- let slot: &Slot<T> = &*(token.array.slot as *const Slot<T>);
+ let slot: &Slot<T> = &*token.array.slot.cast::<Slot<T>>();
// Write the message into the slot and update the stamp.
slot.msg.get().write(MaybeUninit::new(msg));
@@ -307,7 +307,7 @@ impl<T> Channel<T> {
return Err(());
}
- let slot: &Slot<T> = &*(token.array.slot as *const Slot<T>);
+ let slot: &Slot<T> = &*token.array.slot.cast::<Slot<T>>();
// Read the message from the slot and update the stamp.
let msg = slot.msg.get().read().assume_init();
diff --git a/vendor/crossbeam-channel/src/flavors/list.rs b/vendor/crossbeam-channel/src/flavors/list.rs
index 9bda6d1cc..6090b8d47 100644
--- a/vendor/crossbeam-channel/src/flavors/list.rs
+++ b/vendor/crossbeam-channel/src/flavors/list.rs
@@ -49,6 +49,11 @@ struct Slot<T> {
}
impl<T> Slot<T> {
+ const UNINIT: Self = Self {
+ msg: UnsafeCell::new(MaybeUninit::uninit()),
+ state: AtomicUsize::new(0),
+ };
+
/// Waits until a message is written into the slot.
fn wait_write(&self) {
let backoff = Backoff::new();
@@ -72,13 +77,10 @@ struct Block<T> {
impl<T> Block<T> {
/// Creates an empty block.
fn new() -> Block<T> {
- // SAFETY: This is safe because:
- // [1] `Block::next` (AtomicPtr) may be safely zero initialized.
- // [2] `Block::slots` (Array) may be safely zero initialized because of [3, 4].
- // [3] `Slot::msg` (UnsafeCell) may be safely zero initialized because it
- // holds a MaybeUninit.
- // [4] `Slot::state` (AtomicUsize) may be safely zero initialized.
- unsafe { MaybeUninit::zeroed().assume_init() }
+ Self {
+ next: AtomicPtr::new(ptr::null_mut()),
+ slots: [Slot::UNINIT; BLOCK_CAP],
+ }
}
/// Waits until the next pointer is set.
@@ -283,7 +285,7 @@ impl<T> Channel<T> {
}
// Write the message into the slot.
- let block = token.list.block as *mut Block<T>;
+ let block = token.list.block.cast::<Block<T>>();
let offset = token.list.offset;
let slot = (*block).slots.get_unchecked(offset);
slot.msg.get().write(MaybeUninit::new(msg));
diff --git a/vendor/crossbeam-channel/src/flavors/zero.rs b/vendor/crossbeam-channel/src/flavors/zero.rs
index 31e62afac..aae2ea300 100644
--- a/vendor/crossbeam-channel/src/flavors/zero.rs
+++ b/vendor/crossbeam-channel/src/flavors/zero.rs
@@ -190,7 +190,7 @@ impl<T> Channel<T> {
// heap-allocated packet.
packet.wait_ready();
let msg = packet.msg.get().replace(None).unwrap();
- drop(Box::from_raw(token.zero.0 as *mut Packet<T>));
+ drop(Box::from_raw(token.zero.0.cast::<Packet<T>>()));
Ok(msg)
}
}
@@ -409,7 +409,7 @@ impl<T> SelectHandle for Receiver<'_, T> {
let mut inner = self.0.inner.lock().unwrap();
inner
.receivers
- .register_with_packet(oper, packet as *mut (), cx);
+ .register_with_packet(oper, packet.cast::<()>(), cx);
inner.senders.notify();
inner.senders.can_select() || inner.is_disconnected
}
@@ -417,7 +417,7 @@ impl<T> SelectHandle for Receiver<'_, T> {
fn unregister(&self, oper: Operation) {
if let Some(operation) = self.0.inner.lock().unwrap().receivers.unregister(oper) {
unsafe {
- drop(Box::from_raw(operation.packet as *mut Packet<T>));
+ drop(Box::from_raw(operation.packet.cast::<Packet<T>>()));
}
}
}
@@ -459,7 +459,7 @@ impl<T> SelectHandle for Sender<'_, T> {
let mut inner = self.0.inner.lock().unwrap();
inner
.senders
- .register_with_packet(oper, packet as *mut (), cx);
+ .register_with_packet(oper, packet.cast::<()>(), cx);
inner.receivers.notify();
inner.receivers.can_select() || inner.is_disconnected
}
@@ -467,7 +467,7 @@ impl<T> SelectHandle for Sender<'_, T> {
fn unregister(&self, oper: Operation) {
if let Some(operation) = self.0.inner.lock().unwrap().senders.unregister(oper) {
unsafe {
- drop(Box::from_raw(operation.packet as *mut Packet<T>));
+ drop(Box::from_raw(operation.packet.cast::<Packet<T>>()));
}
}
}
diff --git a/vendor/crossbeam-channel/tests/array.rs b/vendor/crossbeam-channel/tests/array.rs
index de843cd32..6fd8ffcc6 100644
--- a/vendor/crossbeam-channel/tests/array.rs
+++ b/vendor/crossbeam-channel/tests/array.rs
@@ -377,7 +377,7 @@ fn spsc() {
#[test]
fn mpmc() {
#[cfg(miri)]
- const COUNT: usize = 100;
+ const COUNT: usize = 50;
#[cfg(not(miri))]
const COUNT: usize = 25_000;
const THREADS: usize = 4;
@@ -532,16 +532,12 @@ fn drops() {
scope.spawn(|_| {
for _ in 0..steps {
r.recv().unwrap();
- #[cfg(miri)]
- std::thread::yield_now(); // https://github.com/rust-lang/miri/issues/1388
}
});
scope.spawn(|_| {
for _ in 0..steps {
s.send(DropCounter).unwrap();
- #[cfg(miri)]
- std::thread::yield_now(); // https://github.com/rust-lang/miri/issues/1388
}
});
})
diff --git a/vendor/crossbeam-channel/tests/golang.rs b/vendor/crossbeam-channel/tests/golang.rs
index 6a46c0353..8050716c6 100644
--- a/vendor/crossbeam-channel/tests/golang.rs
+++ b/vendor/crossbeam-channel/tests/golang.rs
@@ -959,7 +959,7 @@ mod chan_test {
#[test]
fn test_chan() {
#[cfg(miri)]
- const N: i32 = 20;
+ const N: i32 = 12;
#[cfg(not(miri))]
const N: i32 = 200;
@@ -1489,7 +1489,7 @@ mod chan_test {
fn test_multi_consumer() {
const NWORK: usize = 23;
#[cfg(miri)]
- const NITER: usize = 100;
+ const NITER: usize = 50;
#[cfg(not(miri))]
const NITER: usize = 271828;
@@ -1580,9 +1580,7 @@ mod race_chan_test {
}
// https://github.com/golang/go/blob/master/test/ken/chan.go
-#[cfg(not(miri))] // Miri is too slow
mod chan {
-
use super::*;
const MESSAGES_PER_CHANEL: u32 = 76;
@@ -2052,6 +2050,7 @@ mod chan {
}
#[test]
+ #[cfg_attr(miri, ignore)] // Miri is too slow
fn main() {
let mut ctx = Context {
nproc: Arc::new(Mutex::new(0)),
diff --git a/vendor/crossbeam-channel/tests/list.rs b/vendor/crossbeam-channel/tests/list.rs
index a0b908722..ebe6f6f85 100644
--- a/vendor/crossbeam-channel/tests/list.rs
+++ b/vendor/crossbeam-channel/tests/list.rs
@@ -67,6 +67,7 @@ fn len_empty_full() {
}
#[test]
+#[cfg_attr(miri, ignore)] // this test makes timing assumptions, but Miri is so slow it violates them
fn try_recv() {
let (s, r) = unbounded();
@@ -433,8 +434,6 @@ fn drops() {
scope.spawn(|_| {
for _ in 0..steps {
r.recv().unwrap();
- #[cfg(miri)]
- std::thread::yield_now(); // https://github.com/rust-lang/miri/issues/1388
}
});
diff --git a/vendor/crossbeam-channel/tests/mpsc.rs b/vendor/crossbeam-channel/tests/mpsc.rs
index 3db4812c6..d7cc8e25f 100644
--- a/vendor/crossbeam-channel/tests/mpsc.rs
+++ b/vendor/crossbeam-channel/tests/mpsc.rs
@@ -339,25 +339,22 @@ mod channel_tests {
#[test]
fn stress_shared() {
- #[cfg(miri)]
- const AMT: u32 = 100;
- #[cfg(not(miri))]
- const AMT: u32 = 10000;
- const NTHREADS: u32 = 8;
+ let amt: u32 = if cfg!(miri) { 100 } else { 10_000 };
+ let nthreads: u32 = if cfg!(miri) { 4 } else { 8 };
let (tx, rx) = channel::<i32>();
let t = thread::spawn(move || {
- for _ in 0..AMT * NTHREADS {
+ for _ in 0..amt * nthreads {
assert_eq!(rx.recv().unwrap(), 1);
}
assert!(rx.try_recv().is_err());
});
- let mut ts = Vec::with_capacity(NTHREADS as usize);
- for _ in 0..NTHREADS {
+ let mut ts = Vec::with_capacity(nthreads as usize);
+ for _ in 0..nthreads {
let tx = tx.clone();
let t = thread::spawn(move || {
- for _ in 0..AMT {
+ for _ in 0..amt {
tx.send(1).unwrap();
}
});
diff --git a/vendor/crossbeam-channel/tests/select.rs b/vendor/crossbeam-channel/tests/select.rs
index e7691f52e..bc5824dab 100644
--- a/vendor/crossbeam-channel/tests/select.rs
+++ b/vendor/crossbeam-channel/tests/select.rs
@@ -408,7 +408,6 @@ fn both_ready() {
.unwrap();
}
-#[cfg_attr(miri, ignore)] // Miri is too slow
#[test]
fn loop_try() {
const RUNS: usize = 20;
diff --git a/vendor/crossbeam-channel/tests/select_macro.rs b/vendor/crossbeam-channel/tests/select_macro.rs
index 91c04e1c3..119454cd6 100644
--- a/vendor/crossbeam-channel/tests/select_macro.rs
+++ b/vendor/crossbeam-channel/tests/select_macro.rs
@@ -284,7 +284,6 @@ fn both_ready() {
.unwrap();
}
-#[cfg_attr(miri, ignore)] // Miri is too slow
#[test]
fn loop_try() {
const RUNS: usize = 20;
diff --git a/vendor/crossbeam-channel/tests/thread_locals.rs b/vendor/crossbeam-channel/tests/thread_locals.rs
index effb6a143..fb4e577f2 100644
--- a/vendor/crossbeam-channel/tests/thread_locals.rs
+++ b/vendor/crossbeam-channel/tests/thread_locals.rs
@@ -1,6 +1,6 @@
//! Tests that make sure accessing thread-locals while exiting the thread doesn't cause panics.
-#![cfg(not(miri))] // error: abnormal termination: the evaluated program aborted execution
+#![cfg(not(miri))] // Miri detects that this test is buggy: the destructor of `FOO` uses `std::thread::current()`!
use std::thread;
use std::time::Duration;
diff --git a/vendor/crossbeam-channel/tests/zero.rs b/vendor/crossbeam-channel/tests/zero.rs
index c90d74187..74c9a3e10 100644
--- a/vendor/crossbeam-channel/tests/zero.rs
+++ b/vendor/crossbeam-channel/tests/zero.rs
@@ -328,9 +328,11 @@ fn stress_oneshot() {
}
}
-#[cfg_attr(miri, ignore)] // Miri is too slow
#[test]
fn stress_iter() {
+ #[cfg(miri)]
+ const COUNT: usize = 50;
+ #[cfg(not(miri))]
const COUNT: usize = 1000;
let (request_s, request_r) = bounded(0);
@@ -403,7 +405,7 @@ fn drops() {
#[cfg(not(miri))]
const RUNS: usize = 100;
#[cfg(miri)]
- const STEPS: usize = 500;
+ const STEPS: usize = 100;
#[cfg(not(miri))]
const STEPS: usize = 10_000;
@@ -485,7 +487,7 @@ fn fairness() {
#[test]
fn fairness_duplicates() {
#[cfg(miri)]
- const COUNT: usize = 50;
+ const COUNT: usize = 100;
#[cfg(not(miri))]
const COUNT: usize = 10_000;
diff --git a/vendor/crossbeam-deque/.cargo-checksum.json b/vendor/crossbeam-deque/.cargo-checksum.json
index c4f2a9329..45404d824 100644
--- a/vendor/crossbeam-deque/.cargo-checksum.json
+++ b/vendor/crossbeam-deque/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"7d5f333652da0da5f068ff91ecf259599f9ff4a4448bd987dd451699b66f0f59","Cargo.toml":"a9a138b4e005ddea76f588ca7004629ebd8f1a64cd1d55474fe36cae4c57a890","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"6b0a911f542186ef96eb56537cade0ecf1a5731d5d494b7094ff87f0fdeb7710","src/deque.rs":"64a2153dc566847fd9fa0e6b2b7adb3933af9984fbe3429b6f1200b058bb9850","src/lib.rs":"9f0581481691bc698176f369410726adf597d470b9d14e226a65f490d6aff8c6","tests/fifo.rs":"1d83f9ffeeba2cd6bd32f1ab136d843b8c73075d5045619be12dc3c27d8ab3ba","tests/injector.rs":"6812c97615e3f685b5612c390861f2e570ff469f3b9871ba97ddbed5c1f5266b","tests/lifo.rs":"b2ddc8154492322e734b23f35ce54040f9ec84ef878009de3a64d44d35c365a6","tests/steal.rs":"cdf588cc13eeb275ef1231eb18e3245faca7a2d054fa6527bfdba2a34bc8f7bf"},"package":"6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"ad5f2c10299e57aaed2d1b8f8a109faa2dfb16c52ce81f60ec5adb0ea9308d7f","Cargo.toml":"4802e7c0d5ab1dc35c162671483a6ee9bff5a3f1d6dd620a01863ac25068019e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"3c62aa0ee37cf714b5b3c304545d5caea4cc0a71020fccb1f146611d64202bb2","src/deque.rs":"cfb3c5b3bcea1f27ca2633d8b8576ff2080e1e9fc083236f2db7916bb77786ed","src/lib.rs":"ec0257a388627d691d652fd04d261c5c0590e1e31a35c8bf5912afac51fd5734","tests/fifo.rs":"3d98e0d4ca7cfddf10708b71642cf1ff05543d067ad837e48401d63cc31c0a18","tests/injector.rs":"fb054ef9fcac5f12e08b7b3451f370b96ab7589d32ef5c02e25958a473c45519","tests/lifo.rs":"57abdb3fc5920a422f785ba308b658bdc5400947532eeffb799f2395a2061549","tests/steal.rs":"cdf588cc13eeb275ef1231eb18e3245faca7a2d054fa6527bfdba2a34bc8f7bf"},"package":"715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc"} \ No newline at end of file
diff --git a/vendor/crossbeam-deque/CHANGELOG.md b/vendor/crossbeam-deque/CHANGELOG.md
index 14dcc20b7..855b714f4 100644
--- a/vendor/crossbeam-deque/CHANGELOG.md
+++ b/vendor/crossbeam-deque/CHANGELOG.md
@@ -1,3 +1,7 @@
+# Version 0.8.2
+
+- Bump the minimum supported Rust version to 1.38. (#877)
+
# Version 0.8.1
- Fix deque steal race condition. (#726)
@@ -5,26 +9,40 @@
# Version 0.8.0
+**Note:** This release has been yanked. See [GHSA-pqqp-xmhj-wgcw](https://github.com/crossbeam-rs/crossbeam/security/advisories/GHSA-pqqp-xmhj-wgcw) for details.
+
- Bump the minimum supported Rust version to 1.36.
- Add `Worker::len()` and `Injector::len()` methods.
- Add `std` (enabled by default) feature for forward compatibility.
+# Version 0.7.4
+
+- Fix deque steal race condition.
+
# Version 0.7.3
+**Note:** This release has been yanked. See [GHSA-pqqp-xmhj-wgcw](https://github.com/crossbeam-rs/crossbeam/security/advisories/GHSA-pqqp-xmhj-wgcw) for details.
+
- Stop stealing from the same deque. (#448)
- Fix unsoundness issues by adopting `MaybeUninit`. (#458)
# Version 0.7.2
+**Note:** This release has been yanked. See [GHSA-pqqp-xmhj-wgcw](https://github.com/crossbeam-rs/crossbeam/security/advisories/GHSA-pqqp-xmhj-wgcw) for details.
+
- Bump `crossbeam-epoch` to `0.8`.
- Bump `crossbeam-utils` to `0.7`.
# Version 0.7.1
+**Note:** This release has been yanked. See [GHSA-pqqp-xmhj-wgcw](https://github.com/crossbeam-rs/crossbeam/security/advisories/GHSA-pqqp-xmhj-wgcw) for details.
+
- Bump the minimum required version of `crossbeam-utils`.
# Version 0.7.0
+**Note:** This release has been yanked. See [GHSA-pqqp-xmhj-wgcw](https://github.com/crossbeam-rs/crossbeam/security/advisories/GHSA-pqqp-xmhj-wgcw) for details.
+
- Make `Worker::pop()` faster in the FIFO case.
- Replace `fifo()` nad `lifo()` with `Worker::new_fifo()` and `Worker::new_lifo()`.
- Add more batched steal methods.
diff --git a/vendor/crossbeam-deque/Cargo.toml b/vendor/crossbeam-deque/Cargo.toml
index 3ea5a59f6..4ff10b353 100644
--- a/vendor/crossbeam-deque/Cargo.toml
+++ b/vendor/crossbeam-deque/Cargo.toml
@@ -11,16 +11,26 @@
[package]
edition = "2018"
+rust-version = "1.38"
name = "crossbeam-deque"
-version = "0.8.1"
-authors = ["The Crossbeam Project Developers"]
+version = "0.8.2"
description = "Concurrent work-stealing deque"
homepage = "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-deque"
-documentation = "https://docs.rs/crossbeam-deque"
-keywords = ["chase-lev", "lock-free", "scheduler", "scheduling"]
-categories = ["algorithms", "concurrency", "data-structures"]
+readme = "README.md"
+keywords = [
+ "chase-lev",
+ "lock-free",
+ "scheduler",
+ "scheduling",
+]
+categories = [
+ "algorithms",
+ "concurrency",
+ "data-structures",
+]
license = "MIT OR Apache-2.0"
repository = "https://github.com/crossbeam-rs/crossbeam"
+
[dependencies.cfg-if]
version = "1"
@@ -33,9 +43,13 @@ default-features = false
version = "0.8"
optional = true
default-features = false
+
[dev-dependencies.rand]
version = "0.8"
[features]
default = ["std"]
-std = ["crossbeam-epoch/std", "crossbeam-utils/std"]
+std = [
+ "crossbeam-epoch/std",
+ "crossbeam-utils/std",
+]
diff --git a/vendor/crossbeam-deque/README.md b/vendor/crossbeam-deque/README.md
index 8ad1a7278..23c8794c2 100644
--- a/vendor/crossbeam-deque/README.md
+++ b/vendor/crossbeam-deque/README.md
@@ -8,7 +8,7 @@ https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-deque#license)
https://crates.io/crates/crossbeam-deque)
[![Documentation](https://docs.rs/crossbeam-deque/badge.svg)](
https://docs.rs/crossbeam-deque)
-[![Rust 1.36+](https://img.shields.io/badge/rust-1.36+-lightgray.svg)](
+[![Rust 1.38+](https://img.shields.io/badge/rust-1.38+-lightgray.svg)](
https://www.rust-lang.org)
[![chat](https://img.shields.io/discord/569610676205781012.svg?logo=discord)](https://discord.com/invite/JXYwgWZ)
@@ -28,7 +28,7 @@ crossbeam-deque = "0.8"
Crossbeam Deque supports stable Rust releases going back at least six months,
and every time the minimum supported Rust version is increased, a new minor
-version is released. Currently, the minimum supported Rust version is 1.36.
+version is released. Currently, the minimum supported Rust version is 1.38.
## License
diff --git a/vendor/crossbeam-deque/src/deque.rs b/vendor/crossbeam-deque/src/deque.rs
index 802a2fef5..bda3bf820 100644
--- a/vendor/crossbeam-deque/src/deque.rs
+++ b/vendor/crossbeam-deque/src/deque.rs
@@ -3,7 +3,7 @@ use std::cmp;
use std::fmt;
use std::iter::FromIterator;
use std::marker::PhantomData;
-use std::mem::{self, MaybeUninit};
+use std::mem::{self, ManuallyDrop, MaybeUninit};
use std::ptr;
use std::sync::atomic::{self, AtomicIsize, AtomicPtr, AtomicUsize, Ordering};
use std::sync::Arc;
@@ -38,9 +38,8 @@ impl<T> Buffer<T> {
fn alloc(cap: usize) -> Buffer<T> {
debug_assert_eq!(cap, cap.next_power_of_two());
- let mut v = Vec::with_capacity(cap);
+ let mut v = ManuallyDrop::new(Vec::with_capacity(cap));
let ptr = v.as_mut_ptr();
- mem::forget(v);
Buffer { ptr, cap }
}
@@ -53,6 +52,8 @@ impl<T> Buffer<T> {
/// Returns a pointer to the task at the specified `index`.
unsafe fn at(&self, index: isize) -> *mut T {
// `self.cap` is always a power of two.
+ // We do all the loads at `MaybeUninit` because we might realize, after loading, that we
+ // don't actually have the right to access this memory.
self.ptr.offset(index & (self.cap - 1) as isize)
}
@@ -62,8 +63,8 @@ impl<T> Buffer<T> {
/// technically speaking a data race and therefore UB. We should use an atomic store here, but
/// that would be more expensive and difficult to implement generically for all types `T`.
/// Hence, as a hack, we use a volatile write instead.
- unsafe fn write(&self, index: isize, task: T) {
- ptr::write_volatile(self.at(index), task)
+ unsafe fn write(&self, index: isize, task: MaybeUninit<T>) {
+ ptr::write_volatile(self.at(index).cast::<MaybeUninit<T>>(), task)
}
/// Reads a task from the specified `index`.
@@ -71,9 +72,9 @@ impl<T> Buffer<T> {
/// This method might be concurrently called with another `write` at the same index, which is
/// technically speaking a data race and therefore UB. We should use an atomic load here, but
/// that would be more expensive and difficult to implement generically for all types `T`.
- /// Hence, as a hack, we use a volatile write instead.
- unsafe fn read(&self, index: isize) -> T {
- ptr::read_volatile(self.at(index))
+ /// Hence, as a hack, we use a volatile load instead.
+ unsafe fn read(&self, index: isize) -> MaybeUninit<T> {
+ ptr::read_volatile(self.at(index).cast::<MaybeUninit<T>>())
}
}
@@ -115,8 +116,8 @@ struct Inner<T> {
impl<T> Drop for Inner<T> {
fn drop(&mut self) {
// Load the back index, front index, and buffer.
- let b = self.back.load(Ordering::Relaxed);
- let f = self.front.load(Ordering::Relaxed);
+ let b = *self.back.get_mut();
+ let f = *self.front.get_mut();
unsafe {
let buffer = self.buffer.load(Ordering::Relaxed, epoch::unprotected());
@@ -406,7 +407,7 @@ impl<T> Worker<T> {
// Write `task` into the slot.
unsafe {
- buffer.write(b, task);
+ buffer.write(b, MaybeUninit::new(task));
}
atomic::fence(Ordering::Release);
@@ -461,7 +462,7 @@ impl<T> Worker<T> {
unsafe {
// Read the popped task.
let buffer = self.buffer.get();
- let task = buffer.read(f);
+ let task = buffer.read(f).assume_init();
// Shrink the buffer if `len - 1` is less than one fourth of the capacity.
if buffer.cap > MIN_CAP && len <= buffer.cap as isize / 4 {
@@ -509,8 +510,8 @@ impl<T> Worker<T> {
)
.is_err()
{
- // Failed. We didn't pop anything.
- mem::forget(task.take());
+ // Failed. We didn't pop anything. Reset to `None`.
+ task.take();
}
// Restore the back index to the original task.
@@ -524,7 +525,7 @@ impl<T> Worker<T> {
}
}
- task
+ task.map(|t| unsafe { t.assume_init() })
}
}
}
@@ -661,12 +662,11 @@ impl<T> Stealer<T> {
.is_err()
{
// We didn't steal this task, forget it.
- mem::forget(task);
return Steal::Retry;
}
// Return the stolen task.
- Steal::Success(task)
+ Steal::Success(unsafe { task.assume_init() })
}
/// Steals a batch of tasks and pushes them into another worker.
@@ -821,7 +821,6 @@ impl<T> Stealer<T> {
.is_err()
{
// We didn't steal this task, forget it and break from the loop.
- mem::forget(task);
batch_size = i;
break;
}
@@ -975,7 +974,6 @@ impl<T> Stealer<T> {
.is_err()
{
// We didn't steal this task, forget it.
- mem::forget(task);
return Steal::Retry;
}
@@ -992,7 +990,6 @@ impl<T> Stealer<T> {
.is_err()
{
// We didn't steal this task, forget it.
- mem::forget(task);
return Steal::Retry;
}
@@ -1037,7 +1034,6 @@ impl<T> Stealer<T> {
.is_err()
{
// We didn't steal this task, forget it and break from the loop.
- mem::forget(tmp);
batch_size = i;
break;
}
@@ -1077,7 +1073,7 @@ impl<T> Stealer<T> {
dest.inner.back.store(dest_b, Ordering::Release);
// Return with success.
- Steal::Success(task)
+ Steal::Success(unsafe { task.assume_init() })
}
}
@@ -1123,6 +1119,11 @@ struct Slot<T> {
}
impl<T> Slot<T> {
+ const UNINIT: Self = Self {
+ task: UnsafeCell::new(MaybeUninit::uninit()),
+ state: AtomicUsize::new(0),
+ };
+
/// Waits until a task is written into the slot.
fn wait_write(&self) {
let backoff = Backoff::new();
@@ -1146,13 +1147,10 @@ struct Block<T> {
impl<T> Block<T> {
/// Creates an empty block that starts at `start_index`.
fn new() -> Block<T> {
- // SAFETY: This is safe because:
- // [1] `Block::next` (AtomicPtr) may be safely zero initialized.
- // [2] `Block::slots` (Array) may be safely zero initialized because of [3, 4].
- // [3] `Slot::task` (UnsafeCell) may be safely zero initialized because it
- // holds a MaybeUninit.
- // [4] `Slot::state` (AtomicUsize) may be safely zero initialized.
- unsafe { MaybeUninit::zeroed().assume_init() }
+ Self {
+ next: AtomicPtr::new(ptr::null_mut()),
+ slots: [Slot::UNINIT; BLOCK_CAP],
+ }
}
/// Waits until the next pointer is set.
@@ -1535,7 +1533,7 @@ impl<T> Injector<T> {
// Read the task.
let slot = (*block).slots.get_unchecked(offset + i);
slot.wait_write();
- let task = slot.task.get().read().assume_init();
+ let task = slot.task.get().read();
// Write it into the destination queue.
dest_buffer.write(dest_b.wrapping_add(i as isize), task);
@@ -1547,7 +1545,7 @@ impl<T> Injector<T> {
// Read the task.
let slot = (*block).slots.get_unchecked(offset + i);
slot.wait_write();
- let task = slot.task.get().read().assume_init();
+ let task = slot.task.get().read();
// Write it into the destination queue.
dest_buffer.write(dest_b.wrapping_add((batch_size - 1 - i) as isize), task);
@@ -1689,7 +1687,7 @@ impl<T> Injector<T> {
// Read the task.
let slot = (*block).slots.get_unchecked(offset);
slot.wait_write();
- let task = slot.task.get().read().assume_init();
+ let task = slot.task.get().read();
match dest.flavor {
Flavor::Fifo => {
@@ -1698,7 +1696,7 @@ impl<T> Injector<T> {
// Read the task.
let slot = (*block).slots.get_unchecked(offset + i + 1);
slot.wait_write();
- let task = slot.task.get().read().assume_init();
+ let task = slot.task.get().read();
// Write it into the destination queue.
dest_buffer.write(dest_b.wrapping_add(i as isize), task);
@@ -1711,7 +1709,7 @@ impl<T> Injector<T> {
// Read the task.
let slot = (*block).slots.get_unchecked(offset + i + 1);
slot.wait_write();
- let task = slot.task.get().read().assume_init();
+ let task = slot.task.get().read();
// Write it into the destination queue.
dest_buffer.write(dest_b.wrapping_add((batch_size - 1 - i) as isize), task);
@@ -1744,7 +1742,7 @@ impl<T> Injector<T> {
}
}
- Steal::Success(task)
+ Steal::Success(task.assume_init())
}
}
@@ -1820,9 +1818,9 @@ impl<T> Injector<T> {
impl<T> Drop for Injector<T> {
fn drop(&mut self) {
- let mut head = self.head.index.load(Ordering::Relaxed);
- let mut tail = self.tail.index.load(Ordering::Relaxed);
- let mut block = self.head.block.load(Ordering::Relaxed);
+ let mut head = *self.head.index.get_mut();
+ let mut tail = *self.tail.index.get_mut();
+ let mut block = *self.head.block.get_mut();
// Erase the lower bits.
head &= !((1 << SHIFT) - 1);
@@ -1840,7 +1838,7 @@ impl<T> Drop for Injector<T> {
p.as_mut_ptr().drop_in_place();
} else {
// Deallocate the block and move to the next one.
- let next = (*block).next.load(Ordering::Relaxed);
+ let next = *(*block).next.get_mut();
drop(Box::from_raw(block));
block = next;
}
diff --git a/vendor/crossbeam-deque/src/lib.rs b/vendor/crossbeam-deque/src/lib.rs
index 16bc728b3..b696b5f96 100644
--- a/vendor/crossbeam-deque/src/lib.rs
+++ b/vendor/crossbeam-deque/src/lib.rs
@@ -95,6 +95,7 @@
rust_2018_idioms,
unreachable_pub
)]
+#![allow(clippy::question_mark)] // https://github.com/rust-lang/rust-clippy/issues/8281
#![cfg_attr(not(feature = "std"), no_std)]
use cfg_if::cfg_if;
diff --git a/vendor/crossbeam-deque/tests/fifo.rs b/vendor/crossbeam-deque/tests/fifo.rs
index e2365fb91..f98737b58 100644
--- a/vendor/crossbeam-deque/tests/fifo.rs
+++ b/vendor/crossbeam-deque/tests/fifo.rs
@@ -71,6 +71,9 @@ fn is_empty() {
#[test]
fn spsc() {
+ #[cfg(miri)]
+ const STEPS: usize = 500;
+ #[cfg(not(miri))]
const STEPS: usize = 50_000;
let w = Worker::new_fifo();
@@ -100,6 +103,9 @@ fn spsc() {
#[test]
fn stampede() {
const THREADS: usize = 8;
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 50_000;
let w = Worker::new_fifo();
@@ -141,6 +147,9 @@ fn stampede() {
#[test]
fn stress() {
const THREADS: usize = 8;
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 50_000;
let w = Worker::new_fifo();
@@ -197,6 +206,7 @@ fn stress() {
.unwrap();
}
+#[cfg_attr(miri, ignore)] // Miri is too slow
#[test]
fn no_starvation() {
const THREADS: usize = 8;
@@ -258,8 +268,17 @@ fn no_starvation() {
#[test]
fn destructors() {
+ #[cfg(miri)]
+ const THREADS: usize = 2;
+ #[cfg(not(miri))]
const THREADS: usize = 8;
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 50_000;
+ #[cfg(miri)]
+ const STEPS: usize = 100;
+ #[cfg(not(miri))]
const STEPS: usize = 1000;
struct Elem(usize, Arc<Mutex<Vec<usize>>>);
@@ -330,7 +349,7 @@ fn destructors() {
{
let mut v = dropped.lock().unwrap();
assert_eq!(v.len(), rem);
- v.sort();
+ v.sort_unstable();
for pair in v.windows(2) {
assert_eq!(pair[0] + 1, pair[1]);
}
diff --git a/vendor/crossbeam-deque/tests/injector.rs b/vendor/crossbeam-deque/tests/injector.rs
index 3f74d1bfb..f706a8d9c 100644
--- a/vendor/crossbeam-deque/tests/injector.rs
+++ b/vendor/crossbeam-deque/tests/injector.rs
@@ -46,6 +46,9 @@ fn is_empty() {
#[test]
fn spsc() {
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 100_000;
let q = Injector::new();
@@ -58,6 +61,8 @@ fn spsc() {
assert_eq!(i, v);
break;
}
+ #[cfg(miri)]
+ std::hint::spin_loop();
}
}
@@ -73,6 +78,9 @@ fn spsc() {
#[test]
fn mpmc() {
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 25_000;
const THREADS: usize = 4;
@@ -96,6 +104,8 @@ fn mpmc() {
v[n].fetch_add(1, SeqCst);
break;
}
+ #[cfg(miri)]
+ std::hint::spin_loop();
}
}
});
@@ -111,6 +121,9 @@ fn mpmc() {
#[test]
fn stampede() {
const THREADS: usize = 8;
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 50_000;
let q = Injector::new();
@@ -152,6 +165,9 @@ fn stampede() {
#[test]
fn stress() {
const THREADS: usize = 8;
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 50_000;
let q = Injector::new();
@@ -208,6 +224,7 @@ fn stress() {
.unwrap();
}
+#[cfg_attr(miri, ignore)] // Miri is too slow
#[test]
fn no_starvation() {
const THREADS: usize = 8;
@@ -269,8 +286,17 @@ fn no_starvation() {
#[test]
fn destructors() {
+ #[cfg(miri)]
+ const THREADS: usize = 2;
+ #[cfg(not(miri))]
const THREADS: usize = 8;
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 50_000;
+ #[cfg(miri)]
+ const STEPS: usize = 100;
+ #[cfg(not(miri))]
const STEPS: usize = 1000;
struct Elem(usize, Arc<Mutex<Vec<usize>>>);
@@ -341,7 +367,7 @@ fn destructors() {
{
let mut v = dropped.lock().unwrap();
assert_eq!(v.len(), rem);
- v.sort();
+ v.sort_unstable();
for pair in v.windows(2) {
assert_eq!(pair[0] + 1, pair[1]);
}
diff --git a/vendor/crossbeam-deque/tests/lifo.rs b/vendor/crossbeam-deque/tests/lifo.rs
index 3e99e95c5..c1a65cd2e 100644
--- a/vendor/crossbeam-deque/tests/lifo.rs
+++ b/vendor/crossbeam-deque/tests/lifo.rs
@@ -71,6 +71,9 @@ fn is_empty() {
#[test]
fn spsc() {
+ #[cfg(miri)]
+ const STEPS: usize = 500;
+ #[cfg(not(miri))]
const STEPS: usize = 50_000;
let w = Worker::new_lifo();
@@ -84,6 +87,8 @@ fn spsc() {
assert_eq!(i, v);
break;
}
+ #[cfg(miri)]
+ std::hint::spin_loop();
}
}
@@ -100,6 +105,9 @@ fn spsc() {
#[test]
fn stampede() {
const THREADS: usize = 8;
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 50_000;
let w = Worker::new_lifo();
@@ -141,6 +149,9 @@ fn stampede() {
#[test]
fn stress() {
const THREADS: usize = 8;
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 50_000;
let w = Worker::new_lifo();
@@ -197,6 +208,7 @@ fn stress() {
.unwrap();
}
+#[cfg_attr(miri, ignore)] // Miri is too slow
#[test]
fn no_starvation() {
const THREADS: usize = 8;
@@ -258,8 +270,17 @@ fn no_starvation() {
#[test]
fn destructors() {
+ #[cfg(miri)]
+ const THREADS: usize = 2;
+ #[cfg(not(miri))]
const THREADS: usize = 8;
+ #[cfg(miri)]
+ const COUNT: usize = 500;
+ #[cfg(not(miri))]
const COUNT: usize = 50_000;
+ #[cfg(miri)]
+ const STEPS: usize = 100;
+ #[cfg(not(miri))]
const STEPS: usize = 1000;
struct Elem(usize, Arc<Mutex<Vec<usize>>>);
@@ -330,7 +351,7 @@ fn destructors() {
{
let mut v = dropped.lock().unwrap();
assert_eq!(v.len(), rem);
- v.sort();
+ v.sort_unstable();
for pair in v.windows(2) {
assert_eq!(pair[0] + 1, pair[1]);
}
diff --git a/vendor/crossbeam-epoch/.cargo-checksum.json b/vendor/crossbeam-epoch/.cargo-checksum.json
index beb3eb1dd..d069e3a4b 100644
--- a/vendor/crossbeam-epoch/.cargo-checksum.json
+++ b/vendor/crossbeam-epoch/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"709c5824af9170953e84db2552f4e8ae84d115314b59b768c62bdcd13c157e82","Cargo.lock":"cd480e52977de5a2e4182c1620fb5da9134fe82bfc6f696905ec0a1e1bd3d039","Cargo.toml":"1506e2615575ffc45c05dbcc248687740f04de5732b30bdb2d828ef4c4ae809b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"f946b25082979595d3851d90c4e76424be921a779e88e982f8455d44d46057ec","benches/defer.rs":"c330b704d96b2ad1aed29f72c37a99da534adef8cb06a3976d5f93bf567abb20","benches/flush.rs":"0389ac6c473632f0e93c962f223404cc360257f6699b4ec90b9b3be16bb6d74f","benches/pin.rs":"2f649a5153745c7930efdb32a52f9dc522f7b8cf548a251c5e2c82ee25dc3fff","build.rs":"aec5ae4d47d6ab1f281db6b7f7ec80ab3cc05bd0c20059643aee4446fcc0fcbf","examples/sanitize.rs":"a39d1635fa61e643e59192d7a63becc97ff81f03c1f4e03d38cedefb1525026a","no_atomic.rs":"916ed15218bb7b75a4e0d432430e7134efd27ca43ca8a8766e0c90e89febb602","src/atomic.rs":"6452c856fd808e99c8fc09fe7b563ce44342f9992b38c65613933c7c3fc5d84c","src/collector.rs":"e2d9780d8707e49360b3c33f2f829f29f70e6929307e65e23449b8ba6def6358","src/default.rs":"9c4d3951981d47efc748674d64b22eff27ecb2e3ef16369aa423592740ce6033","src/deferred.rs":"8ced786536d8d688381a8aa0b61e6e4d5e4fdd88e892cf82c0c5731e4801aa60","src/epoch.rs":"d31e66d8fe62299928e25867336d96391b26a4fe890a1cae0885dfcf36d6835b","src/guard.rs":"55c56ca1b2fbc067ae21108f0f7de4be91e5b41df2492055b635ed436782dd52","src/internal.rs":"67a6811b8c58e1152fd1dc17e389884025a0d99d79ab03dee26efcd0d6896690","src/lib.rs":"1c0765413dd66d4655e6417a69829ac5c2f4d504f66f77a87fe9c230c05e039d","src/sync/list.rs":"10aa4c59845ab9ff1d8bcb6f594b70bbe23c320fa7a2b125fdf85df88b9d61e2","src/sync/mod.rs":"cbc6334460d73761c3dea7f99ed2ccbf267d5da3bc76c812e94f85c9f4565c6a","src/sync/queue.rs":"06173b2255677d0d39178ceb49876fda2878f491e907c595eb65643dbb43c9ba","tests/loom.rs":"db772f4478966de6ec98774ca4093171dc942da635822a0d2d3257d31188cb9b"},"package":"07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"930bdf6d05b1fae72bb844f6c26e0a35cc83b810a987baaf5d279044d3b3f74d","Cargo.lock":"ce25f4d162a39d180e7369954bc512ab2ab1ab3b04f6f071cb2212bd43b3bbc3","Cargo.toml":"f2a34cbd48fff1346070f503da83c9149db91c7a098a0b486007fd6a39ba6a1b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"d67d0cf57751a019707dd95785345ee181a10ea80237789bc3c19bf28c0d45ca","benches/defer.rs":"c330b704d96b2ad1aed29f72c37a99da534adef8cb06a3976d5f93bf567abb20","benches/flush.rs":"0389ac6c473632f0e93c962f223404cc360257f6699b4ec90b9b3be16bb6d74f","benches/pin.rs":"2f649a5153745c7930efdb32a52f9dc522f7b8cf548a251c5e2c82ee25dc3fff","build.rs":"89e236e4e22dd748720129dcd02edfc08adccf708a7f0b03e41780e5bafb39cc","examples/sanitize.rs":"a39d1635fa61e643e59192d7a63becc97ff81f03c1f4e03d38cedefb1525026a","no_atomic.rs":"f58085b9d0666ccf62e0ae17fb5dae937c0a86fcc55dc0ae04ad8659e696a49c","src/atomic.rs":"1bd4275c1411852024533e8a70959dfedf72029e3253544d1fbb0cc18b6fd519","src/collector.rs":"29e5911f61510247659b0090517bd1a38d11e1ed86e35811603cb599962d9a58","src/default.rs":"62edf5e1f934eb82d8d7f010d6f25366e6851145a6f0a162372202bb63da1f3a","src/deferred.rs":"0c87df5797212778edd3c2d5fcf0cc04e8b9ed100261ecf9522f74a90804a3d5","src/epoch.rs":"d31e66d8fe62299928e25867336d96391b26a4fe890a1cae0885dfcf36d6835b","src/guard.rs":"f4439909152d38c03b6dfb6eeba6c9f07c39962187d461c92a492c27c258670b","src/internal.rs":"ac40ce276f0ed3dfd561926b78f775592eabb90790e177edde41fe50c13b8256","src/lib.rs":"a036d73230d0574011e67be11d275fe46439a1b5fc3295cb242d9179e5e0a220","src/sync/list.rs":"10aa4c59845ab9ff1d8bcb6f594b70bbe23c320fa7a2b125fdf85df88b9d61e2","src/sync/mod.rs":"326e32489d467e974c441120640a8338aa55da55c24b20276075ce9053997326","src/sync/once_lock.rs":"c03dc9c05a817e087dccf8b682f7307501542805533551da3c2bab442bc40743","src/sync/queue.rs":"06173b2255677d0d39178ceb49876fda2878f491e907c595eb65643dbb43c9ba","tests/loom.rs":"db772f4478966de6ec98774ca4093171dc942da635822a0d2d3257d31188cb9b"},"package":"f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348"} \ No newline at end of file
diff --git a/vendor/crossbeam-epoch/CHANGELOG.md b/vendor/crossbeam-epoch/CHANGELOG.md
index 2f70edba7..3aac87b7f 100644
--- a/vendor/crossbeam-epoch/CHANGELOG.md
+++ b/vendor/crossbeam-epoch/CHANGELOG.md
@@ -1,3 +1,14 @@
+# Version 0.9.11
+
+- Removes the dependency on the `once_cell` crate to restore the MSRV. (#913)
+- Work around [rust-lang#98302](https://github.com/rust-lang/rust/issues/98302), which causes compile error on windows-gnu when LTO is enabled. (#913)
+
+# Version 0.9.10
+
+- Bump the minimum supported Rust version to 1.38. (#877)
+- Mitigate the risk of segmentation faults in buggy downstream implementations. (#879)
+- Add `{Atomic, Shared}::try_into_owned` (#701)
+
# Version 0.9.9
- Replace lazy_static with once_cell. (#817)
diff --git a/vendor/crossbeam-epoch/Cargo.lock b/vendor/crossbeam-epoch/Cargo.lock
index edb0c7378..3ded5c77e 100644
--- a/vendor/crossbeam-epoch/Cargo.lock
+++ b/vendor/crossbeam-epoch/Cargo.lock
@@ -31,14 +31,13 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "crossbeam-epoch"
-version = "0.9.9"
+version = "0.9.11"
dependencies = [
"autocfg",
"cfg-if",
"crossbeam-utils",
"loom",
"memoffset",
- "once_cell",
"rand",
"rustversion",
"scopeguard",
@@ -46,26 +45,25 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
-version = "0.8.9"
+version = "0.8.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ff1f980957787286a554052d03c7aee98d99cc32e09f6d45f0a814133c87978"
+checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"
dependencies = [
"cfg-if",
"loom",
- "once_cell",
]
[[package]]
name = "generator"
-version = "0.7.0"
+version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c1d9279ca822891c1a4dae06d185612cf8fc6acfe5dff37781b41297811b12ee"
+checksum = "cc184cace1cea8335047a471cc1da80f18acf8a76f3bab2028d499e328948ec7"
dependencies = [
"cc",
"libc",
"log",
"rustversion",
- "winapi",
+ "windows",
]
[[package]]
@@ -87,9 +85,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.126"
+version = "0.2.133"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
+checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966"
[[package]]
name = "log"
@@ -133,9 +131,9 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.12.0"
+version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
+checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"
[[package]]
name = "pin-project-lite"
@@ -151,18 +149,18 @@ checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
[[package]]
name = "proc-macro2"
-version = "1.0.39"
+version = "1.0.46"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
+checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.18"
+version = "1.0.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
+checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
dependencies = [
"proc-macro2",
]
@@ -190,18 +188,18 @@ dependencies = [
[[package]]
name = "rand_core"
-version = "0.6.3"
+version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom",
]
[[package]]
name = "regex"
-version = "1.5.6"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
dependencies = [
"regex-syntax",
]
@@ -217,15 +215,15 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.6.26"
+version = "0.6.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
[[package]]
name = "rustversion"
-version = "1.0.6"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
+checksum = "97477e48b4cf8603ad5f7aaf897467cf42ab4218a38ef76fb14c2d6773a6d6a8"
[[package]]
name = "scoped-tls"
@@ -250,15 +248,15 @@ dependencies = [
[[package]]
name = "smallvec"
-version = "1.8.0"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
+checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"
[[package]]
name = "syn"
-version = "1.0.96"
+version = "1.0.101"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf"
+checksum = "e90cde112c4b9690b8cbe810cba9ddd8bc1d7472e2cae317b69e9438c1cba7d2"
dependencies = [
"proc-macro2",
"quote",
@@ -276,9 +274,9 @@ dependencies = [
[[package]]
name = "tracing"
-version = "0.1.35"
+version = "0.1.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160"
+checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307"
dependencies = [
"cfg-if",
"pin-project-lite",
@@ -288,9 +286,9 @@ dependencies = [
[[package]]
name = "tracing-attributes"
-version = "0.1.21"
+version = "0.1.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc6b8ad3567499f98a1db7a752b07a7c8c7c7c34c332ec00effb2b0027974b7c"
+checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2"
dependencies = [
"proc-macro2",
"quote",
@@ -299,9 +297,9 @@ dependencies = [
[[package]]
name = "tracing-core"
-version = "0.1.27"
+version = "0.1.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7709595b8878a4965ce5e87ebf880a7d39c9afc6837721b21a5a816a8117d921"
+checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7"
dependencies = [
"once_cell",
"valuable",
@@ -320,13 +318,13 @@ dependencies = [
[[package]]
name = "tracing-subscriber"
-version = "0.3.11"
+version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bc28f93baff38037f64e6f43d34cfa1605f27a49c34e8a04c5e78b0babf2596"
+checksum = "60db860322da191b40952ad9affe65ea23e7dd6a5c442c2c42865810c6ab8e6b"
dependencies = [
"ansi_term",
- "lazy_static",
"matchers",
+ "once_cell",
"regex",
"sharded-slab",
"smallvec",
@@ -338,9 +336,9 @@ dependencies = [
[[package]]
name = "unicode-ident"
-version = "1.0.1"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
+checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd"
[[package]]
name = "valuable"
@@ -375,3 +373,46 @@ name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "fbedf6db9096bc2364adce0ae0aa636dcd89f3c3f2cd67947062aaf0ca2a10ec"
+dependencies = [
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.32.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316"
diff --git a/vendor/crossbeam-epoch/Cargo.toml b/vendor/crossbeam-epoch/Cargo.toml
index 9d68295e6..0f8e23864 100644
--- a/vendor/crossbeam-epoch/Cargo.toml
+++ b/vendor/crossbeam-epoch/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2018"
-rust-version = "1.36"
+rust-version = "1.38"
name = "crossbeam-epoch"
-version = "0.9.9"
+version = "0.9.11"
description = "Epoch-based garbage collection"
homepage = "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-epoch"
readme = "README.md"
@@ -41,10 +41,6 @@ default-features = false
[dependencies.memoffset]
version = "0.6"
-[dependencies.once_cell]
-version = "1"
-optional = true
-
[dependencies.scopeguard]
version = "1.1"
default-features = false
@@ -69,7 +65,6 @@ nightly = ["crossbeam-utils/nightly"]
std = [
"alloc",
"crossbeam-utils/std",
- "once_cell",
]
[target."cfg(crossbeam_loom)".dependencies.loom-crate]
diff --git a/vendor/crossbeam-epoch/README.md b/vendor/crossbeam-epoch/README.md
index eb33badff..2840ea792 100644
--- a/vendor/crossbeam-epoch/README.md
+++ b/vendor/crossbeam-epoch/README.md
@@ -8,7 +8,7 @@ https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-epoch#license)
https://crates.io/crates/crossbeam-epoch)
[![Documentation](https://docs.rs/crossbeam-epoch/badge.svg)](
https://docs.rs/crossbeam-epoch)
-[![Rust 1.36+](https://img.shields.io/badge/rust-1.36+-lightgray.svg)](
+[![Rust 1.38+](https://img.shields.io/badge/rust-1.38+-lightgray.svg)](
https://www.rust-lang.org)
[![chat](https://img.shields.io/discord/569610676205781012.svg?logo=discord)](https://discord.com/invite/JXYwgWZ)
@@ -35,7 +35,7 @@ crossbeam-epoch = "0.9"
Crossbeam Epoch supports stable Rust releases going back at least six months,
and every time the minimum supported Rust version is increased, a new minor
-version is released. Currently, the minimum supported Rust version is 1.36.
+version is released. Currently, the minimum supported Rust version is 1.38.
## License
diff --git a/vendor/crossbeam-epoch/build.rs b/vendor/crossbeam-epoch/build.rs
index bba54d999..b3bd15a5a 100644
--- a/vendor/crossbeam-epoch/build.rs
+++ b/vendor/crossbeam-epoch/build.rs
@@ -41,17 +41,15 @@ fn main() {
}
};
- // Note that this is `no_*`, not `has_*`. This allows treating
- // `cfg(target_has_atomic = "ptr")` as true when the build script doesn't
- // run. This is needed for compatibility with non-cargo build systems that
- // don't run the build script.
+ // Note that this is `no_`*, not `has_*`. This allows treating as the latest
+ // stable rustc is used when the build script doesn't run. This is useful
+ // for non-cargo build systems that don't run the build script.
if NO_ATOMIC_CAS.contains(&&*target) {
println!("cargo:rustc-cfg=crossbeam_no_atomic_cas");
}
- if cfg.probe_rustc_version(1, 61) {
- // TODO: invert cfg once Rust 1.61 became stable.
- println!("cargo:rustc-cfg=crossbeam_const_fn_trait_bound");
+ if !cfg.probe_rustc_version(1, 61) {
+ println!("cargo:rustc-cfg=crossbeam_no_const_fn_trait_bound");
}
println!("cargo:rerun-if-changed=no_atomic.rs");
diff --git a/vendor/crossbeam-epoch/no_atomic.rs b/vendor/crossbeam-epoch/no_atomic.rs
index f740aaee1..675d9a27e 100644
--- a/vendor/crossbeam-epoch/no_atomic.rs
+++ b/vendor/crossbeam-epoch/no_atomic.rs
@@ -2,6 +2,8 @@
// It is not intended for manual editing.
const NO_ATOMIC_CAS: &[&str] = &[
+ "armv4t-none-eabi",
+ "armv5te-none-eabi",
"avr-unknown-gnu-atmega328",
"bpfeb-unknown-none",
"bpfel-unknown-none",
@@ -10,6 +12,7 @@ const NO_ATOMIC_CAS: &[&str] = &[
"riscv32im-unknown-none-elf",
"riscv32imc-unknown-none-elf",
"thumbv4t-none-eabi",
+ "thumbv5te-none-eabi",
"thumbv6m-none-eabi",
];
@@ -18,7 +21,9 @@ const NO_ATOMIC_64: &[&str] = &[
"arm-linux-androideabi",
"armebv7r-none-eabi",
"armebv7r-none-eabihf",
+ "armv4t-none-eabi",
"armv4t-unknown-linux-gnueabi",
+ "armv5te-none-eabi",
"armv5te-unknown-linux-gnueabi",
"armv5te-unknown-linux-musleabi",
"armv5te-unknown-linux-uclibceabi",
@@ -55,6 +60,7 @@ const NO_ATOMIC_64: &[&str] = &[
"riscv32imac-unknown-xous-elf",
"riscv32imc-unknown-none-elf",
"thumbv4t-none-eabi",
+ "thumbv5te-none-eabi",
"thumbv6m-none-eabi",
"thumbv7em-none-eabi",
"thumbv7em-none-eabihf",
diff --git a/vendor/crossbeam-epoch/src/atomic.rs b/vendor/crossbeam-epoch/src/atomic.rs
index b0b6a68e7..19bab4729 100644
--- a/vendor/crossbeam-epoch/src/atomic.rs
+++ b/vendor/crossbeam-epoch/src/atomic.rs
@@ -252,7 +252,7 @@ impl<T> Pointable for [MaybeUninit<T>] {
let size = mem::size_of::<Array<T>>() + mem::size_of::<MaybeUninit<T>>() * len;
let align = mem::align_of::<Array<T>>();
let layout = alloc::Layout::from_size_align(size, align).unwrap();
- let ptr = alloc::alloc(layout) as *mut Array<T>;
+ let ptr = alloc::alloc(layout).cast::<Array<T>>();
if ptr.is_null() {
alloc::handle_alloc_error(layout);
}
@@ -305,6 +305,7 @@ impl<T> Atomic<T> {
/// use crossbeam_epoch::Atomic;
///
/// let a = Atomic::new(1234);
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn new(init: T) -> Atomic<T> {
Self::init(init)
@@ -320,6 +321,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
/// use crossbeam_epoch::Atomic;
///
/// let a = Atomic::<i32>::init(1234);
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn init(init: T::Init) -> Atomic<T> {
Self::from(Owned::init(init))
@@ -342,7 +344,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
///
/// let a = Atomic::<i32>::null();
/// ```
- #[cfg(all(crossbeam_const_fn_trait_bound, not(crossbeam_loom)))]
+ #[cfg(all(not(crossbeam_no_const_fn_trait_bound), not(crossbeam_loom)))]
pub const fn null() -> Atomic<T> {
Self {
data: AtomicUsize::new(0),
@@ -351,7 +353,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
}
/// Returns a new null atomic pointer.
- #[cfg(not(all(crossbeam_const_fn_trait_bound, not(crossbeam_loom))))]
+ #[cfg(not(all(not(crossbeam_no_const_fn_trait_bound), not(crossbeam_loom))))]
pub fn null() -> Atomic<T> {
Self {
data: AtomicUsize::new(0),
@@ -373,6 +375,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
/// let a = Atomic::new(1234);
/// let guard = &epoch::pin();
/// let p = a.load(SeqCst, guard);
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn load<'g>(&self, ord: Ordering, _: &'g Guard) -> Shared<'g, T> {
unsafe { Shared::from_usize(self.data.load(ord)) }
@@ -398,6 +401,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
/// let a = Atomic::new(1234);
/// let guard = &epoch::pin();
/// let p = a.load_consume(guard);
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn load_consume<'g>(&self, _: &'g Guard) -> Shared<'g, T> {
unsafe { Shared::from_usize(self.data.load_consume()) }
@@ -415,8 +419,10 @@ impl<T: ?Sized + Pointable> Atomic<T> {
/// use std::sync::atomic::Ordering::SeqCst;
///
/// let a = Atomic::new(1234);
+ /// # unsafe { drop(a.load(SeqCst, &crossbeam_epoch::pin()).into_owned()); } // avoid leak
/// a.store(Shared::null(), SeqCst);
/// a.store(Owned::new(1234), SeqCst);
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn store<P: Pointer<T>>(&self, new: P, ord: Ordering) {
self.data.store(new.into_usize(), ord);
@@ -437,6 +443,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
/// let a = Atomic::new(1234);
/// let guard = &epoch::pin();
/// let p = a.swap(Shared::null(), SeqCst, guard);
+ /// # unsafe { drop(p.into_owned()); } // avoid leak
/// ```
pub fn swap<'g, P: Pointer<T>>(&self, new: P, ord: Ordering, _: &'g Guard) -> Shared<'g, T> {
unsafe { Shared::from_usize(self.data.swap(new.into_usize(), ord)) }
@@ -471,6 +478,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
/// let curr = a.load(SeqCst, guard);
/// let res1 = a.compare_exchange(curr, Shared::null(), SeqCst, SeqCst, guard);
/// let res2 = a.compare_exchange(curr, Owned::new(5678), SeqCst, SeqCst, guard);
+ /// # unsafe { drop(curr.into_owned()); } // avoid leak
/// ```
pub fn compare_exchange<'g, P>(
&self,
@@ -526,6 +534,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
///
/// let mut new = Owned::new(5678);
/// let mut ptr = a.load(SeqCst, guard);
+ /// # unsafe { drop(a.load(SeqCst, guard).into_owned()); } // avoid leak
/// loop {
/// match a.compare_exchange_weak(ptr, new, SeqCst, SeqCst, guard) {
/// Ok(p) => {
@@ -546,6 +555,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
/// Err(err) => curr = err.current,
/// }
/// }
+ /// # unsafe { drop(curr.into_owned()); } // avoid leak
/// ```
pub fn compare_exchange_weak<'g, P>(
&self,
@@ -608,6 +618,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
///
/// let res2 = a.fetch_update(SeqCst, SeqCst, guard, |x| None);
/// assert!(res2.is_err());
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn fetch_update<'g, F>(
&self,
@@ -666,6 +677,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
/// let curr = a.load(SeqCst, guard);
/// let res1 = a.compare_and_set(curr, Shared::null(), SeqCst, guard);
/// let res2 = a.compare_and_set(curr, Owned::new(5678), SeqCst, guard);
+ /// # unsafe { drop(curr.into_owned()); } // avoid leak
/// ```
// TODO: remove in the next major version.
#[allow(deprecated)]
@@ -723,6 +735,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
///
/// let mut new = Owned::new(5678);
/// let mut ptr = a.load(SeqCst, guard);
+ /// # unsafe { drop(a.load(SeqCst, guard).into_owned()); } // avoid leak
/// loop {
/// match a.compare_and_set_weak(ptr, new, SeqCst, guard) {
/// Ok(p) => {
@@ -743,6 +756,7 @@ impl<T: ?Sized + Pointable> Atomic<T> {
/// Err(err) => curr = err.current,
/// }
/// }
+ /// # unsafe { drop(curr.into_owned()); } // avoid leak
/// ```
// TODO: remove in the next major version.
#[allow(deprecated)]
@@ -877,6 +891,52 @@ impl<T: ?Sized + Pointable> Atomic<T> {
Owned::from_usize(self.data.into_inner())
}
}
+
+ /// Takes ownership of the pointee if it is non-null.
+ ///
+ /// This consumes the atomic and converts it into [`Owned`]. As [`Atomic`] doesn't have a
+ /// destructor and doesn't drop the pointee while [`Owned`] does, this is suitable for
+ /// destructors of data structures.
+ ///
+ /// # Safety
+ ///
+ /// This method may be called only if the pointer is valid and nobody else is holding a
+ /// reference to the same object, or the pointer is null.
+ ///
+ /// # Examples
+ ///
+ /// ```rust
+ /// # use std::mem;
+ /// # use crossbeam_epoch::Atomic;
+ /// struct DataStructure {
+ /// ptr: Atomic<usize>,
+ /// }
+ ///
+ /// impl Drop for DataStructure {
+ /// fn drop(&mut self) {
+ /// // By now the DataStructure lives only in our thread and we are sure we don't hold
+ /// // any Shared or & to it ourselves, but it may be null, so we have to be careful.
+ /// let old = mem::replace(&mut self.ptr, Atomic::null());
+ /// unsafe {
+ /// if let Some(x) = old.try_into_owned() {
+ /// drop(x)
+ /// }
+ /// }
+ /// }
+ /// }
+ /// ```
+ pub unsafe fn try_into_owned(self) -> Option<Owned<T>> {
+ // FIXME: See self.into_owned()
+ #[cfg(crossbeam_loom)]
+ let data = self.data.unsync_load();
+ #[cfg(not(crossbeam_loom))]
+ let data = self.data.into_inner();
+ if decompose_tag::<T>(data).0 == 0 {
+ None
+ } else {
+ Some(Owned::from_usize(data))
+ }
+ }
}
impl<T: ?Sized + Pointable> fmt::Debug for Atomic<T> {
@@ -925,6 +985,7 @@ impl<T: ?Sized + Pointable> From<Owned<T>> for Atomic<T> {
/// use crossbeam_epoch::{Atomic, Owned};
///
/// let a = Atomic::<i32>::from(Owned::new(1234));
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
fn from(owned: Owned<T>) -> Self {
let data = owned.data;
@@ -1108,6 +1169,7 @@ impl<T: ?Sized + Pointable> Owned<T> {
/// let o = Owned::new(1234);
/// let guard = &epoch::pin();
/// let p = o.into_shared(guard);
+ /// # unsafe { drop(p.into_owned()); } // avoid leak
/// ```
#[allow(clippy::needless_lifetimes)]
pub fn into_shared<'g>(self, _: &'g Guard) -> Shared<'g, T> {
@@ -1291,6 +1353,7 @@ impl<'g, T> Shared<'g, T> {
/// let guard = &epoch::pin();
/// let p = a.load(SeqCst, guard);
/// assert_eq!(p.as_raw(), raw);
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn as_raw(&self) -> *const T {
let (raw, _) = decompose_tag::<T>(self.data);
@@ -1329,6 +1392,7 @@ impl<'g, T: ?Sized + Pointable> Shared<'g, T> {
/// assert!(a.load(SeqCst, guard).is_null());
/// a.store(Owned::new(1234), SeqCst);
/// assert!(!a.load(SeqCst, guard).is_null());
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn is_null(&self) -> bool {
let (raw, _) = decompose_tag::<T>(self.data);
@@ -1365,6 +1429,7 @@ impl<'g, T: ?Sized + Pointable> Shared<'g, T> {
/// unsafe {
/// assert_eq!(p.deref(), &1234);
/// }
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub unsafe fn deref(&self) -> &'g T {
let (raw, _) = decompose_tag::<T>(self.data);
@@ -1406,6 +1471,7 @@ impl<'g, T: ?Sized + Pointable> Shared<'g, T> {
/// unsafe {
/// assert_eq!(p.deref(), &vec![1, 2, 3, 4, 5]);
/// }
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub unsafe fn deref_mut(&mut self) -> &'g mut T {
let (raw, _) = decompose_tag::<T>(self.data);
@@ -1442,6 +1508,7 @@ impl<'g, T: ?Sized + Pointable> Shared<'g, T> {
/// unsafe {
/// assert_eq!(p.as_ref(), Some(&1234));
/// }
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub unsafe fn as_ref(&self) -> Option<&'g T> {
let (raw, _) = decompose_tag::<T>(self.data);
@@ -1481,6 +1548,36 @@ impl<'g, T: ?Sized + Pointable> Shared<'g, T> {
Owned::from_usize(self.data)
}
+ /// Takes ownership of the pointee if it is not null.
+ ///
+ /// # Safety
+ ///
+ /// This method may be called only if the pointer is valid and nobody else is holding a
+ /// reference to the same object, or if the pointer is null.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use crossbeam_epoch::{self as epoch, Atomic};
+ /// use std::sync::atomic::Ordering::SeqCst;
+ ///
+ /// let a = Atomic::new(1234);
+ /// unsafe {
+ /// let guard = &epoch::unprotected();
+ /// let p = a.load(SeqCst, guard);
+ /// if let Some(x) = p.try_into_owned() {
+ /// drop(x);
+ /// }
+ /// }
+ /// ```
+ pub unsafe fn try_into_owned(self) -> Option<Owned<T>> {
+ if self.is_null() {
+ None
+ } else {
+ Some(Owned::from_usize(self.data))
+ }
+ }
+
/// Returns the tag stored within the pointer.
///
/// # Examples
@@ -1493,6 +1590,7 @@ impl<'g, T: ?Sized + Pointable> Shared<'g, T> {
/// let guard = &epoch::pin();
/// let p = a.load(SeqCst, guard);
/// assert_eq!(p.tag(), 2);
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn tag(&self) -> usize {
let (_, tag) = decompose_tag::<T>(self.data);
@@ -1516,6 +1614,7 @@ impl<'g, T: ?Sized + Pointable> Shared<'g, T> {
/// assert_eq!(p1.tag(), 0);
/// assert_eq!(p2.tag(), 2);
/// assert_eq!(p1.as_raw(), p2.as_raw());
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn with_tag(&self, tag: usize) -> Shared<'g, T> {
unsafe { Self::from_usize(compose_tag::<T>(self.data, tag)) }
@@ -1536,6 +1635,7 @@ impl<T> From<*const T> for Shared<'_, T> {
///
/// let p = Shared::from(Box::into_raw(Box::new(1234)) as *const _);
/// assert!(!p.is_null());
+ /// # unsafe { drop(p.into_owned()); } // avoid leak
/// ```
fn from(raw: *const T) -> Self {
let raw = raw as usize;
@@ -1612,7 +1712,7 @@ mod tests {
#[test]
fn array_init() {
let owned = Owned::<[MaybeUninit<usize>]>::init(10);
- let arr: &[MaybeUninit<usize>] = &*owned;
+ let arr: &[MaybeUninit<usize>] = &owned;
assert_eq!(arr.len(), 10);
}
}
diff --git a/vendor/crossbeam-epoch/src/collector.rs b/vendor/crossbeam-epoch/src/collector.rs
index 099a2ffc6..5b0851184 100644
--- a/vendor/crossbeam-epoch/src/collector.rs
+++ b/vendor/crossbeam-epoch/src/collector.rs
@@ -111,7 +111,7 @@ impl fmt::Debug for LocalHandle {
#[cfg(all(test, not(crossbeam_loom)))]
mod tests {
- use std::mem;
+ use std::mem::ManuallyDrop;
use std::sync::atomic::{AtomicUsize, Ordering};
use crossbeam_utils::thread;
@@ -402,15 +402,13 @@ mod tests {
v.push(i as i32);
}
- let ptr = v.as_mut_ptr() as usize;
let len = v.len();
+ let ptr = ManuallyDrop::new(v).as_mut_ptr() as usize;
guard.defer_unchecked(move || {
drop(Vec::from_raw_parts(ptr as *const i32 as *mut i32, len, len));
DESTROYS.fetch_add(len, Ordering::Relaxed);
});
guard.flush();
-
- mem::forget(v);
}
while DESTROYS.load(Ordering::Relaxed) < COUNT {
diff --git a/vendor/crossbeam-epoch/src/default.rs b/vendor/crossbeam-epoch/src/default.rs
index c2b4852a4..b42c1c7a7 100644
--- a/vendor/crossbeam-epoch/src/default.rs
+++ b/vendor/crossbeam-epoch/src/default.rs
@@ -8,22 +8,30 @@ use crate::collector::{Collector, LocalHandle};
use crate::guard::Guard;
use crate::primitive::thread_local;
#[cfg(not(crossbeam_loom))]
-use once_cell::sync::Lazy;
+use crate::sync::once_lock::OnceLock;
-/// The global data for the default garbage collector.
-#[cfg(not(crossbeam_loom))]
-static COLLECTOR: Lazy<Collector> = Lazy::new(Collector::new);
-// FIXME: loom does not currently provide the equivalent of Lazy:
-// https://github.com/tokio-rs/loom/issues/263
-#[cfg(crossbeam_loom)]
-loom::lazy_static! {
- /// The global data for the default garbage collector.
- static ref COLLECTOR: Collector = Collector::new();
+fn collector() -> &'static Collector {
+ #[cfg(not(crossbeam_loom))]
+ {
+ /// The global data for the default garbage collector.
+ static COLLECTOR: OnceLock<Collector> = OnceLock::new();
+ COLLECTOR.get_or_init(Collector::new)
+ }
+ // FIXME: loom does not currently provide the equivalent of Lazy:
+ // https://github.com/tokio-rs/loom/issues/263
+ #[cfg(crossbeam_loom)]
+ {
+ loom::lazy_static! {
+ /// The global data for the default garbage collector.
+ static ref COLLECTOR: Collector = Collector::new();
+ }
+ &COLLECTOR
+ }
}
thread_local! {
/// The per-thread participant for the default garbage collector.
- static HANDLE: LocalHandle = COLLECTOR.register();
+ static HANDLE: LocalHandle = collector().register();
}
/// Pins the current thread.
@@ -40,7 +48,7 @@ pub fn is_pinned() -> bool {
/// Returns the default global collector.
pub fn default_collector() -> &'static Collector {
- &COLLECTOR
+ collector()
}
#[inline]
@@ -50,7 +58,7 @@ where
{
HANDLE
.try_with(|h| f(h))
- .unwrap_or_else(|_| f(&COLLECTOR.register()))
+ .unwrap_or_else(|_| f(&collector().register()))
}
#[cfg(all(test, not(crossbeam_loom)))]
diff --git a/vendor/crossbeam-epoch/src/deferred.rs b/vendor/crossbeam-epoch/src/deferred.rs
index c33d51502..2f3d79fdf 100644
--- a/vendor/crossbeam-epoch/src/deferred.rs
+++ b/vendor/crossbeam-epoch/src/deferred.rs
@@ -29,6 +29,15 @@ impl fmt::Debug for Deferred {
}
impl Deferred {
+ pub(crate) const NO_OP: Self = {
+ fn no_op_call(_raw: *mut u8) {}
+ Self {
+ call: no_op_call,
+ data: MaybeUninit::uninit(),
+ _marker: PhantomData,
+ }
+ };
+
/// Constructs a new `Deferred` from a `FnOnce()`.
pub(crate) fn new<F: FnOnce()>(f: F) -> Self {
let size = mem::size_of::<F>();
@@ -37,10 +46,10 @@ impl Deferred {
unsafe {
if size <= mem::size_of::<Data>() && align <= mem::align_of::<Data>() {
let mut data = MaybeUninit::<Data>::uninit();
- ptr::write(data.as_mut_ptr() as *mut F, f);
+ ptr::write(data.as_mut_ptr().cast::<F>(), f);
unsafe fn call<F: FnOnce()>(raw: *mut u8) {
- let f: F = ptr::read(raw as *mut F);
+ let f: F = ptr::read(raw.cast::<F>());
f();
}
@@ -52,12 +61,12 @@ impl Deferred {
} else {
let b: Box<F> = Box::new(f);
let mut data = MaybeUninit::<Data>::uninit();
- ptr::write(data.as_mut_ptr() as *mut Box<F>, b);
+ ptr::write(data.as_mut_ptr().cast::<Box<F>>(), b);
unsafe fn call<F: FnOnce()>(raw: *mut u8) {
// It's safe to cast `raw` from `*mut u8` to `*mut Box<F>`, because `raw` is
// originally derived from `*mut Box<F>`.
- let b: Box<F> = ptr::read(raw as *mut Box<F>);
+ let b: Box<F> = ptr::read(raw.cast::<Box<F>>());
(*b)();
}
@@ -74,7 +83,7 @@ impl Deferred {
#[inline]
pub(crate) fn call(mut self) {
let call = self.call;
- unsafe { call(self.data.as_mut_ptr() as *mut u8) };
+ unsafe { call(self.data.as_mut_ptr().cast::<u8>()) };
}
}
diff --git a/vendor/crossbeam-epoch/src/guard.rs b/vendor/crossbeam-epoch/src/guard.rs
index 6db3750b0..ba7fe1b11 100644
--- a/vendor/crossbeam-epoch/src/guard.rs
+++ b/vendor/crossbeam-epoch/src/guard.rs
@@ -46,6 +46,7 @@ use crate::internal::Local;
/// if let Some(num) = unsafe { p.as_ref() } {
/// println!("The number is {}.", num);
/// }
+/// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
///
/// # Multiple guards
@@ -184,6 +185,7 @@ impl Guard {
/// });
/// }
/// }
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub unsafe fn defer_unchecked<F, R>(&self, f: F)
where
@@ -263,6 +265,7 @@ impl Guard {
/// guard.defer_destroy(p);
/// }
/// }
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub unsafe fn defer_destroy<T>(&self, ptr: Shared<'_, T>) {
self.defer_unchecked(move || ptr.into_owned());
@@ -320,6 +323,7 @@ impl Guard {
/// let p = a.load(SeqCst, &guard);
/// assert_eq!(unsafe { p.as_ref() }, Some(&777));
/// }
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn repin(&mut self) {
if let Some(local) = unsafe { self.local.as_ref() } {
@@ -356,6 +360,7 @@ impl Guard {
/// let p = a.load(SeqCst, &guard);
/// assert_eq!(unsafe { p.as_ref() }, Some(&777));
/// }
+ /// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
pub fn repin_after<F, R>(&mut self, f: F) -> R
where
@@ -451,6 +456,7 @@ impl fmt::Debug for Guard {
///
/// // Dropping `dummy` doesn't affect the current thread - it's just a noop.
/// }
+/// # unsafe { drop(a.into_owned()); } // avoid leak
/// ```
///
/// The most common use of this function is when constructing or destructing a data structure.
diff --git a/vendor/crossbeam-epoch/src/internal.rs b/vendor/crossbeam-epoch/src/internal.rs
index de208b13e..00c66a40a 100644
--- a/vendor/crossbeam-epoch/src/internal.rs
+++ b/vendor/crossbeam-epoch/src/internal.rs
@@ -55,9 +55,10 @@ use crate::sync::list::{Entry, IsElement, IterError, List};
use crate::sync::queue::Queue;
/// Maximum number of objects a bag can contain.
-#[cfg(not(crossbeam_sanitize))]
-const MAX_OBJECTS: usize = 62;
-#[cfg(crossbeam_sanitize)]
+#[cfg(not(any(crossbeam_sanitize, miri)))]
+const MAX_OBJECTS: usize = 64;
+// Makes it more likely to trigger any potential data races.
+#[cfg(any(crossbeam_sanitize, miri))]
const MAX_OBJECTS: usize = 4;
/// A bag of deferred functions.
@@ -106,87 +107,11 @@ impl Bag {
}
impl Default for Bag {
- #[rustfmt::skip]
fn default() -> Self {
- // TODO: [no_op; MAX_OBJECTS] syntax blocked by https://github.com/rust-lang/rust/issues/49147
- #[cfg(not(crossbeam_sanitize))]
- return Bag {
+ Bag {
len: 0,
- deferreds: [
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- ],
- };
- #[cfg(crossbeam_sanitize)]
- return Bag {
- len: 0,
- deferreds: [
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- Deferred::new(no_op_func),
- ],
- };
+ deferreds: [Deferred::NO_OP; MAX_OBJECTS],
+ }
}
}
@@ -194,7 +119,7 @@ impl Drop for Bag {
fn drop(&mut self) {
// Call all deferred functions.
for deferred in &mut self.deferreds[..self.len] {
- let no_op = Deferred::new(no_op_func);
+ let no_op = Deferred::NO_OP;
let owned_deferred = mem::replace(deferred, no_op);
owned_deferred.call();
}
@@ -210,8 +135,6 @@ impl fmt::Debug for Bag {
}
}
-fn no_op_func() {}
-
/// A pair of an epoch and a bag.
#[derive(Default, Debug)]
struct SealedBag {
@@ -375,13 +298,14 @@ pub(crate) struct Local {
// Make sure `Local` is less than or equal to 2048 bytes.
// https://github.com/crossbeam-rs/crossbeam/issues/551
-#[cfg(not(crossbeam_sanitize))] // `crossbeam_sanitize` reduces the size of `Local`
+#[cfg(not(any(crossbeam_sanitize, miri)))] // `crossbeam_sanitize` and `miri` reduce the size of `Local`
#[test]
fn local_size() {
- assert!(
- core::mem::size_of::<Local>() <= 2048,
- "An allocation of `Local` should be <= 2048 bytes."
- );
+ // TODO: https://github.com/crossbeam-rs/crossbeam/issues/869
+ // assert!(
+ // core::mem::size_of::<Local>() <= 2048,
+ // "An allocation of `Local` should be <= 2048 bytes."
+ // );
}
impl Local {
@@ -468,7 +392,10 @@ impl Local {
// Now we must store `new_epoch` into `self.epoch` and execute a `SeqCst` fence.
// The fence makes sure that any future loads from `Atomic`s will not happen before
// this store.
- if cfg!(any(target_arch = "x86", target_arch = "x86_64")) {
+ if cfg!(all(
+ any(target_arch = "x86", target_arch = "x86_64"),
+ not(miri)
+ )) {
// HACK(stjepang): On x86 architectures there are two different ways of executing
// a `SeqCst` fence.
//
diff --git a/vendor/crossbeam-epoch/src/lib.rs b/vendor/crossbeam-epoch/src/lib.rs
index 4cf982b6b..b432c1f40 100644
--- a/vendor/crossbeam-epoch/src/lib.rs
+++ b/vendor/crossbeam-epoch/src/lib.rs
@@ -107,7 +107,7 @@ mod primitive {
// https://github.com/tokio-rs/loom#handling-loom-api-differences
impl<T> UnsafeCell<T> {
#[inline]
- pub(crate) fn new(data: T) -> UnsafeCell<T> {
+ pub(crate) const fn new(data: T) -> UnsafeCell<T> {
UnsafeCell(::core::cell::UnsafeCell::new(data))
}
diff --git a/vendor/crossbeam-epoch/src/sync/mod.rs b/vendor/crossbeam-epoch/src/sync/mod.rs
index 5c06e7643..08981be25 100644
--- a/vendor/crossbeam-epoch/src/sync/mod.rs
+++ b/vendor/crossbeam-epoch/src/sync/mod.rs
@@ -1,4 +1,7 @@
//! Synchronization primitives.
pub(crate) mod list;
+#[cfg(feature = "std")]
+#[cfg(not(crossbeam_loom))]
+pub(crate) mod once_lock;
pub(crate) mod queue;
diff --git a/vendor/crossbeam-epoch/src/sync/once_lock.rs b/vendor/crossbeam-epoch/src/sync/once_lock.rs
new file mode 100644
index 000000000..c1fefc96c
--- /dev/null
+++ b/vendor/crossbeam-epoch/src/sync/once_lock.rs
@@ -0,0 +1,103 @@
+// Based on unstable std::sync::OnceLock.
+//
+// Source: https://github.com/rust-lang/rust/blob/8e9c93df464b7ada3fc7a1c8ccddd9dcb24ee0a0/library/std/src/sync/once_lock.rs
+
+use core::cell::UnsafeCell;
+use core::mem::MaybeUninit;
+use core::sync::atomic::{AtomicBool, Ordering};
+use std::sync::Once;
+
+pub(crate) struct OnceLock<T> {
+ once: Once,
+ // Once::is_completed requires Rust 1.43, so use this to track of whether they have been initialized.
+ is_initialized: AtomicBool,
+ value: UnsafeCell<MaybeUninit<T>>,
+ // Unlike std::sync::OnceLock, we don't need PhantomData here because
+ // we don't use #[may_dangle].
+}
+
+unsafe impl<T: Sync + Send> Sync for OnceLock<T> {}
+unsafe impl<T: Send> Send for OnceLock<T> {}
+
+impl<T> OnceLock<T> {
+ /// Creates a new empty cell.
+ #[must_use]
+ pub(crate) const fn new() -> Self {
+ Self {
+ once: Once::new(),
+ is_initialized: AtomicBool::new(false),
+ value: UnsafeCell::new(MaybeUninit::uninit()),
+ }
+ }
+
+ /// Gets the contents of the cell, initializing it with `f` if the cell
+ /// was empty.
+ ///
+ /// Many threads may call `get_or_init` concurrently with different
+ /// initializing functions, but it is guaranteed that only one function
+ /// will be executed.
+ ///
+ /// # Panics
+ ///
+ /// If `f` panics, the panic is propagated to the caller, and the cell
+ /// remains uninitialized.
+ ///
+ /// It is an error to reentrantly initialize the cell from `f`. The
+ /// exact outcome is unspecified. Current implementation deadlocks, but
+ /// this may be changed to a panic in the future.
+ pub(crate) fn get_or_init<F>(&self, f: F) -> &T
+ where
+ F: FnOnce() -> T,
+ {
+ // Fast path check
+ if self.is_initialized() {
+ // SAFETY: The inner value has been initialized
+ return unsafe { self.get_unchecked() };
+ }
+ self.initialize(f);
+
+ debug_assert!(self.is_initialized());
+
+ // SAFETY: The inner value has been initialized
+ unsafe { self.get_unchecked() }
+ }
+
+ #[inline]
+ fn is_initialized(&self) -> bool {
+ self.is_initialized.load(Ordering::Acquire)
+ }
+
+ #[cold]
+ fn initialize<F>(&self, f: F)
+ where
+ F: FnOnce() -> T,
+ {
+ let slot = self.value.get().cast::<T>();
+ let is_initialized = &self.is_initialized;
+
+ self.once.call_once(|| {
+ let value = f();
+ unsafe {
+ slot.write(value);
+ }
+ is_initialized.store(true, Ordering::Release);
+ });
+ }
+
+ /// # Safety
+ ///
+ /// The value must be initialized
+ unsafe fn get_unchecked(&self) -> &T {
+ debug_assert!(self.is_initialized());
+ &*self.value.get().cast::<T>()
+ }
+}
+
+impl<T> Drop for OnceLock<T> {
+ fn drop(&mut self) {
+ if self.is_initialized() {
+ // SAFETY: The inner value has been initialized
+ unsafe { self.value.get().cast::<T>().drop_in_place() };
+ }
+ }
+}
diff --git a/vendor/crossbeam-queue/.cargo-checksum.json b/vendor/crossbeam-queue/.cargo-checksum.json
deleted file mode 100644
index 8dcd3f367..000000000
--- a/vendor/crossbeam-queue/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CHANGELOG.md":"5f8fe6dc4bfa5616834c0f60a6b0280a9dc96d282d4a14e1a77b1bd60453887f","Cargo.toml":"336728ea0b0befab0c66ff758c47ef8c1f49b4912d2f450ae8ab24611cf78790","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"2d4f1cc484ab54dfb9597bf121b3e8ef5416bb56ae52541976016a4776129447","build.rs":"ee1eaeee830c08c770bb84b40e6400af52c8db464945df0b82c8a4a4b4c681ec","no_atomic.rs":"71b5f78fd701ce604aa766dd3d825fa5bed774282aae4d6c31d7acb01b1b242f","src/array_queue.rs":"ea383caa1b70cbe09716caed20016b851118e24fa8508b2ce2498402ae5369f8","src/lib.rs":"effccc001c5168217291e435ae79f4889495cb943a6720d1e73e65b64831e4ed","src/seg_queue.rs":"be0ceb6d67a084eb511582e38c24c7d90bc89c2111778216cf05e11622d7fc4c","tests/array_queue.rs":"3ea9d2ca8c1e1f4d82f2ccd94872696baa4ffc80aca939ea2c5af737be53f817","tests/seg_queue.rs":"3b44ccad949578d2f4e5dee2687cfe6ef1fd52930ae19ed66c12bafa62cf32c2"},"package":"1f25d8400f4a7a5778f0e4e52384a48cbd9b5c495d110786187fc750075277a2"} \ No newline at end of file
diff --git a/vendor/crossbeam-queue/CHANGELOG.md b/vendor/crossbeam-queue/CHANGELOG.md
deleted file mode 100644
index 1d8b04ff6..000000000
--- a/vendor/crossbeam-queue/CHANGELOG.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# Version 0.3.5
-
-- Add `ArrayQueue::force_push`. (#789)
-
-# Version 0.3.4
-
-- Implement `IntoIterator` for `ArrayQueue` and `SegQueue`. (#772)
-
-# Version 0.3.3
-
-- Fix stacked borrows violation in `ArrayQueue` when `-Zmiri-tag-raw-pointers` is enabled. (#763)
-
-# Version 0.3.2
-
-- Support targets that do not have atomic CAS on stable Rust. (#698)
-
-# Version 0.3.1
-
-- Make `SegQueue::new` const fn. (#584)
-- Change license to "MIT OR Apache-2.0".
-
-# Version 0.3.0
-
-- Bump the minimum supported Rust version to 1.36.
-- Remove `PushError` and `PopError`.
-
-# Version 0.2.3
-
-- Fix bug in release (yanking 0.2.2)
-
-# Version 0.2.2
-
-- Fix unsoundness issues by adopting `MaybeUninit`. (#458)
-
-# Version 0.2.1
-
-- Add `no_std` support.
-
-# Version 0.2.0
-
-- Bump the minimum required version to 1.28.
-- Bump `crossbeam-utils` to `0.7`.
-
-# Version 0.1.2
-
-- Update `crossbeam-utils` to `0.6.5`.
-
-# Version 0.1.1
-
-- Update `crossbeam-utils` to `0.6.4`.
-
-# Version 0.1.0
-
-- Initial version with `ArrayQueue` and `SegQueue`.
diff --git a/vendor/crossbeam-queue/Cargo.toml b/vendor/crossbeam-queue/Cargo.toml
deleted file mode 100644
index c8093dc19..000000000
--- a/vendor/crossbeam-queue/Cargo.toml
+++ /dev/null
@@ -1,51 +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 = "2018"
-rust-version = "1.36"
-name = "crossbeam-queue"
-version = "0.3.5"
-description = "Concurrent queues"
-homepage = "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-queue"
-keywords = [
- "queue",
- "mpmc",
- "lock-free",
- "producer",
- "consumer",
-]
-categories = [
- "concurrency",
- "data-structures",
- "no-std",
-]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/crossbeam-rs/crossbeam"
-
-[dependencies.cfg-if]
-version = "1"
-
-[dependencies.crossbeam-utils]
-version = "0.8.5"
-default-features = false
-
-[dev-dependencies.rand]
-version = "0.8"
-
-[features]
-alloc = []
-default = ["std"]
-nightly = ["crossbeam-utils/nightly"]
-std = [
- "alloc",
- "crossbeam-utils/std",
-]
diff --git a/vendor/crossbeam-queue/README.md b/vendor/crossbeam-queue/README.md
deleted file mode 100644
index 2f30b3937..000000000
--- a/vendor/crossbeam-queue/README.md
+++ /dev/null
@@ -1,54 +0,0 @@
-# Crossbeam Queue
-
-[![Build Status](https://github.com/crossbeam-rs/crossbeam/workflows/CI/badge.svg)](
-https://github.com/crossbeam-rs/crossbeam/actions)
-[![License](https://img.shields.io/badge/license-MIT_OR_Apache--2.0-blue.svg)](
-https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-queue#license)
-[![Cargo](https://img.shields.io/crates/v/crossbeam-queue.svg)](
-https://crates.io/crates/crossbeam-queue)
-[![Documentation](https://docs.rs/crossbeam-queue/badge.svg)](
-https://docs.rs/crossbeam-queue)
-[![Rust 1.36+](https://img.shields.io/badge/rust-1.36+-lightgray.svg)](
-https://www.rust-lang.org)
-[![chat](https://img.shields.io/discord/569610676205781012.svg?logo=discord)](https://discord.com/invite/JXYwgWZ)
-
-This crate provides concurrent queues that can be shared among threads:
-
-* [`ArrayQueue`], a bounded MPMC queue that allocates a fixed-capacity buffer on construction.
-* [`SegQueue`], an unbounded MPMC queue that allocates small buffers, segments, on demand.
-
-Everything in this crate can be used in `no_std` environments, provided that `alloc` feature is
-enabled.
-
-[`ArrayQueue`]: https://docs.rs/crossbeam-queue/*/crossbeam_queue/struct.ArrayQueue.html
-[`SegQueue`]: https://docs.rs/crossbeam-queue/*/crossbeam_queue/struct.SegQueue.html
-
-## Usage
-
-Add this to your `Cargo.toml`:
-
-```toml
-[dependencies]
-crossbeam-queue = "0.3"
-```
-
-## Compatibility
-
-Crossbeam Queue supports stable Rust releases going back at least six months,
-and every time the minimum supported Rust version is increased, a new minor
-version is released. Currently, the minimum supported Rust version is 1.36.
-
-## License
-
-Licensed under either of
-
- * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
-
-at your option.
-
-#### Contribution
-
-Unless you explicitly state otherwise, any contribution intentionally submitted
-for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
-dual licensed as above, without any additional terms or conditions.
diff --git a/vendor/crossbeam-queue/build.rs b/vendor/crossbeam-queue/build.rs
deleted file mode 100644
index 587e0580b..000000000
--- a/vendor/crossbeam-queue/build.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-// The rustc-cfg listed below are considered public API, but it is *unstable*
-// and outside of the normal semver guarantees:
-//
-// - `crossbeam_no_atomic_cas`
-// Assume the target does *not* support atomic CAS operations.
-// This is usually detected automatically by the build script, but you may
-// need to enable it manually when building for custom targets or using
-// non-cargo build systems that don't run the build script.
-//
-// With the exceptions mentioned above, the rustc-cfg emitted by the build
-// script are *not* public API.
-
-#![warn(rust_2018_idioms)]
-
-use std::env;
-
-include!("no_atomic.rs");
-
-fn main() {
- let target = match env::var("TARGET") {
- Ok(target) => target,
- Err(e) => {
- println!(
- "cargo:warning={}: unable to get TARGET environment variable: {}",
- env!("CARGO_PKG_NAME"),
- e
- );
- return;
- }
- };
-
- // Note that this is `no_*`, not `has_*`. This allows treating
- // `cfg(target_has_atomic = "ptr")` as true when the build script doesn't
- // run. This is needed for compatibility with non-cargo build systems that
- // don't run the build script.
- if NO_ATOMIC_CAS.contains(&&*target) {
- println!("cargo:rustc-cfg=crossbeam_no_atomic_cas");
- }
-
- println!("cargo:rerun-if-changed=no_atomic.rs");
-}
diff --git a/vendor/crossbeam-queue/no_atomic.rs b/vendor/crossbeam-queue/no_atomic.rs
deleted file mode 100644
index 390019ebd..000000000
--- a/vendor/crossbeam-queue/no_atomic.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-// This file is @generated by no_atomic.sh.
-// It is not intended for manual editing.
-
-const NO_ATOMIC_CAS: &[&str] = &[
- "avr-unknown-gnu-atmega328",
- "bpfeb-unknown-none",
- "bpfel-unknown-none",
- "msp430-none-elf",
- "riscv32i-unknown-none-elf",
- "riscv32im-unknown-none-elf",
- "riscv32imc-unknown-none-elf",
- "thumbv4t-none-eabi",
- "thumbv6m-none-eabi",
-];
-
-#[allow(dead_code)] // Only crossbeam-utils uses this.
-const NO_ATOMIC_64: &[&str] = &[
- "arm-linux-androideabi",
- "armebv7r-none-eabi",
- "armebv7r-none-eabihf",
- "armv4t-unknown-linux-gnueabi",
- "armv5te-unknown-linux-gnueabi",
- "armv5te-unknown-linux-musleabi",
- "armv5te-unknown-linux-uclibceabi",
- "armv6k-nintendo-3ds",
- "armv7r-none-eabi",
- "armv7r-none-eabihf",
- "avr-unknown-gnu-atmega328",
- "hexagon-unknown-linux-musl",
- "m68k-unknown-linux-gnu",
- "mips-unknown-linux-gnu",
- "mips-unknown-linux-musl",
- "mips-unknown-linux-uclibc",
- "mipsel-sony-psp",
- "mipsel-unknown-linux-gnu",
- "mipsel-unknown-linux-musl",
- "mipsel-unknown-linux-uclibc",
- "mipsel-unknown-none",
- "mipsisa32r6-unknown-linux-gnu",
- "mipsisa32r6el-unknown-linux-gnu",
- "msp430-none-elf",
- "powerpc-unknown-freebsd",
- "powerpc-unknown-linux-gnu",
- "powerpc-unknown-linux-gnuspe",
- "powerpc-unknown-linux-musl",
- "powerpc-unknown-netbsd",
- "powerpc-unknown-openbsd",
- "powerpc-wrs-vxworks",
- "powerpc-wrs-vxworks-spe",
- "riscv32gc-unknown-linux-gnu",
- "riscv32gc-unknown-linux-musl",
- "riscv32i-unknown-none-elf",
- "riscv32im-unknown-none-elf",
- "riscv32imac-unknown-none-elf",
- "riscv32imc-unknown-none-elf",
- "thumbv4t-none-eabi",
- "thumbv6m-none-eabi",
- "thumbv7em-none-eabi",
- "thumbv7em-none-eabihf",
- "thumbv7m-none-eabi",
- "thumbv8m.base-none-eabi",
- "thumbv8m.main-none-eabi",
- "thumbv8m.main-none-eabihf",
-];
-
-#[allow(dead_code)] // Only crossbeam-utils uses this.
-const NO_ATOMIC: &[&str] = &[
- "avr-unknown-gnu-atmega328",
- "msp430-none-elf",
- "riscv32i-unknown-none-elf",
- "riscv32im-unknown-none-elf",
- "riscv32imc-unknown-none-elf",
-];
diff --git a/vendor/crossbeam-queue/src/array_queue.rs b/vendor/crossbeam-queue/src/array_queue.rs
deleted file mode 100644
index c34f589e7..000000000
--- a/vendor/crossbeam-queue/src/array_queue.rs
+++ /dev/null
@@ -1,522 +0,0 @@
-//! The implementation is based on Dmitry Vyukov's bounded MPMC queue.
-//!
-//! Source:
-//! - <http://www.1024cores.net/home/lock-free-algorithms/queues/bounded-mpmc-queue>
-
-use alloc::boxed::Box;
-use core::cell::UnsafeCell;
-use core::fmt;
-use core::mem::MaybeUninit;
-use core::sync::atomic::{self, AtomicUsize, Ordering};
-
-use crossbeam_utils::{Backoff, CachePadded};
-
-/// A slot in a queue.
-struct Slot<T> {
- /// The current stamp.
- ///
- /// If the stamp equals the tail, this node will be next written to. If it equals head + 1,
- /// this node will be next read from.
- stamp: AtomicUsize,
-
- /// The value in this slot.
- value: UnsafeCell<MaybeUninit<T>>,
-}
-
-/// A bounded multi-producer multi-consumer queue.
-///
-/// This queue allocates a fixed-capacity buffer on construction, which is used to store pushed
-/// elements. The queue cannot hold more elements than the buffer allows. Attempting to push an
-/// element into a full queue will fail. Alternatively, [`force_push`] makes it possible for
-/// this queue to be used as a ring-buffer. Having a buffer allocated upfront makes this queue
-/// a bit faster than [`SegQueue`].
-///
-/// [`force_push`]: ArrayQueue::force_push
-/// [`SegQueue`]: super::SegQueue
-///
-/// # Examples
-///
-/// ```
-/// use crossbeam_queue::ArrayQueue;
-///
-/// let q = ArrayQueue::new(2);
-///
-/// assert_eq!(q.push('a'), Ok(()));
-/// assert_eq!(q.push('b'), Ok(()));
-/// assert_eq!(q.push('c'), Err('c'));
-/// assert_eq!(q.pop(), Some('a'));
-/// ```
-pub struct ArrayQueue<T> {
- /// The head of the queue.
- ///
- /// This value is a "stamp" consisting of an index into the buffer and a lap, but packed into a
- /// single `usize`. The lower bits represent the index, while the upper bits represent the lap.
- ///
- /// Elements are popped from the head of the queue.
- head: CachePadded<AtomicUsize>,
-
- /// The tail of the queue.
- ///
- /// This value is a "stamp" consisting of an index into the buffer and a lap, but packed into a
- /// single `usize`. The lower bits represent the index, while the upper bits represent the lap.
- ///
- /// Elements are pushed into the tail of the queue.
- tail: CachePadded<AtomicUsize>,
-
- /// The buffer holding slots.
- buffer: Box<[Slot<T>]>,
-
- /// The queue capacity.
- cap: usize,
-
- /// A stamp with the value of `{ lap: 1, index: 0 }`.
- one_lap: usize,
-}
-
-unsafe impl<T: Send> Sync for ArrayQueue<T> {}
-unsafe impl<T: Send> Send for ArrayQueue<T> {}
-
-impl<T> ArrayQueue<T> {
- /// Creates a new bounded queue with the given capacity.
- ///
- /// # Panics
- ///
- /// Panics if the capacity is zero.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::ArrayQueue;
- ///
- /// let q = ArrayQueue::<i32>::new(100);
- /// ```
- pub fn new(cap: usize) -> ArrayQueue<T> {
- assert!(cap > 0, "capacity must be non-zero");
-
- // Head is initialized to `{ lap: 0, index: 0 }`.
- // Tail is initialized to `{ lap: 0, index: 0 }`.
- let head = 0;
- let tail = 0;
-
- // Allocate a buffer of `cap` slots initialized
- // with stamps.
- let buffer: Box<[Slot<T>]> = (0..cap)
- .map(|i| {
- // Set the stamp to `{ lap: 0, index: i }`.
- Slot {
- stamp: AtomicUsize::new(i),
- value: UnsafeCell::new(MaybeUninit::uninit()),
- }
- })
- .collect();
-
- // One lap is the smallest power of two greater than `cap`.
- let one_lap = (cap + 1).next_power_of_two();
-
- ArrayQueue {
- buffer,
- cap,
- one_lap,
- head: CachePadded::new(AtomicUsize::new(head)),
- tail: CachePadded::new(AtomicUsize::new(tail)),
- }
- }
-
- fn push_or_else<F>(&self, mut value: T, f: F) -> Result<(), T>
- where
- F: Fn(T, usize, usize, &Slot<T>) -> Result<T, T>,
- {
- let backoff = Backoff::new();
- let mut tail = self.tail.load(Ordering::Relaxed);
-
- loop {
- // Deconstruct the tail.
- let index = tail & (self.one_lap - 1);
- let lap = tail & !(self.one_lap - 1);
-
- let new_tail = if index + 1 < self.cap {
- // Same lap, incremented index.
- // Set to `{ lap: lap, index: index + 1 }`.
- tail + 1
- } else {
- // One lap forward, index wraps around to zero.
- // Set to `{ lap: lap.wrapping_add(1), index: 0 }`.
- lap.wrapping_add(self.one_lap)
- };
-
- // Inspect the corresponding slot.
- debug_assert!(index < self.buffer.len());
- let slot = unsafe { self.buffer.get_unchecked(index) };
- let stamp = slot.stamp.load(Ordering::Acquire);
-
- // If the tail and the stamp match, we may attempt to push.
- if tail == stamp {
- // Try moving the tail.
- match self.tail.compare_exchange_weak(
- tail,
- new_tail,
- Ordering::SeqCst,
- Ordering::Relaxed,
- ) {
- Ok(_) => {
- // Write the value into the slot and update the stamp.
- unsafe {
- slot.value.get().write(MaybeUninit::new(value));
- }
- slot.stamp.store(tail + 1, Ordering::Release);
- return Ok(());
- }
- Err(t) => {
- tail = t;
- backoff.spin();
- }
- }
- } else if stamp.wrapping_add(self.one_lap) == tail + 1 {
- atomic::fence(Ordering::SeqCst);
- value = f(value, tail, new_tail, slot)?;
- backoff.spin();
- tail = self.tail.load(Ordering::Relaxed);
- } else {
- // Snooze because we need to wait for the stamp to get updated.
- backoff.snooze();
- tail = self.tail.load(Ordering::Relaxed);
- }
- }
- }
-
- /// Attempts to push an element into the queue.
- ///
- /// If the queue is full, the element is returned back as an error.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::ArrayQueue;
- ///
- /// let q = ArrayQueue::new(1);
- ///
- /// assert_eq!(q.push(10), Ok(()));
- /// assert_eq!(q.push(20), Err(20));
- /// ```
- pub fn push(&self, value: T) -> Result<(), T> {
- self.push_or_else(value, |v, tail, _, _| {
- let head = self.head.load(Ordering::Relaxed);
-
- // If the head lags one lap behind the tail as well...
- if head.wrapping_add(self.one_lap) == tail {
- // ...then the queue is full.
- Err(v)
- } else {
- Ok(v)
- }
- })
- }
-
- /// Pushes an element into the queue, replacing the oldest element if necessary.
- ///
- /// If the queue is full, the oldest element is replaced and returned,
- /// otherwise `None` is returned.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::ArrayQueue;
- ///
- /// let q = ArrayQueue::new(2);
- ///
- /// assert_eq!(q.force_push(10), None);
- /// assert_eq!(q.force_push(20), None);
- /// assert_eq!(q.force_push(30), Some(10));
- /// assert_eq!(q.pop(), Some(20));
- /// ```
- pub fn force_push(&self, value: T) -> Option<T> {
- self.push_or_else(value, |v, tail, new_tail, slot| {
- let head = tail.wrapping_sub(self.one_lap);
- let new_head = new_tail.wrapping_sub(self.one_lap);
-
- // Try moving the head.
- if self
- .head
- .compare_exchange_weak(head, new_head, Ordering::SeqCst, Ordering::Relaxed)
- .is_ok()
- {
- // Move the tail.
- self.tail.store(new_tail, Ordering::SeqCst);
-
- // Swap the previous value.
- let old = unsafe { slot.value.get().replace(MaybeUninit::new(v)).assume_init() };
-
- // Update the stamp.
- slot.stamp.store(tail + 1, Ordering::Release);
-
- Err(old)
- } else {
- Ok(v)
- }
- })
- .err()
- }
-
- /// Attempts to pop an element from the queue.
- ///
- /// If the queue is empty, `None` is returned.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::ArrayQueue;
- ///
- /// let q = ArrayQueue::new(1);
- /// assert_eq!(q.push(10), Ok(()));
- ///
- /// assert_eq!(q.pop(), Some(10));
- /// assert!(q.pop().is_none());
- /// ```
- pub fn pop(&self) -> Option<T> {
- let backoff = Backoff::new();
- let mut head = self.head.load(Ordering::Relaxed);
-
- loop {
- // Deconstruct the head.
- let index = head & (self.one_lap - 1);
- let lap = head & !(self.one_lap - 1);
-
- // Inspect the corresponding slot.
- debug_assert!(index < self.buffer.len());
- let slot = unsafe { self.buffer.get_unchecked(index) };
- let stamp = slot.stamp.load(Ordering::Acquire);
-
- // If the the stamp is ahead of the head by 1, we may attempt to pop.
- if head + 1 == stamp {
- let new = if index + 1 < self.cap {
- // Same lap, incremented index.
- // Set to `{ lap: lap, index: index + 1 }`.
- head + 1
- } else {
- // One lap forward, index wraps around to zero.
- // Set to `{ lap: lap.wrapping_add(1), index: 0 }`.
- lap.wrapping_add(self.one_lap)
- };
-
- // Try moving the head.
- match self.head.compare_exchange_weak(
- head,
- new,
- Ordering::SeqCst,
- Ordering::Relaxed,
- ) {
- Ok(_) => {
- // Read the value from the slot and update the stamp.
- let msg = unsafe { slot.value.get().read().assume_init() };
- slot.stamp
- .store(head.wrapping_add(self.one_lap), Ordering::Release);
- return Some(msg);
- }
- Err(h) => {
- head = h;
- backoff.spin();
- }
- }
- } else if stamp == head {
- atomic::fence(Ordering::SeqCst);
- let tail = self.tail.load(Ordering::Relaxed);
-
- // If the tail equals the head, that means the channel is empty.
- if tail == head {
- return None;
- }
-
- backoff.spin();
- head = self.head.load(Ordering::Relaxed);
- } else {
- // Snooze because we need to wait for the stamp to get updated.
- backoff.snooze();
- head = self.head.load(Ordering::Relaxed);
- }
- }
- }
-
- /// Returns the capacity of the queue.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::ArrayQueue;
- ///
- /// let q = ArrayQueue::<i32>::new(100);
- ///
- /// assert_eq!(q.capacity(), 100);
- /// ```
- pub fn capacity(&self) -> usize {
- self.cap
- }
-
- /// Returns `true` if the queue is empty.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::ArrayQueue;
- ///
- /// let q = ArrayQueue::new(100);
- ///
- /// assert!(q.is_empty());
- /// q.push(1).unwrap();
- /// assert!(!q.is_empty());
- /// ```
- pub fn is_empty(&self) -> bool {
- let head = self.head.load(Ordering::SeqCst);
- let tail = self.tail.load(Ordering::SeqCst);
-
- // Is the tail lagging one lap behind head?
- // Is the tail equal to the head?
- //
- // Note: If the head changes just before we load the tail, that means there was a moment
- // when the channel was not empty, so it is safe to just return `false`.
- tail == head
- }
-
- /// Returns `true` if the queue is full.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::ArrayQueue;
- ///
- /// let q = ArrayQueue::new(1);
- ///
- /// assert!(!q.is_full());
- /// q.push(1).unwrap();
- /// assert!(q.is_full());
- /// ```
- pub fn is_full(&self) -> bool {
- let tail = self.tail.load(Ordering::SeqCst);
- let head = self.head.load(Ordering::SeqCst);
-
- // Is the head lagging one lap behind tail?
- //
- // Note: If the tail changes just before we load the head, that means there was a moment
- // when the queue was not full, so it is safe to just return `false`.
- head.wrapping_add(self.one_lap) == tail
- }
-
- /// Returns the number of elements in the queue.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::ArrayQueue;
- ///
- /// let q = ArrayQueue::new(100);
- /// assert_eq!(q.len(), 0);
- ///
- /// q.push(10).unwrap();
- /// assert_eq!(q.len(), 1);
- ///
- /// q.push(20).unwrap();
- /// assert_eq!(q.len(), 2);
- /// ```
- pub fn len(&self) -> usize {
- loop {
- // Load the tail, then load the head.
- let tail = self.tail.load(Ordering::SeqCst);
- let head = self.head.load(Ordering::SeqCst);
-
- // If the tail didn't change, we've got consistent values to work with.
- if self.tail.load(Ordering::SeqCst) == tail {
- let hix = head & (self.one_lap - 1);
- let tix = tail & (self.one_lap - 1);
-
- return if hix < tix {
- tix - hix
- } else if hix > tix {
- self.cap - hix + tix
- } else if tail == head {
- 0
- } else {
- self.cap
- };
- }
- }
- }
-}
-
-impl<T> Drop for ArrayQueue<T> {
- fn drop(&mut self) {
- // Get the index of the head.
- let hix = self.head.load(Ordering::Relaxed) & (self.one_lap - 1);
-
- // Loop over all slots that hold a message and drop them.
- for i in 0..self.len() {
- // Compute the index of the next slot holding a message.
- let index = if hix + i < self.cap {
- hix + i
- } else {
- hix + i - self.cap
- };
-
- unsafe {
- debug_assert!(index < self.buffer.len());
- let slot = self.buffer.get_unchecked_mut(index);
- let value = &mut *slot.value.get();
- value.as_mut_ptr().drop_in_place();
- }
- }
- }
-}
-
-impl<T> fmt::Debug for ArrayQueue<T> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.pad("ArrayQueue { .. }")
- }
-}
-
-impl<T> IntoIterator for ArrayQueue<T> {
- type Item = T;
-
- type IntoIter = IntoIter<T>;
-
- fn into_iter(self) -> Self::IntoIter {
- IntoIter { value: self }
- }
-}
-
-#[derive(Debug)]
-pub struct IntoIter<T> {
- value: ArrayQueue<T>,
-}
-
-impl<T> Iterator for IntoIter<T> {
- type Item = T;
-
- fn next(&mut self) -> Option<Self::Item> {
- let value = &mut self.value;
- let head = *value.head.get_mut();
- if value.head.get_mut() != value.tail.get_mut() {
- let index = head & (value.one_lap - 1);
- let lap = head & !(value.one_lap - 1);
- // SAFETY: We have mutable access to this, so we can read without
- // worrying about concurrency. Furthermore, we know this is
- // initialized because it is the value pointed at by `value.head`
- // and this is a non-empty queue.
- let val = unsafe {
- debug_assert!(index < value.buffer.len());
- let slot = value.buffer.get_unchecked_mut(index);
- slot.value.get().read().assume_init()
- };
- let new = if index + 1 < value.cap {
- // Same lap, incremented index.
- // Set to `{ lap: lap, index: index + 1 }`.
- head + 1
- } else {
- // One lap forward, index wraps around to zero.
- // Set to `{ lap: lap.wrapping_add(1), index: 0 }`.
- lap.wrapping_add(value.one_lap)
- };
- *value.head.get_mut() = new;
- Option::Some(val)
- } else {
- Option::None
- }
- }
-}
diff --git a/vendor/crossbeam-queue/src/lib.rs b/vendor/crossbeam-queue/src/lib.rs
deleted file mode 100644
index 846d7c2e1..000000000
--- a/vendor/crossbeam-queue/src/lib.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-//! Concurrent queues.
-//!
-//! This crate provides concurrent queues that can be shared among threads:
-//!
-//! * [`ArrayQueue`], a bounded MPMC queue that allocates a fixed-capacity buffer on construction.
-//! * [`SegQueue`], an unbounded MPMC queue that allocates small buffers, segments, on demand.
-
-#![doc(test(
- no_crate_inject,
- attr(
- deny(warnings, rust_2018_idioms),
- allow(dead_code, unused_assignments, unused_variables)
- )
-))]
-#![warn(
- missing_docs,
- missing_debug_implementations,
- rust_2018_idioms,
- unreachable_pub
-)]
-#![cfg_attr(not(feature = "std"), no_std)]
-
-#[cfg(not(crossbeam_no_atomic_cas))]
-cfg_if::cfg_if! {
- if #[cfg(feature = "alloc")] {
- extern crate alloc;
-
- mod array_queue;
- mod seg_queue;
-
- pub use self::array_queue::ArrayQueue;
- pub use self::seg_queue::SegQueue;
- }
-}
diff --git a/vendor/crossbeam-queue/src/seg_queue.rs b/vendor/crossbeam-queue/src/seg_queue.rs
deleted file mode 100644
index 1767775d1..000000000
--- a/vendor/crossbeam-queue/src/seg_queue.rs
+++ /dev/null
@@ -1,545 +0,0 @@
-use alloc::boxed::Box;
-use core::cell::UnsafeCell;
-use core::fmt;
-use core::marker::PhantomData;
-use core::mem::MaybeUninit;
-use core::ptr;
-use core::sync::atomic::{self, AtomicPtr, AtomicUsize, Ordering};
-
-use crossbeam_utils::{Backoff, CachePadded};
-
-// Bits indicating the state of a slot:
-// * If a value has been written into the slot, `WRITE` is set.
-// * If a value has been read from the slot, `READ` is set.
-// * If the block is being destroyed, `DESTROY` is set.
-const WRITE: usize = 1;
-const READ: usize = 2;
-const DESTROY: usize = 4;
-
-// Each block covers one "lap" of indices.
-const LAP: usize = 32;
-// The maximum number of values a block can hold.
-const BLOCK_CAP: usize = LAP - 1;
-// How many lower bits are reserved for metadata.
-const SHIFT: usize = 1;
-// Indicates that the block is not the last one.
-const HAS_NEXT: usize = 1;
-
-/// A slot in a block.
-struct Slot<T> {
- /// The value.
- value: UnsafeCell<MaybeUninit<T>>,
-
- /// The state of the slot.
- state: AtomicUsize,
-}
-
-impl<T> Slot<T> {
- /// Waits until a value is written into the slot.
- fn wait_write(&self) {
- let backoff = Backoff::new();
- while self.state.load(Ordering::Acquire) & WRITE == 0 {
- backoff.snooze();
- }
- }
-}
-
-/// A block in a linked list.
-///
-/// Each block in the list can hold up to `BLOCK_CAP` values.
-struct Block<T> {
- /// The next block in the linked list.
- next: AtomicPtr<Block<T>>,
-
- /// Slots for values.
- slots: [Slot<T>; BLOCK_CAP],
-}
-
-impl<T> Block<T> {
- /// Creates an empty block that starts at `start_index`.
- fn new() -> Block<T> {
- // SAFETY: This is safe because:
- // [1] `Block::next` (AtomicPtr) may be safely zero initialized.
- // [2] `Block::slots` (Array) may be safely zero initialized because of [3, 4].
- // [3] `Slot::value` (UnsafeCell) may be safely zero initialized because it
- // holds a MaybeUninit.
- // [4] `Slot::state` (AtomicUsize) may be safely zero initialized.
- unsafe { MaybeUninit::zeroed().assume_init() }
- }
-
- /// Waits until the next pointer is set.
- fn wait_next(&self) -> *mut Block<T> {
- let backoff = Backoff::new();
- loop {
- let next = self.next.load(Ordering::Acquire);
- if !next.is_null() {
- return next;
- }
- backoff.snooze();
- }
- }
-
- /// Sets the `DESTROY` bit in slots starting from `start` and destroys the block.
- unsafe fn destroy(this: *mut Block<T>, start: usize) {
- // It is not necessary to set the `DESTROY` bit in the last slot because that slot has
- // begun destruction of the block.
- for i in start..BLOCK_CAP - 1 {
- let slot = (*this).slots.get_unchecked(i);
-
- // Mark the `DESTROY` bit if a thread is still using the slot.
- if slot.state.load(Ordering::Acquire) & READ == 0
- && slot.state.fetch_or(DESTROY, Ordering::AcqRel) & READ == 0
- {
- // If a thread is still using the slot, it will continue destruction of the block.
- return;
- }
- }
-
- // No thread is using the block, now it is safe to destroy it.
- drop(Box::from_raw(this));
- }
-}
-
-/// A position in a queue.
-struct Position<T> {
- /// The index in the queue.
- index: AtomicUsize,
-
- /// The block in the linked list.
- block: AtomicPtr<Block<T>>,
-}
-
-/// An unbounded multi-producer multi-consumer queue.
-///
-/// This queue is implemented as a linked list of segments, where each segment is a small buffer
-/// that can hold a handful of elements. There is no limit to how many elements can be in the queue
-/// at a time. However, since segments need to be dynamically allocated as elements get pushed,
-/// this queue is somewhat slower than [`ArrayQueue`].
-///
-/// [`ArrayQueue`]: super::ArrayQueue
-///
-/// # Examples
-///
-/// ```
-/// use crossbeam_queue::SegQueue;
-///
-/// let q = SegQueue::new();
-///
-/// q.push('a');
-/// q.push('b');
-///
-/// assert_eq!(q.pop(), Some('a'));
-/// assert_eq!(q.pop(), Some('b'));
-/// assert!(q.pop().is_none());
-/// ```
-pub struct SegQueue<T> {
- /// The head of the queue.
- head: CachePadded<Position<T>>,
-
- /// The tail of the queue.
- tail: CachePadded<Position<T>>,
-
- /// Indicates that dropping a `SegQueue<T>` may drop values of type `T`.
- _marker: PhantomData<T>,
-}
-
-unsafe impl<T: Send> Send for SegQueue<T> {}
-unsafe impl<T: Send> Sync for SegQueue<T> {}
-
-impl<T> SegQueue<T> {
- /// Creates a new unbounded queue.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::SegQueue;
- ///
- /// let q = SegQueue::<i32>::new();
- /// ```
- pub const fn new() -> SegQueue<T> {
- SegQueue {
- head: CachePadded::new(Position {
- block: AtomicPtr::new(ptr::null_mut()),
- index: AtomicUsize::new(0),
- }),
- tail: CachePadded::new(Position {
- block: AtomicPtr::new(ptr::null_mut()),
- index: AtomicUsize::new(0),
- }),
- _marker: PhantomData,
- }
- }
-
- /// Pushes an element into the queue.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::SegQueue;
- ///
- /// let q = SegQueue::new();
- ///
- /// q.push(10);
- /// q.push(20);
- /// ```
- pub fn push(&self, value: T) {
- let backoff = Backoff::new();
- let mut tail = self.tail.index.load(Ordering::Acquire);
- let mut block = self.tail.block.load(Ordering::Acquire);
- let mut next_block = None;
-
- loop {
- // Calculate the offset of the index into the block.
- let offset = (tail >> SHIFT) % LAP;
-
- // If we reached the end of the block, wait until the next one is installed.
- if offset == BLOCK_CAP {
- backoff.snooze();
- tail = self.tail.index.load(Ordering::Acquire);
- block = self.tail.block.load(Ordering::Acquire);
- continue;
- }
-
- // If we're going to have to install the next block, allocate it in advance in order to
- // make the wait for other threads as short as possible.
- if offset + 1 == BLOCK_CAP && next_block.is_none() {
- next_block = Some(Box::new(Block::<T>::new()));
- }
-
- // If this is the first push operation, we need to allocate the first block.
- if block.is_null() {
- let new = Box::into_raw(Box::new(Block::<T>::new()));
-
- if self
- .tail
- .block
- .compare_exchange(block, new, Ordering::Release, Ordering::Relaxed)
- .is_ok()
- {
- self.head.block.store(new, Ordering::Release);
- block = new;
- } else {
- next_block = unsafe { Some(Box::from_raw(new)) };
- tail = self.tail.index.load(Ordering::Acquire);
- block = self.tail.block.load(Ordering::Acquire);
- continue;
- }
- }
-
- let new_tail = tail + (1 << SHIFT);
-
- // Try advancing the tail forward.
- match self.tail.index.compare_exchange_weak(
- tail,
- new_tail,
- Ordering::SeqCst,
- Ordering::Acquire,
- ) {
- Ok(_) => unsafe {
- // If we've reached the end of the block, install the next one.
- if offset + 1 == BLOCK_CAP {
- let next_block = Box::into_raw(next_block.unwrap());
- let next_index = new_tail.wrapping_add(1 << SHIFT);
-
- self.tail.block.store(next_block, Ordering::Release);
- self.tail.index.store(next_index, Ordering::Release);
- (*block).next.store(next_block, Ordering::Release);
- }
-
- // Write the value into the slot.
- let slot = (*block).slots.get_unchecked(offset);
- slot.value.get().write(MaybeUninit::new(value));
- slot.state.fetch_or(WRITE, Ordering::Release);
-
- return;
- },
- Err(t) => {
- tail = t;
- block = self.tail.block.load(Ordering::Acquire);
- backoff.spin();
- }
- }
- }
- }
-
- /// Pops an element from the queue.
- ///
- /// If the queue is empty, `None` is returned.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::SegQueue;
- ///
- /// let q = SegQueue::new();
- ///
- /// q.push(10);
- /// assert_eq!(q.pop(), Some(10));
- /// assert!(q.pop().is_none());
- /// ```
- pub fn pop(&self) -> Option<T> {
- let backoff = Backoff::new();
- let mut head = self.head.index.load(Ordering::Acquire);
- let mut block = self.head.block.load(Ordering::Acquire);
-
- loop {
- // Calculate the offset of the index into the block.
- let offset = (head >> SHIFT) % LAP;
-
- // If we reached the end of the block, wait until the next one is installed.
- if offset == BLOCK_CAP {
- backoff.snooze();
- head = self.head.index.load(Ordering::Acquire);
- block = self.head.block.load(Ordering::Acquire);
- continue;
- }
-
- let mut new_head = head + (1 << SHIFT);
-
- if new_head & HAS_NEXT == 0 {
- atomic::fence(Ordering::SeqCst);
- let tail = self.tail.index.load(Ordering::Relaxed);
-
- // If the tail equals the head, that means the queue is empty.
- if head >> SHIFT == tail >> SHIFT {
- return None;
- }
-
- // If head and tail are not in the same block, set `HAS_NEXT` in head.
- if (head >> SHIFT) / LAP != (tail >> SHIFT) / LAP {
- new_head |= HAS_NEXT;
- }
- }
-
- // The block can be null here only if the first push operation is in progress. In that
- // case, just wait until it gets initialized.
- if block.is_null() {
- backoff.snooze();
- head = self.head.index.load(Ordering::Acquire);
- block = self.head.block.load(Ordering::Acquire);
- continue;
- }
-
- // Try moving the head index forward.
- match self.head.index.compare_exchange_weak(
- head,
- new_head,
- Ordering::SeqCst,
- Ordering::Acquire,
- ) {
- Ok(_) => unsafe {
- // If we've reached the end of the block, move to the next one.
- if offset + 1 == BLOCK_CAP {
- let next = (*block).wait_next();
- let mut next_index = (new_head & !HAS_NEXT).wrapping_add(1 << SHIFT);
- if !(*next).next.load(Ordering::Relaxed).is_null() {
- next_index |= HAS_NEXT;
- }
-
- self.head.block.store(next, Ordering::Release);
- self.head.index.store(next_index, Ordering::Release);
- }
-
- // Read the value.
- let slot = (*block).slots.get_unchecked(offset);
- slot.wait_write();
- let value = slot.value.get().read().assume_init();
-
- // Destroy the block if we've reached the end, or if another thread wanted to
- // destroy but couldn't because we were busy reading from the slot.
- if offset + 1 == BLOCK_CAP {
- Block::destroy(block, 0);
- } else if slot.state.fetch_or(READ, Ordering::AcqRel) & DESTROY != 0 {
- Block::destroy(block, offset + 1);
- }
-
- return Some(value);
- },
- Err(h) => {
- head = h;
- block = self.head.block.load(Ordering::Acquire);
- backoff.spin();
- }
- }
- }
- }
-
- /// Returns `true` if the queue is empty.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::SegQueue;
- ///
- /// let q = SegQueue::new();
- ///
- /// assert!(q.is_empty());
- /// q.push(1);
- /// assert!(!q.is_empty());
- /// ```
- pub fn is_empty(&self) -> bool {
- let head = self.head.index.load(Ordering::SeqCst);
- let tail = self.tail.index.load(Ordering::SeqCst);
- head >> SHIFT == tail >> SHIFT
- }
-
- /// Returns the number of elements in the queue.
- ///
- /// # Examples
- ///
- /// ```
- /// use crossbeam_queue::SegQueue;
- ///
- /// let q = SegQueue::new();
- /// assert_eq!(q.len(), 0);
- ///
- /// q.push(10);
- /// assert_eq!(q.len(), 1);
- ///
- /// q.push(20);
- /// assert_eq!(q.len(), 2);
- /// ```
- pub fn len(&self) -> usize {
- loop {
- // Load the tail index, then load the head index.
- let mut tail = self.tail.index.load(Ordering::SeqCst);
- let mut head = self.head.index.load(Ordering::SeqCst);
-
- // If the tail index didn't change, we've got consistent indices to work with.
- if self.tail.index.load(Ordering::SeqCst) == tail {
- // Erase the lower bits.
- tail &= !((1 << SHIFT) - 1);
- head &= !((1 << SHIFT) - 1);
-
- // Fix up indices if they fall onto block ends.
- if (tail >> SHIFT) & (LAP - 1) == LAP - 1 {
- tail = tail.wrapping_add(1 << SHIFT);
- }
- if (head >> SHIFT) & (LAP - 1) == LAP - 1 {
- head = head.wrapping_add(1 << SHIFT);
- }
-
- // Rotate indices so that head falls into the first block.
- let lap = (head >> SHIFT) / LAP;
- tail = tail.wrapping_sub((lap * LAP) << SHIFT);
- head = head.wrapping_sub((lap * LAP) << SHIFT);
-
- // Remove the lower bits.
- tail >>= SHIFT;
- head >>= SHIFT;
-
- // Return the difference minus the number of blocks between tail and head.
- return tail - head - tail / LAP;
- }
- }
- }
-}
-
-impl<T> Drop for SegQueue<T> {
- fn drop(&mut self) {
- let mut head = self.head.index.load(Ordering::Relaxed);
- let mut tail = self.tail.index.load(Ordering::Relaxed);
- let mut block = self.head.block.load(Ordering::Relaxed);
-
- // Erase the lower bits.
- head &= !((1 << SHIFT) - 1);
- tail &= !((1 << SHIFT) - 1);
-
- unsafe {
- // Drop all values between `head` and `tail` and deallocate the heap-allocated blocks.
- while head != tail {
- let offset = (head >> SHIFT) % LAP;
-
- if offset < BLOCK_CAP {
- // Drop the value in the slot.
- let slot = (*block).slots.get_unchecked(offset);
- let p = &mut *slot.value.get();
- p.as_mut_ptr().drop_in_place();
- } else {
- // Deallocate the block and move to the next one.
- let next = (*block).next.load(Ordering::Relaxed);
- drop(Box::from_raw(block));
- block = next;
- }
-
- head = head.wrapping_add(1 << SHIFT);
- }
-
- // Deallocate the last remaining block.
- if !block.is_null() {
- drop(Box::from_raw(block));
- }
- }
- }
-}
-
-impl<T> fmt::Debug for SegQueue<T> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.pad("SegQueue { .. }")
- }
-}
-
-impl<T> Default for SegQueue<T> {
- fn default() -> SegQueue<T> {
- SegQueue::new()
- }
-}
-
-impl<T> IntoIterator for SegQueue<T> {
- type Item = T;
-
- type IntoIter = IntoIter<T>;
-
- fn into_iter(self) -> Self::IntoIter {
- IntoIter { value: self }
- }
-}
-
-#[derive(Debug)]
-pub struct IntoIter<T> {
- value: SegQueue<T>,
-}
-
-impl<T> Iterator for IntoIter<T> {
- type Item = T;
-
- fn next(&mut self) -> Option<Self::Item> {
- let value = &mut self.value;
- let head = *value.head.index.get_mut();
- let tail = *value.tail.index.get_mut();
- if head >> SHIFT == tail >> SHIFT {
- None
- } else {
- let block = *value.head.block.get_mut();
- let offset = (head >> SHIFT) % LAP;
-
- // SAFETY: We have mutable access to this, so we can read without
- // worrying about concurrency. Furthermore, we know this is
- // initialized because it is the value pointed at by `value.head`
- // and this is a non-empty queue.
- let item = unsafe {
- let slot = (*block).slots.get_unchecked(offset);
- let p = &mut *slot.value.get();
- p.as_mut_ptr().read()
- };
- if offset + 1 == BLOCK_CAP {
- // Deallocate the block and move to the next one.
- // SAFETY: The block is initialized because we've been reading
- // from it this entire time. We can drop it b/c everything has
- // been read out of it, so nothing is pointing to it anymore.
- unsafe {
- let next = *(*block).next.get_mut();
- drop(Box::from_raw(block));
- *value.head.block.get_mut() = next;
- }
- // The last value in a block is empty, so skip it
- *value.head.index.get_mut() = head.wrapping_add(2 << SHIFT);
- // Double-check that we're pointing to the first item in a block.
- debug_assert_eq!((*value.head.index.get_mut() >> SHIFT) % LAP, 0);
- } else {
- *value.head.index.get_mut() = head.wrapping_add(1 << SHIFT);
- }
- Some(item)
- }
- }
-}
diff --git a/vendor/crossbeam-queue/tests/array_queue.rs b/vendor/crossbeam-queue/tests/array_queue.rs
deleted file mode 100644
index 9a64eac03..000000000
--- a/vendor/crossbeam-queue/tests/array_queue.rs
+++ /dev/null
@@ -1,359 +0,0 @@
-use std::sync::atomic::{AtomicUsize, Ordering};
-
-use crossbeam_queue::ArrayQueue;
-use crossbeam_utils::thread::scope;
-use rand::{thread_rng, Rng};
-
-#[test]
-fn smoke() {
- let q = ArrayQueue::new(1);
-
- q.push(7).unwrap();
- assert_eq!(q.pop(), Some(7));
-
- q.push(8).unwrap();
- assert_eq!(q.pop(), Some(8));
- assert!(q.pop().is_none());
-}
-
-#[test]
-fn capacity() {
- for i in 1..10 {
- let q = ArrayQueue::<i32>::new(i);
- assert_eq!(q.capacity(), i);
- }
-}
-
-#[test]
-#[should_panic(expected = "capacity must be non-zero")]
-fn zero_capacity() {
- let _ = ArrayQueue::<i32>::new(0);
-}
-
-#[test]
-fn len_empty_full() {
- let q = ArrayQueue::new(2);
-
- assert_eq!(q.len(), 0);
- assert!(q.is_empty());
- assert!(!q.is_full());
-
- q.push(()).unwrap();
-
- assert_eq!(q.len(), 1);
- assert!(!q.is_empty());
- assert!(!q.is_full());
-
- q.push(()).unwrap();
-
- assert_eq!(q.len(), 2);
- assert!(!q.is_empty());
- assert!(q.is_full());
-
- q.pop().unwrap();
-
- assert_eq!(q.len(), 1);
- assert!(!q.is_empty());
- assert!(!q.is_full());
-}
-
-#[cfg_attr(miri, ignore)] // Miri is too slow
-#[test]
-fn len() {
- const COUNT: usize = 25_000;
- const CAP: usize = 1000;
-
- let q = ArrayQueue::new(CAP);
- assert_eq!(q.len(), 0);
-
- for _ in 0..CAP / 10 {
- for i in 0..50 {
- q.push(i).unwrap();
- assert_eq!(q.len(), i + 1);
- }
-
- for i in 0..50 {
- q.pop().unwrap();
- assert_eq!(q.len(), 50 - i - 1);
- }
- }
- assert_eq!(q.len(), 0);
-
- for i in 0..CAP {
- q.push(i).unwrap();
- assert_eq!(q.len(), i + 1);
- }
-
- for _ in 0..CAP {
- q.pop().unwrap();
- }
- assert_eq!(q.len(), 0);
-
- scope(|scope| {
- scope.spawn(|_| {
- for i in 0..COUNT {
- loop {
- if let Some(x) = q.pop() {
- assert_eq!(x, i);
- break;
- }
- }
- let len = q.len();
- assert!(len <= CAP);
- }
- });
-
- scope.spawn(|_| {
- for i in 0..COUNT {
- while q.push(i).is_err() {}
- let len = q.len();
- assert!(len <= CAP);
- }
- });
- })
- .unwrap();
- assert_eq!(q.len(), 0);
-}
-
-#[cfg_attr(miri, ignore)] // Miri is too slow
-#[test]
-fn spsc() {
- const COUNT: usize = 100_000;
-
- let q = ArrayQueue::new(3);
-
- scope(|scope| {
- scope.spawn(|_| {
- for i in 0..COUNT {
- loop {
- if let Some(x) = q.pop() {
- assert_eq!(x, i);
- break;
- }
- }
- }
- assert!(q.pop().is_none());
- });
-
- scope.spawn(|_| {
- for i in 0..COUNT {
- while q.push(i).is_err() {}
- }
- });
- })
- .unwrap();
-}
-
-#[cfg_attr(miri, ignore)] // Miri is too slow
-#[test]
-fn spsc_ring_buffer() {
- const COUNT: usize = 100_000;
-
- let t = AtomicUsize::new(1);
- let q = ArrayQueue::<usize>::new(3);
- let v = (0..COUNT).map(|_| AtomicUsize::new(0)).collect::<Vec<_>>();
-
- scope(|scope| {
- scope.spawn(|_| loop {
- match t.load(Ordering::SeqCst) {
- 0 if q.is_empty() => break,
-
- _ => {
- while let Some(n) = q.pop() {
- v[n].fetch_add(1, Ordering::SeqCst);
- }
- }
- }
- });
-
- scope.spawn(|_| {
- for i in 0..COUNT {
- if let Some(n) = q.force_push(i) {
- v[n].fetch_add(1, Ordering::SeqCst);
- }
- }
-
- t.fetch_sub(1, Ordering::SeqCst);
- });
- })
- .unwrap();
-
- for c in v {
- assert_eq!(c.load(Ordering::SeqCst), 1);
- }
-}
-
-#[cfg_attr(miri, ignore)] // Miri is too slow
-#[test]
-fn mpmc() {
- const COUNT: usize = 25_000;
- const THREADS: usize = 4;
-
- let q = ArrayQueue::<usize>::new(3);
- let v = (0..COUNT).map(|_| AtomicUsize::new(0)).collect::<Vec<_>>();
-
- scope(|scope| {
- for _ in 0..THREADS {
- scope.spawn(|_| {
- for _ in 0..COUNT {
- let n = loop {
- if let Some(x) = q.pop() {
- break x;
- }
- };
- v[n].fetch_add(1, Ordering::SeqCst);
- }
- });
- }
- for _ in 0..THREADS {
- scope.spawn(|_| {
- for i in 0..COUNT {
- while q.push(i).is_err() {}
- }
- });
- }
- })
- .unwrap();
-
- for c in v {
- assert_eq!(c.load(Ordering::SeqCst), THREADS);
- }
-}
-
-#[cfg_attr(miri, ignore)] // Miri is too slow
-#[test]
-fn mpmc_ring_buffer() {
- const COUNT: usize = 25_000;
- const THREADS: usize = 4;
-
- let t = AtomicUsize::new(THREADS);
- let q = ArrayQueue::<usize>::new(3);
- let v = (0..COUNT).map(|_| AtomicUsize::new(0)).collect::<Vec<_>>();
-
- scope(|scope| {
- for _ in 0..THREADS {
- scope.spawn(|_| loop {
- match t.load(Ordering::SeqCst) {
- 0 if q.is_empty() => break,
-
- _ => {
- while let Some(n) = q.pop() {
- v[n].fetch_add(1, Ordering::SeqCst);
- }
- }
- }
- });
- }
-
- for _ in 0..THREADS {
- scope.spawn(|_| {
- for i in 0..COUNT {
- if let Some(n) = q.force_push(i) {
- v[n].fetch_add(1, Ordering::SeqCst);
- }
- }
-
- t.fetch_sub(1, Ordering::SeqCst);
- });
- }
- })
- .unwrap();
-
- for c in v {
- assert_eq!(c.load(Ordering::SeqCst), THREADS);
- }
-}
-
-#[cfg_attr(miri, ignore)] // Miri is too slow
-#[test]
-fn drops() {
- const RUNS: usize = 100;
-
- static DROPS: AtomicUsize = AtomicUsize::new(0);
-
- #[derive(Debug, PartialEq)]
- struct DropCounter;
-
- impl Drop for DropCounter {
- fn drop(&mut self) {
- DROPS.fetch_add(1, Ordering::SeqCst);
- }
- }
-
- let mut rng = thread_rng();
-
- for _ in 0..RUNS {
- let steps = rng.gen_range(0..10_000);
- let additional = rng.gen_range(0..50);
-
- DROPS.store(0, Ordering::SeqCst);
- let q = ArrayQueue::new(50);
-
- scope(|scope| {
- scope.spawn(|_| {
- for _ in 0..steps {
- while q.pop().is_none() {}
- }
- });
-
- scope.spawn(|_| {
- for _ in 0..steps {
- while q.push(DropCounter).is_err() {
- DROPS.fetch_sub(1, Ordering::SeqCst);
- }
- }
- });
- })
- .unwrap();
-
- for _ in 0..additional {
- q.push(DropCounter).unwrap();
- }
-
- assert_eq!(DROPS.load(Ordering::SeqCst), steps);
- drop(q);
- assert_eq!(DROPS.load(Ordering::SeqCst), steps + additional);
- }
-}
-
-#[test]
-fn linearizable() {
- #[cfg(miri)]
- const COUNT: usize = 500;
- #[cfg(not(miri))]
- const COUNT: usize = 25_000;
- const THREADS: usize = 4;
-
- let q = ArrayQueue::new(THREADS);
-
- scope(|scope| {
- for _ in 0..THREADS / 2 {
- scope.spawn(|_| {
- for _ in 0..COUNT {
- while q.push(0).is_err() {}
- q.pop().unwrap();
- }
- });
-
- scope.spawn(|_| {
- for _ in 0..COUNT {
- if q.force_push(0).is_none() {
- q.pop().unwrap();
- }
- }
- });
- }
- })
- .unwrap();
-}
-
-#[test]
-fn into_iter() {
- let q = ArrayQueue::new(100);
- for i in 0..100 {
- q.push(i).unwrap();
- }
- for (i, j) in q.into_iter().enumerate() {
- assert_eq!(i, j);
- }
-}
diff --git a/vendor/crossbeam-queue/tests/seg_queue.rs b/vendor/crossbeam-queue/tests/seg_queue.rs
deleted file mode 100644
index f1304ed4a..000000000
--- a/vendor/crossbeam-queue/tests/seg_queue.rs
+++ /dev/null
@@ -1,190 +0,0 @@
-use std::sync::atomic::{AtomicUsize, Ordering};
-
-use crossbeam_queue::SegQueue;
-use crossbeam_utils::thread::scope;
-use rand::{thread_rng, Rng};
-
-#[test]
-fn smoke() {
- let q = SegQueue::new();
- q.push(7);
- assert_eq!(q.pop(), Some(7));
-
- q.push(8);
- assert_eq!(q.pop(), Some(8));
- assert!(q.pop().is_none());
-}
-
-#[test]
-fn len_empty_full() {
- let q = SegQueue::new();
-
- assert_eq!(q.len(), 0);
- assert!(q.is_empty());
-
- q.push(());
-
- assert_eq!(q.len(), 1);
- assert!(!q.is_empty());
-
- q.pop().unwrap();
-
- assert_eq!(q.len(), 0);
- assert!(q.is_empty());
-}
-
-#[test]
-fn len() {
- let q = SegQueue::new();
-
- assert_eq!(q.len(), 0);
-
- for i in 0..50 {
- q.push(i);
- assert_eq!(q.len(), i + 1);
- }
-
- for i in 0..50 {
- q.pop().unwrap();
- assert_eq!(q.len(), 50 - i - 1);
- }
-
- assert_eq!(q.len(), 0);
-}
-
-#[cfg_attr(miri, ignore)] // Miri is too slow
-#[test]
-fn spsc() {
- const COUNT: usize = 100_000;
-
- let q = SegQueue::new();
-
- scope(|scope| {
- scope.spawn(|_| {
- for i in 0..COUNT {
- loop {
- if let Some(x) = q.pop() {
- assert_eq!(x, i);
- break;
- }
- }
- }
- assert!(q.pop().is_none());
- });
- scope.spawn(|_| {
- for i in 0..COUNT {
- q.push(i);
- }
- });
- })
- .unwrap();
-}
-
-#[cfg_attr(miri, ignore)] // Miri is too slow
-#[test]
-fn mpmc() {
- const COUNT: usize = 25_000;
- const THREADS: usize = 4;
-
- let q = SegQueue::<usize>::new();
- let v = (0..COUNT).map(|_| AtomicUsize::new(0)).collect::<Vec<_>>();
-
- scope(|scope| {
- for _ in 0..THREADS {
- scope.spawn(|_| {
- for _ in 0..COUNT {
- let n = loop {
- if let Some(x) = q.pop() {
- break x;
- }
- };
- v[n].fetch_add(1, Ordering::SeqCst);
- }
- });
- }
- for _ in 0..THREADS {
- scope.spawn(|_| {
- for i in 0..COUNT {
- q.push(i);
- }
- });
- }
- })
- .unwrap();
-
- for c in v {
- assert_eq!(c.load(Ordering::SeqCst), THREADS);
- }
-}
-
-#[cfg_attr(miri, ignore)] // Miri is too slow
-#[test]
-fn drops() {
- const RUNS: usize = 100;
-
- static DROPS: AtomicUsize = AtomicUsize::new(0);
-
- #[derive(Debug, PartialEq)]
- struct DropCounter;
-
- impl Drop for DropCounter {
- fn drop(&mut self) {
- DROPS.fetch_add(1, Ordering::SeqCst);
- }
- }
-
- let mut rng = thread_rng();
-
- for _ in 0..RUNS {
- let steps = rng.gen_range(0..10_000);
- let additional = rng.gen_range(0..1000);
-
- DROPS.store(0, Ordering::SeqCst);
- let q = SegQueue::new();
-
- scope(|scope| {
- scope.spawn(|_| {
- for _ in 0..steps {
- while q.pop().is_none() {}
- }
- });
-
- scope.spawn(|_| {
- for _ in 0..steps {
- q.push(DropCounter);
- }
- });
- })
- .unwrap();
-
- for _ in 0..additional {
- q.push(DropCounter);
- }
-
- assert_eq!(DROPS.load(Ordering::SeqCst), steps);
- drop(q);
- assert_eq!(DROPS.load(Ordering::SeqCst), steps + additional);
- }
-}
-
-#[test]
-fn into_iter() {
- let q = SegQueue::new();
- for i in 0..100 {
- q.push(i);
- }
- for (i, j) in q.into_iter().enumerate() {
- assert_eq!(i, j);
- }
-}
-
-#[test]
-fn into_iter_drop() {
- let q = SegQueue::new();
- for i in 0..100 {
- q.push(i);
- }
- for (i, j) in q.into_iter().enumerate().take(50) {
- assert_eq!(i, j);
- }
-}
diff --git a/vendor/crossbeam-utils/.cargo-checksum.json b/vendor/crossbeam-utils/.cargo-checksum.json
index f78acc358..9c73bbda3 100644
--- a/vendor/crossbeam-utils/.cargo-checksum.json
+++ b/vendor/crossbeam-utils/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"c2cdac68fbf3795e9c3cb0bbeace5f87736d0745fefbd3db9c07f568dc70d1d1","Cargo.toml":"fc5b0f0f821aa944d4341dc97e7c3b4d4bf658483ba359b5bf2e53d8ad945ac9","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"dfa9fbed47c344c134a63c84b7c0e4651baeac1554b7b3266d0e38643743fc33","benches/atomic_cell.rs":"c927eb3cd1e5ecc4b91adbc3bde98af15ffab4086190792ba64d5cde0e24df3d","build.rs":"7e74dc72343ff57e83d0a84a9fbdd9ff1645894165909999b4c3d2fba94bc96c","no_atomic.rs":"916ed15218bb7b75a4e0d432430e7134efd27ca43ca8a8766e0c90e89febb602","src/atomic/atomic_cell.rs":"f1b407b62b981de47968236eabb932384722c4dd7b7f08f52c59943aefd0b113","src/atomic/consume.rs":"7a7736fcd64f6473dfea7653559ffc5e1a2a234df43835f8aa8734862145ac15","src/atomic/mod.rs":"94193895fa03cece415e8d7be700b73a9a8a7015774ca821253438607f9b0736","src/atomic/seq_lock.rs":"27182e6b87a9db73c5f6831759f8625f9fcdec3c2828204c444aef04f427735a","src/atomic/seq_lock_wide.rs":"9888dd03116bb89ca36d4ab8d5a0b5032107a2983a7eb8024454263b09080088","src/backoff.rs":"7cc7754e15f69b52e92a70d4f49d1bc274693455a0933a2d7eb0605806566af3","src/cache_padded.rs":"6a512698115ad0d5a5b163dbd7a83247e1f1c146c4a30f3fc74b952e3b767b59","src/lib.rs":"6f1bcf157abe06ad8458a53e865bf8efab9fad4a9424790147cee8fefb3795d8","src/sync/mod.rs":"59986f559a8f170a4b3247ab2eea2460b09809d87c8110ed88e4e7103d3519dc","src/sync/parker.rs":"3f997f5b41fec286ccedcf3d36f801d741387badb574820b8e3456117ecd9154","src/sync/sharded_lock.rs":"78433f55ee3defeea348d65abc78e03d63d6a304e09c568b27b403e9ad205771","src/sync/wait_group.rs":"32e946a7581c55f8aa9904527b92b177c538fa0cf7cbcfa1d1f25990582cb6ea","src/thread.rs":"21cf9b3e965529e5c0a6ff8fc1ec846bfe0006c41deb238a149be8d07384e955","tests/atomic_cell.rs":"bf8bc869c922a1cbf929c3b741bae0cae98f2157f572b5a4eb2873d20a407c22","tests/cache_padded.rs":"1bfaff8354c8184e1ee1f902881ca9400b60effb273b0d3f752801a483d2b66d","tests/parker.rs":"6def4721287d9d70b1cfd63ebb34e1c83fbb3376edbad2bc8aac6ef69dd99d20","tests/sharded_lock.rs":"314adeb8a651a28935f7a49c9a261b8fa1fd82bf6a16c865a5aced6216d7e40b","tests/thread.rs":"9a7d7d3028c552fd834c68598b04a1cc252a816bc20ab62cec060d6cd09cab10","tests/wait_group.rs":"ad8f0cdfed31f9594a2e0737234d418f8b924d784a4db8d7e469deab8c95f5f8"},"package":"7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"65d3e11edf9498bdbc930c8c3878b7d3a90c1a0b1698597dc4a396a547fa0948","Cargo.toml":"1e4259a5a47271e8ae040b91e17652b5a4e0e7e45c3f22de5008db276f3a50bf","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"2a19af38a52dd965c2d66bb39f90a85b430b51ee9ccb29e9e1978ee7091e5087","benches/atomic_cell.rs":"c927eb3cd1e5ecc4b91adbc3bde98af15ffab4086190792ba64d5cde0e24df3d","build.rs":"4859f9c926c230023e861bf01c4b225b460035faf8cf6240108530efedbb747f","no_atomic.rs":"f58085b9d0666ccf62e0ae17fb5dae937c0a86fcc55dc0ae04ad8659e696a49c","src/atomic/atomic_cell.rs":"0fc99463e633144c5d59d39c35b5477da1f1b90f5448cadc37454b7f4b97707e","src/atomic/consume.rs":"7a7736fcd64f6473dfea7653559ffc5e1a2a234df43835f8aa8734862145ac15","src/atomic/mod.rs":"94193895fa03cece415e8d7be700b73a9a8a7015774ca821253438607f9b0736","src/atomic/seq_lock.rs":"27182e6b87a9db73c5f6831759f8625f9fcdec3c2828204c444aef04f427735a","src/atomic/seq_lock_wide.rs":"9888dd03116bb89ca36d4ab8d5a0b5032107a2983a7eb8024454263b09080088","src/backoff.rs":"8fd5e3dcccc05860680e49c8498de8096bee9140bcfee8723d97117106a020d0","src/cache_padded.rs":"8bb8925e2df44224ffa29f31a2f9c08d88d8bd3df6c1ce47003598225055fdb5","src/lib.rs":"6f1bcf157abe06ad8458a53e865bf8efab9fad4a9424790147cee8fefb3795d8","src/sync/mod.rs":"eca73c04f821859b8434d2b93db87d160dc6a3f65498ca201cd40d732ca4c134","src/sync/once_lock.rs":"c03dc9c05a817e087dccf8b682f7307501542805533551da3c2bab442bc40743","src/sync/parker.rs":"91f3a7d4ee8d9e06b6558d180e8a0df08ff5c6cef612b4ce4790f9f75cb34f84","src/sync/sharded_lock.rs":"6391b3b99b194b8e0888446c2dec340e4fb095753bcf0c1a80bc654f9c8be0e3","src/sync/wait_group.rs":"3e339aab014f50e214fea535c841755113ea058153378ed54e50a4acb403c937","src/thread.rs":"21cf9b3e965529e5c0a6ff8fc1ec846bfe0006c41deb238a149be8d07384e955","tests/atomic_cell.rs":"bf8bc869c922a1cbf929c3b741bae0cae98f2157f572b5a4eb2873d20a407c22","tests/cache_padded.rs":"1bfaff8354c8184e1ee1f902881ca9400b60effb273b0d3f752801a483d2b66d","tests/parker.rs":"6def4721287d9d70b1cfd63ebb34e1c83fbb3376edbad2bc8aac6ef69dd99d20","tests/sharded_lock.rs":"314adeb8a651a28935f7a49c9a261b8fa1fd82bf6a16c865a5aced6216d7e40b","tests/thread.rs":"9a7d7d3028c552fd834c68598b04a1cc252a816bc20ab62cec060d6cd09cab10","tests/wait_group.rs":"02661c2a820a5abe8b0c8fe15a6650aead707b57cdda0610d1b09a2680ed6969"},"package":"edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac"} \ No newline at end of file
diff --git a/vendor/crossbeam-utils/CHANGELOG.md b/vendor/crossbeam-utils/CHANGELOG.md
index 8decb6cbd..3a93e4659 100644
--- a/vendor/crossbeam-utils/CHANGELOG.md
+++ b/vendor/crossbeam-utils/CHANGELOG.md
@@ -1,3 +1,12 @@
+# Version 0.8.12
+
+- Removes the dependency on the `once_cell` crate to restore the MSRV. (#913)
+- Work around [rust-lang#98302](https://github.com/rust-lang/rust/issues/98302), which causes compile error on windows-gnu when LTO is enabled. (#913)
+
+# Version 0.8.11
+
+- Bump the minimum supported Rust version to 1.38. (#877)
+
# Version 0.8.10
- Fix unsoundness of `AtomicCell` on types containing niches. (#834)
diff --git a/vendor/crossbeam-utils/Cargo.toml b/vendor/crossbeam-utils/Cargo.toml
index fa958df28..5cb2b0a84 100644
--- a/vendor/crossbeam-utils/Cargo.toml
+++ b/vendor/crossbeam-utils/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2018"
-rust-version = "1.36"
+rust-version = "1.38"
name = "crossbeam-utils"
-version = "0.8.10"
+version = "0.8.12"
description = "Utilities for concurrent programming"
homepage = "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils"
readme = "README.md"
@@ -35,10 +35,6 @@ repository = "https://github.com/crossbeam-rs/crossbeam"
[dependencies.cfg-if]
version = "1"
-[dependencies.once_cell]
-version = "1"
-optional = true
-
[dev-dependencies.rand]
version = "0.8"
@@ -48,7 +44,7 @@ version = "1"
[features]
default = ["std"]
nightly = []
-std = ["once_cell"]
+std = []
[target."cfg(crossbeam_loom)".dependencies.loom]
version = "0.5"
diff --git a/vendor/crossbeam-utils/README.md b/vendor/crossbeam-utils/README.md
index 6e9a8e49a..c06ea601a 100644
--- a/vendor/crossbeam-utils/README.md
+++ b/vendor/crossbeam-utils/README.md
@@ -8,7 +8,7 @@ https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils#license)
https://crates.io/crates/crossbeam-utils)
[![Documentation](https://docs.rs/crossbeam-utils/badge.svg)](
https://docs.rs/crossbeam-utils)
-[![Rust 1.36+](https://img.shields.io/badge/rust-1.36+-lightgray.svg)](
+[![Rust 1.38+](https://img.shields.io/badge/rust-1.38+-lightgray.svg)](
https://www.rust-lang.org)
[![chat](https://img.shields.io/discord/569610676205781012.svg?logo=discord)](https://discord.com/invite/JXYwgWZ)
@@ -55,7 +55,7 @@ crossbeam-utils = "0.8"
Crossbeam Utils supports stable Rust releases going back at least six months,
and every time the minimum supported Rust version is increased, a new minor
-version is released. Currently, the minimum supported Rust version is 1.36.
+version is released. Currently, the minimum supported Rust version is 1.38.
## License
diff --git a/vendor/crossbeam-utils/build.rs b/vendor/crossbeam-utils/build.rs
index a7557fd59..dd6604792 100644
--- a/vendor/crossbeam-utils/build.rs
+++ b/vendor/crossbeam-utils/build.rs
@@ -41,10 +41,9 @@ fn main() {
}
};
- // Note that this is `no_*`, not `has_*`. This allows treating
- // `cfg(target_has_atomic = "ptr")` as true when the build script doesn't
- // run. This is needed for compatibility with non-cargo build systems that
- // don't run the build script.
+ // Note that this is `no_`*, not `has_*`. This allows treating as the latest
+ // stable rustc is used when the build script doesn't run. This is useful
+ // for non-cargo build systems that don't run the build script.
if NO_ATOMIC_CAS.contains(&&*target) {
println!("cargo:rustc-cfg=crossbeam_no_atomic_cas");
}
diff --git a/vendor/crossbeam-utils/no_atomic.rs b/vendor/crossbeam-utils/no_atomic.rs
index f740aaee1..675d9a27e 100644
--- a/vendor/crossbeam-utils/no_atomic.rs
+++ b/vendor/crossbeam-utils/no_atomic.rs
@@ -2,6 +2,8 @@
// It is not intended for manual editing.
const NO_ATOMIC_CAS: &[&str] = &[
+ "armv4t-none-eabi",
+ "armv5te-none-eabi",
"avr-unknown-gnu-atmega328",
"bpfeb-unknown-none",
"bpfel-unknown-none",
@@ -10,6 +12,7 @@ const NO_ATOMIC_CAS: &[&str] = &[
"riscv32im-unknown-none-elf",
"riscv32imc-unknown-none-elf",
"thumbv4t-none-eabi",
+ "thumbv5te-none-eabi",
"thumbv6m-none-eabi",
];
@@ -18,7 +21,9 @@ const NO_ATOMIC_64: &[&str] = &[
"arm-linux-androideabi",
"armebv7r-none-eabi",
"armebv7r-none-eabihf",
+ "armv4t-none-eabi",
"armv4t-unknown-linux-gnueabi",
+ "armv5te-none-eabi",
"armv5te-unknown-linux-gnueabi",
"armv5te-unknown-linux-musleabi",
"armv5te-unknown-linux-uclibceabi",
@@ -55,6 +60,7 @@ const NO_ATOMIC_64: &[&str] = &[
"riscv32imac-unknown-xous-elf",
"riscv32imc-unknown-none-elf",
"thumbv4t-none-eabi",
+ "thumbv5te-none-eabi",
"thumbv6m-none-eabi",
"thumbv7em-none-eabi",
"thumbv7em-none-eabihf",
diff --git a/vendor/crossbeam-utils/src/atomic/atomic_cell.rs b/vendor/crossbeam-utils/src/atomic/atomic_cell.rs
index 9fed45d4c..7941c5c87 100644
--- a/vendor/crossbeam-utils/src/atomic/atomic_cell.rs
+++ b/vendor/crossbeam-utils/src/atomic/atomic_cell.rs
@@ -180,7 +180,7 @@ impl<T> AtomicCell<T> {
/// ```
#[inline]
pub fn as_ptr(&self) -> *mut T {
- self.value.get() as *mut T
+ self.value.get().cast::<T>()
}
}
@@ -902,12 +902,7 @@ fn lock(addr: usize) -> &'static SeqLock {
const LEN: usize = 97;
#[allow(clippy::declare_interior_mutable_const)]
const L: SeqLock = SeqLock::new();
- static LOCKS: [SeqLock; LEN] = [
- L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,
- L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,
- L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L, L,
- L, L, L, L, L, L, L,
- ];
+ static LOCKS: [SeqLock; LEN] = [L; LEN];
// If the modulus is a constant number, the compiler will use crazy math to transform this into
// a sequence of cheap arithmetic operations rather than using the slow modulo instruction.
@@ -973,7 +968,7 @@ macro_rules! atomic {
/// Returns `true` if operations on `AtomicCell<T>` are lock-free.
const fn atomic_is_lock_free<T>() -> bool {
- // HACK(taiki-e): This is equivalent to `atomic! { T, _a, true, false }`, but can be used in const fn even in Rust 1.36.
+ // HACK(taiki-e): This is equivalent to `atomic! { T, _a, true, false }`, but can be used in const fn even in our MSRV (Rust 1.38).
let is_lock_free = can_transmute::<T, AtomicUnit>()
| can_transmute::<T, atomic::AtomicU8>()
| can_transmute::<T, atomic::AtomicU16>()
@@ -1009,10 +1004,11 @@ where
// discard the data when a data race is detected. The proper solution would be to
// do atomic reads and atomic writes, but we can't atomically read and write all
// kinds of data since `AtomicU8` is not available on stable Rust yet.
- let val = ptr::read_volatile(src);
+ // Load as `MaybeUninit` because we may load a value that is not valid as `T`.
+ let val = ptr::read_volatile(src.cast::<MaybeUninit<T>>());
if lock.validate_read(stamp) {
- return val;
+ return val.assume_init();
}
}
@@ -1072,6 +1068,7 @@ unsafe fn atomic_swap<T>(dst: *mut T, val: T) -> T {
///
/// This operation uses the `AcqRel` ordering. If possible, an atomic instructions is used, and a
/// global lock otherwise.
+#[allow(clippy::let_unit_value)]
unsafe fn atomic_compare_exchange_weak<T>(dst: *mut T, mut current: T, new: T) -> Result<T, T>
where
T: Copy + Eq,
diff --git a/vendor/crossbeam-utils/src/backoff.rs b/vendor/crossbeam-utils/src/backoff.rs
index 1012f06b2..9e256aaf2 100644
--- a/vendor/crossbeam-utils/src/backoff.rs
+++ b/vendor/crossbeam-utils/src/backoff.rs
@@ -201,6 +201,7 @@ impl Backoff {
/// assert_eq!(ready.load(SeqCst), false);
/// spin_wait(&ready);
/// assert_eq!(ready.load(SeqCst), true);
+ /// # std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371
/// ```
///
/// [`AtomicBool`]: std::sync::atomic::AtomicBool
@@ -269,6 +270,7 @@ impl Backoff {
/// assert_eq!(ready.load(SeqCst), false);
/// blocking_wait(&ready);
/// assert_eq!(ready.load(SeqCst), true);
+ /// # std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371
/// ```
///
/// [`AtomicBool`]: std::sync::atomic::AtomicBool
diff --git a/vendor/crossbeam-utils/src/cache_padded.rs b/vendor/crossbeam-utils/src/cache_padded.rs
index 822e831d1..b5d5d33c9 100644
--- a/vendor/crossbeam-utils/src/cache_padded.rs
+++ b/vendor/crossbeam-utils/src/cache_padded.rs
@@ -39,9 +39,9 @@ use core::ops::{Deref, DerefMut};
/// let addr1 = &*array[0] as *const i8 as usize;
/// let addr2 = &*array[1] as *const i8 as usize;
///
-/// assert!(addr2 - addr1 >= 64);
-/// assert_eq!(addr1 % 64, 0);
-/// assert_eq!(addr2 % 64, 0);
+/// assert!(addr2 - addr1 >= 32);
+/// assert_eq!(addr1 % 32, 0);
+/// assert_eq!(addr2 % 32, 0);
/// ```
///
/// When building a concurrent queue with a head and a tail index, it is wise to place them in
diff --git a/vendor/crossbeam-utils/src/sync/mod.rs b/vendor/crossbeam-utils/src/sync/mod.rs
index eeb740c2c..f9eec71fb 100644
--- a/vendor/crossbeam-utils/src/sync/mod.rs
+++ b/vendor/crossbeam-utils/src/sync/mod.rs
@@ -4,6 +4,8 @@
//! * [`ShardedLock`], a sharded reader-writer lock with fast concurrent reads.
//! * [`WaitGroup`], for synchronizing the beginning or end of some computation.
+#[cfg(not(crossbeam_loom))]
+mod once_lock;
mod parker;
#[cfg(not(crossbeam_loom))]
mod sharded_lock;
diff --git a/vendor/crossbeam-utils/src/sync/once_lock.rs b/vendor/crossbeam-utils/src/sync/once_lock.rs
new file mode 100644
index 000000000..c1fefc96c
--- /dev/null
+++ b/vendor/crossbeam-utils/src/sync/once_lock.rs
@@ -0,0 +1,103 @@
+// Based on unstable std::sync::OnceLock.
+//
+// Source: https://github.com/rust-lang/rust/blob/8e9c93df464b7ada3fc7a1c8ccddd9dcb24ee0a0/library/std/src/sync/once_lock.rs
+
+use core::cell::UnsafeCell;
+use core::mem::MaybeUninit;
+use core::sync::atomic::{AtomicBool, Ordering};
+use std::sync::Once;
+
+pub(crate) struct OnceLock<T> {
+ once: Once,
+ // Once::is_completed requires Rust 1.43, so use this to track of whether they have been initialized.
+ is_initialized: AtomicBool,
+ value: UnsafeCell<MaybeUninit<T>>,
+ // Unlike std::sync::OnceLock, we don't need PhantomData here because
+ // we don't use #[may_dangle].
+}
+
+unsafe impl<T: Sync + Send> Sync for OnceLock<T> {}
+unsafe impl<T: Send> Send for OnceLock<T> {}
+
+impl<T> OnceLock<T> {
+ /// Creates a new empty cell.
+ #[must_use]
+ pub(crate) const fn new() -> Self {
+ Self {
+ once: Once::new(),
+ is_initialized: AtomicBool::new(false),
+ value: UnsafeCell::new(MaybeUninit::uninit()),
+ }
+ }
+
+ /// Gets the contents of the cell, initializing it with `f` if the cell
+ /// was empty.
+ ///
+ /// Many threads may call `get_or_init` concurrently with different
+ /// initializing functions, but it is guaranteed that only one function
+ /// will be executed.
+ ///
+ /// # Panics
+ ///
+ /// If `f` panics, the panic is propagated to the caller, and the cell
+ /// remains uninitialized.
+ ///
+ /// It is an error to reentrantly initialize the cell from `f`. The
+ /// exact outcome is unspecified. Current implementation deadlocks, but
+ /// this may be changed to a panic in the future.
+ pub(crate) fn get_or_init<F>(&self, f: F) -> &T
+ where
+ F: FnOnce() -> T,
+ {
+ // Fast path check
+ if self.is_initialized() {
+ // SAFETY: The inner value has been initialized
+ return unsafe { self.get_unchecked() };
+ }
+ self.initialize(f);
+
+ debug_assert!(self.is_initialized());
+
+ // SAFETY: The inner value has been initialized
+ unsafe { self.get_unchecked() }
+ }
+
+ #[inline]
+ fn is_initialized(&self) -> bool {
+ self.is_initialized.load(Ordering::Acquire)
+ }
+
+ #[cold]
+ fn initialize<F>(&self, f: F)
+ where
+ F: FnOnce() -> T,
+ {
+ let slot = self.value.get().cast::<T>();
+ let is_initialized = &self.is_initialized;
+
+ self.once.call_once(|| {
+ let value = f();
+ unsafe {
+ slot.write(value);
+ }
+ is_initialized.store(true, Ordering::Release);
+ });
+ }
+
+ /// # Safety
+ ///
+ /// The value must be initialized
+ unsafe fn get_unchecked(&self) -> &T {
+ debug_assert!(self.is_initialized());
+ &*self.value.get().cast::<T>()
+ }
+}
+
+impl<T> Drop for OnceLock<T> {
+ fn drop(&mut self) {
+ if self.is_initialized() {
+ // SAFETY: The inner value has been initialized
+ unsafe { self.value.get().cast::<T>().drop_in_place() };
+ }
+ }
+}
diff --git a/vendor/crossbeam-utils/src/sync/parker.rs b/vendor/crossbeam-utils/src/sync/parker.rs
index 531f5a5fc..e791c4485 100644
--- a/vendor/crossbeam-utils/src/sync/parker.rs
+++ b/vendor/crossbeam-utils/src/sync/parker.rs
@@ -44,6 +44,7 @@ use std::time::{Duration, Instant};
///
/// // Wakes up when `u.unpark()` provides the token.
/// p.park();
+/// # std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371
/// ```
///
/// [`park`]: Parker::park
@@ -241,6 +242,7 @@ impl Unparker {
///
/// // Wakes up when `u.unpark()` provides the token.
/// p.park();
+ /// # std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371
/// ```
///
/// [`park`]: Parker::park
@@ -262,7 +264,7 @@ impl Unparker {
/// # let _ = unsafe { Unparker::from_raw(raw) };
/// ```
pub fn into_raw(this: Unparker) -> *const () {
- Arc::into_raw(this.inner) as *const ()
+ Arc::into_raw(this.inner).cast::<()>()
}
/// Converts a raw pointer into an `Unparker`.
@@ -284,7 +286,7 @@ impl Unparker {
/// ```
pub unsafe fn from_raw(ptr: *const ()) -> Unparker {
Unparker {
- inner: Arc::from_raw(ptr as *const Inner),
+ inner: Arc::from_raw(ptr.cast::<Inner>()),
}
}
}
diff --git a/vendor/crossbeam-utils/src/sync/sharded_lock.rs b/vendor/crossbeam-utils/src/sync/sharded_lock.rs
index 692653447..b43c55ea4 100644
--- a/vendor/crossbeam-utils/src/sync/sharded_lock.rs
+++ b/vendor/crossbeam-utils/src/sync/sharded_lock.rs
@@ -9,8 +9,8 @@ use std::sync::{LockResult, PoisonError, TryLockError, TryLockResult};
use std::sync::{Mutex, RwLock, RwLockReadGuard, RwLockWriteGuard};
use std::thread::{self, ThreadId};
+use crate::sync::once_lock::OnceLock;
use crate::CachePadded;
-use once_cell::sync::Lazy;
/// The number of shards per sharded lock. Must be a power of two.
const NUM_SHARDS: usize = 8;
@@ -583,13 +583,17 @@ struct ThreadIndices {
next_index: usize,
}
-static THREAD_INDICES: Lazy<Mutex<ThreadIndices>> = Lazy::new(|| {
- Mutex::new(ThreadIndices {
- mapping: HashMap::new(),
- free_list: Vec::new(),
- next_index: 0,
- })
-});
+fn thread_indices() -> &'static Mutex<ThreadIndices> {
+ static THREAD_INDICES: OnceLock<Mutex<ThreadIndices>> = OnceLock::new();
+ fn init() -> Mutex<ThreadIndices> {
+ Mutex::new(ThreadIndices {
+ mapping: HashMap::new(),
+ free_list: Vec::new(),
+ next_index: 0,
+ })
+ }
+ THREAD_INDICES.get_or_init(init)
+}
/// A registration of a thread with an index.
///
@@ -601,7 +605,7 @@ struct Registration {
impl Drop for Registration {
fn drop(&mut self) {
- let mut indices = THREAD_INDICES.lock().unwrap();
+ let mut indices = thread_indices().lock().unwrap();
indices.mapping.remove(&self.thread_id);
indices.free_list.push(self.index);
}
@@ -610,7 +614,7 @@ impl Drop for Registration {
thread_local! {
static REGISTRATION: Registration = {
let thread_id = thread::current().id();
- let mut indices = THREAD_INDICES.lock().unwrap();
+ let mut indices = thread_indices().lock().unwrap();
let index = match indices.free_list.pop() {
Some(i) => i,
diff --git a/vendor/crossbeam-utils/src/sync/wait_group.rs b/vendor/crossbeam-utils/src/sync/wait_group.rs
index 4206ee42b..19d607415 100644
--- a/vendor/crossbeam-utils/src/sync/wait_group.rs
+++ b/vendor/crossbeam-utils/src/sync/wait_group.rs
@@ -1,6 +1,3 @@
-// Necessary for using `Mutex<usize>` for conditional variables
-#![allow(clippy::mutex_atomic)]
-
use crate::primitive::sync::{Arc, Condvar, Mutex};
use std::fmt;
@@ -42,6 +39,7 @@ use std::fmt;
///
/// // Block until all threads have finished their work.
/// wg.wait();
+/// # std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371
/// ```
///
/// [`Barrier`]: std::sync::Barrier
@@ -100,6 +98,7 @@ impl WaitGroup {
///
/// // Block until both threads have reached `wait()`.
/// wg.wait();
+ /// # std::thread::sleep(std::time::Duration::from_millis(500)); // wait for background threads closed: https://github.com/rust-lang/miri/issues/1371
/// ```
pub fn wait(self) {
if *self.inner.count.lock().unwrap() == 1 {
diff --git a/vendor/crossbeam-utils/tests/wait_group.rs b/vendor/crossbeam-utils/tests/wait_group.rs
index b6c2a2437..0ec4a729c 100644
--- a/vendor/crossbeam-utils/tests/wait_group.rs
+++ b/vendor/crossbeam-utils/tests/wait_group.rs
@@ -36,6 +36,7 @@ fn wait() {
}
#[test]
+#[cfg_attr(miri, ignore)] // this test makes timing assumptions, but Miri is so slow it violates them
fn wait_and_drop() {
let wg = WaitGroup::new();
let (tx, rx) = mpsc::channel();
@@ -51,8 +52,8 @@ fn wait_and_drop() {
});
}
- // At this point, all spawned threads should be sleeping, so we shouldn't get anything from the
- // channel.
+ // At this point, all spawned threads should be in `thread::sleep`, so we shouldn't get anything
+ // from the channel.
assert!(rx.try_recv().is_err());
wg.wait();
diff --git a/vendor/crossbeam/.cargo-checksum.json b/vendor/crossbeam/.cargo-checksum.json
deleted file mode 100644
index 0bd859983..000000000
--- a/vendor/crossbeam/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CHANGELOG.md":"e8dcdd4c84fced11ce3e9be9246dd511e9d09b0b36497c6e569ed0427b57424a","Cargo.toml":"a1452bb8649a66814e473799942aa624243bab0e5257a5b11ce994253b41ecb4","LICENSE-APACHE":"6f712474a3e3be1386d2d0c29449850ea788da64d35cff0fc8799acf741e9ecd","LICENSE-MIT":"5734ed989dfca1f625b40281ee9f4530f91b2411ec01cb748223e7eb87e201ab","README.md":"d1d81cf88e580608f27bf4d2bb7f6f2d01c2c1f1d26be86ec1daa7aa455e9f62","no_atomic.rs":"a2621c1b029c614fb0ab8e3f5cda2e839df88d90d26133181c1b901965f7eec4","src/lib.rs":"e896ef1e4326db5202cebdd57dd606f96113d5a8700e746bfe8909978ac84a7f","tests/subcrates.rs":"69cbe766a855ad6278cc969a61ba871eba3594afb5c2d3c647dff5b794e160ab"},"package":"4ae5588f6b3c3cb05239e90bd110f257254aecd01e4635400391aeae07497845"} \ No newline at end of file
diff --git a/vendor/crossbeam/CHANGELOG.md b/vendor/crossbeam/CHANGELOG.md
deleted file mode 100644
index f756fbb73..000000000
--- a/vendor/crossbeam/CHANGELOG.md
+++ /dev/null
@@ -1,93 +0,0 @@
-# Version 0.8.1
-
-- Support targets that do not have atomic CAS on stable Rust (#698)
-
-# Version 0.8.0
-
-- Bump the minimum supported Rust version to 1.36.
-- Bump `crossbeam-channel` to `0.5`.
-- Bump `crossbeam-deque` to `0.8`.
-- Bump `crossbeam-epoch` to `0.9`.
-- Bump `crossbeam-queue` to `0.3`.
-- Bump `crossbeam-utils` to `0.8`.
-
-# Version 0.7.3
-
-- Fix breakage with nightly feature due to rust-lang/rust#65214.
-- Bump `crossbeam-channel` to `0.4`.
-- Bump `crossbeam-epoch` to `0.8`.
-- Bump `crossbeam-queue` to `0.2`.
-- Bump `crossbeam-utils` to `0.7`.
-
-# Version 0.7.2
-
-- Bump `crossbeam-channel` to `0.3.9`.
-- Bump `crossbeam-epoch` to `0.7.2`.
-- Bump `crossbeam-utils` to `0.6.6`.
-
-# Version 0.7.1
-
-- Bump `crossbeam-utils` to `0.6.5`.
-
-# Version 0.7.0
-
-- Remove `ArcCell`, `MsQueue`, and `TreiberStack`.
-- Change the interface of `ShardedLock` to match `RwLock`.
-- Add `SegQueue::len()`.
-- Rename `SegQueue::try_pop()` to `SegQueue::pop()`.
-- Change the return type of `SegQueue::pop()` to `Result`.
-- Introduce `ArrayQueue`.
-- Update dependencies.
-
-# Version 0.6.0
-
-- Update dependencies.
-
-# Version 0.5.0
-
-- Update `crossbeam-channel` to 0.3.
-- Update `crossbeam-utils` to 0.6.
-- Add `AtomicCell`, `SharedLock`, and `WaitGroup`.
-
-# Version 0.4.1
-
-- Fix a double-free bug in `MsQueue` and `SegQueue`.
-
-# Version 0.4
-
-- Switch to the new implementation of epoch-based reclamation in
- [`crossbeam-epoch`](https://github.com/crossbeam-rs/crossbeam-epoch), fixing numerous bugs in the
- old implementation. Its API is changed in a backward-incompatible way.
-- Switch to the new implementation of `CachePadded` and scoped thread in
- [`crossbeam-utils`](https://github.com/crossbeam-rs/crossbeam-utils). The scoped thread API is
- changed in a backward-incompatible way.
-- Switch to the new implementation of Chase-Lev deque in
- [`crossbeam-deque`](https://github.com/crossbeam-rs/crossbeam-deque). Its API is changed in a
- backward-incompatible way.
-- Export channel implemented in
- [`crossbeam-channel`](https://github.com/crossbeam-rs/crossbeam-channel).
-- Remove `AtomicOption`.
-- Implement `Default` and `From` traits.
-
-# Version 0.3
-
-- Introduced `ScopedThreadBuilder` with the ability to name threads and set stack size
-- `Worker` methods in the Chase-Lev deque don't require mutable access anymore
-- Fixed a bug when unblocking `pop()` in `MsQueue`
-- Implemented `Drop` for `MsQueue`, `SegQueue`, and `TreiberStack`
-- Implemented `Default` for `TreiberStack`
-- Added `is_empty` to `SegQueue`
-- Renamed `mem::epoch` to `epoch`
-- Other bug fixes
-
-# Version 0.2
-
-- Changed existing non-blocking `pop` methods to `try_pop`
-- Added blocking `pop` support to Michael-Scott queue
-- Added Chase-Lev work-stealing deque
-
-# Version 0.1
-
-- Added [epoch-based memory management](http://aturon.github.io/blog/2015/08/27/epoch/)
-- Added Michael-Scott queue
-- Added Segmented array queue
diff --git a/vendor/crossbeam/Cargo.toml b/vendor/crossbeam/Cargo.toml
deleted file mode 100644
index 71710f835..000000000
--- a/vendor/crossbeam/Cargo.toml
+++ /dev/null
@@ -1,59 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-edition = "2018"
-name = "crossbeam"
-version = "0.8.1"
-authors = ["The Crossbeam Project Developers"]
-exclude = ["/.github", "/ci"]
-description = "Tools for concurrent programming"
-homepage = "https://github.com/crossbeam-rs/crossbeam"
-documentation = "https://docs.rs/crossbeam"
-keywords = ["atomic", "garbage", "non-blocking", "lock-free", "rcu"]
-categories = ["concurrency", "memory-management", "data-structures", "no-std"]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/crossbeam-rs/crossbeam"
-[dependencies.cfg-if]
-version = "1"
-
-[dependencies.crossbeam-channel]
-version = "0.5"
-optional = true
-default-features = false
-
-[dependencies.crossbeam-deque]
-version = "0.8"
-optional = true
-default-features = false
-
-[dependencies.crossbeam-epoch]
-version = "0.9.5"
-optional = true
-default-features = false
-
-[dependencies.crossbeam-queue]
-version = "0.3.2"
-optional = true
-default-features = false
-
-[dependencies.crossbeam-utils]
-version = "0.8.5"
-default-features = false
-[dev-dependencies.rand]
-version = "0.8"
-
-[features]
-alloc = ["crossbeam-epoch/alloc", "crossbeam-queue/alloc"]
-default = ["std"]
-nightly = ["crossbeam-epoch/nightly", "crossbeam-utils/nightly", "crossbeam-queue/nightly"]
-std = ["alloc", "crossbeam-channel/std", "crossbeam-deque/std", "crossbeam-epoch/std", "crossbeam-queue/std", "crossbeam-utils/std"]
diff --git a/vendor/crossbeam/LICENSE-APACHE b/vendor/crossbeam/LICENSE-APACHE
deleted file mode 100644
index bb9abdd7f..000000000
--- a/vendor/crossbeam/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright 2019 The Crossbeam Project Developers
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/vendor/crossbeam/README.md b/vendor/crossbeam/README.md
deleted file mode 100644
index 1ed435c0a..000000000
--- a/vendor/crossbeam/README.md
+++ /dev/null
@@ -1,158 +0,0 @@
-# Crossbeam
-
-[![Build Status](https://github.com/crossbeam-rs/crossbeam/workflows/CI/badge.svg)](
-https://github.com/crossbeam-rs/crossbeam/actions)
-[![License](https://img.shields.io/badge/license-MIT_OR_Apache--2.0-blue.svg)](
-https://github.com/crossbeam-rs/crossbeam#license)
-[![Cargo](https://img.shields.io/crates/v/crossbeam.svg)](
-https://crates.io/crates/crossbeam)
-[![Documentation](https://docs.rs/crossbeam/badge.svg)](
-https://docs.rs/crossbeam)
-[![Rust 1.36+](https://img.shields.io/badge/rust-1.36+-lightgray.svg)](
-https://www.rust-lang.org)
-[![chat](https://img.shields.io/discord/569610676205781012.svg?logo=discord)](https://discord.com/invite/JXYwgWZ)
-
-This crate provides a set of tools for concurrent programming:
-
-#### Atomics
-
-* [`AtomicCell`], a thread-safe mutable memory location.<sup>(no_std)</sup>
-* [`AtomicConsume`], for reading from primitive atomic types with "consume" ordering.<sup>(no_std)</sup>
-
-#### Data structures
-
-* [`deque`], work-stealing deques for building task schedulers.
-* [`ArrayQueue`], a bounded MPMC queue that allocates a fixed-capacity buffer on construction.<sup>(alloc)</sup>
-* [`SegQueue`], an unbounded MPMC queue that allocates small buffers, segments, on demand.<sup>(alloc)</sup>
-
-#### Memory management
-
-* [`epoch`], an epoch-based garbage collector.<sup>(alloc)</sup>
-
-#### Thread synchronization
-
-* [`channel`], multi-producer multi-consumer channels for message passing.
-* [`Parker`], a thread parking primitive.
-* [`ShardedLock`], a sharded reader-writer lock with fast concurrent reads.
-* [`WaitGroup`], for synchronizing the beginning or end of some computation.
-
-#### Utilities
-
-* [`Backoff`], for exponential backoff in spin loops.<sup>(no_std)</sup>
-* [`CachePadded`], for padding and aligning a value to the length of a cache line.<sup>(no_std)</sup>
-* [`scope`], for spawning threads that borrow local variables from the stack.
-
-*Features marked with <sup>(no_std)</sup> can be used in `no_std` environments.*<br/>
-*Features marked with <sup>(alloc)</sup> can be used in `no_std` environments, but only if `alloc`
-feature is enabled.*
-
-[`AtomicCell`]: https://docs.rs/crossbeam/*/crossbeam/atomic/struct.AtomicCell.html
-[`AtomicConsume`]: https://docs.rs/crossbeam/*/crossbeam/atomic/trait.AtomicConsume.html
-[`deque`]: https://docs.rs/crossbeam/*/crossbeam/deque/index.html
-[`ArrayQueue`]: https://docs.rs/crossbeam/*/crossbeam/queue/struct.ArrayQueue.html
-[`SegQueue`]: https://docs.rs/crossbeam/*/crossbeam/queue/struct.SegQueue.html
-[`channel`]: https://docs.rs/crossbeam/*/crossbeam/channel/index.html
-[`Parker`]: https://docs.rs/crossbeam/*/crossbeam/sync/struct.Parker.html
-[`ShardedLock`]: https://docs.rs/crossbeam/*/crossbeam/sync/struct.ShardedLock.html
-[`WaitGroup`]: https://docs.rs/crossbeam/*/crossbeam/sync/struct.WaitGroup.html
-[`epoch`]: https://docs.rs/crossbeam/*/crossbeam/epoch/index.html
-[`Backoff`]: https://docs.rs/crossbeam/*/crossbeam/utils/struct.Backoff.html
-[`CachePadded`]: https://docs.rs/crossbeam/*/crossbeam/utils/struct.CachePadded.html
-[`scope`]: https://docs.rs/crossbeam/*/crossbeam/fn.scope.html
-
-## Crates
-
-The main `crossbeam` crate just [re-exports](src/lib.rs) tools from
-smaller subcrates:
-
-* [`crossbeam-channel`](crossbeam-channel)
- provides multi-producer multi-consumer channels for message passing.
-* [`crossbeam-deque`](crossbeam-deque)
- provides work-stealing deques, which are primarily intended for building task schedulers.
-* [`crossbeam-epoch`](crossbeam-epoch)
- provides epoch-based garbage collection for building concurrent data structures.
-* [`crossbeam-queue`](crossbeam-queue)
- provides concurrent queues that can be shared among threads.
-* [`crossbeam-utils`](crossbeam-utils)
- provides atomics, synchronization primitives, scoped threads, and other utilities.
-
-There is one more experimental subcrate that is not yet included in `crossbeam`:
-
-* [`crossbeam-skiplist`](crossbeam-skiplist)
- provides concurrent maps and sets based on lock-free skip lists.
-
-## Usage
-
-Add this to your `Cargo.toml`:
-
-```toml
-[dependencies]
-crossbeam = "0.8"
-```
-
-## Compatibility
-
-Crossbeam supports stable Rust releases going back at least six months,
-and every time the minimum supported Rust version is increased, a new minor
-version is released. Currently, the minimum supported Rust version is 1.36.
-
-## Contributing
-
-Crossbeam welcomes contribution from everyone in the form of suggestions, bug reports,
-pull requests, and feedback. 💛
-
-If you need ideas for contribution, there are several ways to get started:
-
-* Found a bug or have a feature request?
- [Submit an issue](https://github.com/crossbeam-rs/crossbeam/issues/new)!
-* Issues and PRs labeled with
- [feedback wanted](https://github.com/crossbeam-rs/crossbeam/issues?utf8=%E2%9C%93&q=is%3Aopen+sort%3Aupdated-desc+label%3A%22feedback+wanted%22+)
- need feedback from users and contributors.
-* Issues labeled with
- [good first issue](https://github.com/crossbeam-rs/crossbeam/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc+label%3A%22good+first+issue%22)
- are relatively easy starter issues.
-
-#### RFCs
-
-We also have the [RFCs](https://github.com/crossbeam-rs/rfcs) repository for more
-high-level discussion, which is the place where we brainstorm ideas and propose
-substantial changes to Crossbeam.
-
-You are welcome to participate in any open
-[issues](https://github.com/crossbeam-rs/rfcs/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc)
-or
-[pull requests](https://github.com/crossbeam-rs/rfcs/pulls?q=is%3Apr+is%3Aopen+sort%3Aupdated-desc).
-
-#### Learning resources
-
-If you'd like to learn more about concurrency and non-blocking data structures, there's a
-list of learning resources in our [wiki](https://github.com/crossbeam-rs/rfcs/wiki),
-which includes relevant blog posts, papers, videos, and other similar projects.
-
-Another good place to visit is [merged RFCs](https://github.com/crossbeam-rs/rfcs/tree/master/text).
-They contain elaborate descriptions and rationale for features we've introduced to
-Crossbeam, but keep in mind that some of the written information is now out of date.
-
-#### Conduct
-
-The Crossbeam project adheres to the
-[Rust Code of Conduct](https://github.com/rust-lang/rust/blob/master/CODE_OF_CONDUCT.md).
-This describes the minimum behavior expected from all contributors.
-
-## License
-
-Licensed under either of
-
- * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
- * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
-
-at your option.
-
-Some Crossbeam subcrates have additional licensing notices.
-Take a look at other readme files in this repository for more information.
-
-#### Contribution
-
-Unless you explicitly state otherwise, any contribution intentionally submitted
-for inclusion in the work by you, as defined in the Apache-2.0 license, shall be
-dual licensed as above, without any additional terms or conditions.
diff --git a/vendor/crossbeam/no_atomic.rs b/vendor/crossbeam/no_atomic.rs
deleted file mode 100644
index 522b3b8ac..000000000
--- a/vendor/crossbeam/no_atomic.rs
+++ /dev/null
@@ -1,59 +0,0 @@
-// This file is @generated by no_atomic.sh.
-// It is not intended for manual editing.
-
-const NO_ATOMIC_CAS: &[&str] = &[
- "avr-unknown-gnu-atmega328",
- "msp430-none-elf",
- "riscv32i-unknown-none-elf",
- "riscv32imc-unknown-none-elf",
- "thumbv4t-none-eabi",
- "thumbv6m-none-eabi",
-];
-#[allow(dead_code)]
-const NO_ATOMIC_64: &[&str] = &[
- "arm-linux-androideabi",
- "armebv7r-none-eabi",
- "armebv7r-none-eabihf",
- "armv4t-unknown-linux-gnueabi",
- "armv5te-unknown-linux-gnueabi",
- "armv5te-unknown-linux-musleabi",
- "armv5te-unknown-linux-uclibceabi",
- "armv7r-none-eabi",
- "armv7r-none-eabihf",
- "hexagon-unknown-linux-musl",
- "mips-unknown-linux-gnu",
- "mips-unknown-linux-musl",
- "mips-unknown-linux-uclibc",
- "mipsel-unknown-linux-gnu",
- "mipsel-unknown-linux-musl",
- "mipsel-unknown-linux-uclibc",
- "mipsel-unknown-none",
- "mipsisa32r6-unknown-linux-gnu",
- "mipsisa32r6el-unknown-linux-gnu",
- "powerpc-unknown-linux-gnu",
- "powerpc-unknown-linux-gnuspe",
- "powerpc-unknown-linux-musl",
- "powerpc-unknown-netbsd",
- "powerpc-unknown-openbsd",
- "powerpc-wrs-vxworks",
- "powerpc-wrs-vxworks-spe",
- "riscv32gc-unknown-linux-gnu",
- "riscv32gc-unknown-linux-musl",
- "riscv32imac-unknown-none-elf",
- "thumbv7em-none-eabi",
- "thumbv7em-none-eabihf",
- "thumbv7m-none-eabi",
- "thumbv8m.base-none-eabi",
- "thumbv8m.main-none-eabi",
- "thumbv8m.main-none-eabihf",
- "mipsel-sony-psp",
- "thumbv4t-none-eabi",
- "thumbv6m-none-eabi",
-];
-#[allow(dead_code)]
-const NO_ATOMIC: &[&str] = &[
- "avr-unknown-gnu-atmega328",
- "msp430-none-elf",
- "riscv32i-unknown-none-elf",
- "riscv32imc-unknown-none-elf",
-];
diff --git a/vendor/crossbeam/src/lib.rs b/vendor/crossbeam/src/lib.rs
deleted file mode 100644
index 9bc3ec111..000000000
--- a/vendor/crossbeam/src/lib.rs
+++ /dev/null
@@ -1,96 +0,0 @@
-//! Tools for concurrent programming.
-//!
-//! ## Atomics
-//!
-//! * [`AtomicCell`], a thread-safe mutable memory location.
-//! * [`AtomicConsume`], for reading from primitive atomic types with "consume" ordering.
-//!
-//! ## Data structures
-//!
-//! * [`deque`], work-stealing deques for building task schedulers.
-//! * [`ArrayQueue`], a bounded MPMC queue that allocates a fixed-capacity buffer on construction.
-//! * [`SegQueue`], an unbounded MPMC queue that allocates small buffers, segments, on demand.
-//!
-//! ## Memory management
-//!
-//! * [`epoch`], an epoch-based garbage collector.
-//!
-//! ## Thread synchronization
-//!
-//! * [`channel`], multi-producer multi-consumer channels for message passing.
-//! * [`Parker`], a thread parking primitive.
-//! * [`ShardedLock`], a sharded reader-writer lock with fast concurrent reads.
-//! * [`WaitGroup`], for synchronizing the beginning or end of some computation.
-//!
-//! ## Utilities
-//!
-//! * [`Backoff`], for exponential backoff in spin loops.
-//! * [`CachePadded`], for padding and aligning a value to the length of a cache line.
-//! * [`scope`], for spawning threads that borrow local variables from the stack.
-//!
-//! [`AtomicCell`]: atomic::AtomicCell
-//! [`AtomicConsume`]: atomic::AtomicConsume
-//! [`ArrayQueue`]: queue::ArrayQueue
-//! [`SegQueue`]: queue::SegQueue
-//! [`Parker`]: sync::Parker
-//! [`ShardedLock`]: sync::ShardedLock
-//! [`WaitGroup`]: sync::WaitGroup
-//! [`Backoff`]: utils::Backoff
-//! [`CachePadded`]: utils::CachePadded
-
-#![doc(test(
- no_crate_inject,
- attr(
- deny(warnings, rust_2018_idioms),
- allow(dead_code, unused_assignments, unused_variables)
- )
-))]
-#![warn(
- missing_docs,
- missing_debug_implementations,
- rust_2018_idioms,
- unreachable_pub
-)]
-#![cfg_attr(not(feature = "std"), no_std)]
-
-pub use crossbeam_utils::atomic;
-
-pub mod utils {
- //! Miscellaneous utilities.
- //!
- //! * [`Backoff`], for exponential backoff in spin loops.
- //! * [`CachePadded`], for padding and aligning a value to the length of a cache line.
-
- pub use crossbeam_utils::Backoff;
- pub use crossbeam_utils::CachePadded;
-}
-
-use cfg_if::cfg_if;
-
-cfg_if! {
- if #[cfg(feature = "alloc")] {
- #[doc(inline)]
- pub use crossbeam_epoch as epoch;
-
- #[doc(inline)]
- pub use crossbeam_queue as queue;
- }
-}
-
-cfg_if! {
- if #[cfg(feature = "std")] {
- #[doc(inline)]
- pub use crossbeam_deque as deque;
-
- #[doc(inline)]
- pub use crossbeam_channel as channel;
- pub use crossbeam_channel::select;
-
- pub use crossbeam_utils::sync;
-
- #[cfg(not(crossbeam_loom))]
- pub use crossbeam_utils::thread;
- #[cfg(not(crossbeam_loom))]
- pub use crossbeam_utils::thread::scope;
- }
-}
diff --git a/vendor/crossbeam/tests/subcrates.rs b/vendor/crossbeam/tests/subcrates.rs
deleted file mode 100644
index 21b99fb0e..000000000
--- a/vendor/crossbeam/tests/subcrates.rs
+++ /dev/null
@@ -1,47 +0,0 @@
-//! Makes sure subcrates are properly re-exported.
-
-use crossbeam::select;
-
-#[test]
-fn channel() {
- let (s, r) = crossbeam::channel::bounded(1);
-
- select! {
- send(s, 0) -> res => res.unwrap(),
- recv(r) -> res => assert!(res.is_ok()),
- }
-}
-
-#[test]
-fn deque() {
- let w = crossbeam::deque::Worker::new_fifo();
- w.push(1);
- let _ = w.pop();
-}
-
-#[test]
-fn epoch() {
- crossbeam::epoch::pin();
-}
-
-#[test]
-fn queue() {
- let a = crossbeam::queue::ArrayQueue::new(10);
- let _ = a.push(1);
- let _ = a.pop();
-}
-
-#[test]
-fn utils() {
- crossbeam::utils::CachePadded::new(7);
-
- crossbeam::scope(|scope| {
- scope.spawn(|_| ());
- })
- .unwrap();
-
- crossbeam::thread::scope(|scope| {
- scope.spawn(|_| ());
- })
- .unwrap();
-}
diff --git a/vendor/dashmap/.cargo-checksum.json b/vendor/dashmap/.cargo-checksum.json
index 7d0daa971..4197ac76b 100644
--- a/vendor/dashmap/.cargo-checksum.json
+++ b/vendor/dashmap/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"8f8a0060b2a6f95a4ba3f009e49a4f0a4c26ea5ba7fb02388ca5466d97c6ccfe","LICENSE":"16692e8cee4aa06e3913787497eba2d47c42002014136f5da67be6ee640e28a3","README.md":"e1114aed5dfbd2892f2d81881c46f8e17b9b4774344ad3feb55bd2c1a41384fd","rust-toolchain":"06dc4c395690e7d6ff8b92d8d265a8cf1c02cbca414e15352072e378fcb4171a","src/iter.rs":"dec9cc68374a0a176b5840e37da4e83d0493d7dca6f776dc926bf511c84e70db","src/iter_set.rs":"5327da951dc93d30b293aeb7a805666ee4b8e6364881348ab5d86b23c29a0e13","src/lib.rs":"ad0b2651810d4d286f11ce4effb800920eb4100ae6676f6141126e5488358007","src/lock.rs":"22b1013ee3cbd1598c26403552faf8e5b44fe98a8ff4c8812da15d57bdeee4b3","src/mapref/entry.rs":"ddcf788856330a4384ce987bb84ff36b494675b3b1f2460ae48376ac664491df","src/mapref/mod.rs":"15bd45cfc642a9e3e77bbfbf2d9fad9c5fac0ff6904214a3c501e262242ec8b0","src/mapref/multiple.rs":"17a87879229d78f75d71817d100aa0a210d764d6b66e4a05b17a3e092d17e306","src/mapref/one.rs":"ea46339e08c5033cf419c195e922e1ba6f606fc71c15ee31d1b3c38cfedfedcf","src/rayon/map.rs":"07315c9dd35437fd5e504a07fcbcd77f9ea19c892c32c1d60f27db5a6a26345b","src/rayon/set.rs":"21fe2ca8c58c8ff1bc753f5e2eb6131afd598211eea375f2ac7190cd0f9abcba","src/read_only.rs":"c846f8117800dbbb122bc0552021c5ac4ccfbf464bebe37f4b65e40b19baf260","src/serde.rs":"57bbf2b255de966cc9c54011429495cc5308a1f76906846b29e015f860b79559","src/set.rs":"80271aa0d8a32845afdef5a35f18e5cac6f0f5ab8d2a6b11b02cd123152c91d4","src/setref/mod.rs":"cc39e406a333dc6c04398f4b1336fb400e3a8360c387466d8a91f5d7f4ed40a7","src/setref/multiple.rs":"2270749e83f80dbb4761448f0629ecd02b0b4268f76834236d1167844e6d5e37","src/setref/one.rs":"69738583f2a160f3907e540277ccd88e0036406b3ead66b3d4015ddd938d6937","src/t.rs":"9b40ebfba22369813bf159ed60fa70e742ae72bfaec6aee91a716cba91cb8f0d","src/table.rs":"536a3b5775cbdbe436357c231e54e4e2ee4a5e1849872aa92335271b148845b4","src/try_result.rs":"81d1dd396f70b0aa2a6e1969851b706cbfdfb09c802ac9d33dcace882aa28dd1","src/util.rs":"7a8096a713cf04e60d6c9e38cd366314ed74472abab4bb8a3a9ed081a0e0301b"},"package":"3495912c9c1ccf2e18976439f4443f3fee0fd61f424ff99fde6a66b15ecb448f"} \ No newline at end of file
+{"files":{"Cargo.toml":"8181631e0224f428c3c213850ce536d9d27c82b46e3eadcd0137f78470086fc2","LICENSE":"16692e8cee4aa06e3913787497eba2d47c42002014136f5da67be6ee640e28a3","README.md":"e1114aed5dfbd2892f2d81881c46f8e17b9b4774344ad3feb55bd2c1a41384fd","rust-toolchain":"06dc4c395690e7d6ff8b92d8d265a8cf1c02cbca414e15352072e378fcb4171a","src/iter.rs":"dec9cc68374a0a176b5840e37da4e83d0493d7dca6f776dc926bf511c84e70db","src/iter_set.rs":"5327da951dc93d30b293aeb7a805666ee4b8e6364881348ab5d86b23c29a0e13","src/lib.rs":"24935d49696b2d05a83287c6a5f08d59bc206a535bfa0f8893bfeff3cfd14ea8","src/lock.rs":"22b1013ee3cbd1598c26403552faf8e5b44fe98a8ff4c8812da15d57bdeee4b3","src/mapref/entry.rs":"ddcf788856330a4384ce987bb84ff36b494675b3b1f2460ae48376ac664491df","src/mapref/mod.rs":"15bd45cfc642a9e3e77bbfbf2d9fad9c5fac0ff6904214a3c501e262242ec8b0","src/mapref/multiple.rs":"17a87879229d78f75d71817d100aa0a210d764d6b66e4a05b17a3e092d17e306","src/mapref/one.rs":"ea46339e08c5033cf419c195e922e1ba6f606fc71c15ee31d1b3c38cfedfedcf","src/rayon/map.rs":"2df5ac8241d92e1811852abd65c5b3124a14d886ae4e3a8a5cbdfdb3d7dde929","src/rayon/read_only.rs":"99dc0083f6840f59b2090bc9c5f9767a44088832e63935cb8f6bc7eca8b86102","src/rayon/set.rs":"21fe2ca8c58c8ff1bc753f5e2eb6131afd598211eea375f2ac7190cd0f9abcba","src/read_only.rs":"d872ec78201ddc272aeeabdbeaccb26e069704b85aa2f6a4d56bd0c5defe7a2b","src/serde.rs":"57bbf2b255de966cc9c54011429495cc5308a1f76906846b29e015f860b79559","src/set.rs":"80271aa0d8a32845afdef5a35f18e5cac6f0f5ab8d2a6b11b02cd123152c91d4","src/setref/mod.rs":"cc39e406a333dc6c04398f4b1336fb400e3a8360c387466d8a91f5d7f4ed40a7","src/setref/multiple.rs":"2270749e83f80dbb4761448f0629ecd02b0b4268f76834236d1167844e6d5e37","src/setref/one.rs":"69738583f2a160f3907e540277ccd88e0036406b3ead66b3d4015ddd938d6937","src/t.rs":"9b40ebfba22369813bf159ed60fa70e742ae72bfaec6aee91a716cba91cb8f0d","src/try_result.rs":"81d1dd396f70b0aa2a6e1969851b706cbfdfb09c802ac9d33dcace882aa28dd1","src/util.rs":"7a8096a713cf04e60d6c9e38cd366314ed74472abab4bb8a3a9ed081a0e0301b"},"package":"907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc"} \ No newline at end of file
diff --git a/vendor/dashmap/Cargo.toml b/vendor/dashmap/Cargo.toml
index a03feb0ce..ce76bd9a7 100644
--- a/vendor/dashmap/Cargo.toml
+++ b/vendor/dashmap/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.59"
name = "dashmap"
-version = "5.3.4"
+version = "5.4.0"
authors = ["Acrimon <joel.wejdenstal@gmail.com>"]
description = "Blazing fast concurrent HashMap for Rust."
homepage = "https://github.com/xacrimon/dashmap"
@@ -29,21 +29,24 @@ features = ["rayon", "raw-api", "serde"]
version = "1.0.0"
[dependencies.hashbrown]
-version = "0.12.0"
+version = "0.12.3"
default-features = false
[dependencies.lock_api]
-version = "0.4.7"
+version = "0.4.8"
+
+[dependencies.once_cell]
+version = "1.13.1"
[dependencies.parking_lot_core]
version = "0.9.3"
[dependencies.rayon]
-version = "1.5.2"
+version = "1.5.3"
optional = true
[dependencies.serde]
-version = "1.0.136"
+version = "1.0.144"
features = ["derive"]
optional = true
diff --git a/vendor/dashmap/src/lib.rs b/vendor/dashmap/src/lib.rs
index 627b51381..bf112d570 100644
--- a/vendor/dashmap/src/lib.rs
+++ b/vendor/dashmap/src/lib.rs
@@ -16,6 +16,7 @@ mod util;
#[cfg(feature = "rayon")]
pub mod rayon {
pub mod map;
+ pub mod read_only;
pub mod set;
}
@@ -35,6 +36,7 @@ use iter::{Iter, IterMut, OwningIter};
use mapref::entry::{Entry, OccupiedEntry, VacantEntry};
use mapref::multiple::RefMulti;
use mapref::one::{Ref, RefMut};
+use once_cell::sync::OnceCell;
pub use read_only::ReadOnlyView;
pub use set::DashSet;
use std::collections::hash_map::RandomState;
@@ -51,8 +53,19 @@ cfg_if! {
pub(crate) type HashMap<K, V, S> = hashbrown::HashMap<K, SharedValue<V>, S>;
+// Temporary reimplementation of [`std::collections::TryReserveError`]
+// util [`std::collections::TryReserveError`] stabilises.
+// We cannot easily create `std::collections` error type from `hashbrown` error type
+// without access to `TryReserveError::kind` method.
+#[non_exhaustive]
+#[derive(Clone, PartialEq, Eq, Debug)]
+pub struct TryReserveError {}
+
fn default_shard_amount() -> usize {
- (std::thread::available_parallelism().map_or(1, usize::from) * 4).next_power_of_two()
+ static DEFAULT_SHARD_AMOUNT: OnceCell<usize> = OnceCell::new();
+ *DEFAULT_SHARD_AMOUNT.get_or_init(|| {
+ (std::thread::available_parallelism().map_or(1, usize::from) * 4).next_power_of_two()
+ })
}
fn ncb(shard_amount: usize) -> usize {
@@ -65,7 +78,7 @@ fn ncb(shard_amount: usize) -> usize {
/// with some slight changes to handle concurrency.
///
/// DashMap tries to be very simple to use and to be a direct replacement for `RwLock<HashMap<K, V, S>>`.
-/// To accomplish these all methods take `&self` instead modifying methods taking `&mut self`.
+/// To accomplish this, all methods take `&self` instead of modifying methods taking `&mut self`.
/// This allows you to put a DashMap in an `Arc<T>` and share it between threads while being able to modify it.
///
/// Documentation mentioning locking behaviour acts in the reference frame of the calling thread.
@@ -216,7 +229,7 @@ impl<'a, K: 'a + Eq + Hash, V: 'a, S: BuildHasher + Clone> DashMap<K, V, S> {
/// Creates a new DashMap with a specified hasher and shard amount
///
- /// shard_amount should greater than 0 and be a power of two.
+ /// shard_amount should be greater than 0 and a power of two.
/// If a shard_amount which is not a power of two is provided, the function will panic.
///
/// # Examples
@@ -797,6 +810,24 @@ impl<'a, K: 'a + Eq + Hash, V: 'a, S: BuildHasher + Clone> DashMap<K, V, S> {
pub fn try_entry(&'a self, key: K) -> Option<Entry<'a, K, V, S>> {
self._try_entry(key)
}
+
+ /// Advanced entry API that tries to mimic `std::collections::HashMap::try_reserve`.
+ /// Tries to reserve capacity for at least `shard * additional`
+ /// and may reserve more space to avoid frequent reallocations.
+ ///
+ /// # Errors
+ ///
+ /// If the capacity overflows, or the allocator reports a failure, then an error is returned.
+ // TODO: return std::collections::TryReserveError once std::collections::TryReserveErrorKind stabilises.
+ pub fn try_reserve(&mut self, additional: usize) -> Result<(), TryReserveError> {
+ for shard in self.shards.iter() {
+ shard
+ .write()
+ .try_reserve(additional)
+ .map_err(|_| TryReserveError {})?;
+ }
+ Ok(())
+ }
}
impl<'a, K: 'a + Eq + Hash, V: 'a, S: 'a + BuildHasher + Clone> Map<'a, K, V, S>
@@ -1367,4 +1398,26 @@ mod tests {
assert!(result2.is_locked());
}
}
+
+ #[test]
+ fn test_try_reserve() {
+ let mut map: DashMap<i32, i32> = DashMap::new();
+ // DashMap is empty and doesn't allocate memory
+ assert_eq!(map.capacity(), 0);
+
+ map.try_reserve(10).unwrap();
+
+ // And now map can hold at least 10 elements
+ assert!(map.capacity() >= 10);
+ }
+
+ #[test]
+ fn test_try_reserve_errors() {
+ let mut map: DashMap<i32, i32> = DashMap::new();
+
+ match map.try_reserve(usize::MAX) {
+ Err(_) => {}
+ _ => panic!("should have raised CapacityOverflow error"),
+ }
+ }
}
diff --git a/vendor/dashmap/src/rayon/map.rs b/vendor/dashmap/src/rayon/map.rs
index c0947cf6b..4fc0c43aa 100644
--- a/vendor/dashmap/src/rayon/map.rs
+++ b/vendor/dashmap/src/rayon/map.rs
@@ -80,7 +80,7 @@ where
}
pub struct OwningIter<K, V, S = RandomState> {
- shards: Box<[RwLock<HashMap<K, V, S>>]>,
+ pub(super) shards: Box<[RwLock<HashMap<K, V, S>>]>,
}
impl<K, V, S> ParallelIterator for OwningIter<K, V, S>
@@ -125,7 +125,7 @@ where
}
pub struct Iter<'a, K, V, S = RandomState> {
- shards: &'a [RwLock<HashMap<K, V, S>>],
+ pub(super) shards: &'a [RwLock<HashMap<K, V, S>>],
}
impl<'a, K, V, S> ParallelIterator for Iter<'a, K, V, S>
diff --git a/vendor/dashmap/src/rayon/read_only.rs b/vendor/dashmap/src/rayon/read_only.rs
new file mode 100644
index 000000000..a11448cee
--- /dev/null
+++ b/vendor/dashmap/src/rayon/read_only.rs
@@ -0,0 +1,96 @@
+use crate::mapref::multiple::RefMulti;
+use crate::rayon::map::Iter;
+use crate::ReadOnlyView;
+use core::hash::{BuildHasher, Hash};
+use rayon::iter::IntoParallelIterator;
+
+impl<K, V, S> IntoParallelIterator for ReadOnlyView<K, V, S>
+where
+ K: Send + Eq + Hash,
+ V: Send,
+ S: Send + Clone + BuildHasher,
+{
+ type Iter = super::map::OwningIter<K, V, S>;
+ type Item = (K, V);
+
+ fn into_par_iter(self) -> Self::Iter {
+ super::map::OwningIter {
+ shards: self.map.shards,
+ }
+ }
+}
+
+// This impl also enables `IntoParallelRefIterator::par_iter`
+impl<'a, K, V, S> IntoParallelIterator for &'a ReadOnlyView<K, V, S>
+where
+ K: Send + Sync + Eq + Hash,
+ V: Send + Sync,
+ S: Send + Sync + Clone + BuildHasher,
+{
+ type Iter = Iter<'a, K, V, S>;
+ type Item = RefMulti<'a, K, V, S>;
+
+ fn into_par_iter(self) -> Self::Iter {
+ Iter {
+ shards: &self.map.shards,
+ }
+ }
+}
+
+#[cfg(test)]
+mod tests {
+ use crate::DashMap;
+ use rayon::iter::{IntoParallelIterator, IntoParallelRefIterator, ParallelIterator};
+
+ fn construct_sample_map() -> DashMap<i32, String> {
+ let map = DashMap::new();
+
+ map.insert(1, "one".to_string());
+
+ map.insert(10, "ten".to_string());
+
+ map.insert(27, "twenty seven".to_string());
+
+ map.insert(45, "forty five".to_string());
+
+ map
+ }
+
+ #[test]
+ fn test_par_iter() {
+ let map = construct_sample_map();
+
+ let view = map.clone().into_read_only();
+
+ view.par_iter().for_each(|entry| {
+ let key = *entry.key();
+
+ assert!(view.contains_key(&key));
+
+ let map_entry = map.get(&key).unwrap();
+
+ assert_eq!(view.get(&key).unwrap(), map_entry.value());
+
+ let key_value: (&i32, &String) = view.get_key_value(&key).unwrap();
+
+ assert_eq!(key_value.0, map_entry.key());
+
+ assert_eq!(key_value.1, map_entry.value());
+ });
+ }
+
+ #[test]
+ fn test_into_par_iter() {
+ let map = construct_sample_map();
+
+ let view = map.clone().into_read_only();
+
+ view.into_par_iter().for_each(|(key, value)| {
+ let map_entry = map.get(&key).unwrap();
+
+ assert_eq!(&key, map_entry.key());
+
+ assert_eq!(&value, map_entry.value());
+ });
+ }
+}
diff --git a/vendor/dashmap/src/read_only.rs b/vendor/dashmap/src/read_only.rs
index c43947b2e..14582245b 100644
--- a/vendor/dashmap/src/read_only.rs
+++ b/vendor/dashmap/src/read_only.rs
@@ -7,7 +7,7 @@ use std::collections::hash_map::RandomState;
/// A read-only view into a `DashMap`. Allows to obtain raw references to the stored values.
pub struct ReadOnlyView<K, V, S = RandomState> {
- map: DashMap<K, V, S>,
+ pub(crate) map: DashMap<K, V, S>,
}
impl<K: Eq + Hash + Clone, V: Clone, S: Clone> Clone for ReadOnlyView<K, V, S> {
diff --git a/vendor/dashmap/src/table.rs b/vendor/dashmap/src/table.rs
deleted file mode 100644
index 03acd76e2..000000000
--- a/vendor/dashmap/src/table.rs
+++ /dev/null
@@ -1,81 +0,0 @@
-use super::u128::AtomicU128;
-use std::borrow::Borrow;
-use std::cell::UnsafeCell;
-use std::hash::{BuildHasher, Hash, Hasher};
-use std::mem::MaybeUninit;
-use std::sync::atomic::{AtomicU64, Ordering};
-use std::sync::{Arc, Mutex};
-
-const TOMBSTONE_BIT: u64 = 1 << 63;
-const ALLOCATED_BIT: u64 = 1 << 62;
-const POINTER_MASK: u64 = 0x3FFFFFFFFFFFFFFF;
-
-fn hash<S, K>(hasher: &S, key: &K) -> u64
-where
- S: BuildHasher,
- K: Hash,
-{
- let mut hasher = hasher.build_hasher();
- key.hash(&mut hasher);
- hasher.finish()
-}
-
-struct Slot<K, V> {
- data: AtomicU64,
- pair: UnsafeCell<MaybeUninit<(K, V)>>,
-}
-
-pub struct Table<K, V, S> {
- hash: Arc<S>,
- slots: Box<[Slot<K, V>]>,
- mask: usize,
-}
-
-impl<K, V, S> Table<K, V, S>
-where
- K: Eq + Hash,
- S: BuildHasher,
-{
- pub fn new(hasher: Arc<S>, capacity: usize) -> Self {
- debug_assert!(capacity.is_power_of_two());
- let slots = (0..capacity)
- .map(|_| Slot {
- data: AtomicU64::new(0),
- pair: UnsafeCell::new(MaybeUninit::uninit()),
- })
- .collect::<Vec<_>>();
-
- Table {
- hash: hasher,
- slots: slots.into_boxed_slice(),
- mask: capacity - 1,
- }
- }
-
- pub fn get<Q>(&self, key: &Q) -> Option<*mut (K, V)>
- where
- K: Borrow<Q>,
- Q: Eq + Hash,
- {
- let hash = hash(&*self.hash, key);
- let mut idx = hash as usize & self.mask;
- let mut i = 0;
-
- loop {
- let slot = &self.slots[idx];
- let data = slot.data.load(Ordering::Relaxed);
- let ptr = (data & POINTER_MASK) as *mut (K, V);
- if !ptr.is_null() {
- let stored = unsafe { (*ptr).0.borrow() };
- if stored == key {
- return Some(ptr);
- }
- } else if data & TOMBSTONE_BIT != TOMBSTONE_BIT || i > self.mask {
- return None;
- }
-
- idx = (idx + 1) & self.mask;
- i += 1;
- }
- }
-}
diff --git a/vendor/digest-0.8.1/.cargo-checksum.json b/vendor/digest-0.8.1/.cargo-checksum.json
deleted file mode 100644
index ed59510b2..000000000
--- a/vendor/digest-0.8.1/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"bfdc024e55a5d9f2f415045e9083abb13159e0276c3eb3dbdca290c69f8b4824","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"9e0dfd2dd4173a530e238cb6adb37aa78c34c6bc7444e0e10c1ab5d8881f63ba","src/dev.rs":"5890305be2cd3d221d1c2ce295b911cc57017dc341966ba434def4a072f8bf1c","src/digest.rs":"73f564cb8084e61baf850948443bacdea81727dfbff5abeb520c0e5bb690da7a","src/dyn_digest.rs":"abfa9a30ed2dc71ad2042501961146c87fe3cbf9254b5b203fe24920d0e246b8","src/errors.rs":"2584007e98d691160313cc27e6237db9bd886e9774137b59a1289a20054e9375","src/lib.rs":"71d838697e87561de4b6b2fda94df44639a525d4469316d4ad21f0f0075a130d"},"package":"f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"} \ No newline at end of file
diff --git a/vendor/digest-0.8.1/Cargo.toml b/vendor/digest-0.8.1/Cargo.toml
deleted file mode 100644
index d36300769..000000000
--- a/vendor/digest-0.8.1/Cargo.toml
+++ /dev/null
@@ -1,36 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-name = "digest"
-version = "0.8.1"
-authors = ["RustCrypto Developers"]
-description = "Traits for cryptographic hash functions"
-documentation = "https://docs.rs/digest"
-keywords = ["digest", "crypto", "hash"]
-categories = ["cryptography", "no-std"]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/RustCrypto/traits"
-[package.metadata.docs.rs]
-features = ["std"]
-[dependencies.blobby]
-version = "0.1"
-optional = true
-
-[dependencies.generic-array]
-version = "0.12"
-
-[features]
-dev = ["blobby"]
-std = []
-[badges.travis-ci]
-repository = "RustCrypto/traits"
diff --git a/vendor/digest-0.8.1/LICENSE-APACHE b/vendor/digest-0.8.1/LICENSE-APACHE
deleted file mode 100644
index 78173fa2e..000000000
--- a/vendor/digest-0.8.1/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/vendor/digest-0.8.1/LICENSE-MIT b/vendor/digest-0.8.1/LICENSE-MIT
deleted file mode 100644
index 8dcb85b30..000000000
--- a/vendor/digest-0.8.1/LICENSE-MIT
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) 2017 Artyom Pavlov
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/vendor/digest-0.8.1/src/dev.rs b/vendor/digest-0.8.1/src/dev.rs
deleted file mode 100644
index e9950ee79..000000000
--- a/vendor/digest-0.8.1/src/dev.rs
+++ /dev/null
@@ -1,218 +0,0 @@
-use super::{Input, VariableOutput, ExtendableOutput, Reset, XofReader};
-use core::fmt::Debug;
-
-#[macro_export]
-macro_rules! new_test {
- ($name:ident, $test_name:expr, $hasher:ty, $test_func:ident) => {
- #[test]
- fn $name() {
- use digest::blobby::Blob2Iterator;
- let data = include_bytes!(concat!("data/", $test_name, ".blb"));
-
- for (i, row) in Blob2Iterator::new(data).unwrap().enumerate() {
- let input = row[0];
- let output = row[1];
- if let Some(desc) = $test_func::<$hasher>(input, output) {
- panic!("\n\
- Failed test №{}: {}\n\
- input:\t{:?}\n\
- output:\t{:?}\n",
- i, desc, input, output,
- );
- }
- }
- }
- }
-}
-
-// module to separate Digest from other traits
-mod foo {
- use super::super::Digest;
- use core::fmt::Debug;
-
- pub fn digest_test<D>(input: &[u8], output: &[u8]) -> Option<&'static str>
- where D: Digest + Debug + Clone
- {
- let mut hasher = D::new();
- // Test that it works when accepting the message all at once
- hasher.input(input);
- let mut hasher2 = hasher.clone();
- if hasher.result().as_slice() != output {
- return Some("whole message");
- }
-
- // Test if reset works correctly
- hasher2.reset();
- hasher2.input(input);
- if hasher2.result().as_slice() != output {
- return Some("whole message after reset");
- }
-
- // Test that it works when accepting the message in pieces
- let mut hasher = D::new();
- let len = input.len();
- let mut left = len;
- while left > 0 {
- let take = (left + 1) / 2;
- hasher.input(&input[len - left..take + len - left]);
- left = left - take;
- }
- if hasher.result().as_slice() != output {
- return Some("message in pieces");
- }
-
- // Test processing byte-by-byte
- let mut hasher = D::new();
- for chunk in input.chunks(1) {
- hasher.input(chunk)
- }
- if hasher.result().as_slice() != output {
- return Some("message byte-by-byte");
- }
- None
- }
-
-
- pub fn one_million_a<D>(expected: &[u8])
- where D: Digest + Debug + Clone
- {
- let mut sh = D::new();
- for _ in 0..50_000 {
- sh.input(&[b'a'; 10]);
- }
- sh.input(&[b'a'; 500_000][..]);
- let out = sh.result();
- assert_eq!(out[..], expected[..]);
- }
-}
-
-pub use self::foo::{digest_test, one_million_a};
-
-pub fn xof_test<D>(input: &[u8], output: &[u8])
- -> Option<&'static str>
- where D: Input + ExtendableOutput + Default + Debug + Reset + Clone
-{
- let mut hasher = D::default();
- let mut buf = [0u8; 1024];
- // Test that it works when accepting the message all at once
- hasher.input(input);
-
- let mut hasher2 = hasher.clone();
- {
- let out = &mut buf[..output.len()];
- hasher.xof_result().read(out);
-
- if out != output { return Some("whole message"); }
- }
-
- // Test if hasher resets correctly
- hasher2.reset();
- hasher2.input(input);
-
- {
- let out = &mut buf[..output.len()];
- hasher2.xof_result().read(out);
-
- if out != output { return Some("whole message after reset"); }
- }
-
- // Test if hasher accepts message in pieces correctly
- let mut hasher = D::default();
- let len = input.len();
- let mut left = len;
- while left > 0 {
- let take = (left + 1) / 2;
- hasher.input(&input[len - left..take + len - left]);
- left = left - take;
- }
-
- {
- let out = &mut buf[..output.len()];
- hasher.xof_result().read(out);
- if out != output { return Some("message in pieces"); }
- }
-
- // Test reading from reader byte by byte
- let mut hasher = D::default();
- hasher.input(input);
-
- let mut reader = hasher.xof_result();
- let out = &mut buf[..output.len()];
- for chunk in out.chunks_mut(1) {
- reader.read(chunk);
- }
-
- if out != output { return Some("message in pieces"); }
- None
-}
-
-pub fn variable_test<D>(input: &[u8], output: &[u8])
- -> Option<&'static str>
- where D: Input + VariableOutput + Reset + Debug + Clone
-{
- let mut hasher = D::new(output.len()).unwrap();
- let mut buf = [0u8; 128];
- let buf = &mut buf[..output.len()];
- // Test that it works when accepting the message all at once
- hasher.input(input);
- let mut hasher2 = hasher.clone();
- hasher.variable_result(|res| buf.copy_from_slice(res));
- if buf != output { return Some("whole message"); }
-
- // Test if reset works correctly
- hasher2.reset();
- hasher2.input(input);
- hasher2.variable_result(|res| buf.copy_from_slice(res));
- if buf != output { return Some("whole message after reset"); }
-
- // Test that it works when accepting the message in pieces
- let mut hasher = D::new(output.len()).unwrap();
- let len = input.len();
- let mut left = len;
- while left > 0 {
- let take = (left + 1) / 2;
- hasher.input(&input[len - left..take + len - left]);
- left = left - take;
- }
- hasher.variable_result(|res| buf.copy_from_slice(res));
- if buf != output { return Some("message in pieces"); }
-
- // Test processing byte-by-byte
- let mut hasher = D::new(output.len()).unwrap();
- for chunk in input.chunks(1) {
- hasher.input(chunk)
- }
- hasher.variable_result(|res| buf.copy_from_slice(res));
- if buf != output { return Some("message byte-by-byte"); }
- None
-}
-
-
-#[macro_export]
-macro_rules! bench {
- ($name:ident, $engine:path, $bs:expr) => {
- #[bench]
- fn $name(b: &mut Bencher) {
- let mut d = <$engine>::default();
- let data = [0; $bs];
-
- b.iter(|| {
- d.input(&data[..]);
- });
-
- b.bytes = $bs;
- }
- };
-
- ($engine:path) => {
- extern crate test;
-
- use test::Bencher;
- use digest::Digest;
-
- bench!(bench1_10, $engine, 10);
- bench!(bench2_100, $engine, 100);
- bench!(bench3_1000, $engine, 1000);
- bench!(bench4_10000, $engine, 10000);
- }
-}
diff --git a/vendor/digest-0.8.1/src/digest.rs b/vendor/digest-0.8.1/src/digest.rs
deleted file mode 100644
index 50128e13e..000000000
--- a/vendor/digest-0.8.1/src/digest.rs
+++ /dev/null
@@ -1,86 +0,0 @@
-use super::{Input, FixedOutput, Reset};
-use generic_array::{GenericArray, ArrayLength};
-use generic_array::typenum::Unsigned;
-
-/// The `Digest` trait specifies an interface common for digest functions.
-///
-/// It's a convenience wrapper around `Input`, `FixedOutput`, `Reset`, `Clone`,
-/// and `Default` traits. It also provides additional convenience methods.
-pub trait Digest {
- type OutputSize: ArrayLength<u8>;
- /// Create new hasher instance
- fn new() -> Self;
-
- /// Digest input data.
- ///
- /// This method can be called repeatedly for use with streaming messages.
- fn input<B: AsRef<[u8]>>(&mut self, data: B);
-
- /// Digest input data in a chained manner.
- fn chain<B: AsRef<[u8]>>(self, data: B) -> Self where Self: Sized;
-
- /// Retrieve result and consume hasher instance.
- fn result(self) -> GenericArray<u8, Self::OutputSize>;
-
- /// Retrieve result and reset hasher instance.
- ///
- /// This method sometimes can be more efficient compared to hasher
- /// re-creation.
- fn result_reset(&mut self) -> GenericArray<u8, Self::OutputSize>;
-
- /// Reset hasher instance to its initial state.
- fn reset(&mut self);
-
- /// Get output size of the hasher
- fn output_size() -> usize;
-
- /// Convenience function to compute hash of the `data`. It will handle
- /// hasher creation, data feeding and finalization.
- ///
- /// Example:
- ///
- /// ```rust,ignore
- /// println!("{:x}", sha2::Sha256::digest(b"Hello world"));
- /// ```
- fn digest(data: &[u8]) -> GenericArray<u8, Self::OutputSize>;
-}
-
-impl<D: Input + FixedOutput + Reset + Clone + Default> Digest for D {
- type OutputSize = <Self as FixedOutput>::OutputSize;
-
- fn new() -> Self {
- Self::default()
- }
-
- fn input<B: AsRef<[u8]>>(&mut self, data: B) {
- Input::input(self, data);
- }
-
- fn chain<B: AsRef<[u8]>>(self, data: B) -> Self where Self: Sized {
- Input::chain(self, data)
- }
-
- fn result(self) -> GenericArray<u8, Self::OutputSize> {
- self.fixed_result()
- }
-
- fn result_reset(&mut self) -> GenericArray<u8, Self::OutputSize> {
- let res = self.clone().fixed_result();
- self.reset();
- res
- }
-
- fn reset(&mut self) {
- <Self as Reset>::reset(self)
- }
-
- fn output_size() -> usize {
- Self::OutputSize::to_usize()
- }
-
- fn digest(data: &[u8]) -> GenericArray<u8, Self::OutputSize> {
- let mut hasher = Self::default();
- Input::input(&mut hasher, data);
- hasher.fixed_result()
- }
-}
diff --git a/vendor/digest-0.8.1/src/dyn_digest.rs b/vendor/digest-0.8.1/src/dyn_digest.rs
deleted file mode 100644
index 2af43a8e3..000000000
--- a/vendor/digest-0.8.1/src/dyn_digest.rs
+++ /dev/null
@@ -1,63 +0,0 @@
-#![cfg(feature = "std")]
-use std::boxed::Box;
-
-use super::{Input, FixedOutput, Reset};
-use generic_array::typenum::Unsigned;
-
-/// The `DynDigest` trait is a modification of `Digest` trait suitable
-/// for trait objects.
-pub trait DynDigest {
- /// Digest input data.
- ///
- /// This method can be called repeatedly for use with streaming messages.
- fn input(&mut self, data: &[u8]);
-
- /// Retrieve result and reset hasher instance
- fn result_reset(&mut self) -> Box<[u8]>;
-
- /// Retrieve result and consume boxed hasher instance
- fn result(self: Box<Self>) -> Box<[u8]>;
-
- /// Reset hasher instance to its initial state.
- fn reset(&mut self);
-
- /// Get output size of the hasher
- fn output_size(&self) -> usize;
-
- /// Clone hasher state into a boxed trait object
- fn box_clone(&self) -> Box<DynDigest>;
-}
-
-impl<D: Input + FixedOutput + Reset + Clone + 'static> DynDigest for D {
- fn input(&mut self, data: &[u8]) {
- Input::input(self, data);
- }
-
- fn result_reset(&mut self) -> Box<[u8]> {
- let res = self.clone().fixed_result().to_vec().into_boxed_slice();
- Reset::reset(self);
- res
- }
-
- fn result(self: Box<Self>) -> Box<[u8]> {
- self.fixed_result().to_vec().into_boxed_slice()
- }
-
- fn reset(&mut self) {
- Reset::reset(self);
- }
-
- fn output_size(&self) -> usize {
- <Self as FixedOutput>::OutputSize::to_usize()
- }
-
- fn box_clone(&self) -> Box<DynDigest> {
- Box::new(self.clone())
- }
-}
-
-impl Clone for Box<DynDigest> {
- fn clone(&self) -> Self {
- self.box_clone()
- }
-}
diff --git a/vendor/digest-0.8.1/src/errors.rs b/vendor/digest-0.8.1/src/errors.rs
deleted file mode 100644
index aa026a21a..000000000
--- a/vendor/digest-0.8.1/src/errors.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-use core::fmt;
-#[cfg(feature = "std")]
-use std::error;
-
-/// The error type for variable hasher initialization
-#[derive(Clone, Copy, Debug, Default)]
-pub struct InvalidOutputSize;
-
-impl fmt::Display for InvalidOutputSize {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- f.write_str("invalid output size")
- }
-}
-
-#[cfg(feature = "std")]
-impl error::Error for InvalidOutputSize {
- fn description(&self) -> &str {
- "invalid output size"
- }
-}
diff --git a/vendor/digest-0.8.1/src/lib.rs b/vendor/digest-0.8.1/src/lib.rs
deleted file mode 100644
index f03c50107..000000000
--- a/vendor/digest-0.8.1/src/lib.rs
+++ /dev/null
@@ -1,141 +0,0 @@
-//! This crate provides traits which describe functionality of cryptographic hash
-//! functions.
-//!
-//! Traits in this repository can be separated into two levels:
-//! - Low level traits: `Input`, `BlockInput`, `Reset`, `FixedOutput`,
-//! `VariableOutput`, `ExtendableOutput`. These traits atomically describe
-//! available functionality of hash function implementations.
-//! - Convenience trait: `Digest`, `DynDigest`. They are wrappers around
-//! low level traits for most common hash-function use-cases.
-//!
-//! Additionally hash functions implement traits from `std`: `Default`, `Clone`,
-//! `Write`. (the latter depends on enabled-by-default `std` crate feature)
-//!
-//! The `Digest` trait is the most commonly used trait.
-#![no_std]
-#![doc(html_logo_url =
- "https://raw.githubusercontent.com/RustCrypto/meta/master/logo_small.png")]
-pub extern crate generic_array;
-#[cfg(feature = "std")]
-#[macro_use] extern crate std;
-#[cfg(feature = "dev")]
-pub extern crate blobby;
-use generic_array::{GenericArray, ArrayLength};
-#[cfg(feature = "std")]
-use std::vec::Vec;
-
-mod digest;
-mod dyn_digest;
-mod errors;
-#[cfg(feature = "dev")]
-pub mod dev;
-
-pub use errors::InvalidOutputSize;
-pub use digest::Digest;
-#[cfg(feature = "std")]
-pub use dyn_digest::DynDigest;
-
-/// Trait for processing input data
-pub trait Input {
- /// Digest input data.
- ///
- /// This method can be called repeatedly, e.g. for processing streaming
- /// messages.
- fn input<B: AsRef<[u8]>>(&mut self, data: B);
-
- /// Digest input data in a chained manner.
- fn chain<B: AsRef<[u8]>>(mut self, data: B) -> Self where Self: Sized {
- self.input(data);
- self
- }
-}
-
-/// Trait to indicate that digest function processes data in blocks of size
-/// `BlockSize`.
-///
-/// The main usage of this trait is for implementing HMAC generically.
-pub trait BlockInput {
- type BlockSize: ArrayLength<u8>;
-}
-
-/// Trait for returning digest result with the fixed size
-pub trait FixedOutput {
- type OutputSize: ArrayLength<u8>;
-
- /// Retrieve result and consume hasher instance.
- fn fixed_result(self) -> GenericArray<u8, Self::OutputSize>;
-}
-
-/// Trait for returning digest result with the variable size
-pub trait VariableOutput: core::marker::Sized {
- /// Create new hasher instance with the given output size.
- ///
- /// It will return `Err(InvalidOutputSize)` in case if hasher can not return
- /// specified output size. It will always return an error if output size
- /// equals to zero.
- fn new(output_size: usize) -> Result<Self, InvalidOutputSize>;
-
- /// Get output size of the hasher instance provided to the `new` method
- fn output_size(&self) -> usize;
-
- /// Retrieve result via closure and consume hasher.
- ///
- /// Closure is guaranteed to be called, length of the buffer passed to it
- /// will be equal to `output_size`.
- fn variable_result<F: FnOnce(&[u8])>(self, f: F);
-
- /// Retrieve result into vector and consume hasher.
- #[cfg(feature = "std")]
- fn vec_result(self) -> Vec<u8> {
- let mut buf = Vec::with_capacity(self.output_size());
- self.variable_result(|res| buf.extend_from_slice(res));
- buf
- }
-}
-
-/// Trait for describing readers which are used to extract extendable output
-/// from XOF (extendable-output function) result.
-pub trait XofReader {
- /// Read output into the `buffer`. Can be called unlimited number of times.
- fn read(&mut self, buffer: &mut [u8]);
-}
-
-/// Trait which describes extendable-output functions (XOF).
-pub trait ExtendableOutput: core::marker::Sized {
- type Reader: XofReader;
-
- /// Retrieve XOF reader and consume hasher instance.
- fn xof_result(self) -> Self::Reader;
-
- /// Retrieve result into vector of specified length.
- #[cfg(feature = "std")]
- fn vec_result(self, n: usize) -> Vec<u8> {
- let mut buf = vec![0u8; n];
- self.xof_result().read(&mut buf);
- buf
- }
-}
-
-/// Trait for resetting hash instances
-pub trait Reset {
- /// Reset hasher instance to its initial state and return current state.
- fn reset(&mut self);
-}
-
-#[macro_export]
-/// Implements `std::io::Write` trait for implementer of `Input`
-macro_rules! impl_write {
- ($hasher:ident) => {
- #[cfg(feature = "std")]
- impl ::std::io::Write for $hasher {
- fn write(&mut self, buf: &[u8]) -> ::std::io::Result<usize> {
- Input::input(self, buf);
- Ok(buf.len())
- }
-
- fn flush(&mut self) -> ::std::io::Result<()> {
- Ok(())
- }
- }
- }
-}
diff --git a/vendor/either/.cargo-checksum.json b/vendor/either/.cargo-checksum.json
index 207aba04a..5e1f8841d 100644
--- a/vendor/either/.cargo-checksum.json
+++ b/vendor/either/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"77c37f327af7a6146ba111c1c0a3e861bd444f31cfe44c3645c8e090502f66b4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README-crates.io.md":"b775991a01ab4a0a8de6169f597775319d9ce8178f5c74ccdc634f13a286b20c","README.rst":"f948f4333e9d66477128bcaf69a449a139bf00633eb57491fa1b379a3ce30b74","src/lib.rs":"e0f7c05e75af07765c2298a1791c65ea80f3c099491ed95c2e6c771041aa9931","src/serde_untagged.rs":"e826ee0ab31616e49c3e3f3711c8441001ee424b3e7a8c4c466cfcc4f8a7701a","src/serde_untagged_optional.rs":"86265f09d0795428bb2ce013b070d1badf1e2210217844a9ff3f04b2795868ab"},"package":"3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be"} \ No newline at end of file
+{"files":{"Cargo.toml":"321950b99b4f04079e2470d754419bedba9851b71d1a2d8bd9c9046e38b87640","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README-crates.io.md":"b775991a01ab4a0a8de6169f597775319d9ce8178f5c74ccdc634f13a286b20c","README.rst":"1369598deaae0ff925e8910df42354d33a43606961c40e7b71a7454a7f0b775e","src/lib.rs":"bc950126c901ea5c12ce4d02a7e58e3b1e2b428caca68bd510bad1f2488e2ced","src/serde_untagged.rs":"e826ee0ab31616e49c3e3f3711c8441001ee424b3e7a8c4c466cfcc4f8a7701a","src/serde_untagged_optional.rs":"86265f09d0795428bb2ce013b070d1badf1e2210217844a9ff3f04b2795868ab"},"package":"90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"} \ No newline at end of file
diff --git a/vendor/either/Cargo.toml b/vendor/either/Cargo.toml
index d571ff8da..eb1c5b4b5 100644
--- a/vendor/either/Cargo.toml
+++ b/vendor/either/Cargo.toml
@@ -11,9 +11,9 @@
[package]
edition = "2018"
-rust-version = "1.31"
+rust-version = "1.36"
name = "either"
-version = "1.7.0"
+version = "1.8.0"
authors = ["bluss"]
description = """
The enum `Either` with variants `Left` and `Right` is a general purpose sum type with two cases.
diff --git a/vendor/either/README.rst b/vendor/either/README.rst
index 992e49c50..43c156a9f 100644
--- a/vendor/either/README.rst
+++ b/vendor/either/README.rst
@@ -25,12 +25,23 @@ __ https://docs.rs/either/
How to use with cargo::
[dependencies]
- either = "1.7"
+ either = "1.8"
Recent Changes
--------------
+- 1.8.0
+
+ - **MSRV**: ``either`` now requires Rust 1.36 or later.
+
+ - Add new methods ``.as_pin_ref()`` and ``.as_pin_mut()`` to project a
+ pinned ``Either`` as inner ``Pin`` variants, by @cuviper (#77)
+
+ - Implement the ``Future`` trait, by @cuviper (#77)
+
+ - Specialize more methods of the ``io`` traits, by @Kixunil and @cuviper (#75)
+
- 1.7.0
- **MSRV**: ``either`` now requires Rust 1.31 or later.
diff --git a/vendor/either/src/lib.rs b/vendor/either/src/lib.rs
index a4f2a5454..9a271c351 100644
--- a/vendor/either/src/lib.rs
+++ b/vendor/either/src/lib.rs
@@ -26,9 +26,11 @@ pub mod serde_untagged_optional;
use core::convert::{AsMut, AsRef};
use core::fmt;
+use core::future::Future;
use core::iter;
use core::ops::Deref;
use core::ops::DerefMut;
+use core::pin::Pin;
#[cfg(any(test, feature = "use_std"))]
use std::error::Error;
@@ -255,6 +257,35 @@ impl<L, R> Either<L, R> {
}
}
+ /// Convert `Pin<&Either<L, R>>` to `Either<Pin<&L>, Pin<&R>>`,
+ /// pinned projections of the inner variants.
+ pub fn as_pin_ref(self: Pin<&Self>) -> Either<Pin<&L>, Pin<&R>> {
+ // SAFETY: We can use `new_unchecked` because the `inner` parts are
+ // guaranteed to be pinned, as they come from `self` which is pinned.
+ unsafe {
+ match *Pin::get_ref(self) {
+ Left(ref inner) => Left(Pin::new_unchecked(inner)),
+ Right(ref inner) => Right(Pin::new_unchecked(inner)),
+ }
+ }
+ }
+
+ /// Convert `Pin<&mut Either<L, R>>` to `Either<Pin<&mut L>, Pin<&mut R>>`,
+ /// pinned projections of the inner variants.
+ pub fn as_pin_mut(self: Pin<&mut Self>) -> Either<Pin<&mut L>, Pin<&mut R>> {
+ // SAFETY: `get_unchecked_mut` is fine because we don't move anything.
+ // We can use `new_unchecked` because the `inner` parts are guaranteed
+ // to be pinned, as they come from `self` which is pinned, and we never
+ // offer an unpinned `&mut L` or `&mut R` through `Pin<&mut Self>`. We
+ // also don't have an implementation of `Drop`, nor manual `Unpin`.
+ unsafe {
+ match *Pin::get_unchecked_mut(self) {
+ Left(ref mut inner) => Left(Pin::new_unchecked(inner)),
+ Right(ref mut inner) => Right(Pin::new_unchecked(inner)),
+ }
+ }
+ }
+
/// Convert `Either<L, R>` to `Either<R, L>`.
///
/// ```
@@ -1038,6 +1069,22 @@ where
{
}
+/// `Either<L, R>` is a future if both `L` and `R` are futures.
+impl<L, R> Future for Either<L, R>
+where
+ L: Future,
+ R: Future<Output = L::Output>,
+{
+ type Output = L::Output;
+
+ fn poll(
+ self: Pin<&mut Self>,
+ cx: &mut core::task::Context<'_>,
+ ) -> core::task::Poll<Self::Output> {
+ for_both!(self.as_pin_mut(), inner => inner.poll(cx))
+ }
+}
+
#[cfg(any(test, feature = "use_std"))]
/// `Either<L, R>` implements `Read` if both `L` and `R` do.
///
@@ -1051,9 +1098,17 @@ where
for_both!(*self, ref mut inner => inner.read(buf))
}
+ fn read_exact(&mut self, buf: &mut [u8]) -> io::Result<()> {
+ for_both!(*self, ref mut inner => inner.read_exact(buf))
+ }
+
fn read_to_end(&mut self, buf: &mut std::vec::Vec<u8>) -> io::Result<usize> {
for_both!(*self, ref mut inner => inner.read_to_end(buf))
}
+
+ fn read_to_string(&mut self, buf: &mut std::string::String) -> io::Result<usize> {
+ for_both!(*self, ref mut inner => inner.read_to_string(buf))
+ }
}
#[cfg(any(test, feature = "use_std"))]
@@ -1084,6 +1139,14 @@ where
fn consume(&mut self, amt: usize) {
for_both!(*self, ref mut inner => inner.consume(amt))
}
+
+ fn read_until(&mut self, byte: u8, buf: &mut std::vec::Vec<u8>) -> io::Result<usize> {
+ for_both!(*self, ref mut inner => inner.read_until(byte, buf))
+ }
+
+ fn read_line(&mut self, buf: &mut std::string::String) -> io::Result<usize> {
+ for_both!(*self, ref mut inner => inner.read_line(buf))
+ }
}
#[cfg(any(test, feature = "use_std"))]
@@ -1099,6 +1162,14 @@ where
for_both!(*self, ref mut inner => inner.write(buf))
}
+ fn write_all(&mut self, buf: &[u8]) -> io::Result<()> {
+ for_both!(*self, ref mut inner => inner.write_all(buf))
+ }
+
+ fn write_fmt(&mut self, fmt: fmt::Arguments<'_>) -> io::Result<()> {
+ for_both!(*self, ref mut inner => inner.write_fmt(fmt))
+ }
+
fn flush(&mut self) -> io::Result<()> {
for_both!(*self, ref mut inner => inner.flush())
}
diff --git a/vendor/fake-simd/.cargo-checksum.json b/vendor/fake-simd/.cargo-checksum.json
deleted file mode 100644
index f91a4a68f..000000000
--- a/vendor/fake-simd/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"c63db0226f9aac6e001898735c81392b8f01dfc8b7245f37e290990562c3c0d8","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"52232c2cee3bb7d8cabe47ef367f1bf8bb607c22bdfca0219d6156cb7f446e9d","src/lib.rs":"2cd66d61acfb96f3425194c12695d8e55cf56c6fbd02de90033c45bdcc338c1a"},"package":"e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"} \ No newline at end of file
diff --git a/vendor/fake-simd/Cargo.toml b/vendor/fake-simd/Cargo.toml
deleted file mode 100644
index 135c66097..000000000
--- a/vendor/fake-simd/Cargo.toml
+++ /dev/null
@@ -1,9 +0,0 @@
-[package]
-name = "fake-simd"
-version = "0.1.2"
-authors = ["The Rust-Crypto Project Developers"]
-license = "MIT/Apache-2.0"
-description = "Crate for mimicking simd crate on stable Rust"
-documentation = "https://docs.rs/fake-simd"
-repository = "https://github.com/RustCrypto/utils"
-keywords = ["simd"]
diff --git a/vendor/fake-simd/LICENSE-APACHE b/vendor/fake-simd/LICENSE-APACHE
deleted file mode 100644
index 78173fa2e..000000000
--- a/vendor/fake-simd/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/vendor/fake-simd/LICENSE-MIT b/vendor/fake-simd/LICENSE-MIT
deleted file mode 100644
index 1da3a5f6d..000000000
--- a/vendor/fake-simd/LICENSE-MIT
+++ /dev/null
@@ -1,26 +0,0 @@
-Copyright (c) 2006-2009 Graydon Hoare
-Copyright (c) 2009-2013 Mozilla Foundation
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/vendor/fake-simd/src/lib.rs b/vendor/fake-simd/src/lib.rs
deleted file mode 100644
index 22c8727ed..000000000
--- a/vendor/fake-simd/src/lib.rs
+++ /dev/null
@@ -1,108 +0,0 @@
-#![no_std]
-use core::ops::{Add, BitAnd, BitOr, BitXor, Shl, Shr, Sub};
-
-#[derive(Clone, Copy, PartialEq, Eq)]
-#[allow(non_camel_case_types)]
-pub struct u32x4(pub u32, pub u32, pub u32, pub u32);
-
-impl Add for u32x4 {
- type Output = u32x4;
-
- #[inline(always)]
- fn add(self, rhs: u32x4) -> u32x4 {
- u32x4(
- self.0.wrapping_add(rhs.0),
- self.1.wrapping_add(rhs.1),
- self.2.wrapping_add(rhs.2),
- self.3.wrapping_add(rhs.3))
- }
-}
-
-impl Sub for u32x4 {
- type Output = u32x4;
-
- #[inline(always)]
- fn sub(self, rhs: u32x4) -> u32x4 {
- u32x4(
- self.0.wrapping_sub(rhs.0),
- self.1.wrapping_sub(rhs.1),
- self.2.wrapping_sub(rhs.2),
- self.3.wrapping_sub(rhs.3))
- }
-}
-
-impl BitAnd for u32x4 {
- type Output = u32x4;
-
- #[inline(always)]
- fn bitand(self, rhs: u32x4) -> u32x4 {
- u32x4(self.0 & rhs.0, self.1 & rhs.1, self.2 & rhs.2, self.3 & rhs.3)
- }
-}
-
-impl BitOr for u32x4 {
- type Output = u32x4;
-
- #[inline(always)]
- fn bitor(self, rhs: u32x4) -> u32x4 {
- u32x4(self.0 | rhs.0, self.1 | rhs.1, self.2 | rhs.2, self.3 | rhs.3)
- }
-}
-
-impl BitXor for u32x4 {
- type Output = u32x4;
-
- #[inline(always)]
- fn bitxor(self, rhs: u32x4) -> u32x4 {
- u32x4(self.0 ^ rhs.0, self.1 ^ rhs.1, self.2 ^ rhs.2, self.3 ^ rhs.3)
- }
-}
-
-impl Shl<usize> for u32x4 {
- type Output = u32x4;
-
- #[inline(always)]
- fn shl(self, amt: usize) -> u32x4 {
- u32x4(self.0 << amt, self.1 << amt, self.2 << amt, self.3 << amt)
- }
-}
-
-impl Shl<u32x4> for u32x4 {
- type Output = u32x4;
-
- #[inline(always)]
- fn shl(self, rhs: u32x4) -> u32x4 {
- u32x4(self.0 << rhs.0, self.1 << rhs.1, self.2 << rhs.2, self.3 << rhs.3)
- }
-}
-
-impl Shr<usize> for u32x4 {
- type Output = u32x4;
-
- #[inline(always)]
- fn shr(self, amt: usize) -> u32x4 {
- u32x4(self.0 >> amt, self.1 >> amt, self.2 >> amt, self.3 >> amt)
- }
-}
-
-impl Shr<u32x4> for u32x4 {
- type Output = u32x4;
-
- #[inline(always)]
- fn shr(self, rhs: u32x4) -> u32x4 {
- u32x4(self.0 >> rhs.0, self.1 >> rhs.1, self.2 >> rhs.2, self.3 >> rhs.3)
- }
-}
-
-#[derive(Clone, Copy)]
-#[allow(non_camel_case_types)]
-pub struct u64x2(pub u64, pub u64);
-
-impl Add for u64x2 {
- type Output = u64x2;
-
- #[inline(always)]
- fn add(self, rhs: u64x2) -> u64x2 {
- u64x2(self.0.wrapping_add(rhs.0), self.1.wrapping_add(rhs.1))
- }
-}
diff --git a/vendor/form_urlencoded/.cargo-checksum.json b/vendor/form_urlencoded/.cargo-checksum.json
index 33e19d140..29befa62b 100644
--- a/vendor/form_urlencoded/.cargo-checksum.json
+++ b/vendor/form_urlencoded/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"aadc4e4ba33e86861d8d1d8b848ac11a27b6f87340d082b47f762387464c61ed","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e","src/lib.rs":"5d30edec687843447c97e4ea87583983eb9fc06135ae718c8ecc0fa8cebef2df"},"package":"5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"} \ No newline at end of file
+{"files":{"Cargo.toml":"1771c35bc67b544a7ebc6f31168d7bc08d29ae76323e7ee10352d43b5a38afac","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e","src/lib.rs":"c1a0db36086e4fd0e8bb1489f9c2bb55945dd233614bf5dc3a0c41cb49292dd3"},"package":"a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"} \ No newline at end of file
diff --git a/vendor/form_urlencoded/Cargo.toml b/vendor/form_urlencoded/Cargo.toml
index 4c9fae259..037361d31 100644
--- a/vendor/form_urlencoded/Cargo.toml
+++ b/vendor/form_urlencoded/Cargo.toml
@@ -3,26 +3,24 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
+rust-version = "1.51"
name = "form_urlencoded"
-version = "1.0.1"
+version = "1.1.0"
authors = ["The rust-url developers"]
description = "Parser and serializer for the application/x-www-form-urlencoded syntax, as used by HTML forms."
-license = "MIT/Apache-2.0"
+license = "MIT OR Apache-2.0"
repository = "https://github.com/servo/rust-url"
[lib]
test = false
-[dependencies.matches]
-version = "0.1"
[dependencies.percent-encoding]
-version = "2.1.0"
+version = "2.2.0"
diff --git a/vendor/form_urlencoded/src/lib.rs b/vendor/form_urlencoded/src/lib.rs
index 765ee168a..477594bf7 100644
--- a/vendor/form_urlencoded/src/lib.rs
+++ b/vendor/form_urlencoded/src/lib.rs
@@ -13,9 +13,6 @@
//! Converts between a string (such as an URL’s query string)
//! and a sequence of (name, value) pairs.
-#[macro_use]
-extern crate matches;
-
use percent_encoding::{percent_decode, percent_encode_byte};
use std::borrow::{Borrow, Cow};
use std::str;
@@ -402,8 +399,7 @@ pub(crate) fn decode_utf8_lossy(input: Cow<'_, [u8]>) -> Cow<'_, str> {
// replace invalid bytes with a placeholder.
// First we do a debug_assert to confirm our description above.
- let raw_utf8: *const [u8];
- raw_utf8 = utf8.as_bytes();
+ let raw_utf8: *const [u8] = utf8.as_bytes();
debug_assert!(raw_utf8 == &*bytes as *const [u8]);
// Given we know the original input bytes are valid UTF-8,
diff --git a/vendor/fortanix-sgx-abi/.cargo-checksum.json b/vendor/fortanix-sgx-abi/.cargo-checksum.json
index 54731bac0..71c7c4425 100644
--- a/vendor/fortanix-sgx-abi/.cargo-checksum.json
+++ b/vendor/fortanix-sgx-abi/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"2f11a404e7361ab1b4bfd6bf5189c18091df9dcedda93dce14dcb01b59a2d85a","src/lib.rs":"2493f0264dfaaac19471aa5cb3da8011ead8f804f3ac722195478894a7d011d1"},"package":"c56c422ef86062869b2d57ae87270608dc5929969dd130a6e248979cf4fb6ca6"} \ No newline at end of file
+{"files":{"Cargo.toml":"5ef38d3c4329644a02d5fe6019ea401cdd64d31c1a26fd16cf30c7d2dd87873f","src/lib.rs":"2da4a01e8baae15069a6ea32610602f1741e8deccad696f7f7d3e69035da2962"},"package":"57cafc2274c10fab234f176b25903ce17e690fca7597090d50880e047a0389c5"} \ No newline at end of file
diff --git a/vendor/fortanix-sgx-abi/Cargo.toml b/vendor/fortanix-sgx-abi/Cargo.toml
index 1a3b9c168..28e2993bb 100644
--- a/vendor/fortanix-sgx-abi/Cargo.toml
+++ b/vendor/fortanix-sgx-abi/Cargo.toml
@@ -3,26 +3,41 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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]
name = "fortanix-sgx-abi"
-version = "0.3.3"
+version = "0.5.0"
authors = ["Fortanix, Inc."]
-description = "An interface for Intel SGX enclaves. This is the interface for the\n`x86_64-fortanix-unknown-sgx` target.\n\nThis is a small yet functional interface suitable for writing larger enclaves. \nIn contrast to other enclave interfaces, this interface is primarly designed \nfor running entire applications in an enclave.\n\nThis crate fully describes the type-level interface complete with \ndocumentation. For implementors, this crate contains all the type definitions\nand a macro with the function definitions.\n"
+description = """
+An interface for Intel SGX enclaves. This is the interface for the
+`x86_64-fortanix-unknown-sgx` target.
+
+This is a small yet functional interface suitable for writing larger enclaves.
+In contrast to other enclave interfaces, this interface is primarly designed
+for running entire applications in an enclave.
+
+This crate fully describes the type-level interface complete with
+documentation. For implementors, this crate contains all the type definitions
+and a macro with the function definitions.
+"""
homepage = "https://edp.fortanix.com/"
documentation = "https://edp.fortanix.com/docs/api/fortanix_sgx_abi/"
-keywords = ["sgx", "enclave"]
+keywords = [
+ "sgx",
+ "enclave",
+]
categories = ["os"]
license = "MPL-2.0"
repository = "https://github.com/fortanix/rust-sgx"
+
[package.metadata.docs.rs]
features = ["docs"]
+
[dependencies.compiler_builtins]
version = "0.1.0"
optional = true
@@ -34,4 +49,7 @@ package = "rustc-std-workspace-core"
[features]
docs = []
-rustc-dep-of-std = ["core", "compiler_builtins/rustc-dep-of-std"]
+rustc-dep-of-std = [
+ "core",
+ "compiler_builtins/rustc-dep-of-std",
+]
diff --git a/vendor/fortanix-sgx-abi/src/lib.rs b/vendor/fortanix-sgx-abi/src/lib.rs
index 362defb8f..3511ae34b 100644
--- a/vendor/fortanix-sgx-abi/src/lib.rs
+++ b/vendor/fortanix-sgx-abi/src/lib.rs
@@ -15,7 +15,7 @@
//! The Fortanix SGX ABI (compiler target `x86_64-fortanix-unknown-sgx`) is an
//! interface for Intel SGX enclaves. It is a small yet functional interface
//! suitable for writing larger enclaves. In contrast to other enclave
-//! interfaces, this interface is primarly designed for running entire
+//! interfaces, this interface is primarily designed for running entire
//! applications in an enclave.
//!
//! The Fortanix SGX ABI specification consists of two parts:
@@ -82,7 +82,7 @@
html_root_url = "https://edp.fortanix.com/docs/api/")]
use core::ptr::NonNull;
-use core::sync::atomic::AtomicUsize;
+use core::sync::atomic::{AtomicU64, AtomicUsize};
macro_rules! invoke_with_abi_spec [
( $m:ident ) => [ $m![
@@ -186,6 +186,9 @@ pub struct ByteBuffer {
pub len: usize
}
+#[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
+unsafe impl Send for ByteBuffer {}
+
/// Error code definitions and space allocation.
///
/// Only non-zero positive values are valid errors. The variants are designed
@@ -222,7 +225,7 @@ pub enum Error {
UserRangeEnd = 0x7fff_ffff,
}
-/// A value indicating that the operation was succesful.
+/// A value indicating that the operation was successful.
#[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
pub const RESULT_SUCCESS: Result = 0;
@@ -301,7 +304,7 @@ impl Usercalls {
/// Read up to `len` bytes from stream `fd`.
///
/// `buf` must point to a buffer in userspace with a size of at least
- /// `len`. On a succesful return, the number of bytes written is returned.
+ /// `len`. On a successful return, the number of bytes written is returned.
/// The enclave must check that the returned length is no more than `len`.
/// If `len` is `0`, this call should block until the stream is ready for
/// reading. If `len` is `0` or end of stream is reached, `0` may be
@@ -330,7 +333,7 @@ impl Usercalls {
/// Write up to `len` bytes to stream `fd`.
///
/// `buf` must point to a buffer in userspace with a size of at least
- /// `len`. On a succesful return, the number of bytes written is returned.
+ /// `len`. On a successful return, the number of bytes written is returned.
/// The enclave must check that the returned length is no more than `len`.
/// If `len` is `0`, this call should block until the stream is ready for
/// writing. If `len` is `0` or the stream is closed, `0` may be returned.
@@ -453,6 +456,10 @@ pub const EV_RETURNQ_NOT_EMPTY: u64 = 0b0000_0000_0000_0010;
/// An event that enclaves can use for synchronization.
#[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
pub const EV_UNPARK: u64 = 0b0000_0000_0000_0100;
+/// An event that will be triggered by userspace when the cancel queue is not
+/// or no longer full.
+#[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
+pub const EV_CANCELQ_NOT_FULL: u64 = 0b0000_0000_0000_1000;
#[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
pub const WAIT_NO: u64 = 0;
@@ -464,9 +471,10 @@ pub const WAIT_INDEFINITE: u64 = !0;
/// ## TCS event queues
///
/// Userspace will maintain a queue for each running TCS with events to be
-/// delivered. Each event is characterized by a bitset. Userspace or the
-/// enclave (using the `send` usercall) can put events on this queue. If the
-/// enclave isn't waiting for an event when an event is queued, the event
+/// delivered. Each event is characterized by a bitset with at least one bit
+/// set. Userspace or the enclave (using the `send` usercall) can put events on
+/// this queue.
+/// If the enclave isn't waiting for an event when an event is queued, the event
/// remains on the queue until it delivered to the enclave in a later `wait`
/// usercall. If an enclave is waiting for an event, and the queue contains an
/// event that is a subset of the waited-for event mask, that event is removed
@@ -481,7 +489,7 @@ impl Usercalls {
/// this with the number of entries into [`thread_entry`]. If no free TCSes
/// are immediately available, this may return an error.
///
- /// This function will never be succesful in [libraries]. See the
+ /// This function will never be successful in [libraries]. See the
/// [`library`] documentation on how to use threads with libraries.
///
/// [`thread_entry`]: entry/executable/fn.thread_entry.html
@@ -503,14 +511,18 @@ impl Usercalls {
/// Wait for an event to occur, or check if an event is currently pending.
///
- /// `timeout` must be [`WAIT_NO`] or [`WAIT_INDEFINITE`]. If it is another
- /// value, userspace will return an error.
+ /// `timeout` must be [`WAIT_NO`] or [`WAIT_INDEFINITE`] or a positive
+ /// value smaller than u64::MAX specifying number of nanoseconds to wait.
///
/// If `timeout` is [`WAIT_INDEFINITE`], this call will block and return
/// once a matching event is queued on this TCS. If `timeout` is
/// [`WAIT_NO`], this call will return immediately, and the return value
/// will indicate if an event was pending. If it was, it has been dequeued.
- /// If not, the [`WouldBlock`] error value will be returned.
+ /// If not, the [`WouldBlock`] error value will be returned. If `timeout`
+ /// is a value other than [`WAIT_NO`] and [`WAIT_INDEFINITE`], this call
+ /// will block until either a matching event is queued in which case the
+ /// return value will indicate the event, or the timeout is reached in
+ /// which case the [`TimedOut`] error value will be returned.
///
/// A matching event is one whose bits are equal to or a subset of
/// `event_mask`. If `event_mask` is `0`, this call will never return due
@@ -534,6 +546,7 @@ impl Usercalls {
/// [`WAIT_INDEFINITE`]: constant.WAIT_INDEFINITE.html
/// [`EV_RETURNQ_NOT_EMPTY`]: constant.EV_RETURNQ_NOT_EMPTY.html
/// [`WouldBlock`]: enum.Error.html#variant.WouldBlock
+ /// [`TimedOut`]: enum.Error.html#variant.TimedOut
pub fn wait(event_mask: u64, timeout: u64) -> (Result, u64) { unimplemented!() }
/// Send an event to one or all TCSes.
@@ -568,7 +581,7 @@ impl Usercalls {
/// Request user memory.
///
/// Request an allocation in user memory of size `size` and with alignment
- /// `align`. If succesful, a pointer to this memory will be returned. The
+ /// `align`. If successful, a pointer to this memory will be returned. The
/// enclave must check the pointer is correctly aligned and that the entire
/// range of memory pointed to is outside the enclave.
///
@@ -589,7 +602,7 @@ impl Usercalls {
/// Asynchronous usercall specification.
///
/// An asynchronous usercall allows an enclave to submit a usercall without
-/// exiting the enclave. This is necessary since enclave entries and exists are
+/// exiting the enclave. This is necessary since enclave entries and exits are
/// slow (see academic work on [SCONE], [HotCalls]). In addition, the enclave
/// can perform other tasks while it waits for the usercall to complete. Those
/// tasks may include issuing other usercalls, either synchronously or
@@ -605,18 +618,40 @@ impl Usercalls {
/// concurrent usercalls with the same `id`, but it may reuse an `id` once the
/// original usercall with that `id` has returned.
///
+/// An optional third queue can be used to cancel usercalls. To cancel an async
+/// usercall, the enclave should send the usercall's id and number on this
+/// queue. If the usercall has already been processed, the enclave may still
+/// receive a successful result for the usercall. Otherwise, the userspace will
+/// cancel the usercall's execution and return an [`Interrupted`] error on the
+/// return queue to notify the enclave of the cancellation. Note that usercalls
+/// that do not return [`Result`] cannot be cancelled and if the enclave sends
+/// a cancellation for such a usercall, the userspace should simply ignore it.
+/// Additionally, userspace may choose to ignore cancellations for non-blocking
+/// usercalls. Userspace should be able to cancel a usercall that has been sent
+/// by the enclave but not yet received by the userspace, i.e. if cancellation
+/// is received before the usercall itself. To avoid keeping such cancellations
+/// forever and preventing the enclave from re-using usercall ids, userspace
+/// should synchronize cancel queue with the usercall queue such that the
+/// following invariant is maintained: whenever the enclave writes an id to the
+/// usercall or cancel queue, the enclave will not reuse that id until the
+/// usercall queue's read pointer has advanced to the write pointer at the time
+/// the id was written.
+///
/// *TODO*: Add diagram.
///
/// [MPSC queues]: struct.FifoDescriptor.html
/// [allocated per enclave]: ../struct.Usercalls.html#method.async_queues
/// [SCONE]: https://www.usenix.org/conference/osdi16/technical-sessions/presentation/arnautov
/// [HotCalls]: http://www.ofirweisse.com/ISCA17_Ofir_Weisse.pdf
+/// [`Interrupted`]: enum.Error.html#variant.Interrupted
+/// [`Result`]: type.Result.html
///
/// # Enclave/userspace synchronization
///
/// When the enclave needs to wait on a queue, it executes the [`wait()`]
/// usercall synchronously, specifying [`EV_USERCALLQ_NOT_FULL`],
-/// [`EV_RETURNQ_NOT_EMPTY`], or both in the `event_mask`. Userspace will wake
+/// [`EV_RETURNQ_NOT_EMPTY`], [`EV_CANCELQ_NOT_FULL`], or any combination
+/// thereof in the `event_mask`. Userspace will wake
/// any or all threads waiting on the appropriate event when it is triggered.
///
/// When userspace needs to wait on a queue, it will park the current thread
@@ -627,34 +662,70 @@ impl Usercalls {
/// [`wait()`]: ../struct.Usercalls.html#method.wait
/// [`EV_USERCALLQ_NOT_FULL`]: ../constant.EV_USERCALLQ_NOT_FULL.html
/// [`EV_RETURNQ_NOT_EMPTY`]: ../constant.EV_RETURNQ_NOT_EMPTY.html
+/// [`EV_CANCELQ_NOT_FULL`]: ../constant.EV_CANCELQ_NOT_FULL.html
pub mod async {
use super::*;
- use core::sync::atomic::AtomicUsize;
+ use core::sync::atomic::{AtomicU64, AtomicUsize};
- /// An identified usercall.
#[repr(C)]
- #[derive(Copy, Clone)]
#[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
- pub struct Usercall {
- /// `0` indicates this slot is empty.
- pub id: u64,
- /// The elements correspond to the RDI, RSI, RDX, R8, and R9 registers
- /// in the synchronous calling convention.
- pub args: (u64, u64, u64, u64, u64)
+ pub struct WithId<T> {
+ pub id: AtomicU64,
+ pub data: T,
+ }
+
+ /// A usercall.
+ /// The elements correspond to the RDI, RSI, RDX, R8, and R9 registers
+ /// in the synchronous calling convention.
+ #[repr(C)]
+ #[derive(Copy, Clone, Default)]
+ #[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
+ pub struct Usercall(pub u64, pub u64, pub u64, pub u64, pub u64);
+
+ #[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
+ impl From<Usercall> for (u64, u64, u64, u64, u64) {
+ fn from(u: Usercall) -> Self {
+ let Usercall(p1, p2, p3, p4, p5) = u;
+ (p1, p2, p3, p4, p5)
+ }
+ }
+
+ #[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
+ impl From<(u64, u64, u64, u64, u64)> for Usercall {
+ fn from(p: (u64, u64, u64, u64, u64)) -> Self {
+ Usercall(p.0, p.1, p.2, p.3, p.4)
+ }
}
- /// The return value of an identified usercall.
+ /// The return value of a usercall.
+ /// The elements correspond to the RSI and RDX registers in the
+ /// synchronous calling convention.
#[repr(C)]
- #[derive(Copy, Clone)]
+ #[derive(Copy, Clone, Default)]
#[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
- pub struct Return {
- /// `0` indicates this slot is empty.
- pub id: u64,
- /// The elements correspond to the RSI and RDX registers in the
- /// synchronous calling convention.
- pub value: (u64, u64)
+ pub struct Return(pub u64, pub u64);
+
+ #[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
+ impl From<Return> for (u64, u64) {
+ fn from(r: Return) -> Self {
+ let Return(r1, r2) = r;
+ (r1, r2)
+ }
}
+ #[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
+ impl From<(u64, u64)> for Return {
+ fn from(r: (u64, u64)) -> Self {
+ Return(r.0, r.1)
+ }
+ }
+
+ /// Cancel a usercall previously sent to userspace.
+ #[repr(C)]
+ #[derive(Copy, Clone, Default)]
+ #[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
+ pub struct Cancel;
+
/// A circular buffer used as a FIFO queue with atomic reads and writes.
///
/// The read offset is the element that was most recently read by the
@@ -679,7 +750,7 @@ pub mod async {
/// 1. Load the current offsets.
/// 2. If the queue is full, wait, then go to step 1.
/// 3. Add 1 to the write offset and do an atomic compare-and-swap (CAS)
- /// with the current offsets. If the CAS was not succesful, go to step
+ /// with the current offsets. If the CAS was not successful, go to step
/// 1\.
/// 4. Write the data, then the `id`.
/// 5. If the queue was empty in step 1, signal the reader to wake up.
@@ -695,14 +766,15 @@ pub mod async {
/// 5. If `id` is `0`, go to step 4 (spin). Spinning is OK because data is
/// expected to be written imminently.
/// 6. Read the data, then store `0` in the `id`.
- /// 7. Store the new read offset.
- /// 8. If the queue was full in step 1, signal the writer to wake up.
+ /// 7. Store the new read offset, retrieving the old offsets.
+ /// 8. If the queue was full before step 7, signal the writer to wake up.
#[repr(C)]
#[cfg_attr(feature = "rustc-dep-of-std", unstable(feature = "sgx_platform", issue = "56975"))]
pub struct FifoDescriptor<T> {
/// Pointer to the queue memory. Must have a size of
- /// `len * size_of::<T>()` bytes and have alignment `align_of::<T>`.
- pub data: *mut T,
+ /// `len * size_of::<WithId<T>>()` bytes and have alignment
+ /// `align_of::<WithId<T>>`.
+ pub data: *mut WithId<T>,
/// The number of elements pointed to by `data`. Must be a power of two
/// less than or equal to 2³¹.
pub len: usize,
@@ -735,11 +807,13 @@ pub mod async {
impl Usercalls {
/// Request FIFO queues for asynchronous usercalls. `usercall_queue`
/// and `return_queue` must point to valid user memory with the correct
- /// size and alignment for their types. On return, userspace will have
- /// filled these structures with information about the queues. A single
- /// set of queues will be allocated per enclave. Once this usercall has
- /// returned succesfully, calling this usercall again is equivalent to
- /// calling `exit(true)`.
+ /// size and alignment for their types. `cancel_queue` is optional, but
+ /// if specified (not null) it must point to valid user memory with
+ /// correct size and alignment.
+ /// On return, userspace will have filled these structures with
+ /// information about the queues. A single set of queues will be
+ /// allocated per enclave. Once this usercall has returned successfully,
+ /// calling this usercall again is equivalent to calling `exit(true)`.
///
/// May fail if the platform does not support asynchronous usercalls.
///
@@ -747,7 +821,11 @@ pub mod async {
/// [`FifoDescriptor`] is outside the enclave.
///
/// [`FifoDescriptor`]: async/struct.FifoDescriptor.html
- pub fn async_queues(usercall_queue: *mut FifoDescriptor<Usercall>, return_queue: *mut FifoDescriptor<Return>) -> Result { unimplemented!() }
+ pub fn async_queues(
+ usercall_queue: *mut FifoDescriptor<Usercall>,
+ return_queue: *mut FifoDescriptor<Return>,
+ cancel_queue: *mut FifoDescriptor<Cancel>
+ ) -> Result { unimplemented!() }
}
}
diff --git a/vendor/fs-err/.cargo-checksum.json b/vendor/fs-err/.cargo-checksum.json
index 96f6899da..0cafc2bae 100644
--- a/vendor/fs-err/.cargo-checksum.json
+++ b/vendor/fs-err/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"8b53bca7b646d3afd45cde66ce850b263218904ecdd66f47e5684ef04ec873b8","Cargo.toml":"03bb23a8e71f90f8e7e5c6120f97f22b3319b2be1adb751a5f6b312fa62c9a18","LICENSE-APACHE":"7cfd738c53d61c79f07e348f622bf7707c9084237054d37fbe07788a75f5881c","LICENSE-MIT":"36516aefdc84c5d5a1e7485425913a22dbda69eb1930c5e84d6ae4972b5194b9","README.md":"e5c3355cb080a50bade0664df1f853e3f041121a9aa5bda2074ce6e01e210437","README.tpl":"de2f4fa16d473b928004aed4e11bd70522690961c6e34094a07fc68e9a092426","src/dir.rs":"1fbc8a3ada7e5e8a8c15dc0bf0e3c94cbeeea26e4a5f2b411c62d93adc023ebb","src/errors.rs":"263370df16fb2fc2c77c7b434da301792c61841960855dc11ba99523a324a2f3","src/file.rs":"dccdbd8f2b2e4e7c167df555f3a1facbf8003292c081d842711a852f2cf4b471","src/lib.rs":"f3e2041ef73f15b88594d93370b53e8f08717f7ce142184ec0c40e42d7b73c91","src/open_options.rs":"3ea24a370732eff1da0fae2205f251d3171d4e5e03f4c38508a2114942a16466","src/os.rs":"54fe6cb71a24592de1cb4e1fcebdeaba5e58b26925dbf2dc868e8dd0b0a7bef7","src/os/unix.rs":"3e2940651ce8d7b624d10bb9f3e64334812e1bb0476d12dfec130dcb1b16fe7e","src/os/windows.rs":"6dc3099f9e48a386cba9f58599796583f0cb3c8b7123168f8d1c8e27fd8763e3","src/path.rs":"949dff5847ef0983ede9e9eec1fa0f3e6d8ffd1a35004249ad04a2d2700eb85b","tests/version-numbers.rs":"370467b40ce930d655389ba82015ae2842b3361bf24280c3dc7214d3ac163a2d"},"package":"bcd1163ae48bda72a20ae26d66a04d3094135cadab911cff418ae5e33f253431"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"fb2609e5837d71e923def1765b6addc4d11b0b5040e7eb9bdbf50d59a4a5cd42","Cargo.toml":"b468e8d560ea6e30277c2ee438ac650bbb2397f5b62da911126c180921aa5d29","LICENSE-APACHE":"7cfd738c53d61c79f07e348f622bf7707c9084237054d37fbe07788a75f5881c","LICENSE-MIT":"36516aefdc84c5d5a1e7485425913a22dbda69eb1930c5e84d6ae4972b5194b9","README.md":"adbf428f33a04028cc8db98d7b75bdcf28d0edb5e792867578bcb93f1784abec","src/dir.rs":"c5255382d7357f2fbcb0b45325a343277d347f0dd0b5f0e5ff74cb808020795d","src/errors.rs":"f04771790f55627fdc39de43a1d16f7d0125bbf48d4a1c8a70921f2670dd3eaa","src/file.rs":"4516834bc52f1219f10e369bf570fd432493ceaf5d52d239d93a5e69ceaed0aa","src/lib.rs":"1a10c04bde2bc3ae30cc328afb0aa00ac98ab80c6bfff5ae94ee7e5bdbe86ec8","src/open_options.rs":"304c5be36b5a6c5ecc2c731e2956627494945d093952c879d8f3c5b15216b1d0","src/os.rs":"54fe6cb71a24592de1cb4e1fcebdeaba5e58b26925dbf2dc868e8dd0b0a7bef7","src/os/unix.rs":"21ab862305b9e1034c41bb4be31b1f3d43e3d208ca3e622211b6b54d1bbd9acc","src/os/windows.rs":"4cf0530becb6fed439f469e1f22f57de9ae2ac15e39f2a973f4734aee6267ed0","src/path.rs":"a026ae234184ed1bbadd9051099e201c3ac6309b1fd939d1b2d2b2a7cb82230d"},"package":"64db3e262960f0662f43a6366788d5f10f7f244b8f7d7d987f560baf5ded5c50"} \ No newline at end of file
diff --git a/vendor/fs-err/CHANGELOG.md b/vendor/fs-err/CHANGELOG.md
index bc973e22c..ee7e4be32 100644
--- a/vendor/fs-err/CHANGELOG.md
+++ b/vendor/fs-err/CHANGELOG.md
@@ -1,5 +1,22 @@
# fs-err Changelog
+## 2.8.1
+
+* Fixed docs.rs build
+
+## 2.8.0
+
+* Implement I/O safety traits (`AsFd`/`AsHandle`, `Into<OwnedFd>`/`Into<OwnedHandle>`) for file. This feature requires Rust 1.63 or later and is gated behind the `io_safety` feature flag. ([#39](https://github.com/andrewhickman/fs-err/pull/39))
+
+## 2.7.0
+
+* Implement `From<fs_err::File> for std::fs::File` ([#38](https://github.com/andrewhickman/fs-err/pull/38))
+
+## 2.6.0
+
+* Added [`File::into_parts`](https://docs.rs/fs-err/2.6.0/fs_err/struct.File.html#method.into_parts) and [`File::file_mut`](https://docs.rs/fs-err/2.6.0/fs_err/struct.File.html#method.file_mut) to provide more access to the underlying `std::fs::File`.
+* Fixed some typos in documention ([#33](https://github.com/andrewhickman/fs-err/pull/33))
+
## 2.5.0
* Added `symlink` for unix platforms
* Added `symlink_file` and `symlink_dir` for windows
@@ -11,7 +28,7 @@
- Added trait wrappers for `std::os::{unix, windows}::fs::OpenOptionsExt` and implemented them for `fs_err::OpenOptions`
* Improved compile times by converting arguments early and forwarding only a small number of types internally. There will be a slight performance hit only in the error case.
* Reduced trait bounds on generics from `AsRef<Path> + Into<PathBuf>` to either `AsRef<Path>` or `Into<PathBuf>`, making the functions more general.
-
+
## 2.4.0
* Added `canonicalize`, `hard link`, `read_link`, `rename`, `symlink_metadata` and `soft_link`. ([#25](https://github.com/andrewhickman/fs-err/pull/25))
* Added aliases to `std::path::Path` via extension trait ([#26](https://github.com/andrewhickman/fs-err/pull/26))
diff --git a/vendor/fs-err/Cargo.toml b/vendor/fs-err/Cargo.toml
index 62c4c651c..07bada50a 100644
--- a/vendor/fs-err/Cargo.toml
+++ b/vendor/fs-err/Cargo.toml
@@ -3,28 +3,53 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
name = "fs-err"
-version = "2.5.0"
+version = "2.8.1"
authors = ["Andrew Hickman <andrew.hickman1@sky.com>"]
+exclude = [
+ ".github",
+ ".gitignore",
+ "README.tpl",
+]
description = "A drop-in replacement for std::fs with more helpful error messages."
documentation = "https://docs.rs/fs-err"
readme = "README.md"
-categories = ["command-line-interface", "filesystem"]
+categories = [
+ "command-line-interface",
+ "filesystem",
+]
license = "MIT/Apache-2.0"
repository = "https://github.com/andrewhickman/fs-err"
+[package.metadata.release]
+tag-name = "{{version}}"
+sign-tag = true
+
+[[package.metadata.release.pre-release-replacements]]
+file = "src/lib.rs"
+search = 'html_root_url = "https://docs\.rs/fs-err/.*?"'
+replace = "html_root_url = \"https://docs.rs/fs-err/{{version}}\""
+exactly = 1
+
+[package.metadata.docs.rs]
+all-features = true
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+
[dependencies]
+
[dev-dependencies.serde_json]
-version = "1.0.48"
+version = "1.0.64"
-[dev-dependencies.version-sync]
-version = "0.8.1"
+[features]
+io_safety = []
diff --git a/vendor/fs-err/README.md b/vendor/fs-err/README.md
index 70bf1fa44..0dc5fc1c3 100644
--- a/vendor/fs-err/README.md
+++ b/vendor/fs-err/README.md
@@ -11,7 +11,7 @@
fs-err is a drop-in replacement for [`std::fs`][std::fs] that provides more
helpful messages on errors. Extra information includes which operations was
-attmpted and any involved paths.
+attempted and any involved paths.
## Error Messages
diff --git a/vendor/fs-err/README.tpl b/vendor/fs-err/README.tpl
deleted file mode 100644
index 35ac8052d..000000000
--- a/vendor/fs-err/README.tpl
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
- This readme is created with https://github.com/livioribeiro/cargo-readme
-
- Edit `src/lib.rs` and use `cargo readme > README.md` to update it.
--->
-
-# {{crate}}
-
-[![Crates.io](https://img.shields.io/crates/v/fs-err.svg)](https://crates.io/crates/fs-err)
-[![GitHub Actions](https://github.com/andrewhickman/fs-err/workflows/CI/badge.svg)](https://github.com/andrewhickman/fs-err/actions?query=workflow%3ACI)
-
-{{readme}}
-
-## License
-
-Licensed under either of
-
-* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or https://www.apache.org/licenses/LICENSE-2.0)
-* MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)
-
-at your option.
-
-### Contribution
-
-Unless you explicitly state otherwise, any contribution intentionally
-submitted for inclusion in the work by you, as defined in the Apache-2.0
-license, shall be dual licensed as above, without any additional terms or
-conditions. \ No newline at end of file
diff --git a/vendor/fs-err/src/dir.rs b/vendor/fs-err/src/dir.rs
index adba643b9..6efa58da6 100644
--- a/vendor/fs-err/src/dir.rs
+++ b/vendor/fs-err/src/dir.rs
@@ -11,7 +11,7 @@ pub fn read_dir<P: Into<PathBuf>>(path: P) -> io::Result<ReadDir> {
match fs::read_dir(&path) {
Ok(inner) => Ok(ReadDir { inner, path }),
- Err(source) => Err(Error::new(source, ErrorKind::ReadDir, path)),
+ Err(source) => Err(Error::build(source, ErrorKind::ReadDir, path)),
}
}
@@ -32,7 +32,12 @@ impl Iterator for ReadDir {
type Item = io::Result<DirEntry>;
fn next(&mut self) -> Option<Self::Item> {
- Some(self.inner.next()?.map(|inner| DirEntry { inner }))
+ Some(
+ self.inner
+ .next()?
+ .map_err(|source| Error::build(source, ErrorKind::ReadDir, &self.path))
+ .map(|inner| DirEntry { inner }),
+ )
}
}
@@ -55,14 +60,14 @@ impl DirEntry {
pub fn metadata(&self) -> io::Result<fs::Metadata> {
self.inner
.metadata()
- .map_err(|source| Error::new(source, ErrorKind::Metadata, self.path()))
+ .map_err(|source| Error::build(source, ErrorKind::Metadata, self.path()))
}
/// Wrapper for [`DirEntry::file_type`](https://doc.rust-lang.org/stable/std/fs/struct.DirEntry.html#method.file_type).
pub fn file_type(&self) -> io::Result<fs::FileType> {
self.inner
.file_type()
- .map_err(|source| Error::new(source, ErrorKind::Metadata, self.path()))
+ .map_err(|source| Error::build(source, ErrorKind::Metadata, self.path()))
}
/// Wrapper for [`DirEntry::file_name`](https://doc.rust-lang.org/stable/std/fs/struct.DirEntry.html#method.file_name).
diff --git a/vendor/fs-err/src/errors.rs b/vendor/fs-err/src/errors.rs
index 466d28f11..43bc4ba42 100644
--- a/vendor/fs-err/src/errors.rs
+++ b/vendor/fs-err/src/errors.rs
@@ -47,12 +47,15 @@ pub(crate) struct Error {
}
impl Error {
- pub fn new(source: io::Error, kind: ErrorKind, path: impl Into<PathBuf>) -> io::Error {
- Self::_new(source, kind, path.into())
- }
-
- fn _new(source: io::Error, kind: ErrorKind, path: PathBuf) -> io::Error {
- io::Error::new(source.kind(), Self { kind, source, path })
+ pub fn build(source: io::Error, kind: ErrorKind, path: impl Into<PathBuf>) -> io::Error {
+ io::Error::new(
+ source.kind(),
+ Self {
+ kind,
+ source,
+ path: path.into(),
+ },
+ )
}
}
@@ -131,28 +134,19 @@ pub(crate) struct SourceDestError {
}
impl SourceDestError {
- pub fn new(
+ pub fn build(
source: io::Error,
kind: SourceDestErrorKind,
from_path: impl Into<PathBuf>,
to_path: impl Into<PathBuf>,
) -> io::Error {
- Self::_new(source, kind, from_path.into(), to_path.into())
- }
-
- fn _new(
- source: io::Error,
- kind: SourceDestErrorKind,
- from_path: PathBuf,
- to_path: PathBuf,
- ) -> io::Error {
io::Error::new(
source.kind(),
Self {
kind,
source,
- from_path,
- to_path,
+ from_path: from_path.into(),
+ to_path: to_path.into(),
},
)
}
diff --git a/vendor/fs-err/src/file.rs b/vendor/fs-err/src/file.rs
index a9c8988e5..fcf54fe3c 100644
--- a/vendor/fs-err/src/file.rs
+++ b/vendor/fs-err/src/file.rs
@@ -17,12 +17,12 @@ pub struct File {
// Opens a std File and returns it or an error generator which only needs the path to produce the error.
// Exists for the `crate::read*` functions so they don't unconditionally build a PathBuf.
pub(crate) fn open(path: &Path) -> Result<std::fs::File, impl FnOnce(PathBuf) -> io::Error> {
- fs::File::open(&path).map_err(|err| |path| Error::new(err, ErrorKind::OpenFile, path))
+ fs::File::open(&path).map_err(|err| |path| Error::build(err, ErrorKind::OpenFile, path))
}
// like `open()` but for `crate::write`
pub(crate) fn create(path: &Path) -> Result<std::fs::File, impl FnOnce(PathBuf) -> io::Error> {
- fs::File::create(&path).map_err(|err| |path| Error::new(err, ErrorKind::CreateFile, path))
+ fs::File::create(&path).map_err(|err| |path| Error::build(err, ErrorKind::CreateFile, path))
}
/// Wrappers for methods from [`std::fs::File`][std::fs::File].
@@ -65,7 +65,7 @@ impl File {
let path = path.into();
match options.open(&path) {
Ok(file) => Ok(File::from_parts(file, path)),
- Err(source) => Err(Error::new(source, ErrorKind::OpenFile, path)),
+ Err(source) => Err(Error::build(source, ErrorKind::OpenFile, path)),
}
}
@@ -114,7 +114,13 @@ impl File {
.set_permissions(perm)
.map_err(|source| self.error(source, ErrorKind::SetPermissions))
}
+}
+/// Methods added by fs-err that are not available on
+/// [`std::fs::File`][std::fs::File].
+///
+/// [std::fs::File]: https://doc.rust-lang.org/stable/std/fs/struct.File.html
+impl File {
/// Creates a [`File`](struct.File.html) from a raw file and its path.
pub fn from_parts<P>(file: fs::File, path: P) -> Self
where
@@ -125,13 +131,12 @@ impl File {
path: path.into(),
}
}
-}
-/// Methods added by fs-err that are not available on
-/// [`std::fs::File`][std::fs::File].
-///
-/// [std::fs::File]: https://doc.rust-lang.org/stable/std/fs/struct.File.html
-impl File {
+ /// Extract the raw file and its path from this [`File`](struct.File.html)
+ pub fn into_parts(self) -> (fs::File, PathBuf) {
+ (self.file, self.path)
+ }
+
/// Returns a reference to the underlying [`std::fs::File`][std::fs::File].
///
/// [std::fs::File]: https://doc.rust-lang.org/stable/std/fs/struct.File.html
@@ -139,6 +144,13 @@ impl File {
&self.file
}
+ /// Returns a mutable reference to the underlying [`std::fs::File`][std::fs::File].
+ ///
+ /// [std::fs::File]: https://doc.rust-lang.org/stable/std/fs/struct.File.html
+ pub fn file_mut(&mut self) -> &mut fs::File {
+ &mut self.file
+ }
+
/// Returns a reference to the path that this file was created with.
pub fn path(&self) -> &Path {
&self.path
@@ -146,7 +158,7 @@ impl File {
/// Wrap the error in information specific to this `File` object.
fn error(&self, source: io::Error, kind: ErrorKind) -> io::Error {
- Error::new(source, kind, &self.path)
+ Error::build(source, kind, &self.path)
}
}
@@ -178,6 +190,12 @@ impl<'a> Read for &'a File {
}
}
+impl From<File> for fs::File {
+ fn from(file: File) -> Self {
+ file.into_parts().0
+ }
+}
+
impl Seek for File {
fn seek(&mut self, pos: std::io::SeekFrom) -> std::io::Result<u64> {
self.file
@@ -266,6 +284,25 @@ mod unix {
.map_err(|err| self.error(err, ErrorKind::WriteAt))
}
}
+
+ #[cfg(feature = "io_safety")]
+ mod io_safety {
+ use std::os::unix::io::{AsFd, BorrowedFd, OwnedFd};
+
+ #[cfg_attr(docsrs, doc(cfg(feature = "io_safety")))]
+ impl AsFd for crate::File {
+ fn as_fd(&self) -> BorrowedFd<'_> {
+ self.file().as_fd()
+ }
+ }
+
+ #[cfg_attr(docsrs, doc(cfg(feature = "io_safety")))]
+ impl From<crate::File> for OwnedFd {
+ fn from(file: crate::File) -> Self {
+ file.into_parts().0.into()
+ }
+ }
+ }
}
#[cfg(windows)]
@@ -307,4 +344,23 @@ mod windows {
self.file.into_raw_handle()
}
}
+
+ #[cfg(feature = "io_safety")]
+ mod io_safety {
+ use std::os::windows::io::{AsHandle, BorrowedHandle, OwnedHandle};
+
+ #[cfg_attr(docsrs, doc(cfg(feature = "io_safety")))]
+ impl AsHandle for crate::File {
+ fn as_handle(&self) -> BorrowedHandle<'_> {
+ self.file().as_handle()
+ }
+ }
+
+ #[cfg_attr(docsrs, doc(cfg(feature = "io_safety")))]
+ impl From<crate::File> for OwnedHandle {
+ fn from(file: crate::File) -> Self {
+ file.into_parts().0.into()
+ }
+ }
+ }
}
diff --git a/vendor/fs-err/src/lib.rs b/vendor/fs-err/src/lib.rs
index 3cc8a3b4d..777db9535 100644
--- a/vendor/fs-err/src/lib.rs
+++ b/vendor/fs-err/src/lib.rs
@@ -1,7 +1,7 @@
/*!
fs-err is a drop-in replacement for [`std::fs`][std::fs] that provides more
helpful messages on errors. Extra information includes which operations was
-attmpted and any involved paths.
+attempted and any involved paths.
# Error Messages
@@ -66,8 +66,9 @@ println!("Program config: {:?}", decoded);
[serde_json]: https://crates.io/crates/serde_json
*/
-#![doc(html_root_url = "https://docs.rs/fs-err/2.5.0")]
+#![doc(html_root_url = "https://docs.rs/fs-err/2.8.1")]
#![deny(missing_debug_implementations, missing_docs)]
+#![cfg_attr(docsrs, feature(doc_cfg))]
mod dir;
mod errors;
@@ -90,20 +91,20 @@ pub use path::PathExt;
/// Wrapper for [`fs::read`](https://doc.rust-lang.org/stable/std/fs/fn.read.html).
pub fn read<P: AsRef<Path>>(path: P) -> io::Result<Vec<u8>> {
let path = path.as_ref();
- let mut file = file::open(path.as_ref()).map_err(|err_gen| err_gen(path.to_path_buf()))?;
+ let mut file = file::open(path).map_err(|err_gen| err_gen(path.to_path_buf()))?;
let mut bytes = Vec::with_capacity(initial_buffer_size(&file));
file.read_to_end(&mut bytes)
- .map_err(|err| Error::new(err, ErrorKind::Read, path))?;
+ .map_err(|err| Error::build(err, ErrorKind::Read, path))?;
Ok(bytes)
}
/// Wrapper for [`fs::read_to_string`](https://doc.rust-lang.org/stable/std/fs/fn.read_to_string.html).
pub fn read_to_string<P: AsRef<Path>>(path: P) -> io::Result<String> {
let path = path.as_ref();
- let mut file = file::open(path.as_ref()).map_err(|err_gen| err_gen(path.to_path_buf()))?;
+ let mut file = file::open(path).map_err(|err_gen| err_gen(path.to_path_buf()))?;
let mut string = String::with_capacity(initial_buffer_size(&file));
file.read_to_string(&mut string)
- .map_err(|err| Error::new(err, ErrorKind::Read, path))?;
+ .map_err(|err| Error::build(err, ErrorKind::Read, path))?;
Ok(string)
}
@@ -113,7 +114,7 @@ pub fn write<P: AsRef<Path>, C: AsRef<[u8]>>(path: P, contents: C) -> io::Result
file::create(path)
.map_err(|err_gen| err_gen(path.to_path_buf()))?
.write_all(contents.as_ref())
- .map_err(|err| Error::new(err, ErrorKind::Write, path))
+ .map_err(|err| Error::build(err, ErrorKind::Write, path))
}
/// Wrapper for [`fs::copy`](https://doc.rust-lang.org/stable/std/fs/fn.copy.html).
@@ -125,7 +126,7 @@ where
let from = from.as_ref();
let to = to.as_ref();
fs::copy(from, to)
- .map_err(|source| SourceDestError::new(source, SourceDestErrorKind::Copy, from, to))
+ .map_err(|source| SourceDestError::build(source, SourceDestErrorKind::Copy, from, to))
}
/// Wrapper for [`fs::create_dir`](https://doc.rust-lang.org/stable/std/fs/fn.create_dir.html).
@@ -134,7 +135,7 @@ where
P: AsRef<Path>,
{
let path = path.as_ref();
- fs::create_dir(path).map_err(|source| Error::new(source, ErrorKind::CreateDir, path))
+ fs::create_dir(path).map_err(|source| Error::build(source, ErrorKind::CreateDir, path))
}
/// Wrapper for [`fs::create_dir_all`](https://doc.rust-lang.org/stable/std/fs/fn.create_dir_all.html).
@@ -143,7 +144,7 @@ where
P: AsRef<Path>,
{
let path = path.as_ref();
- fs::create_dir_all(path).map_err(|source| Error::new(source, ErrorKind::CreateDir, path))
+ fs::create_dir_all(path).map_err(|source| Error::build(source, ErrorKind::CreateDir, path))
}
/// Wrapper for [`fs::remove_dir`](https://doc.rust-lang.org/stable/std/fs/fn.remove_dir.html).
@@ -152,7 +153,7 @@ where
P: AsRef<Path>,
{
let path = path.as_ref();
- fs::remove_dir(path).map_err(|source| Error::new(source, ErrorKind::RemoveDir, path))
+ fs::remove_dir(path).map_err(|source| Error::build(source, ErrorKind::RemoveDir, path))
}
/// Wrapper for [`fs::remove_dir_all`](https://doc.rust-lang.org/stable/std/fs/fn.remove_dir_all.html).
@@ -161,7 +162,7 @@ where
P: AsRef<Path>,
{
let path = path.as_ref();
- fs::remove_dir_all(path).map_err(|source| Error::new(source, ErrorKind::RemoveDir, path))
+ fs::remove_dir_all(path).map_err(|source| Error::build(source, ErrorKind::RemoveDir, path))
}
/// Wrapper for [`fs::remove_file`](https://doc.rust-lang.org/stable/std/fs/fn.remove_file.html).
@@ -170,19 +171,19 @@ where
P: AsRef<Path>,
{
let path = path.as_ref();
- fs::remove_file(path).map_err(|source| Error::new(source, ErrorKind::RemoveFile, path))
+ fs::remove_file(path).map_err(|source| Error::build(source, ErrorKind::RemoveFile, path))
}
/// Wrapper for [`fs::metadata`](https://doc.rust-lang.org/stable/std/fs/fn.metadata.html).
pub fn metadata<P: AsRef<Path>>(path: P) -> io::Result<fs::Metadata> {
let path = path.as_ref();
- fs::metadata(path).map_err(|source| Error::new(source, ErrorKind::Metadata, path))
+ fs::metadata(path).map_err(|source| Error::build(source, ErrorKind::Metadata, path))
}
/// Wrapper for [`fs::canonicalize`](https://doc.rust-lang.org/stable/std/fs/fn.canonicalize.html).
pub fn canonicalize<P: AsRef<Path>>(path: P) -> io::Result<PathBuf> {
let path = path.as_ref();
- fs::canonicalize(path).map_err(|source| Error::new(source, ErrorKind::Canonicalize, path))
+ fs::canonicalize(path).map_err(|source| Error::build(source, ErrorKind::Canonicalize, path))
}
/// Wrapper for [`fs::hard_link`](https://doc.rust-lang.org/stable/std/fs/fn.hard_link.html).
@@ -190,13 +191,13 @@ pub fn hard_link<P: AsRef<Path>, Q: AsRef<Path>>(src: P, dst: Q) -> io::Result<(
let src = src.as_ref();
let dst = dst.as_ref();
fs::hard_link(src, dst)
- .map_err(|source| SourceDestError::new(source, SourceDestErrorKind::HardLink, src, dst))
+ .map_err(|source| SourceDestError::build(source, SourceDestErrorKind::HardLink, src, dst))
}
/// Wrapper for [`fs::read_link`](https://doc.rust-lang.org/stable/std/fs/fn.read_link.html).
pub fn read_link<P: AsRef<Path>>(path: P) -> io::Result<PathBuf> {
let path = path.as_ref();
- fs::read_link(path).map_err(|source| Error::new(source, ErrorKind::ReadLink, path))
+ fs::read_link(path).map_err(|source| Error::build(source, ErrorKind::ReadLink, path))
}
/// Wrapper for [`fs::rename`](https://doc.rust-lang.org/stable/std/fs/fn.rename.html).
@@ -204,7 +205,7 @@ pub fn rename<P: AsRef<Path>, Q: AsRef<Path>>(from: P, to: Q) -> io::Result<()>
let from = from.as_ref();
let to = to.as_ref();
fs::rename(from, to)
- .map_err(|source| SourceDestError::new(source, SourceDestErrorKind::Rename, from, to))
+ .map_err(|source| SourceDestError::build(source, SourceDestErrorKind::Rename, from, to))
}
/// Wrapper for [`fs::soft_link`](https://doc.rust-lang.org/stable/std/fs/fn.soft_link.html).
@@ -215,21 +216,21 @@ pub fn soft_link<P: AsRef<Path>, Q: AsRef<Path>>(src: P, dst: Q) -> io::Result<(
let dst = dst.as_ref();
#[allow(deprecated)]
fs::soft_link(src, dst)
- .map_err(|source| SourceDestError::new(source, SourceDestErrorKind::SoftLink, src, dst))
+ .map_err(|source| SourceDestError::build(source, SourceDestErrorKind::SoftLink, src, dst))
}
/// Wrapper for [`fs::symlink_metadata`](https://doc.rust-lang.org/stable/std/fs/fn.symlink_metadata.html).
pub fn symlink_metadata<P: AsRef<Path>>(path: P) -> io::Result<fs::Metadata> {
let path = path.as_ref();
fs::symlink_metadata(path)
- .map_err(|source| Error::new(source, ErrorKind::SymlinkMetadata, path))
+ .map_err(|source| Error::build(source, ErrorKind::SymlinkMetadata, path))
}
/// Wrapper for [`fs::set_permissions`](https://doc.rust-lang.org/stable/std/fs/fn.set_permissions.html).
pub fn set_permissions<P: AsRef<Path>>(path: P, perm: fs::Permissions) -> io::Result<()> {
let path = path.as_ref();
fs::set_permissions(path, perm)
- .map_err(|source| Error::new(source, ErrorKind::SetPermissions, path))
+ .map_err(|source| Error::build(source, ErrorKind::SetPermissions, path))
}
fn initial_buffer_size(file: &std::fs::File) -> usize {
diff --git a/vendor/fs-err/src/open_options.rs b/vendor/fs-err/src/open_options.rs
index 2a11a3974..557fa7abe 100644
--- a/vendor/fs-err/src/open_options.rs
+++ b/vendor/fs-err/src/open_options.rs
@@ -5,6 +5,7 @@ pub struct OpenOptions(fs::OpenOptions);
impl OpenOptions {
/// Wrapper for [`std::fs::OpenOptions::new`](https://doc.rust-lang.org/std/fs/struct.OpenOptions.html#method.new)
+ #[allow(clippy::new_without_default)]
pub fn new() -> Self {
OpenOptions(fs::OpenOptions::new())
}
diff --git a/vendor/fs-err/src/os/unix.rs b/vendor/fs-err/src/os/unix.rs
index 1c0bbc24d..ad7c488c4 100644
--- a/vendor/fs-err/src/os/unix.rs
+++ b/vendor/fs-err/src/os/unix.rs
@@ -11,7 +11,7 @@ pub mod fs {
let src = src.as_ref();
let dst = dst.as_ref();
std::os::unix::fs::symlink(src, dst)
- .map_err(|err| SourceDestError::new(err, SourceDestErrorKind::Symlink, src, dst))
+ .map_err(|err| SourceDestError::build(err, SourceDestErrorKind::Symlink, src, dst))
}
/// Wrapper for [`std::os::unix::fs::FileExt`](https://doc.rust-lang.org/std/os/unix/fs/trait.FileExt.html).
@@ -30,9 +30,9 @@ pub mod fs {
/// The std traits might be extended in the future (See issue [#49961](https://github.com/rust-lang/rust/issues/49961#issuecomment-382751777)).
/// This trait is sealed and can not be implemented by other crates.
pub trait OpenOptionsExt: crate::Sealed {
- /// Wapper for [`OpenOptionsExt::mode`](https://doc.rust-lang.org/std/os/unix/fs/trait.OpenOptionsExt.html#tymethod.mode)
+ /// Wrapper for [`OpenOptionsExt::mode`](https://doc.rust-lang.org/std/os/unix/fs/trait.OpenOptionsExt.html#tymethod.mode)
fn mode(&mut self, mode: u32) -> &mut Self;
- /// Wapper for [`OpenOptionsExt::custom_flags`](https://doc.rust-lang.org/std/os/unix/fs/trait.OpenOptionsExt.html#tymethod.custom_flags)
+ /// Wrapper for [`OpenOptionsExt::custom_flags`](https://doc.rust-lang.org/std/os/unix/fs/trait.OpenOptionsExt.html#tymethod.custom_flags)
fn custom_flags(&mut self, flags: i32) -> &mut Self;
}
}
diff --git a/vendor/fs-err/src/os/windows.rs b/vendor/fs-err/src/os/windows.rs
index 3aaa4a2b8..f55985623 100644
--- a/vendor/fs-err/src/os/windows.rs
+++ b/vendor/fs-err/src/os/windows.rs
@@ -8,7 +8,7 @@ pub mod fs {
let src = src.as_ref();
let dst = dst.as_ref();
std::os::windows::fs::symlink_dir(src, dst)
- .map_err(|err| SourceDestError::new(err, SourceDestErrorKind::SymlinkDir, src, dst))
+ .map_err(|err| SourceDestError::build(err, SourceDestErrorKind::SymlinkDir, src, dst))
}
/// Wrapper for [std::os::windows::fs::symlink_file](https://doc.rust-lang.org/std/os/windows/fs/fn.symlink_file.html)
@@ -16,7 +16,7 @@ pub mod fs {
let src = src.as_ref();
let dst = dst.as_ref();
std::os::windows::fs::symlink_file(src, dst)
- .map_err(|err| SourceDestError::new(err, SourceDestErrorKind::SymlinkFile, src, dst))
+ .map_err(|err| SourceDestError::build(err, SourceDestErrorKind::SymlinkFile, src, dst))
}
/// Wrapper for [`std::os::windows::fs::FileExt`](https://doc.rust-lang.org/std/os/windows/fs/trait.FileExt.html).
diff --git a/vendor/fs-err/src/path.rs b/vendor/fs-err/src/path.rs
index ed6b9eaf1..28549a31c 100644
--- a/vendor/fs-err/src/path.rs
+++ b/vendor/fs-err/src/path.rs
@@ -6,7 +6,7 @@ use std::path::{Path, PathBuf};
///
/// This trait is sealed and can not be implemented by other crates.
//
-// Because noone else can implement it, we can add methods backwards-compatibly.
+// Because no one else can implement it, we can add methods backwards-compatibly.
pub trait PathExt: crate::Sealed {
/// Wrapper for [`crate::metadata`].
fn fs_err_metadata(&self) -> io::Result<fs::Metadata>;
diff --git a/vendor/fs-err/tests/version-numbers.rs b/vendor/fs-err/tests/version-numbers.rs
deleted file mode 100644
index 41a5ea480..000000000
--- a/vendor/fs-err/tests/version-numbers.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-#[test]
-fn test_readme_deps() {
- version_sync::assert_markdown_deps_updated!("README.md");
-}
-
-#[test]
-fn test_html_root_url() {
- version_sync::assert_html_root_url_updated!("src/lib.rs");
-}
diff --git a/vendor/generic-array-0.12.4/.cargo-checksum.json b/vendor/generic-array-0.12.4/.cargo-checksum.json
deleted file mode 100644
index cfe4f79f6..000000000
--- a/vendor/generic-array-0.12.4/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CHANGELOG.md":"ae7c1d7fcd6dceb6472568994016862441606c444d0670d4e9dffab20c5eeea3","Cargo.toml":"122428b66e56c3287df569deba1e7de4b7c316cee39e1f9e1c3e7d80c793e427","LICENSE":"ad4fcfaf8d5b12b97409c137a03d4a4e4b21024c65c54f976cc3b609c1bd5b0f","README.md":"9a1a45416eac57050036b13df6ec84d21d555e820726af3c782896bd9d37d94b","rustfmt.toml":"2a298b4ce1fe6e16b8f281a0035567b8eb15042ed3062729fd28224f29c2f75a","src/arr.rs":"d866a89232279e5602cfe80b7f4e0db2b8b1153532ca72f61d65ba4d792fa603","src/functional.rs":"a0b12be07c1cc85549a80ddf1cfa1c7d5cbc09c3710bb635a5f95c35537005dc","src/hex.rs":"45e780bf385f99eec5058cfae87f97042679b1e8cbc130c009d4c074052016aa","src/impl_serde.rs":"5556e952fd351ab0af27bb562b1b6382e96a20afe51a04300264842e1fb33747","src/impls.rs":"d3046213d058b43b7b7360a2fa9ab6794e44970f1bc1847649c42c8f1c4f2d75","src/iter.rs":"b8b130ddd52461c435b873b9435f771d6535ae835055a73d79c0f3105f6b367e","src/lib.rs":"99a3fe3bc49cbfb9f00554d4860b24abe02e8075404fdb88343f2ee389f09110","src/sequence.rs":"bdf4d8920205bb85dee95897940373991b232e7b0614ae52c03c5f4bc4e8dccc","tests/arr.rs":"97258231dfeefc52ec785c2019611cc1a339c3a13f744a26727a591f7e46a7a8","tests/generics.rs":"8da33daacab14d0fd685e0ca6292a2d19be23fa6c6e128921b554a7e1d6181a1","tests/hex.rs":"143d783defedd6609995862f8aac46b8c843272a8f877f83d2f7242de8814c02","tests/import_name.rs":"1235729ecbde47fc9a38b3bf35c750a53ed55e3cf967c9d2b24fd759dc9e9e0c","tests/iter.rs":"3e5e6a1354709e8bfa76e52969c61f3d21cb960027bb91745049c0dcdfa52bfd","tests/mod.rs":"75694855127075e14ddef490fffee3dea5a052bcdda2912878bd9995f3f2956d"},"package":"ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd"} \ No newline at end of file
diff --git a/vendor/generic-array-0.12.4/CHANGELOG.md b/vendor/generic-array-0.12.4/CHANGELOG.md
deleted file mode 100644
index d5e50e7b1..000000000
--- a/vendor/generic-array-0.12.4/CHANGELOG.md
+++ /dev/null
@@ -1,51 +0,0 @@
-* **`0.12.4`**
- * Fix unsoundness in the `arr!` macro.
-
-* **`0.12.0`**
- * Allow trailing commas in `arr!` macro.
- * **BREAKING**: Serialize `GenericArray` using `serde` tuples, instead of variable-length sequences. This may not be compatible with old serialized data.
-
-* **`0.11.0`**
- * **BREAKING** Redesign `GenericSequence` with an emphasis on use in generic type parameters.
- * Add `MappedGenericSequence` and `FunctionalSequence`
- * Implements optimized `map`, `zip` and `fold` for `GenericArray`, `&GenericArray` and `&mut GenericArray`
- * **BREAKING** Remove `map_ref`, `zip_ref` and `map_slice`
- * `map_slice` is now equivalent to `GenericArray::from_iter(slice.iter().map(...))`
-* **`0.10.0`**
- * Add `GenericSequence`, `Lengthen`, `Shorten`, `Split` and `Concat` traits.
- * Redefine `transmute` to avert errors.
-* **`0.9.0`**
- * Rewrite construction methods to be well-defined in panic situations, correctly dropping elements.
- * `NoDrop` crate replaced by `ManuallyDrop` as it became stable in Rust core.
- * Add optimized `map`/`map_ref` and `zip`/`zip_ref` methods to `GenericArray`
-* **`0.8.0`**
- * Implement `AsRef`, `AsMut`, `Borrow`, `BorrowMut`, `Hash` for `GenericArray`
- * Update `serde` to `1.0`
- * Update `typenum`
- * Make macro `arr!` non-cloning
- * Implement `From<[T; N]>` up to `N=32`
- * Fix #45
-* **`0.7.0`**
- * Upgrade `serde` to `0.9`
- * Make `serde` with `no_std`
- * Implement `PartialOrd`/`Ord` for `GenericArray`
-* **`0.6.0`**
- * Fixed #30
- * Implement `Default` for `GenericArray`
- * Implement `LowerHex` and `UpperHex` for `GenericArray<u8, N>`
- * Use `precision` formatting field in hex representation
- * Add `as_slice`, `as_mut_slice`
- * Remove `GenericArray::new` in favor of `Default` trait
- * Add `from_slice` and `from_mut_slice`
- * `no_std` and `core` for crate.
-* **`0.5.0`**
- * Update `serde`
- * remove `no_std` feature, fixed #19
-* **`0.4.0`**
- * Re-export `typenum`
-* **`0.3.0`**
- * Implement `IntoIter` for `GenericArray`
- * Add `map` method
- * Add optional `serde` (de)serialization support feature.
-* **`< 0.3.0`**
- * Initial implementation in late 2015
diff --git a/vendor/generic-array-0.12.4/Cargo.toml b/vendor/generic-array-0.12.4/Cargo.toml
deleted file mode 100644
index f4f4f4616..000000000
--- a/vendor/generic-array-0.12.4/Cargo.toml
+++ /dev/null
@@ -1,40 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-name = "generic-array"
-version = "0.12.4"
-authors = ["Bartłomiej Kamiński <fizyk20@gmail.com>", "Aaron Trent <novacrazy@gmail.com>"]
-description = "Generic types implementing functionality of arrays"
-documentation = "http://fizyk20.github.io/generic-array/generic_array/"
-readme = "README.md"
-keywords = ["generic", "array"]
-categories = ["data-structures", "no-std"]
-license = "MIT"
-repository = "https://github.com/fizyk20/generic-array.git"
-
-[lib]
-name = "generic_array"
-[dependencies.serde]
-version = "1.0"
-optional = true
-default-features = false
-
-[dependencies.typenum]
-version = "1.10"
-[dev-dependencies.bincode]
-version = "1.0"
-
-[dev-dependencies.serde_json]
-version = "1.0"
-[badges.travis-ci]
-repository = "fizyk20/generic-array"
diff --git a/vendor/generic-array-0.12.4/LICENSE b/vendor/generic-array-0.12.4/LICENSE
deleted file mode 100644
index 5968bcccc..000000000
--- a/vendor/generic-array-0.12.4/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2015 Bartłomiej Kamiński
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE. \ No newline at end of file
diff --git a/vendor/generic-array-0.12.4/README.md b/vendor/generic-array-0.12.4/README.md
deleted file mode 100644
index 0864ed627..000000000
--- a/vendor/generic-array-0.12.4/README.md
+++ /dev/null
@@ -1,34 +0,0 @@
-[![Crates.io](https://img.shields.io/crates/v/generic-array.svg)](https://crates.io/crates/generic-array)
-[![Build Status](https://travis-ci.org/fizyk20/generic-array.svg?branch=master)](https://travis-ci.org/fizyk20/generic-array)
-# generic-array
-
-This crate implements generic array types for Rust.
-
-[Documentation](http://fizyk20.github.io/generic-array/generic_array/)
-
-## Usage
-
-The Rust arrays `[T; N]` are problematic in that they can't be used generically with respect to `N`, so for example this won't work:
-
-```rust
-struct Foo<N> {
- data: [i32; N]
-}
-```
-
-**generic-array** defines a new trait `ArrayLength<T>` and a struct `GenericArray<T, N: ArrayLength<T>>`, which let the above be implemented as:
-
-```rust
-struct Foo<N: ArrayLength<i32>> {
- data: GenericArray<i32, N>
-}
-```
-
-To actually define a type implementing `ArrayLength`, you can use unsigned integer types defined in [typenum](https://github.com/paholg/typenum) crate - for example, `GenericArray<T, U5>` would work almost like `[T; 5]` :)
-
-In version 0.1.1 an `arr!` macro was introduced, allowing for creation of arrays as shown below:
-
-```rust
-let array = arr![u32; 1, 2, 3];
-assert_eq!(array[2], 3);
-```
diff --git a/vendor/generic-array-0.12.4/rustfmt.toml b/vendor/generic-array-0.12.4/rustfmt.toml
deleted file mode 100644
index 3dc0db27b..000000000
--- a/vendor/generic-array-0.12.4/rustfmt.toml
+++ /dev/null
@@ -1,3 +0,0 @@
-reorder_imports = true
-reorder_imported_names = true
-use_try_shorthand = true
diff --git a/vendor/generic-array-0.12.4/src/arr.rs b/vendor/generic-array-0.12.4/src/arr.rs
deleted file mode 100644
index ebe687500..000000000
--- a/vendor/generic-array-0.12.4/src/arr.rs
+++ /dev/null
@@ -1,126 +0,0 @@
-//! Implementation for `arr!` macro.
-
-use super::ArrayLength;
-use core::ops::Add;
-use typenum::U1;
-
-/// Helper trait for `arr!` macro
-pub trait AddLength<T, N: ArrayLength<T>>: ArrayLength<T> {
- /// Resulting length
- type Output: ArrayLength<T>;
-}
-
-impl<T, N1, N2> AddLength<T, N2> for N1
-where
- N1: ArrayLength<T> + Add<N2>,
- N2: ArrayLength<T>,
- <N1 as Add<N2>>::Output: ArrayLength<T>,
-{
- type Output = <N1 as Add<N2>>::Output;
-}
-
-/// Helper type for `arr!` macro
-pub type Inc<T, U> = <U as AddLength<T, U1>>::Output;
-
-#[doc(hidden)]
-#[macro_export]
-macro_rules! arr_impl {
- (@replace_expr $e:expr)=>{
- 1
- };
- ($T:ty; $N:ty, [$($x:expr),*], []) => ({
- const __ARR_LENGTH:usize=0 $(+ $crate::arr_impl!(@replace_expr $x) )*;
- fn __do_transmute<'a, T, N: $crate::ArrayLength<T>>(arr: [T; __ARR_LENGTH]) -> $crate::GenericArray<T, N> {
- unsafe { $crate::transmute(arr) }
- }
-
- let _:[();<$N as $crate::typenum::Unsigned>::USIZE]=[();__ARR_LENGTH];
-
- __do_transmute::<$T,$N>([$($x),*])
- });
- ($T:ty; $N:ty, [], [$x1:expr]) => (
- $crate::arr_impl!($T; $crate::arr::Inc<$T, $N>, [$x1], [])
- );
- ($T:ty; $N:ty, [], [$x1:expr, $($x:expr),+]) => (
- $crate::arr_impl!($T; $crate::arr::Inc<$T, $N>, [$x1], [$($x),+])
- );
- ($T:ty; $N:ty, [$($y:expr),+], [$x1:expr]) => (
- $crate::arr_impl!($T; $crate::arr::Inc<$T, $N>, [$($y),+, $x1], [])
- );
- ($T:ty; $N:ty, [$($y:expr),+], [$x1:expr, $($x:expr),+]) => (
- $crate::arr_impl!($T; $crate::arr::Inc<$T, $N>, [$($y),+, $x1], [$($x),+])
- );
-}
-
-/// Macro allowing for easy generation of Generic Arrays.
-/// Example: `let test = arr![u32; 1, 2, 3];`
-#[macro_export]
-macro_rules! arr {
- ($T:ty; $(,)*) => ({
- unsafe { $crate::transmute::<[$T; 0], $crate::GenericArray<$T, $crate::typenum::U0>>([]) }
- });
- ($T:ty; $($x:expr),* $(,)*) => (
- arr_impl!($T; $crate::typenum::U0, [], [$($x),*])
- );
- ($($x:expr,)+) => (arr![$($x),*]);
- () => ("""Macro requires a type, e.g. `let array = arr![u32; 1, 2, 3];`")
-}
-
-
-mod doctests_only{
- ///
- /// # With ellision
- ///
- /// Testing that lifetimes aren't transmuted when they're ellided.
- ///
- /// ```compile_fail
- /// #[macro_use] extern crate generic_array;
- /// fn main() {
- /// fn unsound_lifetime_extension<'a, A>(a: &'a A) -> &'static A {
- /// arr![&A; a][0]
- /// }
- /// }
- /// ```
- ///
- /// ```rust
- /// #[macro_use] extern crate generic_array;
- /// fn main() {
- /// fn unsound_lifetime_extension<'a, A>(a: &'a A) -> &'a A {
- /// arr![&A; a][0]
- /// }
- /// }
- /// ```
- ///
- /// # Without ellision
- ///
- /// Testing that lifetimes aren't transmuted when they're specified explicitly.
- ///
- /// ```compile_fail
- /// #[macro_use] extern crate generic_array;
- /// fn main() {
- /// fn unsound_lifetime_extension<'a, A>(a: &'a A) -> &'static A {
- /// arr![&'a A; a][0]
- /// }
- /// }
- /// ```
- ///
- /// ```compile_fail
- /// #[macro_use] extern crate generic_array;
- /// fn main() {
- /// fn unsound_lifetime_extension<'a, A>(a: &'a A) -> &'static A {
- /// arr![&'static A; a][0]
- /// }
- /// }
- /// ```
- ///
- /// ```rust
- /// #[macro_use] extern crate generic_array;
- /// fn main() {
- /// fn unsound_lifetime_extension<'a, A>(a: &'a A) -> &'a A {
- /// arr![&'a A; a][0]
- /// }
- /// }
- /// ```
- #[allow(dead_code)]
- pub enum DocTests{}
-}
diff --git a/vendor/generic-array-0.12.4/src/functional.rs b/vendor/generic-array-0.12.4/src/functional.rs
deleted file mode 100644
index 50f4a71b8..000000000
--- a/vendor/generic-array-0.12.4/src/functional.rs
+++ /dev/null
@@ -1,94 +0,0 @@
-//! Functional programming with generic sequences
-//!
-//! Please see `tests/generics.rs` for examples of how to best use these in your generic functions.
-
-use super::ArrayLength;
-use core::iter::FromIterator;
-use sequence::*;
-
-/// Defines the relationship between one generic sequence and another,
-/// for operations such as `map` and `zip`.
-pub unsafe trait MappedGenericSequence<T, U>: GenericSequence<T>
-where
- Self::Length: ArrayLength<U>,
-{
- /// Mapped sequence type
- type Mapped: GenericSequence<U, Length = Self::Length>;
-}
-
-unsafe impl<'a, T, U, S: MappedGenericSequence<T, U>> MappedGenericSequence<T, U> for &'a S
-where
- &'a S: GenericSequence<T>,
- S: GenericSequence<T, Length = <&'a S as GenericSequence<T>>::Length>,
- <S as GenericSequence<T>>::Length: ArrayLength<U>,
-{
- type Mapped = <S as MappedGenericSequence<T, U>>::Mapped;
-}
-
-unsafe impl<'a, T, U, S: MappedGenericSequence<T, U>> MappedGenericSequence<T, U> for &'a mut S
-where
- &'a mut S: GenericSequence<T>,
- S: GenericSequence<T, Length = <&'a mut S as GenericSequence<T>>::Length>,
- <S as GenericSequence<T>>::Length: ArrayLength<U>,
-{
- type Mapped = <S as MappedGenericSequence<T, U>>::Mapped;
-}
-
-/// Accessor type for a mapped generic sequence
-pub type MappedSequence<S, T, U> =
- <<S as MappedGenericSequence<T, U>>::Mapped as GenericSequence<U>>::Sequence;
-
-/// Defines functional programming methods for generic sequences
-pub unsafe trait FunctionalSequence<T>: GenericSequence<T> {
- /// Maps a `GenericSequence` to another `GenericSequence`.
- ///
- /// If the mapping function panics, any already initialized elements in the new sequence
- /// will be dropped, AND any unused elements in the source sequence will also be dropped.
- fn map<U, F>(self, f: F) -> MappedSequence<Self, T, U>
- where
- Self: MappedGenericSequence<T, U>,
- Self::Length: ArrayLength<U>,
- F: FnMut(Self::Item) -> U,
- {
- FromIterator::from_iter(self.into_iter().map(f))
- }
-
- /// Combines two `GenericSequence` instances and iterates through both of them,
- /// initializing a new `GenericSequence` with the result of the zipped mapping function.
- ///
- /// If the mapping function panics, any already initialized elements in the new sequence
- /// will be dropped, AND any unused elements in the source sequences will also be dropped.
- #[inline]
- fn zip<B, Rhs, U, F>(self, rhs: Rhs, f: F) -> MappedSequence<Self, T, U>
- where
- Self: MappedGenericSequence<T, U>,
- Rhs: MappedGenericSequence<B, U, Mapped = MappedSequence<Self, T, U>>,
- Self::Length: ArrayLength<B> + ArrayLength<U>,
- Rhs: GenericSequence<B, Length = Self::Length>,
- F: FnMut(Self::Item, Rhs::Item) -> U,
- {
- rhs.inverted_zip2(self, f)
- }
-
- /// Folds (or reduces) a sequence of data into a single value.
- ///
- /// If the fold function panics, any unused elements will be dropped.
- fn fold<U, F>(self, init: U, f: F) -> U
- where
- F: FnMut(U, Self::Item) -> U,
- {
- self.into_iter().fold(init, f)
- }
-}
-
-unsafe impl<'a, T, S: GenericSequence<T>> FunctionalSequence<T> for &'a S
-where
- &'a S: GenericSequence<T>,
-{
-}
-
-unsafe impl<'a, T, S: GenericSequence<T>> FunctionalSequence<T> for &'a mut S
-where
- &'a mut S: GenericSequence<T>,
-{
-}
diff --git a/vendor/generic-array-0.12.4/src/hex.rs b/vendor/generic-array-0.12.4/src/hex.rs
deleted file mode 100644
index 3ef92b1b9..000000000
--- a/vendor/generic-array-0.12.4/src/hex.rs
+++ /dev/null
@@ -1,102 +0,0 @@
-//! Generic array are commonly used as a return value for hash digests, so
-//! it's a good idea to allow to hexlify them easily. This module implements
-//! `std::fmt::LowerHex` and `std::fmt::UpperHex` traits.
-//!
-//! Example:
-//!
-//! ```rust
-//! # #[macro_use]
-//! # extern crate generic_array;
-//! # extern crate typenum;
-//! # fn main() {
-//! let array = arr![u8; 10, 20, 30];
-//! assert_eq!(format!("{:x}", array), "0a141e");
-//! # }
-//! ```
-//!
-
-use {ArrayLength, GenericArray};
-use core::cmp::min;
-use core::fmt;
-use core::ops::Add;
-use core::str;
-use typenum::*;
-
-static LOWER_CHARS: &'static [u8] = b"0123456789abcdef";
-static UPPER_CHARS: &'static [u8] = b"0123456789ABCDEF";
-
-impl<T: ArrayLength<u8>> fmt::LowerHex for GenericArray<u8, T>
-where
- T: Add<T>,
- <T as Add<T>>::Output: ArrayLength<u8>,
-{
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- let max_digits = f.precision().unwrap_or_else(|| self.len() * 2);
- let max_hex = (max_digits >> 1) + (max_digits & 1);
-
- if T::to_usize() < 1024 {
- // For small arrays use a stack allocated
- // buffer of 2x number of bytes
- let mut res = GenericArray::<u8, Sum<T, T>>::default();
-
- for (i, c) in self.iter().take(max_hex).enumerate() {
- res[i * 2] = LOWER_CHARS[(c >> 4) as usize];
- res[i * 2 + 1] = LOWER_CHARS[(c & 0xF) as usize];
- }
- f.write_str(unsafe { str::from_utf8_unchecked(&res[..max_digits]) })?;
- } else {
- // For large array use chunks of up to 1024 bytes (2048 hex chars)
- let mut buf = [0u8; 2048];
- let mut digits_left = max_digits;
-
- for chunk in self[..max_hex].chunks(1024) {
- for (i, c) in chunk.iter().enumerate() {
- buf[i * 2] = LOWER_CHARS[(c >> 4) as usize];
- buf[i * 2 + 1] = LOWER_CHARS[(c & 0xF) as usize];
- }
- let n = min(chunk.len() * 2, digits_left);
- f.write_str(unsafe { str::from_utf8_unchecked(&buf[..n]) })?;
- digits_left -= n;
- }
- }
- Ok(())
- }
-}
-
-impl<T: ArrayLength<u8>> fmt::UpperHex for GenericArray<u8, T>
-where
- T: Add<T>,
- <T as Add<T>>::Output: ArrayLength<u8>,
-{
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- let max_digits = f.precision().unwrap_or_else(|| self.len() * 2);
- let max_hex = (max_digits >> 1) + (max_digits & 1);
-
- if T::to_usize() < 1024 {
- // For small arrays use a stack allocated
- // buffer of 2x number of bytes
- let mut res = GenericArray::<u8, Sum<T, T>>::default();
-
- for (i, c) in self.iter().take(max_hex).enumerate() {
- res[i * 2] = UPPER_CHARS[(c >> 4) as usize];
- res[i * 2 + 1] = UPPER_CHARS[(c & 0xF) as usize];
- }
- f.write_str(unsafe { str::from_utf8_unchecked(&res[..max_digits]) })?;
- } else {
- // For large array use chunks of up to 1024 bytes (2048 hex chars)
- let mut buf = [0u8; 2048];
- let mut digits_left = max_digits;
-
- for chunk in self[..max_hex].chunks(1024) {
- for (i, c) in chunk.iter().enumerate() {
- buf[i * 2] = UPPER_CHARS[(c >> 4) as usize];
- buf[i * 2 + 1] = UPPER_CHARS[(c & 0xF) as usize];
- }
- let n = min(chunk.len() * 2, digits_left);
- f.write_str(unsafe { str::from_utf8_unchecked(&buf[..n]) })?;
- digits_left -= n;
- }
- }
- Ok(())
- }
-}
diff --git a/vendor/generic-array-0.12.4/src/impl_serde.rs b/vendor/generic-array-0.12.4/src/impl_serde.rs
deleted file mode 100644
index da1df2fc0..000000000
--- a/vendor/generic-array-0.12.4/src/impl_serde.rs
+++ /dev/null
@@ -1,108 +0,0 @@
-//! Serde serialization/deserialization implementation
-
-use core::fmt;
-use core::marker::PhantomData;
-use serde::de::{self, SeqAccess, Visitor};
-use serde::{ser::SerializeTuple, Deserialize, Deserializer, Serialize, Serializer};
-use {ArrayLength, GenericArray};
-
-impl<T, N> Serialize for GenericArray<T, N>
-where
- T: Serialize,
- N: ArrayLength<T>,
-{
- #[inline]
- fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
- where
- S: Serializer,
- {
- let mut tup = serializer.serialize_tuple(N::to_usize())?;
- for el in self {
- tup.serialize_element(el)?;
- }
-
- tup.end()
- }
-}
-
-struct GAVisitor<T, N> {
- _t: PhantomData<T>,
- _n: PhantomData<N>,
-}
-
-impl<'de, T, N> Visitor<'de> for GAVisitor<T, N>
-where
- T: Deserialize<'de> + Default,
- N: ArrayLength<T>,
-{
- type Value = GenericArray<T, N>;
-
- fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
- formatter.write_str("struct GenericArray")
- }
-
- fn visit_seq<A>(self, mut seq: A) -> Result<GenericArray<T, N>, A::Error>
- where
- A: SeqAccess<'de>,
- {
- let mut result = GenericArray::default();
- for i in 0..N::to_usize() {
- result[i] = seq
- .next_element()?
- .ok_or_else(|| de::Error::invalid_length(i, &self))?;
- }
- Ok(result)
- }
-}
-
-impl<'de, T, N> Deserialize<'de> for GenericArray<T, N>
-where
- T: Deserialize<'de> + Default,
- N: ArrayLength<T>,
-{
- fn deserialize<D>(deserializer: D) -> Result<GenericArray<T, N>, D::Error>
- where
- D: Deserializer<'de>,
- {
- let visitor = GAVisitor {
- _t: PhantomData,
- _n: PhantomData,
- };
- deserializer.deserialize_tuple(N::to_usize(), visitor)
- }
-}
-
-#[cfg(test)]
-mod tests {
- use super::*;
- use bincode;
- use typenum;
-
- #[test]
- fn test_serialize() {
- let array = GenericArray::<u8, typenum::U2>::default();
- let serialized = bincode::serialize(&array);
- assert!(serialized.is_ok());
- }
-
- #[test]
- fn test_deserialize() {
- let mut array = GenericArray::<u8, typenum::U2>::default();
- array[0] = 1;
- array[1] = 2;
- let serialized = bincode::serialize(&array).unwrap();
- let deserialized = bincode::deserialize::<GenericArray<u8, typenum::U2>>(&array);
- assert!(deserialized.is_ok());
- let array = deserialized.unwrap();
- assert_eq!(array[0], 1);
- assert_eq!(array[1], 2);
- }
-
- #[test]
- fn test_serialized_size() {
- let array = GenericArray::<u8, typenum::U1>::default();
- let size = bincode::serialized_size(&array).unwrap();
- assert_eq!(size, 1);
- }
-
-}
diff --git a/vendor/generic-array-0.12.4/src/impls.rs b/vendor/generic-array-0.12.4/src/impls.rs
deleted file mode 100644
index ea5a3c4c9..000000000
--- a/vendor/generic-array-0.12.4/src/impls.rs
+++ /dev/null
@@ -1,182 +0,0 @@
-use super::{ArrayLength, GenericArray};
-use core::borrow::{Borrow, BorrowMut};
-use core::cmp::Ordering;
-use core::fmt::{self, Debug};
-use core::hash::{Hash, Hasher};
-use functional::*;
-use sequence::*;
-
-impl<T: Default, N> Default for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- #[inline]
- fn default() -> Self {
- Self::generate(|_| T::default())
- }
-}
-
-impl<T: Clone, N> Clone for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- fn clone(&self) -> GenericArray<T, N> {
- self.map(Clone::clone)
- }
-}
-
-impl<T: Copy, N> Copy for GenericArray<T, N>
-where
- N: ArrayLength<T>,
- N::ArrayType: Copy,
-{
-}
-
-impl<T: PartialEq, N> PartialEq for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- fn eq(&self, other: &Self) -> bool {
- **self == **other
- }
-}
-impl<T: Eq, N> Eq for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
-}
-
-impl<T: PartialOrd, N> PartialOrd for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- fn partial_cmp(&self, other: &GenericArray<T, N>) -> Option<Ordering> {
- PartialOrd::partial_cmp(self.as_slice(), other.as_slice())
- }
-}
-
-impl<T: Ord, N> Ord for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- fn cmp(&self, other: &GenericArray<T, N>) -> Ordering {
- Ord::cmp(self.as_slice(), other.as_slice())
- }
-}
-
-impl<T: Debug, N> Debug for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
- self[..].fmt(fmt)
- }
-}
-
-impl<T, N> Borrow<[T]> for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- #[inline(always)]
- fn borrow(&self) -> &[T] {
- &self[..]
- }
-}
-
-impl<T, N> BorrowMut<[T]> for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- #[inline(always)]
- fn borrow_mut(&mut self) -> &mut [T] {
- &mut self[..]
- }
-}
-
-impl<T, N> AsRef<[T]> for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- #[inline(always)]
- fn as_ref(&self) -> &[T] {
- &self[..]
- }
-}
-
-impl<T, N> AsMut<[T]> for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- #[inline(always)]
- fn as_mut(&mut self) -> &mut [T] {
- &mut self[..]
- }
-}
-
-impl<T: Hash, N> Hash for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- fn hash<H>(&self, state: &mut H)
- where
- H: Hasher,
- {
- Hash::hash(&self[..], state)
- }
-}
-
-macro_rules! impl_from {
- ($($n: expr => $ty: ty),*) => {
- $(
- impl<T> From<[T; $n]> for GenericArray<T, $ty> {
- #[inline(always)]
- fn from(arr: [T; $n]) -> Self {
- unsafe { $crate::transmute(arr) }
- }
- }
-
- impl<T> Into<[T; $n]> for GenericArray<T, $ty> {
- #[inline(always)]
- fn into(self) -> [T; $n] {
- unsafe { $crate::transmute(self) }
- }
- }
- )*
-
- }
-}
-
-impl_from! {
- 1 => ::typenum::U1,
- 2 => ::typenum::U2,
- 3 => ::typenum::U3,
- 4 => ::typenum::U4,
- 5 => ::typenum::U5,
- 6 => ::typenum::U6,
- 7 => ::typenum::U7,
- 8 => ::typenum::U8,
- 9 => ::typenum::U9,
- 10 => ::typenum::U10,
- 11 => ::typenum::U11,
- 12 => ::typenum::U12,
- 13 => ::typenum::U13,
- 14 => ::typenum::U14,
- 15 => ::typenum::U15,
- 16 => ::typenum::U16,
- 17 => ::typenum::U17,
- 18 => ::typenum::U18,
- 19 => ::typenum::U19,
- 20 => ::typenum::U20,
- 21 => ::typenum::U21,
- 22 => ::typenum::U22,
- 23 => ::typenum::U23,
- 24 => ::typenum::U24,
- 25 => ::typenum::U25,
- 26 => ::typenum::U26,
- 27 => ::typenum::U27,
- 28 => ::typenum::U28,
- 29 => ::typenum::U29,
- 30 => ::typenum::U30,
- 31 => ::typenum::U31,
- 32 => ::typenum::U32
-}
diff --git a/vendor/generic-array-0.12.4/src/iter.rs b/vendor/generic-array-0.12.4/src/iter.rs
deleted file mode 100644
index a2d67fc67..000000000
--- a/vendor/generic-array-0.12.4/src/iter.rs
+++ /dev/null
@@ -1,190 +0,0 @@
-//! `GenericArray` iterator implementation.
-
-use super::{ArrayLength, GenericArray};
-use core::{cmp, ptr, fmt, mem};
-use core::mem::ManuallyDrop;
-
-/// An iterator that moves out of a `GenericArray`
-pub struct GenericArrayIter<T, N: ArrayLength<T>> {
- // Invariants: index <= index_back <= N
- // Only values in array[index..index_back] are alive at any given time.
- // Values from array[..index] and array[index_back..] are already moved/dropped.
- array: ManuallyDrop<GenericArray<T, N>>,
- index: usize,
- index_back: usize,
-}
-
-#[cfg(test)]
-mod test {
- use super::*;
-
- fn send<I: Send>(_iter: I) {}
-
- #[test]
- fn test_send_iter() {
- send(GenericArray::from([1, 2, 3, 4]).into_iter());
- }
-}
-
-impl<T, N> GenericArrayIter<T, N>
-where
- N: ArrayLength<T>,
-{
- /// Returns the remaining items of this iterator as a slice
- #[inline]
- pub fn as_slice(&self) -> &[T] {
- &self.array.as_slice()[self.index..self.index_back]
- }
-
- /// Returns the remaining items of this iterator as a mutable slice
- #[inline]
- pub fn as_mut_slice(&mut self) -> &mut [T] {
- &mut self.array.as_mut_slice()[self.index..self.index_back]
- }
-}
-
-impl<T, N> IntoIterator for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- type Item = T;
- type IntoIter = GenericArrayIter<T, N>;
-
- fn into_iter(self) -> Self::IntoIter {
- GenericArrayIter {
- array: ManuallyDrop::new(self),
- index: 0,
- index_back: N::to_usize(),
- }
- }
-}
-
-// Based on work in rust-lang/rust#49000
-impl<T: fmt::Debug, N> fmt::Debug for GenericArrayIter<T, N>
-where
- N: ArrayLength<T>,
-{
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- f.debug_tuple("GenericArrayIter")
- .field(&self.as_slice())
- .finish()
- }
-}
-
-impl<T, N> Drop for GenericArrayIter<T, N>
-where
- N: ArrayLength<T>,
-{
- #[inline]
- fn drop(&mut self) {
- // Drop values that are still alive.
- for p in self.as_mut_slice() {
- unsafe {
- ptr::drop_in_place(p);
- }
- }
- }
-}
-
-// Based on work in rust-lang/rust#49000
-impl<T: Clone, N> Clone for GenericArrayIter<T, N>
-where
- N: ArrayLength<T>,
-{
- fn clone(&self) -> Self {
- // This places all cloned elements at the start of the new array iterator,
- // not at their original indices.
- unsafe {
- let mut iter = GenericArrayIter {
- array: ManuallyDrop::new(mem::uninitialized()),
- index: 0,
- index_back: 0,
- };
-
- for (dst, src) in iter.array.iter_mut().zip(self.as_slice()) {
- ptr::write(dst, src.clone());
-
- iter.index_back += 1;
- }
-
- iter
- }
- }
-}
-
-impl<T, N> Iterator for GenericArrayIter<T, N>
-where
- N: ArrayLength<T>,
-{
- type Item = T;
-
- #[inline]
- fn next(&mut self) -> Option<T> {
- if self.index < self.index_back {
- let p = unsafe { Some(ptr::read(self.array.get_unchecked(self.index))) };
-
- self.index += 1;
-
- p
- } else {
- None
- }
- }
-
- #[inline]
- fn size_hint(&self) -> (usize, Option<usize>) {
- let len = self.len();
- (len, Some(len))
- }
-
- #[inline]
- fn count(self) -> usize {
- self.len()
- }
-
- fn nth(&mut self, n: usize) -> Option<T> {
- // First consume values prior to the nth.
- let ndrop = cmp::min(n, self.len());
-
- for p in &mut self.array[self.index..self.index + ndrop] {
- self.index += 1;
-
- unsafe {
- ptr::drop_in_place(p);
- }
- }
-
- self.next()
- }
-
- fn last(mut self) -> Option<T> {
- // Note, everything else will correctly drop first as `self` leaves scope.
- self.next_back()
- }
-}
-
-impl<T, N> DoubleEndedIterator for GenericArrayIter<T, N>
-where
- N: ArrayLength<T>,
-{
- fn next_back(&mut self) -> Option<T> {
- if self.index < self.index_back {
- self.index_back -= 1;
-
- unsafe { Some(ptr::read(self.array.get_unchecked(self.index_back))) }
- } else {
- None
- }
- }
-}
-
-impl<T, N> ExactSizeIterator for GenericArrayIter<T, N>
-where
- N: ArrayLength<T>,
-{
- fn len(&self) -> usize {
- self.index_back - self.index
- }
-}
-
-// TODO: Implement `FusedIterator` and `TrustedLen` when stabilized \ No newline at end of file
diff --git a/vendor/generic-array-0.12.4/src/lib.rs b/vendor/generic-array-0.12.4/src/lib.rs
deleted file mode 100644
index e98e8fd58..000000000
--- a/vendor/generic-array-0.12.4/src/lib.rs
+++ /dev/null
@@ -1,632 +0,0 @@
-//! This crate implements a structure that can be used as a generic array type.use
-//! Core Rust array types `[T; N]` can't be used generically with
-//! respect to `N`, so for example this:
-//!
-//! ```{should_fail}
-//! struct Foo<T, N> {
-//! data: [T; N]
-//! }
-//! ```
-//!
-//! won't work.
-//!
-//! **generic-array** exports a `GenericArray<T,N>` type, which lets
-//! the above be implemented as:
-//!
-//! ```
-//! # use generic_array::{ArrayLength, GenericArray};
-//! struct Foo<T, N: ArrayLength<T>> {
-//! data: GenericArray<T,N>
-//! }
-//! ```
-//!
-//! The `ArrayLength<T>` trait is implemented by default for
-//! [unsigned integer types](../typenum/uint/index.html) from
-//! [typenum](../typenum/index.html).
-//!
-//! For ease of use, an `arr!` macro is provided - example below:
-//!
-//! ```
-//! # #[macro_use]
-//! # extern crate generic_array;
-//! # extern crate typenum;
-//! # fn main() {
-//! let array = arr![u32; 1, 2, 3];
-//! assert_eq!(array[2], 3);
-//! # }
-//! ```
-
-#![deny(missing_docs)]
-#![no_std]
-
-#[cfg(feature = "serde")]
-extern crate serde;
-
-#[cfg(test)]
-extern crate bincode;
-
-pub extern crate typenum;
-
-mod hex;
-mod impls;
-
-#[cfg(feature = "serde")]
-pub mod impl_serde;
-
-use core::iter::FromIterator;
-use core::marker::PhantomData;
-use core::mem::ManuallyDrop;
-use core::ops::{Deref, DerefMut};
-use core::{mem, ptr, slice};
-use typenum::bit::{B0, B1};
-use typenum::uint::{UInt, UTerm, Unsigned};
-
-#[cfg_attr(test, macro_use)]
-pub mod arr;
-pub mod functional;
-pub mod iter;
-pub mod sequence;
-
-use functional::*;
-pub use iter::GenericArrayIter;
-use sequence::*;
-
-/// Trait making `GenericArray` work, marking types to be used as length of an array
-pub unsafe trait ArrayLength<T>: Unsigned {
- /// Associated type representing the array type for the number
- type ArrayType;
-}
-
-unsafe impl<T> ArrayLength<T> for UTerm {
- #[doc(hidden)]
- type ArrayType = ();
-}
-
-/// Internal type used to generate a struct of appropriate size
-#[allow(dead_code)]
-#[repr(C)]
-#[doc(hidden)]
-pub struct GenericArrayImplEven<T, U> {
- parent1: U,
- parent2: U,
- _marker: PhantomData<T>,
-}
-
-impl<T: Clone, U: Clone> Clone for GenericArrayImplEven<T, U> {
- fn clone(&self) -> GenericArrayImplEven<T, U> {
- GenericArrayImplEven {
- parent1: self.parent1.clone(),
- parent2: self.parent2.clone(),
- _marker: PhantomData,
- }
- }
-}
-
-impl<T: Copy, U: Copy> Copy for GenericArrayImplEven<T, U> {}
-
-/// Internal type used to generate a struct of appropriate size
-#[allow(dead_code)]
-#[repr(C)]
-#[doc(hidden)]
-pub struct GenericArrayImplOdd<T, U> {
- parent1: U,
- parent2: U,
- data: T,
-}
-
-impl<T: Clone, U: Clone> Clone for GenericArrayImplOdd<T, U> {
- fn clone(&self) -> GenericArrayImplOdd<T, U> {
- GenericArrayImplOdd {
- parent1: self.parent1.clone(),
- parent2: self.parent2.clone(),
- data: self.data.clone(),
- }
- }
-}
-
-impl<T: Copy, U: Copy> Copy for GenericArrayImplOdd<T, U> {}
-
-unsafe impl<T, N: ArrayLength<T>> ArrayLength<T> for UInt<N, B0> {
- #[doc(hidden)]
- type ArrayType = GenericArrayImplEven<T, N::ArrayType>;
-}
-
-unsafe impl<T, N: ArrayLength<T>> ArrayLength<T> for UInt<N, B1> {
- #[doc(hidden)]
- type ArrayType = GenericArrayImplOdd<T, N::ArrayType>;
-}
-
-/// Struct representing a generic array - `GenericArray<T, N>` works like [T; N]
-#[allow(dead_code)]
-pub struct GenericArray<T, U: ArrayLength<T>> {
- data: U::ArrayType,
-}
-
-unsafe impl<T: Send, N: ArrayLength<T>> Send for GenericArray<T, N> {}
-unsafe impl<T: Sync, N: ArrayLength<T>> Sync for GenericArray<T, N> {}
-
-impl<T, N> Deref for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- type Target = [T];
-
- #[inline(always)]
- fn deref(&self) -> &[T] {
- unsafe { slice::from_raw_parts(self as *const Self as *const T, N::to_usize()) }
- }
-}
-
-impl<T, N> DerefMut for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- #[inline(always)]
- fn deref_mut(&mut self) -> &mut [T] {
- unsafe { slice::from_raw_parts_mut(self as *mut Self as *mut T, N::to_usize()) }
- }
-}
-
-/// Creates an array one element at a time using a mutable iterator
-/// you can write to with `ptr::write`.
-///
-/// Incremenent the position while iterating to mark off created elements,
-/// which will be dropped if `into_inner` is not called.
-#[doc(hidden)]
-pub struct ArrayBuilder<T, N: ArrayLength<T>> {
- array: ManuallyDrop<GenericArray<T, N>>,
- position: usize,
-}
-
-impl<T, N: ArrayLength<T>> ArrayBuilder<T, N> {
- #[doc(hidden)]
- #[inline]
- pub unsafe fn new() -> ArrayBuilder<T, N> {
- ArrayBuilder {
- array: ManuallyDrop::new(mem::uninitialized()),
- position: 0,
- }
- }
-
- /// Creates a mutable iterator for writing to the array using `ptr::write`.
- ///
- /// Increment the position value given as a mutable reference as you iterate
- /// to mark how many elements have been created.
- #[doc(hidden)]
- #[inline]
- pub unsafe fn iter_position(&mut self) -> (slice::IterMut<T>, &mut usize) {
- (self.array.iter_mut(), &mut self.position)
- }
-
- /// When done writing (assuming all elements have been written to),
- /// get the inner array.
- #[doc(hidden)]
- #[inline]
- pub unsafe fn into_inner(self) -> GenericArray<T, N> {
- let array = ptr::read(&self.array);
-
- mem::forget(self);
-
- ManuallyDrop::into_inner(array)
- }
-}
-
-impl<T, N: ArrayLength<T>> Drop for ArrayBuilder<T, N> {
- fn drop(&mut self) {
- for value in &mut self.array[..self.position] {
- unsafe {
- ptr::drop_in_place(value);
- }
- }
- }
-}
-
-/// Consumes an array.
-///
-/// Increment the position while iterating and any leftover elements
-/// will be dropped if position does not go to N
-#[doc(hidden)]
-pub struct ArrayConsumer<T, N: ArrayLength<T>> {
- array: ManuallyDrop<GenericArray<T, N>>,
- position: usize,
-}
-
-impl<T, N: ArrayLength<T>> ArrayConsumer<T, N> {
- #[doc(hidden)]
- #[inline]
- pub unsafe fn new(array: GenericArray<T, N>) -> ArrayConsumer<T, N> {
- ArrayConsumer {
- array: ManuallyDrop::new(array),
- position: 0,
- }
- }
-
- /// Creates an iterator and mutable reference to the internal position
- /// to keep track of consumed elements.
- ///
- /// Increment the position as you iterate to mark off consumed elements
- #[doc(hidden)]
- #[inline]
- pub unsafe fn iter_position(&mut self) -> (slice::Iter<T>, &mut usize) {
- (self.array.iter(), &mut self.position)
- }
-}
-
-impl<T, N: ArrayLength<T>> Drop for ArrayConsumer<T, N> {
- fn drop(&mut self) {
- for value in &mut self.array[self.position..N::to_usize()] {
- unsafe {
- ptr::drop_in_place(value);
- }
- }
- }
-}
-
-impl<'a, T: 'a, N> IntoIterator for &'a GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- type IntoIter = slice::Iter<'a, T>;
- type Item = &'a T;
-
- fn into_iter(self: &'a GenericArray<T, N>) -> Self::IntoIter {
- self.as_slice().iter()
- }
-}
-
-impl<'a, T: 'a, N> IntoIterator for &'a mut GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- type IntoIter = slice::IterMut<'a, T>;
- type Item = &'a mut T;
-
- fn into_iter(self: &'a mut GenericArray<T, N>) -> Self::IntoIter {
- self.as_mut_slice().iter_mut()
- }
-}
-
-impl<T, N> FromIterator<T> for GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- fn from_iter<I>(iter: I) -> GenericArray<T, N>
- where
- I: IntoIterator<Item = T>,
- {
- unsafe {
- let mut destination = ArrayBuilder::new();
-
- {
- let (destination_iter, position) = destination.iter_position();
-
- for (src, dst) in iter.into_iter().zip(destination_iter) {
- ptr::write(dst, src);
-
- *position += 1;
- }
- }
-
- if destination.position < N::to_usize() {
- from_iter_length_fail(destination.position, N::to_usize());
- }
-
- destination.into_inner()
- }
- }
-}
-
-#[inline(never)]
-#[cold]
-fn from_iter_length_fail(length: usize, expected: usize) -> ! {
- panic!(
- "GenericArray::from_iter received {} elements but expected {}",
- length, expected
- );
-}
-
-unsafe impl<T, N> GenericSequence<T> for GenericArray<T, N>
-where
- N: ArrayLength<T>,
- Self: IntoIterator<Item = T>,
-{
- type Length = N;
- type Sequence = Self;
-
- fn generate<F>(mut f: F) -> GenericArray<T, N>
- where
- F: FnMut(usize) -> T,
- {
- unsafe {
- let mut destination = ArrayBuilder::new();
-
- {
- let (destination_iter, position) = destination.iter_position();
-
- for (i, dst) in destination_iter.enumerate() {
- ptr::write(dst, f(i));
-
- *position += 1;
- }
- }
-
- destination.into_inner()
- }
- }
-
- #[doc(hidden)]
- fn inverted_zip<B, U, F>(
- self,
- lhs: GenericArray<B, Self::Length>,
- mut f: F,
- ) -> MappedSequence<GenericArray<B, Self::Length>, B, U>
- where
- GenericArray<B, Self::Length>:
- GenericSequence<B, Length = Self::Length> + MappedGenericSequence<B, U>,
- Self: MappedGenericSequence<T, U>,
- Self::Length: ArrayLength<B> + ArrayLength<U>,
- F: FnMut(B, Self::Item) -> U,
- {
- unsafe {
- let mut left = ArrayConsumer::new(lhs);
- let mut right = ArrayConsumer::new(self);
-
- let (left_array_iter, left_position) = left.iter_position();
- let (right_array_iter, right_position) = right.iter_position();
-
- FromIterator::from_iter(left_array_iter.zip(right_array_iter).map(|(l, r)| {
- let left_value = ptr::read(l);
- let right_value = ptr::read(r);
-
- *left_position += 1;
- *right_position += 1;
-
- f(left_value, right_value)
- }))
- }
- }
-
- #[doc(hidden)]
- fn inverted_zip2<B, Lhs, U, F>(self, lhs: Lhs, mut f: F) -> MappedSequence<Lhs, B, U>
- where
- Lhs: GenericSequence<B, Length = Self::Length> + MappedGenericSequence<B, U>,
- Self: MappedGenericSequence<T, U>,
- Self::Length: ArrayLength<B> + ArrayLength<U>,
- F: FnMut(Lhs::Item, Self::Item) -> U,
- {
- unsafe {
- let mut right = ArrayConsumer::new(self);
-
- let (right_array_iter, right_position) = right.iter_position();
-
- FromIterator::from_iter(
- lhs.into_iter()
- .zip(right_array_iter)
- .map(|(left_value, r)| {
- let right_value = ptr::read(r);
-
- *right_position += 1;
-
- f(left_value, right_value)
- }),
- )
- }
- }
-}
-
-unsafe impl<T, U, N> MappedGenericSequence<T, U> for GenericArray<T, N>
-where
- N: ArrayLength<T> + ArrayLength<U>,
- GenericArray<U, N>: GenericSequence<U, Length = N>,
-{
- type Mapped = GenericArray<U, N>;
-}
-
-unsafe impl<T, N> FunctionalSequence<T> for GenericArray<T, N>
-where
- N: ArrayLength<T>,
- Self: GenericSequence<T, Item = T, Length = N>,
-{
- fn map<U, F>(self, mut f: F) -> MappedSequence<Self, T, U>
- where
- Self::Length: ArrayLength<U>,
- Self: MappedGenericSequence<T, U>,
- F: FnMut(T) -> U,
- {
- unsafe {
- let mut source = ArrayConsumer::new(self);
-
- let (array_iter, position) = source.iter_position();
-
- FromIterator::from_iter(array_iter.map(|src| {
- let value = ptr::read(src);
-
- *position += 1;
-
- f(value)
- }))
- }
- }
-
- #[inline]
- fn zip<B, Rhs, U, F>(self, rhs: Rhs, f: F) -> MappedSequence<Self, T, U>
- where
- Self: MappedGenericSequence<T, U>,
- Rhs: MappedGenericSequence<B, U, Mapped = MappedSequence<Self, T, U>>,
- Self::Length: ArrayLength<B> + ArrayLength<U>,
- Rhs: GenericSequence<B, Length = Self::Length>,
- F: FnMut(T, Rhs::Item) -> U,
- {
- rhs.inverted_zip(self, f)
- }
-
- fn fold<U, F>(self, init: U, mut f: F) -> U
- where
- F: FnMut(U, T) -> U,
- {
- unsafe {
- let mut source = ArrayConsumer::new(self);
-
- let (array_iter, position) = source.iter_position();
-
- array_iter.fold(init, |acc, src| {
- let value = ptr::read(src);
-
- *position += 1;
-
- f(acc, value)
- })
- }
- }
-}
-
-impl<T, N> GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- /// Extracts a slice containing the entire array.
- #[inline]
- pub fn as_slice(&self) -> &[T] {
- self.deref()
- }
-
- /// Extracts a mutable slice containing the entire array.
- #[inline]
- pub fn as_mut_slice(&mut self) -> &mut [T] {
- self.deref_mut()
- }
-
- /// Converts slice to a generic array reference with inferred length;
- ///
- /// Length of the slice must be equal to the length of the array.
- #[inline]
- pub fn from_slice(slice: &[T]) -> &GenericArray<T, N> {
- slice.into()
- }
-
- /// Converts mutable slice to a mutable generic array reference
- ///
- /// Length of the slice must be equal to the length of the array.
- #[inline]
- pub fn from_mut_slice(slice: &mut [T]) -> &mut GenericArray<T, N> {
- slice.into()
- }
-}
-
-impl<'a, T, N: ArrayLength<T>> From<&'a [T]> for &'a GenericArray<T, N> {
- /// Converts slice to a generic array reference with inferred length;
- ///
- /// Length of the slice must be equal to the length of the array.
- #[inline]
- fn from(slice: &[T]) -> &GenericArray<T, N> {
- assert_eq!(slice.len(), N::to_usize());
-
- unsafe { &*(slice.as_ptr() as *const GenericArray<T, N>) }
- }
-}
-
-impl<'a, T, N: ArrayLength<T>> From<&'a mut [T]> for &'a mut GenericArray<T, N> {
- /// Converts mutable slice to a mutable generic array reference
- ///
- /// Length of the slice must be equal to the length of the array.
- #[inline]
- fn from(slice: &mut [T]) -> &mut GenericArray<T, N> {
- assert_eq!(slice.len(), N::to_usize());
-
- unsafe { &mut *(slice.as_mut_ptr() as *mut GenericArray<T, N>) }
- }
-}
-
-impl<T: Clone, N> GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- /// Construct a `GenericArray` from a slice by cloning its content
- ///
- /// Length of the slice must be equal to the length of the array
- #[inline]
- pub fn clone_from_slice(list: &[T]) -> GenericArray<T, N> {
- Self::from_exact_iter(list.iter().cloned())
- .expect("Slice must be the same length as the array")
- }
-}
-
-impl<T, N> GenericArray<T, N>
-where
- N: ArrayLength<T>,
-{
- /// Creates a new `GenericArray` instance from an iterator with a known exact size.
- ///
- /// Returns `None` if the size is not equal to the number of elements in the `GenericArray`.
- pub fn from_exact_iter<I>(iter: I) -> Option<Self>
- where
- I: IntoIterator<Item = T>,
- <I as IntoIterator>::IntoIter: ExactSizeIterator,
- {
- let iter = iter.into_iter();
-
- if iter.len() == N::to_usize() {
- unsafe {
- let mut destination = ArrayBuilder::new();
-
- {
- let (destination_iter, position) = destination.iter_position();
-
- for (dst, src) in destination_iter.zip(iter.into_iter()) {
- ptr::write(dst, src);
-
- *position += 1;
- }
- }
-
- Some(destination.into_inner())
- }
- } else {
- None
- }
- }
-}
-
-/// A reimplementation of the `transmute` function, avoiding problems
-/// when the compiler can't prove equal sizes.
-#[inline]
-#[doc(hidden)]
-pub unsafe fn transmute<A, B>(a: A) -> B {
- let b = ::core::ptr::read(&a as *const A as *const B);
- ::core::mem::forget(a);
- b
-}
-
-#[cfg(test)]
-mod test {
- // Compile with:
- // cargo rustc --lib --profile test --release --
- // -C target-cpu=native -C opt-level=3 --emit asm
- // and view the assembly to make sure test_assembly generates
- // SIMD instructions instead of a niave loop.
-
- #[inline(never)]
- pub fn black_box<T>(val: T) -> T {
- use core::{mem, ptr};
-
- let ret = unsafe { ptr::read_volatile(&val) };
- mem::forget(val);
- ret
- }
-
- #[test]
- fn test_assembly() {
- use functional::*;
-
- let a = black_box(arr![i32; 1, 3, 5, 7]);
- let b = black_box(arr![i32; 2, 4, 6, 8]);
-
- let c = (&a).zip(b, |l, r| l + r);
-
- let d = a.fold(0, |a, x| a + x);
-
- assert_eq!(c, arr![i32; 3, 7, 11, 15]);
-
- assert_eq!(d, 16);
- }
-}
diff --git a/vendor/generic-array-0.12.4/src/sequence.rs b/vendor/generic-array-0.12.4/src/sequence.rs
deleted file mode 100644
index 7b928abda..000000000
--- a/vendor/generic-array-0.12.4/src/sequence.rs
+++ /dev/null
@@ -1,320 +0,0 @@
-//! Useful traits for manipulating sequences of data stored in `GenericArray`s
-
-use super::*;
-use core::{mem, ptr};
-use core::ops::{Add, Sub};
-use typenum::operator_aliases::*;
-
-/// Defines some sequence with an associated length and iteration capabilities.
-///
-/// This is useful for passing N-length generic arrays as generics.
-pub unsafe trait GenericSequence<T>: Sized + IntoIterator {
- /// `GenericArray` associated length
- type Length: ArrayLength<T>;
-
- /// Concrete sequence type used in conjuction with reference implementations of `GenericSequence`
- type Sequence: GenericSequence<T, Length = Self::Length> + FromIterator<T>;
-
- /// Initializes a new sequence instance using the given function.
- ///
- /// If the generator function panics while initializing the sequence,
- /// any already initialized elements will be dropped.
- fn generate<F>(f: F) -> Self::Sequence
- where
- F: FnMut(usize) -> T;
-
- #[doc(hidden)]
- fn inverted_zip<B, U, F>(
- self,
- lhs: GenericArray<B, Self::Length>,
- mut f: F,
- ) -> MappedSequence<GenericArray<B, Self::Length>, B, U>
- where
- GenericArray<B, Self::Length>: GenericSequence<B, Length = Self::Length>
- + MappedGenericSequence<B, U>,
- Self: MappedGenericSequence<T, U>,
- Self::Length: ArrayLength<B> + ArrayLength<U>,
- F: FnMut(B, Self::Item) -> U,
- {
- unsafe {
- let mut left = ArrayConsumer::new(lhs);
-
- let (left_array_iter, left_position) = left.iter_position();
-
- FromIterator::from_iter(
- left_array_iter
- .zip(self.into_iter())
- .map(|(l, right_value)| {
- let left_value = ptr::read(l);
-
- *left_position += 1;
-
- f(left_value, right_value)
- })
- )
- }
- }
-
- #[doc(hidden)]
- fn inverted_zip2<B, Lhs, U, F>(self, lhs: Lhs, mut f: F) -> MappedSequence<Lhs, B, U>
- where
- Lhs: GenericSequence<B, Length = Self::Length> + MappedGenericSequence<B, U>,
- Self: MappedGenericSequence<T, U>,
- Self::Length: ArrayLength<B> + ArrayLength<U>,
- F: FnMut(Lhs::Item, Self::Item) -> U,
- {
- FromIterator::from_iter(lhs.into_iter().zip(self.into_iter()).map(|(l, r)| f(l, r)))
- }
-}
-
-/// Accessor for `GenericSequence` item type, which is really `IntoIterator::Item`
-///
-/// For deeply nested generic mapped sequence types, like shown in `tests/generics.rs`,
-/// this can be useful for keeping things organized.
-pub type SequenceItem<T> = <T as IntoIterator>::Item;
-
-unsafe impl<'a, T: 'a, S: GenericSequence<T>> GenericSequence<T> for &'a S
-where
- &'a S: IntoIterator,
-{
- type Length = S::Length;
- type Sequence = S::Sequence;
-
- #[inline]
- fn generate<F>(f: F) -> Self::Sequence
- where
- F: FnMut(usize) -> T,
- {
- S::generate(f)
- }
-}
-
-unsafe impl<'a, T: 'a, S: GenericSequence<T>> GenericSequence<T> for &'a mut S
-where
- &'a mut S: IntoIterator,
-{
- type Length = S::Length;
- type Sequence = S::Sequence;
-
- #[inline]
- fn generate<F>(f: F) -> Self::Sequence
- where
- F: FnMut(usize) -> T,
- {
- S::generate(f)
- }
-}
-
-/// Defines any `GenericSequence` which can be lengthened or extended by appending
-/// or prepending an element to it.
-///
-/// Any lengthened sequence can be shortened back to the original using `pop_front` or `pop_back`
-pub unsafe trait Lengthen<T>: Sized + GenericSequence<T> {
- /// `GenericSequence` that has one more element than `Self`
- type Longer: Shorten<T, Shorter = Self>;
-
- /// Returns a new array with the given element appended to the end of it.
- ///
- /// Example:
- ///
- /// ```ignore
- /// let a = arr![i32; 1, 2, 3];
- ///
- /// let b = a.append(4);
- ///
- /// assert_eq!(b, arr![i32; 1, 2, 3, 4]);
- /// ```
- fn append(self, last: T) -> Self::Longer;
-
- /// Returns a new array with the given element prepended to the front of it.
- ///
- /// Example:
- ///
- /// ```ignore
- /// let a = arr![i32; 1, 2, 3];
- ///
- /// let b = a.prepend(4);
- ///
- /// assert_eq!(b, arr![i32; 4, 1, 2, 3]);
- /// ```
- fn prepend(self, first: T) -> Self::Longer;
-}
-
-/// Defines a `GenericSequence` which can be shortened by removing the first or last element from it.
-///
-/// Additionally, any shortened sequence can be lengthened by
-/// appending or prepending an element to it.
-pub unsafe trait Shorten<T>: Sized + GenericSequence<T> {
- /// `GenericSequence` that has one less element than `Self`
- type Shorter: Lengthen<T, Longer = Self>;
-
- /// Returns a new array without the last element, and the last element.
- ///
- /// Example:
- ///
- /// ```ignore
- /// let a = arr![i32; 1, 2, 3, 4];
- ///
- /// let (init, last) = a.pop_back();
- ///
- /// assert_eq!(init, arr![i32; 1, 2, 3]);
- /// assert_eq!(last, 4);
- /// ```
- fn pop_back(self) -> (Self::Shorter, T);
-
- /// Returns a new array without the first element, and the first element.
- /// Example:
- ///
- /// ```ignore
- /// let a = arr![i32; 1, 2, 3, 4];
- ///
- /// let (head, tail) = a.pop_front();
- ///
- /// assert_eq!(head, 1);
- /// assert_eq!(tail, arr![i32; 2, 3, 4]);
- /// ```
- fn pop_front(self) -> (T, Self::Shorter);
-}
-
-unsafe impl<T, N: ArrayLength<T>> Lengthen<T> for GenericArray<T, N>
-where
- N: Add<B1>,
- Add1<N>: ArrayLength<T>,
- Add1<N>: Sub<B1, Output = N>,
- Sub1<Add1<N>>: ArrayLength<T>,
-{
- type Longer = GenericArray<T, Add1<N>>;
-
- fn append(self, last: T) -> Self::Longer {
- let mut longer: Self::Longer = unsafe { mem::uninitialized() };
-
- unsafe {
- ptr::write(longer.as_mut_ptr() as *mut _, self);
- ptr::write(&mut longer[N::to_usize()], last);
- }
-
- longer
- }
-
- fn prepend(self, first: T) -> Self::Longer {
- let mut longer: Self::Longer = unsafe { mem::uninitialized() };
-
- let longer_ptr = longer.as_mut_ptr();
-
- unsafe {
- ptr::write(longer_ptr as *mut _, first);
- ptr::write(longer_ptr.offset(1) as *mut _, self);
- }
-
- longer
- }
-}
-
-unsafe impl<T, N: ArrayLength<T>> Shorten<T> for GenericArray<T, N>
-where
- N: Sub<B1>,
- Sub1<N>: ArrayLength<T>,
- Sub1<N>: Add<B1, Output = N>,
- Add1<Sub1<N>>: ArrayLength<T>,
-{
- type Shorter = GenericArray<T, Sub1<N>>;
-
- fn pop_back(self) -> (Self::Shorter, T) {
- let init_ptr = self.as_ptr();
- let last_ptr = unsafe { init_ptr.offset(Sub1::<N>::to_usize() as isize) };
-
- let init = unsafe { ptr::read(init_ptr as _) };
- let last = unsafe { ptr::read(last_ptr as _) };
-
- mem::forget(self);
-
- (init, last)
- }
-
- fn pop_front(self) -> (T, Self::Shorter) {
- let head_ptr = self.as_ptr();
- let tail_ptr = unsafe { head_ptr.offset(1) };
-
- let head = unsafe { ptr::read(head_ptr as _) };
- let tail = unsafe { ptr::read(tail_ptr as _) };
-
- mem::forget(self);
-
- (head, tail)
- }
-}
-
-/// Defines a `GenericSequence` that can be split into two parts at a given pivot index.
-pub unsafe trait Split<T, K>: GenericSequence<T>
-where
- K: ArrayLength<T>,
-{
- /// First part of the resulting split array
- type First: GenericSequence<T>;
- /// Second part of the resulting split array
- type Second: GenericSequence<T>;
-
- /// Splits an array at the given index, returning the separate parts of the array.
- fn split(self) -> (Self::First, Self::Second);
-}
-
-unsafe impl<T, N, K> Split<T, K> for GenericArray<T, N>
-where
- N: ArrayLength<T>,
- K: ArrayLength<T>,
- N: Sub<K>,
- Diff<N, K>: ArrayLength<T>,
-{
- type First = GenericArray<T, K>;
- type Second = GenericArray<T, Diff<N, K>>;
-
- fn split(self) -> (Self::First, Self::Second) {
- let head_ptr = self.as_ptr();
- let tail_ptr = unsafe { head_ptr.offset(K::to_usize() as isize) };
-
- let head = unsafe { ptr::read(head_ptr as _) };
- let tail = unsafe { ptr::read(tail_ptr as _) };
-
- mem::forget(self);
-
- (head, tail)
- }
-}
-
-/// Defines `GenericSequence`s which can be joined together, forming a larger array.
-pub unsafe trait Concat<T, M>: GenericSequence<T>
-where
- M: ArrayLength<T>,
-{
- /// Sequence to be concatenated with `self`
- type Rest: GenericSequence<T, Length = M>;
-
- /// Resulting sequence formed by the concatenation.
- type Output: GenericSequence<T>;
-
- /// Concatenate, or join, two sequences.
- fn concat(self, rest: Self::Rest) -> Self::Output;
-}
-
-unsafe impl<T, N, M> Concat<T, M> for GenericArray<T, N>
-where
- N: ArrayLength<T> + Add<M>,
- M: ArrayLength<T>,
- Sum<N, M>: ArrayLength<T>,
-{
- type Rest = GenericArray<T, M>;
- type Output = GenericArray<T, Sum<N, M>>;
-
- fn concat(self, rest: Self::Rest) -> Self::Output {
- let mut output: Self::Output = unsafe { mem::uninitialized() };
-
- let output_ptr = output.as_mut_ptr();
-
- unsafe {
- ptr::write(output_ptr as *mut _, self);
- ptr::write(output_ptr.offset(N::to_usize() as isize) as *mut _, rest);
- }
-
- output
- }
-}
diff --git a/vendor/generic-array-0.12.4/tests/arr.rs b/vendor/generic-array-0.12.4/tests/arr.rs
deleted file mode 100644
index c37b5d50f..000000000
--- a/vendor/generic-array-0.12.4/tests/arr.rs
+++ /dev/null
@@ -1,27 +0,0 @@
-#[macro_use]
-extern crate generic_array;
-extern crate typenum;
-
-#[test]
-fn empty_without_trailing_comma() {
- let ar = arr![u8; ];
- assert_eq!(format!("{:x}", ar), "");
-}
-
-#[test]
-fn empty_with_trailing_comma() {
- let ar = arr![u8; , ];
- assert_eq!(format!("{:x}", ar), "");
-}
-
-#[test]
-fn without_trailing_comma() {
- let ar = arr![u8; 10, 20, 30];
- assert_eq!(format!("{:x}", ar), "0a141e");
-}
-
-#[test]
-fn with_trailing_comma() {
- let ar = arr![u8; 10, 20, 30, ];
- assert_eq!(format!("{:x}", ar), "0a141e");
-}
diff --git a/vendor/generic-array-0.12.4/tests/generics.rs b/vendor/generic-array-0.12.4/tests/generics.rs
deleted file mode 100644
index d48fe08c0..000000000
--- a/vendor/generic-array-0.12.4/tests/generics.rs
+++ /dev/null
@@ -1,98 +0,0 @@
-#![recursion_limit = "128"]
-
-#[macro_use]
-extern crate generic_array;
-
-use generic_array::typenum::consts::U4;
-
-use std::fmt::Debug;
-use std::ops::Add;
-
-use generic_array::{GenericArray, ArrayLength};
-use generic_array::sequence::*;
-use generic_array::functional::*;
-
-/// Example function using generics to pass N-length sequences and map them
-pub fn generic_map<S>(s: S)
-where
- S: FunctionalSequence<i32>, // `.map`
- S::Item: Add<i32, Output = i32>, // `x + 1`
- S: MappedGenericSequence<i32, i32>, // `i32` -> `i32`
- MappedSequence<S, i32, i32>: Debug, // println!
-{
- let a = s.map(|x| x + 1);
-
- println!("{:?}", a);
-}
-
-/// Complex example function using generics to pass N-length sequences, zip them, and then map that result.
-///
-/// If used with `GenericArray` specifically this isn't necessary
-pub fn generic_sequence_zip_sum<A, B>(a: A, b: B) -> i32
-where
- A: FunctionalSequence<i32>, // `.zip`
- B: FunctionalSequence<i32, Length = A::Length>, // `.zip`
- A: MappedGenericSequence<i32, i32>, // `i32` -> `i32`
- B: MappedGenericSequence<i32, i32, Mapped = MappedSequence<A, i32, i32>>, // `i32` -> `i32`, prove A and B can map to the same output
- A::Item: Add<B::Item, Output = i32>, // `l + r`
- MappedSequence<A, i32, i32>: MappedGenericSequence<i32, i32> + FunctionalSequence<i32>, // `.map`
- SequenceItem<MappedSequence<A, i32, i32>>: Add<i32, Output=i32>, // `x + 1`
- MappedSequence<MappedSequence<A, i32, i32>, i32, i32>: Debug, // `println!`
- MappedSequence<MappedSequence<A, i32, i32>, i32, i32>: FunctionalSequence<i32>, // `.fold`
- SequenceItem<MappedSequence<MappedSequence<A, i32, i32>, i32, i32>>: Add<i32, Output=i32> // `x + a`, note the order
-{
- let c = a.zip(b, |l, r| l + r).map(|x| x + 1);
-
- println!("{:?}", c);
-
- c.fold(0, |a, x| x + a)
-}
-
-/// Super-simple fixed-length i32 `GenericArray`s
-pub fn generic_array_plain_zip_sum(a: GenericArray<i32, U4>, b: GenericArray<i32, U4>) -> i32 {
- a.zip(b, |l, r| l + r).map(|x| x + 1).fold(0, |a, x| x + a)
-}
-
-pub fn generic_array_variable_length_zip_sum<N>(a: GenericArray<i32, N>, b: GenericArray<i32, N>) -> i32
-where
- N: ArrayLength<i32>,
-{
- a.zip(b, |l, r| l + r).map(|x| x + 1).fold(0, |a, x| x + a)
-}
-
-pub fn generic_array_same_type_variable_length_zip_sum<T, N>(a: GenericArray<T, N>, b: GenericArray<T, N>) -> i32
-where
- N: ArrayLength<T> + ArrayLength<<T as Add<T>>::Output>,
- T: Add<T, Output=i32>,
-{
- a.zip(b, |l, r| l + r).map(|x| x + 1).fold(0, |a, x| x + a)
-}
-
-/// Complex example using fully generic `GenericArray`s with the same length.
-///
-/// It's mostly just the repeated `Add` traits, which would be present in other systems anyway.
-pub fn generic_array_zip_sum<A, B, N: ArrayLength<A> + ArrayLength<B>>(a: GenericArray<A, N>, b: GenericArray<B, N>) -> i32
-where
- A: Add<B>,
- N: ArrayLength<<A as Add<B>>::Output> +
- ArrayLength<<<A as Add<B>>::Output as Add<i32>>::Output>,
- <A as Add<B>>::Output: Add<i32>,
- <<A as Add<B>>::Output as Add<i32>>::Output: Add<i32, Output=i32>,
-{
- a.zip(b, |l, r| l + r).map(|x| x + 1).fold(0, |a, x| x + a)
-}
-
-#[test]
-fn test_generics() {
- generic_map(arr![i32; 1, 2, 3, 4]);
-
- assert_eq!(generic_sequence_zip_sum(arr![i32; 1, 2, 3, 4], arr![i32; 2, 3, 4, 5]), 28);
-
- assert_eq!(generic_array_plain_zip_sum(arr![i32; 1, 2, 3, 4], arr![i32; 2, 3, 4, 5]), 28);
-
- assert_eq!(generic_array_variable_length_zip_sum(arr![i32; 1, 2, 3, 4], arr![i32; 2, 3, 4, 5]), 28);
-
- assert_eq!(generic_array_same_type_variable_length_zip_sum(arr![i32; 1, 2, 3, 4], arr![i32; 2, 3, 4, 5]), 28);
-
- assert_eq!(generic_array_zip_sum(arr![i32; 1, 2, 3, 4], arr![i32; 2, 3, 4, 5]), 28);
-} \ No newline at end of file
diff --git a/vendor/generic-array-0.12.4/tests/hex.rs b/vendor/generic-array-0.12.4/tests/hex.rs
deleted file mode 100644
index 0882e9bb3..000000000
--- a/vendor/generic-array-0.12.4/tests/hex.rs
+++ /dev/null
@@ -1,61 +0,0 @@
-#[macro_use]
-extern crate generic_array;
-extern crate typenum;
-
-use generic_array::GenericArray;
-use std::str::from_utf8;
-use typenum::U2048;
-
-#[test]
-fn short_lower_hex() {
- let ar = arr![u8; 10, 20, 30];
- assert_eq!(format!("{:x}", ar), "0a141e");
-}
-
-#[test]
-fn short_upper_hex() {
- let ar = arr![u8; 30, 20, 10];
- assert_eq!(format!("{:X}", ar), "1E140A");
-}
-
-#[test]
-fn long_lower_hex() {
- let ar = GenericArray::<u8, U2048>::default();
- assert_eq!(format!("{:x}", ar), from_utf8(&[b'0'; 4096]).unwrap());
-}
-
-#[test]
-fn long_lower_hex_truncated() {
- let ar = GenericArray::<u8, U2048>::default();
- assert_eq!(format!("{:.3001x}", ar), from_utf8(&[b'0'; 3001]).unwrap());
-}
-
-#[test]
-fn long_upper_hex() {
- let ar = GenericArray::<u8, U2048>::default();
- assert_eq!(format!("{:X}", ar), from_utf8(&[b'0'; 4096]).unwrap());
-}
-
-#[test]
-fn long_upper_hex_truncated() {
- let ar = GenericArray::<u8, U2048>::default();
- assert_eq!(format!("{:.2777X}", ar), from_utf8(&[b'0'; 2777]).unwrap());
-}
-
-#[test]
-fn truncated_lower_hex() {
- let ar = arr![u8; 10, 20, 30, 40, 50];
- assert_eq!(format!("{:.2x}", ar), "0a");
- assert_eq!(format!("{:.3x}", ar), "0a1");
- assert_eq!(format!("{:.4x}", ar), "0a14");
-}
-
-#[test]
-fn truncated_upper_hex() {
- let ar = arr![u8; 30, 20, 10, 17, 0];
- assert_eq!(format!("{:.4X}", ar), "1E14");
- assert_eq!(format!("{:.5X}", ar), "1E140");
- assert_eq!(format!("{:.6X}", ar), "1E140A");
- assert_eq!(format!("{:.7X}", ar), "1E140A1");
- assert_eq!(format!("{:.8X}", ar), "1E140A11");
-}
diff --git a/vendor/generic-array-0.12.4/tests/import_name.rs b/vendor/generic-array-0.12.4/tests/import_name.rs
deleted file mode 100644
index 27653c9a8..000000000
--- a/vendor/generic-array-0.12.4/tests/import_name.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-#[macro_use]
-extern crate generic_array as gen_arr;
-
-use gen_arr::typenum;
-
-#[test]
-fn test_different_crate_name() {
- let _: gen_arr::GenericArray<u32, typenum::U4> = arr![u32; 0, 1, 2, 3];
- let _: gen_arr::GenericArray<u32, typenum::U0> = arr![u32;];
-}
diff --git a/vendor/generic-array-0.12.4/tests/iter.rs b/vendor/generic-array-0.12.4/tests/iter.rs
deleted file mode 100644
index 47860d728..000000000
--- a/vendor/generic-array-0.12.4/tests/iter.rs
+++ /dev/null
@@ -1,164 +0,0 @@
-#[macro_use]
-extern crate generic_array;
-
-use std::cell::Cell;
-use std::ops::Drop;
-
-use generic_array::GenericArray;
-use generic_array::typenum::consts::U5;
-
-#[test]
-fn test_into_iter_as_slice() {
- let array = arr![char; 'a', 'b', 'c'];
- let mut into_iter = array.into_iter();
- assert_eq!(into_iter.as_slice(), &['a', 'b', 'c']);
- let _ = into_iter.next().unwrap();
- assert_eq!(into_iter.as_slice(), &['b', 'c']);
- let _ = into_iter.next().unwrap();
- let _ = into_iter.next().unwrap();
- assert_eq!(into_iter.as_slice(), &[]);
-}
-
-#[test]
-fn test_into_iter_as_mut_slice() {
- let array = arr![char; 'a', 'b', 'c'];
- let mut into_iter = array.into_iter();
- assert_eq!(into_iter.as_slice(), &['a', 'b', 'c']);
- into_iter.as_mut_slice()[0] = 'x';
- into_iter.as_mut_slice()[1] = 'y';
- assert_eq!(into_iter.next().unwrap(), 'x');
- assert_eq!(into_iter.as_slice(), &['y', 'c']);
-}
-
-#[test]
-fn test_into_iter_debug() {
- let array = arr![char; 'a', 'b', 'c'];
- let into_iter = array.into_iter();
- let debug = format!("{:?}", into_iter);
- assert_eq!(debug, "GenericArrayIter(['a', 'b', 'c'])");
-}
-
-#[test]
-fn test_into_iter_clone() {
- fn iter_equal<I: Iterator<Item = i32>>(it: I, slice: &[i32]) {
- let v: Vec<i32> = it.collect();
- assert_eq!(&v[..], slice);
- }
- let mut it = arr![i32; 1, 2, 3].into_iter();
- iter_equal(it.clone(), &[1, 2, 3]);
- assert_eq!(it.next(), Some(1));
- let mut it = it.rev();
- iter_equal(it.clone(), &[3, 2]);
- assert_eq!(it.next(), Some(3));
- iter_equal(it.clone(), &[2]);
- assert_eq!(it.next(), Some(2));
- iter_equal(it.clone(), &[]);
- assert_eq!(it.next(), None);
-}
-
-#[test]
-fn test_into_iter_nth() {
- let v = arr![i32; 0, 1, 2, 3, 4];
- for i in 0..v.len() {
- assert_eq!(v.clone().into_iter().nth(i).unwrap(), v[i]);
- }
- assert_eq!(v.clone().into_iter().nth(v.len()), None);
-
- let mut iter = v.into_iter();
- assert_eq!(iter.nth(2).unwrap(), v[2]);
- assert_eq!(iter.nth(1).unwrap(), v[4]);
-}
-
-#[test]
-fn test_into_iter_last() {
- let v = arr![i32; 0, 1, 2, 3, 4];
- assert_eq!(v.into_iter().last().unwrap(), 4);
- assert_eq!(arr![i32; 0].into_iter().last().unwrap(), 0);
-}
-
-#[test]
-fn test_into_iter_count() {
- let v = arr![i32; 0, 1, 2, 3, 4];
- assert_eq!(v.clone().into_iter().count(), 5);
-
- let mut iter2 = v.into_iter();
- iter2.next();
- iter2.next();
- assert_eq!(iter2.count(), 3);
-}
-
-#[test]
-fn test_into_iter_flat_map() {
- assert!((0..5).flat_map(|i| arr![i32; 2 * i, 2 * i + 1]).eq(0..10));
-}
-
-#[test]
-fn test_into_iter_drops() {
- struct R<'a> {
- i: &'a Cell<usize>,
- }
-
- impl<'a> Drop for R<'a> {
- fn drop(&mut self) {
- self.i.set(self.i.get() + 1);
- }
- }
-
- fn r(i: &Cell<usize>) -> R {
- R {
- i: i
- }
- }
-
- fn v(i: &Cell<usize>) -> GenericArray<R, U5> {
- arr![R; r(i), r(i), r(i), r(i), r(i)]
- }
-
- let i = Cell::new(0);
- {
- v(&i).into_iter();
- }
- assert_eq!(i.get(), 5);
-
- let i = Cell::new(0);
- {
- let mut iter = v(&i).into_iter();
- let _x = iter.next();
- assert_eq!(i.get(), 0);
- assert_eq!(iter.count(), 4);
- assert_eq!(i.get(), 4);
- }
- assert_eq!(i.get(), 5);
-
- let i = Cell::new(0);
- {
- let mut iter = v(&i).into_iter();
- let _x = iter.nth(2);
- assert_eq!(i.get(), 2);
- let _y = iter.last();
- assert_eq!(i.get(), 3);
- }
- assert_eq!(i.get(), 5);
-
- let i = Cell::new(0);
- for (index, _x) in v(&i).into_iter().enumerate() {
- assert_eq!(i.get(), index);
- }
- assert_eq!(i.get(), 5);
-
- let i = Cell::new(0);
- for (index, _x) in v(&i).into_iter().rev().enumerate() {
- assert_eq!(i.get(), index);
- }
- assert_eq!(i.get(), 5);
-}
-
-/*
-//TODO: Cover this
-#[allow(dead_code)]
-fn assert_covariance() {
- fn into_iter<'new>(i: GenericArrayIter<&'static str, U10>) -> GenericArrayIter<&'new str, U10> {
- i
- }
-}
-*/ \ No newline at end of file
diff --git a/vendor/generic-array-0.12.4/tests/mod.rs b/vendor/generic-array-0.12.4/tests/mod.rs
deleted file mode 100644
index 6c6d9eb49..000000000
--- a/vendor/generic-array-0.12.4/tests/mod.rs
+++ /dev/null
@@ -1,287 +0,0 @@
-#![recursion_limit = "128"]
-#![no_std]
-#[macro_use]
-extern crate generic_array;
-use core::cell::Cell;
-use core::ops::{Add, Drop};
-use generic_array::GenericArray;
-use generic_array::functional::*;
-use generic_array::sequence::*;
-use generic_array::typenum::{U1, U3, U4, U97};
-
-#[test]
-fn test() {
- let mut list97 = [0; 97];
- for i in 0..97 {
- list97[i] = i as i32;
- }
- let l: GenericArray<i32, U97> = GenericArray::clone_from_slice(&list97);
- assert_eq!(l[0], 0);
- assert_eq!(l[1], 1);
- assert_eq!(l[32], 32);
- assert_eq!(l[56], 56);
-}
-
-#[test]
-fn test_drop() {
- #[derive(Clone)]
- struct TestDrop<'a>(&'a Cell<u32>);
-
- impl<'a> Drop for TestDrop<'a> {
- fn drop(&mut self) {
- self.0.set(self.0.get() + 1);
- }
- }
-
- let drop_counter = Cell::new(0);
- {
- let _: GenericArray<TestDrop, U3> = arr![TestDrop; TestDrop(&drop_counter),
- TestDrop(&drop_counter),
- TestDrop(&drop_counter)];
- }
- assert_eq!(drop_counter.get(), 3);
-}
-
-#[test]
-fn test_arr() {
- let test: GenericArray<u32, U3> = arr![u32; 1, 2, 3];
- assert_eq!(test[1], 2);
-}
-
-#[test]
-fn test_copy() {
- let test = arr![u32; 1, 2, 3];
- let test2 = test;
- // if GenericArray is not copy, this should fail as a use of a moved value
- assert_eq!(test[1], 2);
- assert_eq!(test2[0], 1);
-}
-
-#[derive(Debug, PartialEq, Eq)]
-struct NoClone<T>(T);
-
-#[test]
-fn test_from_slice() {
- let arr = [1, 2, 3, 4];
- let gen_arr = GenericArray::<_, U3>::from_slice(&arr[..3]);
- assert_eq!(&arr[..3], gen_arr.as_slice());
- let arr = [NoClone(1u32), NoClone(2), NoClone(3), NoClone(4)];
- let gen_arr = GenericArray::<_, U3>::from_slice(&arr[..3]);
- assert_eq!(&arr[..3], gen_arr.as_slice());
-}
-
-#[test]
-fn test_from_mut_slice() {
- let mut arr = [1, 2, 3, 4];
- {
- let gen_arr = GenericArray::<_, U3>::from_mut_slice(&mut arr[..3]);
- gen_arr[2] = 10;
- }
- assert_eq!(arr, [1, 2, 10, 4]);
- let mut arr = [NoClone(1u32), NoClone(2), NoClone(3), NoClone(4)];
- {
- let gen_arr = GenericArray::<_, U3>::from_mut_slice(&mut arr[..3]);
- gen_arr[2] = NoClone(10);
- }
- assert_eq!(arr, [NoClone(1), NoClone(2), NoClone(10), NoClone(4)]);
-}
-
-#[test]
-fn test_default() {
- let arr = GenericArray::<u8, U1>::default();
- assert_eq!(arr[0], 0);
-}
-
-#[test]
-fn test_from() {
- let data = [(1, 2, 3), (4, 5, 6), (7, 8, 9)];
- let garray: GenericArray<(usize, usize, usize), U3> = data.into();
- assert_eq!(&data, garray.as_slice());
-}
-
-#[test]
-fn test_unit_macro() {
- let arr = arr![f32; 3.14];
- assert_eq!(arr[0], 3.14);
-}
-
-#[test]
-fn test_empty_macro() {
- let _arr = arr![f32;];
-}
-
-#[test]
-fn test_cmp() {
- arr![u8; 0x00].cmp(&arr![u8; 0x00]);
-}
-
-/// This test should cause a helpful compile error if uncommented.
-// #[test]
-// fn test_empty_macro2(){
-// let arr = arr![];
-// }
-#[cfg(feature = "serde")]
-mod impl_serde {
- extern crate serde_json;
-
- use generic_array::GenericArray;
- use generic_array::typenum::U6;
-
- #[test]
- fn test_serde_implementation() {
- let array: GenericArray<f64, U6> = arr![f64; 0.0, 5.0, 3.0, 7.07192, 76.0, -9.0];
- let string = serde_json::to_string(&array).unwrap();
- assert_eq!(string, "[0.0,5.0,3.0,7.07192,76.0,-9.0]");
-
- let test_array: GenericArray<f64, U6> = serde_json::from_str(&string).unwrap();
- assert_eq!(test_array, array);
- }
-}
-
-#[test]
-fn test_map() {
- let b: GenericArray<i32, U4> = GenericArray::generate(|i| i as i32 * 4).map(|x| x - 3);
-
- assert_eq!(b, arr![i32; -3, 1, 5, 9]);
-}
-
-#[test]
-fn test_zip() {
- let a: GenericArray<_, U4> = GenericArray::generate(|i| i + 1);
- let b: GenericArray<_, U4> = GenericArray::generate(|i| i as i32 * 4);
-
- // Uses reference and non-reference arguments
- let c = (&a).zip(b, |r, l| *r as i32 + l);
-
- assert_eq!(c, arr![i32; 1, 6, 11, 16]);
-}
-
-#[test]
-#[should_panic]
-fn test_from_iter_short() {
- use core::iter::repeat;
-
- let a: GenericArray<_, U4> = repeat(11).take(3).collect();
-
- assert_eq!(a, arr![i32; 11, 11, 11, 0]);
-}
-
-#[test]
-fn test_from_iter() {
- use core::iter::{once, repeat};
-
- let a: GenericArray<_, U4> = repeat(11).take(3).chain(once(0)).collect();
-
- assert_eq!(a, arr![i32; 11, 11, 11, 0]);
-}
-
-#[test]
-fn test_sizes() {
- #![allow(dead_code)]
- use core::mem::{size_of, size_of_val};
-
- #[derive(Debug, Copy, Clone)]
- #[repr(C)]
- #[repr(packed)]
- struct Test {
- t: u16,
- s: u32,
- r: u16,
- f: u16,
- o: u32,
- }
-
- assert_eq!(size_of::<Test>(), 14);
-
- assert_eq!(size_of_val(&arr![u8; 1, 2, 3]), size_of::<u8>() * 3);
- assert_eq!(size_of_val(&arr![u32; 1]), size_of::<u32>() * 1);
- assert_eq!(size_of_val(&arr![u64; 1, 2, 3, 4]), size_of::<u64>() * 4);
-
- assert_eq!(size_of::<GenericArray<Test, U97>>(), size_of::<Test>() * 97);
-}
-
-#[test]
-fn test_append() {
- let a = arr![i32; 1, 2, 3];
-
- let b = a.append(4);
-
- assert_eq!(b, arr![i32; 1, 2, 3, 4]);
-}
-
-#[test]
-fn test_prepend() {
- let a = arr![i32; 1, 2, 3];
-
- let b = a.prepend(4);
-
- assert_eq!(b, arr![i32; 4, 1, 2, 3]);
-}
-
-#[test]
-fn test_pop() {
- let a = arr![i32; 1, 2, 3, 4];
-
- let (init, last) = a.pop_back();
-
- assert_eq!(init, arr![i32; 1, 2, 3]);
- assert_eq!(last, 4);
-
- let (head, tail) = a.pop_front();
-
- assert_eq!(head, 1);
- assert_eq!(tail, arr![i32; 2, 3, 4]);
-}
-
-#[test]
-fn test_split() {
- let a = arr![i32; 1, 2, 3, 4];
-
- let (b, c) = a.split();
-
- assert_eq!(b, arr![i32; 1]);
- assert_eq!(c, arr![i32; 2, 3, 4]);
-
- let (e, f) = a.split();
-
- assert_eq!(e, arr![i32; 1, 2]);
- assert_eq!(f, arr![i32; 3, 4]);
-}
-
-#[test]
-fn test_concat() {
- let a = arr![i32; 1, 2];
- let b = arr![i32; 3, 4];
-
- let c = a.concat(b);
-
- assert_eq!(c, arr![i32; 1, 2, 3, 4]);
-
- let (d, e) = c.split();
-
- assert_eq!(d, arr![i32; 1]);
- assert_eq!(e, arr![i32; 2, 3, 4]);
-}
-
-#[test]
-fn test_fold() {
- let a = arr![i32; 1, 2, 3, 4];
-
- assert_eq!(10, a.fold(0, |a, x| a + x));
-}
-
-fn sum_generic<S>(s: S) -> i32
-where
- S: FunctionalSequence<i32>,
- S::Item: Add<i32, Output = i32>, // `+`
- i32: Add<S::Item, Output = i32>, // reflexive
-{
- s.fold(0, |a, x| a + x)
-}
-
-#[test]
-fn test_sum() {
- let a = sum_generic(arr![i32; 1, 2, 3, 4]);
-
- assert_eq!(a, 10);
-}
diff --git a/vendor/getrandom/.cargo-checksum.json b/vendor/getrandom/.cargo-checksum.json
index 7bdcc1bc4..adfe6c9e5 100644
--- a/vendor/getrandom/.cargo-checksum.json
+++ b/vendor/getrandom/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"e972a70c9a4729acbd6bd81ca0c3e03944cab242743b308d124d64b3552f8e63","Cargo.toml":"66283df4cc6406f65b46dded3469d23f9d1c6372a0385af8cdcde9da1b6cf5d9","LICENSE-APACHE":"aaff376532ea30a0cd5330b9502ad4a4c8bf769c539c87ffe78819d188a18ebf","LICENSE-MIT":"209fbbe0ad52d9235e37badf9cadfe4dbdc87203179c0899e738b39ade42177b","README.md":"7ae74633326a22fd6298d7f209fb14884277bd98049795f444945acbb2b0dfbd","benches/mod.rs":"5495735ff210a50cab23c2cc84191ed910af7c30395a3d9d6095b722765b3864","src/3ds.rs":"0f48fc15f89b518fb92e06aaa4838b62dc073598e8f288df56ad1e5a9251af1e","src/bsd_arandom.rs":"d2ee195acd80c7d1364a369ad0d2dad46f5f9f973f9d3960367413fd87acfcd6","src/custom.rs":"b363ee77664203d141985402433afd6808b72cc50bff586b3034d303eccfc281","src/dragonfly.rs":"28f3f7ac4f093dfb6cd2c8e7e0714f16d0f03f8c658e56caa8fe9bd03b1ff39b","src/error.rs":"110ffe8a2c6b0fa46a4e317e837efe617b343f250fedac61bcabc3c5250e7432","src/error_impls.rs":"9c34832ebb99cd5e31bc5c8ffc5beb5b3fa6f7ff0226aaa1cdf8e10e6d64b324","src/espidf.rs":"19f101486584fde6dad962f4d9792de168658047312106641a5caf6866a5bbcf","src/fuchsia.rs":"470d8509deb5b06fa6417f294c0a49e0e35a580249a5d8944c3be5aa746f64ea","src/ios.rs":"4bad4f5c096a50338b86aeac91a937c18bc55b9555e6f34806ad13732e64523d","src/js.rs":"04c750491ba3bcdad3609265938410ee09928c5d6dfd0d33d826a9884d13ac4c","src/lib.rs":"674af2d277b66ecf2e49e1059638abd58db089df095b8b65d9e347782e4bb1e0","src/linux_android.rs":"39cb80999c8534145240a350976d261b8924436bf9a4563960c7bd8c2c83c773","src/macos.rs":"b692f2fcc2319a5195f47751d5bd7dd87c7c24a61d14fa4e3dbc992ae66212b7","src/openbsd.rs":"066b2dd395c190444a658bb0b52a052eabbd68ea5a534fb729c7e5373abc0a6a","src/rdrand.rs":"79d23183b1905d61bd9df9729dc798505a2ed750d3339e342ab144e1709827e4","src/solaris_illumos.rs":"9c7004446fabe5a7a21c73d5a65d7e2115b5bd1d1dbb735c984cab3dba239785","src/solid.rs":"997035d54c9762d22a5a14f54e7fbed4dd266cdeacbdf6aab7d8aee05537e8ba","src/use_file.rs":"16e42eb0a56e375c330c1ca8eb58c444e82ef3ad35230b961fdba96a02a68804","src/util.rs":"da6964dc1523f1cb8d26365fa6a8ece46360587e6974931624b271f0c72cda8b","src/util_libc.rs":"9fd636b23121a86630f0c7891a310444f5b1bb29b0013290e130b79ed1e1f79e","src/vxworks.rs":"a5aa0e40f890e0f35626458bb656a3340b8af3111e4bacd2e12505a8d50a3505","src/wasi.rs":"02b3a75613dc80444847675ecfea59f390c2597ce1d3334612a8dba71f6082de","src/windows.rs":"e3c8f033d5d2a6b8abc5c92b005232f5aca8ce941bd94964a0f58f2436af9990","tests/common/mod.rs":"b6beee8f535d2d094a65711fe0af91a6fc220aa09729ed7269fe33cafdc9177f","tests/custom.rs":"9f2c0193193f6bcf641116ca0b3653b33d2015e0e98ce107ee1d1f60c5eeae3a","tests/normal.rs":"9e1c4b1e468a09ed0225370dfb6608f8b8135e0fabb09bbc1a718105164aade6","tests/rdrand.rs":"4474ccebf9d33c89288862a7e367018405968dddc55c7c6f97e21b5fe2264601"},"package":"9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"1289f7318d266dca92eceb373c5ff6ee81fa867a6f180ad57759d37df9fcad91","Cargo.toml":"2b0b1b62739f57c58e5069f90b70003f56f3242517d14ac1f875b9f36d227e6e","LICENSE-APACHE":"aaff376532ea30a0cd5330b9502ad4a4c8bf769c539c87ffe78819d188a18ebf","LICENSE-MIT":"209fbbe0ad52d9235e37badf9cadfe4dbdc87203179c0899e738b39ade42177b","README.md":"7ae74633326a22fd6298d7f209fb14884277bd98049795f444945acbb2b0dfbd","benches/mod.rs":"5495735ff210a50cab23c2cc84191ed910af7c30395a3d9d6095b722765b3864","src/3ds.rs":"0f48fc15f89b518fb92e06aaa4838b62dc073598e8f288df56ad1e5a9251af1e","src/bsd_arandom.rs":"d90c419d4def20f83e7535cd3f5ec07035045011a50c3652951d196a120c5d3e","src/custom.rs":"b363ee77664203d141985402433afd6808b72cc50bff586b3034d303eccfc281","src/dragonfly.rs":"47f933eac189f6ea48ecf021efd0747ebce1b43d1bece6bbf72a951bab705987","src/error.rs":"f87ce17f9299f9b59b47306dab25ed01d720a0ba53363f52b46b50e2f5e49e36","src/error_impls.rs":"9c34832ebb99cd5e31bc5c8ffc5beb5b3fa6f7ff0226aaa1cdf8e10e6d64b324","src/espidf.rs":"19f101486584fde6dad962f4d9792de168658047312106641a5caf6866a5bbcf","src/fuchsia.rs":"470d8509deb5b06fa6417f294c0a49e0e35a580249a5d8944c3be5aa746f64ea","src/ios.rs":"4bad4f5c096a50338b86aeac91a937c18bc55b9555e6f34806ad13732e64523d","src/js.rs":"04c750491ba3bcdad3609265938410ee09928c5d6dfd0d33d826a9884d13ac4c","src/lib.rs":"6f61a660fe35864a2fc8ed2fe29b1c2ddf5d29854a2871daade66f0059f65b8e","src/linux_android.rs":"ec24575aa4ae71b6991290dadfdea931b05397c3faababf24bd794f1a9624835","src/macos.rs":"6c09827ad5292cd022e063efa79523bfdb50ed08b9867ebaa007cd321b8d218e","src/openbsd.rs":"450a23ead462d4a840fee4aa0bfdab1e3d88c8f48e4bb608d457429ddeca69c0","src/rdrand.rs":"79d23183b1905d61bd9df9729dc798505a2ed750d3339e342ab144e1709827e4","src/solaris_illumos.rs":"d52fee9dd7d661f960c01894edd563c1ff8a512c111f7803092d9aa2ff98718e","src/solid.rs":"997035d54c9762d22a5a14f54e7fbed4dd266cdeacbdf6aab7d8aee05537e8ba","src/use_file.rs":"16e42eb0a56e375c330c1ca8eb58c444e82ef3ad35230b961fdba96a02a68804","src/util.rs":"da6964dc1523f1cb8d26365fa6a8ece46360587e6974931624b271f0c72cda8b","src/util_libc.rs":"2a63ac0e6dab16b85c4728b79a16e0640301e8b876f151b0a1db0b4394fa219f","src/vxworks.rs":"a5aa0e40f890e0f35626458bb656a3340b8af3111e4bacd2e12505a8d50a3505","src/wasi.rs":"dfdd0a870581948bd03abe64d49ca4295d9cfa26e09b97a526fd5e17148ad9ca","src/windows.rs":"d0b4f2afd1959660aa9abcd9477764bd7dc0b7d7048aee748804b37963c77c6f","tests/common/mod.rs":"b6beee8f535d2d094a65711fe0af91a6fc220aa09729ed7269fe33cafdc9177f","tests/custom.rs":"9f2c0193193f6bcf641116ca0b3653b33d2015e0e98ce107ee1d1f60c5eeae3a","tests/normal.rs":"9e1c4b1e468a09ed0225370dfb6608f8b8135e0fabb09bbc1a718105164aade6","tests/rdrand.rs":"4474ccebf9d33c89288862a7e367018405968dddc55c7c6f97e21b5fe2264601"},"package":"4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"} \ No newline at end of file
diff --git a/vendor/getrandom/CHANGELOG.md b/vendor/getrandom/CHANGELOG.md
index 4ab267ae0..b25704947 100644
--- a/vendor/getrandom/CHANGELOG.md
+++ b/vendor/getrandom/CHANGELOG.md
@@ -4,6 +4,21 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## [0.2.7] - 2022-06-14
+### Changed
+- Update `wasi` dependency to `0.11` [#253]
+
+### Fixed
+- Use `AtomicPtr` instead of `AtomicUsize` for Strict Provenance compatibility. [#263]
+
+### Documentation
+- Add comments explaining use of fallback mechanisms [#257] [#260]
+
+[#263]: https://github.com/rust-random/getrandom/pull/263
+[#260]: https://github.com/rust-random/getrandom/pull/260
+[#253]: https://github.com/rust-random/getrandom/pull/253
+[#257]: https://github.com/rust-random/getrandom/pull/257
+
## [0.2.6] - 2022-03-28
### Added
- Nintendo 3DS (`armv6k-nintendo-3ds`) support [#248]
@@ -291,7 +306,8 @@ Publish initial implementation.
## [0.0.0] - 2019-01-19
Publish an empty template library.
-[0.2.5]: https://github.com/rust-random/getrandom/compare/v0.2.5...v0.2.6
+[0.2.7]: https://github.com/rust-random/getrandom/compare/v0.2.6...v0.2.7
+[0.2.6]: https://github.com/rust-random/getrandom/compare/v0.2.5...v0.2.6
[0.2.5]: https://github.com/rust-random/getrandom/compare/v0.2.4...v0.2.5
[0.2.4]: https://github.com/rust-random/getrandom/compare/v0.2.3...v0.2.4
[0.2.3]: https://github.com/rust-random/getrandom/compare/v0.2.2...v0.2.3
diff --git a/vendor/getrandom/Cargo.toml b/vendor/getrandom/Cargo.toml
index 0a664244e..9b9c0880a 100644
--- a/vendor/getrandom/Cargo.toml
+++ b/vendor/getrandom/Cargo.toml
@@ -12,17 +12,29 @@
[package]
edition = "2018"
name = "getrandom"
-version = "0.2.6"
+version = "0.2.7"
authors = ["The Rand Project Developers"]
exclude = [".*"]
description = "A small cross-platform library for retrieving random data from system source"
documentation = "https://docs.rs/getrandom"
-categories = ["os", "no-std"]
+readme = "README.md"
+categories = [
+ "os",
+ "no-std",
+]
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-random/getrandom"
+
[package.metadata.docs.rs]
-features = ["std", "custom"]
-rustdoc-args = ["--cfg", "docsrs"]
+features = [
+ "std",
+ "custom",
+]
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+
[dependencies.cfg-if]
version = "1"
@@ -37,11 +49,20 @@ package = "rustc-std-workspace-core"
[features]
custom = []
-js = ["wasm-bindgen", "js-sys"]
+js = [
+ "wasm-bindgen",
+ "js-sys",
+]
rdrand = []
-rustc-dep-of-std = ["compiler_builtins", "core", "libc/rustc-dep-of-std", "wasi/rustc-dep-of-std"]
+rustc-dep-of-std = [
+ "compiler_builtins",
+ "core",
+ "libc/rustc-dep-of-std",
+ "wasi/rustc-dep-of-std",
+]
std = []
test-in-browser = []
+
[target."cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))".dependencies.js-sys]
version = "0.3"
optional = true
@@ -50,10 +71,13 @@ optional = true
version = "0.2.62"
optional = true
default-features = false
+
[target."cfg(all(target_arch = \"wasm32\", target_os = \"unknown\"))".dev-dependencies.wasm-bindgen-test]
version = "0.3.18"
+
[target."cfg(target_os = \"wasi\")".dependencies.wasi]
-version = "0.10"
+version = "0.11"
+
[target."cfg(unix)".dependencies.libc]
version = "0.2.120"
default-features = false
diff --git a/vendor/getrandom/src/bsd_arandom.rs b/vendor/getrandom/src/bsd_arandom.rs
index f26f2609c..d44121254 100644
--- a/vendor/getrandom/src/bsd_arandom.rs
+++ b/vendor/getrandom/src/bsd_arandom.rs
@@ -31,6 +31,7 @@ fn kern_arnd(buf: &mut [u8]) -> libc::ssize_t {
}
pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
+ // getrandom(2) was introduced in FreeBSD 12.0 and NetBSD 10.0
#[cfg(target_os = "freebsd")]
{
use crate::util_libc::Weak;
diff --git a/vendor/getrandom/src/dragonfly.rs b/vendor/getrandom/src/dragonfly.rs
index f27e90690..8daaa4048 100644
--- a/vendor/getrandom/src/dragonfly.rs
+++ b/vendor/getrandom/src/dragonfly.rs
@@ -17,6 +17,7 @@ pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
static GETRANDOM: Weak = unsafe { Weak::new("getrandom\0") };
type GetRandomFn = unsafe extern "C" fn(*mut u8, libc::size_t, libc::c_uint) -> libc::ssize_t;
+ // getrandom(2) was introduced in DragonflyBSD 5.7
if let Some(fptr) = GETRANDOM.ptr() {
let func: GetRandomFn = unsafe { core::mem::transmute(fptr) };
return sys_fill_exact(dest, |buf| unsafe { func(buf.as_mut_ptr(), buf.len(), 0) });
diff --git a/vendor/getrandom/src/error.rs b/vendor/getrandom/src/error.rs
index 661575376..b5ab2bb18 100644
--- a/vendor/getrandom/src/error.rs
+++ b/vendor/getrandom/src/error.rs
@@ -109,10 +109,6 @@ cfg_if! {
let idx = buf.iter().position(|&b| b == 0).unwrap_or(n);
core::str::from_utf8(&buf[..idx]).ok()
}
- } else if #[cfg(target_os = "wasi")] {
- fn os_err(errno: i32, _buf: &mut [u8]) -> Option<wasi::Error> {
- wasi::Error::from_raw_error(errno as _)
- }
} else {
fn os_err(_errno: i32, _buf: &mut [u8]) -> Option<&str> {
None
diff --git a/vendor/getrandom/src/lib.rs b/vendor/getrandom/src/lib.rs
index 888b9a510..c62056e55 100644
--- a/vendor/getrandom/src/lib.rs
+++ b/vendor/getrandom/src/lib.rs
@@ -149,7 +149,7 @@
#![doc(
html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk.png",
html_favicon_url = "https://www.rust-lang.org/favicon.ico",
- html_root_url = "https://docs.rs/getrandom/0.2.6"
+ html_root_url = "https://docs.rs/getrandom/0.2.7"
)]
#![no_std]
#![warn(rust_2018_idioms, unused_lifetimes, missing_docs)]
diff --git a/vendor/getrandom/src/linux_android.rs b/vendor/getrandom/src/linux_android.rs
index 5508fdd06..4270b67c6 100644
--- a/vendor/getrandom/src/linux_android.rs
+++ b/vendor/getrandom/src/linux_android.rs
@@ -14,6 +14,7 @@ use crate::{
};
pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
+ // getrandom(2) was introduced in Linux 3.17
static HAS_GETRANDOM: LazyBool = LazyBool::new();
if HAS_GETRANDOM.unsync_init(is_getrandom_available) {
sys_fill_exact(dest, |buf| unsafe {
diff --git a/vendor/getrandom/src/macos.rs b/vendor/getrandom/src/macos.rs
index 585a35abd..671a053bf 100644
--- a/vendor/getrandom/src/macos.rs
+++ b/vendor/getrandom/src/macos.rs
@@ -17,6 +17,7 @@ use core::mem;
type GetEntropyFn = unsafe extern "C" fn(*mut u8, libc::size_t) -> libc::c_int;
pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
+ // getentropy(2) was added in 10.12, Rust supports 10.7+
static GETENTROPY: Weak = unsafe { Weak::new("getentropy\0") };
if let Some(fptr) = GETENTROPY.ptr() {
let func: GetEntropyFn = unsafe { mem::transmute(fptr) };
diff --git a/vendor/getrandom/src/openbsd.rs b/vendor/getrandom/src/openbsd.rs
index c8d28b3d8..41371736f 100644
--- a/vendor/getrandom/src/openbsd.rs
+++ b/vendor/getrandom/src/openbsd.rs
@@ -10,6 +10,7 @@
use crate::{util_libc::last_os_error, Error};
pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
+ // getentropy(2) was added in OpenBSD 5.6, so we can use it unconditionally.
for chunk in dest.chunks_mut(256) {
let ret = unsafe { libc::getentropy(chunk.as_mut_ptr() as *mut libc::c_void, chunk.len()) };
if ret == -1 {
diff --git a/vendor/getrandom/src/solaris_illumos.rs b/vendor/getrandom/src/solaris_illumos.rs
index 2d1b767bb..cf3067d6d 100644
--- a/vendor/getrandom/src/solaris_illumos.rs
+++ b/vendor/getrandom/src/solaris_illumos.rs
@@ -30,6 +30,7 @@ type GetRandomFn = unsafe extern "C" fn(*mut u8, libc::size_t, libc::c_uint) ->
type GetRandomFn = unsafe extern "C" fn(*mut u8, libc::size_t, libc::c_uint) -> libc::c_int;
pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
+ // getrandom(2) was introduced in Solaris 11.3 for Illumos in 2015.
static GETRANDOM: Weak = unsafe { Weak::new("getrandom\0") };
if let Some(fptr) = GETRANDOM.ptr() {
let func: GetRandomFn = unsafe { mem::transmute(fptr) };
diff --git a/vendor/getrandom/src/util_libc.rs b/vendor/getrandom/src/util_libc.rs
index 6df1cd7da..d057071a7 100644
--- a/vendor/getrandom/src/util_libc.rs
+++ b/vendor/getrandom/src/util_libc.rs
@@ -6,8 +6,13 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![allow(dead_code)]
-use crate::{util::LazyUsize, Error};
-use core::{num::NonZeroU32, ptr::NonNull};
+use crate::Error;
+use core::{
+ num::NonZeroU32,
+ ptr::NonNull,
+ sync::atomic::{fence, AtomicPtr, Ordering},
+};
+use libc::c_void;
cfg_if! {
if #[cfg(any(target_os = "netbsd", target_os = "openbsd", target_os = "android"))] {
@@ -76,29 +81,57 @@ pub fn sys_fill_exact(
// A "weak" binding to a C function that may or may not be present at runtime.
// Used for supporting newer OS features while still building on older systems.
-// F must be a function pointer of type `unsafe extern "C" fn`. Based off of the
-// weak! macro in libstd.
+// Based off of the DlsymWeak struct in libstd:
+// https://github.com/rust-lang/rust/blob/1.61.0/library/std/src/sys/unix/weak.rs#L84
+// except that the caller must manually cast self.ptr() to a function pointer.
pub struct Weak {
name: &'static str,
- addr: LazyUsize,
+ addr: AtomicPtr<c_void>,
}
impl Weak {
+ // A non-null pointer value which indicates we are uninitialized. This
+ // constant should ideally not be a valid address of a function pointer.
+ // However, if by chance libc::dlsym does return UNINIT, there will not
+ // be undefined behavior. libc::dlsym will just be called each time ptr()
+ // is called. This would be inefficient, but correct.
+ // TODO: Replace with core::ptr::invalid_mut(1) when that is stable.
+ const UNINIT: *mut c_void = 1 as *mut c_void;
+
// Construct a binding to a C function with a given name. This function is
// unsafe because `name` _must_ be null terminated.
pub const unsafe fn new(name: &'static str) -> Self {
Self {
name,
- addr: LazyUsize::new(),
+ addr: AtomicPtr::new(Self::UNINIT),
}
}
- // Return a function pointer if present at runtime. Otherwise, return null.
- pub fn ptr(&self) -> Option<NonNull<libc::c_void>> {
- let addr = self.addr.unsync_init(|| unsafe {
- libc::dlsym(libc::RTLD_DEFAULT, self.name.as_ptr() as *const _) as usize
- });
- NonNull::new(addr as *mut _)
+ // Return the address of a function if present at runtime. Otherwise,
+ // return None. Multiple callers can call ptr() concurrently. It will
+ // always return _some_ value returned by libc::dlsym. However, the
+ // dlsym function may be called multiple times.
+ pub fn ptr(&self) -> Option<NonNull<c_void>> {
+ // Despite having only a single atomic variable (self.addr), we still
+ // cannot always use Ordering::Relaxed, as we need to make sure a
+ // successful call to dlsym() is "ordered before" any data read through
+ // the returned pointer (which occurs when the function is called).
+ // Our implementation mirrors that of the one in libstd, meaning that
+ // the use of non-Relaxed operations is probably unnecessary.
+ match self.addr.load(Ordering::Relaxed) {
+ Self::UNINIT => {
+ let symbol = self.name.as_ptr() as *const _;
+ let addr = unsafe { libc::dlsym(libc::RTLD_DEFAULT, symbol) };
+ // Synchronizes with the Acquire fence below
+ self.addr.store(addr, Ordering::Release);
+ NonNull::new(addr)
+ }
+ addr => {
+ let func = NonNull::new(addr)?;
+ fence(Ordering::Acquire);
+ Some(func)
+ }
+ }
}
}
diff --git a/vendor/getrandom/src/wasi.rs b/vendor/getrandom/src/wasi.rs
index 2d413e020..c5121824a 100644
--- a/vendor/getrandom/src/wasi.rs
+++ b/vendor/getrandom/src/wasi.rs
@@ -9,15 +9,11 @@
//! Implementation for WASI
use crate::Error;
use core::num::NonZeroU32;
-use wasi::random_get;
+use wasi::wasi_snapshot_preview1::random_get;
pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
- unsafe {
- random_get(dest.as_mut_ptr(), dest.len()).map_err(|e: wasi::Error| {
- // convert wasi's Error into getrandom's NonZeroU32 error
- // SAFETY: `wasi::Error` is `NonZeroU16` internally, so `e.raw_error()`
- // will never return 0
- NonZeroU32::new_unchecked(e.raw_error() as u32).into()
- })
+ match unsafe { random_get(dest.as_mut_ptr() as i32, dest.len() as i32) } {
+ 0 => Ok(()),
+ err => Err(unsafe { NonZeroU32::new_unchecked(err as u32) }.into()),
}
}
diff --git a/vendor/getrandom/src/windows.rs b/vendor/getrandom/src/windows.rs
index 643badd07..41dc37a5c 100644
--- a/vendor/getrandom/src/windows.rs
+++ b/vendor/getrandom/src/windows.rs
@@ -24,6 +24,7 @@ extern "system" {
pub fn getrandom_inner(dest: &mut [u8]) -> Result<(), Error> {
// Prevent overflow of u32
for chunk in dest.chunks_mut(u32::max_value() as usize) {
+ // BCryptGenRandom was introduced in Windows Vista
let ret = unsafe {
BCryptGenRandom(
ptr::null_mut(),
diff --git a/vendor/gimli/.cargo-checksum.json b/vendor/gimli/.cargo-checksum.json
index 5b855e30c..759ec93de 100644
--- a/vendor/gimli/.cargo-checksum.json
+++ b/vendor/gimli/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"13bb20c4d7f171cdaf835093237311af52dd979091cbe2c46a6f978c9d783721","CONTRIBUTING.md":"5f513ec06013e4f6f097e9c9492da5a47b9f25c94c6ecadfb655a77405fe912c","Cargo.lock":"9961bcba2db19ce16584ca5cb089568de7ffcbc9668cba37fc3dd851b2e58e56","Cargo.toml":"d607f683bfe0d69d932c331701d54bdf429dbe5280b7cd3b1a5478d9dd9cdc79","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"03ac1a78a14682d70da4d485d3fa01d0ad819b65b6aed50359ee72af43158ca9","benches/bench.rs":"e0045b989683794951563aa91b37069b2f6ae55f95e288d23f5c984b46e3a7eb","examples/dwarf-validate.rs":"8a322dc48a04bff33a759030f399ca9972ddb103e63851cbb9b8c9672095f645","examples/dwarfdump.rs":"3ef93684d0b417da7dc89751e2f5d1c297b3574b478848cb79b550d4ecd83222","examples/simple.rs":"684dc9785f4aa0714fcb91a3ae1bb7c8612c9b12969be47fe1327447a2101d1c","examples/simple_line.rs":"ec5fa47c1ab019c6cd9d525223f947533f6d65d6add3131a0c40ac18fc1297db","fixtures/self/README.md":"557cd710240a14fdaa5842b216de57f2ed481151b640af09d6877984b3b2389f","fixtures/self/debug_abbrev":"7c0faa940d9c68d196d03ad55a20e5c746040fa428ff323277fa381deff82bba","fixtures/self/debug_aranges":"8c2aeb2335f61d04ecb7b747070d24f83a6517cbee79dc5c96d97fb6c53d6b6d","fixtures/self/debug_info":"42028a5983006e0703f9ca9515cd27d891ae4af70279fae5011d547f581e2661","fixtures/self/debug_inlined":"89d9516f06ff835621936037f5884fc56712bf304c1dcde52251ddd510fe8710","fixtures/self/debug_line":"b29aebcca3b38bb2bb8aa708cbe74a0dce5a3b0c18916b63d6d17282c017bec7","fixtures/self/debug_loc":"8906ccb9c204f233eb74c1d069dee97a19d18c2051f9147795d7b5364a9266aa","fixtures/self/debug_pubnames":"cf58e237f89c68afba724597fa7e260448636b45f2e69dc6f1bfe34006e27c48","fixtures/self/debug_pubtypes":"d43c1bed71c9d14d1683294cdc1833f069cf131d6e95ee808547919b4f352d81","fixtures/self/debug_ranges":"6d765ac18d33accd89186d077eeb505cbdf97d990c9201d63d9463cd7787ce7a","fixtures/self/debug_str":"9ed904b68eee77b8558b80b3b7ca03e8527f6c64483e9d6d845f40270eb21183","fixtures/self/eh_frame":"6dc3d84351cac42cf73d03452fbb532470dd94d08715154c48417e3f62095f17","fixtures/self/eh_frame_hdr":"afba7a0aa233c9a8c81c986495bd2505164844adb93272d6bc0c9e592e684716","rustfmt.toml":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","src/arch.rs":"1c4cb3e2a322f3f42fe0b82875c9d0ce060d9af2388990139bdce9a4487c32da","src/common.rs":"392f52a58db6101187ca5525bbeafca9bda2342debd058cabca37350cd9db619","src/constants.rs":"ca3169f7a45ff1b6a504966c5627ad5c99193e2d0ec06dc9edfdf37617198093","src/endianity.rs":"1f7e62ae34f540c06bedf1e7948739211556eea7dd83731a5ca52c7d687ed0fc","src/leb128.rs":"996d5c79d027f97c010ca487bc4ff5f8265f4b9e63d62b4e4fa291383c259ee9","src/lib.rs":"427d747b0af62894e3c5ea20aecad33e5f458bec0b50fbe584e1e6aa1e5eb4f8","src/read/abbrev.rs":"c49c47ff607435c9d0b702faf366068cd1e95d175be79358b1e21244151eeab6","src/read/addr.rs":"f63f289edf889e87107bb2090fb1c50b48af7015f31b7c39c3d6ea09630a38e9","src/read/aranges.rs":"dee9500e0428bc34fca58b2dda85aef6bf0293785c4077c1a4c144109e9d87c9","src/read/cfi.rs":"e4dacfb576ecbe9248cbea3c3c682b6fd835d3843bca68bb3e18dbda55728643","src/read/dwarf.rs":"a39c24429b437ae3a1cd17bae2f01c973c9ce39f7b5f2b3435982d6860944e0e","src/read/endian_reader.rs":"320983a859c2bb0dd44a3e6fae55ff0a84dba3fa80c2edbc64aa8135c44eddf0","src/read/endian_slice.rs":"ae1c52499728f6a85648f1bf87c02dcf43bebecb5ad4e835a1246938ba4338bf","src/read/index.rs":"e79b8d591b8e2007a37f5ea85a6d71b69d56ca3739a85cf7bf361724c5b829fa","src/read/line.rs":"47ca5ebb8bd19000045954686d3320b838e9404cba917ec60525f11ea0d87095","src/read/lists.rs":"e473ff419feed9756289e245b7879bd89e7f19098a53162fe6773fac496ae5bc","src/read/loclists.rs":"2a5655c53fb2bf5cfe2df373210217edaa06e4d3addf27df0f724100cbfbe43b","src/read/lookup.rs":"0cf89ba12b9d48b1fe035dd3a497730323acb9427a9457abbc2f7c58c4c71165","src/read/mod.rs":"7ea1d01906db92a31a0915b8d2a84776b2a1b2a6587aac8a4acf5ecc48c019b6","src/read/op.rs":"2de049cdcff6c0a324c5737d3fc93431c729554b3bf38e09777b855d7058b29f","src/read/pubnames.rs":"701c1279aef596ed8eff13f19a5803f9e1070afa20c9bafbf29659d4c294edd4","src/read/pubtypes.rs":"6250112d63120ed283698cb42189b127f624fb453abb1222dfa75fe103ad077e","src/read/reader.rs":"b10ff3e77b54347e96b1f3cff30da104dfdd0c4d7a55b672950788f1f1ae3478","src/read/rnglists.rs":"e7426fa1564cbd7e84871ddd741d6a7f016596633f1ffa097885b6e685fc8da2","src/read/str.rs":"932971a6f6f3453685dbd33ff3c2d31a10820b989a209bdfeca3e8c5012cc4b8","src/read/unit.rs":"305e834d7c14e6855beab411076cb7db2615373fd761396ec253250bb0381a59","src/read/util.rs":"480acb9a1fbae7ce935dd1d1307e6a0ab222e009b63ae7817b4bcdcccb9a9ec4","src/read/value.rs":"9a961a49c43bd05061fce1765bda0da049f26420d1be2ed0584de7d1597ab836","src/test_util.rs":"291eefa6b51c6d934ba2f4a4c9bc7c403046fc1cccf4d43487820f0154bb89e2","src/write/abbrev.rs":"fa02163389e92e804d139cf84f833ab6af932083f0eb2d74464b4a70bd3237ff","src/write/cfi.rs":"5d36c6978d2bda09921f5b71b764a75a58e819551471fb44db23ce5db7c4a8e3","src/write/dwarf.rs":"8a1a0893e31134ad68993994594f3024ad0c8af7c1188b29e0ffc26b42edef21","src/write/endian_vec.rs":"1d5811986648816a677580b22630f5059757a381487d73e9adbb3008c9ae0c58","src/write/line.rs":"df7d2082c71b5e523cd52745700aae3dcfa5800f0b280e831ef5d8eb8035d6a7","src/write/loc.rs":"bb5b750c04f6603e18225db72652ea00239234ba674a8a8627c99d4ab07b47a9","src/write/mod.rs":"d8aa1da854cdee629d470d00d87e00dc6998e4bec1ca951f8d2f277730ab9d69","src/write/op.rs":"fb99e95631e24e46eaddef393281ed4f4c56ebc0713a8cbe1683893f7bdde8c6","src/write/range.rs":"5bac01e372c08e3cc19e1e07e40492d8214cdfa8881737920cb792f4aa2ba80b","src/write/section.rs":"3ce781d5e82ba365ff54fdd36e0ef58c58a2215b09a8861eb0b038efac82b77f","src/write/str.rs":"4850cc2fee55980f9cbb6b4169f9861ab9d05c2b28a85c2b790480b83a66f514","src/write/unit.rs":"213c881736f8c87fcb2f921e379791eaba2915e8d077139965a9c6211001fe44","src/write/writer.rs":"304181287f90445bbfb33349c26b34bd87002d6844fc5686bfc0756fd0a1ecd8","tests/convert_self.rs":"8fba3599ac892a704cbcd5aed53eaef51b040043da04f85f002c597ee7549046","tests/parse_self.rs":"f2da1c7daef7139545c9367c2f26199e8b4623b31d4ec6480ddd851e6980f2dc"},"package":"78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"789a696803d3f1bed3ff3566cac8e7cf15c4bf9428242d637d0ce7f3a0ad57a3","CONTRIBUTING.md":"5f513ec06013e4f6f097e9c9492da5a47b9f25c94c6ecadfb655a77405fe912c","Cargo.lock":"284bff6b09ef0fd214c34492417778d6d5b9f75dc54557015af01a95696c752a","Cargo.toml":"92dccbeaa61bc8c65da53917fbf32900b3cb2549f90b67b67e1c67672bac205e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"57e36d344dabe1c52a9c81eafb28787c309b86c47437abf8589ef17bf383fc5f","benches/bench.rs":"e0045b989683794951563aa91b37069b2f6ae55f95e288d23f5c984b46e3a7eb","examples/dwarf-validate.rs":"4aac1045e3c08bf00878eeff75c0cfc30c06171c5eab2e71d757505786729687","examples/dwarfdump.rs":"d74323c037689b32825efa9bf69614ee26a444513b266e819ecf486956ee3299","examples/simple.rs":"4c3425e8bd1880d9522f5ed2581fb5ccd452d4be678eebc0e147c48722a7be1d","examples/simple_line.rs":"ac795f859a17650dde466b5b23b8c161b2e3b8eb57e32f5b6718a3072f6bfad0","fixtures/self/README.md":"7cfd76031ec5a4b38cc4eb56ccbfe1bb590fb54c333d037550bdeaaeacfc20cb","fixtures/self/debug_abbrev":"7c0faa940d9c68d196d03ad55a20e5c746040fa428ff323277fa381deff82bba","fixtures/self/debug_aranges":"8c2aeb2335f61d04ecb7b747070d24f83a6517cbee79dc5c96d97fb6c53d6b6d","fixtures/self/debug_info":"42028a5983006e0703f9ca9515cd27d891ae4af70279fae5011d547f581e2661","fixtures/self/debug_inlined":"89d9516f06ff835621936037f5884fc56712bf304c1dcde52251ddd510fe8710","fixtures/self/debug_line":"b29aebcca3b38bb2bb8aa708cbe74a0dce5a3b0c18916b63d6d17282c017bec7","fixtures/self/debug_loc":"8906ccb9c204f233eb74c1d069dee97a19d18c2051f9147795d7b5364a9266aa","fixtures/self/debug_pubnames":"cf58e237f89c68afba724597fa7e260448636b45f2e69dc6f1bfe34006e27c48","fixtures/self/debug_pubtypes":"d43c1bed71c9d14d1683294cdc1833f069cf131d6e95ee808547919b4f352d81","fixtures/self/debug_ranges":"6d765ac18d33accd89186d077eeb505cbdf97d990c9201d63d9463cd7787ce7a","fixtures/self/debug_str":"9ed904b68eee77b8558b80b3b7ca03e8527f6c64483e9d6d845f40270eb21183","fixtures/self/eh_frame":"6dc3d84351cac42cf73d03452fbb532470dd94d08715154c48417e3f62095f17","fixtures/self/eh_frame_hdr":"afba7a0aa233c9a8c81c986495bd2505164844adb93272d6bc0c9e592e684716","rustfmt.toml":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","src/arch.rs":"1c4cb3e2a322f3f42fe0b82875c9d0ce060d9af2388990139bdce9a4487c32da","src/common.rs":"392f52a58db6101187ca5525bbeafca9bda2342debd058cabca37350cd9db619","src/constants.rs":"358cf7924c79bc72de59d23d1fa02b2047d6c763c8fbd8be263ab8cd3e3ba7ec","src/endianity.rs":"1f7e62ae34f540c06bedf1e7948739211556eea7dd83731a5ca52c7d687ed0fc","src/leb128.rs":"996d5c79d027f97c010ca487bc4ff5f8265f4b9e63d62b4e4fa291383c259ee9","src/lib.rs":"6863b9a9d1eddf34b4095dfe60318aae56914fbf515ba5601b29024cc963f27c","src/read/abbrev.rs":"a3f550c32f1eb880d82bdb5257d35e10d32cfd039050e8131cbeedac346cc1d9","src/read/addr.rs":"f63f289edf889e87107bb2090fb1c50b48af7015f31b7c39c3d6ea09630a38e9","src/read/aranges.rs":"ba3302f87cffb7ee15f48b0530ebd707f45ad056934223078d25ae2a1b034f1c","src/read/cfi.rs":"b1064ed9b4b87169a148cc86adc7443c5a771dc2d1799129f7883f1ef6adc165","src/read/dwarf.rs":"a39c24429b437ae3a1cd17bae2f01c973c9ce39f7b5f2b3435982d6860944e0e","src/read/endian_reader.rs":"320983a859c2bb0dd44a3e6fae55ff0a84dba3fa80c2edbc64aa8135c44eddf0","src/read/endian_slice.rs":"ae1c52499728f6a85648f1bf87c02dcf43bebecb5ad4e835a1246938ba4338bf","src/read/index.rs":"e79b8d591b8e2007a37f5ea85a6d71b69d56ca3739a85cf7bf361724c5b829fa","src/read/line.rs":"af7a1520777e56632970fc5fe7377fdcd12d078eb88eeb2b0f2cc95b73ff68a7","src/read/lists.rs":"67ca9e1a36a91feb4996d035211de845205212bfda02163685d217818567ff93","src/read/loclists.rs":"1b4ea85c0dd8c6eae492a60cb70810185d56ba579df7986cb8a36385031b10fd","src/read/lookup.rs":"0cf89ba12b9d48b1fe035dd3a497730323acb9427a9457abbc2f7c58c4c71165","src/read/mod.rs":"3bafc747c31a575bcc92d3e7d5ea5a15f5acc01918a4377cec1dced0f85b5d2b","src/read/op.rs":"e5dce6520dfc90ec74c3b070ca374b89fcf55ff23101471591458175a72c79e6","src/read/pubnames.rs":"ed752ee1a7017e6d3be42d81e4ddaaac960ef08081463a19106c9f041526d4a3","src/read/pubtypes.rs":"5e75b32c0923e827aff0bb2db456797a0e8d38ba46be992558a7990b3196bcf5","src/read/reader.rs":"b10ff3e77b54347e96b1f3cff30da104dfdd0c4d7a55b672950788f1f1ae3478","src/read/rnglists.rs":"af637d283d76514382ee0556463cccab4e6f0ea4d061db9a44a594b5d57d1fd7","src/read/str.rs":"4c2f50014451621fea45969cd313f6840fcd3a99d7a2d081bfa1f8e0e434133a","src/read/unit.rs":"6ed00ba004c329008bf295d9c7d724afe961750f0c7b08430fc213fd5d998003","src/read/util.rs":"0b7d0d2225a98618070dc472ccba49a5411aa8beed5ff6696da079d06156d363","src/read/value.rs":"5a91e03ad3d41f679b264753498434b91948c6b89955e4beb4522498386d9b1d","src/test_util.rs":"291eefa6b51c6d934ba2f4a4c9bc7c403046fc1cccf4d43487820f0154bb89e2","src/write/abbrev.rs":"fa02163389e92e804d139cf84f833ab6af932083f0eb2d74464b4a70bd3237ff","src/write/cfi.rs":"3b04b0ebd82363738199cc673f64e0ceb60506a67c4f18b435a109caa62840f3","src/write/dwarf.rs":"8a1a0893e31134ad68993994594f3024ad0c8af7c1188b29e0ffc26b42edef21","src/write/endian_vec.rs":"1d5811986648816a677580b22630f5059757a381487d73e9adbb3008c9ae0c58","src/write/line.rs":"df7d2082c71b5e523cd52745700aae3dcfa5800f0b280e831ef5d8eb8035d6a7","src/write/loc.rs":"bb5b750c04f6603e18225db72652ea00239234ba674a8a8627c99d4ab07b47a9","src/write/mod.rs":"d8aa1da854cdee629d470d00d87e00dc6998e4bec1ca951f8d2f277730ab9d69","src/write/op.rs":"7b1d49b10c8c92b2d5b259e83119ff7dc95bc552535bb7b1a82ca9556a35c589","src/write/range.rs":"5bac01e372c08e3cc19e1e07e40492d8214cdfa8881737920cb792f4aa2ba80b","src/write/section.rs":"3ce781d5e82ba365ff54fdd36e0ef58c58a2215b09a8861eb0b038efac82b77f","src/write/str.rs":"4850cc2fee55980f9cbb6b4169f9861ab9d05c2b28a85c2b790480b83a66f514","src/write/unit.rs":"213c881736f8c87fcb2f921e379791eaba2915e8d077139965a9c6211001fe44","src/write/writer.rs":"304181287f90445bbfb33349c26b34bd87002d6844fc5686bfc0756fd0a1ecd8","tests/convert_self.rs":"180909b562969e1691b64628ded8654e6e0b10b3357f39917bd8ac288c5826dd","tests/parse_self.rs":"f2da1c7daef7139545c9367c2f26199e8b4623b31d4ec6480ddd851e6980f2dc"},"package":"22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d"} \ No newline at end of file
diff --git a/vendor/gimli/CHANGELOG.md b/vendor/gimli/CHANGELOG.md
index da2ab0fe7..9ca6d70a8 100644
--- a/vendor/gimli/CHANGELOG.md
+++ b/vendor/gimli/CHANGELOG.md
@@ -2,6 +2,28 @@
--------------------------------------------------------------------------------
+## 0.26.2
+
+Released 2022/07/16.
+
+### Changed
+
+* Fixed CFI personality encoding when writing.
+ [#609](https://github.com/gimli-rs/gimli/pull/609)
+
+* Fixed use of raw pointer for mutation, detected by Miri.
+ [#614](https://github.com/gimli-rs/gimli/pull/614)
+
+* Fixed `DW_OP_GNU_implicit_pointer` handling for DWARF version 2.
+ [#618](https://github.com/gimli-rs/gimli/pull/618)
+
+### Added
+
+* Added `read::EhHdrTable::iter`.
+ [#619](https://github.com/gimli-rs/gimli/pull/619)
+
+--------------------------------------------------------------------------------
+
## 0.26.1
Released 2021/11/02.
diff --git a/vendor/gimli/Cargo.lock b/vendor/gimli/Cargo.lock
index d55f428d0..b4a719a0c 100644
--- a/vendor/gimli/Cargo.lock
+++ b/vendor/gimli/Cargo.lock
@@ -153,14 +153,14 @@ dependencies = [
[[package]]
name = "gimli"
-version = "0.26.1"
+version = "0.26.2"
dependencies = [
"compiler_builtins",
"crossbeam",
"fallible-iterator",
"getopts",
"indexmap",
- "memmap",
+ "memmap2",
"num_cpus",
"object",
"rayon",
@@ -216,13 +216,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
[[package]]
-name = "memmap"
-version = "0.7.0"
+name = "memmap2"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
+checksum = "3a79b39c93a7a5a27eeaf9a23b5ff43f1b9e0ad6b1cdd441140ae53c35613fc7"
dependencies = [
"libc",
- "winapi",
]
[[package]]
@@ -256,9 +255,9 @@ dependencies = [
[[package]]
name = "object"
-version = "0.27.1"
+version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9"
+checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53"
dependencies = [
"flate2",
"memchr",
@@ -357,25 +356,3 @@ name = "wasmparser"
version = "0.57.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32fddd575d477c6e9702484139cf9f23dcd554b06d185ed0f56c857dd3a47aa6"
-
-[[package]]
-name = "winapi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/vendor/gimli/Cargo.toml b/vendor/gimli/Cargo.toml
index d5f283c80..f36ccd936 100644
--- a/vendor/gimli/Cargo.toml
+++ b/vendor/gimli/Cargo.toml
@@ -3,25 +3,37 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
name = "gimli"
-version = "0.26.1"
-exclude = ["/ci/*", "/releases/*", "/.github"]
+version = "0.26.2"
+exclude = [
+ "/releases/*",
+ "/.github",
+]
description = "A library for reading and writing the DWARF debugging format."
documentation = "https://docs.rs/gimli"
readme = "./README.md"
-keywords = ["DWARF", "debug", "ELF", "eh_frame"]
-categories = ["development-tools::debugging", "development-tools::profiling", "parser-implementations"]
-license = "Apache-2.0/MIT"
+keywords = [
+ "DWARF",
+ "debug",
+ "ELF",
+ "eh_frame",
+]
+categories = [
+ "development-tools::debugging",
+ "development-tools::profiling",
+ "parser-implementations",
+]
+license = "MIT OR Apache-2.0"
repository = "https://github.com/gimli-rs/gimli"
+
[profile.bench]
codegen-units = 1
debug = true
@@ -40,11 +52,18 @@ required-features = ["read"]
[[example]]
name = "dwarfdump"
-required-features = ["read", "std"]
+required-features = [
+ "read",
+ "std",
+]
[[example]]
name = "dwarf-validate"
-required-features = ["read", "std"]
+required-features = [
+ "read",
+ "std",
+]
+
[dependencies.alloc]
version = "1.0.0"
optional = true
@@ -72,20 +91,21 @@ optional = true
version = "1.1.0"
optional = true
default-features = false
+
[dev-dependencies.crossbeam]
version = "0.8"
[dev-dependencies.getopts]
version = "0.2"
-[dev-dependencies.memmap]
-version = "0.7"
+[dev-dependencies.memmap2]
+version = "0.5.5"
[dev-dependencies.num_cpus]
version = "1"
[dev-dependencies.object]
-version = "0.27.1"
+version = "0.29.0"
features = ["wasm"]
[dev-dependencies.rayon]
@@ -101,15 +121,26 @@ version = "0.1.3"
version = "2"
[features]
-default = ["read", "write", "std", "fallible-iterator", "endian-reader"]
-endian-reader = ["read", "stable_deref_trait"]
+default = [
+ "read",
+ "write",
+ "std",
+ "fallible-iterator",
+ "endian-reader",
+]
+endian-reader = [
+ "read",
+ "stable_deref_trait",
+]
read = ["read-core"]
read-core = []
-rustc-dep-of-std = ["core", "alloc", "compiler_builtins"]
-std = ["fallible-iterator/std", "stable_deref_trait/std"]
+rustc-dep-of-std = [
+ "core",
+ "alloc",
+ "compiler_builtins",
+]
+std = [
+ "fallible-iterator/std",
+ "stable_deref_trait/std",
+]
write = ["indexmap"]
-[badges.coveralls]
-repository = "gimli-rs/gimli"
-
-[badges.travis-ci]
-repository = "gimli-rs/gimli"
diff --git a/vendor/gimli/README.md b/vendor/gimli/README.md
index 56cee2531..19e7bbd0e 100644
--- a/vendor/gimli/README.md
+++ b/vendor/gimli/README.md
@@ -6,7 +6,7 @@
[![Coverage Status](https://coveralls.io/repos/github/gimli-rs/gimli/badge.svg?branch=master)](https://coveralls.io/github/gimli-rs/gimli?branch=master)
`gimli` is a blazing fast library for consuming the
-[DWARF debugging format](http://dwarfstd.org/).
+[DWARF debugging format](https://dwarfstd.org/).
* **Zero copy:** everything is just a reference to the original input buffer. No
copies of the input data get made.
@@ -30,7 +30,7 @@ Add this to your `Cargo.toml`:
```toml
[dependencies]
-gimli = "0.26.1"
+gimli = "0.26.2"
```
The minimum supported Rust version is 1.42.0.
@@ -49,7 +49,7 @@ The minimum supported Rust version is 1.42.0.
* [An `addr2line` clone](https://github.com/gimli-rs/addr2line)
- * [`ddbug`](https://github.com/philipc/ddbug), a utility giving insight into
+ * [`ddbug`](https://github.com/gimli-rs/ddbug), a utility giving insight into
code generation by making debugging information readable.
* [`dwprod`](https://github.com/fitzgen/dwprod), a tiny utility to list the
diff --git a/vendor/gimli/examples/dwarf-validate.rs b/vendor/gimli/examples/dwarf-validate.rs
index 1eabccc11..54d8f3a1d 100644
--- a/vendor/gimli/examples/dwarf-validate.rs
+++ b/vendor/gimli/examples/dwarf-validate.rs
@@ -52,7 +52,7 @@ fn main() {
continue;
}
};
- let file = match unsafe { memmap::Mmap::map(&file) } {
+ let file = match unsafe { memmap2::Mmap::map(&file) } {
Ok(mmap) => mmap,
Err(err) => {
eprintln!("Failed to map file '{}': {}", path.display(), &err);
diff --git a/vendor/gimli/examples/dwarfdump.rs b/vendor/gimli/examples/dwarfdump.rs
index 64b233305..4b61fd572 100644
--- a/vendor/gimli/examples/dwarfdump.rs
+++ b/vendor/gimli/examples/dwarfdump.rs
@@ -490,7 +490,7 @@ fn main() {
process::exit(1);
}
};
- let mmap = match unsafe { memmap::Mmap::map(&file) } {
+ let mmap = match unsafe { memmap2::Mmap::map(&file) } {
Ok(mmap) => mmap,
Err(err) => {
eprintln!("Failed to map file '{}': {}", path, err);
@@ -531,7 +531,7 @@ fn main() {
continue;
}
};
- let file = match unsafe { memmap::Mmap::map(&file) } {
+ let file = match unsafe { memmap2::Mmap::map(&file) } {
Ok(mmap) => mmap,
Err(err) => {
eprintln!("Failed to map file '{}': {}", file_path, err);
@@ -786,17 +786,36 @@ fn dump_eh_frame<R: Reader, W: Write>(
// TODO: augmentation
writeln!(w, " code_align: {}", cie.code_alignment_factor())?;
writeln!(w, " data_align: {}", cie.data_alignment_factor())?;
- writeln!(w, " ra_register: {:#x}", cie.return_address_register().0)?;
+ writeln!(
+ w,
+ " ra_register: {}",
+ register_name(cie.return_address_register())
+ )?;
if let Some(encoding) = cie.lsda_encoding() {
- writeln!(w, " lsda_encoding: {:#02x}", encoding.0)?;
+ writeln!(
+ w,
+ " lsda_encoding: {}/{}",
+ encoding.application(),
+ encoding.format()
+ )?;
}
if let Some((encoding, personality)) = cie.personality_with_encoding() {
- write!(w, " personality: {:#02x} ", encoding.0)?;
+ write!(
+ w,
+ " personality: {}/{} ",
+ encoding.application(),
+ encoding.format()
+ )?;
dump_pointer(w, personality)?;
writeln!(w)?;
}
if let Some(encoding) = cie.fde_address_encoding() {
- writeln!(w, " fde_encoding: {:#02x}", encoding.0)?;
+ writeln!(
+ w,
+ " fde_encoding: {}/{}",
+ encoding.application(),
+ encoding.format()
+ )?;
}
let instructions = cie.instructions(&eh_frame, &bases);
dump_cfi_instructions(w, instructions, true, register_name)?;
@@ -1585,21 +1604,21 @@ fn dump_type_signature<W: Write>(w: &mut W, signature: gimli::DebugTypeSignature
fn dump_file_index<R: Reader, W: Write>(
w: &mut W,
- file: u64,
+ file_index: u64,
unit: &gimli::Unit<R>,
dwarf: &gimli::Dwarf<R>,
) -> Result<()> {
- if file == 0 {
+ if file_index == 0 && unit.header.version() <= 4 {
return Ok(());
}
let header = match unit.line_program {
Some(ref program) => program.header(),
None => return Ok(()),
};
- let file = match header.file(file) {
- Some(header) => header,
+ let file = match header.file(file_index) {
+ Some(file) => file,
None => {
- writeln!(w, "Unable to get header for file {}", file)?;
+ writeln!(w, "Unable to get header for file {}", file_index)?;
return Ok(());
}
};
@@ -1607,7 +1626,7 @@ fn dump_file_index<R: Reader, W: Write>(
if let Some(directory) = file.directory(header) {
let directory = dwarf.attr_string(unit, directory)?;
let directory = directory.to_string_lossy()?;
- if !directory.starts_with('/') {
+ if file.directory_index() != 0 && !directory.starts_with('/') {
if let Some(ref comp_dir) = unit.comp_dir {
write!(w, "{}/", comp_dir.to_string_lossy()?,)?;
}
@@ -2238,7 +2257,7 @@ fn dump_line_program<R: Reader, W: Write>(
writeln!(w, "<pc> [lno,col]")?;
}
let mut rows = program.rows();
- let mut file_index = 0;
+ let mut file_index = std::u64::MAX;
while let Some((header, row)) = rows.next_row()? {
let line = match row.line() {
Some(line) => line.get(),
diff --git a/vendor/gimli/examples/simple.rs b/vendor/gimli/examples/simple.rs
index b73ab7552..7c958d45c 100644
--- a/vendor/gimli/examples/simple.rs
+++ b/vendor/gimli/examples/simple.rs
@@ -6,7 +6,7 @@ use std::{borrow, env, fs};
fn main() {
for path in env::args().skip(1) {
let file = fs::File::open(&path).unwrap();
- let mmap = unsafe { memmap::Mmap::map(&file).unwrap() };
+ let mmap = unsafe { memmap2::Mmap::map(&file).unwrap() };
let object = object::File::parse(&*mmap).unwrap();
let endian = if object.is_little_endian() {
gimli::RunTimeEndian::Little
diff --git a/vendor/gimli/examples/simple_line.rs b/vendor/gimli/examples/simple_line.rs
index bf1114f90..87b224cda 100644
--- a/vendor/gimli/examples/simple_line.rs
+++ b/vendor/gimli/examples/simple_line.rs
@@ -6,7 +6,7 @@ use std::{borrow, env, fs, path};
fn main() {
for path in env::args().skip(1) {
let file = fs::File::open(&path).unwrap();
- let mmap = unsafe { memmap::Mmap::map(&file).unwrap() };
+ let mmap = unsafe { memmap2::Mmap::map(&file).unwrap() };
let object = object::File::parse(&*mmap).unwrap();
let endian = if object.is_little_endian() {
gimli::RunTimeEndian::Little
@@ -68,9 +68,16 @@ fn dump_file(object: &object::File, endian: gimli::RunTimeEndian) -> Result<(),
let mut path = path::PathBuf::new();
if let Some(file) = row.file(header) {
path = comp_dir.clone();
- if let Some(dir) = file.directory(header) {
- path.push(dwarf.attr_string(&unit, dir)?.to_string_lossy().as_ref());
+
+ // The directory index 0 is defined to correspond to the compilation unit directory.
+ if file.directory_index() != 0 {
+ if let Some(dir) = file.directory(header) {
+ path.push(
+ dwarf.attr_string(&unit, dir)?.to_string_lossy().as_ref(),
+ );
+ }
}
+
path.push(
dwarf
.attr_string(&unit, file.path_name())?
diff --git a/vendor/gimli/fixtures/self/README.md b/vendor/gimli/fixtures/self/README.md
index 3847c3852..91053d9b4 100644
--- a/vendor/gimli/fixtures/self/README.md
+++ b/vendor/gimli/fixtures/self/README.md
@@ -7,7 +7,7 @@ about cross platform and cross object file format issues when running examples.
# Updating and adding new sections
-## OSX
+## macOS
Use `otool` to list the sections of a binary:
diff --git a/vendor/gimli/src/constants.rs b/vendor/gimli/src/constants.rs
index c8d6a1662..c617f4e2e 100644
--- a/vendor/gimli/src/constants.rs
+++ b/vendor/gimli/src/constants.rs
@@ -1315,7 +1315,7 @@ DwEhPe(u8) {
// pointer result itself.
//
// This isn't defined in the DWARF or the `.eh_frame` standards, but is
-// generated by both GNU/Linux and OSX tooling.
+// generated by both GNU/Linux and macOS tooling.
DW_EH_PE_indirect = 0x80,
// These constants apply to both the lower and upper bits.
diff --git a/vendor/gimli/src/lib.rs b/vendor/gimli/src/lib.rs
index 7ac1820e3..ed1af9cbd 100644
--- a/vendor/gimli/src/lib.rs
+++ b/vendor/gimli/src/lib.rs
@@ -1,5 +1,5 @@
//! `gimli` is a library for reading and writing the
-//! [DWARF debugging format](http://dwarfstd.org/).
+//! [DWARF debugging format](https://dwarfstd.org/).
//!
//! See the [read](./read/index.html) and [write](./write/index.html) modules
//! for examples and API documentation.
diff --git a/vendor/gimli/src/read/abbrev.rs b/vendor/gimli/src/read/abbrev.rs
index 5f0e7bed7..1a24835a7 100644
--- a/vendor/gimli/src/read/abbrev.rs
+++ b/vendor/gimli/src/read/abbrev.rs
@@ -29,7 +29,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_abbrev` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugAbbrev, LittleEndian};
diff --git a/vendor/gimli/src/read/aranges.rs b/vendor/gimli/src/read/aranges.rs
index c2d22850c..83159b69b 100644
--- a/vendor/gimli/src/read/aranges.rs
+++ b/vendor/gimli/src/read/aranges.rs
@@ -18,7 +18,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_aranges` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugAranges, LittleEndian};
diff --git a/vendor/gimli/src/read/cfi.rs b/vendor/gimli/src/read/cfi.rs
index b6a81f3f4..2e5167349 100644
--- a/vendor/gimli/src/read/cfi.rs
+++ b/vendor/gimli/src/read/cfi.rs
@@ -63,7 +63,7 @@ where
///
/// It is the caller's responsibility to read the section and present it as
/// a `&[u8]` slice. That means using some ELF loader on Linux, a Mach-O
- /// loader on OSX, etc.
+ /// loader on macOS, etc.
///
/// ```
/// use gimli::{DebugFrame, NativeEndian};
@@ -218,6 +218,81 @@ impl<R: Reader> ParsedEhFrameHdr<R> {
}
}
+/// An iterator for `.eh_frame_hdr` section's binary search table.
+///
+/// Each table entry consists of a tuple containing an `initial_location` and `address`.
+/// The `initial location` represents the first address that the targeted FDE
+/// is able to decode. The `address` is the address of the FDE in the `.eh_frame` section.
+/// The `address` can be converted with `EhHdrTable::pointer_to_offset` and `EhFrame::fde_from_offset` to an FDE.
+#[derive(Debug)]
+pub struct EhHdrTableIter<'a, 'bases, R: Reader> {
+ hdr: &'a ParsedEhFrameHdr<R>,
+ table: R,
+ bases: &'bases BaseAddresses,
+ remain: u64,
+}
+
+impl<'a, 'bases, R: Reader> EhHdrTableIter<'a, 'bases, R> {
+ /// Yield the next entry in the `EhHdrTableIter`.
+ pub fn next(&mut self) -> Result<Option<(Pointer, Pointer)>> {
+ if self.remain == 0 {
+ return Ok(None);
+ }
+
+ let parameters = PointerEncodingParameters {
+ bases: &self.bases.eh_frame_hdr,
+ func_base: None,
+ address_size: self.hdr.address_size,
+ section: &self.hdr.section,
+ };
+
+ self.remain -= 1;
+ let from = parse_encoded_pointer(self.hdr.table_enc, &parameters, &mut self.table)?;
+ let to = parse_encoded_pointer(self.hdr.table_enc, &parameters, &mut self.table)?;
+ Ok(Some((from, to)))
+ }
+ /// Yield the nth entry in the `EhHdrTableIter`
+ pub fn nth(&mut self, n: usize) -> Result<Option<(Pointer, Pointer)>> {
+ use core::convert::TryFrom;
+ let size = match self.hdr.table_enc.format() {
+ constants::DW_EH_PE_uleb128 | constants::DW_EH_PE_sleb128 => {
+ return Err(Error::VariableLengthSearchTable);
+ }
+ constants::DW_EH_PE_sdata2 | constants::DW_EH_PE_udata2 => 2,
+ constants::DW_EH_PE_sdata4 | constants::DW_EH_PE_udata4 => 4,
+ constants::DW_EH_PE_sdata8 | constants::DW_EH_PE_udata8 => 8,
+ _ => return Err(Error::UnknownPointerEncoding),
+ };
+
+ let row_size = size * 2;
+ let n = u64::try_from(n).map_err(|_| Error::UnsupportedOffset)?;
+ self.remain = self.remain.saturating_sub(n);
+ self.table.skip(R::Offset::from_u64(n * row_size)?)?;
+ self.next()
+ }
+}
+
+#[cfg(feature = "fallible-iterator")]
+impl<'a, 'bases, R: Reader> fallible_iterator::FallibleIterator for EhHdrTableIter<'a, 'bases, R> {
+ type Item = (Pointer, Pointer);
+ type Error = Error;
+ fn next(&mut self) -> Result<Option<Self::Item>> {
+ EhHdrTableIter::next(self)
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ use core::convert::TryInto;
+ (
+ self.remain.try_into().unwrap_or(0),
+ self.remain.try_into().ok(),
+ )
+ }
+
+ fn nth(&mut self, n: usize) -> Result<Option<Self::Item>> {
+ EhHdrTableIter::nth(self, n)
+ }
+}
+
/// The CFI binary search table that is an optional part of the `.eh_frame_hdr` section.
#[derive(Debug, Clone)]
pub struct EhHdrTable<'a, R: Reader> {
@@ -225,6 +300,20 @@ pub struct EhHdrTable<'a, R: Reader> {
}
impl<'a, R: Reader + 'a> EhHdrTable<'a, R> {
+ /// Return an iterator that can walk the `.eh_frame_hdr` table.
+ ///
+ /// Each table entry consists of a tuple containing an `initial_location` and `address`.
+ /// The `initial location` represents the first address that the targeted FDE
+ /// is able to decode. The `address` is the address of the FDE in the `.eh_frame` section.
+ /// The `address` can be converted with `EhHdrTable::pointer_to_offset` and `EhFrame::fde_from_offset` to an FDE.
+ pub fn iter<'bases>(&self, bases: &'bases BaseAddresses) -> EhHdrTableIter<'_, 'bases, R> {
+ EhHdrTableIter {
+ hdr: self.hdr,
+ bases,
+ remain: self.hdr.fde_count,
+ table: self.hdr.table.clone(),
+ }
+ }
/// *Probably* returns a pointer to the FDE for the given address.
///
/// This performs a binary search, so if there is no FDE for the given address,
@@ -423,19 +512,19 @@ where
Endian: Endianity,
{
/// Construct a new `EhFrame` instance from the data in the
- /// `.debug_frame` section.
+ /// `.eh_frame` section.
///
/// It is the caller's responsibility to read the section and present it as
/// a `&[u8]` slice. That means using some ELF loader on Linux, a Mach-O
- /// loader on OSX, etc.
+ /// loader on macOS, etc.
///
/// ```
/// use gimli::{EhFrame, EndianSlice, NativeEndian};
///
- /// // Use with `.debug_frame`
+ /// // Use with `.eh_frame`
/// # let buf = [0x00, 0x01, 0x02, 0x03];
- /// # let read_debug_frame_section_somehow = || &buf;
- /// let debug_frame = EhFrame::new(read_debug_frame_section_somehow(), NativeEndian);
+ /// # let read_eh_frame_section_somehow = || &buf;
+ /// let eh_frame = EhFrame::new(read_eh_frame_section_somehow(), NativeEndian);
/// ```
pub fn new(section: &'input [u8], endian: Endian) -> Self {
Self::from(EndianSlice::new(section, endian))
@@ -6211,6 +6300,39 @@ mod tests {
let table = table.unwrap();
let bases = Default::default();
+ let mut iter = table.iter(&bases);
+ assert_eq!(
+ iter.next(),
+ Ok(Some((
+ Pointer::Direct(10),
+ Pointer::Direct(0x12345 + start_of_fde1.value().unwrap() as u64)
+ )))
+ );
+ assert_eq!(
+ iter.next(),
+ Ok(Some((
+ Pointer::Direct(20),
+ Pointer::Direct(0x12345 + start_of_fde2.value().unwrap() as u64)
+ )))
+ );
+ assert_eq!(iter.next(), Ok(None));
+
+ assert_eq!(
+ table.iter(&bases).nth(0),
+ Ok(Some((
+ Pointer::Direct(10),
+ Pointer::Direct(0x12345 + start_of_fde1.value().unwrap() as u64)
+ )))
+ );
+
+ assert_eq!(
+ table.iter(&bases).nth(1),
+ Ok(Some((
+ Pointer::Direct(20),
+ Pointer::Direct(0x12345 + start_of_fde2.value().unwrap() as u64)
+ )))
+ );
+ assert_eq!(table.iter(&bases).nth(2), Ok(None));
let f = |_: &_, _: &_, o: EhFrameOffset| {
assert_eq!(o, EhFrameOffset(start_of_cie.value().unwrap() as usize));
diff --git a/vendor/gimli/src/read/line.rs b/vendor/gimli/src/read/line.rs
index 096ddf07b..0e7380bb9 100644
--- a/vendor/gimli/src/read/line.rs
+++ b/vendor/gimli/src/read/line.rs
@@ -27,7 +27,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_line` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugLine, LittleEndian};
diff --git a/vendor/gimli/src/read/lists.rs b/vendor/gimli/src/read/lists.rs
index b63c5c126..898a757d3 100644
--- a/vendor/gimli/src/read/lists.rs
+++ b/vendor/gimli/src/read/lists.rs
@@ -4,6 +4,7 @@ use crate::read::{Error, Reader, Result};
#[derive(Debug, Clone, Copy)]
pub(crate) struct ListsHeader {
encoding: Encoding,
+ #[allow(dead_code)]
offset_entry_count: u32,
}
diff --git a/vendor/gimli/src/read/loclists.rs b/vendor/gimli/src/read/loclists.rs
index 3c4da127d..3902c181b 100644
--- a/vendor/gimli/src/read/loclists.rs
+++ b/vendor/gimli/src/read/loclists.rs
@@ -24,7 +24,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_loc` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugLoc, LittleEndian};
@@ -70,7 +70,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_loclists` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugLocLists, LittleEndian};
diff --git a/vendor/gimli/src/read/mod.rs b/vendor/gimli/src/read/mod.rs
index 7291f3b96..3110957c2 100644
--- a/vendor/gimli/src/read/mod.rs
+++ b/vendor/gimli/src/read/mod.rs
@@ -48,7 +48,7 @@
//!
//! * [An `addr2line` clone](https://github.com/gimli-rs/addr2line)
//!
-//! * [`ddbug`](https://github.com/philipc/ddbug), a utility giving insight into
+//! * [`ddbug`](https://github.com/gimli-rs/ddbug), a utility giving insight into
//! code generation by making debugging information readable
//!
//! * [`dwprod`](https://github.com/fitzgen/dwprod), a tiny utility to list the
diff --git a/vendor/gimli/src/read/op.rs b/vendor/gimli/src/read/op.rs
index 2ca6247bc..88ea20297 100644
--- a/vendor/gimli/src/read/op.rs
+++ b/vendor/gimli/src/read/op.rs
@@ -707,7 +707,13 @@ where
}
constants::DW_OP_stack_value => Ok(Operation::StackValue),
constants::DW_OP_implicit_pointer | constants::DW_OP_GNU_implicit_pointer => {
- let value = bytes.read_offset(encoding.format)?;
+ let value = if encoding.version == 2 {
+ bytes
+ .read_address(encoding.address_size)
+ .and_then(Offset::from_u64)?
+ } else {
+ bytes.read_offset(encoding.format)?
+ };
let byte_offset = bytes.read_sleb128()?;
Ok(Operation::ImplicitPointer {
value: DebugInfoOffset(value),
@@ -2738,6 +2744,19 @@ mod tests {
},
encoding8(),
);
+
+ check_op_parse(
+ |s| s.D8(op.0).D64(0x1234_5678).sleb(0x123),
+ &Operation::ImplicitPointer {
+ value: DebugInfoOffset(0x1234_5678),
+ byte_offset: 0x123,
+ },
+ Encoding {
+ format: Format::Dwarf32,
+ version: 2,
+ address_size: 8,
+ },
+ )
}
}
diff --git a/vendor/gimli/src/read/pubnames.rs b/vendor/gimli/src/read/pubnames.rs
index f05861f70..e8b7e5528 100644
--- a/vendor/gimli/src/read/pubnames.rs
+++ b/vendor/gimli/src/read/pubnames.rs
@@ -58,7 +58,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_pubnames` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugPubNames, LittleEndian};
diff --git a/vendor/gimli/src/read/pubtypes.rs b/vendor/gimli/src/read/pubtypes.rs
index 0226e84d4..6723b4222 100644
--- a/vendor/gimli/src/read/pubtypes.rs
+++ b/vendor/gimli/src/read/pubtypes.rs
@@ -58,7 +58,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_pubtypes` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugPubTypes, LittleEndian};
diff --git a/vendor/gimli/src/read/rnglists.rs b/vendor/gimli/src/read/rnglists.rs
index dd68083ac..d8d49042f 100644
--- a/vendor/gimli/src/read/rnglists.rs
+++ b/vendor/gimli/src/read/rnglists.rs
@@ -24,7 +24,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_ranges` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugRanges, LittleEndian};
@@ -70,7 +70,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_rnglists`
/// section and present it as a `&[u8]` slice. That means using some ELF
- /// loader on Linux, a Mach-O loader on OSX, etc.
+ /// loader on Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugRngLists, LittleEndian};
diff --git a/vendor/gimli/src/read/str.rs b/vendor/gimli/src/read/str.rs
index dce8016af..c6b87d8f9 100644
--- a/vendor/gimli/src/read/str.rs
+++ b/vendor/gimli/src/read/str.rs
@@ -22,7 +22,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_str` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugStr, LittleEndian};
@@ -214,7 +214,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_line_str` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugLineStr, LittleEndian};
diff --git a/vendor/gimli/src/read/unit.rs b/vendor/gimli/src/read/unit.rs
index 4766b2e84..670e55efd 100644
--- a/vendor/gimli/src/read/unit.rs
+++ b/vendor/gimli/src/read/unit.rs
@@ -93,7 +93,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_info` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugInfo, LittleEndian};
@@ -3086,7 +3086,7 @@ where
///
/// It is the caller's responsibility to read the `.debug_types` section and
/// present it as a `&[u8]` slice. That means using some ELF loader on
- /// Linux, a Mach-O loader on OSX, etc.
+ /// Linux, a Mach-O loader on macOS, etc.
///
/// ```
/// use gimli::{DebugTypes, LittleEndian};
diff --git a/vendor/gimli/src/read/util.rs b/vendor/gimli/src/read/util.rs
index dd2af8181..16eafdde4 100644
--- a/vendor/gimli/src/read/util.rs
+++ b/vendor/gimli/src/read/util.rs
@@ -180,7 +180,7 @@ impl<T> ArrayVec<Vec<T>> {
let slice = Box::leak(storage);
debug_assert!(len <= slice.len());
// SAFETY: valid elements.
- unsafe { Vec::from_raw_parts(slice.as_ptr() as _, len, slice.len()) }
+ unsafe { Vec::from_raw_parts(slice.as_mut_ptr() as *mut T, len, slice.len()) }
}
}
diff --git a/vendor/gimli/src/read/value.rs b/vendor/gimli/src/read/value.rs
index fc8c355a9..6f43ebb26 100644
--- a/vendor/gimli/src/read/value.rs
+++ b/vendor/gimli/src/read/value.rs
@@ -1,7 +1,5 @@
//! Definitions for values used in DWARF expressions.
-use core::mem;
-
use crate::constants;
#[cfg(feature = "read")]
use crate::read::{AttributeValue, DebuggingInformationEntry};
diff --git a/vendor/gimli/src/write/cfi.rs b/vendor/gimli/src/write/cfi.rs
index c58eb1b1d..718cb69ad 100644
--- a/vendor/gimli/src/write/cfi.rs
+++ b/vendor/gimli/src/write/cfi.rs
@@ -239,7 +239,7 @@ impl CommonInformationEntry {
}
if let Some((eh_pe, address)) = self.personality {
w.write_u8(eh_pe.0)?;
- w.write_eh_pointer(address, constants::DW_EH_PE_absptr, encoding.address_size)?;
+ w.write_eh_pointer(address, eh_pe, encoding.address_size)?;
}
if self.fde_address_encoding != constants::DW_EH_PE_absptr {
w.write_u8(self.fde_address_encoding.0)?;
@@ -888,6 +888,19 @@ mod tests {
fde4.lsda = Some(Address::Constant(0x4400));
frames.add_fde(cie2_id, fde4.clone());
+ let mut cie3 = CommonInformationEntry::new(encoding, 1, 8, X86_64::RA);
+ cie3.fde_address_encoding = constants::DW_EH_PE_pcrel;
+ cie3.lsda_encoding = Some(constants::DW_EH_PE_pcrel);
+ cie3.personality = Some((constants::DW_EH_PE_pcrel, Address::Constant(0x1235)));
+ cie3.signal_trampoline = true;
+ let cie3_id = frames.add_cie(cie3.clone());
+ assert_ne!(cie2_id, cie3_id);
+ assert_eq!(cie3_id, frames.add_cie(cie3.clone()));
+
+ let mut fde5 = FrameDescriptionEntry::new(Address::Constant(0x5000), 0x50);
+ fde5.lsda = Some(Address::Constant(0x5500));
+ frames.add_fde(cie3_id, fde5.clone());
+
// Test writing `.debug_frame`.
let mut debug_frame = DebugFrame::from(EndianVec::new(LittleEndian));
frames.write_debug_frame(&mut debug_frame).unwrap();
diff --git a/vendor/gimli/src/write/op.rs b/vendor/gimli/src/write/op.rs
index d1cacb356..c70eec2dd 100644
--- a/vendor/gimli/src/write/op.rs
+++ b/vendor/gimli/src/write/op.rs
@@ -778,7 +778,11 @@ impl Operation {
} else {
w.write_u8(constants::DW_OP_GNU_implicit_pointer.0)?;
}
- let size = encoding.format.word_size();
+ let size = if encoding.version == 2 {
+ encoding.address_size
+ } else {
+ encoding.format.word_size()
+ };
match entry {
Reference::Symbol(symbol) => {
w.write_reference(symbol, size)?;
diff --git a/vendor/gimli/tests/convert_self.rs b/vendor/gimli/tests/convert_self.rs
index ec8b592d3..7c069ebd6 100644
--- a/vendor/gimli/tests/convert_self.rs
+++ b/vendor/gimli/tests/convert_self.rs
@@ -146,7 +146,7 @@ fn test_convert_eh_frame() {
.write_eh_frame(&mut write_eh_frame)
.expect("Should write eh_frame information");
let eh_frame = write_eh_frame.slice();
- assert_eq!(eh_frame.len(), 147152);
+ assert_eq!(eh_frame.len(), 147144);
// Convert new section
let mut eh_frame = read::EhFrame::new(&eh_frame, LittleEndian);
diff --git a/vendor/handlebars/.cargo-checksum.json b/vendor/handlebars/.cargo-checksum.json
index d41808a41..b1031c230 100644
--- a/vendor/handlebars/.cargo-checksum.json
+++ b/vendor/handlebars/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"ab776bc63c83489640577a611f7df181de9a3191bf6e5fb449012fd5f6b5e770","Cargo.lock":"fb81e47543e26596ba74d5c165e26f70ec1532911dd638dc6bee65e572b09182","Cargo.toml":"5c6beb2539b6d5e038a5beeead3ed4c044b9be7fdcd4fab60b5a16ce31121bdf","LICENSE":"63b308fad3db82dc12067a8d7ff4b672fae97d12d0b4b3bb59179e27d640b3a4","README.md":"e9dfd89edf514c3613b5b2f47c05f2ba48bf1c9afee8eca1ba395887c8a85c9d","benches/bench.rs":"276ac8c581db35dbdc00e9e4cc1e2e1940fe95522a8f5a19ab088a2c68da61ed","build-wasm.sh":"9f7226d7d0768fe0fba97f698642a4c13a600468ba7d57abcfad9285efd9f4ce","examples/decorator.rs":"010762d337c64a8ade120c66ccb97ac176653d2fc1265c6f77c35d2a7693176f","examples/decorator/template.hbs":"76fd24f08b28b469529f4727321c7cc940198abb5c1aa24d7a6dd2ab42bdda66","examples/dev_mode.rs":"8e28b0f354e14006481faba76f32401a18476472b2e4c9faeea54f222980a9ba","examples/dev_mode/template.hbs":"4a5e1b81565572e26986d890e4a431953b81893a99ce07cef303e366dd84243c","examples/error.rs":"85219ee57a7bc739185862d04c7eff203743ddf730b940f92492894e3ebb5746","examples/error/error.hbs":"4e8fac806d444a5bc41436fe0a51b4d7850c7645f8996db7a99a821c88622eef","examples/error/template.hbs":"48313b522ddb0dd4285874b96d1b705b841dc141514f440790e904a262955951","examples/partials.rs":"e102f0bdacb80a08ac9ae3c92c415991095a1a2142d55420457706823a67fba0","examples/partials/base0.hbs":"6674275ef68faaeab8a4128da0983c9d732d7552f1791c2e3563fa8c5c66fb5a","examples/partials/base1.hbs":"97b1089705f5a21a6f344190e26133d920d56d4a7fdc1fa2fb7359a720bfe182","examples/partials/template2.hbs":"6f83bc48b774a3b83f9ce5a54bf014fb03514720f9e32834dc68000d06a17618","examples/quick.rs":"96df03fc1742504afae34c6da9da05206adc41f771406da2825b41725329cb2d","examples/render.rs":"eadc1aff65d96c7f95c948fbccfb79981276075f83e19a22214fe0772ef17496","examples/render/template.hbs":"2512ef3362379633790985fe2c40e7efab3ad0f431b7cbec5b7cc644dbbef8f5","examples/render_cli/simple.hbs":"a2e0df51e7c1a25c4e9e1bbe0f4911c7c86200d358fc6c9195b61e89adddc970","examples/render_file.rs":"f5b8e788ac6a71a170c5b315120e8779896df8d9b290fb3d785f51307f5d3c45","examples/render_file/template.hbs":"8ec8d0b61a996391ad7f8b6a914f84d0ac06c62e6d7c9c5fa054ca5e2c64a52e","examples/script.rs":"df869a15d6cd8c478f74582018c54e20545b9451e84cdec2f8bb71c31a618da0","examples/script/goals.rhai":"d756fd7d39f11fae148a6e11d23160da0cdac91c29f716dcb854c07a7db09c80","examples/script/template.hbs":"1f39785157a112bc5c4e94db1361c45a73b024bc8bd0fea0a9d5da8102afb310","profile.sh":"b8e80c59bc12fca93daa67c09001c1c045e594e532831cc957c9ac313f8b2390","release.toml":"968ff7e0a0f8b99d0b91a06cb007fcee55427ccbd05012b46202829336287151","rustfmt.toml":"8e99dabd6aadb112f9f9ed8709e7388b57bf43d19cd08342c093c870534a3f97","src/block.rs":"da38a572a95c3858685e4af82a7e1920c6b3311acf8c118c53c8531b091de391","src/cli.rs":"63aed9a8fb2135ee03bd2b49330be20d2018fe3c36265c14dbdc0da9b73cb6d0","src/context.rs":"5007324a0655daa994e1b64f0eed160e67e4a4d8fb02d21eca4c549d5dcea7c2","src/decorators/inline.rs":"73b8ba6ed98dbf8b3bca228796f47c9139d49f1a1c8d5b4603cc6354098b56c2","src/decorators/mod.rs":"322d4d692331a1e3a2806780cbe1e7a3a82b343486f1182d2e8a017a8bf11085","src/error.rs":"7da2635fdb0005437d8c4a7cb889336d0039665d7627544f600d473f5b90eab8","src/grammar.pest":"aed7ff83953551d48e4e94edc25d51f7e418ec79b62df1ca8f7e728444430d0b","src/grammar.rs":"848d1b56bc1d887e8c42836c37d41b2a634ec6eb9e3880be7dde31d84a38460d","src/helpers/block_util.rs":"11a295215f9c0d14b89f97161468425405386214f050bad07683669a162f9aa1","src/helpers/helper_each.rs":"75b536114f954287936e9f02a54b0c182144e2e6a4ad0970e66cc644cc8f3a0f","src/helpers/helper_extras.rs":"0575a1518eba51cafe91ec2b09666e1c987c9a9bc98cb00193d1e0d203a8b681","src/helpers/helper_if.rs":"37c81b7000948f601398b7163b37397020d191642021077bd7eb15c181632d32","src/helpers/helper_log.rs":"272f7c1f873b97974cce156c04281f2bd8c44ccc885b4c59dd2b43e8d7cc6ef6","src/helpers/helper_lookup.rs":"a9f000e36d0e9339930b3d94dabd4f123cdbdaa85e8d77d15e4a772a99ffe9d4","src/helpers/helper_raw.rs":"6b0b5b3774a1d5c3ebf30b1e0b8cac825f6ffb8a18cb9e08bd40786258e4b597","src/helpers/helper_with.rs":"9964ec02b56ad8fb6f3aa9abb535c0d3f6f2cf3eaeba59a5afd8687ea6df2209","src/helpers/mod.rs":"31eefbd1f302b852e43a3aa8432ce4faad04db37eba7fc1bfa8cf9c25967b899","src/helpers/scripting.rs":"6b9e7e08bdbf3e2716bb82b69e0f10efd4de1174842742215aba18fb2cc507e2","src/json/mod.rs":"ef2fc8fe98e9761e2e2a4b2d2293bb29cdb689db2f44f939fc61c48c6b52f0a7","src/json/path.rs":"818bc5f002839a529ffe5d5f8eddd815ac3808a5f9ce3bac79f1f71f5702599b","src/json/value.rs":"390ea4fa8b5131a3d00ff1c80d06359220f16d851a5e836192026ea32acbb02e","src/lib.rs":"ecbb4099b2c0cc77e746083181a8ed32b7f76671aa8e54d079eb4196b24d167c","src/local_vars.rs":"91d3a16bbfabe2eccecaa9a0dd866ebe88d70ce438d2f18581d1b7d231ba0644","src/macros.rs":"86eed922319644176e8464023455b78440b8e5d0d9b13a0ce61b2edf0f10984e","src/output.rs":"10c28874f78cddba70b24eb984a849c7750b207ac605f2aa46f2abe02846b3a2","src/partial.rs":"ddcd49436b6c653b3e5db44a997c5cd9006755dd1e6c07aa5996fa495aecd382","src/registry.rs":"56d613a72ca9e4ad15953cf5b74bf6df912e81f8f008780bebe93375fb1569ed","src/render.rs":"cec805cd1396bc87f1c2bcd9d45b8c6236a65cb99c6d45f14199fab99b94d38d","src/sources.rs":"46989eb76f36edff9dcb5d27488e8bd9c7ff1749f368a70e855f4808c58d7bcf","src/support.rs":"b3d1d99440182548ff9bfcffbd9a7e08507f740ed68382f9c74ab0a92a79eab7","src/template.rs":"61625e52f43c9df92fce25f626db6c61b31a42310c06a8158b13b9f960339e12","src/util.rs":"2ebc845de5ca47455442a1b6bd664565a52e29928e82c526fbfe56ed5196410f","tests/block_context.rs":"4dce11312d2b6c0c5c2f3104516e5567e5a370611e08f4055fa3653293580385","tests/data_helper.rs":"a7f9d1d42d5415ba1dba459840067acc1294f6f6057d9a5a13d9f7e19469e850","tests/escape.rs":"a4bd25c4268a306dc09dc17806f86895c4932753a585219902f0dd85c7e65cba","tests/helper_function_lifetime.rs":"635cbd0b44742539bdf36e803a19c6a1a698399f8b765415d53f28df1acfbc2b","tests/helper_macro.rs":"4660cfb782c03e70f536bedbb2ed5afed5e8fe841d77c1812e4b2ef55d81a6a6","tests/helper_with_space.rs":"c64952ea031f964e558cb323df1bf731bb7c0bf7b226142cea61afa2fd4efbfd","tests/root_var.rs":"fda5b30bac1e692fb010f9f98e052d5a525420fece9dcc3821a4e5aeee3a8841","tests/subexpression.rs":"b36ab31adf45272ca984c0c5ed9497820ca072a8805444d69bd089b766786bb5","tests/template_names.rs":"4bbe6b48c974ae7ea1e61806794d846e2f0e8505e1568c5305fa2364dceef68a","wasm/LICENSE":"63b308fad3db82dc12067a8d7ff4b672fae97d12d0b4b3bb59179e27d640b3a4","wasm/README.md":"d67bad452550d34e9317fb8f4884b8bc07939fbb0dfdcf1be6bfce52a6851fa6","wasm/wapm.toml":"bdb286ccaa18c5c8aa0d2db25755aba9b0e3e83a59fc4d2334c1854933000ea1"},"package":"72a0ffab8c36d0436114310c7e10b59b3307e650ddfabf6d006028e29a70c6e6"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"1c33d57ecdf48bcc7011c1e7306d05359a3fca61f3c48324e5cb5b378d406ef6","Cargo.lock":"81ba21eaf5647124881eacf240b9c34ae15c4f3b56072d7ff3ec665f269c3843","Cargo.toml":"afbdf3fe79ae8e5a434f6cb126f3441e8750a499f2b159226cd86e48e4d5424e","LICENSE":"63b308fad3db82dc12067a8d7ff4b672fae97d12d0b4b3bb59179e27d640b3a4","README.md":"ae8924a77607ab2439ef2cb87a93c49b51a4da228ea144bc847ec6d2a4acffba","benches/bench.rs":"276ac8c581db35dbdc00e9e4cc1e2e1940fe95522a8f5a19ab088a2c68da61ed","build-wasm.sh":"9f7226d7d0768fe0fba97f698642a4c13a600468ba7d57abcfad9285efd9f4ce","examples/decorator.rs":"010762d337c64a8ade120c66ccb97ac176653d2fc1265c6f77c35d2a7693176f","examples/decorator/template.hbs":"76fd24f08b28b469529f4727321c7cc940198abb5c1aa24d7a6dd2ab42bdda66","examples/dev_mode.rs":"7c8cebbc56da3e834688719f5c10df1c372c059259e40df8534c79a0dda01aab","examples/dev_mode/template.hbs":"4a5e1b81565572e26986d890e4a431953b81893a99ce07cef303e366dd84243c","examples/error.rs":"6f3d4dc945628778d3ef63dccdc7abbf367e214a5ff62a5dcbeb11d8f34317d7","examples/error/error.hbs":"4e8fac806d444a5bc41436fe0a51b4d7850c7645f8996db7a99a821c88622eef","examples/error/template.hbs":"48313b522ddb0dd4285874b96d1b705b841dc141514f440790e904a262955951","examples/helper_macro.rs":"ca0c7b7a45e8f3f8c7fe25d59a5bb3189b067189dab642bfb02dda416f20774d","examples/partials.rs":"0b3ee03668338b9900705b1162ac1f602255d4b691d1827cb603efff318d3166","examples/partials/base0.hbs":"6674275ef68faaeab8a4128da0983c9d732d7552f1791c2e3563fa8c5c66fb5a","examples/partials/base1.hbs":"97b1089705f5a21a6f344190e26133d920d56d4a7fdc1fa2fb7359a720bfe182","examples/partials/template2.hbs":"6f83bc48b774a3b83f9ce5a54bf014fb03514720f9e32834dc68000d06a17618","examples/quick.rs":"96df03fc1742504afae34c6da9da05206adc41f771406da2825b41725329cb2d","examples/render.rs":"eadc1aff65d96c7f95c948fbccfb79981276075f83e19a22214fe0772ef17496","examples/render/template.hbs":"2512ef3362379633790985fe2c40e7efab3ad0f431b7cbec5b7cc644dbbef8f5","examples/render_cli/simple.hbs":"a2e0df51e7c1a25c4e9e1bbe0f4911c7c86200d358fc6c9195b61e89adddc970","examples/render_file.rs":"f5b8e788ac6a71a170c5b315120e8779896df8d9b290fb3d785f51307f5d3c45","examples/render_file/template.hbs":"8ec8d0b61a996391ad7f8b6a914f84d0ac06c62e6d7c9c5fa054ca5e2c64a52e","examples/script.rs":"5e16423dc4c8ae0e383f0d8b9e1a652850fa5e48dbc57cca3757661c3e0476bb","examples/script/goals.rhai":"d756fd7d39f11fae148a6e11d23160da0cdac91c29f716dcb854c07a7db09c80","examples/script/template.hbs":"1f39785157a112bc5c4e94db1361c45a73b024bc8bd0fea0a9d5da8102afb310","profile.sh":"b8e80c59bc12fca93daa67c09001c1c045e594e532831cc957c9ac313f8b2390","release.toml":"d1c1f8e31be9268666c07a2c3f244e73c3db7474a2a64218fac71f7ad1f20b5d","rustfmt.toml":"8e99dabd6aadb112f9f9ed8709e7388b57bf43d19cd08342c093c870534a3f97","src/block.rs":"da38a572a95c3858685e4af82a7e1920c6b3311acf8c118c53c8531b091de391","src/cli.rs":"63aed9a8fb2135ee03bd2b49330be20d2018fe3c36265c14dbdc0da9b73cb6d0","src/context.rs":"6d594b5c93cdc1e8ee08c3858f50dddc312eaa20b9ea3f4c14906bc6ebee318f","src/decorators/inline.rs":"73b8ba6ed98dbf8b3bca228796f47c9139d49f1a1c8d5b4603cc6354098b56c2","src/decorators/mod.rs":"a9189648fd11609fc6681d6df4af0deb1a1958e12c447485a0455d7e67f70fa3","src/error.rs":"a101458e111478fd6c3749910ca7af8afa973d51eb9a4bd13569e66d0aa8ae8f","src/grammar.pest":"a6754e1b61ba282f325af30f907e9e175ad21f0bec322d42e6f975a6f3bf2c7e","src/grammar.rs":"d572c6507f673c1e5c7c018f485672e6c10671d6749d0d9182f26d62e2e1537e","src/helpers/block_util.rs":"11a295215f9c0d14b89f97161468425405386214f050bad07683669a162f9aa1","src/helpers/helper_each.rs":"827de9ba0224cdd361ce52f02a9f301e879d738d6837672798517b83db68b331","src/helpers/helper_extras.rs":"0575a1518eba51cafe91ec2b09666e1c987c9a9bc98cb00193d1e0d203a8b681","src/helpers/helper_if.rs":"2fe6cc5f3b44a42611d02137e5a11466850d44b6a41a803e7a9268f3a545e487","src/helpers/helper_log.rs":"272f7c1f873b97974cce156c04281f2bd8c44ccc885b4c59dd2b43e8d7cc6ef6","src/helpers/helper_lookup.rs":"34e57dbe6a4c65afa8978d32db1b9adfb783990ec951b4833a9986a86cb38ff1","src/helpers/helper_raw.rs":"6b0b5b3774a1d5c3ebf30b1e0b8cac825f6ffb8a18cb9e08bd40786258e4b597","src/helpers/helper_with.rs":"554373544f1aff16799cde954e37a945e26b452414436f612e12b538ec8e1893","src/helpers/mod.rs":"f8c24abb40739935225acdfad97f4bc808eb1fec77d09fda1ff5779b632b7650","src/helpers/scripting.rs":"3716d77e6e11993741885a15dcddaedc11e076f0b5e9a0b844416d3fbb0a834c","src/json/mod.rs":"ef2fc8fe98e9761e2e2a4b2d2293bb29cdb689db2f44f939fc61c48c6b52f0a7","src/json/path.rs":"49b821765da4aa305e51478527898ad4038c3952c7f07c639e8b71a59732e34a","src/json/value.rs":"390ea4fa8b5131a3d00ff1c80d06359220f16d851a5e836192026ea32acbb02e","src/lib.rs":"9374528d680b4cefdfcef945529a5f9c6b03b22ba09503135cc18914ff621d56","src/local_vars.rs":"91d3a16bbfabe2eccecaa9a0dd866ebe88d70ce438d2f18581d1b7d231ba0644","src/macros.rs":"0e2d174bb155da5df279ba15ef65b92519ca890949acc8231c72196bc8364a7c","src/output.rs":"f85acedeb124a1d344c5f73b309bd32d925de5dbed701b5fdebcadbd42f3c7ad","src/partial.rs":"6362967d77d29eea5ba7000ec741774288f08afe7c685e9d28b801b603599401","src/registry.rs":"388ebf2e28734963cd04f6622109e009ab22f7377236f6042aa5441875b22cef","src/render.rs":"17594a82a37295d4887945f18dc12eebe261094078e699b53ff6b7e193fcf986","src/sources.rs":"46989eb76f36edff9dcb5d27488e8bd9c7ff1749f368a70e855f4808c58d7bcf","src/support.rs":"f9328a0674984fcc3c6e93e8a43ec63bf9b502176283f60a2d6ceb15ca34840a","src/template.rs":"5e275cd2adb00e4238607e5e6d7e7db209a1233b813df77e30ccc5df1991bc01","src/util.rs":"2ebc845de5ca47455442a1b6bd664565a52e29928e82c526fbfe56ed5196410f","tests/block_context.rs":"4dce11312d2b6c0c5c2f3104516e5567e5a370611e08f4055fa3653293580385","tests/data_helper.rs":"a7f9d1d42d5415ba1dba459840067acc1294f6f6057d9a5a13d9f7e19469e850","tests/embed.rs":"de85f16a7a0372cc0e150abe3487ae8180598532e4d73b05b4b107e7e4a0b05e","tests/escape.rs":"7b643675b7884a497d7008cda6e51809efea94a79d25996564b7771cfdbf1709","tests/helper_function_lifetime.rs":"635cbd0b44742539bdf36e803a19c6a1a698399f8b765415d53f28df1acfbc2b","tests/helper_macro.rs":"959cc218fa47c8b30835412c5b6b4f76c8387de49e9e2c73baa9a788f9564361","tests/helper_with_space.rs":"0aee174428b799998a9994b008485373a1b084bf4ea49ed455c890eb627f1ac1","tests/root_var.rs":"fda5b30bac1e692fb010f9f98e052d5a525420fece9dcc3821a4e5aeee3a8841","tests/subexpression.rs":"b36ab31adf45272ca984c0c5ed9497820ca072a8805444d69bd089b766786bb5","tests/template_names.rs":"4bbe6b48c974ae7ea1e61806794d846e2f0e8505e1568c5305fa2364dceef68a","tests/templates/hello.hbs":"4aca52692d2247a22c46856dbfd439a5c4edc47237e488ece5d01e9d8030e882","tests/whitespace.rs":"1cadfbe9cd8e2dd4ca7759fdcaf7fd05116b5e9ec59ca67722c41732fe89dfa3","wasm/LICENSE":"63b308fad3db82dc12067a8d7ff4b672fae97d12d0b4b3bb59179e27d640b3a4","wasm/README.md":"d67bad452550d34e9317fb8f4884b8bc07939fbb0dfdcf1be6bfce52a6851fa6","wasm/wapm.toml":"bdb286ccaa18c5c8aa0d2db25755aba9b0e3e83a59fc4d2334c1854933000ea1"},"package":"360d9740069b2f6cbb63ce2dbaa71a20d3185350cbb990d7bebeb9318415eb17"} \ No newline at end of file
diff --git a/vendor/handlebars/CHANGELOG.md b/vendor/handlebars/CHANGELOG.md
index 62045f53e..c3b79a657 100644
--- a/vendor/handlebars/CHANGELOG.md
+++ b/vendor/handlebars/CHANGELOG.md
@@ -1,5 +1,80 @@
# Change Log
+## [4.3.3](https://github.com/sunng87/handlebars-rust/compare/4.3.2...4.3.3) - 2022-07-20
+
+* [Fixed] Disable partial expression indentation with `{{~> partial}}` to
+ bring behavior closer in line with original javascript version. [#518]
+* [Fixed] Support for using partial context together with partial parameters
+ [#520]
+
+## [4.3.2](https://github.com/sunng87/handlebars-rust/compare/4.3.1...4.3.2) - 2022-07-14
+
+* [Added] Render functions that reuse `Context` for custom `std::io::Write`:
+ `render_with_context_to_write` and `render_template_with_context_to_write`
+
+## [4.3.1](https://github.com/sunng87/handlebars-rust/compare/4.3.0...4.3.1) - 2022-06-09
+
+* [Added] Added support for `{{~{variable}~}}` syntax [#509]
+
+## [4.3.0](https://github.com/sunng87/handlebars-rust/compare/4.2.2...4.3.0) - 2022-05-18
+
+* [Changed] update MSRV to 1.57 as rhai requires
+* [Fixed] Reimplemented indent support for partial expression `{{>
+ partial}}`, which is introduced in 4.2.0. The new implementation is
+ aligned with original javascript version, that every text line
+ generated from partial are indented as `{{> partial}}`
+ does. `prevent_indent` will turn-off this feature. [#505]
+* [Changed] changed error support library from quick_error to
+ thiserror
+
+## [4.2.2](https://github.com/sunng87/handlebars-rust/compare/4.2.1...4.2.2) - 2022-03-09
+
+* [Fixed] Block param scope leaked into partials [#496]
+* [Changed] Use Rust 2021 edition and update MSRV to 1.56
+
+## [4.2.1](https://github.com/sunng87/handlebars-rust/compare/4.2.0...4.2.1) - 2022-01-17
+
+* [Fixed] Nested partial `@partial-block` referencing issue [#488]
+* [Fixed] Docs generation on docs.rs for `rust-embed` feature
+
+## [4.2.0](https://github.com/sunng87/handlebars-rust/compare/4.1.6...4.2.0) - 2022-01-05
+
+* [Added] RustEmbed support for loading templates from [#484]
+* [Fixed] Parser support for variables begins with digit [#479]
+* [Changed] Keep indent whitespaces for partial expression `{{>
+ partial}}` as default in handlebarsjs. A new option `prevent_indent`
+ is provided on `Handlebars` to turn off this behaviour. [#486]
+* [Changed] Update MSRV to 1.51 due to dependency changes
+
+## [4.1.6](https://github.com/sunng87/handlebars-rust/compare/4.1.5...4.1.6) - 2021-12-03
+
+* [Added] Create `Context` from owned `serde_json::Value` [#477]
+
+## [4.1.5](https://github.com/sunng87/handlebars-rust/compare/4.1.4...4.1.5) - 2021-11-17
+
+* [Fixed] Single-quote string literal is supported, again [#475]
+
+## [4.1.4](https://github.com/sunng87/handlebars-rust/compare/4.1.3...4.1.4) - 2021-11-06
+
+* [Fixed] Corrected empty line stripping strategy [#473]
+
+## [4.1.3](https://github.com/sunng87/handlebars-rust/compare/4.1.2...4.1.3) - 2021-09-10
+
+* [Added] `@last` variable for `each` block with object [#466]
+* [Fixed] Missing whitespaces behind expression [#468]
+
+## [4.1.2](https://github.com/sunng87/handlebars-rust/compare/4.1.1...4.1.2) - 2021-08-11
+
+* [Added] Support for generic types in `handlebars_helper!`.
+* [Added] Getter and setter for rhai `Engine` from registry.
+* [Fixed] Improve doc for `dev_mode` that it has to be enabled before
+ adding templates.
+
+## [4.1.1](https://github.com/sunng87/handlebars-rust/compare/4.1.0...4.1.1) - 2021-07-31
+
+* [Changed] Update rhai to 1.0 [#455]
+* [Fixed] Empty line stripping for partial include statement, and other corner cases [#458]
+
## [4.1.0](https://github.com/sunng87/handlebars-rust/compare/4.0.1...4.1.0) - 2021-07-05
* [Added] export `StringOutput` as requested in #442
diff --git a/vendor/handlebars/Cargo.lock b/vendor/handlebars/Cargo.lock
index 8fc6db06f..27cc86f9b 100644
--- a/vendor/handlebars/Cargo.lock
+++ b/vendor/handlebars/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
[[package]]
name = "addr2line"
-version = "0.15.2"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7a2e47a1fbe209ee101dd6d61285226744c6c8d3c21c8dc878ba6cb9f467f3a"
+checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b"
dependencies = [
"gimli",
]
@@ -19,22 +19,11 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "ahash"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "796540673305a66d127804eef19ad696f1f204b8c1025aaca4958c17eab32877"
-dependencies = [
- "getrandom 0.2.3",
- "once_cell",
- "version_check",
-]
-
-[[package]]
-name = "ahash"
-version = "0.7.4"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98"
+checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
dependencies = [
- "getrandom 0.2.3",
+ "getrandom",
"once_cell",
"version_check",
]
@@ -50,9 +39,9 @@ dependencies = [
[[package]]
name = "anyhow"
-version = "1.0.41"
+version = "1.0.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15af2628f6890fe2609a3b91bef4c83450512802e59489f9c1cb1fa5df064a61"
+checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc"
[[package]]
name = "arrayvec"
@@ -64,6 +53,12 @@ dependencies = [
]
[[package]]
+name = "ascii"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbf56136a5198c7b01a49e3afcbef6cf84597273d298f54432926024107b0109"
+
+[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -76,19 +71,19 @@ dependencies = [
[[package]]
name = "autocfg"
-version = "1.0.1"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "backtrace"
-version = "0.3.60"
+version = "0.3.65"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b7815ea54e4d821e791162e078acbebfd6d8c8939cd559c9335dceb1c8ca7282"
+checksum = "11a17d453482a265fd5f8479f2a3f405566e6ca627837aaddb85af8b1ab8ef61"
dependencies = [
"addr2line",
"cc",
- "cfg-if 1.0.0",
+ "cfg-if",
"libc",
"miniz_oxide",
"object",
@@ -96,16 +91,10 @@ dependencies = [
]
[[package]]
-name = "base64"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
-
-[[package]]
name = "bitflags"
-version = "1.2.1"
+version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
+checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "block-buffer"
@@ -125,7 +114,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4"
dependencies = [
- "generic-array 0.14.4",
+ "generic-array 0.14.5",
]
[[package]]
@@ -139,9 +128,9 @@ dependencies = [
[[package]]
name = "bstr"
-version = "0.2.16"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279"
+checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223"
dependencies = [
"lazy_static",
"memchr",
@@ -150,20 +139,10 @@ dependencies = [
]
[[package]]
-name = "buf_redux"
-version = "0.8.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f"
-dependencies = [
- "memchr",
- "safemem",
-]
-
-[[package]]
name = "bumpalo"
-version = "3.7.0"
+version = "3.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631"
+checksum = "a4a45a46ab1f2412e53d3a0ade76ffad2025804294569aae387231a0cd6e0899"
[[package]]
name = "byte-tools"
@@ -173,9 +152,9 @@ checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
[[package]]
name = "bytemuck"
-version = "1.7.0"
+version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9966d2ab714d0f785dbac0a0396251a35280aeb42413281617d0209ab4898435"
+checksum = "cdead85bdec19c194affaeeb670c0e41fe23de31459efd1c174d049269cf02cc"
[[package]]
name = "byteorder"
@@ -185,48 +164,42 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
[[package]]
name = "bytes"
-version = "0.5.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38"
-
-[[package]]
-name = "bytes"
-version = "1.0.1"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040"
+checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
[[package]]
name = "cast"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57cdfa5d50aad6cb4d44dcab6101a7f79925bd59d82ca42f38a9856a28865374"
+checksum = "4c24dab4283a142afa2fdca129b80ad2c6284e073930f964c3a1293c225ee39a"
dependencies = [
"rustc_version",
]
[[package]]
name = "cc"
-version = "1.0.68"
+version = "1.0.73"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4a72c244c1ff497a746a7e1fb3d14bd08420ecda70c8f25c7112f2781652d787"
+checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
[[package]]
name = "cfg-if"
-version = "0.1.10"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
+checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
-name = "cfg-if"
-version = "1.0.0"
+name = "chunked_transfer"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+checksum = "fff857943da45f546682664a79488be82e69e43c1a7a2307679ab9afb3a66d2e"
[[package]]
name = "clap"
-version = "2.33.3"
+version = "2.34.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
+checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
dependencies = [
"bitflags",
"textwrap",
@@ -234,36 +207,44 @@ dependencies = [
]
[[package]]
+name = "cmake"
+version = "0.1.48"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e8ad8cef104ac57b68b89df3208164d228503abbdce70f6880ffa3d970e7443a"
+dependencies = [
+ "cc",
+]
+
+[[package]]
name = "cpp_demangle"
-version = "0.3.2"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44919ecaf6f99e8e737bc239408931c9a01e9a6c74814fee8242dd2506b65390"
+checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f"
dependencies = [
- "cfg-if 1.0.0",
- "glob",
+ "cfg-if",
]
[[package]]
name = "cpufeatures"
-version = "0.1.4"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed00c67cb5d0a7d64a44f6ad2668db7e7530311dd53ea79bcd4fb022c64911c8"
+checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b"
dependencies = [
"libc",
]
[[package]]
name = "criterion"
-version = "0.3.4"
+version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab327ed7354547cc2ef43cbe20ef68b988e70b4b593cbd66a2a61733123a3d23"
+checksum = "1604dafd25fba2fe2d5895a9da139f8dc9b319a5fe5354ca137cbbce4e178d10"
dependencies = [
"atty",
"cast",
"clap",
"criterion-plot",
"csv",
- "itertools 0.10.1",
+ "itertools",
"lazy_static",
"num-traits",
"oorandom",
@@ -280,42 +261,43 @@ dependencies = [
[[package]]
name = "criterion-plot"
-version = "0.4.3"
+version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e022feadec601fba1649cfa83586381a4ad31c6bf3a9ab7d408118b05dd9889d"
+checksum = "d00996de9f2f7559f7f4dc286073197f83e92256a59ed395f9aac01fe717da57"
dependencies = [
"cast",
- "itertools 0.9.0",
+ "itertools",
]
[[package]]
name = "crossbeam-channel"
-version = "0.5.1"
+version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4"
+checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-deque"
-version = "0.8.0"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
+checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
-version = "0.9.5"
+version = "0.9.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd"
+checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"
dependencies = [
- "cfg-if 1.0.0",
+ "autocfg",
+ "cfg-if",
"crossbeam-utils",
"lazy_static",
"memoffset",
@@ -324,11 +306,11 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
-version = "0.8.5"
+version = "0.8.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"
+checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
"lazy_static",
]
@@ -340,7 +322,7 @@ checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1"
dependencies = [
"bstr",
"csv-core",
- "itoa",
+ "itoa 0.4.8",
"ryu",
"serde",
]
@@ -356,9 +338,9 @@ dependencies = [
[[package]]
name = "debugid"
-version = "0.7.2"
+version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f91cf5a8c2f2097e2a32627123508635d47ce10563d999ec1a95addf08b502ba"
+checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d"
dependencies = [
"uuid",
]
@@ -378,7 +360,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066"
dependencies = [
- "generic-array 0.14.4",
+ "generic-array 0.14.5",
]
[[package]]
@@ -389,9 +371,9 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
[[package]]
name = "env_logger"
-version = "0.8.4"
+version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
+checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
dependencies = [
"atty",
"humantime",
@@ -407,88 +389,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
[[package]]
-name = "fixedbitset"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37ab347416e802de484e4d03c7316c48f1ecb56574dfd4a46a80f173ce1de04d"
-
-[[package]]
-name = "fnv"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
-
-[[package]]
-name = "form_urlencoded"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
-dependencies = [
- "matches",
- "percent-encoding",
-]
-
-[[package]]
-name = "futures"
-version = "0.3.15"
+name = "fastrand"
+version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e7e43a803dae2fa37c1f6a8fe121e1f7bf9548b4dfc0522a42f34145dadfc27"
+checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf"
dependencies = [
- "futures-channel",
- "futures-core",
- "futures-io",
- "futures-sink",
- "futures-task",
- "futures-util",
+ "instant",
]
[[package]]
-name = "futures-channel"
-version = "0.3.15"
+name = "findshlibs"
+version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2"
+checksum = "40b9e59cd0f7e0806cca4be089683ecb6434e602038df21fe6bf6711b2f07f64"
dependencies = [
- "futures-core",
- "futures-sink",
+ "cc",
+ "lazy_static",
+ "libc",
+ "winapi",
]
[[package]]
-name = "futures-core"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1"
-
-[[package]]
-name = "futures-io"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1"
-
-[[package]]
-name = "futures-sink"
-version = "0.3.15"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a57bead0ceff0d6dde8f465ecd96c9338121bb7717d3e7b108059531870c4282"
-
-[[package]]
-name = "futures-task"
-version = "0.3.15"
+name = "fixedbitset"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae"
+checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e"
[[package]]
-name = "futures-util"
-version = "0.3.15"
+name = "form_urlencoded"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967"
+checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191"
dependencies = [
- "autocfg",
- "futures-core",
- "futures-sink",
- "futures-task",
- "pin-project-lite",
- "pin-utils",
- "slab",
+ "matches",
+ "percent-encoding",
]
[[package]]
@@ -502,9 +436,9 @@ dependencies = [
[[package]]
name = "generic-array"
-version = "0.14.4"
+version = "0.14.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817"
+checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803"
dependencies = [
"typenum",
"version_check",
@@ -512,199 +446,77 @@ dependencies = [
[[package]]
name = "getrandom"
-version = "0.1.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
-dependencies = [
- "cfg-if 1.0.0",
- "libc",
- "wasi 0.9.0+wasi-snapshot-preview1",
-]
-
-[[package]]
-name = "getrandom"
-version = "0.2.3"
+version = "0.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
+checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
"libc",
- "wasi 0.10.2+wasi-snapshot-preview1",
+ "wasi",
]
[[package]]
name = "gimli"
-version = "0.24.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189"
-
-[[package]]
-name = "glob"
-version = "0.3.0"
+version = "0.26.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
-
-[[package]]
-name = "h2"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "825343c4eef0b63f541f8903f395dc5beb362a979b5799a84062527ef1e37726"
-dependencies = [
- "bytes 1.0.1",
- "fnv",
- "futures-core",
- "futures-sink",
- "futures-util",
- "http",
- "indexmap",
- "slab",
- "tokio",
- "tokio-util",
- "tracing",
-]
+checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4"
[[package]]
name = "half"
-version = "1.7.1"
+version = "1.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62aca2aba2d62b4a7f5b33f3712cb1b0692779a56fb510499d5c0aa594daeaf3"
+checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
[[package]]
name = "handlebars"
-version = "4.1.0"
+version = "4.3.3"
dependencies = [
"criterion",
"env_logger",
"log",
- "maplit",
"pest",
"pest_derive",
"pprof",
- "quick-error 2.0.1",
"rhai",
+ "rust-embed",
"serde",
"serde_derive",
"serde_json",
"tempfile",
- "tokio",
+ "thiserror",
+ "time",
+ "tiny_http",
"walkdir",
- "warp",
]
[[package]]
name = "hashbrown"
-version = "0.9.1"
+version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04"
-
-[[package]]
-name = "headers"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0b7591fb62902706ae8e7aaff416b1b0fa2c0fd0878b46dc13baa3712d8a855"
-dependencies = [
- "base64",
- "bitflags",
- "bytes 1.0.1",
- "headers-core",
- "http",
- "mime",
- "sha-1 0.9.6",
- "time",
-]
-
-[[package]]
-name = "headers-core"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429"
-dependencies = [
- "http",
-]
+checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
[[package]]
name = "heck"
-version = "0.3.3"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
-dependencies = [
- "unicode-segmentation",
-]
+checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9"
[[package]]
name = "hermit-abi"
-version = "0.1.18"
+version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
+checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
[[package]]
-name = "http"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11"
-dependencies = [
- "bytes 1.0.1",
- "fnv",
- "itoa",
-]
-
-[[package]]
-name = "http-body"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60daa14be0e0786db0f03a9e57cb404c9d756eed2b6c62b9ea98ec5743ec75a9"
-dependencies = [
- "bytes 1.0.1",
- "http",
- "pin-project-lite",
-]
-
-[[package]]
-name = "httparse"
-version = "1.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3a87b616e37e93c22fb19bcd386f02f3af5ea98a25670ad0fce773de23c5e68"
-
-[[package]]
-name = "httpdate"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6456b8a6c8f33fee7d958fcd1b60d55b11940a79e63ae87013e6d22e26034440"
-
-[[package]]
name = "humantime"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
[[package]]
-name = "hyper"
-version = "0.14.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "07d6baa1b441335f3ce5098ac421fb6547c46dda735ca1bc6d0153c838f9dd83"
-dependencies = [
- "bytes 1.0.1",
- "futures-channel",
- "futures-core",
- "futures-util",
- "h2",
- "http",
- "http-body",
- "httparse",
- "httpdate",
- "itoa",
- "pin-project-lite",
- "socket2",
- "tokio",
- "tower-service",
- "tracing",
- "want",
-]
-
-[[package]]
name = "idna"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -717,9 +529,9 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "1.6.2"
+version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3"
+checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee"
dependencies = [
"autocfg",
"hashbrown",
@@ -727,14 +539,14 @@ dependencies = [
[[package]]
name = "inferno"
-version = "0.10.6"
+version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3c3cbcc228d2ad2e99328c2b19f38d80ec387ca6a29f778e40e32ca9f25448c3"
+checksum = "16d4bde3a7105e59c66a4104cfe9606453af1c7a0eac78cb7d5bc263eb762a70"
dependencies = [
- "ahash 0.6.3",
+ "ahash",
"atty",
"indexmap",
- "itoa",
+ "itoa 1.0.1",
"lazy_static",
"log",
"num-format",
@@ -744,61 +556,40 @@ dependencies = [
]
[[package]]
-name = "input_buffer"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f97967975f448f1a7ddb12b0bc41069d09ed6a1c161a92687e057325db35d413"
-dependencies = [
- "bytes 1.0.1",
-]
-
-[[package]]
name = "instant"
-version = "0.1.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec"
-dependencies = [
- "cfg-if 1.0.0",
-]
-
-[[package]]
-name = "itertools"
-version = "0.8.2"
+version = "0.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f56a2d0bc861f9165be4eb3442afd3c236d8a98afd426f65d92324ae1091a484"
+checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
dependencies = [
- "either",
+ "cfg-if",
]
[[package]]
name = "itertools"
-version = "0.9.0"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
+checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"
dependencies = [
"either",
]
[[package]]
-name = "itertools"
-version = "0.10.1"
+name = "itoa"
+version = "0.4.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "69ddb889f9d0d08a67338271fa9b62996bc788c7796a5c18cf057420aaed5eaf"
-dependencies = [
- "either",
-]
+checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4"
[[package]]
name = "itoa"
-version = "0.4.7"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
+checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
[[package]]
name = "js-sys"
-version = "0.3.51"
+version = "0.3.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062"
+checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397"
dependencies = [
"wasm-bindgen",
]
@@ -811,26 +602,27 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.97"
+version = "0.2.125"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "12b8adadd720df158f4d70dfe7ccc6adb0472d7c55ca83445f6a5ab3e36f8fb6"
+checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b"
[[package]]
name = "lock_api"
-version = "0.4.4"
+version = "0.4.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb"
+checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"
dependencies = [
+ "autocfg",
"scopeguard",
]
[[package]]
name = "log"
-version = "0.4.14"
+version = "0.4.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
+checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
]
[[package]]
@@ -841,81 +633,41 @@ checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d"
[[package]]
name = "matches"
-version = "0.1.8"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08"
+checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"
[[package]]
name = "memchr"
-version = "2.4.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
-name = "memmap"
-version = "0.7.0"
+name = "memmap2"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b"
+checksum = "057a3db23999c867821a7a59feb06a578fcb03685e983dff90daf9e7d24ac08f"
dependencies = [
"libc",
- "winapi",
]
[[package]]
name = "memoffset"
-version = "0.6.4"
+version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
+checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce"
dependencies = [
"autocfg",
]
[[package]]
-name = "mime"
-version = "0.3.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
-
-[[package]]
-name = "mime_guess"
-version = "2.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2684d4c2e97d99848d30b324b00c8fcc7e5c897b7cbb5819b09e7c90e8baf212"
-dependencies = [
- "mime",
- "unicase",
-]
-
-[[package]]
name = "miniz_oxide"
-version = "0.4.4"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b"
+checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082"
dependencies = [
"adler",
- "autocfg",
-]
-
-[[package]]
-name = "mio"
-version = "0.7.13"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c2bdb6314ec10835cd3293dd268473a835c02b7b352e788be788b3c6ca6bb16"
-dependencies = [
- "libc",
- "log",
- "miow",
- "ntapi",
- "winapi",
-]
-
-[[package]]
-name = "miow"
-version = "0.3.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21"
-dependencies = [
- "winapi",
]
[[package]]
@@ -925,34 +677,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
[[package]]
-name = "multipart"
-version = "0.17.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d050aeedc89243f5347c3e237e3e13dc76fbe4ae3742a57b94dc14f69acf76d4"
-dependencies = [
- "buf_redux",
- "httparse",
- "log",
- "mime",
- "mime_guess",
- "quick-error 1.2.3",
- "rand 0.7.3",
- "safemem",
- "tempfile",
- "twoway",
-]
-
-[[package]]
name = "nix"
-version = "0.17.0"
+version = "0.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50e4785f2c3b7589a0d0c1dd60285e1188adac4006e8abd6dd578e1567027363"
+checksum = "8f17df307904acd05aa8e32e97bb20f2a0df1728bbc2d771ae8f9a90463441e9"
dependencies = [
"bitflags",
- "cc",
- "cfg-if 0.1.10",
+ "cfg-if",
"libc",
- "void",
]
[[package]]
@@ -962,57 +694,57 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
[[package]]
-name = "ntapi"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44"
-dependencies = [
- "winapi",
-]
-
-[[package]]
name = "num-format"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bafe4179722c2894288ee77a9f044f02811c86af699344c498b0840c698a2465"
dependencies = [
"arrayvec",
- "itoa",
+ "itoa 0.4.8",
]
[[package]]
name = "num-traits"
-version = "0.2.14"
+version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
+checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
dependencies = [
"autocfg",
]
[[package]]
name = "num_cpus"
-version = "1.13.0"
+version = "1.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
+checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
dependencies = [
"hermit-abi",
"libc",
]
[[package]]
+name = "num_threads"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+dependencies = [
+ "libc",
+]
+
+[[package]]
name = "object"
-version = "0.25.3"
+version = "0.28.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a38f2be3697a57b4060074ff41b44c16870d916ad7877c17696e063257482bc7"
+checksum = "e42c982f2d955fac81dd7e1d0e1426a7d702acd9c98d19ab01083a6a0328c424"
dependencies = [
"memchr",
]
[[package]]
name = "once_cell"
-version = "1.8.0"
+version = "1.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
+checksum = "87f3e037eac156d1775da914196f0f37741a274155e34a0b7e427c35d2a2ecb9"
[[package]]
name = "oorandom"
@@ -1034,27 +766,25 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
[[package]]
name = "parking_lot"
-version = "0.11.1"
+version = "0.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb"
+checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58"
dependencies = [
- "instant",
"lock_api",
"parking_lot_core",
]
[[package]]
name = "parking_lot_core"
-version = "0.8.3"
+version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018"
+checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929"
dependencies = [
- "cfg-if 1.0.0",
- "instant",
+ "cfg-if",
"libc",
"redox_syscall",
"smallvec",
- "winapi",
+ "windows-sys",
]
[[package]]
@@ -1103,52 +833,20 @@ checksum = "54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d"
dependencies = [
"maplit",
"pest",
- "sha-1 0.8.2",
+ "sha-1",
]
[[package]]
name = "petgraph"
-version = "0.5.1"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "467d164a6de56270bd7c4d070df81d07beace25012d5103ced4e9ff08d6afdb7"
+checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f"
dependencies = [
"fixedbitset",
"indexmap",
]
[[package]]
-name = "pin-project"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4"
-dependencies = [
- "pin-project-internal",
-]
-
-[[package]]
-name = "pin-project-internal"
-version = "1.0.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "pin-project-lite"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905"
-
-[[package]]
-name = "pin-utils"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
-
-[[package]]
name = "plotters"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1163,91 +861,92 @@ dependencies = [
[[package]]
name = "plotters-backend"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b07fffcddc1cb3a1de753caa4e4df03b79922ba43cf882acc1bdd7e8df9f4590"
+checksum = "d88417318da0eaf0fdcdb51a0ee6c3bed624333bff8f946733049380be67ac1c"
[[package]]
name = "plotters-svg"
-version = "0.3.0"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b38a02e23bd9604b842a812063aec4ef702b57989c37b655254bb61c471ad211"
+checksum = "521fa9638fa597e1dc53e9412a4f9cefb01187ee1f7413076f9e6749e2885ba9"
dependencies = [
"plotters-backend",
]
[[package]]
name = "pprof"
-version = "0.3.20"
+version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "937e4766a8d473f9dd3eb318c654dec77d6715a87ab50081d6e5cfceea73c105"
+checksum = "1bba88ee898c63351101af3e60c66c5398c517681ce533eef8caff10ecf11ec1"
dependencies = [
"backtrace",
+ "cfg-if",
+ "findshlibs",
"inferno",
- "lazy_static",
"libc",
"log",
"nix",
+ "once_cell",
"parking_lot",
"prost",
"prost-build",
"prost-derive",
+ "smallvec",
"symbolic-demangle",
"tempfile",
"thiserror",
]
[[package]]
-name = "ppv-lite86"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
-
-[[package]]
name = "proc-macro2"
-version = "1.0.27"
+version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038"
+checksum = "9027b48e9d4c9175fa2218adf3557f91c1137021739951d4932f5f8268ac48aa"
dependencies = [
"unicode-xid",
]
[[package]]
name = "prost"
-version = "0.6.1"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce49aefe0a6144a45de32927c77bd2859a5f7677b55f220ae5b744e87389c212"
+checksum = "bc03e116981ff7d8da8e5c220e374587b98d294af7ba7dd7fda761158f00086f"
dependencies = [
- "bytes 0.5.6",
+ "bytes",
"prost-derive",
]
[[package]]
name = "prost-build"
-version = "0.6.1"
+version = "0.10.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02b10678c913ecbd69350e8535c3aef91a8676c0773fc1d7b95cdd196d7f2f26"
+checksum = "65a1118354442de7feb8a2a76f3d80ef01426bd45542c8c1fdffca41a758f846"
dependencies = [
- "bytes 0.5.6",
+ "bytes",
+ "cfg-if",
+ "cmake",
"heck",
- "itertools 0.8.2",
+ "itertools",
+ "lazy_static",
"log",
"multimap",
"petgraph",
"prost",
"prost-types",
+ "regex",
"tempfile",
"which",
]
[[package]]
name = "prost-derive"
-version = "0.6.1"
+version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "537aa19b95acde10a12fec4301466386f757403de4cd4e5b4fa78fb5ecb18f72"
+checksum = "7b670f45da57fb8542ebdbb6105a925fe571b67f9e7ed9f47a06a84e72b4e7cc"
dependencies = [
"anyhow",
- "itertools 0.8.2",
+ "itertools",
"proc-macro2",
"quote",
"syn",
@@ -1255,130 +954,37 @@ dependencies = [
[[package]]
name = "prost-types"
-version = "0.6.1"
+version = "0.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1834f67c0697c001304b75be76f67add9c89742eda3a085ad8ee0bb38c3417aa"
+checksum = "2d0a014229361011dc8e69c8a1ec6c2e8d0f2af7c91e3ea3f5b2170298461e68"
dependencies = [
- "bytes 0.5.6",
+ "bytes",
"prost",
]
[[package]]
-name = "quick-error"
-version = "1.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
-
-[[package]]
-name = "quick-error"
-version = "2.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
-
-[[package]]
name = "quick-xml"
-version = "0.20.0"
+version = "0.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26aab6b48e2590e4a64d1ed808749ba06257882b461d01ca71baeb747074a6dd"
+checksum = "8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b"
dependencies = [
"memchr",
]
[[package]]
name = "quote"
-version = "1.0.9"
+version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
+checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
dependencies = [
"proc-macro2",
]
[[package]]
-name = "rand"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
-dependencies = [
- "getrandom 0.1.16",
- "libc",
- "rand_chacha 0.2.2",
- "rand_core 0.5.1",
- "rand_hc 0.2.0",
-]
-
-[[package]]
-name = "rand"
-version = "0.8.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e"
-dependencies = [
- "libc",
- "rand_chacha 0.3.1",
- "rand_core 0.6.2",
- "rand_hc 0.3.0",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
-dependencies = [
- "ppv-lite86",
- "rand_core 0.5.1",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
-dependencies = [
- "ppv-lite86",
- "rand_core 0.6.2",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
-dependencies = [
- "getrandom 0.1.16",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7"
-dependencies = [
- "getrandom 0.2.3",
-]
-
-[[package]]
-name = "rand_hc"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
-dependencies = [
- "rand_core 0.5.1",
-]
-
-[[package]]
-name = "rand_hc"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73"
-dependencies = [
- "rand_core 0.6.2",
-]
-
-[[package]]
name = "rayon"
-version = "1.5.1"
+version = "1.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
+checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d"
dependencies = [
"autocfg",
"crossbeam-deque",
@@ -1388,31 +994,30 @@ dependencies = [
[[package]]
name = "rayon-core"
-version = "1.9.1"
+version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
+checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f"
dependencies = [
"crossbeam-channel",
"crossbeam-deque",
"crossbeam-utils",
- "lazy_static",
"num_cpus",
]
[[package]]
name = "redox_syscall"
-version = "0.2.8"
+version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc"
+checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42"
dependencies = [
"bitflags",
]
[[package]]
name = "regex"
-version = "1.5.4"
+version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
+checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
dependencies = [
"aho-corasick",
"memchr",
@@ -1442,20 +1047,21 @@ dependencies = [
[[package]]
name = "rgb"
-version = "0.8.27"
+version = "0.8.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fddb3b23626145d1776addfc307e1a1851f60ef6ca64f376bcb889697144cf0"
+checksum = "e74fdc210d8f24a7dbfedc13b04ba5764f5232754ccebfdf5fff1bad791ccbc6"
dependencies = [
"bytemuck",
]
[[package]]
name = "rhai"
-version = "0.20.2"
+version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d862e125236e74d2a5033e88b9cb9404010a6a39516a388f570975494fe73bce"
+checksum = "9f06953bb8b9e4307cb7ccc0d9d018e2ddd25a30d32831f631ce4fe8f17671f7"
dependencies = [
- "ahash 0.7.4",
+ "ahash",
+ "bitflags",
"instant",
"num-traits",
"rhai_codegen",
@@ -1466,41 +1072,69 @@ dependencies = [
[[package]]
name = "rhai_codegen"
-version = "0.3.6"
+version = "1.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "faa0ff1c9dc19c9f8bba510a2a75d3f0449f6233570c2672c7e31c692a11a59a"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "rust-embed"
+version = "6.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "643fd67d19aafd45a9e335afe4183dc58ba0cc6a1f43fbe34c7d92c041cdcafc"
+checksum = "9a17e5ac65b318f397182ae94e532da0ba56b88dd1200b774715d36c4943b1c3"
+dependencies = [
+ "rust-embed-impl",
+ "rust-embed-utils",
+ "walkdir",
+]
+
+[[package]]
+name = "rust-embed-impl"
+version = "6.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94e763e24ba2bf0c72bc6be883f967f794a019fafd1b86ba1daff9c91a7edd30"
dependencies = [
"proc-macro2",
"quote",
+ "rust-embed-utils",
"syn",
+ "walkdir",
+]
+
+[[package]]
+name = "rust-embed-utils"
+version = "7.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "756feca3afcbb1487a1d01f4ecd94cf8ec98ea074c55a69e7136d29fb6166029"
+dependencies = [
+ "sha2",
+ "walkdir",
]
[[package]]
name = "rustc-demangle"
-version = "0.1.19"
+version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce"
+checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
[[package]]
name = "rustc_version"
-version = "0.3.3"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
+checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366"
dependencies = [
"semver",
]
[[package]]
name = "ryu"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
-
-[[package]]
-name = "safemem"
-version = "0.3.3"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
+checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
[[package]]
name = "same-file"
@@ -1512,12 +1146,6 @@ dependencies = [
]
[[package]]
-name = "scoped-tls"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2"
-
-[[package]]
name = "scopeguard"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1525,36 +1153,24 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
[[package]]
name = "semver"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
-dependencies = [
- "semver-parser",
-]
-
-[[package]]
-name = "semver-parser"
-version = "0.10.2"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
-dependencies = [
- "pest",
-]
+checksum = "8cb243bdfdb5936c8dc3c45762a19d12ab4550cdc753bc247637d4ec35a040fd"
[[package]]
name = "serde"
-version = "1.0.126"
+version = "1.0.137"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03"
+checksum = "61ea8d54c77f8315140a05f4c7237403bf38b72704d031543aa1d16abbf517d1"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_cbor"
-version = "0.11.1"
+version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e18acfa2f90e8b735b2836ab8d538de304cbb6729a7360729ea5a895d15a622"
+checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5"
dependencies = [
"half",
"serde",
@@ -1562,9 +1178,9 @@ dependencies = [
[[package]]
name = "serde_derive"
-version = "1.0.126"
+version = "1.0.137"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43"
+checksum = "1f26faba0c3959972377d3b2d306ee9f71faee9714294e41bb777f83f88578be"
dependencies = [
"proc-macro2",
"quote",
@@ -1573,23 +1189,11 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.64"
+version = "1.0.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79"
+checksum = "9b7ce2b32a1aed03c558dc61a5cd328f15aff2dbc17daad8fb8af04d2100e15c"
dependencies = [
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "serde_urlencoded"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9"
-dependencies = [
- "form_urlencoded",
- "itoa",
+ "itoa 1.0.1",
"ryu",
"serde",
]
@@ -1607,47 +1211,33 @@ dependencies = [
]
[[package]]
-name = "sha-1"
-version = "0.9.6"
+name = "sha2"
+version = "0.9.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8c4cfa741c5832d0ef7fab46cabed29c2aae926db0b11bb2069edd8db5e64e16"
+checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800"
dependencies = [
"block-buffer 0.9.0",
- "cfg-if 1.0.0",
+ "cfg-if",
"cpufeatures",
"digest 0.9.0",
"opaque-debug 0.3.0",
]
[[package]]
-name = "slab"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527"
-
-[[package]]
name = "smallvec"
-version = "1.6.1"
+version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
+checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
[[package]]
name = "smartstring"
-version = "0.2.6"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ada87540bf8ef4cf8a1789deb175626829bb59b1fefd816cf7f7f55efcdbae9"
+checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29"
dependencies = [
+ "autocfg",
"static_assertions",
-]
-
-[[package]]
-name = "socket2"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2"
-dependencies = [
- "libc",
- "winapi",
+ "version_check",
]
[[package]]
@@ -1670,21 +1260,21 @@ checksum = "9091b6114800a5f2141aee1d1b9d6ca3592ac062dc5decb3764ec5895a47b4eb"
[[package]]
name = "symbolic-common"
-version = "8.2.0"
+version = "9.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f8e101b55bbcf228c855fa34fc4312e4f58b4a3251f1298bc0f97b71557815d"
+checksum = "9ea2ab8b85d27d49d184438b4b77fbd521b385cc9c5c802f60e784f2df25a03d"
dependencies = [
"debugid",
- "memmap",
+ "memmap2",
"stable_deref_trait",
"uuid",
]
[[package]]
name = "symbolic-demangle"
-version = "8.2.0"
+version = "9.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e257e28c2cbcf60a0c21089d32ff8b6cdc7efa6125b13693d29e8986aa1cd99"
+checksum = "7939b15a1c62633d1fce17f8a7b668312eaa2d3b117bf4ced5e6e77870c43b6a"
dependencies = [
"cpp_demangle",
"rustc-demangle",
@@ -1693,9 +1283,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "1.0.73"
+version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f71489ff30030d2ae598524f61326b902466f72a0fb1a8564c001cc63425bcc7"
+checksum = "a07e33e919ebcd69113d5be0e4d70c5707004ff45188910106854f38b960df4a"
dependencies = [
"proc-macro2",
"quote",
@@ -1704,13 +1294,13 @@ dependencies = [
[[package]]
name = "tempfile"
-version = "3.2.0"
+version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22"
+checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
+ "fastrand",
"libc",
- "rand 0.8.3",
"redox_syscall",
"remove_dir_all",
"winapi",
@@ -1718,9 +1308,9 @@ dependencies = [
[[package]]
name = "termcolor"
-version = "1.1.2"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4"
+checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
dependencies = [
"winapi-util",
]
@@ -1736,18 +1326,18 @@ dependencies = [
[[package]]
name = "thiserror"
-version = "1.0.25"
+version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa6f76457f59514c7eeb4e59d891395fab0b2fd1d40723ae737d64153392e9c6"
+checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.25"
+version = "1.0.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8a36768c0fbf1bb15eca10defa29526bda730a2376c2ab4393ccfa16fb1a318d"
+checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a"
dependencies = [
"proc-macro2",
"quote",
@@ -1756,170 +1346,66 @@ dependencies = [
[[package]]
name = "time"
-version = "0.1.43"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca8a50ef2360fbd1eeb0ecd46795a87a19024eb4b53c5dc916ca1fd95fe62438"
+checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd"
dependencies = [
+ "itoa 1.0.1",
"libc",
- "winapi",
-]
-
-[[package]]
-name = "tinytemplate"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
-dependencies = [
+ "num_threads",
"serde",
- "serde_json",
+ "time-macros",
]
[[package]]
-name = "tinyvec"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342"
-dependencies = [
- "tinyvec_macros",
-]
-
-[[package]]
-name = "tinyvec_macros"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
-
-[[package]]
-name = "tokio"
-version = "1.6.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aea337f72e96efe29acc234d803a5981cd9a2b6ed21655cd7fc21cfe021e8ec7"
-dependencies = [
- "autocfg",
- "bytes 1.0.1",
- "libc",
- "memchr",
- "mio",
- "num_cpus",
- "pin-project-lite",
- "tokio-macros",
-]
-
-[[package]]
-name = "tokio-macros"
-version = "1.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c49e3df43841dafb86046472506755d8501c5615673955f6aa17181125d13c37"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "tokio-stream"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8864d706fdb3cc0843a49647ac892720dac98a6eeb818b77190592cf4994066"
-dependencies = [
- "futures-core",
- "pin-project-lite",
- "tokio",
-]
-
-[[package]]
-name = "tokio-tungstenite"
-version = "0.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e1a5f475f1b9d077ea1017ecbc60890fda8e54942d680ca0b1d2b47cfa2d861b"
-dependencies = [
- "futures-util",
- "log",
- "pin-project",
- "tokio",
- "tungstenite",
-]
-
-[[package]]
-name = "tokio-util"
-version = "0.6.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1caa0b0c8d94a049db56b5acf8cba99dc0623aab1b26d5b5f5e2d945846b3592"
-dependencies = [
- "bytes 1.0.1",
- "futures-core",
- "futures-sink",
- "log",
- "pin-project-lite",
- "tokio",
-]
-
-[[package]]
-name = "tower-service"
-version = "0.3.1"
+name = "time-macros"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
+checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792"
[[package]]
-name = "tracing"
-version = "0.1.26"
+name = "tiny_http"
+version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d"
+checksum = "e0d6ef4e10d23c1efb862eecad25c5054429a71958b4eeef85eb5e7170b477ca"
dependencies = [
- "cfg-if 1.0.0",
+ "ascii",
+ "chunked_transfer",
"log",
- "pin-project-lite",
- "tracing-core",
+ "time",
+ "url",
]
[[package]]
-name = "tracing-core"
-version = "0.1.18"
+name = "tinytemplate"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052"
+checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
dependencies = [
- "lazy_static",
+ "serde",
+ "serde_json",
]
[[package]]
-name = "try-lock"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642"
-
-[[package]]
-name = "tungstenite"
-version = "0.12.0"
+name = "tinyvec"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ada8297e8d70872fa9a551d93250a9f407beb9f37ef86494eb20012a2ff7c24"
+checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
dependencies = [
- "base64",
- "byteorder",
- "bytes 1.0.1",
- "http",
- "httparse",
- "input_buffer",
- "log",
- "rand 0.8.3",
- "sha-1 0.9.6",
- "url",
- "utf-8",
+ "tinyvec_macros",
]
[[package]]
-name = "twoway"
-version = "0.1.8"
+name = "tinyvec_macros"
+version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1"
-dependencies = [
- "memchr",
-]
+checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]]
name = "typenum"
-version = "1.13.0"
+version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06"
+checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987"
[[package]]
name = "ucd-trie"
@@ -1928,22 +1414,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
[[package]]
-name = "unicase"
-version = "2.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6"
-dependencies = [
- "version_check",
-]
-
-[[package]]
name = "unicode-bidi"
-version = "0.3.5"
+version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0"
-dependencies = [
- "matches",
-]
+checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
[[package]]
name = "unicode-normalization"
@@ -1955,22 +1429,16 @@ dependencies = [
]
[[package]]
-name = "unicode-segmentation"
-version = "1.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796"
-
-[[package]]
name = "unicode-width"
-version = "0.1.8"
+version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
+checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
[[package]]
name = "unicode-xid"
-version = "0.2.2"
+version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
+checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"
[[package]]
name = "url"
@@ -1985,28 +1453,16 @@ dependencies = [
]
[[package]]
-name = "utf-8"
-version = "0.7.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9"
-
-[[package]]
name = "uuid"
-version = "0.8.2"
+version = "1.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7"
+checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f"
[[package]]
name = "version_check"
-version = "0.9.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe"
-
-[[package]]
-name = "void"
-version = "1.0.2"
+version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
+checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "walkdir"
@@ -2020,51 +1476,6 @@ dependencies = [
]
[[package]]
-name = "want"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0"
-dependencies = [
- "log",
- "try-lock",
-]
-
-[[package]]
-name = "warp"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "332d47745e9a0c38636dbd454729b147d16bd1ed08ae67b3ab281c4506771054"
-dependencies = [
- "bytes 1.0.1",
- "futures",
- "headers",
- "http",
- "hyper",
- "log",
- "mime",
- "mime_guess",
- "multipart",
- "percent-encoding",
- "pin-project",
- "scoped-tls",
- "serde",
- "serde_json",
- "serde_urlencoded",
- "tokio",
- "tokio-stream",
- "tokio-tungstenite",
- "tokio-util",
- "tower-service",
- "tracing",
-]
-
-[[package]]
-name = "wasi"
-version = "0.9.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
-
-[[package]]
name = "wasi"
version = "0.10.2+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2072,19 +1483,19 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
[[package]]
name = "wasm-bindgen"
-version = "0.2.74"
+version = "0.2.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd"
+checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad"
dependencies = [
- "cfg-if 1.0.0",
+ "cfg-if",
"wasm-bindgen-macro",
]
[[package]]
name = "wasm-bindgen-backend"
-version = "0.2.74"
+version = "0.2.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900"
+checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4"
dependencies = [
"bumpalo",
"lazy_static",
@@ -2097,9 +1508,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.74"
+version = "0.2.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4"
+checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -2107,9 +1518,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.74"
+version = "0.2.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97"
+checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b"
dependencies = [
"proc-macro2",
"quote",
@@ -2120,15 +1531,15 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.74"
+version = "0.2.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f"
+checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744"
[[package]]
name = "web-sys"
-version = "0.3.51"
+version = "0.3.57"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582"
+checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -2136,10 +1547,12 @@ dependencies = [
[[package]]
name = "which"
-version = "3.1.1"
+version = "4.2.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724"
+checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae"
dependencies = [
+ "either",
+ "lazy_static",
"libc",
]
@@ -2173,3 +1586,46 @@ name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+
+[[package]]
+name = "windows-sys"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2"
+dependencies = [
+ "windows_aarch64_msvc",
+ "windows_i686_gnu",
+ "windows_i686_msvc",
+ "windows_x86_64_gnu",
+ "windows_x86_64_msvc",
+]
+
+[[package]]
+name = "windows_aarch64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47"
+
+[[package]]
+name = "windows_i686_gnu"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6"
+
+[[package]]
+name = "windows_i686_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024"
+
+[[package]]
+name = "windows_x86_64_gnu"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1"
+
+[[package]]
+name = "windows_x86_64_msvc"
+version = "0.36.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680"
diff --git a/vendor/handlebars/Cargo.toml b/vendor/handlebars/Cargo.toml
index f46e0bd13..f40384c26 100644
--- a/vendor/handlebars/Cargo.toml
+++ b/vendor/handlebars/Cargo.toml
@@ -3,29 +3,45 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
+edition = "2021"
+rust-version = "1.57"
name = "handlebars"
-version = "4.1.0"
+version = "4.3.3"
authors = ["Ning Sun <sunng@pm.me>"]
description = "Handlebars templating implemented in Rust."
homepage = "https://github.com/sunng87/handlebars-rust"
documentation = "https://docs.rs/crate/handlebars/"
readme = "README.md"
-keywords = ["handlebars", "templating", "web"]
-categories = ["template-engine", "web-programming"]
+keywords = [
+ "handlebars",
+ "templating",
+ "web",
+]
+categories = [
+ "template-engine",
+ "web-programming",
+]
license = "MIT"
repository = "https://github.com/sunng87/handlebars-rust"
+resolver = "2"
+
[package.metadata.docs.rs]
-features = ["dir_source", "script_helper"]
-rustdoc-args = ["--cfg", "docsrs"]
+features = [
+ "dir_source",
+ "script_helper",
+ "rust-embed",
+]
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
[lib]
name = "handlebars"
@@ -35,9 +51,14 @@ path = "src/lib.rs"
name = "handlebars-cli"
path = "src/cli.rs"
+[[example]]
+name = "script"
+required-features = ["script_helper"]
+
[[bench]]
name = "bench"
harness = false
+
[dependencies.log]
version = "0.4.0"
@@ -47,12 +68,16 @@ version = "2.1.0"
[dependencies.pest_derive]
version = "2.1.0"
-[dependencies.quick-error]
-version = "2.0"
-
[dependencies.rhai]
-version = "0.20"
-features = ["sync", "serde"]
+version = "1.6"
+features = [
+ "sync",
+ "serde",
+]
+optional = true
+
+[dependencies.rust-embed]
+version = "6.3.0"
optional = true
[dependencies.serde]
@@ -61,17 +86,18 @@ version = "1.0.0"
[dependencies.serde_json]
version = "1.0.39"
+[dependencies.thiserror]
+version = "1"
+
[dependencies.walkdir]
version = "2.2.3"
optional = true
+
[dev-dependencies.criterion]
version = "0.3"
[dev-dependencies.env_logger]
-version = "0.8"
-
-[dev-dependencies.maplit]
-version = "1.0.0"
+version = "0.9"
[dev-dependencies.serde_derive]
version = "1.0.75"
@@ -79,20 +105,29 @@ version = "1.0.75"
[dev-dependencies.tempfile]
version = "3.0.0"
-[dev-dependencies.tokio]
-version = "1"
-features = ["macros", "rt-multi-thread"]
+[dev-dependencies.time]
+version = "0.3.7"
+features = [
+ "serde",
+ "formatting",
+ "parsing",
+]
-[dev-dependencies.warp]
-version = "0.3"
+[dev-dependencies.tiny_http]
+version = "0.11"
[features]
default = []
dir_source = ["walkdir"]
no_logging = []
script_helper = ["rhai"]
+
[target."cfg(unix)".dev-dependencies.pprof]
-version = "0.3.13"
-features = ["flamegraph", "protobuf"]
+version = "0.10"
+features = [
+ "flamegraph",
+ "prost-codec",
+]
+
[badges.maintenance]
status = "actively-developed"
diff --git a/vendor/handlebars/README.md b/vendor/handlebars/README.md
index 4a9c41827..18d21abfb 100644
--- a/vendor/handlebars/README.md
+++ b/vendor/handlebars/README.md
@@ -4,16 +4,11 @@ handlebars-rust
[Handlebars templating language](https://handlebarsjs.com) implemented
in Rust and for Rust.
-Handlebars-rust is the template engine that renders the official Rust website
-[rust-lang.org](https://www.rust-lang.org), [its
-book](https://doc.rust-lang.org/book/).
-
-[![Build Status](https://travis-ci.org/sunng87/handlebars-rust.svg?branch=master)](https://travis-ci.org/sunng87/handlebars-rust)
-[![](https://meritbadge.herokuapp.com/handlebars)](https://crates.io/crates/handlebars)
+[![CI](https://github.com/sunng87/handlebars-rust/actions/workflows/main.yml/badge.svg)](https://github.com/sunng87/handlebars-rust/actions/workflows/main.yml)
+[![](https://img.shields.io/crates/v/handlebars)](https://crates.io/crates/handlebars)
[![](https://img.shields.io/crates/d/handlebars.svg)](https://crates.io/crates/handlebars)
[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
[![Docs](https://docs.rs/handlebars/badge.svg)](https://docs.rs/crate/handlebars/)
-![rustc](https://img.shields.io/badge/rustc-1.50+-lightgray.svg)
[![Donate](https://img.shields.io/badge/donate-liberapay-yellow.svg)](https://liberapay.com/Sunng/donate)
## Getting Started
@@ -55,6 +50,8 @@ Examples are provided in source tree to demo usage of various api.
to use custom helpers.
* [render_file](https://github.com/sunng87/handlebars-rust/blob/master/examples/render_file.rs)
similar to render, but render to file instead of string
+* [helper_macro](https://github.com/sunng87/handlebars-rust/blob/master/examples/helper_macro.rs)
+ demos usage of `handlebars_helper!` to simplify helper development
* [partials](https://github.com/sunng87/handlebars-rust/blob/master/examples/partials.rs)
template inheritance with handlebars
* [decorator](https://github.com/sunng87/handlebars-rust/blob/master/examples/decorator.rs)
@@ -71,7 +68,7 @@ Examples are provided in source tree to demo usage of various api.
## Minimum Rust Version Policy
Handlebars will track Rust nightly and stable channel. When dropping
-support for previous stable versions, I will bump **major** version
+support for previous stable versions, I will bump **patch** version
and clarify in CHANGELOG.
## Document
@@ -133,7 +130,7 @@ And using it in your template:
{{hex 16}}
```
-By default, handlebars-rust ships [additional helpers](https://github.com/sunng87/handlebars-rust/blob/master/src/helpers/helper_boolean.rs#L5)
+By default, handlebars-rust ships [additional helpers](https://github.com/sunng87/handlebars-rust/blob/master/src/helpers/helper_extras.rs#L6)
(compared with original js version)
that is useful when working with `if`.
@@ -146,7 +143,7 @@ moment, and can change in future.
Every time I look into a templating system, I will investigate its
support for [template
-inheritance](https://docs.djangoproject.com/en/1.9/ref/templates/language/#template-inheritance).
+inheritance](https://docs.djangoproject.com/en/3.2/ref/templates/language/#template-inheritance).
Template include is not sufficient for template reuse. In most cases
you will need a skeleton of page as parent (header, footer, etc.), and
@@ -164,6 +161,13 @@ loaded from files or directory. This can be handy for template development.
Handlebars 3.0 can be used in WebAssembly projects.
+#### Fully scriptable
+
+With [rhai](https://github.com/rhaiscript/rhai) script support, you
+can implement your own helper with the scripting language. Together
+with the template lanaguage itself, template development can be fully
+scriptable without changing rust code.
+
## Related Projects
### Web frameworks
@@ -174,7 +178,7 @@ Handlebars 3.0 can be used in WebAssembly projects.
example](https://github.com/seanmonstar/warp/blob/master/examples/handlebars_template.rs)
* Tower-web: [Built-in](https://github.com/carllerche/tower-web)
* Actix: [handlebars
- example](https://github.com/actix/examples/blob/master/template_engines/handlebars/src/main.rs)
+ example](https://github.com/actix/examples/blob/master/templating/handlebars/src/main.rs)
* Tide: [tide-handlebars](https://github.com/No9/tide-handlebars)
### Adopters
diff --git a/vendor/handlebars/examples/dev_mode.rs b/vendor/handlebars/examples/dev_mode.rs
index 99017474f..3256eed37 100644
--- a/vendor/handlebars/examples/dev_mode.rs
+++ b/vendor/handlebars/examples/dev_mode.rs
@@ -2,10 +2,9 @@ use std::sync::Arc;
use handlebars::Handlebars;
use serde_json::json;
-use warp::{self, Filter};
+use tiny_http::{Response, Server};
-#[tokio::main]
-async fn main() {
+fn handlebars() -> Handlebars<'static> {
let mut reg = Handlebars::new();
// enable dev mode for template reloading
reg.set_dev_mode(true);
@@ -14,14 +13,19 @@ async fn main() {
reg.register_template_file("tpl", "./examples/dev_mode/template.hbs")
.unwrap();
- let hbs = Arc::new(reg);
- let route = warp::get().map(move || {
+ reg
+}
+
+fn main() {
+ let hbs = Arc::new(handlebars());
+
+ let server = Server::http("127.0.0.1:3030").expect("Failed to start demo server.");
+ println!("Edit ./examples/dev_mode/template.hbs and request http://localhost:3030 to see the change on the fly.");
+
+ for req in server.incoming_requests() {
let result = hbs
.render("tpl", &json!({"model": "t14s", "brand": "Thinkpad"}))
.unwrap_or_else(|e| e.to_string());
- warp::reply::html(result)
- });
-
- println!("Edit ./examples/dev_mode/template.hbs and request http://localhost:3030 to see the change on the run.");
- warp::serve(route).run(([127, 0, 0, 1], 3030)).await;
+ req.respond(Response::from_string(result)).unwrap();
+ }
}
diff --git a/vendor/handlebars/examples/error.rs b/vendor/handlebars/examples/error.rs
index 3fb874e2b..ed0f7c423 100644
--- a/vendor/handlebars/examples/error.rs
+++ b/vendor/handlebars/examples/error.rs
@@ -3,11 +3,44 @@ extern crate handlebars;
#[macro_use]
extern crate serde_json;
-use std::error::Error;
+use std::error::Error as StdError;
-use handlebars::Handlebars;
+use handlebars::{Context, Handlebars, Helper, Output, RenderContext, RenderError};
+use thiserror::Error;
-fn main() -> Result<(), Box<dyn Error>> {
+#[derive(Debug, Error)]
+pub enum HelperError {
+ #[error("db error")]
+ DbError,
+ #[error("api error")]
+ ApiError,
+}
+
+/// A helper that raise error according to parameters
+pub fn error_helper(
+ h: &Helper,
+ _: &Handlebars,
+ _: &Context,
+ _: &mut RenderContext,
+ _: &mut dyn Output,
+) -> Result<(), RenderError> {
+ let param = h
+ .param(0)
+ .ok_or(RenderError::new("Param 0 is required for error helper."))?;
+ match param.value().as_str() {
+ Some("db") => Err(RenderError::from_error(
+ "helper error",
+ HelperError::DbError,
+ )),
+ Some("api") => Err(RenderError::from_error(
+ "helper error",
+ HelperError::ApiError,
+ )),
+ _ => Ok(()),
+ }
+}
+
+fn main() -> Result<(), Box<dyn StdError>> {
env_logger::init();
let mut handlebars = Handlebars::new();
@@ -36,5 +69,18 @@ fn main() -> Result<(), Box<dyn Error>> {
println!("{}", be1.source().unwrap());
println!("{:?}", be1.source().unwrap().source());
+ // process error generated in helper
+ handlebars.register_helper("err", Box::new(error_helper));
+ let e2 = handlebars
+ .render_template("{{err \"db\"}}", &json!({}))
+ .unwrap_err();
+ // down-casting the error to user defined type
+ match e2.source().and_then(|e| e.downcast_ref::<HelperError>()) {
+ Some(HelperError::DbError) => {
+ println!("Detected error from helper: db error",)
+ }
+ _ => {}
+ }
+
Ok(())
}
diff --git a/vendor/handlebars/examples/helper_macro.rs b/vendor/handlebars/examples/helper_macro.rs
new file mode 100644
index 000000000..dcc6ea31a
--- /dev/null
+++ b/vendor/handlebars/examples/helper_macro.rs
@@ -0,0 +1,63 @@
+use std::error::Error;
+
+use handlebars::{handlebars_helper, Handlebars, JsonRender};
+use serde_json::{json, Value};
+use time::format_description::parse;
+use time::OffsetDateTime;
+
+// define a helper using helper
+// a date format helper accept an `OffsetDateTime` as parameter
+handlebars_helper!(date: |dt: OffsetDateTime| dt.format(&parse("[year]-[month]-[day]").unwrap()).unwrap());
+
+// a helper returns number of provided parameters
+handlebars_helper!(nargs: |*args| args.len());
+
+// a helper joins all values, using both hash and parameters
+handlebars_helper!(join: |{sep:str=","}, *args|
+ args.iter().map(|a| a.render()).collect::<Vec<String>>().join(sep)
+);
+
+handlebars_helper!(isdefined: |v: Value| !v.is_null());
+
+// a helper provides format
+handlebars_helper!(date2: |dt: OffsetDateTime, {fmt:str = "[year]-[month]-[day]"}|
+ dt.format(&parse(fmt).unwrap()).unwrap()
+);
+
+fn main() -> Result<(), Box<dyn Error>> {
+ // create the handlebars registry
+ let mut handlebars = Handlebars::new();
+
+ handlebars.register_helper("date", Box::new(date));
+ handlebars.register_helper("date2", Box::new(date2));
+ handlebars.register_helper("nargs", Box::new(nargs));
+ handlebars.register_helper("join", Box::new(join));
+ handlebars.register_helper("isdefined", Box::new(isdefined));
+
+ let data = OffsetDateTime::now_utc();
+
+ println!("{}", handlebars.render_template("{{date this}}", &data)?);
+ println!("{}", handlebars.render_template("{{date2 this}}", &data)?);
+ println!(
+ "{}",
+ handlebars.render_template("{{date2 this fmt=\"[day]/[month]/[year]\"}}", &data)?
+ );
+
+ println!("{}", handlebars.render_template("{{nargs 1 2 3 4}}", &())?);
+
+ println!(
+ "{}",
+ handlebars.render_template("{{join 1 2 3 4 sep=\"|\" }}", &())?
+ );
+
+ println!(
+ "{}",
+ handlebars.render_template(
+ r#"{{isdefined a}} {{isdefined b}}
+{{#if (isdefined a)}}a{{/if}} {{#if (isdefined b)}}b{{/if}}"#,
+ &json!({"a": 1})
+ )?
+ );
+
+ Ok(())
+}
diff --git a/vendor/handlebars/examples/partials.rs b/vendor/handlebars/examples/partials.rs
index 80b20c2f7..017dd04b7 100644
--- a/vendor/handlebars/examples/partials.rs
+++ b/vendor/handlebars/examples/partials.rs
@@ -1,9 +1,8 @@
extern crate env_logger;
extern crate handlebars;
-#[macro_use]
-extern crate maplit;
use handlebars::Handlebars;
+use serde_json::json;
use std::error::Error;
fn main() -> Result<(), Box<dyn Error>> {
@@ -15,14 +14,14 @@ fn main() -> Result<(), Box<dyn Error>> {
handlebars.register_template_file("base0", "./examples/partials/base0.hbs")?;
handlebars.register_template_file("base1", "./examples/partials/base1.hbs")?;
- let data0 = btreemap! {
- "title".to_string() => "example 0".to_string(),
- "parent".to_string() => "base0".to_string()
- };
- let data1 = btreemap! {
- "title".to_string() => "example 1".to_string(),
- "parent".to_string() => "base1".to_string()
- };
+ let data0 = json!({
+ "title": "example 0",
+ "parent": "base0"
+ });
+ let data1 = json!({
+ "title": "example 1",
+ "parent": "base1"
+ });
println!("Page 0");
println!("{}", handlebars.render("template", &data0)?);
diff --git a/vendor/handlebars/examples/script.rs b/vendor/handlebars/examples/script.rs
index bedd426cd..de89fa482 100644
--- a/vendor/handlebars/examples/script.rs
+++ b/vendor/handlebars/examples/script.rs
@@ -5,7 +5,6 @@ use std::error::Error;
#[macro_use]
extern crate serde_json;
-#[cfg(feature = "script_helper")]
fn main() -> Result<(), Box<dyn Error>> {
let mut handlebars = Handlebars::new();
@@ -31,9 +30,3 @@ fn main() -> Result<(), Box<dyn Error>> {
println!("{}", handlebars.render("tpl", &data)?);
Ok(())
}
-
-#[cfg(not(feature = "script_helper"))]
-fn main() -> Result<(), Box<dyn Error>> {
- println!("Please enable feature flag script_helper for this example");
- Ok(())
-}
diff --git a/vendor/handlebars/release.toml b/vendor/handlebars/release.toml
index e0f365aa1..6ee7a8383 100644
--- a/vendor/handlebars/release.toml
+++ b/vendor/handlebars/release.toml
@@ -1,4 +1,6 @@
sign-commit = true
+sign-tag = true
+dev-version = true
pre-release-replacements = [
{file="CHANGELOG.md", search="Unreleased", replace="{{version}}", prerelease=false},
{file="CHANGELOG.md", search="ReleaseDate", replace="{{date}}", prerelease=false},
diff --git a/vendor/handlebars/src/context.rs b/vendor/handlebars/src/context.rs
index 10e15fd90..86f99ba4d 100644
--- a/vendor/handlebars/src/context.rs
+++ b/vendor/handlebars/src/context.rs
@@ -45,7 +45,7 @@ fn parse_json_visitor<'a, 'reg>(
for path_seg in relative_path {
match path_seg {
PathSeg::Named(the_path) => {
- if let Some((holder, base_path)) = get_in_block_params(&block_contexts, the_path) {
+ if let Some((holder, base_path)) = get_in_block_params(block_contexts, the_path) {
with_block_param = Some((holder, base_path));
}
break;
@@ -171,10 +171,7 @@ impl Context {
block_contexts: &VecDeque<BlockContext<'reg>>,
) -> Result<ScopedJson<'reg, 'rc>, RenderError> {
// always use absolute at the moment until we get base_value lifetime issue fixed
- let resolved_visitor = parse_json_visitor(&relative_path, block_contexts, true);
-
- // debug logging
- debug!("Accessing context value: {:?}", resolved_visitor);
+ let resolved_visitor = parse_json_visitor(relative_path, block_contexts, true);
match resolved_visitor {
ResolvedPath::AbsolutePath(paths) => {
@@ -223,6 +220,12 @@ impl Context {
}
}
+impl From<Json> for Context {
+ fn from(data: Json) -> Context {
+ Context { data }
+ }
+}
+
#[cfg(test)]
mod test {
use crate::block::{BlockContext, BlockParams};
@@ -359,9 +362,9 @@ mod test {
#[test]
fn test_key_name_with_this() {
- let m = btreemap! {
- "this_name".to_string() => "the_value".to_string()
- };
+ let m = json!({
+ "this_name": "the_value"
+ });
let ctx = Context::wraps(&m).unwrap();
assert_eq!(
navigate_from_root(&ctx, "this_name").unwrap().render(),
diff --git a/vendor/handlebars/src/decorators/mod.rs b/vendor/handlebars/src/decorators/mod.rs
index b8bad900f..bd2d23458 100644
--- a/vendor/handlebars/src/decorators/mod.rs
+++ b/vendor/handlebars/src/decorators/mod.rs
@@ -105,9 +105,9 @@ mod test {
.register_template_string("t0", "{{*foo}}".to_string())
.unwrap();
- let data = btreemap! {
- "hello".to_string() => "world".to_string()
- };
+ let data = json!({
+ "hello": "world"
+ });
assert!(handlebars.render("t0", &data).is_err());
@@ -132,9 +132,9 @@ mod test {
.register_template_string("t0", "{{hello}}{{*foo}}{{hello}}".to_string())
.unwrap();
- let data = btreemap! {
- "hello".to_string() => "world".to_string()
- };
+ let data = json!({
+ "hello": "world"
+ });
handlebars.register_decorator(
"foo",
diff --git a/vendor/handlebars/src/error.rs b/vendor/handlebars/src/error.rs
index f4721623f..618d68e4f 100644
--- a/vendor/handlebars/src/error.rs
+++ b/vendor/handlebars/src/error.rs
@@ -1,10 +1,13 @@
-use std::error::Error;
-use std::fmt;
+// use std::backtrace::Backtrace;
+use std::error::Error as StdError;
+use std::fmt::{self, Write};
use std::io::Error as IOError;
use std::num::ParseIntError;
use std::string::FromUtf8Error;
use serde_json::error::Error as SerdeError;
+use thiserror::Error;
+
#[cfg(feature = "dir_source")]
use walkdir::Error as WalkdirError;
@@ -12,14 +15,16 @@ use walkdir::Error as WalkdirError;
use rhai::{EvalAltResult, ParseError};
/// Error when rendering data on template.
-#[derive(Debug, Default)]
+#[derive(Debug, Default, Error)]
pub struct RenderError {
pub desc: String,
pub template_name: Option<String>,
pub line_no: Option<usize>,
pub column_no: Option<usize>,
- cause: Option<Box<dyn Error + Send + Sync + 'static>>,
+ #[source]
+ cause: Option<Box<dyn StdError + Send + Sync + 'static>>,
unimplemented: bool,
+ // backtrace: Backtrace,
}
impl fmt::Display for RenderError {
@@ -38,14 +43,6 @@ impl fmt::Display for RenderError {
}
}
-impl Error for RenderError {
- fn source(&self) -> Option<&(dyn Error + 'static)> {
- self.cause
- .as_ref()
- .map(|e| e.as_ref() as &(dyn Error + 'static))
- }
-}
-
impl From<IOError> for RenderError {
fn from(e: IOError) -> RenderError {
RenderError::from_error("Cannot generate output.", e)
@@ -115,7 +112,7 @@ impl RenderError {
pub fn from_error<E>(error_info: &str, cause: E) -> RenderError
where
- E: Error + Send + Sync + 'static,
+ E: StdError + Send + Sync + 'static,
{
let mut e = RenderError::new(error_info);
e.cause = Some(Box::new(cause));
@@ -129,39 +126,31 @@ impl RenderError {
}
}
-quick_error! {
/// Template parsing error
- #[derive(Debug)]
- pub enum TemplateErrorReason {
- MismatchingClosedHelper(open: String, closed: String) {
- display("helper {:?} was opened, but {:?} is closing",
- open, closed)
- }
- MismatchingClosedDecorator(open: String, closed: String) {
- display("decorator {:?} was opened, but {:?} is closing",
- open, closed)
- }
- InvalidSyntax {
- display("invalid handlebars syntax.")
- }
- InvalidParam (param: String) {
- display("invalid parameter {:?}", param)
- }
- NestedSubexpression {
- display("nested subexpression is not supported")
- }
- IoError(err: IOError, name: String) {
- display("Template \"{}\": {}", name, err)
- }
- #[cfg(feature = "dir_source")]
- WalkdirError(err: WalkdirError) {
- display("Walk dir error: {}", err)
- }
- }
+#[derive(Debug, Error)]
+pub enum TemplateErrorReason {
+ #[error("helper {0:?} was opened, but {1:?} is closing")]
+ MismatchingClosedHelper(String, String),
+ #[error("decorator {0:?} was opened, but {1:?} is closing")]
+ MismatchingClosedDecorator(String, String),
+ #[error("invalid handlebars syntax.")]
+ InvalidSyntax,
+ #[error("invalid parameter {0:?}")]
+ InvalidParam(String),
+ #[error("nested subexpression is not supported")]
+ NestedSubexpression,
+ #[error("Template \"{1}\": {0}")]
+ IoError(IOError, String),
+ #[cfg(feature = "dir_source")]
+ #[error("Walk dir error: {err}")]
+ WalkdirError {
+ #[from]
+ err: WalkdirError,
+ },
}
/// Error on parsing template.
-#[derive(Debug)]
+#[derive(Debug, Error)]
pub struct TemplateError {
pub reason: TemplateErrorReason,
pub template_name: Option<String>,
@@ -194,8 +183,6 @@ impl TemplateError {
}
}
-impl Error for TemplateError {}
-
impl From<(IOError, String)> for TemplateError {
fn from(err_info: (IOError, String)) -> TemplateError {
let (e, name) = err_info;
@@ -206,7 +193,7 @@ impl From<(IOError, String)> for TemplateError {
#[cfg(feature = "dir_source")]
impl From<WalkdirError> for TemplateError {
fn from(e: WalkdirError) -> TemplateError {
- TemplateError::of(TemplateErrorReason::WalkdirError(e))
+ TemplateError::of(TemplateErrorReason::from(e))
}
}
@@ -218,7 +205,7 @@ fn template_segment(template_str: &str, line: usize, col: usize) -> String {
let mut buf = String::new();
for (line_count, line_content) in template_str.lines().enumerate() {
if line_count >= line_start && line_count <= line_end {
- buf.push_str(&format!("{:4} | {}\n", line_count, line_content));
+ let _ = writeln!(&mut buf, "{:4} | {}", line_count, line_content);
if line_count == line - 1 {
buf.push_str(" |");
for c in 0..line_content.len() {
@@ -257,16 +244,11 @@ impl fmt::Display for TemplateError {
}
#[cfg(feature = "script_helper")]
-quick_error! {
- #[derive(Debug)]
- pub enum ScriptError {
- IoError(err: IOError) {
- from()
- source(err)
- }
- ParseError(err: ParseError) {
- from()
- source(err)
- }
- }
+#[derive(Debug, Error)]
+pub enum ScriptError {
+ #[error(transparent)]
+ IoError(#[from] IOError),
+
+ #[error(transparent)]
+ ParseError(#[from] ParseError),
}
diff --git a/vendor/handlebars/src/grammar.pest b/vendor/handlebars/src/grammar.pest
index 250d9d213..ac6776ee2 100644
--- a/vendor/handlebars/src/grammar.pest
+++ b/vendor/handlebars/src/grammar.pest
@@ -14,14 +14,20 @@ literal = { string_literal |
null_literal = @{ "null" ~ !symbol_char }
boolean_literal = @{ ("true"|"false") ~ !symbol_char }
-number_literal = @{ "-"? ~ ASCII_DIGIT+ ~ "."? ~ ASCII_DIGIT* ~ ("E" ~ "-"? ~ ASCII_DIGIT+)? }
-json_char = {
+number_literal = @{ "-"? ~ ASCII_DIGIT+ ~ "."? ~ ASCII_DIGIT* ~ ("E" ~ "-"? ~ ASCII_DIGIT+)? ~ !symbol_char }
+json_char_double_quote = {
!("\"" | "\\") ~ ANY
| "\\" ~ ("\"" | "\\" | "/" | "b" | "f" | "n" | "r" | "t")
| "\\" ~ ("u" ~ ASCII_HEX_DIGIT{4})
}
-string_inner = @{ json_char* }
-string_literal = ${ "\"" ~ string_inner ~ "\"" }
+json_char_single_quote = {
+ !("'" | "\\") ~ ANY
+ | "\\" ~ ("'" | "\\" | "/" | "b" | "f" | "n" | "r" | "t")
+ | "\\" ~ ("u" ~ ASCII_HEX_DIGIT{4})
+}
+string_inner_double_quote = @{ json_char_double_quote* }
+string_inner_single_quote = @{ json_char_single_quote* }
+string_literal = ${ ("\"" ~ string_inner_double_quote ~ "\"") | ("'" ~ string_inner_single_quote ~ "'") }
array_literal = { "[" ~ literal? ~ ("," ~ literal)* ~ "]" }
object_literal = { "{" ~ (string_literal ~ ":" ~ literal)?
~ ("," ~ string_literal ~ ":" ~ literal)* ~ "}" }
@@ -50,12 +56,17 @@ pro_whitespace_omitter = { "~" }
expression = { !invert_tag ~ "{{" ~ pre_whitespace_omitter? ~
((identifier ~ (hash|param)+) | name )
~ pro_whitespace_omitter? ~ "}}" }
-html_expression_triple_bracket = _{ "{{{" ~ pre_whitespace_omitter? ~
- ((identifier ~ (hash|param)+) | name ) ~
- pro_whitespace_omitter? ~ "}}}" }
+html_expression_triple_bracket_legacy = _{ "{{{" ~ pre_whitespace_omitter? ~
+ ((identifier ~ (hash|param)+) | name ) ~
+ pro_whitespace_omitter? ~ "}}}" }
+html_expression_triple_bracket = _{ "{{" ~ pre_whitespace_omitter? ~ "{" ~
+ ((identifier ~ (hash|param)+) | name ) ~
+ "}" ~ pro_whitespace_omitter? ~ "}}" }
+
amp_expression = _{ "{{" ~ pre_whitespace_omitter? ~ "&" ~ name ~
pro_whitespace_omitter? ~ "}}" }
-html_expression = { html_expression_triple_bracket | amp_expression }
+html_expression = { (html_expression_triple_bracket_legacy | html_expression_triple_bracket)
+ | amp_expression }
decorator_expression = { "{{" ~ pre_whitespace_omitter? ~ "*" ~ exp_line ~
pro_whitespace_omitter? ~ "}}" }
diff --git a/vendor/handlebars/src/grammar.rs b/vendor/handlebars/src/grammar.rs
index 1fd292ce1..6e61cd4e4 100644
--- a/vendor/handlebars/src/grammar.rs
+++ b/vendor/handlebars/src/grammar.rs
@@ -4,26 +4,6 @@
#[grammar = "grammar.pest"]
pub struct HandlebarsParser;
-#[inline]
-pub(crate) fn whitespace_matcher(c: char) -> bool {
- c == ' ' || c == '\t'
-}
-
-#[inline]
-pub(crate) fn newline_matcher(c: char) -> bool {
- c == '\n' || c == '\r'
-}
-
-pub(crate) fn ends_with_empty_line(text: &str) -> bool {
- text.trim_end_matches(whitespace_matcher)
- .ends_with(newline_matcher)
-}
-
-pub(crate) fn starts_with_empty_line(text: &str) -> bool {
- text.trim_start_matches(whitespace_matcher)
- .starts_with(newline_matcher)
-}
-
#[cfg(test)]
mod test {
use super::{HandlebarsParser, Rule};
@@ -191,6 +171,7 @@ mod test {
"{{exp 1}}",
"{{exp \"literal\"}}",
"{{exp \"literal with space\"}}",
+ "{{exp 'literal with space'}}",
r#"{{exp "literal with escape \\\\"}}"#,
"{{exp ref}}",
"{{exp (sub)}}",
@@ -199,6 +180,8 @@ mod test {
"{{exp {}}}",
"{{exp key=1}}",
"{{exp key=ref}}",
+ "{{exp key='literal with space'}}",
+ "{{exp key=\"literal with space\"}}",
"{{exp key=(sub)}}",
"{{exp key=(sub 0)}}",
"{{exp key=(sub 0 key=1)}}",
@@ -225,6 +208,12 @@ mod test {
"{{&html}}",
"{{{html 1}}}",
"{{{html p=true}}}",
+ "{{{~ html}}}",
+ "{{{html ~}}}",
+ "{{{~ html ~}}}",
+ "{{~{ html }~}}",
+ "{{~{ html }}}",
+ "{{{ html }~}}",
];
for i in s.iter() {
assert_rule!(Rule::html_expression, i);
diff --git a/vendor/handlebars/src/helpers/helper_each.rs b/vendor/handlebars/src/helpers/helper_each.rs
index 4b76e7ce7..2be28dc9c 100644
--- a/vendor/handlebars/src/helpers/helper_each.rs
+++ b/vendor/handlebars/src/helpers/helper_each.rs
@@ -18,7 +18,7 @@ fn update_block_context<'reg>(
is_first: bool,
value: &Json,
) {
- if let Some(ref p) = base_path {
+ if let Some(p) = base_path {
if is_first {
*block.base_path_mut() = copy_on_push_vec(p, relative_path);
} else if let Some(ptr) = block.base_path_mut().last_mut() {
@@ -83,7 +83,7 @@ impl HelperDef for EachHelper {
Json::Array(ref list)
if !list.is_empty() || (list.is_empty() && h.inverse().is_none()) =>
{
- let block_context = create_block(&value);
+ let block_context = create_block(value);
rc.push_block(block_context);
let len = list.len();
@@ -100,8 +100,8 @@ impl HelperDef for EachHelper {
block.set_local_var("last", to_json(is_last));
block.set_local_var("index", index.clone());
- update_block_context(block, array_path, i.to_string(), is_first, &v);
- set_block_param(block, h, array_path, &index, &v)?;
+ update_block_context(block, array_path, i.to_string(), is_first, v);
+ set_block_param(block, h, array_path, &index, v)?;
}
t.render(r, ctx, rc, out)?;
@@ -113,28 +113,28 @@ impl HelperDef for EachHelper {
Json::Object(ref obj)
if !obj.is_empty() || (obj.is_empty() && h.inverse().is_none()) =>
{
- let block_context = create_block(&value);
+ let block_context = create_block(value);
rc.push_block(block_context);
- let mut is_first = true;
+ let len = obj.len();
+
let obj_path = value.context_path();
- for (k, v) in obj.iter() {
+ for (i, (k, v)) in obj.iter().enumerate() {
if let Some(ref mut block) = rc.block_mut() {
- let key = to_json(k);
+ let is_first = i == 0usize;
+ let is_last = i == len - 1;
+ let key = to_json(k);
block.set_local_var("first", to_json(is_first));
+ block.set_local_var("last", to_json(is_last));
block.set_local_var("key", key.clone());
- update_block_context(block, obj_path, k.to_string(), is_first, &v);
- set_block_param(block, h, obj_path, &key, &v)?;
+ update_block_context(block, obj_path, k.to_string(), is_first, v);
+ set_block_param(block, h, obj_path, &key, v)?;
}
t.render(r, ctx, rc, out)?;
-
- if is_first {
- is_first = false;
- }
}
rc.pop_block();
@@ -159,7 +159,6 @@ pub static EACH_HELPER: EachHelper = EachHelper;
#[cfg(test)]
mod test {
- use crate::json::value::to_json;
use crate::registry::Registry;
use serde_json::value::Value as Json;
use std::collections::BTreeMap;
@@ -188,7 +187,10 @@ mod test {
)
.is_ok());
assert!(handlebars
- .register_template_string("t1", "{{#each this}}{{@first}}|{{@key}}:{{this}}|{{/each}}")
+ .register_template_string(
+ "t1",
+ "{{#each this}}{{@first}}|{{@last}}|{{@key}}:{{this}}|{{/each}}"
+ )
.is_ok());
let r0 = handlebars.render("t0", &vec![1u16, 2u16, 3u16]);
@@ -199,9 +201,13 @@ mod test {
let mut m: BTreeMap<String, u16> = BTreeMap::new();
m.insert("ftp".to_string(), 21);
+ m.insert("gopher".to_string(), 70);
m.insert("http".to_string(), 80);
let r1 = handlebars.render("t1", &m);
- assert_eq!(r1.ok().unwrap(), "true|ftp:21|false|http:80|".to_string());
+ assert_eq!(
+ r1.ok().unwrap(),
+ "true|false|ftp:21|false|false|gopher:70|false|true|http:80|".to_string()
+ );
}
#[test]
@@ -303,15 +309,15 @@ mod test {
assert!(handlebars
.register_template_string("t0", "{{#each a}}1{{else}}empty{{/each}}")
.is_ok());
- let m1 = btreemap! {
- "a".to_string() => Vec::<String>::new(),
- };
+ let m1 = json!({
+ "a": []
+ });
let r0 = handlebars.render("t0", &m1).unwrap();
assert_eq!(r0, "empty");
- let m2 = btreemap! {
- "b".to_string() => Vec::<String>::new()
- };
+ let m2 = json!({
+ "b": []
+ });
let r1 = handlebars.render("t0", &m2).unwrap();
assert_eq!(r1, "empty");
}
@@ -322,9 +328,9 @@ mod test {
assert!(handlebars
.register_template_string("t0", "{{#each a as |i|}}{{i}}{{/each}}")
.is_ok());
- let m1 = btreemap! {
- "a".to_string() => vec![1,2,3,4,5]
- };
+ let m1 = json!({
+ "a": [1,2,3,4,5]
+ });
let r0 = handlebars.render("t0", &m1).unwrap();
assert_eq!(r0, "12345");
}
@@ -337,10 +343,10 @@ mod test {
{{/each}}";
assert!(handlebars.register_template_string("t0", template).is_ok());
- let m = btreemap! {
- "ftp".to_string() => 21,
- "http".to_string() => 80
- };
+ let m = json!({
+ "ftp": 21,
+ "http": 80
+ });
let r0 = handlebars.render("t0", &m);
assert_eq!(r0.ok().unwrap(), "ftp:21|http:80|".to_string());
}
@@ -354,10 +360,10 @@ mod test {
assert!(handlebars.register_template_string("t0", template).is_ok());
- let m = btreemap! {
- "ftp".to_string() => 21,
- "http".to_string() => 80
- };
+ let m = json!({
+ "ftp": 21,
+ "http": 80
+ });
let r0 = handlebars.render("t0", &m);
assert_eq!(r0.ok().unwrap(), "ftp:21|http:80|".to_string());
}
@@ -371,12 +377,12 @@ mod test {
)
.is_ok());
- let data = btreemap! {
- "a".to_string() => to_json(&btreemap! {
- "b".to_string() => vec![btreemap!{"c".to_string() => vec![1]}]
- }),
- "d".to_string() => to_json(&1)
- };
+ let data = json!({
+ "a": {
+ "b": [{"c": [1]}]
+ },
+ "d": 1
+ });
let r0 = handlebars.render("t0", &data);
assert_eq!(r0.ok().unwrap(), "1".to_string());
@@ -389,10 +395,10 @@ mod test {
{{#if @first}}template<{{/if}}{{this}}{{#if @last}}>{{else}},{{/if}}\
{{/each}}{{/each}}";
assert!(handlebars.register_template_string("t0", template).is_ok());
- let data = btreemap! {
- "typearg".to_string() => vec!["T".to_string()],
- "variant".to_string() => vec!["1".to_string(), "2".to_string()]
- };
+ let data = json!({
+ "typearg": ["T"],
+ "variant": ["1", "2"]
+ });
let r0 = handlebars.render("t0", &data);
assert_eq!(r0.ok().unwrap(), "template<T>template<T>".to_string());
}
diff --git a/vendor/handlebars/src/helpers/helper_if.rs b/vendor/handlebars/src/helpers/helper_if.rs
index 5a6e42fc0..342c74567 100644
--- a/vendor/handlebars/src/helpers/helper_if.rs
+++ b/vendor/handlebars/src/helpers/helper_if.rs
@@ -36,7 +36,7 @@ impl HelperDef for IfHelper {
let tmpl = if value { h.template() } else { h.inverse() };
match tmpl {
- Some(ref t) => t.render(r, ctx, rc, out),
+ Some(t) => t.render(r, ctx, rc, out),
None => Ok(()),
}
}
@@ -137,6 +137,12 @@ mod test {
);
assert_eq!(
+ "yes\r\n",
+ hbs.render_template("{{#if a}}\r\nyes\r\n{{/if}}\r\n", &json!({"a": true}))
+ .unwrap()
+ );
+
+ assert_eq!(
"x\ny",
hbs.render_template("{{#if a}}x{{/if}}\ny", &json!({"a": true}))
.unwrap()
@@ -147,5 +153,37 @@ mod test {
hbs.render_template("{{#if a}}\nx\n{{^}}\ny\n{{/if}}\nz", &json!({"a": false}))
.unwrap()
);
+
+ assert_eq!(
+ r#"yes
+ foo
+ bar
+ baz"#,
+ hbs.render_template(
+ r#"yes
+ {{#if true}}
+ foo
+ bar
+ {{/if}}
+ baz"#,
+ &json!({})
+ )
+ .unwrap()
+ );
+
+ assert_eq!(
+ r#" foo
+ bar
+ baz"#,
+ hbs.render_template(
+ r#" {{#if true}}
+ foo
+ bar
+ {{/if}}
+ baz"#,
+ &json!({})
+ )
+ .unwrap()
+ );
}
}
diff --git a/vendor/handlebars/src/helpers/helper_lookup.rs b/vendor/handlebars/src/helpers/helper_lookup.rs
index bf887debe..8662d55a0 100644
--- a/vendor/handlebars/src/helpers/helper_lookup.rs
+++ b/vendor/handlebars/src/helpers/helper_lookup.rs
@@ -52,8 +52,6 @@ pub static LOOKUP_HELPER: LookupHelper = LookupHelper;
mod test {
use crate::registry::Registry;
- use std::collections::BTreeMap;
-
#[test]
fn test_lookup() {
let mut handlebars = Registry::new();
@@ -67,13 +65,11 @@ mod test {
.register_template_string("t2", "{{lookup kk \"a\"}}")
.is_ok());
- let mut m: BTreeMap<String, Vec<u16>> = BTreeMap::new();
- m.insert("v1".to_string(), vec![1u16, 2u16, 3u16]);
- m.insert("v2".to_string(), vec![9u16, 8u16, 7u16]);
+ let m = json!({"v1": [1,2,3], "v2": [9,8,7]});
- let m2 = btreemap! {
- "kk".to_string() => btreemap!{"a".to_string() => "world".to_string()}
- };
+ let m2 = json!({
+ "kk": {"a": "world"}
+ });
let r0 = handlebars.render("t0", &m);
assert_eq!(r0.ok().unwrap(), "987".to_string());
diff --git a/vendor/handlebars/src/helpers/helper_with.rs b/vendor/handlebars/src/helpers/helper_with.rs
index c4d31cd0e..2ea6bd4f6 100644
--- a/vendor/handlebars/src/helpers/helper_with.rs
+++ b/vendor/handlebars/src/helpers/helper_with.rs
@@ -25,7 +25,7 @@ impl HelperDef for WithHelper {
.ok_or_else(|| RenderError::new("Param not found for helper \"with\""))?;
if param.value().is_truthy(false) {
- let mut block = create_block(&param);
+ let mut block = create_block(param);
if let Some(block_param) = h.block_param() {
let mut params = BlockParams::new();
@@ -60,7 +60,6 @@ pub static WITH_HELPER: WithHelper = WithHelper;
#[cfg(test)]
mod test {
- use crate::json::value::to_json;
use crate::registry::Registry;
#[derive(Serialize)]
@@ -211,12 +210,12 @@ mod test {
assert!(handlebars
.register_template_string("t0", "{{#with a}}{{#with b}}{{../../d}}{{/with}}{{/with}}")
.is_ok());
- let data = btreemap! {
- "a".to_string() => to_json(&btreemap! {
- "b".to_string() => vec![btreemap!{"c".to_string() => vec![1]}]
- }),
- "d".to_string() => to_json(1)
- };
+ let data = json!({
+ "a": {
+ "b": [{"c": [1]}]
+ },
+ "d": 1
+ });
let r0 = handlebars.render("t0", &data);
assert_eq!(r0.ok().unwrap(), "1".to_string());
diff --git a/vendor/handlebars/src/helpers/mod.rs b/vendor/handlebars/src/helpers/mod.rs
index bfd50c1f4..ff5fa2495 100644
--- a/vendor/handlebars/src/helpers/mod.rs
+++ b/vendor/handlebars/src/helpers/mod.rs
@@ -32,7 +32,8 @@ pub type HelperResult = Result<(), RenderError>;
/// ```
/// use handlebars::*;
///
-/// fn upper(h: &Helper<'_, '_>, _: &Handlebars<'_>, _: &Context, rc: &mut RenderContext<'_, '_>, out: &mut Output)
+/// fn upper(h: &Helper<'_, '_>, _: &Handlebars<'_>, _: &Context, rc:
+/// &mut RenderContext<'_, '_>, out: &mut dyn Output)
/// -> HelperResult {
/// // get parameter from helper or throw an error
/// let param = h.param(0).and_then(|v| v.value().as_str()).unwrap_or("");
diff --git a/vendor/handlebars/src/helpers/scripting.rs b/vendor/handlebars/src/helpers/scripting.rs
index cec3b9763..abd567ae9 100644
--- a/vendor/handlebars/src/helpers/scripting.rs
+++ b/vendor/handlebars/src/helpers/scripting.rs
@@ -98,10 +98,16 @@ mod test {
let ast = engine.compile(&script).unwrap();
let params = vec![PathAndJson::new(None, ScopedJson::Derived(json!(true)))];
- let hash = btreemap! {
- "me" => PathAndJson::new(None, ScopedJson::Derived(json!("no"))),
- "you" => PathAndJson::new(None, ScopedJson::Derived(json!("yes"))),
- };
+
+ let mut hash = BTreeMap::new();
+ hash.insert(
+ "me",
+ PathAndJson::new(None, ScopedJson::Derived(json!("no"))),
+ );
+ hash.insert(
+ "you",
+ PathAndJson::new(None, ScopedJson::Derived(json!("yes"))),
+ );
let result = call_script_helper(&params, &hash, &engine, &ast)
.unwrap()
diff --git a/vendor/handlebars/src/json/path.rs b/vendor/handlebars/src/json/path.rs
index 8270371b2..17a7a91ee 100644
--- a/vendor/handlebars/src/json/path.rs
+++ b/vendor/handlebars/src/json/path.rs
@@ -6,7 +6,7 @@ use pest::Parser;
use crate::error::RenderError;
use crate::grammar::{HandlebarsParser, Rule};
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
pub enum PathSeg {
Named(String),
Ruled(Rule),
@@ -16,7 +16,7 @@ pub enum PathSeg {
///
/// It can be either a local variable like `@first`, `../@index`,
/// or a normal relative path like `a/b/c`.
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
pub enum Path {
Relative((Vec<PathSeg>, String)),
Local((usize, String, String)),
diff --git a/vendor/handlebars/src/lib.rs b/vendor/handlebars/src/lib.rs
index 7e0aac830..1f9ab1ed3 100644
--- a/vendor/handlebars/src/lib.rs
+++ b/vendor/handlebars/src/lib.rs
@@ -1,4 +1,4 @@
-#![doc(html_root_url = "https://docs.rs/handlebars/4.1.0")]
+#![doc(html_root_url = "https://docs.rs/handlebars/4.3.3")]
#![cfg_attr(docsrs, feature(doc_cfg))]
//! # Handlebars
//!
@@ -73,7 +73,7 @@
//! Every time I look into a templating system, I will investigate its
//! support for [template inheritance][t].
//!
-//! [t]: https://docs.djangoproject.com/en/1.9/ref/templates/language/#template-inheritance
+//! [t]: https://docs.djangoproject.com/en/3.2/ref/templates/language/#template-inheritance
//!
//! Template include is not sufficient for template reuse. In most cases
//! you will need a skeleton of page as parent (header, footer, etc.), and
@@ -155,7 +155,7 @@
//! use handlebars::Handlebars;
//! use std::collections::BTreeMap;
//!
-//! # fn main() -> Result<(), Box<Error>> {
+//! # fn main() -> Result<(), Box<dyn Error>> {
//! let mut handlebars = Handlebars::new();
//! let source = "hello {{world}}";
//!
@@ -166,6 +166,14 @@
//! # }
//! ```
//!
+//! #### Additional features for loading template from
+//!
+//! * Feature `dir_source` enables template loading
+//! `register_templates_directory` from given directory.
+//! * Feature `rust-embed` enables template loading
+//! `register_embed_templates` from embedded resources in rust struct
+//! generated with `RustEmbed`.
+//!
//! ### Rendering Something
//!
//! Since handlebars is originally based on JavaScript type system. It supports dynamic features like duck-typing, truthy/falsey values. But for a static language like Rust, this is a little difficult. As a solution, we are using the `serde_json::value::Value` internally for data rendering.
@@ -188,7 +196,7 @@
//! age: i16,
//! }
//!
-//! # fn main() -> Result<(), Box<Error>> {
+//! # fn main() -> Result<(), Box<dyn Error>> {
//! let source = "Hello, {{name}}";
//!
//! let mut handlebars = Handlebars::new();
@@ -367,13 +375,8 @@
#[macro_use]
extern crate log;
-#[cfg(test)]
-#[macro_use]
-extern crate maplit;
#[macro_use]
extern crate pest_derive;
-#[macro_use]
-extern crate quick_error;
#[cfg(test)]
#[macro_use]
extern crate serde_derive;
diff --git a/vendor/handlebars/src/macros.rs b/vendor/handlebars/src/macros.rs
index 14cb0152c..bd1eab0bb 100644
--- a/vendor/handlebars/src/macros.rs
+++ b/vendor/handlebars/src/macros.rs
@@ -38,7 +38,7 @@
#[macro_export]
macro_rules! handlebars_helper {
- ($struct_name:ident: |$($name:ident: $tpe:tt),*
+ ($struct_name:ident: |$($name:ident: $tpe:tt$(<$($gen:ty),+>)?),*
$($(,)?{$($hash_name:ident: $hash_tpe:tt=$dft_val:literal),*})?
$($(,)?*$args:ident)?
$($(,)?**$kwargs:ident)?|
@@ -71,11 +71,11 @@ macro_rules! handlebars_helper {
stringify!($struct_name), stringify!($name),
)))
.and_then(|x|
- handlebars_helper!(@as_json_value x, $tpe)
+ handlebars_helper!(@as_json_value x, $tpe$(<$($gen),+>)?)
.ok_or_else(|| $crate::RenderError::new(&format!(
"`{}` helper: Couldn't convert parameter {} to type `{}`. \
It's {:?} as JSON. Got these params: {:?}",
- stringify!($struct_name), stringify!($name), stringify!($tpe),
+ stringify!($struct_name), stringify!($name), stringify!($tpe$(<$($gen),+>)?),
x, h.params(),
)))
)?;
@@ -117,6 +117,7 @@ macro_rules! handlebars_helper {
(@as_json_value $x:ident, bool) => { $x.as_bool() };
(@as_json_value $x:ident, null) => { $x.as_null() };
(@as_json_value $x:ident, Json) => { Some($x) };
+ (@as_json_value $x:ident, $tpe:tt$(<$($gen:ty),+>)?) => { serde_json::from_value::<$tpe$(<$($gen),+>)?>($x.clone()).ok() };
}
#[cfg(feature = "no_logging")]
diff --git a/vendor/handlebars/src/output.rs b/vendor/handlebars/src/output.rs
index f1c5865a5..67e62b849 100644
--- a/vendor/handlebars/src/output.rs
+++ b/vendor/handlebars/src/output.rs
@@ -46,3 +46,9 @@ impl StringOutput {
String::from_utf8(self.buf)
}
}
+
+impl Default for StringOutput {
+ fn default() -> Self {
+ StringOutput::new()
+ }
+}
diff --git a/vendor/handlebars/src/partial.rs b/vendor/handlebars/src/partial.rs
index a472d5d14..bcf9803fd 100644
--- a/vendor/handlebars/src/partial.rs
+++ b/vendor/handlebars/src/partial.rs
@@ -20,7 +20,7 @@ fn find_partial<'reg: 'rc, 'rc: 'a, 'a>(
d: &Decorator<'reg, 'rc>,
name: &str,
) -> Result<Option<Cow<'a, Template>>, RenderError> {
- if let Some(ref partial) = rc.get_partial(name) {
+ if let Some(partial) = rc.get_partial(name) {
return Ok(Some(Cow::Borrowed(partial)));
}
@@ -52,29 +52,38 @@ pub fn expand_partial<'reg: 'rc, 'rc>(
return Err(RenderError::new("Cannot include self in >"));
}
- // if tname == PARTIAL_BLOCK
let partial = find_partial(rc, r, d, tname)?;
if let Some(t) = partial {
// clone to avoid lifetime issue
// FIXME refactor this to avoid
let mut local_rc = rc.clone();
+
+ // if tname == PARTIAL_BLOCK
let is_partial_block = tname == PARTIAL_BLOCK;
+ // add partial block depth there are consecutive partial
+ // blocks in the stack.
if is_partial_block {
local_rc.inc_partial_block_depth();
+ } else {
+ // depth cannot be lower than 0, which is guaranted in the
+ // `dec_partial_block_depth` method
+ local_rc.dec_partial_block_depth();
}
+ let mut block = None;
let mut block_created = false;
- if let Some(ref base_path) = d.param(0).and_then(|p| p.context_path()) {
+ // create context if param given
+ if let Some(base_path) = d.param(0).and_then(|p| p.context_path()) {
// path given, update base_path
- let mut block = BlockContext::new();
- *block.base_path_mut() = base_path.to_vec();
- block_created = true;
- local_rc.push_block(block);
- } else if !d.hash().is_empty() {
- let mut block = BlockContext::new();
+ let mut block_inner = BlockContext::new();
+ *block_inner.base_path_mut() = base_path.to_vec();
+ block = Some(block_inner);
+ }
+
+ if !d.hash().is_empty() {
// hash given, update base_value
let hash_ctx = d
.hash()
@@ -86,9 +95,25 @@ pub fn expand_partial<'reg: 'rc, 'rc>(
local_rc.evaluate2(ctx, &Path::current())?.as_json(),
&hash_ctx,
);
- block.set_base_value(merged_context);
+
+ if let Some(ref mut block_inner) = block {
+ block_inner.set_base_value(merged_context);
+ } else {
+ let mut block_inner = BlockContext::new();
+ block_inner.set_base_value(merged_context);
+ block = Some(block_inner);
+ }
+ }
+
+ if let Some(block_inner) = block {
+ // because block is moved here, we need another bool variable to track
+ // its status for later cleanup
block_created = true;
- local_rc.push_block(block);
+ // clear blocks to prevent block params from parent
+ // template to be leaked into partials
+ // see `test_partial_context_issue_495` for the case.
+ local_rc.clear_blocks();
+ local_rc.push_block(block_inner);
}
// @partial-block
@@ -96,6 +121,9 @@ pub fn expand_partial<'reg: 'rc, 'rc>(
local_rc.push_partial_block(pb);
}
+ // indent
+ local_rc.set_indent_string(d.indent());
+
let result = t.render(r, ctx, &mut local_rc, out);
// cleanup
@@ -103,10 +131,6 @@ pub fn expand_partial<'reg: 'rc, 'rc>(
local_rc.pop_block();
}
- if is_partial_block {
- local_rc.dec_partial_block_depth();
- }
-
if d.template().is_some() {
local_rc.pop_partial_block();
}
@@ -174,10 +198,7 @@ mod test {
"include navbar".to_string()
);
assert_eq!(
- handlebars
- .render("t6", &btreemap! {"a".to_string() => "2".to_string()})
- .ok()
- .unwrap(),
+ handlebars.render("t6", &json!({"a": "2"})).ok().unwrap(),
"2".to_string()
);
assert_eq!(
@@ -258,6 +279,19 @@ mod test {
}
#[test]
+ fn teset_partial_context_with_both_hash_and_param() {
+ let mut hbs = Registry::new();
+ hbs.register_template_string("one", "This is a test. {{> two this name=\"fred\" }}")
+ .unwrap();
+ hbs.register_template_string("two", "Lets test {{name}} and {{root_name}}")
+ .unwrap();
+ assert_eq!(
+ "This is a test. Lets test fred and tom",
+ hbs.render("one", &json!({"root_name": "tom"})).unwrap()
+ );
+ }
+
+ #[test]
fn test_partial_subexpression_context_hash() {
let mut hbs = Registry::new();
hbs.register_template_string("one", "This is a test. {{> (x @root) name=\"fred\" }}")
@@ -297,7 +331,7 @@ mod test {
}
#[test]
- fn test_nested_partials() {
+ fn test_nested_partial_block() {
let mut handlebars = Registry::new();
let template1 = "<outer>{{> @partial-block }}</outer>";
let template2 = "{{#> t1 }}<inner>{{> @partial-block }}</inner>{{/ t1 }}";
@@ -330,4 +364,293 @@ mod test {
"fruit: carrot,fruit: tomato,"
);
}
+
+ #[test]
+ fn line_stripping_with_inline_and_partial() {
+ let tpl0 = r#"{{#*inline "foo"}}foo
+{{/inline}}
+{{> foo}}
+{{> foo}}
+{{> foo}}"#;
+ let tpl1 = r#"{{#*inline "foo"}}foo{{/inline}}
+{{> foo}}
+{{> foo}}
+{{> foo}}"#;
+
+ let hbs = Registry::new();
+ assert_eq!(
+ r#"foo
+foo
+foo
+"#,
+ hbs.render_template(tpl0, &json!({})).unwrap()
+ );
+ assert_eq!(
+ r#"
+foofoofoo"#,
+ hbs.render_template(tpl1, &json!({})).unwrap()
+ );
+ }
+
+ #[test]
+ fn test_partial_indent() {
+ let outer = r#" {{> inner inner_solo}}
+
+{{#each inners}}
+ {{> inner}}
+{{/each}}
+
+ {{#each inners}}
+ {{> inner}}
+ {{/each}}
+"#;
+ let inner = r#"name: {{name}}
+"#;
+
+ let mut hbs = Registry::new();
+
+ hbs.register_template_string("inner", inner).unwrap();
+ hbs.register_template_string("outer", outer).unwrap();
+
+ let result = hbs
+ .render(
+ "outer",
+ &json!({
+ "inner_solo": {"name": "inner_solo"},
+ "inners": [
+ {"name": "hello"},
+ {"name": "there"}
+ ]
+ }),
+ )
+ .unwrap();
+
+ assert_eq!(
+ result,
+ r#" name: inner_solo
+
+ name: hello
+ name: there
+
+ name: hello
+ name: there
+"#
+ );
+ }
+ // Rule::partial_expression should not trim leading indent by default
+
+ #[test]
+ fn test_partial_prevent_indent() {
+ let outer = r#" {{> inner inner_solo}}
+
+{{#each inners}}
+ {{> inner}}
+{{/each}}
+
+ {{#each inners}}
+ {{> inner}}
+ {{/each}}
+"#;
+ let inner = r#"name: {{name}}
+"#;
+
+ let mut hbs = Registry::new();
+ hbs.set_prevent_indent(true);
+
+ hbs.register_template_string("inner", inner).unwrap();
+ hbs.register_template_string("outer", outer).unwrap();
+
+ let result = hbs
+ .render(
+ "outer",
+ &json!({
+ "inner_solo": {"name": "inner_solo"},
+ "inners": [
+ {"name": "hello"},
+ {"name": "there"}
+ ]
+ }),
+ )
+ .unwrap();
+
+ assert_eq!(
+ result,
+ r#" name: inner_solo
+
+ name: hello
+ name: there
+
+ name: hello
+ name: there
+"#
+ );
+ }
+
+ #[test]
+ fn test_nested_partials() {
+ let mut hb = Registry::new();
+ hb.register_template_string("partial", "{{> @partial-block}}")
+ .unwrap();
+ hb.register_template_string(
+ "index",
+ r#"{{#>partial}}
+ Yo
+ {{#>partial}}
+ Yo 2
+ {{/partial}}
+{{/partial}}"#,
+ )
+ .unwrap();
+ assert_eq!(
+ r#" Yo
+ Yo 2
+"#,
+ hb.render("index", &()).unwrap()
+ );
+
+ hb.register_template_string("partial2", "{{> @partial-block}}")
+ .unwrap();
+ let r2 = hb
+ .render_template(
+ r#"{{#> partial}}
+{{#> partial2}}
+:(
+{{/partial2}}
+{{/partial}}"#,
+ &(),
+ )
+ .unwrap();
+ assert_eq!(":(\n", r2);
+ }
+
+ #[test]
+ fn test_partial_context_issue_495() {
+ let mut hb = Registry::new();
+ hb.register_template_string(
+ "t1",
+ r#"{{~#*inline "displayName"~}}
+Template:{{name}}
+{{/inline}}
+{{#each data as |name|}}
+Name:{{name}}
+{{>displayName name="aaaa"}}
+{{/each}}"#,
+ )
+ .unwrap();
+
+ hb.register_template_string(
+ "t1",
+ r#"{{~#*inline "displayName"~}}
+Template:{{this}}
+{{/inline}}
+{{#each data as |name|}}
+Name:{{name}}
+{{>displayName}}
+{{/each}}"#,
+ )
+ .unwrap();
+
+ let data = json!({
+ "data": ["hudel", "test"]
+ });
+
+ assert_eq!(
+ r#"Name:hudel
+Template:hudel
+Name:test
+Template:test
+"#,
+ hb.render("t1", &data).unwrap()
+ );
+ }
+
+ #[test]
+ fn test_multiline_partial_indent() {
+ let mut hb = Registry::new();
+
+ hb.register_template_string(
+ "t1",
+ r#"{{#*inline "thepartial"}}
+ inner first line
+ inner second line
+{{/inline}}
+ {{> thepartial}}
+outer third line"#,
+ )
+ .unwrap();
+ assert_eq!(
+ r#" inner first line
+ inner second line
+outer third line"#,
+ hb.render("t1", &()).unwrap()
+ );
+
+ hb.register_template_string(
+ "t2",
+ r#"{{#*inline "thepartial"}}inner first line
+inner second line
+{{/inline}}
+ {{> thepartial}}
+outer third line"#,
+ )
+ .unwrap();
+ assert_eq!(
+ r#" inner first line
+ inner second line
+outer third line"#,
+ hb.render("t2", &()).unwrap()
+ );
+
+ hb.register_template_string(
+ "t3",
+ r#"{{#*inline "thepartial"}}{{a}}{{/inline}}
+ {{> thepartial}}
+outer third line"#,
+ )
+ .unwrap();
+ assert_eq!(
+ r#"
+ inner first line
+ inner second lineouter third line"#,
+ hb.render("t3", &json!({"a": "inner first line\ninner second line"}))
+ .unwrap()
+ );
+
+ hb.register_template_string(
+ "t4",
+ r#"{{#*inline "thepartial"}}
+ inner first line
+ inner second line
+{{/inline}}
+ {{~> thepartial}}
+outer third line"#,
+ )
+ .unwrap();
+ assert_eq!(
+ r#" inner first line
+ inner second line
+outer third line"#,
+ hb.render("t4", &()).unwrap()
+ );
+
+ let mut hb2 = Registry::new();
+ hb2.set_prevent_indent(true);
+
+ hb2.register_template_string(
+ "t1",
+ r#"{{#*inline "thepartial"}}
+ inner first line
+ inner second line
+{{/inline}}
+ {{> thepartial}}
+outer third line"#,
+ )
+ .unwrap();
+ assert_eq!(
+ r#" inner first line
+ inner second line
+outer third line"#,
+ hb2.render("t1", &()).unwrap()
+ )
+ }
}
diff --git a/vendor/handlebars/src/registry.rs b/vendor/handlebars/src/registry.rs
index e7f5f1cfd..438f8573c 100644
--- a/vendor/handlebars/src/registry.rs
+++ b/vendor/handlebars/src/registry.rs
@@ -17,12 +17,10 @@ use crate::output::{Output, StringOutput, WriteOutput};
use crate::render::{RenderContext, Renderable};
use crate::sources::{FileSource, Source};
use crate::support::str::{self, StringWriter};
-use crate::template::Template;
+use crate::template::{Template, TemplateOptions};
#[cfg(feature = "dir_source")]
-use std::path;
-#[cfg(feature = "dir_source")]
-use walkdir::{DirEntry, WalkDir};
+use walkdir::WalkDir;
#[cfg(feature = "script_helper")]
use rhai::Engine;
@@ -30,6 +28,9 @@ use rhai::Engine;
#[cfg(feature = "script_helper")]
use crate::helpers::scripting::ScriptHelper;
+#[cfg(feature = "rust-embed")]
+use rust_embed::RustEmbed;
+
/// This type represents an *escape fn*, that is a function whose purpose it is
/// to escape potentially problematic characters in a string.
///
@@ -62,6 +63,7 @@ pub struct Registry<'reg> {
escape_fn: EscapeFn,
strict_mode: bool,
dev_mode: bool,
+ prevent_indent: bool,
#[cfg(feature = "script_helper")]
pub(crate) engine: Arc<Engine>,
@@ -90,21 +92,6 @@ impl<'reg> Default for Registry<'reg> {
}
}
-#[cfg(feature = "dir_source")]
-fn filter_file(entry: &DirEntry, suffix: &str) -> bool {
- let path = entry.path();
-
- // ignore hidden files, emacs buffers and files with wrong suffix
- !path.is_file()
- || path
- .file_name()
- .map(|s| {
- let ds = s.to_string_lossy();
- ds.starts_with('.') || ds.starts_with('#') || !ds.ends_with(suffix)
- })
- .unwrap_or(true)
-}
-
#[cfg(feature = "script_helper")]
fn rhai_engine() -> Engine {
Engine::new()
@@ -120,6 +107,7 @@ impl<'reg> Registry<'reg> {
escape_fn: Arc::new(html_escape),
strict_mode: false,
dev_mode: false,
+ prevent_indent: false,
#[cfg(feature = "script_helper")]
engine: Arc::new(rhai_engine()),
#[cfg(feature = "script_helper")]
@@ -178,7 +166,7 @@ impl<'reg> Registry<'reg> {
/// Return dev mode state, default is false
///
/// With dev mode turned on, handlebars enables a set of development
- /// firendly features, that may affect its performance.
+ /// friendly features, that may affect its performance.
pub fn dev_mode(&self) -> bool {
self.dev_mode
}
@@ -186,9 +174,30 @@ impl<'reg> Registry<'reg> {
/// Enable or disable dev mode
///
/// With dev mode turned on, handlebars enables a set of development
- /// firendly features, that may affect its performance.
+ /// friendly features, that may affect its performance.
+ ///
+ /// **Note that you have to enable dev mode before adding templates to
+ /// the registry**. Otherwise it won't take effect at all.
pub fn set_dev_mode(&mut self, enabled: bool) {
self.dev_mode = enabled;
+
+ // clear template source when disabling dev mode
+ if !enabled {
+ self.template_sources.clear();
+ }
+ }
+
+ /// Enable or disable indent for partial include tag `{{>}}`
+ ///
+ /// By default handlebars keeps indent whitespaces for partial
+ /// include tag, to change this behaviour, set this toggle to `true`.
+ pub fn set_prevent_indent(&mut self, enable: bool) {
+ self.prevent_indent = enable;
+ }
+
+ /// Return state for `prevent_indent` option, default to `false`.
+ pub fn prevent_indent(&self) -> bool {
+ self.prevent_indent
}
/// Register a `Template`
@@ -196,6 +205,9 @@ impl<'reg> Registry<'reg> {
/// This is infallible since the template has already been parsed and
/// insert cannot fail. If there is an existing template with this name it
/// will be overwritten.
+ ///
+ /// Dev mode doesn't apply for pre-compiled template because it's lifecycle
+ /// is not managed by the registry.
pub fn register_template(&mut self, name: &str, tpl: Template) {
self.templates.insert(name.to_string(), tpl);
}
@@ -211,7 +223,13 @@ impl<'reg> Registry<'reg> {
where
S: AsRef<str>,
{
- let template = Template::compile_with_name(tpl_str, name.to_owned())?;
+ let template = Template::compile2(
+ tpl_str.as_ref(),
+ TemplateOptions {
+ name: Some(name.to_owned()),
+ prevent_indent: self.prevent_indent,
+ },
+ )?;
self.register_template(name, template);
Ok(())
}
@@ -227,7 +245,10 @@ impl<'reg> Registry<'reg> {
self.register_template_string(name, partial_str)
}
- /// Register a template from a path
+ /// Register a template from a path on file system
+ ///
+ /// If dev mode is enabled, the registry will keep reading the template file
+ /// from file system everytime it's visited.
pub fn register_template_file<P>(
&mut self,
name: &str,
@@ -262,11 +283,14 @@ impl<'reg> Registry<'reg> {
///
/// This method is not available by default.
/// You will need to enable the `dir_source` feature to use it.
+ ///
+ /// When dev_mode enabled, like `register_template_file`, templates is reloaded
+ /// from file system everytime it's visied.
#[cfg(feature = "dir_source")]
#[cfg_attr(docsrs, doc(cfg(feature = "dir_source")))]
pub fn register_templates_directory<P>(
&mut self,
- tpl_extension: &'static str,
+ tpl_extension: &str,
dir_path: P,
) -> Result<(), TemplateError>
where
@@ -274,40 +298,88 @@ impl<'reg> Registry<'reg> {
{
let dir_path = dir_path.as_ref();
- let prefix_len = if dir_path
- .to_string_lossy()
- .ends_with(|c| c == '\\' || c == '/')
- // `/` will work on windows too so we still need to check
- {
- dir_path.to_string_lossy().len()
- } else {
- dir_path.to_string_lossy().len() + 1
- };
+ // Allowing dots at the beginning as to not break old
+ // applications.
+ let tpl_extension = tpl_extension.strip_prefix('.').unwrap_or(tpl_extension);
let walker = WalkDir::new(dir_path);
let dir_iter = walker
.min_depth(1)
.into_iter()
- .filter(|e| e.is_ok() && !filter_file(e.as_ref().unwrap(), tpl_extension));
+ .filter_map(|e| e.ok().map(|e| e.into_path()))
+ // Checks if extension matches
+ .filter(|tpl_path| {
+ tpl_path
+ .extension()
+ .map(|extension| extension == tpl_extension)
+ .unwrap_or(false)
+ })
+ // Rejects any hidden or temporary files.
+ .filter(|tpl_path| {
+ tpl_path
+ .file_stem()
+ .map(|stem| stem.to_string_lossy())
+ .map(|stem| !(stem.starts_with('.') || stem.starts_with('#')))
+ .unwrap_or(false)
+ })
+ .filter_map(|tpl_path| {
+ tpl_path
+ .strip_prefix(dir_path)
+ .ok()
+ .map(|tpl_canonical_name| {
+ tpl_canonical_name
+ .with_extension("")
+ .components()
+ .map(|component| component.as_os_str().to_string_lossy())
+ .collect::<Vec<_>>()
+ .join("/")
+ })
+ .map(|tpl_canonical_name| (tpl_canonical_name, tpl_path))
+ });
+
+ for (tpl_canonical_name, tpl_path) in dir_iter {
+ self.register_template_file(&tpl_canonical_name, &tpl_path)?;
+ }
- for entry in dir_iter {
- let entry = entry?;
+ Ok(())
+ }
- let tpl_path = entry.path();
- let tpl_file_path = entry.path().to_string_lossy();
+ /// Register templates using a
+ /// [RustEmbed](https://github.com/pyros2097/rust-embed) type
+ ///
+ /// File names from embed struct are used as template name.
+ ///
+ /// ```skip
+ /// #[derive(RustEmbed)]
+ /// #[folder = "templates"]
+ /// struct Assets;
+ ///
+ /// let mut hbs = Handlebars::new();
+ /// hbs.register_embed_templates::<Assets>();
+ /// ```
+ ///
+ #[cfg(feature = "rust-embed")]
+ #[cfg_attr(docsrs, doc(cfg(feature = "rust-embed")))]
+ pub fn register_embed_templates<E>(&mut self) -> Result<(), TemplateError>
+ where
+ E: RustEmbed,
+ {
+ for item in E::iter() {
+ let file_name = item.as_ref();
+ if let Some(file) = E::get(file_name) {
+ let data = file.data;
- let tpl_name = &tpl_file_path[prefix_len..tpl_file_path.len() - tpl_extension.len()];
- // replace platform path separator with our internal one
- let tpl_canonical_name = tpl_name.replace(path::MAIN_SEPARATOR, "/");
- self.register_template_file(&tpl_canonical_name, &tpl_path)?;
+ let tpl_content = String::from_utf8_lossy(data.as_ref());
+ self.register_template_string(file_name, tpl_content)?;
+ }
}
-
Ok(())
}
/// Remove a template from the registry
pub fn unregister_template(&mut self, name: &str) {
self.templates.remove(name);
+ self.template_sources.remove(name);
}
/// Register a helper
@@ -335,7 +407,6 @@ impl<'reg> Registry<'reg> {
/// (value * 100).to_string() + label
/// ```
///
- ///
#[cfg(feature = "script_helper")]
#[cfg_attr(docsrs, doc(cfg(feature = "script_helper")))]
pub fn register_script_helper(&mut self, name: &str, script: &str) -> Result<(), ScriptError> {
@@ -347,6 +418,9 @@ impl<'reg> Registry<'reg> {
}
/// Register a [rhai](https://docs.rs/rhai/) script from file
+ ///
+ /// When dev mode is enable, script file is reloaded from original file
+ /// everytime it is called.
#[cfg(feature = "script_helper")]
#[cfg_attr(docsrs, doc(cfg(feature = "script_helper")))]
pub fn register_script_helper_file<P>(
@@ -365,6 +439,22 @@ impl<'reg> Registry<'reg> {
self.register_script_helper(name, &script)
}
+ /// Borrow a read-only reference to current rhai engine
+ #[cfg(feature = "script_helper")]
+ #[cfg_attr(docsrs, doc(cfg(feature = "script_helper")))]
+ pub fn engine(&self) -> &Engine {
+ self.engine.as_ref()
+ }
+
+ /// Set a custom rhai engine for the registry.
+ ///
+ /// *Note that* you need to set custom engine before adding scripts.
+ #[cfg(feature = "script_helper")]
+ #[cfg_attr(docsrs, doc(cfg(feature = "script_helper")))]
+ pub fn set_engine(&mut self, engine: Engine) {
+ self.engine = Arc::new(engine);
+ }
+
/// Register a decorator
pub fn register_decorator(
&mut self,
@@ -389,7 +479,7 @@ impl<'reg> Registry<'reg> {
/// Get a reference to the current *escape fn*.
pub fn get_escape_fn(&self) -> &dyn Fn(&str) -> String {
- &*self.escape_fn
+ self.escape_fn.as_ref()
}
/// Return `true` if a template is registered for the given name
@@ -411,7 +501,15 @@ impl<'reg> Registry<'reg> {
let r = source
.load()
.map_err(|e| TemplateError::from((e, name.to_owned())))
- .and_then(|tpl_str| Template::compile_with_name(tpl_str, name.to_owned()))
+ .and_then(|tpl_str| {
+ Template::compile2(
+ tpl_str.as_ref(),
+ TemplateOptions {
+ name: Some(name.to_owned()),
+ prevent_indent: self.prevent_indent,
+ },
+ )
+ })
.map(Cow::Owned)
.map_err(RenderError::from);
Some(r)
@@ -433,6 +531,7 @@ impl<'reg> Registry<'reg> {
}
/// Return a registered helper
+ #[inline]
pub(crate) fn get_or_load_helper(
&'reg self,
name: &str,
@@ -460,6 +559,7 @@ impl<'reg> Registry<'reg> {
}
/// Return a registered decorator
+ #[inline]
pub(crate) fn get_decorator(
&self,
name: &str,
@@ -468,6 +568,10 @@ impl<'reg> Registry<'reg> {
}
/// Return all templates registered
+ ///
+ /// **Note that** in dev mode, the template returned from this method may
+ /// not reflect its latest state. This method doesn't try to reload templates
+ /// from its source.
pub fn get_templates(&self) -> &HashMap<String, Template> {
&self.templates
}
@@ -475,6 +579,7 @@ impl<'reg> Registry<'reg> {
/// Unregister all templates
pub fn clear_templates(&mut self) {
self.templates.clear();
+ self.template_sources.clear();
}
#[inline]
@@ -489,7 +594,7 @@ impl<'reg> Registry<'reg> {
{
self.get_or_load_template(name).and_then(|t| {
let mut render_context = RenderContext::new(t.name.as_ref());
- t.render(self, &ctx, &mut render_context, output)
+ t.render(self, ctx, &mut render_context, output)
})
}
@@ -516,7 +621,7 @@ impl<'reg> Registry<'reg> {
output.into_string().map_err(RenderError::from)
}
- /// Render a registered template and write some data to the `std::io::Write`
+ /// Render a registered template and write data to the `std::io::Write`
pub fn render_to_write<T, W>(&self, name: &str, data: &T, writer: W) -> Result<(), RenderError>
where
T: Serialize,
@@ -527,6 +632,21 @@ impl<'reg> Registry<'reg> {
self.render_to_output(name, &ctx, &mut output)
}
+ /// Render a registered template using reusable `Context`, and write data to
+ /// the `std::io::Write`
+ pub fn render_with_context_to_write<W>(
+ &self,
+ name: &str,
+ ctx: &Context,
+ writer: W,
+ ) -> Result<(), RenderError>
+ where
+ W: Write,
+ {
+ let mut output = WriteOutput::new(writer);
+ self.render_to_output(name, ctx, &mut output)
+ }
+
/// Render a template string using current registry without registering it
pub fn render_template<T>(&self, template_string: &str, data: &T) -> Result<String, RenderError>
where
@@ -537,23 +657,52 @@ impl<'reg> Registry<'reg> {
Ok(writer.into_string())
}
- /// Render a template string using reused context data
+ /// Render a template string using reusable context data
pub fn render_template_with_context(
&self,
template_string: &str,
ctx: &Context,
) -> Result<String, RenderError> {
- let tpl = Template::compile(template_string)?;
+ let tpl = Template::compile2(
+ template_string,
+ TemplateOptions {
+ prevent_indent: self.prevent_indent,
+ ..Default::default()
+ },
+ )?;
let mut out = StringOutput::new();
{
let mut render_context = RenderContext::new(None);
- tpl.render(self, &ctx, &mut render_context, &mut out)?;
+ tpl.render(self, ctx, &mut render_context, &mut out)?;
}
out.into_string().map_err(RenderError::from)
}
+ /// Render a template string using resuable context, and write data into
+ /// `std::io::Write`
+ pub fn render_template_with_context_to_write<W>(
+ &self,
+ template_string: &str,
+ ctx: &Context,
+ writer: W,
+ ) -> Result<(), RenderError>
+ where
+ W: Write,
+ {
+ let tpl = Template::compile2(
+ template_string,
+ TemplateOptions {
+ prevent_indent: self.prevent_indent,
+ ..Default::default()
+ },
+ )?;
+ let mut render_context = RenderContext::new(None);
+ let mut out = WriteOutput::new(writer);
+ tpl.render(self, ctx, &mut render_context, &mut out)
+ }
+
/// Render a template string using current registry without registering it
pub fn render_template_to_write<T, W>(
&self,
@@ -565,11 +714,8 @@ impl<'reg> Registry<'reg> {
T: Serialize,
W: Write,
{
- let tpl = Template::compile(template_string)?;
let ctx = Context::wraps(data)?;
- let mut render_context = RenderContext::new(None);
- let mut out = WriteOutput::new(writer);
- tpl.render(self, &ctx, &mut render_context, &mut out)
+ self.render_template_with_context_to_write(template_string, &ctx, writer)
}
}
@@ -944,8 +1090,7 @@ mod test {
.unwrap();
assert_eq!(
"0123",
- reg.render_with_context("t0", &Context::wraps(&data).unwrap())
- .unwrap()
+ reg.render_with_context("t0", &Context::from(data)).unwrap()
);
}
@@ -1089,4 +1234,17 @@ mod test {
dir.close().unwrap();
}
+
+ #[test]
+ #[cfg(feature = "script_helper")]
+ fn test_engine_access() {
+ use rhai::Engine;
+
+ let mut registry = Registry::new();
+ let mut eng = Engine::new();
+ eng.set_max_string_size(1000);
+ registry.set_engine(eng);
+
+ assert_eq!(1000, registry.engine().max_string_size());
+ }
}
diff --git a/vendor/handlebars/src/render.rs b/vendor/handlebars/src/render.rs
index 188ea221a..036352b3a 100644
--- a/vendor/handlebars/src/render.rs
+++ b/vendor/handlebars/src/render.rs
@@ -14,6 +14,7 @@ use crate::json::value::{JsonRender, PathAndJson, ScopedJson};
use crate::output::{Output, StringOutput};
use crate::partial;
use crate::registry::Registry;
+use crate::support;
use crate::template::TemplateElement::*;
use crate::template::{
BlockParam, DecoratorTemplate, HelperTemplate, Parameter, Template, TemplateElement,
@@ -47,10 +48,11 @@ pub struct RenderContextInner<'reg: 'rc, 'rc> {
/// root template name
root_template: Option<&'reg String>,
disable_escape: bool,
+ indent_string: Option<&'reg String>,
}
impl<'reg: 'rc, 'rc> RenderContext<'reg, 'rc> {
- /// Create a render context from a `Write`
+ /// Create a render context
pub fn new(root_template: Option<&'reg String>) -> RenderContext<'reg, 'rc> {
let inner = Rc::new(RenderContextInner {
partials: BTreeMap::new(),
@@ -60,6 +62,7 @@ impl<'reg: 'rc, 'rc> RenderContext<'reg, 'rc> {
current_template: None,
root_template,
disable_escape: false,
+ indent_string: None,
});
let mut blocks = VecDeque::with_capacity(5);
@@ -73,7 +76,6 @@ impl<'reg: 'rc, 'rc> RenderContext<'reg, 'rc> {
}
}
- // TODO: better name
pub(crate) fn new_for_block(&self) -> RenderContext<'reg, 'rc> {
let inner = self.inner.clone();
@@ -101,6 +103,10 @@ impl<'reg: 'rc, 'rc> RenderContext<'reg, 'rc> {
self.blocks.pop_front();
}
+ pub(crate) fn clear_blocks(&mut self) {
+ self.blocks.clear();
+ }
+
/// Borrow a reference to current block context
pub fn block(&self) -> Option<&BlockContext<'reg>> {
self.blocks.front()
@@ -190,7 +196,19 @@ impl<'reg: 'rc, 'rc> RenderContext<'reg, 'rc> {
}
pub(crate) fn dec_partial_block_depth(&mut self) {
- self.inner_mut().partial_block_depth -= 1;
+ let depth = &mut self.inner_mut().partial_block_depth;
+ if *depth > 0 {
+ *depth -= 1;
+ }
+ }
+
+ pub(crate) fn set_indent_string(&mut self, indent: Option<&'reg String>) {
+ self.inner_mut().indent_string = indent;
+ }
+
+ #[inline]
+ pub(crate) fn get_indent_string(&self) -> Option<&'reg String> {
+ self.inner.indent_string
}
/// Remove a registered partial
@@ -201,7 +219,7 @@ impl<'reg: 'rc, 'rc> RenderContext<'reg, 'rc> {
fn get_local_var(&self, level: usize, name: &str) -> Option<&Json> {
self.blocks
.get(level)
- .and_then(|blk| blk.get_local_var(&name))
+ .and_then(|blk| blk.get_local_var(name))
}
/// Test if given template name is current template.
@@ -275,9 +293,10 @@ impl<'reg, 'rc> fmt::Debug for RenderContextInner<'reg, 'rc> {
f.debug_struct("RenderContextInner")
.field("partials", &self.partials)
.field("partial_block_stack", &self.partial_block_stack)
+ .field("partial_block_depth", &self.partial_block_depth)
.field("root_template", &self.root_template)
.field("current_template", &self.current_template)
- .field("disable_eacape", &self.disable_escape)
+ .field("disable_escape", &self.disable_escape)
.finish()
}
}
@@ -435,6 +454,7 @@ pub struct Decorator<'reg, 'rc> {
params: Vec<PathAndJson<'reg, 'rc>>,
hash: BTreeMap<&'reg str, PathAndJson<'reg, 'rc>>,
template: Option<&'reg Template>,
+ indent: Option<&'reg String>,
}
impl<'reg: 'rc, 'rc> Decorator<'reg, 'rc> {
@@ -463,6 +483,7 @@ impl<'reg: 'rc, 'rc> Decorator<'reg, 'rc> {
params: pv,
hash: hm,
template: dt.template.as_ref(),
+ indent: dt.indent.as_ref(),
})
}
@@ -495,6 +516,10 @@ impl<'reg: 'rc, 'rc> Decorator<'reg, 'rc> {
pub fn template(&self) -> Option<&'reg Template> {
self.template
}
+
+ pub fn indent(&self) -> Option<&'reg String> {
+ self.indent
+ }
}
/// Render trait
@@ -747,6 +772,20 @@ pub(crate) fn do_escape(r: &Registry<'_>, rc: &RenderContext<'_, '_>, content: S
}
}
+#[inline]
+fn indent_aware_write(
+ v: &str,
+ rc: &mut RenderContext<'_, '_>,
+ out: &mut dyn Output,
+) -> Result<(), RenderError> {
+ if let Some(indent) = rc.get_indent_string() {
+ out.write(support::str::with_indent(v, indent).as_ref())?;
+ } else {
+ out.write(v.as_ref())?;
+ }
+ Ok(())
+}
+
impl Renderable for TemplateElement {
fn render<'reg: 'rc, 'rc>(
&'reg self,
@@ -755,11 +794,8 @@ impl Renderable for TemplateElement {
rc: &mut RenderContext<'reg, 'rc>,
out: &mut dyn Output,
) -> Result<(), RenderError> {
- match *self {
- RawString(ref v) => {
- out.write(v.as_ref())?;
- Ok(())
- }
+ match self {
+ RawString(ref v) => indent_aware_write(v.as_ref(), rc, out),
Expression(ref ht) | HtmlExpression(ref ht) => {
let is_html_expression = matches!(self, HtmlExpression(_));
if is_html_expression {
@@ -789,8 +825,7 @@ impl Renderable for TemplateElement {
} else {
let rendered = context_json.value().render();
let output = do_escape(registry, rc, rendered);
- out.write(output.as_ref())?;
- Ok(())
+ indent_aware_write(output.as_ref(), rc, out)
}
}
} else {
@@ -1117,3 +1152,37 @@ fn test_zero_args_heler() {
"Output name: first_name not resolved"
);
}
+
+#[test]
+fn test_identifiers_starting_with_numbers() {
+ let mut r = Registry::new();
+
+ assert!(r
+ .register_template_string("r1", "{{#if 0a}}true{{/if}}")
+ .is_ok());
+ let r1 = r.render("r1", &json!({"0a": true})).unwrap();
+ assert_eq!(r1, "true");
+
+ assert!(r.register_template_string("r2", "{{eq 1a 1}}").is_ok());
+ let r2 = r.render("r2", &json!({"1a": 2, "a": 1})).unwrap();
+ assert_eq!(r2, "false");
+
+ assert!(r
+ .register_template_string("r3", "0: {{0}} {{#if (eq 0 true)}}resolved from context{{/if}}\n1a: {{1a}} {{#if (eq 1a true)}}resolved from context{{/if}}\n2_2: {{2_2}} {{#if (eq 2_2 true)}}resolved from context{{/if}}") // YUP it is just eq that barfs! is if handled specially? maybe this test should go nearer to specific helpers that fail?
+ .is_ok());
+ let r3 = r
+ .render("r3", &json!({"0": true, "1a": true, "2_2": true}))
+ .unwrap();
+ assert_eq!(
+ r3,
+ "0: true \n1a: true resolved from context\n2_2: true resolved from context"
+ );
+
+ // these should all be errors:
+ assert!(r.register_template_string("r4", "{{eq 1}}").is_ok());
+ assert!(r.register_template_string("r5", "{{eq a1}}").is_ok());
+ assert!(r.register_template_string("r6", "{{eq 1a}}").is_ok());
+ assert!(r.render("r4", &()).is_err());
+ assert!(r.render("r5", &()).is_err());
+ assert!(r.render("r6", &()).is_err());
+}
diff --git a/vendor/handlebars/src/support.rs b/vendor/handlebars/src/support.rs
index bd5564d32..b02aca6db 100644
--- a/vendor/handlebars/src/support.rs
+++ b/vendor/handlebars/src/support.rs
@@ -57,6 +57,64 @@ pub mod str {
output
}
+ /// add indent for lines but last
+ pub fn with_indent(s: &str, indent: &str) -> String {
+ let mut output = String::new();
+
+ let mut it = s.chars().peekable();
+ while let Some(c) = it.next() {
+ output.push(c);
+ // check if c is not the last character, we don't append
+ // indent for last line break
+ if c == '\n' && it.peek().is_some() {
+ output.push_str(indent);
+ }
+ }
+
+ output
+ }
+
+ #[inline]
+ pub(crate) fn whitespace_matcher(c: char) -> bool {
+ c == ' ' || c == '\t'
+ }
+
+ #[inline]
+ pub(crate) fn newline_matcher(c: char) -> bool {
+ c == '\n' || c == '\r'
+ }
+
+ #[inline]
+ pub(crate) fn strip_first_newline(s: &str) -> &str {
+ if let Some(s) = s.strip_prefix("\r\n") {
+ s
+ } else if let Some(s) = s.strip_prefix('\n') {
+ s
+ } else {
+ s
+ }
+ }
+
+ pub(crate) fn find_trailing_whitespace_chars(s: &str) -> Option<&str> {
+ let trimmed = s.trim_end_matches(whitespace_matcher);
+ if trimmed.len() == s.len() {
+ None
+ } else {
+ Some(&s[trimmed.len()..])
+ }
+ }
+
+ pub(crate) fn ends_with_empty_line(text: &str) -> bool {
+ let s = text.trim_end_matches(whitespace_matcher);
+ // also matches when text is just whitespaces
+ s.ends_with(newline_matcher) || s.is_empty()
+ }
+
+ pub(crate) fn starts_with_empty_line(text: &str) -> bool {
+ text.trim_start_matches(whitespace_matcher)
+ .starts_with(newline_matcher)
+ }
+
#[cfg(test)]
mod test {
use crate::support::str::StringWriter;
diff --git a/vendor/handlebars/src/template.rs b/vendor/handlebars/src/template.rs
index 87f853799..617f47711 100644
--- a/vendor/handlebars/src/template.rs
+++ b/vendor/handlebars/src/template.rs
@@ -9,23 +9,39 @@ use pest::{Parser, Position, Span};
use serde_json::value::Value as Json;
use crate::error::{TemplateError, TemplateErrorReason};
-use crate::grammar::{self, HandlebarsParser, Rule};
+use crate::grammar::{HandlebarsParser, Rule};
use crate::json::path::{parse_json_path_from_iter, Path};
+use crate::support;
use self::TemplateElement::*;
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
pub struct TemplateMapping(pub usize, pub usize);
/// A handlebars template
-#[derive(PartialEq, Clone, Debug, Default)]
+#[derive(PartialEq, Eq, Clone, Debug, Default)]
pub struct Template {
pub name: Option<String>,
pub elements: Vec<TemplateElement>,
pub mapping: Vec<TemplateMapping>,
}
-#[derive(PartialEq, Clone, Debug)]
+#[derive(Default)]
+pub(crate) struct TemplateOptions {
+ pub(crate) prevent_indent: bool,
+ pub(crate) name: Option<String>,
+}
+
+impl TemplateOptions {
+ fn name(&self) -> String {
+ self.name
+ .as_ref()
+ .cloned()
+ .unwrap_or_else(|| "Unnamed".to_owned())
+ }
+}
+
+#[derive(PartialEq, Eq, Clone, Debug)]
pub struct Subexpression {
// we use box here avoid resursive struct definition
pub element: Box<TemplateElement>,
@@ -84,13 +100,13 @@ impl Subexpression {
}
}
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
pub enum BlockParam {
Single(Parameter),
Pair((Parameter, Parameter)),
}
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
pub struct ExpressionSpec {
pub name: Parameter,
pub params: Vec<Parameter>,
@@ -100,7 +116,7 @@ pub struct ExpressionSpec {
pub omit_pro_ws: bool,
}
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
pub enum Parameter {
// for helper name only
Name(String),
@@ -110,7 +126,7 @@ pub enum Parameter {
Subexpression(Subexpression),
}
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
pub struct HelperTemplate {
pub name: Parameter,
pub params: Vec<Parameter>,
@@ -122,6 +138,18 @@ pub struct HelperTemplate {
}
impl HelperTemplate {
+ pub fn new(exp: ExpressionSpec, block: bool) -> HelperTemplate {
+ HelperTemplate {
+ name: exp.name,
+ params: exp.params,
+ hash: exp.hash,
+ block_param: exp.block_param,
+ block,
+ template: None,
+ inverse: None,
+ }
+ }
+
// test only
pub(crate) fn with_path(path: Path) -> HelperTemplate {
HelperTemplate {
@@ -140,12 +168,26 @@ impl HelperTemplate {
}
}
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
pub struct DecoratorTemplate {
pub name: Parameter,
pub params: Vec<Parameter>,
pub hash: HashMap<String, Parameter>,
pub template: Option<Template>,
+ // for partial indent
+ pub indent: Option<String>,
+}
+
+impl DecoratorTemplate {
+ pub fn new(exp: ExpressionSpec) -> DecoratorTemplate {
+ DecoratorTemplate {
+ name: exp.name,
+ params: exp.params,
+ hash: exp.hash,
+ template: None,
+ indent: None,
+ }
+ }
}
impl Parameter {
@@ -380,34 +422,40 @@ impl Template {
fn remove_previous_whitespace(template_stack: &mut VecDeque<Template>) {
let t = template_stack.front_mut().unwrap();
- if let Some(el) = t.elements.last_mut() {
- if let RawString(ref mut text) = el {
- *text = text.trim_end().to_owned();
- }
+ if let Some(RawString(ref mut text)) = t.elements.last_mut() {
+ *text = text.trim_end().to_owned();
}
}
+ // in handlebars, the whitespaces around statement are
+ // automatically trimed.
+ // this function checks if current span has both leading and
+ // trailing whitespaces, which we treat as a standalone statement.
+ //
+ //
fn process_standalone_statement(
template_stack: &mut VecDeque<Template>,
source: &str,
current_span: &Span<'_>,
+ prevent_indent: bool,
) -> bool {
- let with_trailing_newline = grammar::starts_with_empty_line(&source[current_span.end()..]);
+ let with_trailing_newline =
+ support::str::starts_with_empty_line(&source[current_span.end()..]);
if with_trailing_newline {
let with_leading_newline =
- grammar::ends_with_empty_line(&source[..current_span.start()]);
+ support::str::ends_with_empty_line(&source[..current_span.start()]);
- if with_leading_newline {
+ // prevent_indent: a special toggle for partial expression
+ // (>) that leading whitespaces are kept
+ if prevent_indent && with_leading_newline {
let t = template_stack.front_mut().unwrap();
// check the last element before current
- if let Some(el) = t.elements.last_mut() {
- if let RawString(ref mut text) = el {
- // trim leading space for standalone statement
- *text = text
- .trim_end_matches(grammar::whitespace_matcher)
- .to_owned();
- }
+ if let Some(RawString(ref mut text)) = t.elements.last_mut() {
+ // trim leading space for standalone statement
+ *text = text
+ .trim_end_matches(support::str::whitespace_matcher)
+ .to_owned();
}
}
@@ -453,17 +501,17 @@ impl Template {
if trim_start {
RawString(s.trim_start().to_owned())
} else if trim_start_line {
- RawString(
- s.trim_start_matches(grammar::whitespace_matcher)
- .trim_start_matches(grammar::newline_matcher)
- .to_owned(),
- )
+ let s = s.trim_start_matches(support::str::whitespace_matcher);
+ RawString(support::str::strip_first_newline(s).to_owned())
} else {
RawString(s)
}
}
- pub fn compile<'a>(source: &'a str) -> Result<Template, TemplateError> {
+ pub(crate) fn compile2<'a>(
+ source: &'a str,
+ options: TemplateOptions,
+ ) -> Result<Template, TemplateError> {
let mut helper_stack: VecDeque<HelperTemplate> = VecDeque::new();
let mut decorator_stack: VecDeque<DecoratorTemplate> = VecDeque::new();
let mut template_stack: VecDeque<Template> = VecDeque::new();
@@ -472,14 +520,16 @@ impl Template {
// flag for newline removal of standalone statements
// this option is marked as true when standalone statement is detected
// then the leading whitespaces and newline of next rawstring will be trimed
- let mut trim_line_requiered = false;
+ let mut trim_line_required = false;
let parser_queue = HandlebarsParser::parse(Rule::handlebars, source).map_err(|e| {
let (line_no, col_no) = match e.line_col {
LineColLocation::Pos(line_col) => line_col,
LineColLocation::Span(line_col, _) => line_col,
};
- TemplateError::of(TemplateErrorReason::InvalidSyntax).at(source, line_no, col_no)
+ TemplateError::of(TemplateErrorReason::InvalidSyntax)
+ .at(source, line_no, col_no)
+ .in_template(options.name())
})?;
// dbg!(parser_queue.clone().flatten());
@@ -515,7 +565,7 @@ impl Template {
&source[prev_end..span.start()],
None,
false,
- trim_line_requiered,
+ trim_line_required,
),
line_no,
col_no,
@@ -528,12 +578,15 @@ impl Template {
&source[prev_end..span.start()],
None,
false,
- trim_line_requiered,
+ trim_line_required,
),
line_no,
col_no,
);
}
+
+ // reset standalone statement marker
+ trim_line_required = false;
}
let (line_no, col_no) = span.start_pos().line_col();
@@ -555,14 +608,14 @@ impl Template {
&source[start..span.end()],
Some(pair.clone()),
omit_pro_ws,
- trim_line_requiered,
+ trim_line_required,
),
line_no,
col_no,
);
// reset standalone statement marker
- trim_line_requiered = false;
+ trim_line_required = false;
}
Rule::helper_block_start
| Rule::raw_block_start
@@ -572,24 +625,11 @@ impl Template {
match rule {
Rule::helper_block_start | Rule::raw_block_start => {
- let helper_template = HelperTemplate {
- name: exp.name,
- params: exp.params,
- hash: exp.hash,
- block_param: exp.block_param,
- block: true,
- template: None,
- inverse: None,
- };
+ let helper_template = HelperTemplate::new(exp.clone(), true);
helper_stack.push_front(helper_template);
}
Rule::decorator_block_start | Rule::partial_block_start => {
- let decorator = DecoratorTemplate {
- name: exp.name,
- params: exp.params,
- hash: exp.hash,
- template: None,
- };
+ let decorator = DecoratorTemplate::new(exp.clone());
decorator_stack.push_front(decorator);
}
_ => unreachable!(),
@@ -602,10 +642,11 @@ impl Template {
// standalone statement check, it also removes leading whitespaces of
// previous rawstring when standalone statement detected
- trim_line_requiered = Template::process_standalone_statement(
+ trim_line_required = Template::process_standalone_statement(
&mut template_stack,
source,
&span,
+ true,
);
let t = template_stack.front_mut().unwrap();
@@ -623,10 +664,11 @@ impl Template {
// standalone statement check, it also removes leading whitespaces of
// previous rawstring when standalone statement detected
- trim_line_requiered = Template::process_standalone_statement(
+ trim_line_required = Template::process_standalone_statement(
&mut template_stack,
source,
&span,
+ true,
);
let t = template_stack.pop_front().unwrap();
@@ -640,7 +682,7 @@ impl Template {
span.as_str(),
Some(pair.clone()),
omit_pro_ws,
- trim_line_requiered,
+ trim_line_required,
),
line_no,
col_no,
@@ -664,15 +706,7 @@ impl Template {
match rule {
Rule::expression | Rule::html_expression => {
- let helper_template = HelperTemplate {
- name: exp.name,
- params: exp.params,
- hash: exp.hash,
- block_param: exp.block_param,
- block: false,
- template: None,
- inverse: None,
- };
+ let helper_template = HelperTemplate::new(exp.clone(), false);
let el = if rule == Rule::expression {
Expression(Box::new(helper_template))
} else {
@@ -682,12 +716,30 @@ impl Template {
t.push_element(el, line_no, col_no);
}
Rule::decorator_expression | Rule::partial_expression => {
- let decorator = DecoratorTemplate {
- name: exp.name,
- params: exp.params,
- hash: exp.hash,
- template: None,
- };
+ // do not auto trim ident spaces for
+ // partial_expression(>)
+ let prevent_indent = rule != Rule::partial_expression;
+ trim_line_required = Template::process_standalone_statement(
+ &mut template_stack,
+ source,
+ &span,
+ prevent_indent,
+ );
+
+ // indent for partial expression >
+ let mut indent = None;
+ if rule == Rule::partial_expression
+ && !options.prevent_indent
+ && !exp.omit_pre_ws
+ {
+ indent = support::str::find_trailing_whitespace_chars(
+ &source[..span.start()],
+ );
+ }
+
+ let mut decorator = DecoratorTemplate::new(exp.clone());
+ decorator.indent = indent.map(|s| s.to_owned());
+
let el = if rule == Rule::decorator_expression {
DecoratorExpression(Box::new(decorator))
} else {
@@ -699,10 +751,11 @@ impl Template {
Rule::helper_block_end | Rule::raw_block_end => {
// standalone statement check, it also removes leading whitespaces of
// previous rawstring when standalone statement detected
- trim_line_requiered = Template::process_standalone_statement(
+ trim_line_required = Template::process_standalone_statement(
&mut template_stack,
source,
&span,
+ true,
);
let mut h = helper_stack.pop_front().unwrap();
@@ -723,16 +776,18 @@ impl Template {
exp.name.debug_name(),
),
)
- .at(source, line_no, col_no));
+ .at(source, line_no, col_no)
+ .in_template(options.name()));
}
}
Rule::decorator_block_end | Rule::partial_block_end => {
// standalone statement check, it also removes leading whitespaces of
// previous rawstring when standalone statement detected
- trim_line_requiered = Template::process_standalone_statement(
+ trim_line_required = Template::process_standalone_statement(
&mut template_stack,
source,
&span,
+ true,
);
let mut d = decorator_stack.pop_front().unwrap();
@@ -753,17 +808,19 @@ impl Template {
exp.name.debug_name(),
),
)
- .at(source, line_no, col_no));
+ .at(source, line_no, col_no)
+ .in_template(options.name()));
}
}
_ => unreachable!(),
}
}
Rule::hbs_comment_compact => {
- trim_line_requiered = Template::process_standalone_statement(
+ trim_line_required = Template::process_standalone_statement(
&mut template_stack,
source,
&span,
+ true,
);
let text = span
@@ -774,10 +831,11 @@ impl Template {
t.push_element(Comment(text.to_owned()), line_no, col_no);
}
Rule::hbs_comment => {
- trim_line_requiered = Template::process_standalone_statement(
+ trim_line_required = Template::process_standalone_statement(
&mut template_stack,
source,
&span,
+ true,
);
let text = span
@@ -802,27 +860,36 @@ impl Template {
let t = template_stack.front_mut().unwrap();
t.push_element(RawString(text.to_owned()), line_no, col_no);
}
- let root_template = template_stack.pop_front().unwrap();
+ let mut root_template = template_stack.pop_front().unwrap();
+ root_template.name = options.name;
return Ok(root_template);
}
}
}
+ // These two compile functions are kept for compatibility with 4.x
+ // Template APIs in case that some developers are using them
+ // without registry.
+
+ pub fn compile(source: &str) -> Result<Template, TemplateError> {
+ Self::compile2(source, TemplateOptions::default())
+ }
+
pub fn compile_with_name<S: AsRef<str>>(
source: S,
name: String,
) -> Result<Template, TemplateError> {
- match Template::compile(source.as_ref()) {
- Ok(mut t) => {
- t.name = Some(name);
- Ok(t)
- }
- Err(e) => Err(e.in_template(name)),
- }
+ Self::compile2(
+ source.as_ref(),
+ TemplateOptions {
+ name: Some(name),
+ ..Default::default()
+ },
+ )
}
}
-#[derive(PartialEq, Clone, Debug)]
+#[derive(PartialEq, Eq, Clone, Debug)]
pub enum TemplateElement {
RawString(String),
HtmlExpression(Box<HelperTemplate>),
diff --git a/vendor/handlebars/tests/embed.rs b/vendor/handlebars/tests/embed.rs
new file mode 100644
index 000000000..019f27db9
--- /dev/null
+++ b/vendor/handlebars/tests/embed.rs
@@ -0,0 +1,29 @@
+#[macro_use]
+extern crate serde_json;
+
+use handlebars::Handlebars;
+
+#[test]
+#[cfg(feature = "rust-embed")]
+fn test_embed() {
+ use rust_embed::RustEmbed;
+
+ #[derive(RustEmbed)]
+ #[folder = "tests/templates/"]
+ #[include = "*.hbs"]
+ struct Templates;
+
+ let mut hbs = Handlebars::new();
+ hbs.register_embed_templates::<Templates>().unwrap();
+
+ assert_eq!(1, hbs.get_templates().len());
+
+ let data = json!({
+ "name": "Andy"
+ });
+
+ assert_eq!(
+ hbs.render("hello.hbs", &data).unwrap().trim(),
+ "Hello, Andy"
+ );
+}
diff --git a/vendor/handlebars/tests/escape.rs b/vendor/handlebars/tests/escape.rs
index 563ab76b9..4a737f5ce 100644
--- a/vendor/handlebars/tests/escape.rs
+++ b/vendor/handlebars/tests/escape.rs
@@ -3,7 +3,7 @@ extern crate handlebars;
#[macro_use]
extern crate serde_json;
-use handlebars::{handlebars_helper, Handlebars};
+use handlebars::{handlebars_helper, no_escape, Handlebars};
#[test]
fn test_escape_216() {
@@ -41,3 +41,43 @@ fn test_string_no_escape_422() {
.unwrap()
);
}
+
+#[test]
+fn test_string_whitespace_467() {
+ const TEMPLATE_UNQUOTED: &str = r#"{{#each synonyms}}
+ {{this.name}} => '{{this.sym}}',
+ {{/each}}
+"#;
+
+ let mut hbs = Handlebars::new();
+ hbs.register_escape_fn(no_escape);
+ hbs.register_template_string("perl", TEMPLATE_UNQUOTED)
+ .unwrap();
+
+ let r = hbs
+ .render("perl", &json!({"synonyms": [{"name": "lt", "sym": "<"}]}))
+ .unwrap();
+ assert_eq!(" lt => '<',\n", r);
+}
+
+#[test]
+fn test_triple_bracket_expression_471() {
+ let mut hbs = Handlebars::new();
+
+ handlebars_helper!(replace: |input: str| {
+ input.replace("\n", "<br/>")
+ });
+ hbs.register_helper("replace", Box::new(replace));
+
+ assert_eq!(
+ "some&lt;br/&gt;path",
+ hbs.render_template("{{replace h}}", &json!({"h": "some\npath"}))
+ .unwrap()
+ );
+
+ assert_eq!(
+ "some<br/>path",
+ hbs.render_template("{{{replace h}}}", &json!({"h": "some\npath"}))
+ .unwrap()
+ );
+}
diff --git a/vendor/handlebars/tests/helper_macro.rs b/vendor/handlebars/tests/helper_macro.rs
index 9a8d2dc07..cc5ed914b 100644
--- a/vendor/handlebars/tests/helper_macro.rs
+++ b/vendor/handlebars/tests/helper_macro.rs
@@ -4,6 +4,8 @@ extern crate handlebars;
extern crate serde_json;
use handlebars::Handlebars;
+use time::format_description::{parse, well_known::Rfc2822};
+use time::OffsetDateTime;
handlebars_helper!(lower: |s: str| s.to_lowercase());
handlebars_helper!(upper: |s: str| s.to_uppercase());
@@ -14,6 +16,7 @@ handlebars_helper!(nargs: |*args| args.len());
handlebars_helper!(has_a: |{a:i64 = 99}, **kwargs|
format!("{}, {}", a, kwargs.get("a").is_some()));
handlebars_helper!(tag: |t: str| format!("<{}>", t));
+handlebars_helper!(date: |dt: OffsetDateTime| dt.format(&parse("[year]-[month]-[day]").unwrap()).unwrap());
#[test]
fn test_macro_helper() {
@@ -26,6 +29,7 @@ fn test_macro_helper() {
hbs.register_helper("nargs", Box::new(nargs));
hbs.register_helper("has_a", Box::new(has_a));
hbs.register_helper("tag", Box::new(tag));
+ hbs.register_helper("date", Box::new(date));
let data = json!("Teixeira");
@@ -73,4 +77,13 @@ fn test_macro_helper() {
hbs.render_template("{{{tag \"html\"}}}", &()).unwrap(),
"<html>"
);
+
+ assert_eq!(
+ hbs.render_template(
+ "{{date this}}",
+ &OffsetDateTime::parse("Wed, 18 Feb 2015 23:16:09 GMT", &Rfc2822).unwrap()
+ )
+ .unwrap(),
+ "2015-02-18"
+ );
}
diff --git a/vendor/handlebars/tests/helper_with_space.rs b/vendor/handlebars/tests/helper_with_space.rs
index 5a55ab122..853d5d24a 100644
--- a/vendor/handlebars/tests/helper_with_space.rs
+++ b/vendor/handlebars/tests/helper_with_space.rs
@@ -34,3 +34,57 @@ fn test_helper_with_space_param() {
.unwrap();
assert_eq!(s, "Output: Mozilla Firefox, Google Chrome".to_owned());
}
+
+#[test]
+fn test_empty_lines_472() {
+ let mut r = Handlebars::new();
+
+ r.register_template_string(
+ "t1",
+ r#"{{#each routes}}
+import { default as {{this.handler}} } from '{{this.file_path}}'
+{{/each}}
+
+addEventListener('fetch', (event) => {
+ event.respondWith(handleEvent(event))
+})"#,
+ )
+ .unwrap();
+
+ r.register_template_string(
+ "t2",
+ r#"addEventListener('fetch', (event) => {
+ event.respondWith(handleEvent(event))
+})
+
+{{#each routes}}
+import { default as {{this.handler}} } from '{{this.file_path}}'
+{{/each}}
+"#,
+ )
+ .unwrap();
+
+ let data = json!({"routes": [{"handler": "__hello_handler", "file_path": "./hello.js"},
+ {"handler": "__world_index_handler", "file_path": "./world/index.js"},
+ {"handler": "__index_handler", "file_path": "./index.js"}]});
+
+ let exp1 = r#"import { default as __hello_handler } from './hello.js'
+import { default as __world_index_handler } from './world/index.js'
+import { default as __index_handler } from './index.js'
+
+addEventListener('fetch', (event) => {
+ event.respondWith(handleEvent(event))
+})"#;
+
+ let exp2 = r#"addEventListener('fetch', (event) => {
+ event.respondWith(handleEvent(event))
+})
+
+import { default as __hello_handler } from './hello.js'
+import { default as __world_index_handler } from './world/index.js'
+import { default as __index_handler } from './index.js'
+"#;
+
+ assert_eq!(r.render("t1", &data).unwrap(), exp1);
+ assert_eq!(r.render("t2", &data).unwrap(), exp2);
+}
diff --git a/vendor/handlebars/tests/templates/hello.hbs b/vendor/handlebars/tests/templates/hello.hbs
new file mode 100644
index 000000000..a2344af53
--- /dev/null
+++ b/vendor/handlebars/tests/templates/hello.hbs
@@ -0,0 +1 @@
+Hello, {{name}}
diff --git a/vendor/handlebars/tests/whitespace.rs b/vendor/handlebars/tests/whitespace.rs
new file mode 100644
index 000000000..1c740556f
--- /dev/null
+++ b/vendor/handlebars/tests/whitespace.rs
@@ -0,0 +1,24 @@
+use handlebars::Handlebars;
+use serde_json::json;
+
+#[test]
+fn test_whitespaces_elision() {
+ let hbs = Handlebars::new();
+ assert_eq!(
+ "bar",
+ hbs.render_template(" {{~ foo ~}} ", &json!({"foo": "bar"}))
+ .unwrap()
+ );
+
+ assert_eq!(
+ "<bar/>",
+ hbs.render_template(" {{{~ foo ~}}} ", &json!({"foo": "<bar/>"}))
+ .unwrap()
+ );
+
+ assert_eq!(
+ "<bar/>",
+ hbs.render_template(" {{~ {foo} ~}} ", &json!({"foo": "<bar/>"}))
+ .unwrap()
+ );
+}
diff --git a/vendor/hermit-abi/.cargo-checksum.json b/vendor/hermit-abi/.cargo-checksum.json
index 5b4a93900..53188c450 100644
--- a/vendor/hermit-abi/.cargo-checksum.json
+++ b/vendor/hermit-abi/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"9bd554080e32ce81c4741c85e81e70c4009ce5adbf5e8ffe9bda02b964b3208b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"322fadd63e558e5a10caf980cbedf83ac1546ba40fd992f54492e21ce54205af","src/lib.rs":"31fa39172e2e5310a2b2179456cfe3cadcd45443852a01b4a73a601a60bcf211","src/tcplistener.rs":"c6e2db06d4265fa0956851e1c965336d60c53ab21573729aae76ecfe0ccc84c3","src/tcpstream.rs":"38a17de54213faf9de217f6146ff86ee75b67d4404a532b1419903269200936b"},"package":"1ab7905ea95c6d9af62940f9d7dd9596d54c334ae2c15300c482051292d5637f"} \ No newline at end of file
+{"files":{"Cargo.toml":"1b4c80e131e223ca0213e4efe1eda533cd665213aa94ec8920e9b65139cd2122","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"322fadd63e558e5a10caf980cbedf83ac1546ba40fd992f54492e21ce54205af","src/errno.rs":"1c0680ead2ddf26b12d34bd7fa3e1dab386df761d6ac1901889ece26682dc465","src/lib.rs":"f444c2cf2b93506719841cc46605dcded34d0a4b50ff7d5da8d56044610ca463","src/tcplistener.rs":"c6e2db06d4265fa0956851e1c965336d60c53ab21573729aae76ecfe0ccc84c3","src/tcpstream.rs":"38a17de54213faf9de217f6146ff86ee75b67d4404a532b1419903269200936b"},"package":"ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"} \ No newline at end of file
diff --git a/vendor/hermit-abi/Cargo.toml b/vendor/hermit-abi/Cargo.toml
index 81b32c9bf..314aa6ad4 100644
--- a/vendor/hermit-abi/Cargo.toml
+++ b/vendor/hermit-abi/Cargo.toml
@@ -12,18 +12,32 @@
[package]
edition = "2021"
name = "hermit-abi"
-version = "0.2.0"
+version = "0.2.6"
authors = ["Stefan Lankes"]
-description = "hermit-abi is small interface to call functions from the unikernel RustyHermit.\nIt is used to build the target `x86_64-unknown-hermit`.\n"
+description = """
+hermit-abi is small interface to call functions from the unikernel RustyHermit.
+It is used to build the target `x86_64-unknown-hermit`.
+"""
documentation = "https://hermitcore.github.io/rusty-hermit/hermit_abi"
readme = "README.md"
-keywords = ["unikernel", "libos"]
+keywords = [
+ "unikernel",
+ "libos",
+]
categories = ["os"]
license = "MIT/Apache-2.0"
repository = "https://github.com/hermitcore/rusty-hermit"
+resolver = "1"
+
[package.metadata.docs.rs]
-default-target = "x86_64-unknown-hermit"
features = ["docs"]
+default-target = "x86_64-unknown-hermit"
+
+[dependencies.alloc]
+version = "1.0.0"
+optional = true
+package = "rustc-std-workspace-alloc"
+
[dependencies.compiler_builtins]
version = "0.1"
optional = true
@@ -34,10 +48,15 @@ optional = true
package = "rustc-std-workspace-core"
[dependencies.libc]
-version = "0.2.51"
+version = "0.2"
default-features = false
[features]
default = []
docs = []
-rustc-dep-of-std = ["core", "compiler_builtins/rustc-dep-of-std", "libc/rustc-dep-of-std"]
+rustc-dep-of-std = [
+ "core",
+ "alloc",
+ "compiler_builtins/rustc-dep-of-std",
+ "libc/rustc-dep-of-std",
+]
diff --git a/vendor/hermit-abi/src/errno.rs b/vendor/hermit-abi/src/errno.rs
new file mode 100644
index 000000000..dc22dc8ce
--- /dev/null
+++ b/vendor/hermit-abi/src/errno.rs
@@ -0,0 +1,397 @@
+/// Operation not permitted
+pub const EPERM: i32 = 1;
+
+/// No such file or directory
+pub const ENOENT: i32 = 2;
+
+/// No such process
+pub const ESRCH: i32 = 3;
+
+/// Interrupted system call
+pub const EINTR: i32 = 4;
+
+/// I/O error
+pub const EIO: i32 = 5;
+
+/// No such device or address
+pub const ENXIO: i32 = 6;
+
+/// Argument list too long
+pub const E2BIG: i32 = 7;
+
+/// Exec format error
+pub const ENOEXEC: i32 = 8;
+
+/// Bad file number
+pub const EBADF: i32 = 9;
+
+/// No child processes
+pub const ECHILD: i32 = 10;
+
+/// Try again
+pub const EAGAIN: i32 = 11;
+
+/// Out of memory
+pub const ENOMEM: i32 = 12;
+
+/// Permission denied
+pub const EACCES: i32 = 13;
+
+/// Bad address
+pub const EFAULT: i32 = 14;
+
+/// Block device required
+pub const ENOTBLK: i32 = 15;
+
+/// Device or resource busy
+pub const EBUSY: i32 = 16;
+
+/// File exists
+pub const EEXIST: i32 = 17;
+
+/// Cross-device link
+pub const EXDEV: i32 = 18;
+
+/// No such device
+pub const ENODEV: i32 = 19;
+
+/// Not a directory
+pub const ENOTDIR: i32 = 20;
+
+/// Is a directory
+pub const EISDIR: i32 = 21;
+
+/// Invalid argument
+pub const EINVAL: i32 = 22;
+
+/// File table overflow
+pub const ENFILE: i32 = 23;
+
+/// Too many open files
+pub const EMFILE: i32 = 24;
+
+/// Not a typewriter
+pub const ENOTTY: i32 = 25;
+
+/// Text file busy
+pub const ETXTBSY: i32 = 26;
+
+/// File too large
+pub const EFBIG: i32 = 27;
+
+/// No space left on device
+pub const ENOSPC: i32 = 28;
+
+/// Illegal seek
+pub const ESPIPE: i32 = 29;
+
+/// Read-only file system
+pub const EROFS: i32 = 30;
+
+/// Too many links
+pub const EMLINK: i32 = 31;
+
+/// Broken pipe
+pub const EPIPE: i32 = 32;
+
+/// Math argument out of domain of func
+pub const EDOM: i32 = 33;
+
+/// Math result not representable
+pub const ERANGE: i32 = 34;
+
+/// Resource deadlock would occur
+pub const EDEADLK: i32 = 35;
+
+/// File name too long
+pub const ENAMETOOLONG: i32 = 36;
+
+/// No record locks available
+pub const ENOLCK: i32 = 37;
+
+/// Function not implemented
+pub const ENOSYS: i32 = 38;
+
+/// Directory not empty
+pub const ENOTEMPTY: i32 = 39;
+
+/// Too many symbolic links encountered
+pub const ELOOP: i32 = 40;
+
+/// Operation would block
+pub const EWOULDBLOCK: i32 = EAGAIN;
+
+/// No message of desired type
+pub const ENOMSG: i32 = 42;
+
+/// Identifier removed
+pub const EIDRM: i32 = 43;
+
+/// Channel number out of range
+pub const ECHRNG: i32 = 44;
+
+/// Level 2 not synchronized
+pub const EL2NSYNC: i32 = 45;
+
+/// Level 3 halted
+pub const EL3HLT: i32 = 46;
+
+/// Level 3 reset
+pub const EL3RST: i32 = 47;
+
+/// Link number out of range
+pub const ELNRNG: i32 = 48;
+
+/// Protocol driver not attached
+pub const EUNATCH: i32 = 49;
+
+/// No CSI structure available
+pub const ENOCSI: i32 = 50;
+
+/// Level 2 halted
+pub const EL2HLT: i32 = 51;
+
+/// Invalid exchange
+pub const EBADE: i32 = 52;
+
+/// Invalid request descriptor
+pub const EBADR: i32 = 53;
+
+/// Exchange full
+pub const EXFULL: i32 = 54;
+
+/// No anode
+pub const ENOANO: i32 = 55;
+
+/// Invalid request code
+pub const EBADRQC: i32 = 56;
+
+/// Invalid slot
+pub const EBADSLT: i32 = 57;
+
+pub const EDEADLOCK: i32 = EDEADLK;
+
+/// Bad font file format
+pub const EBFONT: i32 = 59;
+
+/// Device not a stream
+pub const ENOSTR: i32 = 60;
+
+/// No data available
+pub const ENODATA: i32 = 61;
+
+/// Timer expired
+pub const ETIME: i32 = 62;
+
+/// Out of streams resources
+pub const ENOSR: i32 = 63;
+
+/// Machine is not on the network
+pub const ENONET: i32 = 64;
+
+/// Package not installed
+pub const ENOPKG: i32 = 65;
+
+/// Object is remote
+pub const EREMOTE: i32 = 66;
+
+/// Link has been severed
+pub const ENOLINK: i32 = 67;
+
+/// Advertise error
+pub const EADV: i32 = 68;
+
+/// Srmount error
+pub const ESRMNT: i32 = 69;
+
+/// Communication error on send
+pub const ECOMM: i32 = 70;
+
+/// Protocol error
+pub const EPROTO: i32 = 71;
+
+/// Multihop attempted
+pub const EMULTIHOP: i32 = 72;
+
+/// RFS specific error
+pub const EDOTDOT: i32 = 73;
+
+/// Not a data message
+pub const EBADMSG: i32 = 74;
+
+/// Value too large for defined data type
+pub const EOVERFLOW: i32 = 75;
+
+/// Name not unique on network
+pub const ENOTUNIQ: i32 = 76;
+
+/// File descriptor in bad state
+pub const EBADFD: i32 = 77;
+
+/// Remote address changed
+pub const EREMCHG: i32 = 78;
+
+/// Can not access a needed shared library
+pub const ELIBACC: i32 = 79;
+
+/// Accessing a corrupted shared library
+pub const ELIBBAD: i32 = 80;
+
+/// .lib section in a.out corrupted
+pub const ELIBSCN: i32 = 81;
+
+/// Attempting to link in too many shared libraries
+pub const ELIBMAX: i32 = 82;
+
+/// Cannot exec a shared library directly
+pub const ELIBEXEC: i32 = 83;
+
+/// Illegal byte sequence
+pub const EILSEQ: i32 = 84;
+
+/// Interrupted system call should be restarted
+pub const ERESTART: i32 = 85;
+
+/// Streams pipe error
+pub const ESTRPIPE: i32 = 86;
+
+/// Too many users
+pub const EUSERS: i32 = 87;
+
+/// Socket operation on non-socket
+pub const ENOTSOCK: i32 = 88;
+
+/// Destination address required
+pub const EDESTADDRREQ: i32 = 89;
+
+/// Message too long
+pub const EMSGSIZE: i32 = 90;
+
+/// Protocol wrong type for socket
+pub const EPROTOTYPE: i32 = 91;
+
+/// Protocol not available
+pub const ENOPROTOOPT: i32 = 92;
+
+/// Protocol not supported
+pub const EPROTONOSUPPORT: i32 = 93;
+
+/// Socket type not supported
+pub const ESOCKTNOSUPPORT: i32 = 94;
+
+/// Operation not supported on transport endpoint
+pub const EOPNOTSUPP: i32 = 95;
+
+/// Protocol family not supported
+pub const EPFNOSUPPORT: i32 = 96;
+
+/// Address family not supported by protocol
+pub const EAFNOSUPPORT: i32 = 97;
+
+/// Address already in use
+pub const EADDRINUSE: i32 = 98;
+
+/// Cannot assign requested address
+pub const EADDRNOTAVAIL: i32 = 99;
+
+/// Network is down
+pub const ENETDOWN: i32 = 100;
+
+/// Network is unreachable
+pub const ENETUNREACH: i32 = 101;
+
+/// Network dropped connection because of reset
+pub const ENETRESET: i32 = 102;
+
+/// Software caused connection abort
+pub const ECONNABORTED: i32 = 103;
+
+/// Connection reset by peer
+pub const ECONNRESET: i32 = 104;
+
+/// No buffer space available
+pub const ENOBUFS: i32 = 105;
+
+/// Transport endpoint is already connected
+pub const EISCONN: i32 = 106;
+
+/// Transport endpoint is not connected
+pub const ENOTCONN: i32 = 107;
+
+/// Cannot send after transport endpoint shutdown
+pub const ESHUTDOWN: i32 = 108;
+
+/// Too many references: cannot splice
+pub const ETOOMANYREFS: i32 = 109;
+
+/// Connection timed out
+pub const ETIMEDOUT: i32 = 110;
+
+/// Connection refused
+pub const ECONNREFUSED: i32 = 111;
+
+/// Host is down
+pub const EHOSTDOWN: i32 = 112;
+
+/// No route to host
+pub const EHOSTUNREACH: i32 = 113;
+
+/// Operation already in progress
+pub const EALREADY: i32 = 114;
+
+/// Operation now in progress
+pub const EINPROGRESS: i32 = 115;
+
+/// Stale file handle
+pub const ESTALE: i32 = 116;
+
+/// Structure needs cleaning
+pub const EUCLEAN: i32 = 117;
+
+/// Not a XENIX named type file
+pub const ENOTNAM: i32 = 118;
+
+/// No XENIX semaphores available
+pub const ENAVAIL: i32 = 119;
+
+/// Is a named type file
+pub const EISNAM: i32 = 120;
+
+/// Remote I/O error
+pub const EREMOTEIO: i32 = 121;
+
+/// Quota exceeded
+pub const EDQUOT: i32 = 122;
+
+/// No medium found
+pub const ENOMEDIUM: i32 = 123;
+
+/// Wrong medium type
+pub const EMEDIUMTYPE: i32 = 124;
+
+/// Operation Canceled
+pub const ECANCELED: i32 = 125;
+
+/// Required key not available
+pub const ENOKEY: i32 = 126;
+
+/// Key has expired
+pub const EKEYEXPIRED: i32 = 127;
+
+/// Key has been revoked
+pub const EKEYREVOKED: i32 = 128;
+
+/// Key was rejected by service
+pub const EKEYREJECTED: i32 = 129;
+
+/// Robust mutexes: Owner died
+pub const EOWNERDEAD: i32 = 130;
+
+/// Robust mutexes: State not recoverable
+pub const ENOTRECOVERABLE: i32 = 131;
+
+/// Robust mutexes: Operation not possible due to RF-kill
+pub const ERFKILL: i32 = 132;
+
+/// Robust mutexes: Memory page has hardware error
+pub const EHWPOISON: i32 = 133;
diff --git a/vendor/hermit-abi/src/lib.rs b/vendor/hermit-abi/src/lib.rs
index 7bb4a4cb0..2a8a2e2dc 100644
--- a/vendor/hermit-abi/src/lib.rs
+++ b/vendor/hermit-abi/src/lib.rs
@@ -5,23 +5,21 @@
#![allow(clippy::missing_safety_doc)]
#![allow(clippy::result_unit_err)]
-extern crate libc;
-
+pub mod errno;
pub mod tcplistener;
pub mod tcpstream;
+use core::mem::MaybeUninit;
+
use libc::c_void;
// sysmbols, which are part of the library operating system
-extern "Rust" {
- fn sys_secure_rand64() -> Option<u64>;
- fn sys_secure_rand32() -> Option<u32>;
-}
-
extern "C" {
fn sys_rand() -> u32;
fn sys_srand(seed: u32);
+ fn sys_secure_rand32(value: *mut u32) -> i32;
+ fn sys_secure_rand64(value: *mut u64) -> i32;
fn sys_get_processor_count() -> usize;
fn sys_malloc(size: usize, align: usize) -> *mut u8;
fn sys_realloc(ptr: *mut u8, size: usize, align: usize, new_size: usize) -> *mut u8;
@@ -34,6 +32,13 @@ extern "C" {
fn sys_read(fd: i32, buf: *mut u8, len: usize) -> isize;
fn sys_write(fd: i32, buf: *const u8, len: usize) -> isize;
fn sys_close(fd: i32) -> i32;
+ fn sys_futex_wait(
+ address: *mut u32,
+ expected: u32,
+ timeout: *const timespec,
+ flags: u32,
+ ) -> i32;
+ fn sys_futex_wake(address: *mut u32, count: i32) -> i32;
fn sys_sem_init(sem: *mut *const c_void, value: u32) -> i32;
fn sys_sem_destroy(sem: *const c_void) -> i32;
fn sys_sem_post(sem: *const c_void) -> i32;
@@ -68,8 +73,10 @@ extern "C" {
fn sys_unlink(name: *const i8) -> i32;
fn sys_network_init() -> i32;
fn sys_block_current_task();
+ fn sys_block_current_task_with_timeout(timeout: u64);
fn sys_wakeup_task(tid: Tid);
fn sys_get_priority() -> u8;
+ fn sys_set_priority(tid: Tid, prio: u8);
}
/// A thread handle type
@@ -101,6 +108,7 @@ pub const LOW_PRIO: Priority = Priority::from(1);
pub struct Handle(usize);
pub const NSEC_PER_SEC: u64 = 1_000_000_000;
+pub const FUTEX_RELATIVE_TIMEOUT: u32 = 1;
pub const CLOCK_REALTIME: u64 = 1;
pub const CLOCK_MONOTONIC: u64 = 4;
pub const STDIN_FILENO: libc::c_int = 0;
@@ -245,6 +253,33 @@ pub unsafe fn close(fd: i32) -> i32 {
sys_close(fd)
}
+/// If the value at address matches the expected value, park the current thread until it is either
+/// woken up with [`futex_wake`] (returns 0) or an optional timeout elapses (returns -ETIMEDOUT).
+///
+/// Setting `timeout` to null means the function will only return if [`futex_wake`] is called.
+/// Otherwise, `timeout` is interpreted as an absolute time measured with [`CLOCK_MONOTONIC`].
+/// If [`FUTEX_RELATIVE_TIMEOUT`] is set in `flags` the timeout is understood to be relative
+/// to the current time.
+///
+/// Returns -EINVAL if `address` is null, the timeout is negative or `flags` contains unknown values.
+#[inline(always)]
+pub unsafe fn futex_wait(
+ address: *mut u32,
+ expected: u32,
+ timeout: *const timespec,
+ flags: u32,
+) -> i32 {
+ sys_futex_wait(address, expected, timeout, flags)
+}
+
+/// Wake `count` threads waiting on the futex at `address`. Returns the number of threads
+/// woken up (saturates to `i32::MAX`). If `count` is `i32::MAX`, wake up all matching
+/// waiting threads. If `count` is negative or `address` is null, returns -EINVAL.
+#[inline(always)]
+pub unsafe fn futex_wake(address: *mut u32, count: i32) -> i32 {
+ sys_futex_wake(address, count)
+}
+
/// sem_init() initializes the unnamed semaphore at the address
/// pointed to by `sem`. The `value` argument specifies the
/// initial value for the semaphore.
@@ -459,7 +494,9 @@ pub unsafe fn srand(seed: u32) {
/// the function returns `None`.
#[inline(always)]
pub unsafe fn secure_rand32() -> Option<u32> {
- sys_secure_rand32()
+ let mut rand = MaybeUninit::uninit();
+ let res = sys_secure_rand32(rand.as_mut_ptr());
+ (res == 0).then(|| rand.assume_init())
}
/// Create a cryptographicly secure 64bit random number with the support of
@@ -467,16 +504,27 @@ pub unsafe fn secure_rand32() -> Option<u32> {
/// the function returns `None`.
#[inline(always)]
pub unsafe fn secure_rand64() -> Option<u64> {
- sys_secure_rand64()
+ let mut rand = MaybeUninit::uninit();
+ let res = sys_secure_rand64(rand.as_mut_ptr());
+ (res == 0).then(|| rand.assume_init())
}
-/// Add current task to the queue of blocked tasl. After calling `block_current_task`,
+/// Add current task to the queue of blocked tasks. After calling `block_current_task`,
/// call `yield_now` to switch to another task.
#[inline(always)]
pub unsafe fn block_current_task() {
sys_block_current_task();
}
+/// Add current task to the queue of blocked tasks, but wake it when `timeout` milliseconds
+/// have elapsed.
+///
+/// After calling `block_current_task`, call `yield_now` to switch to another task.
+#[inline(always)]
+pub unsafe fn block_current_task_with_timeout(timeout: u64) {
+ sys_block_current_task_with_timeout(timeout);
+}
+
/// Wakeup task with the thread id `tid`
#[inline(always)]
pub unsafe fn wakeup_task(tid: Tid) {
@@ -488,3 +536,9 @@ pub unsafe fn wakeup_task(tid: Tid) {
pub unsafe fn get_priority() -> Priority {
Priority::from(sys_get_priority())
}
+
+/// Determine the priority of the current thread
+#[inline(always)]
+pub unsafe fn set_priority(tid: Tid, prio: Priority) {
+ sys_set_priority(tid, prio.into());
+}
diff --git a/vendor/home/.cargo-checksum.json b/vendor/home/.cargo-checksum.json
index 637f4c5ce..ad8175dc3 100644
--- a/vendor/home/.cargo-checksum.json
+++ b/vendor/home/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"f6ea8042d794bed2af227905011daada5eaa1eb15ba63589d2aa9c8bd5ea06e7","LICENSE-APACHE":"aefbb3792184d86e625cd877b226a00e2cf13cb546ae79e78ddb9e3f097a7156","LICENSE-MIT":"ea7c5138df175c35e89b7adc1b1b35e07786a40330cae4beb2172781bd3daad9","README.md":"13b381ff7553b3467c85b877ee0aae43ebf444deca1c85131d5f0fb3b27d5003","src/lib.rs":"bbadf2a9750a1dd204057dee19e4282d48a878bd9b1810bedf59dc4b55a992eb","src/windows.rs":"061ce6208d2a366cdbf9d094c60fa73b7e856eb1f510fa2aaf5d109bded35442"},"package":"2456aef2e6b6a9784192ae780c0f15bc57df0e918585282325e8c8ac27737654"} \ No newline at end of file
+{"files":{"Cargo.toml":"12996f8286ac1164cb7026f8e170316337a0acb2d180fbf41192ddcf534a4843","LICENSE-APACHE":"aefbb3792184d86e625cd877b226a00e2cf13cb546ae79e78ddb9e3f097a7156","LICENSE-MIT":"ea7c5138df175c35e89b7adc1b1b35e07786a40330cae4beb2172781bd3daad9","README.md":"13b381ff7553b3467c85b877ee0aae43ebf444deca1c85131d5f0fb3b27d5003","src/env.rs":"4e8bd91330f6ae948f5b825e9884720631f4fe9282fb4548915218e1c43b54a5","src/lib.rs":"cc2675a4c0d5b2e3041228554718f63f754811e9b45a3c9b423bd2f43adf38e3","src/windows.rs":"061ce6208d2a366cdbf9d094c60fa73b7e856eb1f510fa2aaf5d109bded35442"},"package":"747309b4b440c06d57b0b25f2aee03ee9b5e5397d288c60e21fc709bb98a7408"} \ No newline at end of file
diff --git a/vendor/home/Cargo.toml b/vendor/home/Cargo.toml
index 245d5e1d8..765a5f903 100644
--- a/vendor/home/Cargo.toml
+++ b/vendor/home/Cargo.toml
@@ -3,24 +3,34 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
name = "home"
-version = "0.5.3"
+version = "0.5.4"
authors = ["Brian Anderson <andersrb@gmail.com>"]
-include = ["/src", "/Cargo.toml", "/CHANGELOG", "/LICENSE-*", "/README.md"]
+include = [
+ "/src",
+ "/Cargo.toml",
+ "/CHANGELOG",
+ "/LICENSE-*",
+ "/README.md",
+]
description = "Shared definitions of home directories"
documentation = "https://docs.rs/home"
readme = "README.md"
license = "MIT OR Apache-2.0"
repository = "https://github.com/brson/home"
+
[target."cfg(windows)".dependencies.winapi]
version = "0.3"
-features = ["shlobj", "std", "winerror"]
+features = [
+ "shlobj",
+ "std",
+ "winerror",
+]
diff --git a/vendor/home/src/env.rs b/vendor/home/src/env.rs
new file mode 100644
index 000000000..e47273bc8
--- /dev/null
+++ b/vendor/home/src/env.rs
@@ -0,0 +1,106 @@
+//! Lower-level utilities for mocking the process environment.
+
+use std::{
+ ffi::OsString,
+ io,
+ path::{Path, PathBuf},
+};
+
+/// Permits parameterizing the home functions via the _from variants - used for
+/// in-process unit testing by rustup.
+pub trait Env {
+ /// Return the path to the the users home dir, or None if any error occurs:
+ /// see home_inner.
+ fn home_dir(&self) -> Option<PathBuf>;
+ /// Return the current working directory.
+ fn current_dir(&self) -> io::Result<PathBuf>;
+ /// Get an environment variable, as per std::env::var_os.
+ fn var_os(&self, key: &str) -> Option<OsString>;
+}
+
+/// Implements Env for the OS context, both Unix style and Windows.
+///
+/// This is trait permits in-process testing by providing a control point to
+/// allow in-process divergence on what is normally process wide state.
+///
+/// Implementations should be provided by whatever testing framework the caller
+/// is using. Code that is not performing in-process threaded testing requiring
+/// isolated rustup/cargo directories does not need this trait or the _from
+/// functions.
+pub struct OsEnv;
+impl Env for OsEnv {
+ fn home_dir(&self) -> Option<PathBuf> {
+ crate::home_dir_inner()
+ }
+ fn current_dir(&self) -> io::Result<PathBuf> {
+ std::env::current_dir()
+ }
+ fn var_os(&self, key: &str) -> Option<OsString> {
+ std::env::var_os(key)
+ }
+}
+
+pub const OS_ENV: OsEnv = OsEnv {};
+
+/// Returns the path of the current user's home directory from [`Env::home_dir`].
+pub fn home_dir_with_env(env: &dyn Env) -> Option<PathBuf> {
+ env.home_dir()
+}
+
+/// Variant of cargo_home where the environment source is parameterized. This is
+/// specifically to support in-process testing scenarios as environment
+/// variables and user home metadata are normally process global state. See the
+/// [`Env`] trait.
+pub fn cargo_home_with_env(env: &dyn Env) -> io::Result<PathBuf> {
+ let cwd = env.current_dir()?;
+ cargo_home_with_cwd_env(env, &cwd)
+}
+
+/// Variant of cargo_home_with_cwd where the environment source is
+/// parameterized. This is specifically to support in-process testing scenarios
+/// as environment variables and user home metadata are normally process global
+/// state. See the OsEnv trait.
+pub fn cargo_home_with_cwd_env(env: &dyn Env, cwd: &Path) -> io::Result<PathBuf> {
+ match env.var_os("CARGO_HOME").filter(|h| !h.is_empty()) {
+ Some(home) => {
+ let home = PathBuf::from(home);
+ if home.is_absolute() {
+ Ok(home)
+ } else {
+ Ok(cwd.join(&home))
+ }
+ }
+ _ => home_dir_with_env(env)
+ .map(|p| p.join(".cargo"))
+ .ok_or_else(|| io::Error::new(io::ErrorKind::Other, "could not find cargo home dir")),
+ }
+}
+
+/// Variant of cargo_home_with_cwd where the environment source is
+/// parameterized. This is specifically to support in-process testing scenarios
+/// as environment variables and user home metadata are normally process global
+/// state. See the OsEnv trait.
+pub fn rustup_home_with_env(env: &dyn Env) -> io::Result<PathBuf> {
+ let cwd = env.current_dir()?;
+ rustup_home_with_cwd_env(env, &cwd)
+}
+
+/// Variant of cargo_home_with_cwd where the environment source is
+/// parameterized. This is specifically to support in-process testing scenarios
+/// as environment variables and user home metadata are normally process global
+/// state. See the OsEnv trait.
+pub fn rustup_home_with_cwd_env(env: &dyn Env, cwd: &Path) -> io::Result<PathBuf> {
+ match env.var_os("RUSTUP_HOME").filter(|h| !h.is_empty()) {
+ Some(home) => {
+ let home = PathBuf::from(home);
+ if home.is_absolute() {
+ Ok(home)
+ } else {
+ Ok(cwd.join(&home))
+ }
+ }
+ _ => home_dir_with_env(env)
+ .map(|d| d.join(".rustup"))
+ .ok_or_else(|| io::Error::new(io::ErrorKind::Other, "could not find rustup home dir")),
+ }
+}
diff --git a/vendor/home/src/lib.rs b/vendor/home/src/lib.rs
index ad31d3d2e..ad254ca3b 100644
--- a/vendor/home/src/lib.rs
+++ b/vendor/home/src/lib.rs
@@ -25,13 +25,14 @@
//!
//! [discussion]: https://github.com/rust-lang/rust/pull/46799#issuecomment-361156935
-#![doc(html_root_url = "https://docs.rs/home/0.5.3")]
+#![doc(html_root_url = "https://docs.rs/home/0.5.4")]
#![deny(rust_2018_idioms)]
+pub mod env;
+
#[cfg(windows)]
mod windows;
-use std::env;
use std::io;
use std::path::{Path, PathBuf};
@@ -48,10 +49,9 @@ use std::path::{Path, PathBuf};
///
/// Returns the value of the `USERPROFILE` environment variable if it
/// is set and not equal to the empty string. If both do not exist,
-/// [`GetUserProfileDirectory`][msdn] is used to return the
-/// appropriate path.
+/// [`SHGetFolderPathW`][msdn] is used to return the appropriate path.
///
-/// [msdn]: https://docs.microsoft.com/en-us/windows/win32/api/userenv/nf-userenv-getuserprofiledirectoryw
+/// [msdn]: https://docs.microsoft.com/en-us/windows/win32/api/shlobj_core/nf-shlobj_core-shgetfolderpathw
///
/// # Examples
///
@@ -62,7 +62,7 @@ use std::path::{Path, PathBuf};
/// }
/// ```
pub fn home_dir() -> Option<PathBuf> {
- home_dir_inner()
+ env::home_dir_with_env(&env::OS_ENV)
}
#[cfg(windows)]
@@ -71,7 +71,7 @@ use windows::home_dir_inner;
#[cfg(any(unix, target_os = "redox"))]
fn home_dir_inner() -> Option<PathBuf> {
#[allow(deprecated)]
- env::home_dir()
+ std::env::home_dir()
}
/// Returns the storage directory used by Cargo, often knowns as
@@ -102,26 +102,13 @@ fn home_dir_inner() -> Option<PathBuf> {
/// }
/// ```
pub fn cargo_home() -> io::Result<PathBuf> {
- let cwd = env::current_dir()?;
- cargo_home_with_cwd(&cwd)
+ env::cargo_home_with_env(&env::OS_ENV)
}
/// Returns the storage directory used by Cargo within `cwd`.
/// For more details, see [`cargo_home`](fn.cargo_home.html).
pub fn cargo_home_with_cwd(cwd: &Path) -> io::Result<PathBuf> {
- match env::var_os("CARGO_HOME").filter(|h| !h.is_empty()) {
- Some(home) => {
- let home = PathBuf::from(home);
- if home.is_absolute() {
- Ok(home)
- } else {
- Ok(cwd.join(&home))
- }
- }
- _ => home_dir()
- .map(|p| p.join(".cargo"))
- .ok_or_else(|| io::Error::new(io::ErrorKind::Other, "could not find cargo home dir")),
- }
+ env::cargo_home_with_cwd_env(&env::OS_ENV, cwd)
}
/// Returns the storage directory used by rustup, often knowns as
@@ -152,24 +139,11 @@ pub fn cargo_home_with_cwd(cwd: &Path) -> io::Result<PathBuf> {
/// }
/// ```
pub fn rustup_home() -> io::Result<PathBuf> {
- let cwd = env::current_dir()?;
- rustup_home_with_cwd(&cwd)
+ env::rustup_home_with_env(&env::OS_ENV)
}
/// Returns the storage directory used by rustup within `cwd`.
/// For more details, see [`rustup_home`](fn.rustup_home.html).
pub fn rustup_home_with_cwd(cwd: &Path) -> io::Result<PathBuf> {
- match env::var_os("RUSTUP_HOME").filter(|h| !h.is_empty()) {
- Some(home) => {
- let home = PathBuf::from(home);
- if home.is_absolute() {
- Ok(home)
- } else {
- Ok(cwd.join(&home))
- }
- }
- _ => home_dir()
- .map(|d| d.join(".rustup"))
- .ok_or_else(|| io::Error::new(io::ErrorKind::Other, "could not find rustup home dir")),
- }
+ env::rustup_home_with_cwd_env(&env::OS_ENV, cwd)
}
diff --git a/vendor/idna/.cargo-checksum.json b/vendor/idna/.cargo-checksum.json
index 01c1655f1..edf5c94ba 100644
--- a/vendor/idna/.cargo-checksum.json
+++ b/vendor/idna/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"fa141dcb135262e5fda9f680671699045326d96779bb1acf38d48c70c712bcdf","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e","benches/all.rs":"e734b9c9092ed66986725f86cfe90f3756cfddb058af308b796ba494f9beefc2","src/IdnaMappingTable.txt":"87d6553a4b86bc49dcade38bf26b745cd81800eb8af295dc3fb99b4729eaea38","src/lib.rs":"d61b2bfcf4265b9a41eedd1de33ab49ea615e3c06df944321b30c57950a85342","src/make_uts46_mapping_table.py":"917055fa841f813de2bcf79cc79b595da3d5551559ee768db8660ab77cb26c34","src/punycode.rs":"07edf5293bc384a164eebb01bc18fe3d4b2d009b4565a36b74a3030978ea6e04","src/uts46.rs":"40521a01e5b8c38667252d5b1e0141c5a71f63aeae2f451b986792984e633b09","src/uts46_mapping_table.rs":"942fff78147c61da942f5f3a7ff4e90f9d7a00a29285733ac3fc3357eb2ed06f","tests/IdnaTestV2.txt":"c6f3778b0545fd150c8063286c7f5adc901e16557eddccc3751213646d07593d","tests/punycode.rs":"e6fb978f48445d1525a6b97351c41c5393a1612a35f85b9a7f45b8794fce9aba","tests/punycode_tests.json":"3d4ac0cf25984c37b9ce197f5df680a0136f728fb8ec82bc76624e42139eb3a8","tests/tests.rs":"de7425a3e4e6e871255721107803704d1431246601fa9c87105224d88dfe60d6","tests/unit.rs":"be025a7d9bab3bd1ce134c87f9d848269e157b31ca5ba0ea03426c1ac736b69e","tests/uts46.rs":"ca91d48811d366fb9e32d7aa79cfda1261b93c271b6ed7fb5535de9a2500205b"},"package":"418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"} \ No newline at end of file
+{"files":{"Cargo.toml":"e8c4cbd1a352ce9085b80ac9fcaa8468a2da84b615adf01e719a3020a0279e4c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"76e972ac0f4ddb116e86e10100132a783931a596e7b9872eaa31be15cd4d751d","benches/all.rs":"e734b9c9092ed66986725f86cfe90f3756cfddb058af308b796ba494f9beefc2","src/IdnaMappingTable.txt":"87d6553a4b86bc49dcade38bf26b745cd81800eb8af295dc3fb99b4729eaea38","src/lib.rs":"498f127759fa79bda0d264f373ab7230cc2c73ef3a7b532d619c2a513abb53ff","src/make_uts46_mapping_table.py":"917055fa841f813de2bcf79cc79b595da3d5551559ee768db8660ab77cb26c34","src/punycode.rs":"07edf5293bc384a164eebb01bc18fe3d4b2d009b4565a36b74a3030978ea6e04","src/uts46.rs":"1a5604c32cf57b50e846b58aaaba94e685ff10975e9d6d82ae953f8cefe9c028","src/uts46_mapping_table.rs":"942fff78147c61da942f5f3a7ff4e90f9d7a00a29285733ac3fc3357eb2ed06f","tests/IdnaTestV2.txt":"c6f3778b0545fd150c8063286c7f5adc901e16557eddccc3751213646d07593d","tests/punycode.rs":"7eb6215fa4c84e6710682d48dffe19e490aea223b554b97c180a7d504b9e492a","tests/punycode_tests.json":"3d4ac0cf25984c37b9ce197f5df680a0136f728fb8ec82bc76624e42139eb3a8","tests/tests.rs":"d205a2bfb29dfee73e014faebd3207a55ef0d40121e6dbd52f5d611b37ac111e","tests/unit.rs":"be025a7d9bab3bd1ce134c87f9d848269e157b31ca5ba0ea03426c1ac736b69e","tests/uts46.rs":"06c97bf7dc20f5372b542fa46922d6dd63fe15e0aa34d799d08df9e3a241aa21"},"package":"e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"} \ No newline at end of file
diff --git a/vendor/idna/Cargo.toml b/vendor/idna/Cargo.toml
index 138a27162..fa2ed42bc 100644
--- a/vendor/idna/Cargo.toml
+++ b/vendor/idna/Cargo.toml
@@ -3,21 +3,21 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
+rust-version = "1.51"
name = "idna"
-version = "0.2.3"
+version = "0.3.0"
authors = ["The rust-url developers"]
autotests = false
description = "IDNA (Internationalizing Domain Names in Applications) and Punycode."
-license = "MIT/Apache-2.0"
+license = "MIT OR Apache-2.0"
repository = "https://github.com/servo/rust-url/"
[lib]
@@ -33,22 +33,21 @@ name = "unit"
[[bench]]
name = "all"
harness = false
-[dependencies.matches]
-version = "0.1"
[dependencies.unicode-bidi]
version = "0.3"
[dependencies.unicode-normalization]
version = "0.1.17"
+
[dev-dependencies.assert_matches]
version = "1.3"
[dev-dependencies.bencher]
version = "0.1"
-[dev-dependencies.rustc-test]
-version = "0.3"
-
[dev-dependencies.serde_json]
version = "1.0"
+
+[dev-dependencies.tester]
+version = "0.9"
diff --git a/vendor/idna/LICENSE-MIT b/vendor/idna/LICENSE-MIT
index 24de6b418..51d5dc7eb 100644
--- a/vendor/idna/LICENSE-MIT
+++ b/vendor/idna/LICENSE-MIT
@@ -1,4 +1,4 @@
-Copyright (c) 2013-2016 The rust-url developers
+Copyright (c) 2013-2022 The rust-url developers
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
diff --git a/vendor/idna/src/lib.rs b/vendor/idna/src/lib.rs
index b87d4a15e..37d638741 100644
--- a/vendor/idna/src/lib.rs
+++ b/vendor/idna/src/lib.rs
@@ -32,8 +32,9 @@
//! > that minimizes the impact of this transition for client software,
//! > allowing client software to access domains that are valid under either system.
+#[cfg(test)]
#[macro_use]
-extern crate matches;
+extern crate assert_matches;
pub mod punycode;
mod uts46;
diff --git a/vendor/idna/src/uts46.rs b/vendor/idna/src/uts46.rs
index ad798055f..ec2fd0b10 100644
--- a/vendor/idna/src/uts46.rs
+++ b/vendor/idna/src/uts46.rs
@@ -156,7 +156,7 @@ fn passes_bidi(label: &str, is_bidi_domain: bool) -> bool {
// LTR label
BidiClass::L => {
// Rule 5
- while let Some(c) = chars.next() {
+ for c in chars.by_ref() {
if !matches!(
bidi_class(c),
BidiClass::L
@@ -318,51 +318,48 @@ fn check_validity(label: &str, config: Config, errors: &mut Errors) {
// V8: Bidi rules are checked inside `processing()`
}
-/// http://www.unicode.org/reports/tr46/#Processing
-#[allow(clippy::manual_strip)] // introduced in 1.45, MSRV is 1.36
-fn processing(
- domain: &str,
- config: Config,
- normalized: &mut String,
- output: &mut String,
-) -> Errors {
- // Weed out the simple cases: only allow all lowercase ASCII characters and digits where none
- // of the labels start with PUNYCODE_PREFIX and labels don't start or end with hyphen.
- let (mut prev, mut simple, mut puny_prefix) = ('?', !domain.is_empty(), 0);
+// Detect simple cases: all lowercase ASCII characters and digits where none
+// of the labels start with PUNYCODE_PREFIX and labels don't start or end with hyphen.
+fn is_simple(domain: &str) -> bool {
+ if domain.is_empty() {
+ return false;
+ }
+ let (mut prev, mut puny_prefix) = ('?', 0);
for c in domain.chars() {
if c == '.' {
if prev == '-' {
- simple = false;
- break;
+ return false;
}
puny_prefix = 0;
continue;
} else if puny_prefix == 0 && c == '-' {
- simple = false;
- break;
+ return false;
} else if puny_prefix < 5 {
if c == ['x', 'n', '-', '-'][puny_prefix] {
puny_prefix += 1;
if puny_prefix == 4 {
- simple = false;
- break;
+ return false;
}
} else {
puny_prefix = 5;
}
}
if !c.is_ascii_lowercase() && !c.is_ascii_digit() {
- simple = false;
- break;
+ return false;
}
prev = c;
}
- if simple {
- output.push_str(domain);
- return Errors::default();
- }
+ true
+}
+/// http://www.unicode.org/reports/tr46/#Processing
+fn processing(
+ domain: &str,
+ config: Config,
+ normalized: &mut String,
+ output: &mut String,
+) -> Errors {
normalized.clear();
let mut errors = Errors::default();
let offset = output.len();
@@ -384,8 +381,8 @@ fn processing(
output.push('.');
}
first = false;
- if label.starts_with(PUNYCODE_PREFIX) {
- match decoder.decode(&label[PUNYCODE_PREFIX.len()..]) {
+ if let Some(remainder) = label.strip_prefix(PUNYCODE_PREFIX) {
+ match decoder.decode(remainder) {
Ok(decode) => {
let start = output.len();
output.extend(decode);
@@ -396,7 +393,7 @@ fn processing(
}
if !errors.is_err() {
- if !is_nfc(&decoded_label) {
+ if !is_nfc(decoded_label) {
errors.nfc = true;
} else {
check_validity(decoded_label, non_transitional, &mut errors);
@@ -448,11 +445,13 @@ impl Idna {
}
}
- /// http://www.unicode.org/reports/tr46/#ToASCII
- #[allow(clippy::wrong_self_convention)]
- pub fn to_ascii<'a>(&'a mut self, domain: &str, out: &mut String) -> Result<(), Errors> {
- let mut errors = processing(domain, self.config, &mut self.normalized, &mut self.output);
-
+ pub fn to_ascii_inner(&mut self, domain: &str, out: &mut String) -> Errors {
+ if is_simple(domain) {
+ out.push_str(domain);
+ return Errors::default();
+ }
+ let mut errors = processing(domain, self.config, &mut self.normalized, out);
+ self.output = std::mem::replace(out, String::with_capacity(out.len()));
let mut first = true;
for label in self.output.split('.') {
if !first {
@@ -471,6 +470,13 @@ impl Idna {
}
}
}
+ errors
+ }
+
+ /// http://www.unicode.org/reports/tr46/#ToASCII
+ #[allow(clippy::wrong_self_convention)]
+ pub fn to_ascii<'a>(&'a mut self, domain: &str, out: &mut String) -> Result<(), Errors> {
+ let mut errors = self.to_ascii_inner(domain, out);
if self.config.verify_dns_length {
let domain = if out.ends_with('.') {
@@ -492,6 +498,10 @@ impl Idna {
/// http://www.unicode.org/reports/tr46/#ToUnicode
#[allow(clippy::wrong_self_convention)]
pub fn to_unicode<'a>(&'a mut self, domain: &str, out: &mut String) -> Result<(), Errors> {
+ if is_simple(domain) {
+ out.push_str(domain);
+ return Errors::default().into();
+ }
processing(domain, self.config, &mut self.normalized, out).into()
}
}
@@ -555,7 +565,7 @@ impl Config {
/// http://www.unicode.org/reports/tr46/#ToASCII
pub fn to_ascii(self, domain: &str) -> Result<String, Errors> {
- let mut result = String::new();
+ let mut result = String::with_capacity(domain.len());
let mut codec = Idna::new(self);
codec.to_ascii(domain, &mut result).map(|()| result)
}
diff --git a/vendor/idna/tests/punycode.rs b/vendor/idna/tests/punycode.rs
index c0123c639..1a51cbc92 100644
--- a/vendor/idna/tests/punycode.rs
+++ b/vendor/idna/tests/punycode.rs
@@ -63,9 +63,9 @@ pub fn collect_tests<F: FnMut(String, TestFn)>(add_test: &mut F) {
};
add_test(
test_name,
- TestFn::dyn_test_fn(move || {
+ TestFn::DynTestFn(Box::new(move || {
one_test(get_string(&o, "decoded"), get_string(&o, "encoded"))
- }),
+ })),
)
}
_ => panic!(),
diff --git a/vendor/idna/tests/tests.rs b/vendor/idna/tests/tests.rs
index 5f0f8cde3..0704c81c1 100644
--- a/vendor/idna/tests/tests.rs
+++ b/vendor/idna/tests/tests.rs
@@ -1,4 +1,4 @@
-use rustc_test as test;
+use tester as test;
mod punycode;
mod uts46;
@@ -8,12 +8,18 @@ fn main() {
{
let mut add_test = |name, run| {
tests.push(test::TestDescAndFn {
- desc: test::TestDesc::new(test::DynTestName(name)),
+ desc: test::TestDesc {
+ name: test::DynTestName(name),
+ ignore: false,
+ should_panic: test::ShouldPanic::No,
+ allow_fail: false,
+ test_type: test::TestType::Unknown,
+ },
testfn: run,
})
};
punycode::collect_tests(&mut add_test);
uts46::collect_tests(&mut add_test);
}
- test::test_main(&std::env::args().collect::<Vec<_>>(), tests)
+ test::test_main(&std::env::args().collect::<Vec<_>>(), tests, None)
}
diff --git a/vendor/idna/tests/uts46.rs b/vendor/idna/tests/uts46.rs
index 72b5bcec7..bd402ce97 100644
--- a/vendor/idna/tests/uts46.rs
+++ b/vendor/idna/tests/uts46.rs
@@ -8,6 +8,7 @@
use crate::test::TestFn;
use std::char;
+use std::fmt::Write;
use idna::Errors;
@@ -25,10 +26,10 @@ pub fn collect_tests<F: FnMut(String, TestFn)>(add_test: &mut F) {
};
let mut pieces = line.split(';').map(|x| x.trim()).collect::<Vec<&str>>();
- let source = unescape(&pieces.remove(0));
+ let source = unescape(pieces.remove(0));
// ToUnicode
- let mut to_unicode = unescape(&pieces.remove(0));
+ let mut to_unicode = unescape(pieces.remove(0));
if to_unicode.is_empty() {
to_unicode = source.clone();
}
@@ -65,7 +66,7 @@ pub fn collect_tests<F: FnMut(String, TestFn)>(add_test: &mut F) {
let test_name = format!("UTS #46 line {}", i + 1);
add_test(
test_name,
- TestFn::dyn_test_fn(move || {
+ TestFn::DynTestFn(Box::new(move || {
let config = idna::Config::default()
.use_std3_ascii_rules(true)
.verify_dns_length(true)
@@ -109,7 +110,7 @@ pub fn collect_tests<F: FnMut(String, TestFn)>(add_test: &mut F) {
to_ascii_t_result,
|e| e.starts_with('C') || e == "V2",
);
- }),
+ })),
)
}
}
@@ -160,8 +161,8 @@ fn unescape(input: &str) -> String {
match char::from_u32(((c1 * 16 + c2) * 16 + c3) * 16 + c4) {
Some(c) => output.push(c),
None => {
- output
- .push_str(&format!("\\u{:X}{:X}{:X}{:X}", c1, c2, c3, c4));
+ write!(&mut output, "\\u{:X}{:X}{:X}{:X}", c1, c2, c3, c4)
+ .expect("Could not write to output");
}
};
}
diff --git a/vendor/itertools/.cargo-checksum.json b/vendor/itertools/.cargo-checksum.json
index cbed44086..a4f2873c5 100644
--- a/vendor/itertools/.cargo-checksum.json
+++ b/vendor/itertools/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"7f54a6e7b78dae273c5352ca3472c8e7d4996d42879ffbb8430df37c020c8a6a","Cargo.lock":"74a768ea98da273b20c181728d646b0e59ece19d5738f983ee8804f35a5e6af4","Cargo.toml":"3934329298921fda64203f05a3b194b3a4f009e85fdcb78b46c8a743176e1059","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README.md":"6ba6696202f5a848c40f0cdef0ae9282a8edd45b44e5d901160930534427e62d","benches/bench1.rs":"bb06f39db0544b1380cd4929139ccf521a9eecab7ca3f910b9499f965ec0a047","benches/combinations.rs":"51523ee1ca438a56f14711f0b04ee943895062d35859fbe23a2714d2fca3289d","benches/combinations_with_replacement.rs":"11f29160652a2d90ce7ca4b1c339c4457888ab6867e2456ce1c62e3adf9be737","benches/extra/mod.rs":"6ca290d72302a1945078621610b5788060b0de29639decebbdc557a80044aa97","benches/extra/zipslices.rs":"3db9764c21536c541cdf3f93ba2e34f6ab63dd12a9149aa5bd8a4524778176f1","benches/fold_specialization.rs":"5a517bbe29d366a15f6f751660e17ab1aa3e7b21552a1983048c662e34f0d69e","benches/powerset.rs":"6fd9d69a3483b37dc2411f99fb4efa6131577696f2dbdc8d1de9e4d7642fe3a3","benches/tree_fold1.rs":"539232e74f9aaea295a42069ac5af707811e90dc1c71c6e0a9064ffc731999de","benches/tuple_combinations.rs":"16366158743307a0289fc1df423a3cec45009807d410a9fe9922d5b6f8b7d002","benches/tuples.rs":"5a620783ae203e9ff9623d10d2c7fe9911d8b6c811cbad7613afa30e390c759d","examples/iris.data":"596ffd580471ca4d4880f8e439c7281f3b50d8249a5960353cb200b1490f63a0","examples/iris.rs":"1b465ed6a417180913104bc95a545fd9d1a3d67d121871ab737ad87e31b8be37","src/adaptors/coalesce.rs":"11d88d64fc1e3e80fc847cfbff7627e7164a1621e2e989afdd0730f2f3172dca","src/adaptors/map.rs":"241971e856e468d71323071fb4a09867fbcedb83877320be132dc03516fe60e8","src/adaptors/mod.rs":"be7eab70869f4fcf5e0e441ba7646759a39ec86952d54a3df22b60b919572ec3","src/adaptors/multi_product.rs":"742a8a42f2cc2b3840b0397639cb57d87deac8483127012c1f9a0be9c02ff1f1","src/combinations.rs":"fb25babb459389093f886721016c72bf9f00e51d02735f638d871bb3a447ffd0","src/combinations_with_replacement.rs":"3cb719c61a39af0c7e73139e0d1a94e716b69cbe6b046e3ca39150c9995ec7ff","src/concat_impl.rs":"7e14b7c1ad592a40373aec1140ed4cecc04462a9724a8ee663f3e757f457c587","src/cons_tuples_impl.rs":"c253d03b861831c01d62cacc57b49715ee62f6171e69f6886bb5a6ca0863bc3a","src/diff.rs":"a7800e9ce7a87b53ebe2338481335751fb43d44fa6a1ca719aceaaab40e5c8fe","src/duplicates_impl.rs":"663bd10f0a8f49ce0a58ba1c488a70684b61f9636232310fe8ffa2f356961e94","src/either_or_both.rs":"4f17729e9a28508cf60734355d748399c9b05d4df970b75a23e41fe462171464","src/exactly_one_err.rs":"3a72023c689a27fa9ed5e11ff2e32638d548bd327b00c642d5ee1c79e9300f75","src/flatten_ok.rs":"294f313d6e4e34c4e4d03facfd8a15ba92742ba94e609386d76e75d725d4eb14","src/format.rs":"a8192d85c0f9de8e633c202456e3cde0f3bc50f19b6bd8a4b2cfa3ef5123de1a","src/free.rs":"75189fd779017ee2c083e3e75982f1b7d4b51fae99b105a2b2d0e3d2d16dda4f","src/group_map.rs":"f7b02c964f63505d3e36280cfdc1755e05287714201efe983dacf702eee61434","src/groupbylazy.rs":"69829a5990c666cf9dfc7330a1765e0ecb6901a4572f8cda86e81f391af62283","src/grouping_map.rs":"a9f48ed6ba6bf13b16a037f8aaf608c67c6b68dc8949702a07bfeea41471e38e","src/impl_macros.rs":"f3f0865c825dfb8396e0897b9f087c6220099fade36a67e113f5af9102e1347e","src/intersperse.rs":"12c486feaec66931b62007ffd551c72d711963a15019de882d7a4aff71f1c0ae","src/k_smallest.rs":"603eb34314c01769ff7f6def2a24cf7a7b38507e6f3658b7aafc23a3b2e9b322","src/kmerge_impl.rs":"ff34c08b641276df3fcb20874925e6fe0dbf82f6db36f1de17b07b5991b373d7","src/lazy_buffer.rs":"2426f171a839eef12501086ba8da270db46b51749e68562aecc7623d56995c3f","src/lib.rs":"83d043c8af42f7b4b66c6fc5012b8399acd44de44c8d522f7cc4ae806d4462ca","src/merge_join.rs":"8a12376800eb31b124123b0590b302d08aaca71c64bcef89c1aef5d29837038a","src/minmax.rs":"96d3897c28c8c63284d4729becc9ada6855e0953cac6e1bd35cf6f38c50b0ec0","src/multipeek_impl.rs":"8e1ebb6359bd43387c7b6f65e6612845e5673418a39c7bcbdb2c52b50a2d75f5","src/pad_tail.rs":"404e611a3e3e698f7d4eef97a21c3aacd677cadb1f92a48b43bd1f83f183ab10","src/peek_nth.rs":"6a0a51f2f373ce14d3d58595c46464878a14976bf00841a7396c03f9f9ab07ac","src/peeking_take_while.rs":"34985239af5a7bef38fecb1e00f5830f1921b04e6f6e5d25456e701cc3b59e35","src/permutations.rs":"b655e43e78e98a22c3f2be2420d8aa378fc6633ee7cf8b7c6a9630ac882d68a9","src/powerset.rs":"e0ee6b1316b4dd314c1e81502b90ae8113e1cda12168322520c5a65410e584b2","src/process_results_impl.rs":"9ed7fa46c8316238272ef47577387a386c1a109b50377dd3caf4291b6587cb73","src/put_back_n_impl.rs":"821e047fecd6ca0036290029f4febe7638a3abf1faa05e1e747a3bf9d80ff464","src/rciter_impl.rs":"ed4cc5da423e001ed142ed3925a32110189d6e9f5c77606c3fa52762f111f2f6","src/repeatn.rs":"bfc8f9145c9d8a3ea651f012b7d5a8d2fbbcbefdee76eafd098d02e7c54cda90","src/size_hint.rs":"d51d0db24a30c432cb13a2b62d9afb67c3e109e75ab32232f7777803391bcc11","src/sources.rs":"61637f32c2cea2290ecfc1980c0b2d0f68463839ac09bd81006f8258ab8ecaae","src/tee.rs":"665832aa547389a420c3441470ff2494249f0ed2841be0c6a578367fe9dbd381","src/tuple_impl.rs":"039433eddafb0c5f2e4d125035304f5e5f04dd7b537e497af291e40bdb63054e","src/unique_impl.rs":"b5c30a9ca2790e7818f53680aeacee5997c09426fb4a28d2497a8f8414b19e67","src/unziptuple.rs":"ded1fd651d16c6629a49aa68386627addb4ade1ee32bc95929a16bab4f2332d5","src/with_position.rs":"c8a9b3476b3b90986b004a8877c19ff54b4c6800c5ac7ca1458d914036dacfe9","src/zip_eq_impl.rs":"4a41dc6dfe99359585d50ce648bdc85f15276c602048872b1d152e90841d8cad","src/zip_longest.rs":"f7cf5fffc3ca053ee80b410a05b27de1a475021f6de3181aea981010d7e8453f","src/ziptuple.rs":"b3606e1231ac706836cfca67b5b19a88c111a82f2b8649bec72d08b3aa81d783","tests/adaptors_no_collect.rs":"dc69691bed895e6fd3922942ccc7d424a5247b0f79dea74cf8e2f8a8af0bd491","tests/flatten_ok.rs":"b7894874132918b8229c7150b2637511d8e3e14197d8eeb9382d46b2a514efa2","tests/macros_hygiene.rs":"522afa0106e3f11a5149e9218f89c2329e405546d2ef0ea756d6a27e8a0e9ca3","tests/merge_join.rs":"b08c4ee6529d234c68d411a413b8781455d18a1eab17872d1828bb75a4fcf79b","tests/peeking_take_while.rs":"4b1c394e44a9ef9bc0de707ae080b45803db722f79834c20f15b826d7c3f1f2e","tests/quick.rs":"c975132c0a27b07494af03fa978f748c15178f9c9a8d2c647af9b47202f6dac4","tests/specializations.rs":"7a6428a0dbf826bc6adf701803e97283ca6efda9a39595642fb1070c085d52c0","tests/test_core.rs":"cc31f6623ae2e4db1efca649da554c47a60cc13ead5a7a44cfd2265a34344553","tests/test_std.rs":"53bcf0b11e853df71ad44286bff687e7d6f2040bcf800d64ff4d13448dae02c9","tests/tuples.rs":"014e4da776174bfe923270e2a359cd9c95b372fce4b952b8138909d6e2c52762","tests/zip.rs":"4f840d5cdd9021511d8e639d87152bd08b5d12f6192e88072688b0b9100ac912"},"package":"a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"ed6c781d541c40d4a19eaecd794cadebb94b3f4d51e32367803542c88f0457ee","Cargo.toml":"6dcbab25126c0cdf64f5089156de0d4346914c6d47c557d370b8e20e039ca7d3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7576269ea71f767b99297934c0b2367532690f8c4badc695edf8e04ab6a1e545","README.md":"3acfeb07424200ae70bf571ef63a96bae954c298bddf447c9bea0ea9394825cc","benches/bench1.rs":"bb06f39db0544b1380cd4929139ccf521a9eecab7ca3f910b9499f965ec0a047","benches/combinations.rs":"51523ee1ca438a56f14711f0b04ee943895062d35859fbe23a2714d2fca3289d","benches/combinations_with_replacement.rs":"11f29160652a2d90ce7ca4b1c339c4457888ab6867e2456ce1c62e3adf9be737","benches/extra/mod.rs":"6ca290d72302a1945078621610b5788060b0de29639decebbdc557a80044aa97","benches/extra/zipslices.rs":"40e9f68a7c00f8429193fca463caef18851fa49b33355cc136bad3ccc840d655","benches/fold_specialization.rs":"5a517bbe29d366a15f6f751660e17ab1aa3e7b21552a1983048c662e34f0d69e","benches/powerset.rs":"6fd9d69a3483b37dc2411f99fb4efa6131577696f2dbdc8d1de9e4d7642fe3a3","benches/tree_fold1.rs":"539232e74f9aaea295a42069ac5af707811e90dc1c71c6e0a9064ffc731999de","benches/tuple_combinations.rs":"16366158743307a0289fc1df423a3cec45009807d410a9fe9922d5b6f8b7d002","benches/tuples.rs":"5a620783ae203e9ff9623d10d2c7fe9911d8b6c811cbad7613afa30e390c759d","clippy.toml":"33ffb83bbddb772575b3aa565b7136a8158ee386c216ffc2588fed9e83fa3826","examples/iris.data":"596ffd580471ca4d4880f8e439c7281f3b50d8249a5960353cb200b1490f63a0","examples/iris.rs":"1b465ed6a417180913104bc95a545fd9d1a3d67d121871ab737ad87e31b8be37","src/adaptors/coalesce.rs":"a0073325d40f297d29101538d18a267aef81889a999338dc09cb43a31cb4ec8b","src/adaptors/map.rs":"241971e856e468d71323071fb4a09867fbcedb83877320be132dc03516fe60e8","src/adaptors/mod.rs":"7f3bd7d011a348ce5e4bea486ef2e6346b64c7fe27540334d56d3f147f981d59","src/adaptors/multi_product.rs":"bb43e6dce68c815c21006d5b01c56e038d54b0c3bb8ee6bb8a4de11e2952c7ad","src/combinations.rs":"fb25babb459389093f886721016c72bf9f00e51d02735f638d871bb3a447ffd0","src/combinations_with_replacement.rs":"463011a574facbdd84278386b533a90e4dd517f0417e05adb82d182049db1f50","src/concat_impl.rs":"03b1ed61cbed242c286c3c4c5c848dbd57e02ab83fcef264f3a592b58107f324","src/cons_tuples_impl.rs":"c253d03b861831c01d62cacc57b49715ee62f6171e69f6886bb5a6ca0863bc3a","src/diff.rs":"a7800e9ce7a87b53ebe2338481335751fb43d44fa6a1ca719aceaaab40e5c8fe","src/duplicates_impl.rs":"f62fe4b642f501f785721ce5a505cf622a771e457210726dd0fb8b30be7ebbbc","src/either_or_both.rs":"76b13fbfac6bc959b4c1d8b7c99ce51726e95f994ca5429477e523a3d3950e4a","src/exactly_one_err.rs":"aa50081f6a31b5109b30e3ed305e3ec2413c6908dedc8990ec5378a99cee2b39","src/extrema_set.rs":"2a25b0b86eed2fd5d05622d591a3085cab823973d450816c2c3b8cb76e9c187e","src/flatten_ok.rs":"fe209fd886ecd9cb98d99625aa0c7274af7e644eff4a10de15b4dec8bbbc934a","src/format.rs":"a8192d85c0f9de8e633c202456e3cde0f3bc50f19b6bd8a4b2cfa3ef5123de1a","src/free.rs":"dfc57b7f56a08d4986a96b679018b41346576a7a34b668e008cc01109e728750","src/group_map.rs":"f7b02c964f63505d3e36280cfdc1755e05287714201efe983dacf702eee61434","src/groupbylazy.rs":"4f2181c022a45ff8444597708861fc6863eceb6f7555ea81cf3eeba19b492971","src/grouping_map.rs":"cbc45ac563345c96f3ac50c78f73c83d870523436a7ab88c1c9a685d204461d3","src/impl_macros.rs":"4f829b458873bed556f1aff2ae4e88dbd576766e2b5bcc07ff3ac8756758e6f4","src/intersperse.rs":"b9717242495846a4a979c95d93d5681caccb7c07a0d889eab763ad3d49a46125","src/k_smallest.rs":"603eb34314c01769ff7f6def2a24cf7a7b38507e6f3658b7aafc23a3b2e9b322","src/kmerge_impl.rs":"a347b0f6fa7715afd8a54d85ce139ed5b14c9e58a16c2b3648f5b288fdb5375f","src/lazy_buffer.rs":"834f6ef7fdf9f00c8a6329beb38eaefb706847ceeec309c221dce705c2c1e05b","src/lib.rs":"fadb0045279aafe8e8cccb45fadc383c7b358197b83c9c38fba87ada4cb2f84a","src/merge_join.rs":"1016113f6c983a9498bae5dc0570190437e1357b3333f6e19ea95c88599a1225","src/minmax.rs":"96d3897c28c8c63284d4729becc9ada6855e0953cac6e1bd35cf6f38c50b0ec0","src/multipeek_impl.rs":"35162bca4456bfa20a08e8d40e4d1cc6783dc662778789fdcded60371e975122","src/pad_tail.rs":"04be2ca73abb85815b06b5524c99d6feb2919180c486a4646f9cc6c87462f67b","src/peek_nth.rs":"6a0a51f2f373ce14d3d58595c46464878a14976bf00841a7396c03f9f9ab07ac","src/peeking_take_while.rs":"2b1b77c8882be32cfd76e973d303aa62f73370efd470c60764add0cdcca524d5","src/permutations.rs":"97831e7e26904c3cae68c97e74f7c6981ceb2fb2f2217282a0e5e54083a565fc","src/powerset.rs":"e0ee6b1316b4dd314c1e81502b90ae8113e1cda12168322520c5a65410e584b2","src/process_results_impl.rs":"9ed7fa46c8316238272ef47577387a386c1a109b50377dd3caf4291b6587cb73","src/put_back_n_impl.rs":"821e047fecd6ca0036290029f4febe7638a3abf1faa05e1e747a3bf9d80ff464","src/rciter_impl.rs":"5b156082ef2d25a94a4ad01d94cba2813c4b3e72e212515a8ad0fc8588f8045d","src/repeatn.rs":"bfc8f9145c9d8a3ea651f012b7d5a8d2fbbcbefdee76eafd098d02e7c54cda90","src/size_hint.rs":"021e57aad7df8f1e70ef588e9e9b8a1695aab183b1098f1848561f96c5dc9bcb","src/sources.rs":"61637f32c2cea2290ecfc1980c0b2d0f68463839ac09bd81006f8258ab8ecaae","src/tee.rs":"665832aa547389a420c3441470ff2494249f0ed2841be0c6a578367fe9dbd381","src/tuple_impl.rs":"00a9b61942425fb477b9691c3348646c0f9f534ff94f6321027f38c61ce2478c","src/unique_impl.rs":"3b89cdd668b74cc0a0eabb1522489e2305a0d2d8da25d6a1884e8626bbdb5959","src/unziptuple.rs":"84b50e5d29b9ddbf21a46a1cc2fd7877729c7f7da9bdc8ae1966dbaf2d2f6f60","src/with_position.rs":"c8a9b3476b3b90986b004a8877c19ff54b4c6800c5ac7ca1458d914036dacfe9","src/zip_eq_impl.rs":"4a41dc6dfe99359585d50ce648bdc85f15276c602048872b1d152e90841d8cad","src/zip_longest.rs":"f7cf5fffc3ca053ee80b410a05b27de1a475021f6de3181aea981010d7e8453f","src/ziptuple.rs":"7f9df12bf6556f382bbd4ad8cf17eb8b60c1c47fadbce016141133ba0f3384a1","tests/adaptors_no_collect.rs":"f459f36d54f5d475b2b2e83f5a1c98109c15062756ae822fa379486f3eeed666","tests/flatten_ok.rs":"b7894874132918b8229c7150b2637511d8e3e14197d8eeb9382d46b2a514efa2","tests/macros_hygiene.rs":"522afa0106e3f11a5149e9218f89c2329e405546d2ef0ea756d6a27e8a0e9ca3","tests/merge_join.rs":"b08c4ee6529d234c68d411a413b8781455d18a1eab17872d1828bb75a4fcf79b","tests/peeking_take_while.rs":"4b1c394e44a9ef9bc0de707ae080b45803db722f79834c20f15b826d7c3f1f2e","tests/quick.rs":"6fcc0649b9270f024b169b1f499dd4cc7fecb0c9aec0dfc155b264916cc626e7","tests/specializations.rs":"fdd16dc663330033fedcc478609b393d4aa369dc07dc8cda31a75219fb793087","tests/test_core.rs":"32576ba90aa8e5db985b6e6ffe30e3046bc6a11d392db8f6b4bdd2ba48d9b24d","tests/test_std.rs":"f28a78a1912c950e7c37be1e82867e70dc585d60afecdebc7a97965194eee8e6","tests/tuples.rs":"014e4da776174bfe923270e2a359cd9c95b372fce4b952b8138909d6e2c52762","tests/zip.rs":"99af365fe6054ef1c6089d3e604e34da8fea66e55861ae4be9e7336ec8de4b56"},"package":"b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"} \ No newline at end of file
diff --git a/vendor/itertools/CHANGELOG.md b/vendor/itertools/CHANGELOG.md
index 5e2032c4c..d2b40b5db 100644
--- a/vendor/itertools/CHANGELOG.md
+++ b/vendor/itertools/CHANGELOG.md
@@ -1,5 +1,12 @@
# Changelog
+## 0.10.4
+ - Add `EitherOrBoth::or` and `EitherOrBoth::or_else` (#593)
+ - Add `min_set`, `max_set` et al. (#613, #323)
+ - Use `either/use_std` (#628)
+ - Documentation fixes (#612, #625, #632, #633, #634, #638)
+ - Code maintenance (#623, #624, #627, #630)
+
## 0.10.2
- Add `Itertools::multiunzip` (#362, #565)
- Add `intersperse` and `intersperse_with` free functions (#555)
diff --git a/vendor/itertools/Cargo.lock b/vendor/itertools/Cargo.lock
deleted file mode 100644
index fecfb2070..000000000
--- a/vendor/itertools/Cargo.lock
+++ /dev/null
@@ -1,726 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-version = 3
-
-[[package]]
-name = "atty"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
-dependencies = [
- "hermit-abi",
- "libc",
- "winapi",
-]
-
-[[package]]
-name = "autocfg"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
-
-[[package]]
-name = "bitflags"
-version = "1.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
-
-[[package]]
-name = "bstr"
-version = "0.2.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279"
-dependencies = [
- "lazy_static",
- "memchr",
- "regex-automata",
- "serde",
-]
-
-[[package]]
-name = "bumpalo"
-version = "3.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631"
-
-[[package]]
-name = "cast"
-version = "0.2.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57cdfa5d50aad6cb4d44dcab6101a7f79925bd59d82ca42f38a9856a28865374"
-dependencies = [
- "rustc_version",
-]
-
-[[package]]
-name = "cfg-if"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
-
-[[package]]
-name = "clap"
-version = "2.33.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002"
-dependencies = [
- "bitflags",
- "textwrap",
- "unicode-width",
-]
-
-[[package]]
-name = "criterion"
-version = "0.3.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ab327ed7354547cc2ef43cbe20ef68b988e70b4b593cbd66a2a61733123a3d23"
-dependencies = [
- "atty",
- "cast",
- "clap",
- "criterion-plot",
- "csv",
- "itertools 0.10.0",
- "lazy_static",
- "num-traits",
- "oorandom",
- "plotters",
- "rayon",
- "regex",
- "serde",
- "serde_cbor",
- "serde_derive",
- "serde_json",
- "tinytemplate",
- "walkdir",
-]
-
-[[package]]
-name = "criterion-plot"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e022feadec601fba1649cfa83586381a4ad31c6bf3a9ab7d408118b05dd9889d"
-dependencies = [
- "cast",
- "itertools 0.9.0",
-]
-
-[[package]]
-name = "crossbeam-channel"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9"
-dependencies = [
- "cfg-if",
- "crossbeam-epoch",
- "crossbeam-utils",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.9.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4ec02e091aa634e2c3ada4a392989e7c3116673ef0ac5b72232439094d73b7fd"
-dependencies = [
- "cfg-if",
- "crossbeam-utils",
- "lazy_static",
- "memoffset",
- "scopeguard",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.8.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d82cfc11ce7f2c3faef78d8a684447b40d503d9681acebed6cb728d45940c4db"
-dependencies = [
- "cfg-if",
- "lazy_static",
-]
-
-[[package]]
-name = "csv"
-version = "1.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1"
-dependencies = [
- "bstr",
- "csv-core",
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "csv-core"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90"
-dependencies = [
- "memchr",
-]
-
-[[package]]
-name = "either"
-version = "1.6.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
-
-[[package]]
-name = "getrandom"
-version = "0.1.16"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce"
-dependencies = [
- "cfg-if",
- "libc",
- "wasi",
-]
-
-[[package]]
-name = "half"
-version = "1.7.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62aca2aba2d62b4a7f5b33f3712cb1b0692779a56fb510499d5c0aa594daeaf3"
-
-[[package]]
-name = "hermit-abi"
-version = "0.1.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c"
-dependencies = [
- "libc",
-]
-
-[[package]]
-name = "itertools"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itertools"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37d572918e350e82412fe766d24b15e6682fb2ed2bbe018280caa810397cb319"
-dependencies = [
- "either",
-]
-
-[[package]]
-name = "itertools"
-version = "0.10.3"
-dependencies = [
- "criterion",
- "either",
- "paste",
- "permutohedron",
- "quickcheck",
- "rand",
-]
-
-[[package]]
-name = "itoa"
-version = "0.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736"
-
-[[package]]
-name = "js-sys"
-version = "0.3.51"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83bdfbace3a0e81a4253f73b49e960b053e396a11012cbd49b9b74d6a2b67062"
-dependencies = [
- "wasm-bindgen",
-]
-
-[[package]]
-name = "lazy_static"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
-
-[[package]]
-name = "libc"
-version = "0.2.96"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5600b4e6efc5421841a2138a6b082e07fe12f9aaa12783d50e5d13325b26b4fc"
-
-[[package]]
-name = "log"
-version = "0.4.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
-dependencies = [
- "cfg-if",
-]
-
-[[package]]
-name = "memchr"
-version = "2.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
-
-[[package]]
-name = "memoffset"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59accc507f1338036a0477ef61afdae33cde60840f4dfe481319ce3ad116ddf9"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "num-traits"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290"
-dependencies = [
- "autocfg",
-]
-
-[[package]]
-name = "num_cpus"
-version = "1.13.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
-dependencies = [
- "hermit-abi",
- "libc",
-]
-
-[[package]]
-name = "oorandom"
-version = "11.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
-
-[[package]]
-name = "paste"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "acbf547ad0c65e31259204bd90935776d1c693cec2f4ff7abb7a1bbbd40dfe58"
-
-[[package]]
-name = "permutohedron"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b687ff7b5da449d39e418ad391e5e08da53ec334903ddbb921db208908fc372c"
-
-[[package]]
-name = "pest"
-version = "2.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"
-dependencies = [
- "ucd-trie",
-]
-
-[[package]]
-name = "plotters"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "32a3fd9ec30b9749ce28cd91f255d569591cdf937fe280c312143e3c4bad6f2a"
-dependencies = [
- "num-traits",
- "plotters-backend",
- "plotters-svg",
- "wasm-bindgen",
- "web-sys",
-]
-
-[[package]]
-name = "plotters-backend"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b07fffcddc1cb3a1de753caa4e4df03b79922ba43cf882acc1bdd7e8df9f4590"
-
-[[package]]
-name = "plotters-svg"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b38a02e23bd9604b842a812063aec4ef702b57989c37b655254bb61c471ad211"
-dependencies = [
- "plotters-backend",
-]
-
-[[package]]
-name = "ppv-lite86"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
-
-[[package]]
-name = "proc-macro2"
-version = "1.0.27"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0d8caf72986c1a598726adc988bb5984792ef84f5ee5aa50209145ee8077038"
-dependencies = [
- "unicode-xid",
-]
-
-[[package]]
-name = "quickcheck"
-version = "0.9.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a44883e74aa97ad63db83c4bf8ca490f02b2fc02f92575e720c8551e843c945f"
-dependencies = [
- "rand",
- "rand_core",
-]
-
-[[package]]
-name = "quote"
-version = "1.0.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
-dependencies = [
- "proc-macro2",
-]
-
-[[package]]
-name = "rand"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03"
-dependencies = [
- "getrandom",
- "libc",
- "rand_chacha",
- "rand_core",
- "rand_hc",
-]
-
-[[package]]
-name = "rand_chacha"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
-dependencies = [
- "ppv-lite86",
- "rand_core",
-]
-
-[[package]]
-name = "rand_core"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19"
-dependencies = [
- "getrandom",
-]
-
-[[package]]
-name = "rand_hc"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c"
-dependencies = [
- "rand_core",
-]
-
-[[package]]
-name = "rayon"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90"
-dependencies = [
- "autocfg",
- "crossbeam-deque",
- "either",
- "rayon-core",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.9.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e"
-dependencies = [
- "crossbeam-channel",
- "crossbeam-deque",
- "crossbeam-utils",
- "lazy_static",
- "num_cpus",
-]
-
-[[package]]
-name = "regex"
-version = "1.5.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
-dependencies = [
- "regex-syntax",
-]
-
-[[package]]
-name = "regex-automata"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
-
-[[package]]
-name = "regex-syntax"
-version = "0.6.25"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
-
-[[package]]
-name = "rustc_version"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee"
-dependencies = [
- "semver",
-]
-
-[[package]]
-name = "ryu"
-version = "1.0.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e"
-
-[[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 = "scopeguard"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
-
-[[package]]
-name = "semver"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6"
-dependencies = [
- "semver-parser",
-]
-
-[[package]]
-name = "semver-parser"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7"
-dependencies = [
- "pest",
-]
-
-[[package]]
-name = "serde"
-version = "1.0.126"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03"
-
-[[package]]
-name = "serde_cbor"
-version = "0.11.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e18acfa2f90e8b735b2836ab8d538de304cbb6729a7360729ea5a895d15a622"
-dependencies = [
- "half",
- "serde",
-]
-
-[[package]]
-name = "serde_derive"
-version = "1.0.126"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
-
-[[package]]
-name = "serde_json"
-version = "1.0.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79"
-dependencies = [
- "itoa",
- "ryu",
- "serde",
-]
-
-[[package]]
-name = "syn"
-version = "1.0.72"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82"
-dependencies = [
- "proc-macro2",
- "quote",
- "unicode-xid",
-]
-
-[[package]]
-name = "textwrap"
-version = "0.11.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
-dependencies = [
- "unicode-width",
-]
-
-[[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 = "ucd-trie"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
-
-[[package]]
-name = "unicode-width"
-version = "0.1.8"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3"
-
-[[package]]
-name = "unicode-xid"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
-
-[[package]]
-name = "walkdir"
-version = "2.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
-dependencies = [
- "same-file",
- "winapi",
- "winapi-util",
-]
-
-[[package]]
-name = "wasi"
-version = "0.9.0+wasi-snapshot-preview1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
-
-[[package]]
-name = "wasm-bindgen"
-version = "0.2.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d54ee1d4ed486f78874278e63e4069fc1ab9f6a18ca492076ffb90c5eb2997fd"
-dependencies = [
- "cfg-if",
- "wasm-bindgen-macro",
-]
-
-[[package]]
-name = "wasm-bindgen-backend"
-version = "0.2.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b33f6a0694ccfea53d94db8b2ed1c3a8a4c86dd936b13b9f0a15ec4a451b900"
-dependencies = [
- "bumpalo",
- "lazy_static",
- "log",
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-macro"
-version = "0.2.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "088169ca61430fe1e58b8096c24975251700e7b1f6fd91cc9d59b04fb9b18bd4"
-dependencies = [
- "quote",
- "wasm-bindgen-macro-support",
-]
-
-[[package]]
-name = "wasm-bindgen-macro-support"
-version = "0.2.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be2241542ff3d9f241f5e2cb6dd09b37efe786df8851c54957683a49f0987a97"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
- "wasm-bindgen-backend",
- "wasm-bindgen-shared",
-]
-
-[[package]]
-name = "wasm-bindgen-shared"
-version = "0.2.74"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7cff876b8f18eed75a66cf49b65e7f967cb354a7aa16003fb55dbfd25b44b4f"
-
-[[package]]
-name = "web-sys"
-version = "0.3.51"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e828417b379f3df7111d3a2a9e5753706cae29c41f7c4029ee9fd77f3e09e582"
-dependencies = [
- "js-sys",
- "wasm-bindgen",
-]
-
-[[package]]
-name = "winapi"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
-dependencies = [
- "winapi-i686-pc-windows-gnu",
- "winapi-x86_64-pc-windows-gnu",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-
-[[package]]
-name = "winapi-util"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
-dependencies = [
- "winapi",
-]
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/vendor/itertools/Cargo.toml b/vendor/itertools/Cargo.toml
index 525cae5f3..40be7e48f 100644
--- a/vendor/itertools/Cargo.toml
+++ b/vendor/itertools/Cargo.toml
@@ -13,7 +13,7 @@
[package]
edition = "2018"
name = "itertools"
-version = "0.10.3"
+version = "0.10.5"
authors = ["bluss"]
exclude = ["/bors.toml"]
description = "Extra iterator adaptors, iterator methods, free functions, and macros."
@@ -85,4 +85,4 @@ version = "0.7"
[features]
default = ["use_std"]
use_alloc = []
-use_std = ["use_alloc"]
+use_std = ["use_alloc", "either/use_std"]
diff --git a/vendor/itertools/README.md b/vendor/itertools/README.md
index 4cc3f8fd3..a911127f4 100644
--- a/vendor/itertools/README.md
+++ b/vendor/itertools/README.md
@@ -11,7 +11,7 @@ How to use with Cargo:
```toml
[dependencies]
-itertools = "0.10.2"
+itertools = "0.10.5"
```
How to use in your crate:
diff --git a/vendor/itertools/benches/extra/zipslices.rs b/vendor/itertools/benches/extra/zipslices.rs
index 8bf3967f5..633be5906 100644
--- a/vendor/itertools/benches/extra/zipslices.rs
+++ b/vendor/itertools/benches/extra/zipslices.rs
@@ -3,7 +3,7 @@ use std::cmp;
// Note: There are different ways to implement ZipSlices.
// This version performed the best in benchmarks.
//
-// I also implemented a version with three pointes (tptr, tend, uptr),
+// I also implemented a version with three pointers (tptr, tend, uptr),
// that mimiced slice::Iter and only checked bounds by using tptr == tend,
// but that was inferior to this solution.
diff --git a/vendor/itertools/clippy.toml b/vendor/itertools/clippy.toml
new file mode 100644
index 000000000..0a5485386
--- /dev/null
+++ b/vendor/itertools/clippy.toml
@@ -0,0 +1 @@
+msrv = "1.36.0"
diff --git a/vendor/itertools/src/adaptors/coalesce.rs b/vendor/itertools/src/adaptors/coalesce.rs
index b1aff6e27..3df7cc582 100644
--- a/vendor/itertools/src/adaptors/coalesce.rs
+++ b/vendor/itertools/src/adaptors/coalesce.rs
@@ -3,6 +3,7 @@ use std::iter::FusedIterator;
use crate::size_hint;
+#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
pub struct CoalesceBy<I, F, T>
where
I: Iterator,
@@ -86,7 +87,6 @@ impl<I: Iterator, F: CoalescePredicate<I::Item, T>, T> FusedIterator for Coalesc
/// An iterator adaptor that may join together adjacent elements.
///
/// See [`.coalesce()`](crate::Itertools::coalesce) for more information.
-#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
pub type Coalesce<I, F> = CoalesceBy<I, F, <I as Iterator>::Item>;
impl<F, Item, T> CoalescePredicate<Item, T> for F
@@ -113,7 +113,6 @@ where
/// An iterator adaptor that removes repeated duplicates, determining equality using a comparison function.
///
/// See [`.dedup_by()`](crate::Itertools::dedup_by) or [`.dedup()`](crate::Itertools::dedup) for more information.
-#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
pub type DedupBy<I, Pred> = CoalesceBy<I, DedupPred2CoalescePred<Pred>, <I as Iterator>::Item>;
#[derive(Clone)]
@@ -186,7 +185,6 @@ where
///
/// See [`.dedup_by_with_count()`](crate::Itertools::dedup_by_with_count) or
/// [`.dedup_with_count()`](crate::Itertools::dedup_with_count) for more information.
-#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
pub type DedupByWithCount<I, Pred> =
CoalesceBy<I, DedupPredWithCount2CoalescePred<Pred>, (usize, <I as Iterator>::Item)>;
diff --git a/vendor/itertools/src/adaptors/mod.rs b/vendor/itertools/src/adaptors/mod.rs
index 2010f535b..1695bbd65 100644
--- a/vendor/itertools/src/adaptors/mod.rs
+++ b/vendor/itertools/src/adaptors/mod.rs
@@ -35,9 +35,7 @@ pub struct Interleave<I, J> {
/// Create an iterator that interleaves elements in `i` and `j`.
///
-/// [`IntoIterator`] enabled version of `i.interleave(j)`.
-///
-/// See [`.interleave()`](crate::Itertools::interleave) for more information.
+/// [`IntoIterator`] enabled version of `[Itertools::interleave]`.
pub fn interleave<I, J>(i: I, j: J) -> Interleave<<I as IntoIterator>::IntoIter, <J as IntoIterator>::IntoIter>
where I: IntoIterator,
J: IntoIterator<Item = I::Item>
@@ -210,7 +208,7 @@ impl<I> PutBack<I>
/// If a value is already in the put back slot, it is overwritten.
#[inline]
pub fn put_back(&mut self, x: I::Item) {
- self.top = Some(x)
+ self.top = Some(x);
}
}
@@ -329,12 +327,7 @@ impl<I, J> Iterator for Product<I, J>
}
Some(x) => x
};
- match self.a_cur {
- None => None,
- Some(ref a) => {
- Some((a.clone(), elt_b))
- }
- }
+ self.a_cur.as_ref().map(|a| (a.clone(), elt_b))
}
fn size_hint(&self) -> (usize, Option<usize>) {
@@ -492,7 +485,6 @@ impl<T: PartialOrd> MergePredicate<T> for MergeLte {
/// Iterator element type is `I::Item`.
///
/// See [`.merge()`](crate::Itertools::merge_by) for more information.
-#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
pub type Merge<I, J> = MergeBy<I, J, MergeLte>;
/// Create an iterator that merges elements in `i` and `j`.
diff --git a/vendor/itertools/src/adaptors/multi_product.rs b/vendor/itertools/src/adaptors/multi_product.rs
index 30650eda6..0b3840698 100644
--- a/vendor/itertools/src/adaptors/multi_product.rs
+++ b/vendor/itertools/src/adaptors/multi_product.rs
@@ -40,7 +40,7 @@ pub fn multi_cartesian_product<H>(iters: H) -> MultiProduct<<H::Item as IntoIter
}
#[derive(Clone, Debug)]
-/// Holds the state of a single iterator within a MultiProduct.
+/// Holds the state of a single iterator within a `MultiProduct`.
struct MultiProductIter<I>
where I: Iterator + Clone,
I::Item: Clone
@@ -50,7 +50,7 @@ struct MultiProductIter<I>
iter_orig: I,
}
-/// Holds the current state during an iteration of a MultiProduct.
+/// Holds the current state during an iteration of a `MultiProduct`.
#[derive(Debug)]
enum MultiProductIterState {
StartOfIter,
diff --git a/vendor/itertools/src/combinations_with_replacement.rs b/vendor/itertools/src/combinations_with_replacement.rs
index 81b13f130..0fec9671a 100644
--- a/vendor/itertools/src/combinations_with_replacement.rs
+++ b/vendor/itertools/src/combinations_with_replacement.rs
@@ -64,7 +64,7 @@ where
// If this is the first iteration, return early
if self.first {
// In empty edge cases, stop iterating immediately
- return if self.indices.len() != 0 && !self.pool.get_next() {
+ return if !(self.indices.is_empty() || self.pool.get_next()) {
None
// Otherwise, yield the initial state
} else {
@@ -92,7 +92,7 @@ where
// We need to update the rightmost non-max value
// and all those to the right
for indices_index in increment_from..self.indices.len() {
- self.indices[indices_index] = increment_value
+ self.indices[indices_index] = increment_value;
}
Some(self.current())
}
diff --git a/vendor/itertools/src/concat_impl.rs b/vendor/itertools/src/concat_impl.rs
index 450f7fce1..f022ec90a 100644
--- a/vendor/itertools/src/concat_impl.rs
+++ b/vendor/itertools/src/concat_impl.rs
@@ -18,5 +18,6 @@ pub fn concat<I>(iterable: I) -> I::Item
where I: IntoIterator,
I::Item: Extend<<<I as IntoIterator>::Item as IntoIterator>::Item> + IntoIterator + Default
{
- iterable.into_iter().fold1(|mut a, b| { a.extend(b); a }).unwrap_or_else(<_>::default)
+ #[allow(deprecated)] //TODO: once msrv hits 1.51. replace `fold1` with `reduce`
+ iterable.into_iter().fold1(|mut a, b| { a.extend(b); a }).unwrap_or_default()
}
diff --git a/vendor/itertools/src/duplicates_impl.rs b/vendor/itertools/src/duplicates_impl.rs
index 640d4818c..28eda44a9 100644
--- a/vendor/itertools/src/duplicates_impl.rs
+++ b/vendor/itertools/src/duplicates_impl.rs
@@ -188,7 +188,6 @@ mod private {
/// An iterator adapter to filter for duplicate elements.
///
/// See [`.duplicates_by()`](crate::Itertools::duplicates_by) for more information.
-#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
pub type DuplicatesBy<I, V, F> = private::DuplicatesBy<I, V, private::ByFn<F>>;
/// Create a new `DuplicatesBy` iterator.
diff --git a/vendor/itertools/src/either_or_both.rs b/vendor/itertools/src/either_or_both.rs
index 28d1df757..ef3985f75 100644
--- a/vendor/itertools/src/either_or_both.rs
+++ b/vendor/itertools/src/either_or_both.rs
@@ -165,6 +165,33 @@ impl<A, B> EitherOrBoth<A, B> {
}
/// Returns a tuple consisting of the `l` and `r` in `Both(l, r)`, if present.
+ /// Otherwise, returns the wrapped value for the present element, and the supplied
+ /// value for the other. The first (`l`) argument is used for a missing `Left`
+ /// value. The second (`r`) argument is used for a missing `Right` value.
+ ///
+ /// Arguments passed to `or` are eagerly evaluated; if you are passing
+ /// the result of a function call, it is recommended to use [`or_else`],
+ /// which is lazily evaluated.
+ ///
+ /// [`or_else`]: EitherOrBoth::or_else
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use itertools::EitherOrBoth;
+ /// assert_eq!(EitherOrBoth::Both("tree", 1).or("stone", 5), ("tree", 1));
+ /// assert_eq!(EitherOrBoth::Left("tree").or("stone", 5), ("tree", 5));
+ /// assert_eq!(EitherOrBoth::Right(1).or("stone", 5), ("stone", 1));
+ /// ```
+ pub fn or(self, l: A, r: B) -> (A, B) {
+ match self {
+ Left(inner_l) => (inner_l, r),
+ Right(inner_r) => (l, inner_r),
+ Both(inner_l, inner_r) => (inner_l, inner_r),
+ }
+ }
+
+ /// Returns a tuple consisting of the `l` and `r` in `Both(l, r)`, if present.
/// Otherwise, returns the wrapped value for the present element, and the [`default`](Default::default)
/// for the other.
pub fn or_default(self) -> (A, B)
@@ -178,6 +205,28 @@ impl<A, B> EitherOrBoth<A, B> {
EitherOrBoth::Both(l, r) => (l, r),
}
}
+
+ /// Returns a tuple consisting of the `l` and `r` in `Both(l, r)`, if present.
+ /// Otherwise, returns the wrapped value for the present element, and computes the
+ /// missing value with the supplied closure. The first argument (`l`) is used for a
+ /// missing `Left` value. The second argument (`r`) is used for a missing `Right` value.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use itertools::EitherOrBoth;
+ /// let k = 10;
+ /// assert_eq!(EitherOrBoth::Both("tree", 1).or_else(|| "stone", || 2 * k), ("tree", 1));
+ /// assert_eq!(EitherOrBoth::Left("tree").or_else(|| "stone", || 2 * k), ("tree", 20));
+ /// assert_eq!(EitherOrBoth::Right(1).or_else(|| "stone", || 2 * k), ("stone", 1));
+ /// ```
+ pub fn or_else<L: FnOnce() -> A, R: FnOnce() -> B>(self, l: L, r: R) -> (A, B) {
+ match self {
+ Left(inner_l) => (inner_l, r()),
+ Right(inner_r) => (l(), inner_r),
+ Both(inner_l, inner_r) => (inner_l, inner_r),
+ }
+ }
}
impl<T> EitherOrBoth<T, T> {
diff --git a/vendor/itertools/src/exactly_one_err.rs b/vendor/itertools/src/exactly_one_err.rs
index 63485c993..c54ae77ca 100644
--- a/vendor/itertools/src/exactly_one_err.rs
+++ b/vendor/itertools/src/exactly_one_err.rs
@@ -11,10 +11,10 @@ use crate::size_hint;
/// Iterator returned for the error case of `IterTools::exactly_one()`
/// This iterator yields exactly the same elements as the input iterator.
///
-/// During the execution of exactly_one the iterator must be mutated. This wrapper
+/// During the execution of `exactly_one` the iterator must be mutated. This wrapper
/// effectively "restores" the state of the input iterator when it's handed back.
///
-/// This is very similar to PutBackN except this iterator only supports 0-2 elements and does not
+/// This is very similar to `PutBackN` except this iterator only supports 0-2 elements and does not
/// use a `Vec`.
#[derive(Clone)]
pub struct ExactlyOneError<I>
diff --git a/vendor/itertools/src/extrema_set.rs b/vendor/itertools/src/extrema_set.rs
new file mode 100644
index 000000000..ae128364c
--- /dev/null
+++ b/vendor/itertools/src/extrema_set.rs
@@ -0,0 +1,48 @@
+use std::cmp::Ordering;
+
+/// Implementation guts for `min_set`, `min_set_by`, and `min_set_by_key`.
+pub fn min_set_impl<I, K, F, Compare>(
+ mut it: I,
+ mut key_for: F,
+ mut compare: Compare,
+) -> Vec<I::Item>
+where
+ I: Iterator,
+ F: FnMut(&I::Item) -> K,
+ Compare: FnMut(&I::Item, &I::Item, &K, &K) -> Ordering,
+{
+ match it.next() {
+ None => Vec::new(),
+ Some(element) => {
+ let mut current_key = key_for(&element);
+ let mut result = vec![element];
+ it.for_each(|element| {
+ let key = key_for(&element);
+ match compare(&element, &result[0], &key, &current_key) {
+ Ordering::Less => {
+ result.clear();
+ result.push(element);
+ current_key = key;
+ }
+ Ordering::Equal => {
+ result.push(element);
+ }
+ Ordering::Greater => {}
+ }
+ });
+ result
+ }
+ }
+}
+
+/// Implementation guts for `ax_set`, `max_set_by`, and `max_set_by_key`.
+pub fn max_set_impl<I, K, F, Compare>(it: I, key_for: F, mut compare: Compare) -> Vec<I::Item>
+where
+ I: Iterator,
+ F: FnMut(&I::Item) -> K,
+ Compare: FnMut(&I::Item, &I::Item, &K, &K) -> Ordering,
+{
+ min_set_impl(it, key_for, |it1, it2, key1, key2| {
+ compare(it2, it1, key2, key1)
+ })
+}
diff --git a/vendor/itertools/src/flatten_ok.rs b/vendor/itertools/src/flatten_ok.rs
index d46bbde4e..21ae1f722 100644
--- a/vendor/itertools/src/flatten_ok.rs
+++ b/vendor/itertools/src/flatten_ok.rs
@@ -44,11 +44,11 @@ where
if let Some(inner) = &mut self.inner_front {
if let Some(item) = inner.next() {
return Some(Ok(item));
- } else {
- // This is necessary for the iterator to implement `FusedIterator`
- // with only the orginal iterator being fused.
- self.inner_front = None;
}
+
+ // This is necessary for the iterator to implement `FusedIterator`
+ // with only the original iterator being fused.
+ self.inner_front = None;
}
match self.iter.next() {
@@ -59,11 +59,11 @@ where
if let Some(inner) = &mut self.inner_back {
if let Some(item) = inner.next() {
return Some(Ok(item));
- } else {
- // This is necessary for the iterator to implement `FusedIterator`
- // with only the orginal iterator being fused.
- self.inner_back = None;
}
+
+ // This is necessary for the iterator to implement `FusedIterator`
+ // with only the original iterator being fused.
+ self.inner_back = None;
} else {
return None;
}
@@ -103,11 +103,11 @@ where
if let Some(inner) = &mut self.inner_back {
if let Some(item) = inner.next_back() {
return Some(Ok(item));
- } else {
- // This is necessary for the iterator to implement `FusedIterator`
- // with only the orginal iterator being fused.
- self.inner_back = None;
}
+
+ // This is necessary for the iterator to implement `FusedIterator`
+ // with only the original iterator being fused.
+ self.inner_back = None;
}
match self.iter.next_back() {
@@ -118,11 +118,11 @@ where
if let Some(inner) = &mut self.inner_front {
if let Some(item) = inner.next_back() {
return Some(Ok(item));
- } else {
- // This is necessary for the iterator to implement `FusedIterator`
- // with only the orginal iterator being fused.
- self.inner_front = None;
}
+
+ // This is necessary for the iterator to implement `FusedIterator`
+ // with only the original iterator being fused.
+ self.inner_front = None;
} else {
return None;
}
@@ -138,7 +138,6 @@ where
T: IntoIterator,
T::IntoIter: Clone,
{
- #[inline]
clone_fields!(iter, inner_front, inner_back);
}
diff --git a/vendor/itertools/src/free.rs b/vendor/itertools/src/free.rs
index 667403040..19e3e2869 100644
--- a/vendor/itertools/src/free.rs
+++ b/vendor/itertools/src/free.rs
@@ -105,18 +105,23 @@ pub fn rev<I>(iterable: I) -> iter::Rev<I::IntoIter>
iterable.into_iter().rev()
}
-/// Iterate `i` and `j` in lock step.
+/// Converts the arguments to iterators and zips them.
///
/// [`IntoIterator`] enabled version of [`Iterator::zip`].
+///
+/// ## Example
///
/// ```
/// use itertools::zip;
///
-/// let data = [1, 2, 3, 4, 5];
-/// for (a, b) in zip(&data, &data[1..]) {
-/// /* loop body */
+/// let mut result: Vec<(i32, char)> = Vec::new();
+///
+/// for (a, b) in zip(&[1, 2, 3, 4, 5], &['a', 'b', 'c']) {
+/// result.push((*a, *b));
/// }
+/// assert_eq!(result, vec![(1, 'a'),(2, 'b'),(3, 'c')]);
/// ```
+#[deprecated(note="Use [std::iter::zip](https://doc.rust-lang.org/std/iter/fn.zip.html) instead", since="0.10.4")]
pub fn zip<I, J>(i: I, j: J) -> Zip<I::IntoIter, J::IntoIter>
where I: IntoIterator,
J: IntoIterator
@@ -124,16 +129,21 @@ pub fn zip<I, J>(i: I, j: J) -> Zip<I::IntoIter, J::IntoIter>
i.into_iter().zip(j)
}
-/// Create an iterator that first iterates `i` and then `j`.
+
+/// Takes two iterables and creates a new iterator over both in sequence.
///
/// [`IntoIterator`] enabled version of [`Iterator::chain`].
///
+/// ## Example
/// ```
/// use itertools::chain;
+///
+/// let mut result:Vec<i32> = Vec::new();
///
-/// for elt in chain(&[1, 2, 3], &[4]) {
-/// /* loop body */
+/// for element in chain(&[1, 2, 3], &[4]) {
+/// result.push(*element);
/// }
+/// assert_eq!(result, vec![1, 2, 3, 4]);
/// ```
pub fn chain<I, J>(i: I, j: J) -> iter::Chain<<I as IntoIterator>::IntoIter, <J as IntoIterator>::IntoIter>
where I: IntoIterator,
@@ -239,7 +249,7 @@ pub fn min<I>(iterable: I) -> Option<I::Item>
}
-/// Combine all iterator elements into one String, seperated by `sep`.
+/// Combine all iterator elements into one String, separated by `sep`.
///
/// [`IntoIterator`] enabled version of [`Itertools::join`].
///
diff --git a/vendor/itertools/src/groupbylazy.rs b/vendor/itertools/src/groupbylazy.rs
index 91c52ea59..a5a321df4 100644
--- a/vendor/itertools/src/groupbylazy.rs
+++ b/vendor/itertools/src/groupbylazy.rs
@@ -1,13 +1,13 @@
use std::cell::{Cell, RefCell};
use alloc::vec::{self, Vec};
-/// A trait to unify FnMut for GroupBy with the chunk key in IntoChunks
+/// A trait to unify `FnMut` for `GroupBy` with the chunk key in `IntoChunks`
trait KeyFunction<A> {
type Key;
fn call_mut(&mut self, arg: A) -> Self::Key;
}
-impl<'a, A, K, F: ?Sized> KeyFunction<A> for F
+impl<A, K, F: ?Sized> KeyFunction<A> for F
where F: FnMut(A) -> K
{
type Key = K;
@@ -18,7 +18,7 @@ impl<'a, A, K, F: ?Sized> KeyFunction<A> for F
}
-/// ChunkIndex acts like the grouping key function for IntoChunks
+/// `ChunkIndex` acts like the grouping key function for `IntoChunks`
#[derive(Debug)]
struct ChunkIndex {
size: usize,
@@ -37,7 +37,7 @@ impl ChunkIndex {
}
}
-impl<'a, A> KeyFunction<A> for ChunkIndex {
+impl<A> KeyFunction<A> for ChunkIndex {
type Key = usize;
#[inline(always)]
fn call_mut(&mut self, _arg: A) -> Self::Key {
@@ -330,7 +330,7 @@ impl<K, I, F> GroupBy<K, I, F>
/// `client`: Index of group
fn drop_group(&self, client: usize) {
- self.inner.borrow_mut().drop_group(client)
+ self.inner.borrow_mut().drop_group(client);
}
}
@@ -482,7 +482,7 @@ impl<I> IntoChunks<I>
/// `client`: Index of chunk
fn drop_group(&self, client: usize) {
- self.inner.borrow_mut().drop_group(client)
+ self.inner.borrow_mut().drop_group(client);
}
}
diff --git a/vendor/itertools/src/grouping_map.rs b/vendor/itertools/src/grouping_map.rs
index be22ec849..bb5b582c9 100644
--- a/vendor/itertools/src/grouping_map.rs
+++ b/vendor/itertools/src/grouping_map.rs
@@ -39,7 +39,6 @@ pub fn new<I, K, V>(iter: I) -> GroupingMap<I>
/// `GroupingMapBy` is an intermediate struct for efficient group-and-fold operations.
///
/// See [`GroupingMap`] for more informations.
-#[must_use = "GroupingMapBy is lazy and do nothing unless consumed"]
pub type GroupingMapBy<I, F> = GroupingMap<MapForGrouping<I, F>>;
/// `GroupingMap` is an intermediate struct for efficient group-and-fold operations.
@@ -290,7 +289,7 @@ impl<I, K, V> GroupingMap<I>
where F: FnMut(&K, &V) -> CK,
CK: Ord,
{
- self.max_by(|key, v1, v2| f(key, &v1).cmp(&f(key, &v2)))
+ self.max_by(|key, v1, v2| f(key, v1).cmp(&f(key, v2)))
}
/// Groups elements from the `GroupingMap` source by key and finds the minimum of each group.
@@ -368,7 +367,7 @@ impl<I, K, V> GroupingMap<I>
where F: FnMut(&K, &V) -> CK,
CK: Ord,
{
- self.min_by(|key, v1, v2| f(key, &v1).cmp(&f(key, &v2)))
+ self.min_by(|key, v1, v2| f(key, v1).cmp(&f(key, v2)))
}
/// Groups elements from the `GroupingMap` source by key and find the maximum and minimum of
@@ -481,7 +480,7 @@ impl<I, K, V> GroupingMap<I>
where F: FnMut(&K, &V) -> CK,
CK: Ord,
{
- self.minmax_by(|key, v1, v2| f(key, &v1).cmp(&f(key, &v2)))
+ self.minmax_by(|key, v1, v2| f(key, v1).cmp(&f(key, v2)))
}
/// Groups elements from the `GroupingMap` source by key and sums them.
diff --git a/vendor/itertools/src/impl_macros.rs b/vendor/itertools/src/impl_macros.rs
index 5772baeb6..a029843b0 100644
--- a/vendor/itertools/src/impl_macros.rs
+++ b/vendor/itertools/src/impl_macros.rs
@@ -15,6 +15,7 @@ macro_rules! debug_fmt_fields {
macro_rules! clone_fields {
($($field:ident),*) => {
+ #[inline] // TODO is this sensible?
fn clone(&self) -> Self {
Self {
$($field: self.$field.clone(),)*
diff --git a/vendor/itertools/src/intersperse.rs b/vendor/itertools/src/intersperse.rs
index 2c660d492..10a3a5389 100644
--- a/vendor/itertools/src/intersperse.rs
+++ b/vendor/itertools/src/intersperse.rs
@@ -55,7 +55,7 @@ pub struct IntersperseWith<I, ElemF>
peek: Option<I::Item>,
}
-/// Create a new IntersperseWith iterator
+/// Create a new `IntersperseWith` iterator
pub fn intersperse_with<I, ElemF>(iter: I, elt: ElemF) -> IntersperseWith<I, ElemF>
where I: Iterator,
{
@@ -107,8 +107,7 @@ impl<I, ElemF> Iterator for IntersperseWith<I, ElemF>
self.iter.fold(accum,
|accum, x| {
let accum = f(accum, element.generate());
- let accum = f(accum, x);
- accum
+ f(accum, x)
})
}
}
diff --git a/vendor/itertools/src/kmerge_impl.rs b/vendor/itertools/src/kmerge_impl.rs
index bd56b0317..509d5fc6a 100644
--- a/vendor/itertools/src/kmerge_impl.rs
+++ b/vendor/itertools/src/kmerge_impl.rs
@@ -80,7 +80,7 @@ fn sift_down<T, S>(heap: &mut [T], index: usize, mut less_than: S)
// that wouldn't be predicted if present
while child + 1 < heap.len() {
// pick the smaller of the two children
- // use aritmethic to avoid an unpredictable branch
+ // use arithmetic to avoid an unpredictable branch
child += less_than(&heap[child+1], &heap[child]) as usize;
// sift down is done if we are already in order
@@ -104,7 +104,6 @@ fn sift_down<T, S>(heap: &mut [T], index: usize, mut less_than: S)
/// Iterator element type is `I::Item`.
///
/// See [`.kmerge()`](crate::Itertools::kmerge) for more information.
-#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
pub type KMerge<I> = KMergeBy<I, KMergeByLt>;
pub trait KMergePredicate<T> {
@@ -129,7 +128,7 @@ impl<T, F: FnMut(&T, &T)->bool> KMergePredicate<T> for F {
/// Create an iterator that merges elements of the contained iterators using
/// the ordering function.
///
-/// Equivalent to `iterable.into_iter().kmerge()`.
+/// [`IntoIterator`] enabled version of [`Itertools::kmerge`].
///
/// ```
/// use itertools::kmerge;
@@ -170,7 +169,7 @@ impl<I, F> fmt::Debug for KMergeBy<I, F>
/// Create an iterator that merges elements of the contained iterators.
///
-/// Equivalent to `iterable.into_iter().kmerge_by(less_than)`.
+/// [`IntoIterator`] enabled version of [`Itertools::kmerge_by`].
pub fn kmerge_by<I, F>(iterable: I, mut less_than: F)
-> KMergeBy<<I::Item as IntoIterator>::IntoIter, F>
where I: IntoIterator,
@@ -214,6 +213,7 @@ impl<I, F> Iterator for KMergeBy<I, F>
}
fn size_hint(&self) -> (usize, Option<usize>) {
+ #[allow(deprecated)] //TODO: once msrv hits 1.51. replace `fold1` with `reduce`
self.heap.iter()
.map(|i| i.size_hint())
.fold1(size_hint::add)
diff --git a/vendor/itertools/src/lazy_buffer.rs b/vendor/itertools/src/lazy_buffer.rs
index fa514ec2d..ca24062aa 100644
--- a/vendor/itertools/src/lazy_buffer.rs
+++ b/vendor/itertools/src/lazy_buffer.rs
@@ -28,16 +28,12 @@ where
if self.done {
return false;
}
- let next_item = self.it.next();
- match next_item {
- Some(x) => {
- self.buffer.push(x);
- true
- }
- None => {
- self.done = true;
- false
- }
+ if let Some(x) = self.it.next() {
+ self.buffer.push(x);
+ true
+ } else {
+ self.done = true;
+ false
}
}
@@ -61,7 +57,7 @@ where
{
type Output = <Vec<I::Item> as Index<J>>::Output;
- fn index(&self, _index: J) -> &Self::Output {
- self.buffer.index(_index)
+ fn index(&self, index: J) -> &Self::Output {
+ self.buffer.index(index)
}
}
diff --git a/vendor/itertools/src/lib.rs b/vendor/itertools/src/lib.rs
index df95e19ba..f91968870 100644
--- a/vendor/itertools/src/lib.rs
+++ b/vendor/itertools/src/lib.rs
@@ -197,6 +197,8 @@ mod combinations_with_replacement;
mod exactly_one_err;
mod diff;
mod flatten_ok;
+#[cfg(feature = "use_std")]
+mod extrema_set;
mod format;
#[cfg(feature = "use_std")]
mod grouping_map;
@@ -387,7 +389,7 @@ macro_rules! izip {
/// let with_macro: Chain<Chain<Once<_>, Take<Repeat<_>>>, slice::Iter<_>> =
/// chain![once(&0), repeat(&1).take(2), &[2, 3, 5],];
///
-/// // ...is equivalant to this:
+/// // ...is equivalent to this:
/// let with_method: Chain<Chain<Once<_>, Take<Repeat<_>>>, slice::Iter<_>> =
/// once(&0)
/// .chain(repeat(&1).take(2))
@@ -778,7 +780,7 @@ pub trait Itertools : Iterator {
/// the original iterator.
///
/// **Note:** If the iterator is clonable, prefer using that instead
- /// of using this method. It is likely to be more efficient.
+ /// of using this method. Cloning is likely to be more efficient.
///
/// Iterator element type is `Self::Item`.
///
@@ -904,7 +906,7 @@ pub trait Itertools : Iterator {
/// a series of `Result::Ok` values. `Result::Err` values are unchanged.
///
/// This is useful when you have some common error type for your crate and
- /// need to propogate it upwards, but the `Result::Ok` case needs to be flattened.
+ /// need to propagate it upwards, but the `Result::Ok` case needs to be flattened.
///
/// ```
/// use itertools::Itertools;
@@ -913,7 +915,7 @@ pub trait Itertools : Iterator {
/// let it = input.iter().cloned().flatten_ok();
/// itertools::assert_equal(it.clone(), vec![Ok(0), Ok(1), Err(false), Ok(2), Ok(3)]);
///
- /// // This can also be used to propogate errors when collecting.
+ /// // This can also be used to propagate errors when collecting.
/// let output_result: Result<Vec<i32>, bool> = it.collect();
/// assert_eq!(output_result, Err(false));
/// ```
@@ -1109,7 +1111,7 @@ pub trait Itertools : Iterator {
/// ```
#[cfg(feature = "use_alloc")]
fn multi_cartesian_product(self) -> MultiProduct<<Self::Item as IntoIterator>::IntoIter>
- where Self: Iterator + Sized,
+ where Self: Sized,
Self::Item: IntoIterator,
<Self::Item as IntoIterator>::IntoIter: Clone,
<Self::Item as IntoIterator>::Item: Clone
@@ -1746,12 +1748,10 @@ pub trait Itertools : Iterator {
fn find_position<P>(&mut self, mut pred: P) -> Option<(usize, Self::Item)>
where P: FnMut(&Self::Item) -> bool
{
- let mut index = 0usize;
- for elt in self {
+ for (index, elt) in self.enumerate() {
if pred(&elt) {
return Some((index, elt));
}
- index += 1;
}
None
}
@@ -1795,7 +1795,7 @@ pub trait Itertools : Iterator {
Some(if predicate(&first) {
first
} else {
- self.find(|x| predicate(&x)).unwrap_or(first)
+ self.find(|x| predicate(x)).unwrap_or(first)
})
}
/// Returns `true` if the given item is present in this iterator.
@@ -1953,7 +1953,7 @@ pub trait Itertools : Iterator {
where F: FnMut(Self::Item),
Self: Sized,
{
- self.for_each(f)
+ self.for_each(f);
}
/// Combine all an iterator's elements into one element by using [`Extend`].
@@ -2271,7 +2271,7 @@ pub trait Itertools : Iterator {
/// ```
///
/// Which, for non-associative functions, will typically produce a different
- /// result than the linear call tree used by `fold1`:
+ /// result than the linear call tree used by [`Iterator::reduce`]:
///
/// ```text
/// 1 2 3 4 5 6 7
@@ -2279,7 +2279,7 @@ pub trait Itertools : Iterator {
/// └─f─f─f─f─f─f
/// ```
///
- /// If `f` is associative, prefer the normal `fold1` instead.
+ /// If `f` is associative, prefer the normal [`Iterator::reduce`] instead.
///
/// ```
/// use itertools::Itertools;
@@ -2692,7 +2692,6 @@ pub trait Itertools : Iterator {
/// itertools::assert_equal(oldest_people_first,
/// vec!["Jill", "Jack", "Jane", "John"]);
/// ```
- /// ```
#[cfg(feature = "use_alloc")]
fn sorted_by_cached_key<K, F>(self, f: F) -> VecIntoIter<Self::Item>
where
@@ -2902,6 +2901,194 @@ pub trait Itertools : Iterator {
grouping_map::new(grouping_map::MapForGrouping::new(self, key_mapper))
}
+ /// Return all minimum elements of an iterator.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().min_set(), Vec::<&i32>::new());
+ ///
+ /// let a = [1];
+ /// assert_eq!(a.iter().min_set(), vec![&1]);
+ ///
+ /// let a = [1, 2, 3, 4, 5];
+ /// assert_eq!(a.iter().min_set(), vec![&1]);
+ ///
+ /// let a = [1, 1, 1, 1];
+ /// assert_eq!(a.iter().min_set(), vec![&1, &1, &1, &1]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn min_set(self) -> Vec<Self::Item>
+ where Self: Sized, Self::Item: Ord
+ {
+ extrema_set::min_set_impl(self, |_| (), |x, y, _, _| x.cmp(y))
+ }
+
+ /// Return all minimum elements of an iterator, as determined by
+ /// the specified function.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use std::cmp::Ordering;
+ /// use itertools::Itertools;
+ ///
+ /// let a: [(i32, i32); 0] = [];
+ /// assert_eq!(a.iter().min_set_by(|_, _| Ordering::Equal), Vec::<&(i32, i32)>::new());
+ ///
+ /// let a = [(1, 2)];
+ /// assert_eq!(a.iter().min_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2)]);
+ ///
+ /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)];
+ /// assert_eq!(a.iter().min_set_by(|&&(_,k1), &&(_,k2)| k1.cmp(&k2)), vec![&(1, 2), &(2, 2)]);
+ ///
+ /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)];
+ /// assert_eq!(a.iter().min_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn min_set_by<F>(self, mut compare: F) -> Vec<Self::Item>
+ where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering
+ {
+ extrema_set::min_set_impl(
+ self,
+ |_| (),
+ |x, y, _, _| compare(x, y)
+ )
+ }
+
+ /// Return all minimum elements of an iterator, as determined by
+ /// the specified function.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [(i32, i32); 0] = [];
+ /// assert_eq!(a.iter().min_set_by_key(|_| ()), Vec::<&(i32, i32)>::new());
+ ///
+ /// let a = [(1, 2)];
+ /// assert_eq!(a.iter().min_set_by_key(|&&(k,_)| k), vec![&(1, 2)]);
+ ///
+ /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)];
+ /// assert_eq!(a.iter().min_set_by_key(|&&(_, k)| k), vec![&(1, 2), &(2, 2)]);
+ ///
+ /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)];
+ /// assert_eq!(a.iter().min_set_by_key(|&&(k, _)| k), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn min_set_by_key<K, F>(self, key: F) -> Vec<Self::Item>
+ where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K
+ {
+ extrema_set::min_set_impl(self, key, |_, _, kx, ky| kx.cmp(ky))
+ }
+
+ /// Return all maximum elements of an iterator.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [i32; 0] = [];
+ /// assert_eq!(a.iter().max_set(), Vec::<&i32>::new());
+ ///
+ /// let a = [1];
+ /// assert_eq!(a.iter().max_set(), vec![&1]);
+ ///
+ /// let a = [1, 2, 3, 4, 5];
+ /// assert_eq!(a.iter().max_set(), vec![&5]);
+ ///
+ /// let a = [1, 1, 1, 1];
+ /// assert_eq!(a.iter().max_set(), vec![&1, &1, &1, &1]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn max_set(self) -> Vec<Self::Item>
+ where Self: Sized, Self::Item: Ord
+ {
+ extrema_set::max_set_impl(self, |_| (), |x, y, _, _| x.cmp(y))
+ }
+
+ /// Return all maximum elements of an iterator, as determined by
+ /// the specified function.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use std::cmp::Ordering;
+ /// use itertools::Itertools;
+ ///
+ /// let a: [(i32, i32); 0] = [];
+ /// assert_eq!(a.iter().max_set_by(|_, _| Ordering::Equal), Vec::<&(i32, i32)>::new());
+ ///
+ /// let a = [(1, 2)];
+ /// assert_eq!(a.iter().max_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2)]);
+ ///
+ /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)];
+ /// assert_eq!(a.iter().max_set_by(|&&(_,k1), &&(_,k2)| k1.cmp(&k2)), vec![&(3, 9), &(5, 9)]);
+ ///
+ /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)];
+ /// assert_eq!(a.iter().max_set_by(|&&(k1,_), &&(k2, _)| k1.cmp(&k2)), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn max_set_by<F>(self, mut compare: F) -> Vec<Self::Item>
+ where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering
+ {
+ extrema_set::max_set_impl(
+ self,
+ |_| (),
+ |x, y, _, _| compare(x, y)
+ )
+ }
+
+ /// Return all minimum elements of an iterator, as determined by
+ /// the specified function.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use itertools::Itertools;
+ ///
+ /// let a: [(i32, i32); 0] = [];
+ /// assert_eq!(a.iter().max_set_by_key(|_| ()), Vec::<&(i32, i32)>::new());
+ ///
+ /// let a = [(1, 2)];
+ /// assert_eq!(a.iter().max_set_by_key(|&&(k,_)| k), vec![&(1, 2)]);
+ ///
+ /// let a = [(1, 2), (2, 2), (3, 9), (4, 8), (5, 9)];
+ /// assert_eq!(a.iter().max_set_by_key(|&&(_, k)| k), vec![&(3, 9), &(5, 9)]);
+ ///
+ /// let a = [(1, 2), (1, 3), (1, 4), (1, 5)];
+ /// assert_eq!(a.iter().max_set_by_key(|&&(k, _)| k), vec![&(1, 2), &(1, 3), &(1, 4), &(1, 5)]);
+ /// ```
+ ///
+ /// The elements can be floats but no particular result is guaranteed
+ /// if an element is NaN.
+ #[cfg(feature = "use_std")]
+ fn max_set_by_key<K, F>(self, key: F) -> Vec<Self::Item>
+ where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K
+ {
+ extrema_set::max_set_impl(self, key, |_, _, kx, ky| kx.cmp(ky))
+ }
+
/// Return the minimum and maximum elements in the iterator.
///
/// The return type `MinMaxResult` is an enum of three variants:
@@ -3157,7 +3344,7 @@ pub trait Itertools : Iterator {
/// be equal to `ypos`.
///
/// On an iterator of length `n`, `position_minmax` does `1.5 * n`
- /// comparisons, and so is faster than calling `positon_min` and
+ /// comparisons, and so is faster than calling `position_min` and
/// `position_max` separately which does `2 * n` comparisons.
///
/// For the minimum, if several elements are equally minimum, the
@@ -3478,8 +3665,7 @@ impl<T: ?Sized> Itertools for T where T: Iterator { }
/// (elements pairwise equal and sequences of the same length),
/// `false` otherwise.
///
-/// This is an [`IntoIterator`] enabled function that is similar to the standard
-/// library method [`Iterator::eq`].
+/// [`IntoIterator`] enabled version of [`Iterator::eq`].
///
/// ```
/// assert!(itertools::equal(vec![1, 2, 3], 1..4));
@@ -3490,17 +3676,7 @@ pub fn equal<I, J>(a: I, b: J) -> bool
J: IntoIterator,
I::Item: PartialEq<J::Item>
{
- let mut ia = a.into_iter();
- let mut ib = b.into_iter();
- loop {
- match ia.next() {
- Some(x) => match ib.next() {
- Some(y) => if x != y { return false; },
- None => return false,
- },
- None => return ib.next().is_none()
- }
- }
+ a.into_iter().eq(b)
}
/// Assert that two iterables produce equal sequences, with the same
diff --git a/vendor/itertools/src/merge_join.rs b/vendor/itertools/src/merge_join.rs
index 4c0048f68..f2fbdea2c 100644
--- a/vendor/itertools/src/merge_join.rs
+++ b/vendor/itertools/src/merge_join.rs
@@ -4,10 +4,12 @@ use std::fmt;
use super::adaptors::{PutBack, put_back};
use crate::either_or_both::EitherOrBoth;
+#[cfg(doc)]
+use crate::Itertools;
/// Return an iterator adaptor that merge-joins items from the two base iterators in ascending order.
///
-/// See [`.merge_join_by()`](crate::Itertools::merge_join_by) for more information.
+/// [`IntoIterator`] enabled version of [`Itertools::merge_join_by`].
pub fn merge_join_by<I, J, F>(left: I, right: J, cmp_fn: F)
-> MergeJoinBy<I::IntoIter, J::IntoIter, F>
where I: IntoIterator,
diff --git a/vendor/itertools/src/multipeek_impl.rs b/vendor/itertools/src/multipeek_impl.rs
index 5917681fc..8b49c695e 100644
--- a/vendor/itertools/src/multipeek_impl.rs
+++ b/vendor/itertools/src/multipeek_impl.rs
@@ -2,6 +2,8 @@ use std::iter::Fuse;
use alloc::collections::VecDeque;
use crate::size_hint;
use crate::PeekingNext;
+#[cfg(doc)]
+use crate::Itertools;
/// See [`multipeek()`] for more information.
#[derive(Clone, Debug)]
@@ -15,6 +17,8 @@ pub struct MultiPeek<I>
/// An iterator adaptor that allows the user to peek at multiple `.next()`
/// values without advancing the base iterator.
+///
+/// [`IntoIterator`] enabled version of [`Itertools::multipeek`].
pub fn multipeek<I>(iterable: I) -> MultiPeek<I::IntoIter>
where I: IntoIterator
{
@@ -67,10 +71,8 @@ impl<I> PeekingNext for MultiPeek<I>
if let Some(r) = self.peek() {
if !accept(r) { return None }
}
- } else {
- if let Some(r) = self.buf.get(0) {
- if !accept(r) { return None }
- }
+ } else if let Some(r) = self.buf.get(0) {
+ if !accept(r) { return None }
}
self.next()
}
diff --git a/vendor/itertools/src/pad_tail.rs b/vendor/itertools/src/pad_tail.rs
index de57ee416..248a43243 100644
--- a/vendor/itertools/src/pad_tail.rs
+++ b/vendor/itertools/src/pad_tail.rs
@@ -23,7 +23,7 @@ where
debug_fmt_fields!(PadUsing, iter, min, pos);
}
-/// Create a new **PadUsing** iterator.
+/// Create a new `PadUsing` iterator.
pub fn pad_using<I, F>(iter: I, min: usize, filler: F) -> PadUsing<I, F>
where I: Iterator,
F: FnMut(usize) -> I::Item
diff --git a/vendor/itertools/src/peeking_take_while.rs b/vendor/itertools/src/peeking_take_while.rs
index cd0945a52..b3a9c5ccb 100644
--- a/vendor/itertools/src/peeking_take_while.rs
+++ b/vendor/itertools/src/peeking_take_while.rs
@@ -90,7 +90,7 @@ where
debug_fmt_fields!(PeekingTakeWhile, iter);
}
-/// Create a PeekingTakeWhile
+/// Create a `PeekingTakeWhile`
pub fn peeking_take_while<I, F>(iter: &mut I, f: F) -> PeekingTakeWhile<I, F>
where I: Iterator,
{
diff --git a/vendor/itertools/src/permutations.rs b/vendor/itertools/src/permutations.rs
index 3080f9d5c..d03b85262 100644
--- a/vendor/itertools/src/permutations.rs
+++ b/vendor/itertools/src/permutations.rs
@@ -113,19 +113,15 @@ where
Some(indices.map(|i| vals[i].clone()).collect())
}
- PermutationState::Complete(CompleteState::Start { .. }) => None,
PermutationState::Complete(CompleteState::Ongoing { ref indices, ref cycles }) => {
let k = cycles.len();
-
Some(indices[0..k].iter().map(|&i| vals[i].clone()).collect())
},
- PermutationState::Empty => None
+ PermutationState::Complete(CompleteState::Start { .. }) | PermutationState::Empty => None
}
}
fn count(self) -> usize {
- let Permutations { vals, state } = self;
-
fn from_complete(complete_state: CompleteState) -> usize {
match complete_state.remaining() {
CompleteStateRemaining::Known(count) => count,
@@ -135,6 +131,7 @@ where
}
}
+ let Permutations { vals, state } = self;
match state {
PermutationState::StartUnknownLen { k } => {
let n = vals.len() + vals.it.count();
diff --git a/vendor/itertools/src/rciter_impl.rs b/vendor/itertools/src/rciter_impl.rs
index 782908e28..7298350a8 100644
--- a/vendor/itertools/src/rciter_impl.rs
+++ b/vendor/itertools/src/rciter_impl.rs
@@ -51,7 +51,6 @@ pub fn rciter<I>(iterable: I) -> RcIter<I::IntoIter>
}
impl<I> Clone for RcIter<I> {
- #[inline]
clone_fields!(rciter);
}
diff --git a/vendor/itertools/src/size_hint.rs b/vendor/itertools/src/size_hint.rs
index 1168ecaa3..71ea1412b 100644
--- a/vendor/itertools/src/size_hint.rs
+++ b/vendor/itertools/src/size_hint.rs
@@ -1,14 +1,14 @@
-//! Arithmetic on **Iterator** *.size_hint()* values.
+//! Arithmetic on `Iterator.size_hint()` values.
//!
use std::usize;
use std::cmp;
use std::u32;
-/// **SizeHint** is the return type of **Iterator::size_hint()**.
+/// `SizeHint` is the return type of `Iterator::size_hint()`.
pub type SizeHint = (usize, Option<usize>);
-/// Add **SizeHint** correctly.
+/// Add `SizeHint` correctly.
#[inline]
pub fn add(a: SizeHint, b: SizeHint) -> SizeHint {
let min = a.0.saturating_add(b.0);
@@ -20,7 +20,7 @@ pub fn add(a: SizeHint, b: SizeHint) -> SizeHint {
(min, max)
}
-/// Add **x** correctly to a **SizeHint**.
+/// Add `x` correctly to a `SizeHint`.
#[inline]
pub fn add_scalar(sh: SizeHint, x: usize) -> SizeHint {
let (mut low, mut hi) = sh;
@@ -29,7 +29,7 @@ pub fn add_scalar(sh: SizeHint, x: usize) -> SizeHint {
(low, hi)
}
-/// Sbb **x** correctly to a **SizeHint**.
+/// Subtract `x` correctly from a `SizeHint`.
#[inline]
#[allow(dead_code)]
pub fn sub_scalar(sh: SizeHint, x: usize) -> SizeHint {
@@ -40,7 +40,7 @@ pub fn sub_scalar(sh: SizeHint, x: usize) -> SizeHint {
}
-/// Multiply **SizeHint** correctly
+/// Multiply `SizeHint` correctly
///
/// ```ignore
/// use std::usize;
@@ -66,7 +66,7 @@ pub fn mul(a: SizeHint, b: SizeHint) -> SizeHint {
(low, hi)
}
-/// Multiply **x** correctly with a **SizeHint**.
+/// Multiply `x` correctly with a `SizeHint`.
#[inline]
pub fn mul_scalar(sh: SizeHint, x: usize) -> SizeHint {
let (mut low, mut hi) = sh;
@@ -75,7 +75,7 @@ pub fn mul_scalar(sh: SizeHint, x: usize) -> SizeHint {
(low, hi)
}
-/// Raise `base` correctly by a **`SizeHint`** exponent.
+/// Raise `base` correctly by a `SizeHint` exponent.
#[inline]
pub fn pow_scalar_base(base: usize, exp: SizeHint) -> SizeHint {
let exp_low = cmp::min(exp.0, u32::MAX as usize) as u32;
diff --git a/vendor/itertools/src/tuple_impl.rs b/vendor/itertools/src/tuple_impl.rs
index d914e0323..06b5c13cb 100644
--- a/vendor/itertools/src/tuple_impl.rs
+++ b/vendor/itertools/src/tuple_impl.rs
@@ -162,8 +162,8 @@ pub fn tuple_windows<I, T>(mut iter: I) -> TupleWindows<I, T>
}
TupleWindows {
- last,
iter,
+ last,
}
}
diff --git a/vendor/itertools/src/unique_impl.rs b/vendor/itertools/src/unique_impl.rs
index 2240f36ed..4e81e78ec 100644
--- a/vendor/itertools/src/unique_impl.rs
+++ b/vendor/itertools/src/unique_impl.rs
@@ -1,6 +1,5 @@
-
use std::collections::HashMap;
-use std::collections::hash_map::{Entry};
+use std::collections::hash_map::Entry;
use std::hash::Hash;
use std::fmt;
use std::iter::FusedIterator;
@@ -12,7 +11,9 @@ use std::iter::FusedIterator;
#[must_use = "iterator adaptors are lazy and do nothing unless consumed"]
pub struct UniqueBy<I: Iterator, V, F> {
iter: I,
- // Use a hashmap for the entry API
+ // Use a Hashmap for the Entry API in order to prevent hashing twice.
+ // This can maybe be replaced with a HashSet once `get_or_insert_with`
+ // or a proper Entry API for Hashset is stable and meets this msrv
used: HashMap<V, ()>,
f: F,
}
diff --git a/vendor/itertools/src/unziptuple.rs b/vendor/itertools/src/unziptuple.rs
index f468f05e0..7af29ec4a 100644
--- a/vendor/itertools/src/unziptuple.rs
+++ b/vendor/itertools/src/unziptuple.rs
@@ -39,11 +39,11 @@ macro_rules! impl_unzip_iter {
#[allow(non_snake_case)]
impl<IT: Iterator<Item = ($($T,)*)>, $($T, $FromT: Default + Extend<$T>),* > MultiUnzip<($($FromT,)*)> for IT {
fn multiunzip(self) -> ($($FromT,)*) {
- // This implementation mirrors the logic of Iterator::unzip as close as possible.
- // Unfortunately a lot of the used api there is still unstable represented by
- // the commented out parts that follow.
+ // This implementation mirrors the logic of Iterator::unzip resp. Extend for (A, B) as close as possible.
+ // Unfortunately a lot of the used api there is still unstable (https://github.com/rust-lang/rust/issues/72631).
//
- // https://doc.rust-lang.org/src/core/iter/traits/iterator.rs.html#2816-2844
+ // Iterator::unzip: https://doc.rust-lang.org/src/core/iter/traits/iterator.rs.html#2825-2865
+ // Extend for (A, B): https://doc.rust-lang.org/src/core/iter/traits/collect.rs.html#370-411
let mut res = ($($FromT::default(),)*);
let ($($FromT,)*) = &mut res;
diff --git a/vendor/itertools/src/ziptuple.rs b/vendor/itertools/src/ziptuple.rs
index b7902ae53..6d3a584c4 100644
--- a/vendor/itertools/src/ziptuple.rs
+++ b/vendor/itertools/src/ziptuple.rs
@@ -36,6 +36,7 @@ pub struct Zip<T> {
///
/// assert_eq!(results, [0 + 3, 10 + 7, 29, 36]);
/// ```
+/// [`izip!()`]: crate::izip
pub fn multizip<T, U>(t: U) -> Zip<T>
where Zip<T>: From<U>,
Zip<T>: Iterator,
diff --git a/vendor/itertools/tests/adaptors_no_collect.rs b/vendor/itertools/tests/adaptors_no_collect.rs
index a47f906f9..103db23f1 100644
--- a/vendor/itertools/tests/adaptors_no_collect.rs
+++ b/vendor/itertools/tests/adaptors_no_collect.rs
@@ -11,12 +11,11 @@ impl Iterator for PanickingCounter {
fn next(&mut self) -> Option<Self::Item> {
self.curr += 1;
- if self.curr == self.max {
- panic!(
- "Input iterator reached maximum of {} suggesting collection by adaptor",
- self.max
- );
- }
+ assert_ne!(
+ self.curr, self.max,
+ "Input iterator reached maximum of {} suggesting collection by adaptor",
+ self.max
+ );
Some(())
}
diff --git a/vendor/itertools/tests/quick.rs b/vendor/itertools/tests/quick.rs
index 7e222a641..0adcf1ad7 100644
--- a/vendor/itertools/tests/quick.rs
+++ b/vendor/itertools/tests/quick.rs
@@ -258,12 +258,13 @@ where
let mut it = get_it();
for _ in 0..(counts.len() - 1) {
- if let None = it.next() {
+ #[allow(clippy::manual_assert)]
+ if it.next().is_none() {
panic!("Iterator shouldn't be finished, may not be deterministic");
}
}
- if let None = it.next() {
+ if it.next().is_none() {
break 'outer;
}
@@ -438,7 +439,7 @@ quickcheck! {
}
assert_eq!(answer, actual);
- assert_eq!(answer.into_iter().last(), a.clone().multi_cartesian_product().last());
+ assert_eq!(answer.into_iter().last(), a.multi_cartesian_product().last());
}
#[allow(deprecated)]
@@ -498,15 +499,13 @@ quickcheck! {
exact_size(it)
}
- fn equal_merge(a: Vec<i16>, b: Vec<i16>) -> bool {
- let mut sa = a.clone();
- let mut sb = b.clone();
- sa.sort();
- sb.sort();
- let mut merged = sa.clone();
- merged.extend(sb.iter().cloned());
+ fn equal_merge(mut a: Vec<i16>, mut b: Vec<i16>) -> bool {
+ a.sort();
+ b.sort();
+ let mut merged = a.clone();
+ merged.extend(b.iter().cloned());
merged.sort();
- itertools::equal(&merged, sa.iter().merge(&sb))
+ itertools::equal(&merged, a.iter().merge(&b))
}
fn size_merge(a: Iter<u16>, b: Iter<u16>) -> bool {
correct_size_hint(a.merge(b))
@@ -517,7 +516,7 @@ quickcheck! {
exact_size(multizip((a, b, c)))
}
fn size_zip_rc(a: Iter<i16>, b: Iter<i16>) -> bool {
- let rc = rciter(a.clone());
+ let rc = rciter(a);
correct_size_hint(multizip((&rc, &rc, b)))
}
@@ -526,19 +525,16 @@ quickcheck! {
correct_size_hint(izip!(filt, b.clone(), c.clone())) &&
exact_size(izip!(a, b, c))
}
- fn equal_kmerge(a: Vec<i16>, b: Vec<i16>, c: Vec<i16>) -> bool {
+ fn equal_kmerge(mut a: Vec<i16>, mut b: Vec<i16>, mut c: Vec<i16>) -> bool {
use itertools::free::kmerge;
- let mut sa = a.clone();
- let mut sb = b.clone();
- let mut sc = c.clone();
- sa.sort();
- sb.sort();
- sc.sort();
- let mut merged = sa.clone();
- merged.extend(sb.iter().cloned());
- merged.extend(sc.iter().cloned());
+ a.sort();
+ b.sort();
+ c.sort();
+ let mut merged = a.clone();
+ merged.extend(b.iter().cloned());
+ merged.extend(c.iter().cloned());
merged.sort();
- itertools::equal(merged.into_iter(), kmerge(vec![sa, sb, sc]))
+ itertools::equal(merged.into_iter(), kmerge(vec![a, b, c]))
}
// Any number of input iterators
@@ -610,7 +606,7 @@ quickcheck! {
fn size_2_zip_longest(a: Iter<i16>, b: Iter<i16>) -> bool {
let it = a.clone().zip_longest(b.clone());
let jt = a.clone().zip_longest(b.clone());
- itertools::equal(a.clone(),
+ itertools::equal(a,
it.filter_map(|elt| match elt {
EitherOrBoth::Both(x, _) => Some(x),
EitherOrBoth::Left(x) => Some(x),
@@ -618,7 +614,7 @@ quickcheck! {
}
))
&&
- itertools::equal(b.clone(),
+ itertools::equal(b,
jt.filter_map(|elt| match elt {
EitherOrBoth::Both(_, y) => Some(y),
EitherOrBoth::Right(y) => Some(y),
@@ -721,7 +717,7 @@ quickcheck! {
assert_eq!(expected_first, curr_perm);
- while let Some(next_perm) = perms.next() {
+ for next_perm in perms {
assert!(
next_perm > curr_perm,
"next perm isn't greater-than current; next_perm={:?} curr_perm={:?} n={}",
@@ -943,8 +939,7 @@ quickcheck! {
fn fuzz_group_by_lazy_1(it: Iter<u8>) -> bool {
let jt = it.clone();
let groups = it.group_by(|k| *k);
- let res = itertools::equal(jt, groups.into_iter().flat_map(|(_, x)| x));
- res
+ itertools::equal(jt, groups.into_iter().flat_map(|(_, x)| x))
}
}
@@ -1286,7 +1281,7 @@ quickcheck! {
.map(|i| (i % modulo, i))
.into_group_map()
.into_iter()
- .map(|(key, vals)| (key, vals.into_iter().fold(0u64, |acc, val| acc + val)))
+ .map(|(key, vals)| (key, vals.into_iter().sum()))
.collect::<HashMap<_,_>>();
assert_eq!(lookup, group_map_lookup);
@@ -1551,10 +1546,10 @@ quickcheck! {
}
quickcheck! {
- #[test]
fn counts(nums: Vec<isize>) -> TestResult {
let counts = nums.iter().counts();
for (&item, &count) in counts.iter() {
+ #[allow(clippy::absurd_extreme_comparisons)]
if count <= 0 {
return TestResult::failed();
}
@@ -1602,7 +1597,7 @@ quickcheck! {
fn is_fused<I: Iterator>(mut it: I) -> bool
{
- while let Some(_) = it.next() {}
+ for _ in it.by_ref() {}
for _ in 0..10{
if it.next().is_some(){
return false;
@@ -1693,3 +1688,62 @@ quickcheck! {
}
}
+quickcheck! {
+ fn min_set_contains_min(a: Vec<(usize, char)>) -> bool {
+ let result_set = a.iter().min_set();
+ if let Some(result_element) = a.iter().min() {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+
+ fn min_set_by_contains_min(a: Vec<(usize, char)>) -> bool {
+ let compare = |x: &&(usize, char), y: &&(usize, char)| x.1.cmp(&y.1);
+ let result_set = a.iter().min_set_by(compare);
+ if let Some(result_element) = a.iter().min_by(compare) {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+
+ fn min_set_by_key_contains_min(a: Vec<(usize, char)>) -> bool {
+ let key = |x: &&(usize, char)| x.1;
+ let result_set = a.iter().min_set_by_key(&key);
+ if let Some(result_element) = a.iter().min_by_key(&key) {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+
+ fn max_set_contains_max(a: Vec<(usize, char)>) -> bool {
+ let result_set = a.iter().max_set();
+ if let Some(result_element) = a.iter().max() {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+
+ fn max_set_by_contains_max(a: Vec<(usize, char)>) -> bool {
+ let compare = |x: &&(usize, char), y: &&(usize, char)| x.1.cmp(&y.1);
+ let result_set = a.iter().max_set_by(compare);
+ if let Some(result_element) = a.iter().max_by(compare) {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+
+ fn max_set_by_key_contains_max(a: Vec<(usize, char)>) -> bool {
+ let key = |x: &&(usize, char)| x.1;
+ let result_set = a.iter().max_set_by_key(&key);
+ if let Some(result_element) = a.iter().max_by_key(&key) {
+ result_set.contains(&result_element)
+ } else {
+ result_set.is_empty()
+ }
+ }
+}
diff --git a/vendor/itertools/tests/specializations.rs b/vendor/itertools/tests/specializations.rs
index 199cf562a..057e11c9f 100644
--- a/vendor/itertools/tests/specializations.rs
+++ b/vendor/itertools/tests/specializations.rs
@@ -129,7 +129,7 @@ quickcheck! {
check_results_specialized!(it, |i| {
let mut parameters_from_fold = vec![];
let fold_result = i.fold(vec![], |mut acc, v| {
- parameters_from_fold.push((acc.clone(), v.clone()));
+ parameters_from_fold.push((acc.clone(), v));
acc.push(v);
acc
});
@@ -139,7 +139,7 @@ quickcheck! {
let mut parameters_from_all = vec![];
let first = i.next();
let all_result = i.all(|x| {
- parameters_from_all.push(x.clone());
+ parameters_from_all.push(x);
Some(x)==first
});
(parameters_from_all, all_result)
diff --git a/vendor/itertools/tests/test_core.rs b/vendor/itertools/tests/test_core.rs
index a7b7449d3..df94eb665 100644
--- a/vendor/itertools/tests/test_core.rs
+++ b/vendor/itertools/tests/test_core.rs
@@ -116,7 +116,7 @@ fn chain2() {
fn write_to() {
let xs = [7, 9, 8];
let mut ys = [0; 5];
- let cnt = ys.iter_mut().set_from(xs.iter().map(|x| *x));
+ let cnt = ys.iter_mut().set_from(xs.iter().copied());
assert!(cnt == xs.len());
assert!(ys == [7, 9, 8, 0, 0]);
@@ -180,15 +180,10 @@ fn batching() {
let ys = [(0, 1), (2, 1)];
// An iterator that gathers elements up in pairs
- let pit = xs.iter().cloned().batching(|it| {
- match it.next() {
- None => None,
- Some(x) => match it.next() {
- None => None,
- Some(y) => Some((x, y)),
- }
- }
- });
+ let pit = xs
+ .iter()
+ .cloned()
+ .batching(|it| it.next().and_then(|x| it.next().map(|y| (x, y))));
it::assert_equal(pit, ys.iter().cloned());
}
diff --git a/vendor/itertools/tests/test_std.rs b/vendor/itertools/tests/test_std.rs
index 2049d1597..f59034234 100644
--- a/vendor/itertools/tests/test_std.rs
+++ b/vendor/itertools/tests/test_std.rs
@@ -1,5 +1,3 @@
-use paste;
-use permutohedron;
use quickcheck as qc;
use rand::{distributions::{Distribution, Standard}, Rng, SeedableRng, rngs::StdRng};
use rand::{seq::SliceRandom, thread_rng};
@@ -123,12 +121,12 @@ fn unique() {
#[test]
fn intersperse() {
let xs = ["a", "", "b", "c"];
- let v: Vec<&str> = xs.iter().map(|x| x.clone()).intersperse(", ").collect();
+ let v: Vec<&str> = xs.iter().cloned().intersperse(", ").collect();
let text: String = v.concat();
assert_eq!(text, "a, , b, c".to_string());
let ys = [0, 1, 2, 3];
- let mut it = ys[..0].iter().map(|x| *x).intersperse(1);
+ let mut it = ys[..0].iter().copied().intersperse(1);
assert!(it.next() == None);
}
@@ -474,7 +472,7 @@ impl<T: Clone + Send, R: Clone + Rng + SeedableRng + Send> qc::Arbitrary for Ran
// Check that taking the k smallest is the same as
// sorting then taking the k first elements
-fn k_smallest_sort<I>(i: I, k: u16) -> ()
+fn k_smallest_sort<I>(i: I, k: u16)
where
I: Iterator + Clone,
I::Item: Ord + Debug,
@@ -538,10 +536,10 @@ fn sorted_by_cached_key() {
fn test_multipeek() {
let nums = vec![1u8,2,3,4,5];
- let mp = multipeek(nums.iter().map(|&x| x));
+ let mp = multipeek(nums.iter().copied());
assert_eq!(nums, mp.collect::<Vec<_>>());
- let mut mp = multipeek(nums.iter().map(|&x| x));
+ let mut mp = multipeek(nums.iter().copied());
assert_eq!(mp.peek(), Some(&1));
assert_eq!(mp.next(), Some(1));
assert_eq!(mp.peek(), Some(&2));
@@ -579,7 +577,7 @@ fn test_multipeek_peeking_next() {
use crate::it::PeekingNext;
let nums = vec![1u8,2,3,4,5,6,7];
- let mut mp = multipeek(nums.iter().map(|&x| x));
+ let mut mp = multipeek(nums.iter().copied());
assert_eq!(mp.peeking_next(|&x| x != 0), Some(1));
assert_eq!(mp.next(), Some(2));
assert_eq!(mp.peek(), Some(&3));
@@ -604,10 +602,10 @@ fn test_multipeek_peeking_next() {
fn test_peek_nth() {
let nums = vec![1u8,2,3,4,5];
- let iter = peek_nth(nums.iter().map(|&x| x));
+ let iter = peek_nth(nums.iter().copied());
assert_eq!(nums, iter.collect::<Vec<_>>());
- let mut iter = peek_nth(nums.iter().map(|&x| x));
+ let mut iter = peek_nth(nums.iter().copied());
assert_eq!(iter.peek_nth(0), Some(&1));
assert_eq!(iter.peek_nth(0), Some(&1));
@@ -638,7 +636,7 @@ fn test_peek_nth() {
fn test_peek_nth_peeking_next() {
use it::PeekingNext;
let nums = vec![1u8,2,3,4,5,6,7];
- let mut iter = peek_nth(nums.iter().map(|&x| x));
+ let mut iter = peek_nth(nums.iter().copied());
assert_eq!(iter.peeking_next(|&x| x != 0), Some(1));
assert_eq!(iter.next(), Some(2));
@@ -694,7 +692,7 @@ fn group_by() {
}
}
- let toupper = |ch: &char| ch.to_uppercase().nth(0).unwrap();
+ let toupper = |ch: &char| ch.to_uppercase().next().unwrap();
// try all possible orderings
for indices in permutohedron::Heap::new(&mut [0, 1, 2, 3]) {
@@ -993,6 +991,54 @@ fn diff_shorter() {
}
#[test]
+fn extrema_set() {
+ use std::cmp::Ordering;
+
+ // A peculiar type: Equality compares both tuple items, but ordering only the
+ // first item. Used to distinguish equal elements.
+ #[derive(Clone, Debug, PartialEq, Eq)]
+ struct Val(u32, u32);
+
+ impl PartialOrd<Val> for Val {
+ fn partial_cmp(&self, other: &Val) -> Option<Ordering> {
+ self.0.partial_cmp(&other.0)
+ }
+ }
+
+ impl Ord for Val {
+ fn cmp(&self, other: &Val) -> Ordering {
+ self.0.cmp(&other.0)
+ }
+ }
+
+ assert_eq!(None::<u32>.iter().min_set(), Vec::<&u32>::new());
+ assert_eq!(None::<u32>.iter().max_set(), Vec::<&u32>::new());
+
+ assert_eq!(Some(1u32).iter().min_set(), vec![&1]);
+ assert_eq!(Some(1u32).iter().max_set(), vec![&1]);
+
+ let data = vec![Val(0, 1), Val(2, 0), Val(0, 2), Val(1, 0), Val(2, 1)];
+
+ let min_set = data.iter().min_set();
+ assert_eq!(min_set, vec![&Val(0, 1), &Val(0, 2)]);
+
+ let min_set_by_key = data.iter().min_set_by_key(|v| v.1);
+ assert_eq!(min_set_by_key, vec![&Val(2, 0), &Val(1, 0)]);
+
+ let min_set_by = data.iter().min_set_by(|x, y| x.1.cmp(&y.1));
+ assert_eq!(min_set_by, vec![&Val(2, 0), &Val(1, 0)]);
+
+ let max_set = data.iter().max_set();
+ assert_eq!(max_set, vec![&Val(2, 0), &Val(2, 1)]);
+
+ let max_set_by_key = data.iter().max_set_by_key(|v| v.1);
+ assert_eq!(max_set_by_key, vec![&Val(0, 2)]);
+
+ let max_set_by = data.iter().max_set_by(|x, y| x.1.cmp(&y.1));
+ assert_eq!(max_set_by, vec![&Val(0, 2)]);
+}
+
+#[test]
fn minmax() {
use std::cmp::Ordering;
use crate::it::MinMaxResult;
@@ -1043,9 +1089,9 @@ fn format() {
let t2 = format!("{:?}", data.iter().format("--"));
assert_eq!(t2, ans2);
- let dataf = [1.1, 2.71828, -22.];
+ let dataf = [1.1, 5.71828, -22.];
let t3 = format!("{:.2e}", dataf.iter().format(", "));
- assert_eq!(t3, "1.10e0, 2.72e0, -2.20e1");
+ assert_eq!(t3, "1.10e0, 5.72e0, -2.20e1");
}
#[test]
@@ -1062,7 +1108,7 @@ fn fold_while() {
let vec = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let sum = vec.into_iter().fold_while(0, |acc, item| {
iterations += 1;
- let new_sum = acc.clone() + item;
+ let new_sum = acc + item;
if new_sum <= 20 {
FoldWhile::Continue(new_sum)
} else {
@@ -1095,7 +1141,7 @@ fn tree_fold1() {
"0 1 x 2 3 x x 4 5 x 6 7 x x x 8 9 x 10 11 x x 12 13 x 14 15 x x x x",
];
for (i, &s) in x.iter().enumerate() {
- let expected = if s == "" { None } else { Some(s.to_string()) };
+ let expected = if s.is_empty() { None } else { Some(s.to_string()) };
let num_strings = (0..i).map(|x| x.to_string());
let actual = num_strings.tree_fold1(|a, b| format!("{} {} x", a, b));
assert_eq!(actual, expected);
@@ -1119,4 +1165,4 @@ fn multiunzip() {
let (): () = [(), (), ()].iter().cloned().multiunzip();
let t: (Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>, Vec<_>) = [(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)].iter().cloned().multiunzip();
assert_eq!(t, (vec![0], vec![1], vec![2], vec![3], vec![4], vec![5], vec![6], vec![7], vec![8], vec![9], vec![10], vec![11]));
-} \ No newline at end of file
+}
diff --git a/vendor/itertools/tests/zip.rs b/vendor/itertools/tests/zip.rs
index 5801b4232..75157d34f 100644
--- a/vendor/itertools/tests/zip.rs
+++ b/vendor/itertools/tests/zip.rs
@@ -29,8 +29,8 @@ fn test_zip_longest_size_hint() {
fn test_double_ended_zip_longest() {
let xs = [1, 2, 3, 4, 5, 6];
let ys = [1, 2, 3, 7];
- let a = xs.iter().map(|&x| x);
- let b = ys.iter().map(|&x| x);
+ let a = xs.iter().copied();
+ let b = ys.iter().copied();
let mut it = a.zip_longest(b);
assert_eq!(it.next(), Some(Both(1, 1)));
assert_eq!(it.next(), Some(Both(2, 2)));
@@ -45,8 +45,8 @@ fn test_double_ended_zip_longest() {
fn test_double_ended_zip() {
let xs = [1, 2, 3, 4, 5, 6];
let ys = [1, 2, 3, 7];
- let a = xs.iter().map(|&x| x);
- let b = ys.iter().map(|&x| x);
+ let a = xs.iter().copied();
+ let b = ys.iter().copied();
let mut it = multizip((a, b));
assert_eq!(it.next_back(), Some((4, 7)));
assert_eq!(it.next_back(), Some((3, 3)));
diff --git a/vendor/itoa/.cargo-checksum.json b/vendor/itoa/.cargo-checksum.json
index 3422ca4a1..5c464a6c5 100644
--- a/vendor/itoa/.cargo-checksum.json
+++ b/vendor/itoa/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"3c81fd59c059ee454f7812e8a9e90078880a4c101964ac4ce63537cec7d36c1e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"8e9d4e6ac0c740793958bf57c3dbd62827340cf77a282633c388aff70a7c1a22","benches/bench.rs":"636f3093bd461210ad3063289d455f90669c4a1be3273bcd30898de39f02c641","src/lib.rs":"f3b4bd0934f41b8f8a8828a22a9f5ad2af1ac1e7b632743ec2de46fbb4cb0b59","src/udiv128.rs":"16394f767854452756372d74f8025f7329fd8b61a676d81edf489681a6332ee9","tests/test.rs":"f7404fc5f7cd1bdaf74a3b64a70d5b30586241ddc1ce2c82bd1b564999fcce0e"},"package":"112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"} \ No newline at end of file
+{"files":{"Cargo.toml":"895c75445c305a4d56486a2ca7312a85a486469492286e277f41601be418bcd4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"4bc11375d5c1c2c7cf4988b94d44c0f1fe8cdf2d68755fef127cd5ba0d70b939","benches/bench.rs":"636f3093bd461210ad3063289d455f90669c4a1be3273bcd30898de39f02c641","src/lib.rs":"9438cd2cfcf95e4a6719816580e209c3873beb75074ca756118f8723d336141b","src/udiv128.rs":"d28c1872c37ee2185931babcb20a221b8706a5aa8abc4963419763888023ff17","tests/test.rs":"f7404fc5f7cd1bdaf74a3b64a70d5b30586241ddc1ce2c82bd1b564999fcce0e"},"package":"4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc"} \ No newline at end of file
diff --git a/vendor/itoa/Cargo.toml b/vendor/itoa/Cargo.toml
index 51506e7a1..bab03ecf7 100644
--- a/vendor/itoa/Cargo.toml
+++ b/vendor/itoa/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.36"
name = "itoa"
-version = "1.0.2"
+version = "1.0.4"
authors = ["David Tolnay <dtolnay@gmail.com>"]
exclude = [
"performance.png",
@@ -22,9 +22,17 @@ exclude = [
description = "Fast integer primitive to string conversion"
documentation = "https://docs.rs/itoa"
readme = "README.md"
-categories = ["value-formatting"]
+keywords = ["integer"]
+categories = [
+ "value-formatting",
+ "no-std",
+]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/itoa"
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]
+
+[dependencies.no-panic]
+version = "0.1"
+optional = true
diff --git a/vendor/itoa/README.md b/vendor/itoa/README.md
index 6e241e1c3..914d1ff30 100644
--- a/vendor/itoa/README.md
+++ b/vendor/itoa/README.md
@@ -3,7 +3,7 @@ itoa
[<img alt="github" src="https://img.shields.io/badge/github-dtolnay/itoa-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20">](https://github.com/dtolnay/itoa)
[<img alt="crates.io" src="https://img.shields.io/crates/v/itoa.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20">](https://crates.io/crates/itoa)
-[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-itoa-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K" height="20">](https://docs.rs/itoa)
+[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-itoa-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs" height="20">](https://docs.rs/itoa)
[<img alt="build status" src="https://img.shields.io/github/workflow/status/dtolnay/itoa/CI/master?style=for-the-badge" height="20">](https://github.com/dtolnay/itoa/actions?query=branch%3Amaster)
This crate provides a fast conversion of integer primitives to decimal strings.
diff --git a/vendor/itoa/src/lib.rs b/vendor/itoa/src/lib.rs
index 86604aa2a..7c3616e51 100644
--- a/vendor/itoa/src/lib.rs
+++ b/vendor/itoa/src/lib.rs
@@ -2,7 +2,7 @@
//!
//! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github
//! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust
-//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K
+//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs
//!
//! <br>
//!
@@ -30,7 +30,7 @@
//!
//! ![performance](https://raw.githubusercontent.com/dtolnay/itoa/master/performance.png)
-#![doc(html_root_url = "https://docs.rs/itoa/1.0.2")]
+#![doc(html_root_url = "https://docs.rs/itoa/1.0.4")]
#![no_std]
#![allow(
clippy::cast_lossless,
@@ -43,6 +43,8 @@ mod udiv128;
use core::mem::{self, MaybeUninit};
use core::{ptr, slice, str};
+#[cfg(feature = "no-panic")]
+use no_panic::no_panic;
/// A correctly sized stack allocation for the formatted integer to be written
/// into.
@@ -76,6 +78,7 @@ impl Buffer {
/// This is a cheap operation; you don't need to worry about reusing buffers
/// for efficiency.
#[inline]
+ #[cfg_attr(feature = "no-panic", no_panic)]
pub fn new() -> Buffer {
let bytes = [MaybeUninit::<u8>::uninit(); I128_MAX_LEN];
Buffer { bytes }
@@ -83,6 +86,7 @@ impl Buffer {
/// Print an integer into this buffer and return a reference to its string
/// representation within the buffer.
+ #[cfg_attr(feature = "no-panic", no_panic)]
pub fn format<I: Integer>(&mut self, i: I) -> &str {
i.write(unsafe {
&mut *(&mut self.bytes as *mut [MaybeUninit<u8>; I128_MAX_LEN]
@@ -122,6 +126,7 @@ macro_rules! impl_Integer {
#[allow(unused_comparisons)]
#[inline]
+ #[cfg_attr(feature = "no-panic", no_panic)]
fn write(self, buf: &mut [MaybeUninit<u8>; $max_len]) -> &str {
let is_nonnegative = self >= 0;
let mut n = if is_nonnegative {
@@ -223,6 +228,7 @@ macro_rules! impl_Integer128 {
#[allow(unused_comparisons)]
#[inline]
+ #[cfg_attr(feature = "no-panic", no_panic)]
fn write(self, buf: &mut [MaybeUninit<u8>; $max_len]) -> &str {
let is_nonnegative = self >= 0;
let n = if is_nonnegative {
diff --git a/vendor/itoa/src/udiv128.rs b/vendor/itoa/src/udiv128.rs
index df53eb526..0587047a7 100644
--- a/vendor/itoa/src/udiv128.rs
+++ b/vendor/itoa/src/udiv128.rs
@@ -1,5 +1,9 @@
+#[cfg(feature = "no-panic")]
+use no_panic::no_panic;
+
/// Multiply unsigned 128 bit integers, return upper 128 bits of the result
#[inline]
+#[cfg_attr(feature = "no-panic", no_panic)]
fn u128_mulhi(x: u128, y: u128) -> u128 {
let x_lo = x as u64;
let x_hi = (x >> 64) as u64;
@@ -26,6 +30,7 @@ fn u128_mulhi(x: u128, y: u128) -> u128 {
/// Implementation, 1994, pp. 61–72
///
#[inline]
+#[cfg_attr(feature = "no-panic", no_panic)]
pub fn udivmod_1e19(n: u128) -> (u128, u64) {
let d = 10_000_000_000_000_000_000_u64; // 10^19
diff --git a/vendor/lazycell/.cargo-checksum.json b/vendor/lazycell/.cargo-checksum.json
new file mode 100644
index 000000000..a5316aaaf
--- /dev/null
+++ b/vendor/lazycell/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"54036052985525a153f9e6c9dda6a143b7494a477908fb28f5705f92dd387059","Cargo.toml":"79f5da117603f75361b9a7309f102a9ab70b66d5c1c269a30f66fdea58ccc657","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"03f6ccb4e6040abccf12b31551bbbd1800a5069a17950bbd6db850d85744800f","README.md":"26e4440387d4fc898f377eb5394f3432f8625ed8aa46e02ffb61aac8b2032967","src/lib.rs":"3fcef569bd4feb760925e34aef0e66739a0827cbc1b26ae033f57e322c3a2515","src/serde_impl.rs":"4903fb722748e91bdc4b481c7f3309e79e962f75c9717e7e13edcccd0242a52d"},"package":"830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"} \ No newline at end of file
diff --git a/vendor/lazycell/CHANGELOG.md b/vendor/lazycell/CHANGELOG.md
new file mode 100644
index 000000000..1ac4a6e82
--- /dev/null
+++ b/vendor/lazycell/CHANGELOG.md
@@ -0,0 +1,197 @@
+<a name="v1.3.0"></a>
+## v1.3.0 (2020-08-12)
+
+
+#### Bug Fixes
+
+* Add custom `impl Default` to support non-Default-able `<T>` types ([b49f4eab](https://github.com/indiv0/lazycell/commit/b49f4eabec49c0a5146ef01017c2506a3c357180))
+* **lazycell:** Fix unsound aliasing in `LazyCell::fill` ([e789ac1a](https://github.com/indiv0/lazycell/commit/e789ac1a99010ad79c2d09c761fec6d67053647d), closes [#98](https://github.com/indiv0/lazycell/issues/98))
+
+#### Features
+
+* Implement serde support ([e728a0b6](https://github.com/indiv0/lazycell/commit/e728a0b680e607b793a81b5af7bf7f1d2c0eb5e5))
+
+#### Documentation
+
+* fix typo ([5f5ba9d5](https://github.com/indiv0/lazycell/commit/5f5ba9d5ac3364f8376c0c872c2e5094974385ba))
+
+
+
+<a name="v1.2.1"></a>
+## v1.2.1 (2018-12-03)
+
+
+#### Features
+
+* Implement Clone for LazyCell and AtomicLazyCell ([30fe4a8f](https://github.com/indiv0/lazycell/commit/30fe4a8f568059b3c78ed149a810962a676cb2b2))
+
+
+
+<a name="v1.2.0"></a>
+## v1.2.0 (2018-09-19)
+
+
+#### Features
+
+* add `LazyCell::replace` for infallible access ([a63ffb90](https://github.com/indiv0/lazycell/commit/a63ffb9040a5e0683a9bbf9d3d5ef589f2ca8b7c))
+
+
+
+<a name="v1.1.0"></a>
+## v1.1.0 (2018-09-10)
+
+
+#### Documentation
+
+* add note regarding LazyCell::borrow_mut ([9d634d1f](https://github.com/indiv0/lazycell/commit/9d634d1fd9a21b7aa075d407bedf9fe77ba8b79f))
+* describe mutability more consistently ([b8078029](https://github.com/indiv0/lazycell/commit/b80780294611e92efddcdd33a701b3049ab5c5eb), closes [#78](https://github.com/indiv0/lazycell/issues/78))
+
+#### Improvements
+
+* add NONE constant for an empty AtomicLazyCell ([31aff0da](https://github.com/indiv0/lazycell/commit/31aff0dacf824841c5f38ef4acf0aa71ec4c36eb), closes [#87](https://github.com/indiv0/lazycell/issues/87))
+* add `LazyCell::borrow_mut_with` and `LazyCell::try_borrow_mut_with` ([fdc6d268](https://github.com/indiv0/lazycell/commit/fdc6d268f0e9a6668768302f45fe2bb4aa9a7c34), closes [#79](https://github.com/indiv0/lazycell/issues/79), [#80](https://github.com/indiv0/lazycell/issues/80))
+
+
+
+<a name="v1.0.0"></a>
+## v1.0.0 (2018-06-06)
+
+
+#### Features
+
+* Add #![no_std] ([e59f6b55](https://github.com/indiv0/lazycell/commit/e59f6b5531e310d3df26b0eb40b1431937f38096))
+
+
+
+<a name="0.6.0"></a>
+## 0.6.0 (2017-11-25)
+
+
+#### Bug Fixes
+
+* fix soundness hole in borrow_with ([d1f46bef](https://github.com/indiv0/lazycell/commit/d1f46bef9d1397570aa9c3e87e18e0d16e6d1585))
+
+#### Features
+
+* add Default derives ([71bc5088](https://github.com/indiv0/lazycell/commit/71bc50880cd8e20002038197c9b890f5b76ad096))
+* add LazyCell::try_borrow_with ([bffa4028](https://github.com/indiv0/lazycell/commit/bffa402896670b5c78a9ec050d82a58ee98de6fb))
+* add LazyCell::borrow_mut method ([fd419dea](https://github.com/indiv0/lazycell/commit/fd419dea965ff1ad3853f26f37e8d107c6ca096c))
+
+#### Breaking Changes
+
+* add `T: Send` for `AtomicLazyCell` `Sync` impl ([668bb2fa](https://github.com/indiv0/lazycell/commit/668bb2fa974fd6707c4c7edad292c76a9017d74d), closes [#67](https://github.com/indiv0/lazycell/issues/67))
+
+#### Improvements
+
+* add `T: Send` for `AtomicLazyCell` `Sync` impl ([668bb2fa](https://github.com/indiv0/lazycell/commit/668bb2fa974fd6707c4c7edad292c76a9017d74d), closes [#67](https://github.com/indiv0/lazycell/issues/67))
+
+
+
+<a name="v0.5.1"></a>
+## v0.5.1 (2017-03-24)
+
+
+#### Documentation
+
+* fix missing backticks ([44bafaaf](https://github.com/indiv0/lazycell/commit/44bafaaf93a91641261f58ee38adadcd4af6458e))
+
+#### Improvements
+
+* derive `Debug` impls ([9da0a5a2](https://github.com/indiv0/lazycell/commit/9da0a5a2ffac1fef03ef02851c2c89d26d67d225))
+
+#### Features
+
+* Add get method for Copy types ([dc8f8209](https://github.com/indiv0/lazycell/commit/dc8f8209888b6eba6d18717eba6a22614629b997))
+
+
+
+<a name="v0.5.0"></a>
+## v0.5.0 (2016-12-08)
+
+
+#### Features
+
+* add borrow_with to LazyCell ([a15efa35](https://github.com/indiv0/lazycell/commit/a15efa359ea5a31a66ba57fc5b25f90c87b4b0dd))
+
+
+
+<a name="v0.4.0"></a>
+## (2016-08-17)
+
+
+#### Breaking Changes
+
+* **LazyCell:** return Err(value) on full cell ([68f3415d](https://github.com/indiv0/lazycell/commit/68f3415dd5d6a66ba047a133b7028ebe4f1c5070), breaks [#](https://github.com/indiv0/lazycell/issues/))
+
+#### Improvements
+
+* **LazyCell:** return Err(value) on full cell ([68f3415d](https://github.com/indiv0/lazycell/commit/68f3415dd5d6a66ba047a133b7028ebe4f1c5070), breaks [#](https://github.com/indiv0/lazycell/issues/))
+
+
+
+<a name="v0.3.0"></a>
+## (2016-08-16)
+
+
+#### Features
+
+* add AtomicLazyCell which is thread-safe ([85afbd36](https://github.com/indiv0/lazycell/commit/85afbd36d8a148e14cc53654b39ddb523980124d))
+
+#### Improvements
+
+* Use UnsafeCell instead of RefCell ([3347a8e9](https://github.com/indiv0/lazycell/commit/3347a8e97d2215a47e25c1e2fc953e8052ad8eb6))
+
+
+
+<a name="v0.2.1"></a>
+## (2016-04-18)
+
+
+#### Documentation
+
+* put types in between backticks ([607cf939](https://github.com/indiv0/lazycell/commit/607cf939b05e35001ba3070ec7a0b17b064e7be1))
+
+
+
+<a name="v0.2.0"></a>
+## v0.2.0 (2016-03-28)
+
+
+#### Features
+
+* **lazycell:**
+ * add tests for `LazyCell` struct ([38f1313d](https://github.com/indiv0/lazycell/commit/38f1313d98542ca8c98b424edfa9ba9c3975f99e), closes [#30](https://github.com/indiv0/lazycell/issues/30))
+ * remove unnecessary `Default` impl ([68c16d2d](https://github.com/indiv0/lazycell/commit/68c16d2df4e9d13d5298162c06edf918246fd758))
+
+#### Documentation
+
+* **CHANGELOG:** removed unnecessary sections ([1cc0555d](https://github.com/indiv0/lazycell/commit/1cc0555d875898a01b0832ff967aed6b40e720eb))
+* **README:** add link to documentation ([c8dc33f0](https://github.com/indiv0/lazycell/commit/c8dc33f01f2c0dc187f59ee53a2b73081053012b), closes [#13](https://github.com/indiv0/lazycell/issues/13))
+
+
+
+<a name="v0.1.0"></a>
+## v0.1.0 (2016-03-16)
+
+
+#### Features
+
+* **lib.rs:** implement Default trait for LazyCell ([150a6304](https://github.com/indiv0/LazyCell/commit/150a6304a230ee1de8424e49c447ec1b2d6578ce))
+
+
+
+<a name="v0.0.1"></a>
+## v0.0.1 (2016-03-16)
+
+
+#### Bug Fixes
+
+* **Cargo.toml:** loosen restrictions on Clippy version ([84dd8f96](https://github.com/indiv0/LazyCell/commit/84dd8f960000294f9dad47d776a41b98ed812981))
+
+#### Features
+
+* add initial implementation ([4b39764a](https://github.com/indiv0/LazyCell/commit/4b39764a575bcb701dbd8047b966f72720fd18a4))
+* add initial commit ([a80407a9](https://github.com/indiv0/LazyCell/commit/a80407a907ef7c9401f120104663172f6965521a))
+
+
+
diff --git a/vendor/lazycell/Cargo.toml b/vendor/lazycell/Cargo.toml
new file mode 100644
index 000000000..fce4dd511
--- /dev/null
+++ b/vendor/lazycell/Cargo.toml
@@ -0,0 +1,34 @@
+# 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 believe there's an error in this file please file an
+# issue against the rust-lang/cargo repository. If you're
+# editing this file be aware that the upstream Cargo.toml
+# will likely look very different (and much more reasonable)
+
+[package]
+name = "lazycell"
+version = "1.3.0"
+authors = ["Alex Crichton <alex@alexcrichton.com>", "Nikita Pekin <contact@nikitapek.in>"]
+include = ["CHANGELOG.md", "Cargo.toml", "LICENSE-MIT", "LICENSE-APACHE", "README.md", "src/**/*.rs"]
+description = "A library providing a lazily filled Cell struct"
+documentation = "http://indiv0.github.io/lazycell/lazycell/"
+readme = "README.md"
+keywords = ["lazycell", "lazy", "cell", "library"]
+license = "MIT/Apache-2.0"
+repository = "https://github.com/indiv0/lazycell"
+[dependencies.clippy]
+version = "0.0"
+optional = true
+
+[dependencies.serde]
+version = "^1"
+optional = true
+
+[features]
+nightly = []
+nightly-testing = ["clippy", "nightly"]
diff --git a/vendor/crossbeam-queue/LICENSE-APACHE b/vendor/lazycell/LICENSE-APACHE
index 16fe87b06..16fe87b06 100644
--- a/vendor/crossbeam-queue/LICENSE-APACHE
+++ b/vendor/lazycell/LICENSE-APACHE
diff --git a/vendor/crossbeam-queue/LICENSE-MIT b/vendor/lazycell/LICENSE-MIT
index 068d491fd..b4cbb4b7e 100644
--- a/vendor/crossbeam-queue/LICENSE-MIT
+++ b/vendor/lazycell/LICENSE-MIT
@@ -1,6 +1,5 @@
-The MIT License (MIT)
-
-Copyright (c) 2019 The Crossbeam Project Developers
+Original work Copyright (c) 2014 The Rust Project Developers
+Modified work Copyright (c) 2016-2018 Nikita Pekin and lazycell contributors
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
diff --git a/vendor/lazycell/README.md b/vendor/lazycell/README.md
new file mode 100644
index 000000000..555fe397d
--- /dev/null
+++ b/vendor/lazycell/README.md
@@ -0,0 +1,73 @@
+# lazycell
+
+<table>
+ <tr>
+ <td><strong>Linux</strong></td>
+ <td><a href="https://travis-ci.org/indiv0/lazycell" title="Travis Build Status"><img src="https://travis-ci.org/indiv0/lazycell.svg?branch=master" alt="travis-badge"></img></a></td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <a href="https://crates.io/crates/lazycell" title="Crates.io downloads"><img src="https://img.shields.io/crates/d/lazycell.svg" alt="cargo-downloads-badge"></img></a>
+ <a href="https://indiv0.github.io/lazycell/lazycell" title="API Docs"><img src="https://img.shields.io/badge/API-docs-blue.svg" alt="api-docs-badge"></img></a>
+ <a href="https://crates.io/crates/lazycell" title="Crates.io"><img src="https://img.shields.io/crates/v/lazycell.svg" alt="crates-io"></img></a>
+ <a href="#license" title="License: MIT/Apache-2.0"><img src="https://img.shields.io/crates/l/lazycell.svg" alt="license-badge"></img></a>
+ <a href="https://coveralls.io/github/indiv0/lazycell?branch=master" title="Coverage Status"><img src="https://coveralls.io/repos/github/indiv0/lazycell/badge.svg?branch=master" alt="coveralls-badge"></img></a>
+ </td>
+ </tr>
+</table>
+
+Rust library providing a lazily filled Cell.
+
+# Table of Contents
+
+* [Usage](#usage)
+* [Contributing](#contributing)
+* [Credits](#credits)
+* [License](#license)
+
+## Usage
+
+Add the following to your `Cargo.toml`:
+
+```toml
+[dependencies]
+lazycell = "1.3"
+```
+
+And in your `lib.rs` or `main.rs`:
+
+```rust
+extern crate lazycell;
+```
+
+See the [API docs][api-docs] for information on using the crate in your library.
+
+## Contributing
+
+Contributions are always welcome!
+If you have an idea for something to add (code, documentation, tests, examples,
+etc.) feel free to give it a shot.
+
+Please read [CONTRIBUTING.md][contributing] before you start contributing.
+
+## Credits
+
+The LazyCell library is based originally on work by The Rust Project Developers
+for the project [crates.io][crates-io-repo].
+
+The list of contributors to this project can be found at
+[CONTRIBUTORS.md][contributors].
+
+## License
+
+LazyCell is distributed under the terms of both the MIT license and the Apache
+License (Version 2.0).
+
+See [LICENSE-APACHE][license-apache], and [LICENSE-MIT][license-mit] for details.
+
+[api-docs]: https://indiv0.github.io/lazycell/lazycell
+[contributing]: https://github.com/indiv0/lazycell/blob/master/CONTRIBUTING.md "Contribution Guide"
+[contributors]: https://github.com/indiv0/lazycell/blob/master/CONTRIBUTORS.md "List of Contributors"
+[crates-io-repo]: https://github.com/rust-lang/crates.io "rust-lang/crates.io: Source code for crates.io"
+[license-apache]: https://github.com/indiv0/lazycell/blob/master/LICENSE-APACHE "Apache-2.0 License"
+[license-mit]: https://github.com/indiv0/lazycell/blob/master/LICENSE-MIT "MIT License"
diff --git a/vendor/lazycell/src/lib.rs b/vendor/lazycell/src/lib.rs
new file mode 100644
index 000000000..53bee073b
--- /dev/null
+++ b/vendor/lazycell/src/lib.rs
@@ -0,0 +1,680 @@
+// Original work Copyright (c) 2014 The Rust Project Developers
+// Modified work Copyright (c) 2016-2020 Nikita Pekin and the lazycell contributors
+// See the README.md file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+#![cfg_attr(not(test), no_std)]
+
+#![deny(missing_docs)]
+#![cfg_attr(feature = "nightly", feature(plugin))]
+#![cfg_attr(feature = "clippy", plugin(clippy))]
+
+//! This crate provides a `LazyCell` struct which acts as a lazily filled
+//! `Cell`.
+//!
+//! With a `RefCell`, the inner contents cannot be borrowed for the lifetime of
+//! the entire object, but only of the borrows returned. A `LazyCell` is a
+//! variation on `RefCell` which allows borrows to be tied to the lifetime of
+//! the outer object.
+//!
+//! # Example
+//!
+//! The following example shows a quick example of the basic functionality of
+//! `LazyCell`.
+//!
+//! ```
+//! use lazycell::LazyCell;
+//!
+//! let lazycell = LazyCell::new();
+//!
+//! assert_eq!(lazycell.borrow(), None);
+//! assert!(!lazycell.filled());
+//! lazycell.fill(1).ok();
+//! assert!(lazycell.filled());
+//! assert_eq!(lazycell.borrow(), Some(&1));
+//! assert_eq!(lazycell.into_inner(), Some(1));
+//! ```
+//!
+//! `AtomicLazyCell` is a variant that uses an atomic variable to manage
+//! coordination in a thread-safe fashion. The limitation of an `AtomicLazyCell`
+//! is that after it is initialized, it can't be modified.
+
+
+#[cfg(not(test))]
+#[macro_use]
+extern crate core as std;
+#[cfg(feature = "serde")]
+extern crate serde;
+
+#[cfg(feature = "serde")]
+mod serde_impl;
+
+use std::cell::UnsafeCell;
+use std::mem;
+use std::sync::atomic::{AtomicUsize, Ordering};
+
+/// A lazily filled `Cell`, with mutable contents.
+///
+/// A `LazyCell` is completely frozen once filled, **unless** you have `&mut`
+/// access to it, in which case `LazyCell::borrow_mut` may be used to mutate the
+/// contents.
+#[derive(Debug)]
+pub struct LazyCell<T> {
+ inner: UnsafeCell<Option<T>>,
+}
+
+impl<T> LazyCell<T> {
+ /// Creates a new, empty, `LazyCell`.
+ pub fn new() -> LazyCell<T> {
+ LazyCell { inner: UnsafeCell::new(None) }
+ }
+
+ /// Put a value into this cell.
+ ///
+ /// This function will return `Err(value)` if the cell is already full.
+ pub fn fill(&self, value: T) -> Result<(), T> {
+ let slot = unsafe { &*self.inner.get() };
+ if slot.is_some() {
+ return Err(value);
+ }
+ let slot = unsafe { &mut *self.inner.get() };
+ *slot = Some(value);
+
+ Ok(())
+ }
+
+ /// Put a value into this cell.
+ ///
+ /// Note that this function is infallible but requires `&mut self`. By
+ /// requiring `&mut self` we're guaranteed that no active borrows to this
+ /// cell can exist so we can always fill in the value. This may not always
+ /// be usable, however, as `&mut self` may not be possible to borrow.
+ ///
+ /// # Return value
+ ///
+ /// This function returns the previous value, if any.
+ pub fn replace(&mut self, value: T) -> Option<T> {
+ mem::replace(unsafe { &mut *self.inner.get() }, Some(value))
+ }
+
+ /// Test whether this cell has been previously filled.
+ pub fn filled(&self) -> bool {
+ self.borrow().is_some()
+ }
+
+ /// Borrows the contents of this lazy cell for the duration of the cell
+ /// itself.
+ ///
+ /// This function will return `Some` if the cell has been previously
+ /// initialized, and `None` if it has not yet been initialized.
+ pub fn borrow(&self) -> Option<&T> {
+ unsafe { &*self.inner.get() }.as_ref()
+ }
+
+ /// Borrows the contents of this lazy cell mutably for the duration of the cell
+ /// itself.
+ ///
+ /// This function will return `Some` if the cell has been previously
+ /// initialized, and `None` if it has not yet been initialized.
+ pub fn borrow_mut(&mut self) -> Option<&mut T> {
+ unsafe { &mut *self.inner.get() }.as_mut()
+ }
+
+ /// Borrows the contents of this lazy cell for the duration of the cell
+ /// itself.
+ ///
+ /// If the cell has not yet been filled, the cell is first filled using the
+ /// function provided.
+ ///
+ /// # Panics
+ ///
+ /// Panics if the cell becomes filled as a side effect of `f`.
+ pub fn borrow_with<F: FnOnce() -> T>(&self, f: F) -> &T {
+ if let Some(value) = self.borrow() {
+ return value;
+ }
+ let value = f();
+ if self.fill(value).is_err() {
+ panic!("borrow_with: cell was filled by closure")
+ }
+ self.borrow().unwrap()
+ }
+
+ /// Borrows the contents of this `LazyCell` mutably for the duration of the
+ /// cell itself.
+ ///
+ /// If the cell has not yet been filled, the cell is first filled using the
+ /// function provided.
+ ///
+ /// # Panics
+ ///
+ /// Panics if the cell becomes filled as a side effect of `f`.
+ pub fn borrow_mut_with<F: FnOnce() -> T>(&mut self, f: F) -> &mut T {
+ if !self.filled() {
+ let value = f();
+ if self.fill(value).is_err() {
+ panic!("borrow_mut_with: cell was filled by closure")
+ }
+ }
+
+ self.borrow_mut().unwrap()
+ }
+
+ /// Same as `borrow_with`, but allows the initializing function to fail.
+ ///
+ /// # Panics
+ ///
+ /// Panics if the cell becomes filled as a side effect of `f`.
+ pub fn try_borrow_with<E, F>(&self, f: F) -> Result<&T, E>
+ where F: FnOnce() -> Result<T, E>
+ {
+ if let Some(value) = self.borrow() {
+ return Ok(value);
+ }
+ let value = f()?;
+ if self.fill(value).is_err() {
+ panic!("try_borrow_with: cell was filled by closure")
+ }
+ Ok(self.borrow().unwrap())
+ }
+
+ /// Same as `borrow_mut_with`, but allows the initializing function to fail.
+ ///
+ /// # Panics
+ ///
+ /// Panics if the cell becomes filled as a side effect of `f`.
+ pub fn try_borrow_mut_with<E, F>(&mut self, f: F) -> Result<&mut T, E>
+ where F: FnOnce() -> Result<T, E>
+ {
+ if self.filled() {
+ return Ok(self.borrow_mut().unwrap());
+ }
+ let value = f()?;
+ if self.fill(value).is_err() {
+ panic!("try_borrow_mut_with: cell was filled by closure")
+ }
+ Ok(self.borrow_mut().unwrap())
+ }
+
+ /// Consumes this `LazyCell`, returning the underlying value.
+ pub fn into_inner(self) -> Option<T> {
+ // Rust 1.25 changed UnsafeCell::into_inner() from unsafe to safe
+ // function. This unsafe can be removed when supporting Rust older than
+ // 1.25 is not needed.
+ #[allow(unused_unsafe)]
+ unsafe { self.inner.into_inner() }
+ }
+}
+
+impl<T: Copy> LazyCell<T> {
+ /// Returns a copy of the contents of the lazy cell.
+ ///
+ /// This function will return `Some` if the cell has been previously initialized,
+ /// and `None` if it has not yet been initialized.
+ pub fn get(&self) -> Option<T> {
+ unsafe { *self.inner.get() }
+ }
+}
+
+impl<T> Default for LazyCell<T> {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl <T: Clone> Clone for LazyCell<T> {
+ /// Create a clone of this `LazyCell`
+ ///
+ /// If self has not been initialized, returns an uninitialized `LazyCell`
+ /// otherwise returns a `LazyCell` already initialized with a clone of the
+ /// contents of self.
+ fn clone(&self) -> LazyCell<T> {
+ LazyCell { inner: UnsafeCell::new(self.borrow().map(Clone::clone) ) }
+ }
+}
+
+// Tracks the AtomicLazyCell inner state
+const NONE: usize = 0;
+const LOCK: usize = 1;
+const SOME: usize = 2;
+
+/// A lazily filled and thread-safe `Cell`, with frozen contents.
+#[derive(Debug)]
+pub struct AtomicLazyCell<T> {
+ inner: UnsafeCell<Option<T>>,
+ state: AtomicUsize,
+}
+
+impl<T> AtomicLazyCell<T> {
+ /// An empty `AtomicLazyCell`.
+ pub const NONE: Self = Self {
+ inner: UnsafeCell::new(None),
+ state: AtomicUsize::new(NONE),
+ };
+
+ /// Creates a new, empty, `AtomicLazyCell`.
+ pub fn new() -> AtomicLazyCell<T> {
+ Self::NONE
+ }
+
+ /// Put a value into this cell.
+ ///
+ /// This function will return `Err(value)` if the cell is already full.
+ pub fn fill(&self, t: T) -> Result<(), T> {
+ if NONE != self.state.compare_and_swap(NONE, LOCK, Ordering::Acquire) {
+ return Err(t);
+ }
+
+ unsafe { *self.inner.get() = Some(t) };
+
+ if LOCK != self.state.compare_and_swap(LOCK, SOME, Ordering::Release) {
+ panic!("unable to release lock");
+ }
+
+ Ok(())
+ }
+
+ /// Put a value into this cell.
+ ///
+ /// Note that this function is infallible but requires `&mut self`. By
+ /// requiring `&mut self` we're guaranteed that no active borrows to this
+ /// cell can exist so we can always fill in the value. This may not always
+ /// be usable, however, as `&mut self` may not be possible to borrow.
+ ///
+ /// # Return value
+ ///
+ /// This function returns the previous value, if any.
+ pub fn replace(&mut self, value: T) -> Option<T> {
+ match mem::replace(self.state.get_mut(), SOME) {
+ NONE | SOME => {}
+ _ => panic!("cell in inconsistent state"),
+ }
+ mem::replace(unsafe { &mut *self.inner.get() }, Some(value))
+ }
+
+ /// Test whether this cell has been previously filled.
+ pub fn filled(&self) -> bool {
+ self.state.load(Ordering::Acquire) == SOME
+ }
+
+ /// Borrows the contents of this lazy cell for the duration of the cell
+ /// itself.
+ ///
+ /// This function will return `Some` if the cell has been previously
+ /// initialized, and `None` if it has not yet been initialized.
+ pub fn borrow(&self) -> Option<&T> {
+ match self.state.load(Ordering::Acquire) {
+ SOME => unsafe { &*self.inner.get() }.as_ref(),
+ _ => None,
+ }
+ }
+
+ /// Consumes this `LazyCell`, returning the underlying value.
+ pub fn into_inner(self) -> Option<T> {
+ // Rust 1.25 changed UnsafeCell::into_inner() from unsafe to safe
+ // function. This unsafe can be removed when supporting Rust older than
+ // 1.25 is not needed.
+ #[allow(unused_unsafe)]
+ unsafe { self.inner.into_inner() }
+ }
+}
+
+impl<T: Copy> AtomicLazyCell<T> {
+ /// Returns a copy of the contents of the lazy cell.
+ ///
+ /// This function will return `Some` if the cell has been previously initialized,
+ /// and `None` if it has not yet been initialized.
+ pub fn get(&self) -> Option<T> {
+ match self.state.load(Ordering::Acquire) {
+ SOME => unsafe { *self.inner.get() },
+ _ => None,
+ }
+ }
+}
+
+impl<T> Default for AtomicLazyCell<T> {
+ fn default() -> Self {
+ Self::new()
+ }
+}
+
+impl<T: Clone> Clone for AtomicLazyCell<T> {
+ /// Create a clone of this `AtomicLazyCell`
+ ///
+ /// If self has not been initialized, returns an uninitialized `AtomicLazyCell`
+ /// otherwise returns an `AtomicLazyCell` already initialized with a clone of the
+ /// contents of self.
+ fn clone(&self) -> AtomicLazyCell<T> {
+ self.borrow().map_or(
+ Self::NONE,
+ |v| AtomicLazyCell {
+ inner: UnsafeCell::new(Some(v.clone())),
+ state: AtomicUsize::new(SOME),
+ }
+ )
+ }
+}
+
+unsafe impl<T: Sync + Send> Sync for AtomicLazyCell<T> {}
+
+unsafe impl<T: Send> Send for AtomicLazyCell<T> {}
+
+#[cfg(test)]
+mod tests {
+ use super::{AtomicLazyCell, LazyCell};
+
+ #[test]
+ fn test_borrow_from_empty() {
+ let lazycell: LazyCell<usize> = LazyCell::new();
+
+ let value = lazycell.borrow();
+ assert_eq!(value, None);
+
+ let value = lazycell.get();
+ assert_eq!(value, None);
+ }
+
+ #[test]
+ fn test_fill_and_borrow() {
+ let lazycell = LazyCell::new();
+
+ assert!(!lazycell.filled());
+ lazycell.fill(1).unwrap();
+ assert!(lazycell.filled());
+
+ let value = lazycell.borrow();
+ assert_eq!(value, Some(&1));
+
+ let value = lazycell.get();
+ assert_eq!(value, Some(1));
+ }
+
+ #[test]
+ fn test_borrow_mut() {
+ let mut lazycell = LazyCell::new();
+ assert!(lazycell.borrow_mut().is_none());
+
+ lazycell.fill(1).unwrap();
+ assert_eq!(lazycell.borrow_mut(), Some(&mut 1));
+
+ *lazycell.borrow_mut().unwrap() = 2;
+ assert_eq!(lazycell.borrow_mut(), Some(&mut 2));
+
+ // official way to reset the cell
+ lazycell = LazyCell::new();
+ assert!(lazycell.borrow_mut().is_none());
+ }
+
+ #[test]
+ fn test_already_filled_error() {
+ let lazycell = LazyCell::new();
+
+ lazycell.fill(1).unwrap();
+ assert_eq!(lazycell.fill(1), Err(1));
+ }
+
+ #[test]
+ fn test_borrow_with() {
+ let lazycell = LazyCell::new();
+
+ let value = lazycell.borrow_with(|| 1);
+ assert_eq!(&1, value);
+ }
+
+ #[test]
+ fn test_borrow_with_already_filled() {
+ let lazycell = LazyCell::new();
+ lazycell.fill(1).unwrap();
+
+ let value = lazycell.borrow_with(|| 1);
+ assert_eq!(&1, value);
+ }
+
+ #[test]
+ fn test_borrow_with_not_called_when_filled() {
+ let lazycell = LazyCell::new();
+
+ lazycell.fill(1).unwrap();
+
+ let value = lazycell.borrow_with(|| 2);
+ assert_eq!(&1, value);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_borrow_with_sound_with_reentrancy() {
+ // Kudos to dbaupp for discovering this issue
+ // https://www.reddit.com/r/rust/comments/5vs9rt/lazycell_a_rust_library_providing_a_lazilyfilled/de527xm/
+ let lazycell: LazyCell<Box<i32>> = LazyCell::new();
+
+ let mut reference: Option<&i32> = None;
+
+ lazycell.borrow_with(|| {
+ let _ = lazycell.fill(Box::new(1));
+ reference = lazycell.borrow().map(|r| &**r);
+ Box::new(2)
+ });
+ }
+
+ #[test]
+ fn test_borrow_mut_with() {
+ let mut lazycell = LazyCell::new();
+
+ {
+ let value = lazycell.borrow_mut_with(|| 1);
+ assert_eq!(&mut 1, value);
+ *value = 2;
+ }
+ assert_eq!(&2, lazycell.borrow().unwrap());
+ }
+
+ #[test]
+ fn test_borrow_mut_with_already_filled() {
+ let mut lazycell = LazyCell::new();
+ lazycell.fill(1).unwrap();
+
+ let value = lazycell.borrow_mut_with(|| 1);
+ assert_eq!(&1, value);
+ }
+
+ #[test]
+ fn test_borrow_mut_with_not_called_when_filled() {
+ let mut lazycell = LazyCell::new();
+
+ lazycell.fill(1).unwrap();
+
+ let value = lazycell.borrow_mut_with(|| 2);
+ assert_eq!(&1, value);
+ }
+
+ #[test]
+ fn test_try_borrow_with_ok() {
+ let lazycell = LazyCell::new();
+ let result = lazycell.try_borrow_with::<(), _>(|| Ok(1));
+ assert_eq!(result, Ok(&1));
+ }
+
+ #[test]
+ fn test_try_borrow_with_err() {
+ let lazycell = LazyCell::<()>::new();
+ let result = lazycell.try_borrow_with(|| Err(1));
+ assert_eq!(result, Err(1));
+ }
+
+ #[test]
+ fn test_try_borrow_with_already_filled() {
+ let lazycell = LazyCell::new();
+ lazycell.fill(1).unwrap();
+ let result = lazycell.try_borrow_with::<(), _>(|| unreachable!());
+ assert_eq!(result, Ok(&1));
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_try_borrow_with_sound_with_reentrancy() {
+ let lazycell: LazyCell<Box<i32>> = LazyCell::new();
+
+ let mut reference: Option<&i32> = None;
+
+ let _ = lazycell.try_borrow_with::<(), _>(|| {
+ let _ = lazycell.fill(Box::new(1));
+ reference = lazycell.borrow().map(|r| &**r);
+ Ok(Box::new(2))
+ });
+ }
+
+ #[test]
+ fn test_try_borrow_mut_with_ok() {
+ let mut lazycell = LazyCell::new();
+ {
+ let result = lazycell.try_borrow_mut_with::<(), _>(|| Ok(1));
+ assert_eq!(result, Ok(&mut 1));
+ *result.unwrap() = 2;
+ }
+ assert_eq!(&mut 2, lazycell.borrow().unwrap());
+ }
+
+ #[test]
+ fn test_try_borrow_mut_with_err() {
+ let mut lazycell = LazyCell::<()>::new();
+ let result = lazycell.try_borrow_mut_with(|| Err(1));
+ assert_eq!(result, Err(1));
+ }
+
+ #[test]
+ fn test_try_borrow_mut_with_already_filled() {
+ let mut lazycell = LazyCell::new();
+ lazycell.fill(1).unwrap();
+ let result = lazycell.try_borrow_mut_with::<(), _>(|| unreachable!());
+ assert_eq!(result, Ok(&mut 1));
+ }
+
+ #[test]
+ fn test_into_inner() {
+ let lazycell = LazyCell::new();
+
+ lazycell.fill(1).unwrap();
+ let value = lazycell.into_inner();
+ assert_eq!(value, Some(1));
+ }
+
+ #[test]
+ fn test_atomic_borrow_from_empty() {
+ let lazycell: AtomicLazyCell<usize> = AtomicLazyCell::new();
+
+ let value = lazycell.borrow();
+ assert_eq!(value, None);
+
+ let value = lazycell.get();
+ assert_eq!(value, None);
+ }
+
+ #[test]
+ fn test_atomic_fill_and_borrow() {
+ let lazycell = AtomicLazyCell::new();
+
+ assert!(!lazycell.filled());
+ lazycell.fill(1).unwrap();
+ assert!(lazycell.filled());
+
+ let value = lazycell.borrow();
+ assert_eq!(value, Some(&1));
+
+ let value = lazycell.get();
+ assert_eq!(value, Some(1));
+ }
+
+ #[test]
+ fn test_atomic_already_filled_panic() {
+ let lazycell = AtomicLazyCell::new();
+
+ lazycell.fill(1).unwrap();
+ assert_eq!(1, lazycell.fill(1).unwrap_err());
+ }
+
+ #[test]
+ fn test_atomic_into_inner() {
+ let lazycell = AtomicLazyCell::new();
+
+ lazycell.fill(1).unwrap();
+ let value = lazycell.into_inner();
+ assert_eq!(value, Some(1));
+ }
+
+ #[test]
+ fn normal_replace() {
+ let mut cell = LazyCell::new();
+ assert_eq!(cell.fill(1), Ok(()));
+ assert_eq!(cell.replace(2), Some(1));
+ assert_eq!(cell.replace(3), Some(2));
+ assert_eq!(cell.borrow(), Some(&3));
+
+ let mut cell = LazyCell::new();
+ assert_eq!(cell.replace(2), None);
+ }
+
+ #[test]
+ fn atomic_replace() {
+ let mut cell = AtomicLazyCell::new();
+ assert_eq!(cell.fill(1), Ok(()));
+ assert_eq!(cell.replace(2), Some(1));
+ assert_eq!(cell.replace(3), Some(2));
+ assert_eq!(cell.borrow(), Some(&3));
+ }
+
+ #[test]
+ fn clone() {
+ let mut cell = LazyCell::new();
+ let clone1 = cell.clone();
+ assert_eq!(clone1.borrow(), None);
+ assert_eq!(cell.fill(1), Ok(()));
+ let mut clone2 = cell.clone();
+ assert_eq!(clone1.borrow(), None);
+ assert_eq!(clone2.borrow(), Some(&1));
+ assert_eq!(cell.replace(2), Some(1));
+ assert_eq!(clone1.borrow(), None);
+ assert_eq!(clone2.borrow(), Some(&1));
+ assert_eq!(clone1.fill(3), Ok(()));
+ assert_eq!(clone2.replace(4), Some(1));
+ assert_eq!(clone1.borrow(), Some(&3));
+ assert_eq!(clone2.borrow(), Some(&4));
+ assert_eq!(cell.borrow(), Some(&2));
+ }
+
+ #[test]
+ fn clone_atomic() {
+ let mut cell = AtomicLazyCell::new();
+ let clone1 = cell.clone();
+ assert_eq!(clone1.borrow(), None);
+ assert_eq!(cell.fill(1), Ok(()));
+ let mut clone2 = cell.clone();
+ assert_eq!(clone1.borrow(), None);
+ assert_eq!(clone2.borrow(), Some(&1));
+ assert_eq!(cell.replace(2), Some(1));
+ assert_eq!(clone1.borrow(), None);
+ assert_eq!(clone2.borrow(), Some(&1));
+ assert_eq!(clone1.fill(3), Ok(()));
+ assert_eq!(clone2.replace(4), Some(1));
+ assert_eq!(clone1.borrow(), Some(&3));
+ assert_eq!(clone2.borrow(), Some(&4));
+ assert_eq!(cell.borrow(), Some(&2));
+ }
+
+ #[test]
+ fn default() {
+ #[derive(Default)]
+ struct Defaultable;
+ struct NonDefaultable;
+
+ let _: LazyCell<Defaultable> = LazyCell::default();
+ let _: LazyCell<NonDefaultable> = LazyCell::default();
+
+ let _: AtomicLazyCell<Defaultable> = AtomicLazyCell::default();
+ let _: AtomicLazyCell<NonDefaultable> = AtomicLazyCell::default();
+ }
+}
diff --git a/vendor/lazycell/src/serde_impl.rs b/vendor/lazycell/src/serde_impl.rs
new file mode 100644
index 000000000..8f08f7b03
--- /dev/null
+++ b/vendor/lazycell/src/serde_impl.rs
@@ -0,0 +1,86 @@
+// Copyright (c) 2020 Nikita Pekin and the lazycell contributors
+// See the README.md file at the top-level directory of this distribution.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.use serde::ser::{Serialize, Serializer};
+use serde::ser::{Serialize, Serializer};
+use serde::de::{self, Deserialize, Deserializer, Visitor};
+
+use std::fmt;
+use std::marker::PhantomData;
+
+use super::{LazyCell, AtomicLazyCell};
+
+impl<T: Serialize> Serialize for LazyCell<T> {
+ fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
+ match self.borrow() {
+ Some(val) => serializer.serialize_some(val),
+ None => serializer.serialize_none()
+ }
+ }
+}
+
+
+impl<T: Serialize> Serialize for AtomicLazyCell<T> {
+ fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
+ match self.borrow() {
+ Some(val) => serializer.serialize_some(val),
+ None => serializer.serialize_none()
+ }
+ }
+}
+
+struct LazyCellVisitor<T>(PhantomData<*const T>);
+impl<'de, T: Deserialize<'de>> Visitor<'de> for LazyCellVisitor<T> {
+ type Value = LazyCell<T>;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+ formatter.write_str("a LazyCell")
+ }
+
+ fn visit_some<D: Deserializer<'de>>(self, deserializer: D) -> Result<Self::Value, D::Error> {
+ let mut cell = LazyCell::new();
+ cell.replace(T::deserialize(deserializer)?);
+ Ok(cell)
+ }
+
+ fn visit_none<E: de::Error>(self) -> Result<Self::Value, E> {
+ Ok(LazyCell::new())
+ }
+}
+
+impl<'de, T: Deserialize<'de>> Deserialize<'de> for LazyCell<T> {
+ fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
+ deserializer.deserialize_option(LazyCellVisitor(PhantomData))
+ }
+}
+
+
+struct AtomicLazyCellVisitor<T>(PhantomData<*const T>);
+impl<'de, T: Deserialize<'de>> Visitor<'de> for AtomicLazyCellVisitor<T> {
+ type Value = AtomicLazyCell<T>;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+ formatter.write_str("an AtomicLazyCell")
+ }
+
+ fn visit_some<D: Deserializer<'de>>(self, deserializer: D) -> Result<Self::Value, D::Error> {
+ let mut cell = AtomicLazyCell::new();
+ cell.replace(T::deserialize(deserializer)?);
+ Ok(cell)
+ }
+
+ fn visit_none<E: de::Error>(self) -> Result<Self::Value, E> {
+ Ok(AtomicLazyCell::new())
+ }
+}
+
+
+impl<'de, T: Deserialize<'de>> Deserialize<'de> for AtomicLazyCell<T> {
+ fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
+ deserializer.deserialize_option(AtomicLazyCellVisitor(PhantomData))
+ }
+}
diff --git a/vendor/libc/.cargo-checksum.json b/vendor/libc/.cargo-checksum.json
index 26956a434..631af7226 100644
--- a/vendor/libc/.cargo-checksum.json
+++ b/vendor/libc/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CONTRIBUTING.md":"752eea5a703d11b485c6b5f195f51bd2c79aa5159b619ce09555c779e1fb586b","Cargo.toml":"6a0abcfcbc1d9fb00a356343043a161f5b84b3f780cb0f02df4627d022b14b7f","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"8228847944f1332882fbb00275b6f30e4a8aad08a13569c25d52cac012cc2a47","build.rs":"41f9743021d9e5ed74ede55c94057cf6867a322a13b25a5d524b966656a08e38","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"7f986e5f5e68d25ef04d386fd2f640e8be8f15427a8d4a458ea01d26b8dca0ca","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"bc8c46531bd1a2429f36aaf2bc137b50e42505b798de83f34eecfa94ad89179b","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"3f13d5f9b29d8969dde507661f1637524e21fe3bd34957fc778868f2f3713c46","src/macros.rs":"d7437c2573c4915768ff96b34710a61ee9f63622b23526cddeaeaf6bfb4751a2","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/solid/aarch64.rs":"a726e47f324adf73a4a0b67a2c183408d0cad105ae66acf36db37a42ab7f8707","src/solid/arm.rs":"e39a4f74ebbef3b97b8c95758ad741123d84ed3eb48d9cf4f1f4872097fc27fe","src/solid/mod.rs":"5f4151dca5132e4b4e4c23ab9737e12856dddbdc0ca3f7dbc004328ef3c8acde","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"2546ad3eb6aecb95f916648bc63264117c92b4b4859532b34cb011e4c75a5a72","src/unix/bsd/apple/b64/aarch64/align.rs":"2eaf0f561a32bdcbf4e0477c8895d5e7bcb5cdebd5fef7b4df2ca8e38e144d94","src/unix/bsd/apple/b64/aarch64/mod.rs":"a3f0dfff62d0f7f4f1b5f9a4e2b662acf233a46badbc5419d3cc2d735629a710","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"8c87c5855038aae5d433c8f5eb3b29b0a175879a0245342b3bfd83bdf4cfd936","src/unix/bsd/apple/mod.rs":"d7155927fbd1af6dd984a4c6c1a735a5932af828c96818209487eb6ae72d7d7e","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"379302e12d30807a1f973c4e2dd2205179d95343ee6fae05f33c9ed45a342799","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"2a215bd6136b8617aacedf9be738ccee94da9d29b418e9a78101d6291c182352","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"a6eee615e6ca5a6e04b526bb6b22d13b9356e87e51825cda33476c37a46cb0ef","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"755dafaf3f0945e798c34ea94c48e8552804ce60e2a15a4f0649f9d1aceaf422","src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"cc65a73b0fa95a77044a4b3ee76d6eceb9773b55aea7d73bdf070e6f66e9ea38","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs":"0ed92eb93e78299cd7de0ae9daebb04a53b3c2d5e6a078e1fcd977f2a86bffc3","src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/mod.rs":"467b66843ab8c1a54b01ae9e90aaf0295b32f54decbdfb64caca84523b488925","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/riscv64.rs":"8f591bd273464d684c4f64365f8ed56a8138175daa70d96008541393057a0dae","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"51e4dd0c8ae247bb652feda5adad9333ea3bb30c750c3a3935e0b0e47d7803eb","src/unix/bsd/freebsdlike/mod.rs":"a7345cc3fb7372572efe06848feb2cc246dfc2c2a0cc9ccf434f4c55041a59fa","src/unix/bsd/mod.rs":"7720ec82c9334f988ec4b271784768a017c3dc2e6dfae4d02418eef753388aa7","src/unix/bsd/netbsdlike/mod.rs":"594a0f9e23c4d7702ba38afdba5a0e866be25d692ec0afd66e04d939aa6b3f04","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"cb1560bf8ffcc7b2726a27b433efac90e726292960626f3064bd2c6b7f861a55","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"dd91931d373b7ecaf6e2de25adadee10d16fa9b12c2cbacdff3eb291e1ba36af","src/unix/bsd/netbsdlike/openbsd/arm.rs":"01580d261bc6447bb327a0d982181b7bdabfa066cee65a30373d3ced729ad307","src/unix/bsd/netbsdlike/openbsd/mips64.rs":"8532a189ae10c7d668d9d4065da8b05d124e09bd39442c9f74a7f231c43eca48","src/unix/bsd/netbsdlike/openbsd/mod.rs":"816a8ef47df60a752a91967627eeccb9ca776dc718ecc53ae902d8edaee0bce9","src/unix/bsd/netbsdlike/openbsd/powerpc.rs":"01580d261bc6447bb327a0d982181b7bdabfa066cee65a30373d3ced729ad307","src/unix/bsd/netbsdlike/openbsd/powerpc64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/riscv64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"d31db31630289c85af3339dbe357998a21ca584cbae31607448fe2cf7675a4e1","src/unix/haiku/b32.rs":"a2efdbf7158a6da341e1db9176b0ab193ba88b449616239ed95dced11f54d87b","src/unix/haiku/b64.rs":"ff8115367d3d7d354f792d6176dfaaa26353f57056197b563bf4681f91ff7985","src/unix/haiku/mod.rs":"d5833ff9b94daa81d2470df544453212af17530d78c5a7fb912eac915d00f329","src/unix/haiku/native.rs":"dbfcbf4954a79d1df2ff58e0590bbcb8c57dfc7a32392aa73ee4726b66bd6cc8","src/unix/haiku/x86_64.rs":"3ec3aeeb7ed208b8916f3e32d42bfd085ff5e16936a1a35d9a52789f043b7237","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"433c1530f602cc5ed26610c58055dde0c4ceea5e00150063b24ddc60768332a4","src/unix/linux_like/android/b32/mod.rs":"7c173e0375119bf06a3081652faede95e5bcd6858e7576b7533d037978737c8f","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/android/b64/aarch64/mod.rs":"ef230d49fd0d182adf2dae6f8e10babf18d72259d65980bf1c4c2dc8a4f84501","src/unix/linux_like/android/b64/mod.rs":"d7bbbadafdb2cb2ff8e9cde3d89a03b9facaabb6b2d45705225d3ece1c5cce37","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"6454948ea98be86243229f99d67cdc7ca460e16b2a6445663ff4b5b6907c358d","src/unix/linux_like/android/mod.rs":"1247397a7e1b6269e0d2d6df88c6396bc18eb477e3ff293ff57d66a6b1380d94","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"b71d37106750f57bc2dae4e9bcb473ff098ef48235827e41a1687a39825f0aa4","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"d6c259942c8e843373accd180fc8f4f45f03544dfd21b93a8d02641ead3ef63e","src/unix/linux_like/linux/arch/generic/mod.rs":"e20013ed91edcfb7f84f3f9f5a9ef827fd5c406e24b65989d8438da332236ef6","src/unix/linux_like/linux/arch/mips/mod.rs":"2d166054a586bb4bf6e4a4ba35f7574907b217225eff8f1a43adc4277e142460","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"3f6da7b0fa7b394c7d4eea2bb3caa7a7729ab0d6c1491fef02206a912c41b815","src/unix/linux_like/linux/arch/sparc/mod.rs":"91593ec0440f1dd8f8e612028f432c44c14089286e2aca50e10511ab942db8c3","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"6ec0eb3ee93f7ae99fd714b4deabfb5e97fbcefd8c26f5a45fb8e7150899cdeb","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"92ea7edc0e24f79dfbf5e3efc2d7509bed230562036e6aa85ef4f2c8088ecc8f","src/unix/linux_like/linux/gnu/b32/m68k/align.rs":"8faa92f77a9232c035418d45331774e64a9a841d99c91791570a203bf2b45bcb","src/unix/linux_like/linux/gnu/b32/m68k/mod.rs":"a2a0a9400dae44086ebf579e0448e0676d4a3214d1ae7d13a024857251e23b6b","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"0d7849eb2435ec1f49b6774872a0518f0129c50f37c9d38b37b1535722777a22","src/unix/linux_like/linux/gnu/b32/mod.rs":"8da281da578cdee972e952b118b903b370320897a7e335342a15e1359864bef2","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"049d6211ba4a9304bd4497c160bc21ae847c24e0528dd9d76263f16192e6aff5","src/unix/linux_like/linux/gnu/b32/riscv32/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"a4256148cec0bb672c8dfa605866930d9761af9655721de72ae41eeeb8fdbf6d","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"525618615aa0cb80c6c90860bf579dfed8db307fffd56b97dc235fb945419434","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"78b4038852986436888c63be9258037cf642124daee9d5fa5cef2bf8e412bf54","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c4e20b1c63d7a03a6e22aef2046689ef95cc4651011ade7cb94176fcea1dc252","src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs":"387808d5398b24339e7e2bf7591150735011befc5b421fa713d7017c04a7b1da","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"17aad16329431d83e1909e3a08022f6e28f4bcba7dec4a967fe1a321a6a43b99","src/unix/linux_like/linux/gnu/b64/mod.rs":"3c6555f30a7a8852757b31a542ea73fb6a16a6e27e838397e819278ad56e57a4","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"97e0ecf11ecce793a13fec39654fb513c5479edf7faa7a276fa714b61993d0fc","src/unix/linux_like/linux/gnu/b64/riscv64/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"b3fe290afe63d2d6e315d0cf1f775464e9c1f2a1906d243c1af74a137a4031cb","src/unix/linux_like/linux/gnu/b64/s390x.rs":"254f00266ecf9644a4b469457cb37c4dd6c055820926c1de0fb9035b6048e75c","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"87dd7f3d5bf3c09f4064ec738e306cc9cc41ad49b4a5df62c5983301c3bbf99a","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"1b939aaf3cdf3efc7d3bd53e83e80235530d3ba0c24bb7611d4730d35d457ec1","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"b88ef8a1eaa9ed73bf2acb8192afb73af987a92abb94140c6376fc83f2fa5553","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"79305936a60d342efdc10519ba89507d6b48e65f13f33090d3b04dc9655ceed0","src/unix/linux_like/linux/gnu/mod.rs":"84ad4a663b5fa2498179be8dca96fef5f0446ec1619215ac674424ee394e307d","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"cff23db1e0bac8c30052dfed5e89e65bc207471e4bfb3a6fa0a4df62ed9e413e","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"e5faee8efda8a225ea0b17d4d6f9e893a678e73773fa62c549a8e19c106b9f04","src/unix/linux_like/linux/musl/b32/hexagon.rs":"226a8b64ce9c75abbbee6d2dceb0b44f7b6c750c4102ebd4d015194afee6666e","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"df8f8b529a6cc6b8a7326639e83303cf1320c6c50d76517c17d42bcf45f6240a","src/unix/linux_like/linux/musl/b32/mod.rs":"7b3d9dfd8605b00bb9b5fa1439abe5ebf60199c7fa033eee555e8d181e93ffa2","src/unix/linux_like/linux/musl/b32/powerpc.rs":"c957d99a4d4371d2411a5769be8cf344516bf9ddc1011f977501a4eb57cb4e82","src/unix/linux_like/linux/musl/b32/riscv32/align.rs":"efd2accf33b87de7c7547903359a5da896edc33cd6c719552c7474b60d4a5d48","src/unix/linux_like/linux/musl/b32/riscv32/mod.rs":"698f77bfcc838f82126c54f7387881fe3e89490117e5a4f333d1b4433823a672","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"199a91e90b454f9dc32770d5204cc4f6e5b8f144e0e34a1c91829949d6e804b3","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"798a9229d70ce235394f2dd625f6c4c1e10519a94382dc5b091952b638ae2928","src/unix/linux_like/linux/musl/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"9c4878df0fea0e0affd85346e0bc191abdc5e41e74dc9199b5644ec33d29c300","src/unix/linux_like/linux/musl/b64/mips64.rs":"3686fc8cb2e311cda8e6b96f6dfe90b65a366714bd480312b692b1a6ca1241b6","src/unix/linux_like/linux/musl/b64/mod.rs":"8c10627bd582cb272514e7350ae4743a65d489356eae039d2e7e55cd533fbbc8","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"36694cbdcdc33879e00502d55cb95eaa0096d213538993dd39c3da800cdd06d1","src/unix/linux_like/linux/musl/b64/riscv64/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/musl/b64/riscv64/mod.rs":"36621aca8ecf714f8dd42662dc2997833d95b9f129ef8c220503362e21efd695","src/unix/linux_like/linux/musl/b64/s390x.rs":"9b05b1fae6bcb7cb6d909b9973977fde01684175f3e26c27dcb44223cc3933d9","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"238789097a26abc8b7cd578ed1a8e6cb8672083054303902781983902cd66854","src/unix/linux_like/linux/musl/mod.rs":"2efe98b8166270be1624888953fa07da06f08313f15bf4c7dc2eba63f5a790a5","src/unix/linux_like/linux/no_align.rs":"da2a8721becaaaa528781f97f5d9aae6a982ae5d4f5f6d2ffc0150bed72319b3","src/unix/linux_like/linux/non_exhaustive.rs":"181a05bf94fdb911db83ce793b993bd6548a4115b306a7ef3c10f745a8fea3e9","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"a056bbf718ddd775519058706bdb4909b56e6256985869e3c3132aa8ec5faca0","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"b84def53a49587e87f884c2bc28b21b290463b00b52e1d0309f2ba233a5b4a99","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"256a428290a560163ef7dc7d18b27bd3c6ce9748a0f28d5dc7f82203ee228220","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"367ec5483ad317e6ccba1ac0888da6cf088a8d32689214cc8d16129aa692260c","src/unix/linux_like/linux/uclibc/mod.rs":"ddd223d4f574b2b92072bbdab091f12d8d89d5e05f41076ddfa6bc6af379698f","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"024eba5753e852dbdd212427351affe7e83f9916c1864bce414d7aa2618f192e","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"bf6985e901041a61e90ccee1296b35a4c62ef90aa528d31989e1d647f072e79a","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"dd4f7a1d66d8501b4a2c4e75e6e9305ed69f1002ae99e410596a6c636878595a","src/unix/mod.rs":"d1b4ba41f9b9c106f6ba8c661b5808824b774a7a7caac7d8938bf50979ba5195","src/unix/newlib/aarch64/mod.rs":"bac93836a9a57b2c710f32f852e92a4d11ad6759ab0fb6ad33e71d60e53278af","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"cbba6b3e957eceb496806e60de8725a23ff3fa0015983b4b4fa27b233732b526","src/unix/newlib/espidf/mod.rs":"ff9c13e99d84912f5ebe75b7a7ea9c1e9d8f35a268716081e09899c7ea822bc6","src/unix/newlib/generic.rs":"eab066d9f0a0f3eb53cc1073d01496bba0110989e1f6a59838afd19f870cd599","src/unix/newlib/horizon/mod.rs":"7cc5cc120437421db139bfa6a90b18168cd3070bdd0f5be96d40fe4c996f3ca1","src/unix/newlib/mod.rs":"54633d606e4e0413274af0b5beb5e697e6c061b63feaa0704b026554cc9d9c3e","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"0202ffd57caf75b6afa2c9717750ffb96e375ac33df0ae9609a3f831be393b67","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"033768cb273daf2c8090d97252c2de9dba6809e6a5d2457f5727d724807695db","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"29387916ee7dc58f07478746024003215e631cd30953e8fa2a5c415f81839007","src/unix/solarish/mod.rs":"976b07a13e195840b67c166a62318abfa9ffc8d5ebbb0358f199dd213ec98d1b","src/unix/solarish/solaris.rs":"65b005453aefa9b9d4fc860fe77cfec80d8c97a51342b15daf55fc3e808bb384","src/unix/solarish/x86.rs":"e86e806df0caed72765040eaa2f3c883198d1aa91508540adf9b7008c77f522e","src/unix/solarish/x86_64.rs":"9074e813949f3c613afeac39d4118fb942c0b3c476232fc536489357cff5790f","src/unix/solarish/x86_common.rs":"ac869d9c3c95645c22460468391eb1982023c3a8e02b9e06a72e3aef3d5f1eac","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"aea3da66f2140f2a82dfc9c58f6e6531d2dd9c15ea696e0f95a0d4a2a187b5b6","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"4fae202af0327d768ed9e1b586b75816cce14fe2dc16947d2f3d381f209a54c1","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"e3ad95ba54f76e74c301611fe868d3d94f6b8939b03be672f568b06b10ae71c7","src/windows/msvc/mod.rs":"c068271e00fca6b62bc4bf44bcf142cfc38caeded9b6c4e01d1ceef3ccf986f4","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"} \ No newline at end of file
+{"files":{"CONTRIBUTING.md":"f480d10d2a506eecd23ae2e2dedb7a28b8bf6dae5f46f438dbb61be2003426fb","Cargo.toml":"04fa9ce26b0efcfe3dd51e3f1bbb81bb36f5d61982a11947283c7616d390549e","LICENSE-APACHE":"62c7a1e35f56406896d7aa7ca52d0cc0d272ac022b5d2796e7d6905db8a3636a","LICENSE-MIT":"a8d47ff51ca256f56a8932dba07660672dbfe3004257ca8de708aac1415937a1","README.md":"776affa26b66843a2b4f1a1c8f88d92f6461b74568911450fea717e9db6f877b","build.rs":"1d0cbe878e98e970c3318cac0772215a9f44bd286d859d665da27872ba9d8818","rustfmt.toml":"eaa2ea84fc1ba0359b77680804903e07bb38d257ab11986b95b158e460f787b2","src/fixed_width_ints.rs":"7f986e5f5e68d25ef04d386fd2f640e8be8f15427a8d4a458ea01d26b8dca0ca","src/fuchsia/aarch64.rs":"378776a9e40766154a54c94c2a7b4675b5c302a38e6e42da99e67bfbaee60e56","src/fuchsia/align.rs":"ae1cf8f011a99737eabeb14ffff768e60f13b13363d7646744dbb0f443dab3d6","src/fuchsia/mod.rs":"cf7e0df0e655337d1c0852880817b6b514ef9599e2125232fc79cdf8eddd01ba","src/fuchsia/no_align.rs":"303f3f1b255e0088b5715094353cf00476131d8e94e6aebb3f469557771c8b8a","src/fuchsia/x86_64.rs":"93a3632b5cf67d2a6bcb7dc0a558605252d5fe689e0f38d8aa2ec5852255ac87","src/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/hermit/mod.rs":"d3bfce41e4463d4be8020a2d063c9bfa8b665f45f1cc6cbf3163f5d01e7cb21f","src/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/lib.rs":"ce753ef318b300bbd441feabdd77d00322dfb6ce9eee8c78a38afe02b57aa4c0","src/macros.rs":"b457eb028b8e8ab3c24bb7292b874ad4e491edbb83594f6a3da024df5348c088","src/psp.rs":"dd31aabd46171d474ec5828372e28588935120e7355c90c105360d8fa9264c1c","src/sgx.rs":"16a95cdefc81c5ee00d8353a60db363c4cc3e0f75abcd5d0144723f2a306ed1b","src/solid/aarch64.rs":"a726e47f324adf73a4a0b67a2c183408d0cad105ae66acf36db37a42ab7f8707","src/solid/arm.rs":"e39a4f74ebbef3b97b8c95758ad741123d84ed3eb48d9cf4f1f4872097fc27fe","src/solid/mod.rs":"5f4151dca5132e4b4e4c23ab9737e12856dddbdc0ca3f7dbc004328ef3c8acde","src/switch.rs":"9da3dd39b3de45a7928789926e8572d00e1e11a39e6f7289a1349aadce90edba","src/unix/align.rs":"2cdc7c826ef7ae61f5171c5ae8c445a743d86f1a7f2d9d7e4ceeec56d6874f65","src/unix/bsd/apple/b32/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b32/mod.rs":"2546ad3eb6aecb95f916648bc63264117c92b4b4859532b34cb011e4c75a5a72","src/unix/bsd/apple/b64/aarch64/align.rs":"e8eb38d064b5fefec6f37d42873820a0483e7c758ed336cc59a7155455ca89c9","src/unix/bsd/apple/b64/aarch64/mod.rs":"a3f0dfff62d0f7f4f1b5f9a4e2b662acf233a46badbc5419d3cc2d735629a710","src/unix/bsd/apple/b64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/mod.rs":"f5e278a1af7fb358891d1c9be4eb7e815aaca0c5cb738d0c3604ba2208a856f7","src/unix/bsd/apple/b64/x86_64/align.rs":"ec833a747866fe19ca2d9b4d3c9ff0385faba5edf4bd0d15fa68884c40b0e26c","src/unix/bsd/apple/b64/x86_64/mod.rs":"8c87c5855038aae5d433c8f5eb3b29b0a175879a0245342b3bfd83bdf4cfd936","src/unix/bsd/apple/mod.rs":"bb61eec399428faee753b3df509410c51ed2ac51406d40559fcec290bb50e293","src/unix/bsd/freebsdlike/dragonfly/errno.rs":"8295b8bb0dfd38d2cdb4d9192cdeeb534cc6c3b208170e64615fa3e0edb3e578","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"e4f33050d52d3e5c932da8d10e1f377e1ff609fb178ea986bfc458d31e37dc19","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"2a215bd6136b8617aacedf9be738ccee94da9d29b418e9a78101d6291c182352","src/unix/bsd/freebsdlike/freebsd/arm.rs":"59d6a670eea562fb87686e243e0a84603d29a2028a3d4b3f99ccc01bd04d2f47","src/unix/bsd/freebsdlike/freebsd/freebsd11/b64.rs":"9808d152c1196aa647f1b0f0cf84dac8c930da7d7f897a44975545e3d9d17681","src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs":"23f189f188651762b38f40b4e9aba785625f6f9a52558a4a490510c3b1d08b53","src/unix/bsd/freebsdlike/freebsd/freebsd12/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs":"57fee9dd251ac615ec7d32d293e0f0b6fa3bf28efbddd6d569765765aafb8b9b","src/unix/bsd/freebsdlike/freebsd/freebsd12/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd13/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs":"7df84dd6dee8b73fd4d72dd1638584d788e2a1a85f95746f7c5b330b8dc23655","src/unix/bsd/freebsdlike/freebsd/freebsd13/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/freebsd14/b64.rs":"61cbe45f8499bedb168106b686d4f8239472f25c7553b069eec2afe197ff2df6","src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs":"236ef119410d566ef94064bf13d734635eaeecb3635a5d21e8e9f91e7e3152ac","src/unix/bsd/freebsdlike/freebsd/freebsd14/x86_64.rs":"2df36a7f122f6d6e5753cfb4d22e915cc80f6bc91c0161b3daae55a481bfd052","src/unix/bsd/freebsdlike/freebsd/mod.rs":"6a8eb9a1e35eec893de9c76a5be3ce29e4c3ca26db45fbcfa925bdd757f6352d","src/unix/bsd/freebsdlike/freebsd/powerpc.rs":"9ca3f82f88974e6db5569f2d76a5a3749b248a31747a6c0da5820492bdfeca42","src/unix/bsd/freebsdlike/freebsd/powerpc64.rs":"2dae3ecc87eac3b11657aa98915def55fc4b5c0de11fe26aae23329a54628a9a","src/unix/bsd/freebsdlike/freebsd/riscv64.rs":"8f591bd273464d684c4f64365f8ed56a8138175daa70d96008541393057a0dae","src/unix/bsd/freebsdlike/freebsd/x86.rs":"c5005e3249eb7c93cfbac72a9e9272320d80ce7983da990ceb05a447f59a02c5","src/unix/bsd/freebsdlike/freebsd/x86_64/align.rs":"0e1f69a88fca1c32874b1daf5db3d446fefbe518dca497f096cc9168c39dde70","src/unix/bsd/freebsdlike/freebsd/x86_64/mod.rs":"51e4dd0c8ae247bb652feda5adad9333ea3bb30c750c3a3935e0b0e47d7803eb","src/unix/bsd/freebsdlike/mod.rs":"a61d41f6fe01c06c6de5db2ed970522601eada133e6bac4ed2d1dfaceb576db2","src/unix/bsd/mod.rs":"817ca5719c36a74c84e52c6a56a5998b60d7f02351a405e034f08ebab079b63a","src/unix/bsd/netbsdlike/mod.rs":"b07a0e81085bd811fce7270f3b90fbfea29faf9593d9e39d9d2ebbb9a78bf25f","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"65dcb58d11e8d8028401a9d07ca3eb4cb4f053e04249cc877353449d84ccc4cb","src/unix/bsd/netbsdlike/netbsd/arm.rs":"58cdbb70b0d6f536551f0f3bb3725d2d75c4690db12c26c034e7d6ec4a924452","src/unix/bsd/netbsdlike/netbsd/mod.rs":"fa260decf53280d4fdf714af60f42d4774f8d6f2da71b0a55a6c2a85e422eb57","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"ee7ff5d89d0ed22f531237b5059aa669df93a3b5c489fa641465ace8d405bf41","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"9489f4b3e4566f43bb12dfb92238960613dac7f6a45cc13068a8d152b902d7d9","src/unix/bsd/netbsdlike/netbsd/x86.rs":"20692320e36bfe028d1a34d16fe12ca77aa909cb02bda167376f98f1a09aefe7","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"1afe5ef46b14397cdd68664b5b232e4f5b035b6db1d4cf411c899d51ebca9f30","src/unix/bsd/netbsdlike/openbsd/aarch64.rs":"dd91931d373b7ecaf6e2de25adadee10d16fa9b12c2cbacdff3eb291e1ba36af","src/unix/bsd/netbsdlike/openbsd/arm.rs":"01580d261bc6447bb327a0d982181b7bdabfa066cee65a30373d3ced729ad307","src/unix/bsd/netbsdlike/openbsd/mips64.rs":"8532a189ae10c7d668d9d4065da8b05d124e09bd39442c9f74a7f231c43eca48","src/unix/bsd/netbsdlike/openbsd/mod.rs":"079b11c99c6ca3cc5942c0e6d854541f8765c5058c2f024b84656697840e198b","src/unix/bsd/netbsdlike/openbsd/powerpc.rs":"01580d261bc6447bb327a0d982181b7bdabfa066cee65a30373d3ced729ad307","src/unix/bsd/netbsdlike/openbsd/powerpc64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/riscv64.rs":"1dd5449dd1fd3d51e30ffdeeaece91d0aaf05c710e0ac699fecc5461cfa2c28e","src/unix/bsd/netbsdlike/openbsd/sparc64.rs":"d04fd287afbaa2c5df9d48c94e8374a532a3ba491b424ddf018270c7312f4085","src/unix/bsd/netbsdlike/openbsd/x86.rs":"6f7f5c4fde2a2259eb547890cbd86570cea04ef85347d7569e94e679448bec87","src/unix/bsd/netbsdlike/openbsd/x86_64.rs":"d31db31630289c85af3339dbe357998a21ca584cbae31607448fe2cf7675a4e1","src/unix/haiku/b32.rs":"a2efdbf7158a6da341e1db9176b0ab193ba88b449616239ed95dced11f54d87b","src/unix/haiku/b64.rs":"ff8115367d3d7d354f792d6176dfaaa26353f57056197b563bf4681f91ff7985","src/unix/haiku/mod.rs":"df7b6b7d8dd3441665bfe87f2abc942bddc65b8b10dfa9c83dd0422f68107891","src/unix/haiku/native.rs":"dbfcbf4954a79d1df2ff58e0590bbcb8c57dfc7a32392aa73ee4726b66bd6cc8","src/unix/haiku/x86_64.rs":"3ec3aeeb7ed208b8916f3e32d42bfd085ff5e16936a1a35d9a52789f043b7237","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"859814f5df89e28fd4b345db399d181e11e7ed413841b6ff703a1fcbdbf013ae","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/linux_like/android/b32/arm.rs":"433c1530f602cc5ed26610c58055dde0c4ceea5e00150063b24ddc60768332a4","src/unix/linux_like/android/b32/mod.rs":"7c173e0375119bf06a3081652faede95e5bcd6858e7576b7533d037978737c8f","src/unix/linux_like/android/b32/x86/align.rs":"812914e4241df82e32b12375ca3374615dc3a4bdd4cf31f0423c5815320c0dab","src/unix/linux_like/android/b32/x86/mod.rs":"8388bd3a0fcb5636bf965eee6dc95ae6860b85a2b555b387c868aa4d4e01ec89","src/unix/linux_like/android/b64/aarch64/align.rs":"2179c3b1608fa4bf68840482bfc2b2fa3ee2faf6fcae3770f9e505cddca35c7b","src/unix/linux_like/android/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/android/b64/aarch64/mod.rs":"ef230d49fd0d182adf2dae6f8e10babf18d72259d65980bf1c4c2dc8a4f84501","src/unix/linux_like/android/b64/mod.rs":"71e4fcbe952bfa4a5f9022f3972e906917b38f729b9d8ef57cd5d179104894ac","src/unix/linux_like/android/b64/riscv64/align.rs":"0bf138f84e5327d8339bcd4adf071a6832b516445e597552c82bbd881095e3a8","src/unix/linux_like/android/b64/riscv64/mod.rs":"80e9f93fed838a48b4e2e8d77b95c72cfd7c0647bcce63851555c5ad16dad143","src/unix/linux_like/android/b64/x86_64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/android/b64/x86_64/mod.rs":"e10d19bea39f719723ab6666a5ddbd378b6958769441c5904629e1df173b1dc2","src/unix/linux_like/android/mod.rs":"41b9d0f405cd474385acce06df0649f4eeaab3fe8fb4655f97806fa40bdf84d8","src/unix/linux_like/emscripten/align.rs":"86c95cbed7a7161b1f23ee06843e7b0e2340ad92b2cb86fe2a8ef3e0e8c36216","src/unix/linux_like/emscripten/mod.rs":"6ef4652dfb94e3c58aed5133ece982ad30569d46b6b1054552cd61905fa61690","src/unix/linux_like/emscripten/no_align.rs":"0128e4aa721a9902754828b61b5ec7d8a86619983ed1e0544a85d35b1051fad6","src/unix/linux_like/linux/align.rs":"d6c259942c8e843373accd180fc8f4f45f03544dfd21b93a8d02641ead3ef63e","src/unix/linux_like/linux/arch/generic/mod.rs":"e2b46404e44f7d63c26af9dbd79b4e166ef7bced2bc9c6746a26ca86e508e0d4","src/unix/linux_like/linux/arch/mips/mod.rs":"2d166054a586bb4bf6e4a4ba35f7574907b217225eff8f1a43adc4277e142460","src/unix/linux_like/linux/arch/mod.rs":"466a29622e47c6c7f1500682b2eb17f5566dd81b322cd6348f0fdd355cec593a","src/unix/linux_like/linux/arch/powerpc/mod.rs":"3f6da7b0fa7b394c7d4eea2bb3caa7a7729ab0d6c1491fef02206a912c41b815","src/unix/linux_like/linux/arch/sparc/mod.rs":"91593ec0440f1dd8f8e612028f432c44c14089286e2aca50e10511ab942db8c3","src/unix/linux_like/linux/gnu/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/gnu/b32/arm/align.rs":"6ec0eb3ee93f7ae99fd714b4deabfb5e97fbcefd8c26f5a45fb8e7150899cdeb","src/unix/linux_like/linux/gnu/b32/arm/mod.rs":"5bd3f6b3484e049ddaac95f411b0d82cbf1cd28e6a5defbc927bd917f5f7d299","src/unix/linux_like/linux/gnu/b32/m68k/align.rs":"8faa92f77a9232c035418d45331774e64a9a841d99c91791570a203bf2b45bcb","src/unix/linux_like/linux/gnu/b32/m68k/mod.rs":"a2a0a9400dae44086ebf579e0448e0676d4a3214d1ae7d13a024857251e23b6b","src/unix/linux_like/linux/gnu/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/gnu/b32/mips/mod.rs":"6b9a5dac6f937ddc1453e808e3c43502c87143332df9e43ac64fb8b1eda6c116","src/unix/linux_like/linux/gnu/b32/mod.rs":"8da281da578cdee972e952b118b903b370320897a7e335342a15e1359864bef2","src/unix/linux_like/linux/gnu/b32/powerpc.rs":"5c5d90326b54b57b98eff4745fe7a3fb02f053b2dc782241a73e807b491936a3","src/unix/linux_like/linux/gnu/b32/riscv32/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs":"5e7c1e29aeb82fc422f45b73fb0cf3d13d0902300f9150d2755a9074f8d96999","src/unix/linux_like/linux/gnu/b32/sparc/align.rs":"21adbed27df73e2d1ed934aaf733a643003d7baf2bde9c48ea440895bcca6d41","src/unix/linux_like/linux/gnu/b32/sparc/mod.rs":"80894eece66e9348f45d1b07ad37c757ea694bbd10ed49d3f920b34e9f51a9a3","src/unix/linux_like/linux/gnu/b32/x86/align.rs":"e4bafdc4a519a7922a81b37a62bbfd1177a2f620890eef8f1fbc47162e9eb413","src/unix/linux_like/linux/gnu/b32/x86/mod.rs":"c703cc5e9de2dc31d9e5831bfb6f354d6e3518b2ae02263f68a9a70f1c0167e2","src/unix/linux_like/linux/gnu/b64/aarch64/align.rs":"5b32fcc0d60356c92ded4e0ba9bb32f0140a8bd75ba800486bf38294f61dbdbb","src/unix/linux_like/linux/gnu/b64/aarch64/ilp32.rs":"21a21503ef2e095f4371044915d4bfb07a8578011cb5c713cd9f45947b0b5730","src/unix/linux_like/linux/gnu/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/linux/gnu/b64/aarch64/lp64.rs":"e78c3cd197f44832338b414d1a9bc0d194f44c74db77bd7bf830c1fff62b2690","src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs":"c91813ee5e1bc817996c46be86d1f46802e73df2952cab576ea015490929afc5","src/unix/linux_like/linux/gnu/b64/loongarch64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/loongarch64/mod.rs":"387808d5398b24339e7e2bf7591150735011befc5b421fa713d7017c04a7b1da","src/unix/linux_like/linux/gnu/b64/mips64/align.rs":"7169d07a9fd4716f7512719aec9fda5d8bed306dc0720ffc1b21696c9951e3c6","src/unix/linux_like/linux/gnu/b64/mips64/mod.rs":"80b4b97a41564290c510e68a1fb20cfd8424206f010e71a596f12877de886a71","src/unix/linux_like/linux/gnu/b64/mod.rs":"3c6555f30a7a8852757b31a542ea73fb6a16a6e27e838397e819278ad56e57a4","src/unix/linux_like/linux/gnu/b64/powerpc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs":"a595e37c2325ceb40ef66c634bd3c255ad184a1d70ff8025e98a075f0ec67704","src/unix/linux_like/linux/gnu/b64/riscv64/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs":"ef4b13477ffd8532fb6705ca3fa63a1f13e8d19ee39b083c5355dfce430c1a5b","src/unix/linux_like/linux/gnu/b64/s390x.rs":"788fde4fa1919859cc028b59da31de00449edd2b2c1530ae76134beac418b73c","src/unix/linux_like/linux/gnu/b64/sparc64/align.rs":"e29c4868bbecfa4a6cd8a2ad06193f3bbc78a468cc1dc9df83f002f1268130d9","src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs":"c4fa0ede3f78b21a9982667922cccd0681bee3cb6d42208ea9958f65e93d6308","src/unix/linux_like/linux/gnu/b64/x86_64/align.rs":"62e822478356db4a73b6bbd1b36d825b893939ab4b308ec11b0578bcc4b49769","src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs":"e37e0421290b152fe508883181c41225e09dd5452a6b085e8d807b3b54823028","src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs":"c1b6345ce14f67d1b2e2f7f2c0ff9a074c07acbd348df69cb4558bda8c8fb9ae","src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs":"3f4d2aeadb7d2620cad09564abdbfc5cf02eeb5a27f2bab8a4e9b4bdbdb258a5","src/unix/linux_like/linux/gnu/mod.rs":"06abaca7fc85e805650ec807c4d06c888ff99e146e1ba2685f20840a86e35a2f","src/unix/linux_like/linux/gnu/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/mod.rs":"1d84f37fdfa4dfab1b758345af75e02485e2a18746830413c2afe5069a1e39ce","src/unix/linux_like/linux/musl/b32/arm/align.rs":"3e8ac052c1043764776b54c93ba4260e061df998631737a897d9d47d54f7b80c","src/unix/linux_like/linux/musl/b32/arm/mod.rs":"f5b217a93f99c2852f7fd1459f529798372fa7df84ee0cfd3d8cdd5b2021b8cf","src/unix/linux_like/linux/musl/b32/hexagon.rs":"226a8b64ce9c75abbbee6d2dceb0b44f7b6c750c4102ebd4d015194afee6666e","src/unix/linux_like/linux/musl/b32/mips/align.rs":"429fb5e005cb7143602d430098b6ebfb7d360685b194f333dfd587472ae954ee","src/unix/linux_like/linux/musl/b32/mips/mod.rs":"16a7a03d998a5db11be9ee81525c7faec4623383260e8bc125b1c53a050fde75","src/unix/linux_like/linux/musl/b32/mod.rs":"580e27c5ce3344df686f1ffc08fdfa2c282d1ceb623d778c50d210d4bd65ec7e","src/unix/linux_like/linux/musl/b32/powerpc.rs":"dc52adc264c34bce80753d6bd064e8fc4b8237fa1e5c5315ccb6c72df74c2813","src/unix/linux_like/linux/musl/b32/riscv32/align.rs":"efd2accf33b87de7c7547903359a5da896edc33cd6c719552c7474b60d4a5d48","src/unix/linux_like/linux/musl/b32/riscv32/mod.rs":"e57dc5562553aab6d0765e0ec266254aa52975f8757bfe97e0c6028fa7d5d37c","src/unix/linux_like/linux/musl/b32/x86/align.rs":"08e77fbd7435d7dec2ff56932433bece3f02e47ce810f89004a275a86d39cbe1","src/unix/linux_like/linux/musl/b32/x86/mod.rs":"7a1586f77bb693f0b319ec720c35963da056287fc42f8e2ccf1d5b2bcccf4fd6","src/unix/linux_like/linux/musl/b64/aarch64/align.rs":"6ba32725d24d7d8e6aa111f3b57aafa318f83b606abe96561329151829821133","src/unix/linux_like/linux/musl/b64/aarch64/int128.rs":"1735f6f5c56770d20dd426442f09724d9b2052b46a7cd82f23f3288a4a7276de","src/unix/linux_like/linux/musl/b64/aarch64/mod.rs":"31e75179cbb4e26425b3f5b052e358f593153da662884655e60801d852e55dc2","src/unix/linux_like/linux/musl/b64/mips64.rs":"9a5d29f666332bb056d0e2951e9de989aa1dc016075f009db3f2f628e0cdda8c","src/unix/linux_like/linux/musl/b64/mod.rs":"8c10627bd582cb272514e7350ae4743a65d489356eae039d2e7e55cd533fbbc8","src/unix/linux_like/linux/musl/b64/powerpc64.rs":"455dc0ffa55afc1db6ffaf461f6f2a7b49d31658bfebe0bb4efac5967a6f956c","src/unix/linux_like/linux/musl/b64/riscv64/align.rs":"d321491612be8d5c61b6ec2dc0111beb3a22e58803f99cd37543efe86621b119","src/unix/linux_like/linux/musl/b64/riscv64/mod.rs":"42d4b6d36807f37759094a732a321080cccdf498b174d632cebba147051de294","src/unix/linux_like/linux/musl/b64/s390x.rs":"d8a4fdfea0960ec284cae4facb8b0fb342e8aa41544cffacdcaf08c5a92a43f8","src/unix/linux_like/linux/musl/b64/x86_64/align.rs":"77309276ad7a42cbe59ca381f23590b7a143aded05555b34a5b307b808cbca6e","src/unix/linux_like/linux/musl/b64/x86_64/mod.rs":"7a877cd23b64be66d28e6b8dddae32d59a88d69115637539daf19381f4e39330","src/unix/linux_like/linux/musl/mod.rs":"0514b337aaa6e62be9e01e00702ef996c60319b7050ece155530147c20de9995","src/unix/linux_like/linux/no_align.rs":"da2a8721becaaaa528781f97f5d9aae6a982ae5d4f5f6d2ffc0150bed72319b3","src/unix/linux_like/linux/non_exhaustive.rs":"181a05bf94fdb911db83ce793b993bd6548a4115b306a7ef3c10f745a8fea3e9","src/unix/linux_like/linux/uclibc/align.rs":"9ed16138d8e439bd90930845a65eafa7ebd67366e6bf633936d44014f6e4c959","src/unix/linux_like/linux/uclibc/arm/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/arm/mod.rs":"7d8dfbd26ce958d9da17468b3c9d0b119ce7dbd59b3384551cd4423ce25db44a","src/unix/linux_like/linux/uclibc/arm/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips32/align.rs":"e4a3c27fe20a57b8d612c34cb05bc70646edb5cec7251957315afa53a7b9f936","src/unix/linux_like/linux/uclibc/mips/mips32/mod.rs":"b84def53a49587e87f884c2bc28b21b290463b00b52e1d0309f2ba233a5b4a99","src/unix/linux_like/linux/uclibc/mips/mips32/no_align.rs":"9cd223135de75315840ff9c3fd5441ba1cb632b96b5c85a76f8316c86653db25","src/unix/linux_like/linux/uclibc/mips/mips64/align.rs":"a7bdcb18a37a2d91e64d5fad83ea3edc78f5412adb28f77ab077dbb26dd08b2d","src/unix/linux_like/linux/uclibc/mips/mips64/mod.rs":"256a428290a560163ef7dc7d18b27bd3c6ce9748a0f28d5dc7f82203ee228220","src/unix/linux_like/linux/uclibc/mips/mips64/no_align.rs":"4a18e3875698c85229599225ac3401a2a40da87e77b2ad4ef47c6fcd5a24ed30","src/unix/linux_like/linux/uclibc/mips/mod.rs":"367ec5483ad317e6ccba1ac0888da6cf088a8d32689214cc8d16129aa692260c","src/unix/linux_like/linux/uclibc/mod.rs":"1c3d25cddcfefa2bd17bdc81550826be31a08eef235e13f825f169a5029c8bca","src/unix/linux_like/linux/uclibc/no_align.rs":"3f28637046524618adaa1012e26cb7ffe94b9396e6b518cccdc69d59f274d709","src/unix/linux_like/linux/uclibc/x86_64/l4re.rs":"024eba5753e852dbdd212427351affe7e83f9916c1864bce414d7aa2618f192e","src/unix/linux_like/linux/uclibc/x86_64/mod.rs":"420dbea99e99091f333641e202960fa4bed0733de2a834e610708555be6bab4c","src/unix/linux_like/linux/uclibc/x86_64/other.rs":"42c3f71e58cabba373f6a55a623f3c31b85049eb64824c09c2b082b3b2d6a0a8","src/unix/linux_like/mod.rs":"3d03bd583aaf04f285f95ff8b53c9b5a891d3b64bfcda37a42648ec51c4c51e5","src/unix/mod.rs":"fbd5520d160a32a127608cd408905febe387773bbf05bfe199ef385fb5562e9c","src/unix/newlib/aarch64/mod.rs":"bac93836a9a57b2c710f32f852e92a4d11ad6759ab0fb6ad33e71d60e53278af","src/unix/newlib/align.rs":"28aaf87fafbc6b312622719d472d8cf65f9e5467d15339df5f73e66d8502b28a","src/unix/newlib/arm/mod.rs":"cbba6b3e957eceb496806e60de8725a23ff3fa0015983b4b4fa27b233732b526","src/unix/newlib/espidf/mod.rs":"816f235f4aa4baabba7f2606b31d0fdb03988c52194c966728de8690bf17299d","src/unix/newlib/generic.rs":"eab066d9f0a0f3eb53cc1073d01496bba0110989e1f6a59838afd19f870cd599","src/unix/newlib/horizon/mod.rs":"7cc5cc120437421db139bfa6a90b18168cd3070bdd0f5be96d40fe4c996f3ca1","src/unix/newlib/mod.rs":"494e56628d4408bf66ad30ff71fbd21bc33d9037935c411dff7bf73dd3f1070b","src/unix/newlib/no_align.rs":"e0743b2179495a9514bc3a4d1781e492878c4ec834ee0085d0891dd1712e82fb","src/unix/newlib/powerpc/mod.rs":"0202ffd57caf75b6afa2c9717750ffb96e375ac33df0ae9609a3f831be393b67","src/unix/no_align.rs":"c06e95373b9088266e0b14bba0954eef95f93fb2b01d951855e382d22de78e53","src/unix/redox/mod.rs":"033768cb273daf2c8090d97252c2de9dba6809e6a5d2457f5727d724807695db","src/unix/solarish/compat.rs":"b07a5bfac925eb012003a459ba6bddbd3bfa9c44b3394da2ac5a602e54beae9c","src/unix/solarish/illumos.rs":"1369fb55325914654ba3ad02410b75a40c8c0008feed9704c28520be1ee49641","src/unix/solarish/mod.rs":"52a31038984e68582347f4b28fd64c01e6308ff4293628818bb279605e7b28c6","src/unix/solarish/solaris.rs":"36abcfb46fab6e7151a0c1f555b419e1267b82893f6e84d5d260308ba8eeb0c5","src/unix/solarish/x86.rs":"e86e806df0caed72765040eaa2f3c883198d1aa91508540adf9b7008c77f522e","src/unix/solarish/x86_64.rs":"ec2b01f194eb8a6a27133c57681da195a949e03098f3ea1e847227a9c09ef5fc","src/unix/solarish/x86_common.rs":"ac869d9c3c95645c22460468391eb1982023c3a8e02b9e06a72e3aef3d5f1eac","src/vxworks/aarch64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/arm.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/mod.rs":"aea3da66f2140f2a82dfc9c58f6e6531d2dd9c15ea696e0f95a0d4a2a187b5b6","src/vxworks/powerpc.rs":"acb7968ce99fe3f4abdf39d98f8133d21a4fba435b8ef7084777cb181d788e88","src/vxworks/powerpc64.rs":"98f0afdc511cd02557e506c21fed6737585490a1dce7a9d4941d08c437762b99","src/vxworks/x86.rs":"552f007f38317620b23889cb7c49d1d115841252439060122f52f434fbc6e5ba","src/vxworks/x86_64.rs":"018d92be3ad628a129eff9f2f5dfbc0883d8b8e5f2fa917b900a7f98ed6b514a","src/wasi.rs":"4fae202af0327d768ed9e1b586b75816cce14fe2dc16947d2f3d381f209a54c1","src/windows/gnu/align.rs":"b2c13ec1b9f3b39a75c452c80c951dff9d0215e31d77e883b4502afb31794647","src/windows/gnu/mod.rs":"3c8c7edb7cdf5d0c44af936db2a94869585c69dfabeef30571b4f4e38375767a","src/windows/mod.rs":"090dd8fcd951d18f1905bca96188783c2e3f1433484926ecdcda144237ecec0f","src/windows/msvc/mod.rs":"c068271e00fca6b62bc4bf44bcf142cfc38caeded9b6c4e01d1ceef3ccf986f4","tests/const_fn.rs":"cb75a1f0864f926aebe79118fc34d51a0d1ade2c20a394e7774c7e545f21f1f4"},"package":"68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c"} \ No newline at end of file
diff --git a/vendor/libc/CONTRIBUTING.md b/vendor/libc/CONTRIBUTING.md
index 5be6eb9be..3315ed3e8 100644
--- a/vendor/libc/CONTRIBUTING.md
+++ b/vendor/libc/CONTRIBUTING.md
@@ -72,6 +72,10 @@ after a certain period. The steps are:
If you're using it, please comment on #XXX").
2. If we don't see any concerns for a while, do the change actually.
+## Supported target policy
+
+When Rust removes a support for a target, the libc crate also may remove the support anytime.
+
## Releasing your change to crates.io
Now that you've done the amazing job of landing your new API or your new
diff --git a/vendor/libc/Cargo.toml b/vendor/libc/Cargo.toml
index 7983d029f..cb7c0047e 100644
--- a/vendor/libc/Cargo.toml
+++ b/vendor/libc/Cargo.toml
@@ -11,7 +11,7 @@
[package]
name = "libc"
-version = "0.2.126"
+version = "0.2.135"
authors = ["The Rust Project Developers"]
build = "build.rs"
exclude = [
diff --git a/vendor/libc/README.md b/vendor/libc/README.md
index a8a3afd9f..bc5ad18f6 100644
--- a/vendor/libc/README.md
+++ b/vendor/libc/README.md
@@ -35,13 +35,16 @@ libc = "0.2"
This feature derives `Debug`, `Eq`, `Hash`, and `PartialEq`.
* `const-extern-fn`: Changes some `extern fn`s into `const extern fn`s.
- This feature requires a nightly rustc.
+ If you use Rust >= 1.62, this feature is implicitly enabled.
+ Otherwise it requires a nightly rustc.
* **deprecated**: `use_std` is deprecated, and is equivalent to `std`.
## Rust version support
-The minimum supported Rust toolchain version is **Rust 1.13.0** . APIs requiring
+The minimum supported Rust toolchain version is currently **Rust 1.13.0**.
+(libc does not currently have any policy regarding changes to the minimum
+supported Rust version; such policy is a work in progress.) APIs requiring
newer Rust features are only available on newer Rust toolchains:
| Feature | Version |
@@ -53,6 +56,7 @@ newer Rust features are only available on newer Rust toolchains:
| `core::ffi::c_void` | 1.30.0 |
| `repr(packed(N))` | 1.33.0 |
| `cfg(target_vendor)` | 1.33.0 |
+| `const-extern-fn` | 1.62.0 |
## Platform support
diff --git a/vendor/libc/build.rs b/vendor/libc/build.rs
index bc7b77f25..0a43b2a12 100644
--- a/vendor/libc/build.rs
+++ b/vendor/libc/build.rs
@@ -97,11 +97,18 @@ fn main() {
println!("cargo:rustc-cfg=libc_thread_local");
}
- if const_extern_fn_cargo_feature {
- if !is_nightly || rustc_minor_ver < 40 {
- panic!("const-extern-fn requires a nightly compiler >= 1.40")
- }
+ // Rust >= 1.62.0 allows to use `const_extern_fn` for "Rust" and "C".
+ if rustc_minor_ver >= 62 {
println!("cargo:rustc-cfg=libc_const_extern_fn");
+ } else {
+ // Rust < 1.62.0 requires a crate feature and feature gate.
+ if const_extern_fn_cargo_feature {
+ if !is_nightly || rustc_minor_ver < 40 {
+ panic!("const-extern-fn requires a nightly compiler >= 1.40");
+ }
+ println!("cargo:rustc-cfg=libc_const_extern_fn_unstable");
+ println!("cargo:rustc-cfg=libc_const_extern_fn");
+ }
}
}
diff --git a/vendor/libc/src/fuchsia/mod.rs b/vendor/libc/src/fuchsia/mod.rs
index 99b7791b0..eee82d0d8 100644
--- a/vendor/libc/src/fuchsia/mod.rs
+++ b/vendor/libc/src/fuchsia/mod.rs
@@ -877,6 +877,11 @@ s! {
pub c_ispeed: ::speed_t,
pub c_ospeed: ::speed_t,
}
+
+ pub struct in6_pktinfo {
+ pub ipi6_addr: ::in6_addr,
+ pub ipi6_ifindex: ::c_uint,
+ }
}
s_no_extra_traits! {
@@ -1788,6 +1793,9 @@ pub const IPV6_MULTICAST_LOOP: ::c_int = 19;
pub const IPV6_ADD_MEMBERSHIP: ::c_int = 20;
pub const IPV6_DROP_MEMBERSHIP: ::c_int = 21;
pub const IPV6_V6ONLY: ::c_int = 26;
+pub const IPV6_RECVPKTINFO: ::c_int = 49;
+pub const IPV6_RECVTCLASS: ::c_int = 66;
+pub const IPV6_TCLASS: ::c_int = 67;
pub const TCP_NODELAY: ::c_int = 1;
pub const TCP_MAXSEG: ::c_int = 2;
@@ -2669,6 +2677,9 @@ pub const PT_GNU_EH_FRAME: u32 = 0x6474e550;
pub const PT_GNU_STACK: u32 = 0x6474e551;
pub const PT_GNU_RELRO: u32 = 0x6474e552;
+// Ethernet protocol IDs.
+pub const ETH_P_IP: ::c_int = 0x0800;
+
pub const SFD_CLOEXEC: ::c_int = 0x080000;
pub const NCCS: usize = 32;
@@ -3224,17 +3235,6 @@ f! {
minor as ::c_uint
}
- pub fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
- let major = major as ::dev_t;
- let minor = minor as ::dev_t;
- let mut dev = 0;
- dev |= (major & 0x00000fff) << 8;
- dev |= (major & 0xfffff000) << 32;
- dev |= (minor & 0x000000ff) << 0;
- dev |= (minor & 0xffffff00) << 12;
- dev
- }
-
pub fn CMSG_DATA(cmsg: *const cmsghdr) -> *mut c_uchar {
cmsg.offset(1) as *mut c_uchar
}
@@ -3311,6 +3311,17 @@ safe_f! {
pub {const} fn QCMD(cmd: ::c_int, type_: ::c_int) -> ::c_int {
(cmd << 8) | (type_ & 0x00ff)
}
+
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+ let major = major as ::dev_t;
+ let minor = minor as ::dev_t;
+ let mut dev = 0;
+ dev |= (major & 0x00000fff) << 8;
+ dev |= (major & 0xfffff000) << 32;
+ dev |= (minor & 0x000000ff) << 0;
+ dev |= (minor & 0xffffff00) << 12;
+ dev
+ }
}
fn __CMSG_LEN(cmsg: *const cmsghdr) -> ::ssize_t {
@@ -4201,6 +4212,11 @@ extern "C" {
child: ::Option<unsafe extern "C" fn()>,
) -> ::c_int;
pub fn getgrgid(gid: ::gid_t) -> *mut ::group;
+
+ pub fn setgrent();
+ pub fn endgrent();
+ pub fn getgrent() -> *mut ::group;
+
pub fn getgrouplist(
user: *const ::c_char,
group: ::gid_t,
diff --git a/vendor/libc/src/lib.rs b/vendor/libc/src/lib.rs
index d87d0d8e1..acda09159 100644
--- a/vendor/libc/src/lib.rs
+++ b/vendor/libc/src/lib.rs
@@ -13,7 +13,9 @@
improper_ctypes,
// This lint is renamed but we run CI for old stable rustc so should be here.
redundant_semicolon,
- redundant_semicolons
+ redundant_semicolons,
+ unused_macros,
+ unused_macro_rules,
)]
#![cfg_attr(libc_deny_warnings, deny(warnings))]
// Attributes needed when building as part of the standard library
@@ -24,11 +26,7 @@
#![deny(missing_copy_implementations, safe_packed_borrows)]
#![cfg_attr(not(feature = "rustc-dep-of-std"), no_std)]
#![cfg_attr(feature = "rustc-dep-of-std", no_core)]
-#![cfg_attr(
- feature = "rustc-dep-of-std",
- feature(native_link_modifiers, native_link_modifiers_bundle)
-)]
-#![cfg_attr(libc_const_extern_fn, feature(const_extern_fn))]
+#![cfg_attr(libc_const_extern_fn_unstable, feature(const_extern_fn))]
#[macro_use]
mod macros;
diff --git a/vendor/libc/src/macros.rs b/vendor/libc/src/macros.rs
index 603fa583e..fd473702f 100644
--- a/vendor/libc/src/macros.rs
+++ b/vendor/libc/src/macros.rs
@@ -6,7 +6,6 @@
///
/// This allows you to conveniently provide a long list #[cfg]'d blocks of code
/// without having to rewrite each clause multiple times.
-#[allow(unused_macros)]
macro_rules! cfg_if {
// match if/else chains with a final `else`
($(
@@ -62,7 +61,6 @@ macro_rules! cfg_if {
};
}
-#[allow(unused_macros, unused_macro_rules)]
macro_rules! s {
($($(#[$attr:meta])* pub $t:ident $i:ident { $($field:tt)* })*) => ($(
s!(it: $(#[$attr])* pub $t $i { $($field)* });
@@ -87,7 +85,6 @@ macro_rules! s {
);
}
-#[allow(unused_macros)]
macro_rules! s_no_extra_traits {
($($(#[$attr:meta])* pub $t:ident $i:ident { $($field:tt)* })*) => ($(
s_no_extra_traits!(it: $(#[$attr])* pub $t $i { $($field)* });
@@ -123,7 +120,6 @@ macro_rules! s_no_extra_traits {
);
}
-#[allow(unused_macros)]
macro_rules! e {
($($(#[$attr:meta])* pub enum $i:ident { $($field:tt)* })*) => ($(
__item! {
@@ -138,7 +134,6 @@ macro_rules! e {
)*);
}
-#[allow(unused_macros)]
macro_rules! s_paren {
($($(#[$attr:meta])* pub struct $i:ident ( $($field:tt)* ); )* ) => ($(
__item! {
@@ -182,7 +177,6 @@ macro_rules! s_paren {
// 'f!' block
cfg_if! {
if #[cfg(libc_const_extern_fn)] {
- #[allow(unused_macros)]
macro_rules! f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@@ -198,7 +192,6 @@ cfg_if! {
)*)
}
- #[allow(unused_macros)]
macro_rules! safe_f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@@ -214,7 +207,6 @@ cfg_if! {
)*)
}
- #[allow(unused_macros)]
macro_rules! const_fn {
($($(#[$attr:meta])* $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@@ -231,7 +223,6 @@ cfg_if! {
}
} else {
- #[allow(unused_macros)]
macro_rules! f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@@ -247,7 +238,6 @@ cfg_if! {
)*)
}
- #[allow(unused_macros)]
macro_rules! safe_f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@@ -263,7 +253,6 @@ cfg_if! {
)*)
}
- #[allow(unused_macros)]
macro_rules! const_fn {
($($(#[$attr:meta])* $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
@@ -281,14 +270,12 @@ cfg_if! {
}
}
-#[allow(unused_macros)]
macro_rules! __item {
($i:item) => {
$i
};
}
-#[allow(unused_macros)]
macro_rules! align_const {
($($(#[$attr:meta])*
pub const $name:ident : $t1:ty
@@ -308,7 +295,6 @@ macro_rules! align_const {
}
// This macro is used to deprecate items that should be accessed via the mach2 crate
-#[allow(unused_macros)]
macro_rules! deprecated_mach {
(pub const $id:ident: $ty:ty = $expr:expr;) => {
#[deprecated(
@@ -342,7 +328,6 @@ macro_rules! deprecated_mach {
}
}
-#[allow(unused_macros)]
#[cfg(not(libc_ptr_addr_of))]
macro_rules! ptr_addr_of {
($place:expr) => {
@@ -350,7 +335,6 @@ macro_rules! ptr_addr_of {
};
}
-#[allow(unused_macros)]
#[cfg(libc_ptr_addr_of)]
macro_rules! ptr_addr_of {
($place:expr) => {
diff --git a/vendor/libc/src/unix/bsd/apple/b64/aarch64/align.rs b/vendor/libc/src/unix/bsd/apple/b64/aarch64/align.rs
index 131e15b69..29db97ec7 100644
--- a/vendor/libc/src/unix/bsd/apple/b64/aarch64/align.rs
+++ b/vendor/libc/src/unix/bsd/apple/b64/aarch64/align.rs
@@ -15,6 +15,7 @@ s! {
pub uc_link: *mut ::ucontext_t,
pub uc_mcsize: usize,
pub uc_mcontext: mcontext_t,
+ __mcontext_data: __darwin_mcontext64,
}
pub struct __darwin_mcontext64 {
diff --git a/vendor/libc/src/unix/bsd/apple/mod.rs b/vendor/libc/src/unix/bsd/apple/mod.rs
index bd69d8aaa..ed3028695 100644
--- a/vendor/libc/src/unix/bsd/apple/mod.rs
+++ b/vendor/libc/src/unix/bsd/apple/mod.rs
@@ -53,6 +53,8 @@ pub type host_info64_t = *mut integer_t;
pub type processor_flavor_t = ::c_int;
pub type thread_flavor_t = natural_t;
pub type thread_inspect_t = ::mach_port_t;
+pub type thread_act_t = ::mach_port_t;
+pub type thread_act_array_t = *mut ::thread_act_t;
pub type policy_t = ::c_int;
pub type mach_vm_address_t = u64;
pub type mach_vm_offset_t = u64;
@@ -64,6 +66,9 @@ pub type memory_object_offset_t = ::c_ulonglong;
pub type vm_inherit_t = ::c_uint;
pub type vm_prot_t = ::c_int;
+pub type ledger_t = ::mach_port_t;
+pub type ledger_array_t = *mut ::ledger_t;
+
pub type iconv_t = *mut ::c_void;
pub type processor_cpu_load_info_t = *mut processor_cpu_load_info;
@@ -114,6 +119,15 @@ pub type thread_throughput_qos_policy_t = *mut thread_throughput_qos_policy;
pub type pthread_introspection_hook_t =
extern "C" fn(event: ::c_uint, thread: ::pthread_t, addr: *mut ::c_void, size: ::size_t);
+pub type pthread_jit_write_callback_t = ::Option<extern "C" fn(ctx: *mut ::c_void) -> ::c_int>;
+
+pub type os_unfair_lock = os_unfair_lock_s;
+pub type os_unfair_lock_t = *mut os_unfair_lock;
+
+pub type os_log_t = *mut ::c_void;
+pub type os_log_type_t = u8;
+pub type os_signpost_id_t = u64;
+pub type os_signpost_type_t = u8;
pub type vm_statistics_t = *mut vm_statistics;
pub type vm_statistics_data_t = vm_statistics;
@@ -121,6 +135,7 @@ pub type vm_statistics64_t = *mut vm_statistics64;
pub type vm_statistics64_data_t = vm_statistics64;
pub type task_t = ::mach_port_t;
+pub type task_inspect_t = ::mach_port_t;
pub type sysdir_search_path_enumeration_state = ::c_uint;
@@ -131,6 +146,9 @@ pub type CCRNGStatus = ::CCCryptorStatus;
pub type copyfile_state_t = *mut ::c_void;
pub type copyfile_flags_t = u32;
+pub type attrgroup_t = u32;
+pub type vol_capabilities_set_t = [u32; 4];
+
deprecated_mach! {
pub type mach_timebase_info_data_t = mach_timebase_info;
}
@@ -672,6 +690,13 @@ s! {
pub s_addr: ::in_addr_t,
}
+ // net/ndrv.h
+ pub struct sockaddr_ndrv {
+ pub snd_len: ::c_uchar,
+ pub snd_family: ::c_uchar,
+ pub snd_name: [::c_uchar; 16] // IFNAMSIZ from if.h
+ }
+
// sys/socket.h
pub struct sa_endpoints_t {
@@ -968,6 +993,39 @@ s! {
pub uuid: ::uuid_t,
pub offset: u32,
}
+
+ pub struct attrlist {
+ pub bitmapcount: ::c_ushort,
+ pub reserved: u16,
+ pub commonattr: attrgroup_t,
+ pub volattr: attrgroup_t,
+ pub dirattr: attrgroup_t,
+ pub fileattr: attrgroup_t,
+ pub forkattr: attrgroup_t,
+ }
+
+ pub struct attrreference_t {
+ pub attr_dataoffset: i32,
+ pub attr_length: u32,
+ }
+
+ pub struct vol_capabilities_attr_t {
+ pub capabilities: vol_capabilities_set_t,
+ pub valid: vol_capabilities_set_t,
+ }
+
+ pub struct attribute_set_t {
+ pub commonattr: attrgroup_t,
+ pub volattr: attrgroup_t,
+ pub dirattr: attrgroup_t,
+ pub fileattr: attrgroup_t,
+ pub forkattr: attrgroup_t,
+ }
+
+ pub struct vol_attributes_attr_t {
+ pub validattr: attribute_set_t,
+ pub nativeattr: attribute_set_t,
+ }
}
s_no_extra_traits! {
@@ -1038,7 +1096,8 @@ s_no_extra_traits! {
pub f_fstypename: [::c_char; 16],
pub f_mntonname: [::c_char; 1024],
pub f_mntfromname: [::c_char; 1024],
- pub f_reserved: [u32; 8],
+ pub f_flags_ext: u32,
+ pub f_reserved: [u32; 7],
}
pub struct dirent {
@@ -1244,6 +1303,10 @@ s_no_extra_traits! {
pub l2p_contigbytes: ::off_t,
pub l2p_devoffset: ::off_t,
}
+
+ pub struct os_unfair_lock_s {
+ _os_unfair_lock_opaque: u32,
+ }
}
impl siginfo_t {
@@ -2525,6 +2588,27 @@ cfg_if! {
l2p_devoffset.hash(state);
}
}
+ impl PartialEq for os_unfair_lock {
+ fn eq(&self, other: &os_unfair_lock) -> bool {
+ self._os_unfair_lock_opaque == other._os_unfair_lock_opaque
+ }
+ }
+
+ impl Eq for os_unfair_lock {}
+
+ impl ::fmt::Debug for os_unfair_lock {
+ fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
+ f.debug_struct("os_unfair_lock")
+ .field("_os_unfair_lock_opaque", &self._os_unfair_lock_opaque)
+ .finish()
+ }
+ }
+
+ impl ::hash::Hash for os_unfair_lock {
+ fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
+ self._os_unfair_lock_opaque.hash(state);
+ }
+ }
}
}
@@ -2640,6 +2724,8 @@ pub const EOF: ::c_int = -1;
pub const SEEK_SET: ::c_int = 0;
pub const SEEK_CUR: ::c_int = 1;
pub const SEEK_END: ::c_int = 2;
+pub const SEEK_HOLE: ::c_int = 3;
+pub const SEEK_DATA: ::c_int = 4;
pub const _IOFBF: ::c_int = 0;
pub const _IONBF: ::c_int = 2;
pub const _IOLBF: ::c_int = 1;
@@ -2657,11 +2743,13 @@ pub const _PC_PIPE_BUF: ::c_int = 6;
pub const _PC_CHOWN_RESTRICTED: ::c_int = 7;
pub const _PC_NO_TRUNC: ::c_int = 8;
pub const _PC_VDISABLE: ::c_int = 9;
-pub const O_DSYNC: ::c_int = 0x400000;
-pub const O_NOCTTY: ::c_int = 0x20000;
-pub const O_CLOEXEC: ::c_int = 0x1000000;
-pub const O_DIRECTORY: ::c_int = 0x100000;
-pub const O_SYMLINK: ::c_int = 0x200000;
+pub const O_EVTONLY: ::c_int = 0x00008000;
+pub const O_NOCTTY: ::c_int = 0x00020000;
+pub const O_DIRECTORY: ::c_int = 0x00100000;
+pub const O_SYMLINK: ::c_int = 0x00200000;
+pub const O_DSYNC: ::c_int = 0x00400000;
+pub const O_CLOEXEC: ::c_int = 0x01000000;
+pub const O_NOFOLLOW_ANY: ::c_int = 0x20000000;
pub const S_IFIFO: mode_t = 4096;
pub const S_IFCHR: mode_t = 8192;
pub const S_IFBLK: mode_t = 24576;
@@ -3466,6 +3554,7 @@ pub const pseudo_AF_RTIP: ::c_int = 22;
pub const AF_IPX: ::c_int = 23;
pub const AF_SIP: ::c_int = 24;
pub const pseudo_AF_PIP: ::c_int = 25;
+pub const AF_NDRV: ::c_int = 27;
pub const AF_ISDN: ::c_int = 28;
pub const AF_E164: ::c_int = AF_ISDN;
pub const pseudo_AF_KEY: ::c_int = 29;
@@ -3508,6 +3597,7 @@ pub const PF_SIP: ::c_int = AF_SIP;
pub const PF_IPX: ::c_int = AF_IPX;
pub const PF_RTIP: ::c_int = pseudo_AF_RTIP;
pub const PF_PIP: ::c_int = pseudo_AF_PIP;
+pub const PF_NDRV: ::c_int = AF_NDRV;
pub const PF_ISDN: ::c_int = AF_ISDN;
pub const PF_KEY: ::c_int = pseudo_AF_KEY;
pub const PF_INET6: ::c_int = AF_INET6;
@@ -3552,6 +3642,7 @@ pub const IP_ADD_SOURCE_MEMBERSHIP: ::c_int = 70;
pub const IP_DROP_SOURCE_MEMBERSHIP: ::c_int = 71;
pub const IP_BLOCK_SOURCE: ::c_int = 72;
pub const IP_UNBLOCK_SOURCE: ::c_int = 73;
+pub const IPV6_BOUND_IF: ::c_int = 125;
pub const TCP_NOPUSH: ::c_int = 4;
pub const TCP_NOOPT: ::c_int = 8;
@@ -3779,6 +3870,11 @@ pub const _SC_TRACE_NAME_MAX: ::c_int = 128;
pub const _SC_TRACE_SYS_MAX: ::c_int = 129;
pub const _SC_TRACE_USER_EVENT_MAX: ::c_int = 130;
pub const _SC_PASS_MAX: ::c_int = 131;
+// `confstr` keys (only the values guaranteed by `man confstr`).
+pub const _CS_PATH: ::c_int = 1;
+pub const _CS_DARWIN_USER_DIR: ::c_int = 65536;
+pub const _CS_DARWIN_USER_TEMP_DIR: ::c_int = 65537;
+pub const _CS_DARWIN_USER_CACHE_DIR: ::c_int = 65538;
pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 1;
@@ -3800,6 +3896,20 @@ pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
__opaque: [0; __PTHREAD_RWLOCK_SIZE__],
};
+pub const OS_UNFAIR_LOCK_INIT: os_unfair_lock = os_unfair_lock {
+ _os_unfair_lock_opaque: 0,
+};
+
+pub const OS_LOG_TYPE_DEFAULT: ::os_log_type_t = 0x00;
+pub const OS_LOG_TYPE_INFO: ::os_log_type_t = 0x01;
+pub const OS_LOG_TYPE_DEBUG: ::os_log_type_t = 0x02;
+pub const OS_LOG_TYPE_ERROR: ::os_log_type_t = 0x10;
+pub const OS_LOG_TYPE_FAULT: ::os_log_type_t = 0x11;
+
+pub const OS_SIGNPOST_EVENT: ::os_signpost_type_t = 0x00;
+pub const OS_SIGNPOST_INTERVAL_BEGIN: ::os_signpost_type_t = 0x01;
+pub const OS_SIGNPOST_INTERVAL_END: ::os_signpost_type_t = 0x02;
+
pub const MINSIGSTKSZ: ::size_t = 32768;
pub const SIGSTKSZ: ::size_t = 131072;
@@ -4661,6 +4771,145 @@ pub const COPYFILE_CONTINUE: ::c_int = 0;
pub const COPYFILE_SKIP: ::c_int = 1;
pub const COPYFILE_QUIT: ::c_int = 2;
+// <sys/attr.h>
+pub const ATTR_BIT_MAP_COUNT: ::c_ushort = 5;
+pub const FSOPT_NOFOLLOW: u32 = 0x1;
+pub const FSOPT_NOFOLLOW_ANY: u32 = 0x800;
+pub const FSOPT_REPORT_FULLSIZE: u32 = 0x4;
+pub const FSOPT_PACK_INVAL_ATTRS: u32 = 0x8;
+pub const FSOPT_ATTR_CMN_EXTENDED: u32 = 0x20;
+pub const FSOPT_RETURN_REALDEV: u32 = 0x200;
+pub const ATTR_CMN_NAME: attrgroup_t = 0x00000001;
+pub const ATTR_CMN_DEVID: attrgroup_t = 0x00000002;
+pub const ATTR_CMN_FSID: attrgroup_t = 0x00000004;
+pub const ATTR_CMN_OBJTYPE: attrgroup_t = 0x00000008;
+pub const ATTR_CMN_OBJTAG: attrgroup_t = 0x00000010;
+pub const ATTR_CMN_OBJID: attrgroup_t = 0x00000020;
+pub const ATTR_CMN_OBJPERMANENTID: attrgroup_t = 0x00000040;
+pub const ATTR_CMN_PAROBJID: attrgroup_t = 0x00000080;
+pub const ATTR_CMN_SCRIPT: attrgroup_t = 0x00000100;
+pub const ATTR_CMN_CRTIME: attrgroup_t = 0x00000200;
+pub const ATTR_CMN_MODTIME: attrgroup_t = 0x00000400;
+pub const ATTR_CMN_CHGTIME: attrgroup_t = 0x00000800;
+pub const ATTR_CMN_ACCTIME: attrgroup_t = 0x00001000;
+pub const ATTR_CMN_BKUPTIME: attrgroup_t = 0x00002000;
+pub const ATTR_CMN_FNDRINFO: attrgroup_t = 0x00004000;
+pub const ATTR_CMN_OWNERID: attrgroup_t = 0x00008000;
+pub const ATTR_CMN_GRPID: attrgroup_t = 0x00010000;
+pub const ATTR_CMN_ACCESSMASK: attrgroup_t = 0x00020000;
+pub const ATTR_CMN_FLAGS: attrgroup_t = 0x00040000;
+pub const ATTR_CMN_GEN_COUNT: attrgroup_t = 0x00080000;
+pub const ATTR_CMN_DOCUMENT_ID: attrgroup_t = 0x00100000;
+pub const ATTR_CMN_USERACCESS: attrgroup_t = 0x00200000;
+pub const ATTR_CMN_EXTENDED_SECURITY: attrgroup_t = 0x00400000;
+pub const ATTR_CMN_UUID: attrgroup_t = 0x00800000;
+pub const ATTR_CMN_GRPUUID: attrgroup_t = 0x01000000;
+pub const ATTR_CMN_FILEID: attrgroup_t = 0x02000000;
+pub const ATTR_CMN_PARENTID: attrgroup_t = 0x04000000;
+pub const ATTR_CMN_FULLPATH: attrgroup_t = 0x08000000;
+pub const ATTR_CMN_ADDEDTIME: attrgroup_t = 0x10000000;
+pub const ATTR_CMN_DATA_PROTECT_FLAGS: attrgroup_t = 0x40000000;
+pub const ATTR_CMN_RETURNED_ATTRS: attrgroup_t = 0x80000000;
+pub const ATTR_VOL_FSTYPE: attrgroup_t = 0x00000001;
+pub const ATTR_VOL_SIGNATURE: attrgroup_t = 0x00000002;
+pub const ATTR_VOL_SIZE: attrgroup_t = 0x00000004;
+pub const ATTR_VOL_SPACEFREE: attrgroup_t = 0x00000008;
+pub const ATTR_VOL_SPACEAVAIL: attrgroup_t = 0x00000010;
+pub const ATTR_VOL_MINALLOCATION: attrgroup_t = 0x00000020;
+pub const ATTR_VOL_ALLOCATIONCLUMP: attrgroup_t = 0x00000040;
+pub const ATTR_VOL_IOBLOCKSIZE: attrgroup_t = 0x00000080;
+pub const ATTR_VOL_OBJCOUNT: attrgroup_t = 0x00000100;
+pub const ATTR_VOL_FILECOUNT: attrgroup_t = 0x00000200;
+pub const ATTR_VOL_DIRCOUNT: attrgroup_t = 0x00000400;
+pub const ATTR_VOL_MAXOBJCOUNT: attrgroup_t = 0x00000800;
+pub const ATTR_VOL_MOUNTPOINT: attrgroup_t = 0x00001000;
+pub const ATTR_VOL_NAME: attrgroup_t = 0x00002000;
+pub const ATTR_VOL_MOUNTFLAGS: attrgroup_t = 0x00004000;
+pub const ATTR_VOL_MOUNTEDDEVICE: attrgroup_t = 0x00008000;
+pub const ATTR_VOL_ENCODINGSUSED: attrgroup_t = 0x00010000;
+pub const ATTR_VOL_CAPABILITIES: attrgroup_t = 0x00020000;
+pub const ATTR_VOL_UUID: attrgroup_t = 0x00040000;
+pub const ATTR_VOL_SPACEUSED: attrgroup_t = 0x00800000;
+pub const ATTR_VOL_QUOTA_SIZE: attrgroup_t = 0x10000000;
+pub const ATTR_VOL_RESERVED_SIZE: attrgroup_t = 0x20000000;
+pub const ATTR_VOL_ATTRIBUTES: attrgroup_t = 0x40000000;
+pub const ATTR_VOL_INFO: attrgroup_t = 0x80000000;
+pub const ATTR_DIR_LINKCOUNT: attrgroup_t = 0x00000001;
+pub const ATTR_DIR_ENTRYCOUNT: attrgroup_t = 0x00000002;
+pub const ATTR_DIR_MOUNTSTATUS: attrgroup_t = 0x00000004;
+pub const ATTR_DIR_ALLOCSIZE: attrgroup_t = 0x00000008;
+pub const ATTR_DIR_IOBLOCKSIZE: attrgroup_t = 0x00000010;
+pub const ATTR_DIR_DATALENGTH: attrgroup_t = 0x00000020;
+pub const ATTR_FILE_LINKCOUNT: attrgroup_t = 0x00000001;
+pub const ATTR_FILE_TOTALSIZE: attrgroup_t = 0x00000002;
+pub const ATTR_FILE_ALLOCSIZE: attrgroup_t = 0x00000004;
+pub const ATTR_FILE_IOBLOCKSIZE: attrgroup_t = 0x00000008;
+pub const ATTR_FILE_DEVTYPE: attrgroup_t = 0x00000020;
+pub const ATTR_FILE_FORKCOUNT: attrgroup_t = 0x00000080;
+pub const ATTR_FILE_FORKLIST: attrgroup_t = 0x00000100;
+pub const ATTR_FILE_DATALENGTH: attrgroup_t = 0x00000200;
+pub const ATTR_FILE_DATAALLOCSIZE: attrgroup_t = 0x00000400;
+pub const ATTR_FILE_RSRCLENGTH: attrgroup_t = 0x00001000;
+pub const ATTR_FILE_RSRCALLOCSIZE: attrgroup_t = 0x00002000;
+pub const ATTR_CMNEXT_RELPATH: attrgroup_t = 0x00000004;
+pub const ATTR_CMNEXT_PRIVATESIZE: attrgroup_t = 0x00000008;
+pub const ATTR_CMNEXT_LINKID: attrgroup_t = 0x00000010;
+pub const ATTR_CMNEXT_NOFIRMLINKPATH: attrgroup_t = 0x00000020;
+pub const ATTR_CMNEXT_REALDEVID: attrgroup_t = 0x00000040;
+pub const ATTR_CMNEXT_REALFSID: attrgroup_t = 0x00000080;
+pub const ATTR_CMNEXT_CLONEID: attrgroup_t = 0x00000100;
+pub const ATTR_CMNEXT_EXT_FLAGS: attrgroup_t = 0x00000200;
+pub const ATTR_CMNEXT_RECURSIVE_GENCOUNT: attrgroup_t = 0x00000400;
+pub const DIR_MNTSTATUS_MNTPOINT: u32 = 0x1;
+pub const VOL_CAPABILITIES_FORMAT: usize = 0;
+pub const VOL_CAPABILITIES_INTERFACES: usize = 1;
+pub const VOL_CAP_FMT_PERSISTENTOBJECTIDS: attrgroup_t = 0x00000001;
+pub const VOL_CAP_FMT_SYMBOLICLINKS: attrgroup_t = 0x00000002;
+pub const VOL_CAP_FMT_HARDLINKS: attrgroup_t = 0x00000004;
+pub const VOL_CAP_FMT_JOURNAL: attrgroup_t = 0x00000008;
+pub const VOL_CAP_FMT_JOURNAL_ACTIVE: attrgroup_t = 0x00000010;
+pub const VOL_CAP_FMT_NO_ROOT_TIMES: attrgroup_t = 0x00000020;
+pub const VOL_CAP_FMT_SPARSE_FILES: attrgroup_t = 0x00000040;
+pub const VOL_CAP_FMT_ZERO_RUNS: attrgroup_t = 0x00000080;
+pub const VOL_CAP_FMT_CASE_SENSITIVE: attrgroup_t = 0x00000100;
+pub const VOL_CAP_FMT_CASE_PRESERVING: attrgroup_t = 0x00000200;
+pub const VOL_CAP_FMT_FAST_STATFS: attrgroup_t = 0x00000400;
+pub const VOL_CAP_FMT_2TB_FILESIZE: attrgroup_t = 0x00000800;
+pub const VOL_CAP_FMT_OPENDENYMODES: attrgroup_t = 0x00001000;
+pub const VOL_CAP_FMT_HIDDEN_FILES: attrgroup_t = 0x00002000;
+pub const VOL_CAP_FMT_PATH_FROM_ID: attrgroup_t = 0x00004000;
+pub const VOL_CAP_FMT_NO_VOLUME_SIZES: attrgroup_t = 0x00008000;
+pub const VOL_CAP_FMT_DECMPFS_COMPRESSION: attrgroup_t = 0x00010000;
+pub const VOL_CAP_FMT_64BIT_OBJECT_IDS: attrgroup_t = 0x00020000;
+pub const VOL_CAP_FMT_DIR_HARDLINKS: attrgroup_t = 0x00040000;
+pub const VOL_CAP_FMT_DOCUMENT_ID: attrgroup_t = 0x00080000;
+pub const VOL_CAP_FMT_WRITE_GENERATION_COUNT: attrgroup_t = 0x00100000;
+pub const VOL_CAP_FMT_NO_IMMUTABLE_FILES: attrgroup_t = 0x00200000;
+pub const VOL_CAP_FMT_NO_PERMISSIONS: attrgroup_t = 0x00400000;
+pub const VOL_CAP_FMT_SHARED_SPACE: attrgroup_t = 0x00800000;
+pub const VOL_CAP_FMT_VOL_GROUPS: attrgroup_t = 0x01000000;
+pub const VOL_CAP_FMT_SEALED: attrgroup_t = 0x02000000;
+pub const VOL_CAP_INT_SEARCHFS: attrgroup_t = 0x00000001;
+pub const VOL_CAP_INT_ATTRLIST: attrgroup_t = 0x00000002;
+pub const VOL_CAP_INT_NFSEXPORT: attrgroup_t = 0x00000004;
+pub const VOL_CAP_INT_READDIRATTR: attrgroup_t = 0x00000008;
+pub const VOL_CAP_INT_EXCHANGEDATA: attrgroup_t = 0x00000010;
+pub const VOL_CAP_INT_COPYFILE: attrgroup_t = 0x00000020;
+pub const VOL_CAP_INT_ALLOCATE: attrgroup_t = 0x00000040;
+pub const VOL_CAP_INT_VOL_RENAME: attrgroup_t = 0x00000080;
+pub const VOL_CAP_INT_ADVLOCK: attrgroup_t = 0x00000100;
+pub const VOL_CAP_INT_FLOCK: attrgroup_t = 0x00000200;
+pub const VOL_CAP_INT_EXTENDED_SECURITY: attrgroup_t = 0x00000400;
+pub const VOL_CAP_INT_USERACCESS: attrgroup_t = 0x00000800;
+pub const VOL_CAP_INT_MANLOCK: attrgroup_t = 0x00001000;
+pub const VOL_CAP_INT_NAMEDSTREAMS: attrgroup_t = 0x00002000;
+pub const VOL_CAP_INT_EXTENDED_ATTR: attrgroup_t = 0x00004000;
+pub const VOL_CAP_INT_CLONE: attrgroup_t = 0x00010000;
+pub const VOL_CAP_INT_SNAPSHOT: attrgroup_t = 0x00020000;
+pub const VOL_CAP_INT_RENAME_SWAP: attrgroup_t = 0x00040000;
+pub const VOL_CAP_INT_RENAME_EXCL: attrgroup_t = 0x00080000;
+pub const VOL_CAP_INT_RENAME_OPENFAIL: attrgroup_t = 0x00100000;
+
cfg_if! {
if #[cfg(libc_const_extern_fn)] {
const fn __DARWIN_ALIGN32(p: usize) -> usize {
@@ -4672,6 +4921,16 @@ cfg_if! {
const __DARWIN_ALIGNBYTES32: usize = ::mem::size_of::<u32>() - 1;
p + __DARWIN_ALIGNBYTES32 & !__DARWIN_ALIGNBYTES32
}
+ } else {
+ fn __DARWIN_ALIGN32(p: usize) -> usize {
+ let __DARWIN_ALIGNBYTES32: usize = ::mem::size_of::<u32>() - 1;
+ p + __DARWIN_ALIGNBYTES32 & !__DARWIN_ALIGNBYTES32
+ }
+ }
+}
+
+cfg_if! {
+ if #[cfg(libc_const_size_of)] {
pub const THREAD_EXTENDED_POLICY_COUNT: mach_msg_type_number_t =
(::mem::size_of::<thread_extended_policy_data_t>() / ::mem::size_of::<integer_t>())
as mach_msg_type_number_t;
@@ -4712,10 +4971,6 @@ cfg_if! {
(::mem::size_of::<vm_statistics64_data_t>() / ::mem::size_of::<integer_t>())
as mach_msg_type_number_t;
} else {
- fn __DARWIN_ALIGN32(p: usize) -> usize {
- let __DARWIN_ALIGNBYTES32: usize = ::mem::size_of::<u32>() - 1;
- p + __DARWIN_ALIGNBYTES32 & !__DARWIN_ALIGNBYTES32
- }
pub const THREAD_EXTENDED_POLICY_COUNT: mach_msg_type_number_t = 1;
pub const THREAD_TIME_CONSTRAINT_POLICY_COUNT: mach_msg_type_number_t = 4;
pub const THREAD_PRECEDENCE_POLICY_COUNT: mach_msg_type_number_t = 1;
@@ -4768,6 +5023,18 @@ f! {
pub {const} fn VM_MAKE_TAG(id: u8) -> u32 {
(id as u32) << 24u32
}
+
+ pub fn major(dev: dev_t) -> i32 {
+ (dev >> 24) & 0xff
+ }
+
+ pub fn minor(dev: dev_t) -> i32 {
+ dev & 0xffffff
+ }
+
+ pub fn makedev(major: i32, minor: i32) -> dev_t {
+ (major << 24) | minor
+ }
}
safe_f! {
@@ -4823,6 +5090,11 @@ extern "C" {
pub fn fchflags(fd: ::c_int, flags: ::c_uint) -> ::c_int;
pub fn clock_getres(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
pub fn clock_gettime(clk_id: ::clockid_t, tp: *mut ::timespec) -> ::c_int;
+ #[cfg_attr(
+ all(target_os = "macos", target_arch = "x86"),
+ link_name = "confstr$UNIX2003"
+ )]
+ pub fn confstr(name: ::c_int, buf: *mut ::c_char, len: ::size_t) -> ::size_t;
pub fn lio_listio(
mode: ::c_int,
aiocb_list: *const *mut aiocb,
@@ -4983,8 +5255,34 @@ extern "C" {
) -> *mut ::c_void;
pub fn pthread_jit_write_protect_np(enabled: ::c_int);
pub fn pthread_jit_write_protect_supported_np() -> ::c_int;
+ // An array of pthread_jit_write_with_callback_np must declare
+ // the list of callbacks e.g.
+ // #[link_section = "__DATA_CONST,__pth_jit_func"]
+ // static callbacks: [libc::pthread_jit_write_callback_t; 2] = [native_jit_write_cb,
+ // std::mem::transmute::<libc::pthread_jit_write_callback_t>(std::ptr::null())];
+ // (a handy PTHREAD_JIT_WRITE_CALLBACK_NP macro for other languages).
+ pub fn pthread_jit_write_with_callback_np(
+ callback: ::pthread_jit_write_callback_t,
+ ctx: *mut ::c_void,
+ ) -> ::c_int;
+ pub fn pthread_jit_write_freeze_callbacks_np();
pub fn pthread_cpu_number_np(cpu_number_out: *mut ::size_t) -> ::c_int;
+ pub fn os_unfair_lock_lock(lock: os_unfair_lock_t);
+ pub fn os_unfair_lock_trylock(lock: os_unfair_lock_t) -> bool;
+ pub fn os_unfair_lock_unlock(lock: os_unfair_lock_t);
+ pub fn os_unfair_lock_assert_owner(lock: os_unfair_lock_t);
+ pub fn os_unfair_lock_assert_not_owner(lock: os_unfair_lock_t);
+
+ pub fn os_log_create(subsystem: *const ::c_char, category: *const ::c_char) -> ::os_log_t;
+ pub fn os_log_type_enabled(oslog: ::os_log_t, tpe: ::os_log_type_t) -> bool;
+ pub fn os_signpost_id_make_with_pointer(
+ log: ::os_log_t,
+ ptr: *const ::c_void,
+ ) -> ::os_signpost_id_t;
+ pub fn os_signpost_id_generate(log: ::os_log_t) -> ::os_signpost_id_t;
+ pub fn os_signpost_enabled(log: ::os_log_t) -> bool;
+
pub fn thread_policy_set(
thread: thread_t,
flavor: thread_policy_flavor_t,
@@ -5004,6 +5302,8 @@ extern "C" {
thread_info_out: thread_info_t,
thread_info_outCnt: *mut mach_msg_type_number_t,
) -> kern_return_t;
+ #[cfg_attr(doc, doc(alias = "__errno_location"))]
+ #[cfg_attr(doc, doc(alias = "errno"))]
pub fn __error() -> *mut ::c_int;
pub fn backtrace(buf: *mut *mut ::c_void, sz: ::c_int) -> ::c_int;
pub fn backtrace_symbols(addrs: *const *mut ::c_void, sz: ::c_int) -> *mut *mut ::c_char;
@@ -5480,6 +5780,19 @@ extern "C" {
task_info_out: task_info_t,
task_info_count: *mut mach_msg_type_number_t,
) -> ::kern_return_t;
+ pub fn task_create(
+ target_task: ::task_t,
+ ledgers: ::ledger_array_t,
+ ledgersCnt: ::mach_msg_type_number_t,
+ inherit_memory: ::boolean_t,
+ child_task: *mut ::task_t,
+ ) -> ::kern_return_t;
+ pub fn task_terminate(target_task: ::task_t) -> ::kern_return_t;
+ pub fn task_threads(
+ target_task: ::task_inspect_t,
+ act_list: *mut ::thread_act_array_t,
+ act_listCnt: *mut ::mach_msg_type_number_t,
+ ) -> ::kern_return_t;
pub fn host_statistics(
host_priv: host_t,
flavor: host_flavor_t,
@@ -5498,6 +5811,61 @@ extern "C" {
) -> ::sysdir_search_path_enumeration_state;
pub static vm_page_size: vm_size_t;
+
+ pub fn getattrlist(
+ path: *const ::c_char,
+ attrList: *mut ::c_void,
+ attrBuf: *mut ::c_void,
+ attrBufSize: ::size_t,
+ options: u32,
+ ) -> ::c_int;
+ pub fn fgetattrlist(
+ fd: ::c_int,
+ attrList: *mut ::c_void,
+ attrBuf: *mut ::c_void,
+ attrBufSize: ::size_t,
+ options: u32,
+ ) -> ::c_int;
+ pub fn getattrlistat(
+ fd: ::c_int,
+ path: *const ::c_char,
+ attrList: *mut ::c_void,
+ attrBuf: *mut ::c_void,
+ attrBufSize: ::size_t,
+ options: ::c_ulong,
+ ) -> ::c_int;
+ pub fn setattrlist(
+ path: *const ::c_char,
+ attrList: *mut ::c_void,
+ attrBuf: *mut ::c_void,
+ attrBufSize: ::size_t,
+ options: u32,
+ ) -> ::c_int;
+ pub fn fsetattrlist(
+ fd: ::c_int,
+ attrList: *mut ::c_void,
+ attrBuf: *mut ::c_void,
+ attrBufSize: ::size_t,
+ options: u32,
+ ) -> ::c_int;
+ pub fn setattrlistat(
+ dir_fd: ::c_int,
+ path: *const ::c_char,
+ attrList: *mut ::c_void,
+ attrBuf: *mut ::c_void,
+ attrBufSize: ::size_t,
+ options: u32,
+ ) -> ::c_int;
+ pub fn getattrlistbulk(
+ dirfd: ::c_int,
+ attrList: *mut ::c_void,
+ attrBuf: *mut ::c_void,
+ attrBufSize: ::size_t,
+ options: u64,
+ ) -> ::c_int;
+
+ pub fn malloc_size(ptr: *const ::c_void) -> ::size_t;
+ pub fn malloc_good_size(size: ::size_t) -> ::size_t;
}
pub unsafe fn mach_task_self() -> ::mach_port_t {
@@ -5508,17 +5876,31 @@ cfg_if! {
if #[cfg(target_os = "macos")] {
extern "C" {
pub fn clock_settime(clock_id: ::clockid_t, tp: *const ::timespec) -> ::c_int;
+ }
+ }
+}
+cfg_if! {
+ if #[cfg(any(target_os = "macos", target_os = "ios"))] {
+ extern "C" {
pub fn memmem(
haystack: *const ::c_void,
haystacklen: ::size_t,
needle: *const ::c_void,
needlelen: ::size_t,
) -> *mut ::c_void;
+ pub fn task_set_info(target_task: ::task_t,
+ flavor: ::task_flavor_t,
+ task_info_in: ::task_info_t,
+ task_info_inCnt: ::mach_msg_type_number_t
+ ) -> ::kern_return_t;
}
}
}
-#[link(name = "iconv")]
+// These require a dependency on `libiconv`, and including this when built as
+// part of `std` means every Rust program gets it. Ideally we would have a link
+// modifier to only include these if they are used, but we do not.
+#[cfg_attr(not(feature = "rustc-dep-of-std"), link(name = "iconv"))]
extern "C" {
pub fn iconv_open(tocode: *const ::c_char, fromcode: *const ::c_char) -> iconv_t;
pub fn iconv(
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs
index d56362816..418ac3dc8 100644
--- a/vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs
+++ b/vendor/libc/src/unix/bsd/freebsdlike/dragonfly/mod.rs
@@ -34,6 +34,17 @@ pub type pthread_spinlock_t = ::uintptr_t;
pub type segsz_t = usize;
+pub type vm_prot_t = u8;
+pub type vm_maptype_t = u8;
+pub type vm_inherit_t = i8;
+pub type vm_subsys_t = ::c_int;
+pub type vm_eflags_t = ::c_uint;
+
+pub type vm_map_t = *mut __c_anonymous_vm_map;
+pub type vm_map_entry_t = *mut vm_map_entry;
+
+pub type pmap = __c_anonymous_pmap;
+
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum sem {}
impl ::Copy for sem {}
@@ -336,6 +347,50 @@ s! {
kp_spare: [::c_int; 2],
}
+ pub struct __c_anonymous_vm_map {
+ _priv: [::uintptr_t; 36],
+ }
+
+ pub struct vm_map_entry {
+ _priv: [::uintptr_t; 15],
+ pub eflags: ::vm_eflags_t,
+ pub maptype: ::vm_maptype_t,
+ pub protection: ::vm_prot_t,
+ pub max_protection: ::vm_prot_t,
+ pub inheritance: ::vm_inherit_t,
+ pub wired_count: ::c_int,
+ pub id: ::vm_subsys_t,
+ }
+
+ pub struct __c_anonymous_pmap {
+ _priv1: [::uintptr_t; 32],
+ _priv2: [::uintptr_t; 32],
+ _priv3: [::uintptr_t; 32],
+ _priv4: [::uintptr_t; 32],
+ _priv5: [::uintptr_t; 8],
+ }
+
+ pub struct vmspace {
+ vm_map: __c_anonymous_vm_map,
+ vm_pmap: __c_anonymous_pmap,
+ pub vm_flags: ::c_int,
+ pub vm_shm: *mut ::c_char,
+ pub vm_rssize: ::segsz_t,
+ pub vm_swrss: ::segsz_t,
+ pub vm_tsize: ::segsz_t,
+ pub vm_dsize: ::segsz_t,
+ pub vm_ssize: ::segsz_t,
+ pub vm_taddr: *mut ::c_char,
+ pub vm_daddr: *mut ::c_char,
+ pub vm_maxsaddr: *mut ::c_char,
+ pub vm_minsaddr: *mut ::c_char,
+ _unused1: ::c_int,
+ _unused2: ::c_int,
+ pub vm_pagesupply: ::c_int,
+ pub vm_holdcnt: ::c_uint,
+ pub vm_refcnt: ::c_uint,
+ }
+
pub struct cpuctl_msr_args_t {
pub msr: ::c_int,
pub data: u64,
@@ -1011,6 +1066,8 @@ pub const CPUCTL_MSRSBIT: ::c_int = 0xc0106305;
pub const CPUCTL_MSRCBIT: ::c_int = 0xc0106306;
pub const CPUCTL_CPUID_COUNT: ::c_int = 0xc0106307;
+pub const CPU_SETSIZE: ::size_t = ::mem::size_of::<::cpumask_t>() * 8;
+
pub const EVFILT_READ: i16 = -1;
pub const EVFILT_WRITE: i16 = -2;
pub const EVFILT_AIO: i16 = -3;
@@ -1516,6 +1573,15 @@ safe_f! {
pub {const} fn WIFSIGNALED(status: ::c_int) -> bool {
(status & 0o177) != 0o177 && (status & 0o177) != 0
}
+
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+ let major = major as ::dev_t;
+ let minor = minor as ::dev_t;
+ let mut dev = 0;
+ dev |= major << 8;
+ dev |= minor;
+ dev
+ }
}
extern "C" {
@@ -1613,6 +1679,20 @@ extern "C" {
pub fn freezero(ptr: *mut ::c_void, size: ::size_t);
}
+#[link(name = "kvm")]
+extern "C" {
+ pub fn kvm_vm_map_entry_first(
+ kvm: *mut ::kvm_t,
+ map: vm_map_t,
+ entry: vm_map_entry_t,
+ ) -> vm_map_entry_t;
+ pub fn kvm_vm_map_entry_next(
+ kvm: *mut ::kvm_t,
+ map: vm_map_entry_t,
+ entry: vm_map_entry_t,
+ ) -> vm_map_entry_t;
+}
+
cfg_if! {
if #[cfg(libc_thread_local)] {
mod errno;
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
index 1af555fa3..aaa043584 100644
--- a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
+++ b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
@@ -434,6 +434,14 @@ pub const MINCORE_SUPER: ::c_int = 0x20;
/// max length of devicename
pub const SPECNAMELEN: ::c_int = 63;
+safe_f! {
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+ let major = major as ::dev_t;
+ let minor = minor as ::dev_t;
+ (major << 8) | minor
+ }
+}
+
extern "C" {
// Return type ::c_int was removed in FreeBSD 12
pub fn setgrent() -> ::c_int;
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
index 848db3399..e7f8ad780 100644
--- a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
+++ b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
@@ -449,6 +449,19 @@ pub const KI_NSPARE_PTR: usize = 6;
pub const MINCORE_SUPER: ::c_int = 0x20;
+safe_f! {
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+ let major = major as ::dev_t;
+ let minor = minor as ::dev_t;
+ let mut dev = 0;
+ dev |= ((major & 0xffffff00) as dev_t) << 32;
+ dev |= ((major & 0x000000ff) as dev_t) << 8;
+ dev |= ((minor & 0x0000ff00) as dev_t) << 24;
+ dev |= ((minor & 0xffff00ff) as dev_t) << 0;
+ dev
+ }
+}
+
extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
index a929f9d29..bcd09006b 100644
--- a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
+++ b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
@@ -468,6 +468,19 @@ pub const DOMAINSET_POLICY_INTERLEAVE: ::c_int = 4;
pub const MINCORE_SUPER: ::c_int = 0x20;
+safe_f! {
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+ let major = major as ::dev_t;
+ let minor = minor as ::dev_t;
+ let mut dev = 0;
+ dev |= ((major & 0xffffff00) as dev_t) << 32;
+ dev |= ((major & 0x000000ff) as dev_t) << 8;
+ dev |= ((minor & 0x0000ff00) as dev_t) << 24;
+ dev |= ((minor & 0xffff00ff) as dev_t) << 0;
+ dev
+ }
+}
+
extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
index c655d555d..9da669604 100644
--- a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
+++ b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
@@ -468,6 +468,19 @@ pub const DOMAINSET_POLICY_INTERLEAVE: ::c_int = 4;
pub const MINCORE_SUPER: ::c_int = 0x60;
+safe_f! {
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+ let major = major as ::dev_t;
+ let minor = minor as ::dev_t;
+ let mut dev = 0;
+ dev |= ((major & 0xffffff00) as dev_t) << 32;
+ dev |= ((major & 0x000000ff) as dev_t) << 8;
+ dev |= ((minor & 0x0000ff00) as dev_t) << 24;
+ dev |= ((minor & 0xffff00ff) as dev_t) << 0;
+ dev
+ }
+}
+
extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs
index 8d27d8860..08fd5a52d 100644
--- a/vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs
+++ b/vendor/libc/src/unix/bsd/freebsdlike/freebsd/mod.rs
@@ -44,9 +44,7 @@ pub type fhandle_t = fhandle;
pub type au_id_t = ::uid_t;
pub type au_asid_t = ::pid_t;
-// It's an alias over "struct __kvm_t". However, its fields aren't supposed to be used directly,
-// making the type definition system dependent. Better not bind it exactly.
-pub type kvm_t = ::c_void;
+pub type cpusetid_t = ::c_int;
#[cfg_attr(feature = "extra_traits", derive(Debug, Hash, PartialEq, Eq))]
#[repr(u32)]
@@ -994,6 +992,12 @@ s! {
pub _flags: u32,
pub _clockid: u32,
}
+
+ pub struct shm_largepage_conf {
+ pub psind: ::c_int,
+ pub alloc_policy: ::c_int,
+ __pad: [::c_int; 10],
+ }
}
s_no_extra_traits! {
@@ -1894,6 +1898,9 @@ pub const LIO_READV: ::c_int = 6;
pub const DEVSTAT_N_TRANS_FLAGS: ::c_int = 4;
pub const DEVSTAT_NAME_LEN: ::c_int = 16;
+// sys/cpuset.h
+pub const CPU_SETSIZE: ::c_int = 256;
+
pub const SIGEV_THREAD_ID: ::c_int = 4;
pub const EXTATTR_NAMESPACE_EMPTY: ::c_int = 0;
@@ -2253,6 +2260,7 @@ pub const FIONWRITE: ::c_ulong = 0x40046677;
pub const FIONSPACE: ::c_ulong = 0x40046676;
pub const FIOSEEKDATA: ::c_ulong = 0xc0086661;
pub const FIOSEEKHOLE: ::c_ulong = 0xc0086662;
+pub const FIOSSHMLPGCNF: ::c_ulong = 0x80306664;
pub const JAIL_API_VERSION: u32 = 2;
pub const JAIL_CREATE: ::c_int = 0x01;
@@ -2512,6 +2520,8 @@ pub const IFCAP_TOE4: ::c_int = 0x04000;
pub const IFCAP_TOE6: ::c_int = 0x08000;
/// interface hw can filter vlan tag
pub const IFCAP_VLAN_HWFILTER: ::c_int = 0x10000;
+/// can do SIOCGIFCAPNV/SIOCSIFCAPNV
+pub const IFCAP_NV: ::c_int = 0x20000;
/// can do IFCAP_TSO on VLANs
pub const IFCAP_VLAN_HWTSO: ::c_int = 0x40000;
/// the runtime link state is dynamic
@@ -2547,7 +2557,7 @@ pub const IFCAP_TSO: ::c_int = IFCAP_TSO4 | IFCAP_TSO6;
pub const IFCAP_WOL: ::c_int = IFCAP_WOL_UCAST | IFCAP_WOL_MCAST | IFCAP_WOL_MAGIC;
pub const IFCAP_TOE: ::c_int = IFCAP_TOE4 | IFCAP_TOE6;
pub const IFCAP_TXTLS: ::c_int = IFCAP_TXTLS4 | IFCAP_TXTLS6;
-pub const IFCAP_CANTCHANGE: ::c_int = IFCAP_NETMAP;
+pub const IFCAP_CANTCHANGE: ::c_int = IFCAP_NETMAP | IFCAP_NV;
pub const IFQ_MAXLEN: ::c_int = 50;
pub const IFNET_SLOWHZ: ::c_int = 1;
@@ -3231,30 +3241,67 @@ pub const KKST_STATE_RUNNING: ::c_int = 2;
pub const PRI_MIN: ::c_int = 0;
pub const PRI_MAX: ::c_int = 255;
pub const PRI_MIN_ITHD: ::c_int = PRI_MIN;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PRI_MAX_ITHD: ::c_int = PRI_MIN_REALTIME - 1;
pub const PI_REALTIME: ::c_int = PRI_MIN_ITHD + 0;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const PI_AV: ::c_int = PRI_MIN_ITHD + 4;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const PI_NET: ::c_int = PRI_MIN_ITHD + 8;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const PI_DISK: ::c_int = PRI_MIN_ITHD + 12;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const PI_TTY: ::c_int = PRI_MIN_ITHD + 16;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const PI_DULL: ::c_int = PRI_MIN_ITHD + 20;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const PI_SOFT: ::c_int = PRI_MIN_ITHD + 24;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const PRI_MIN_REALTIME: ::c_int = 48;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PRI_MAX_REALTIME: ::c_int = PRI_MIN_KERN - 1;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const PRI_MIN_KERN: ::c_int = 80;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PRI_MAX_KERN: ::c_int = PRI_MIN_TIMESHARE - 1;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PSWP: ::c_int = PRI_MIN_KERN + 0;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PVM: ::c_int = PRI_MIN_KERN + 4;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PINOD: ::c_int = PRI_MIN_KERN + 8;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PRIBIO: ::c_int = PRI_MIN_KERN + 12;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PVFS: ::c_int = PRI_MIN_KERN + 16;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PZERO: ::c_int = PRI_MIN_KERN + 20;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PSOCK: ::c_int = PRI_MIN_KERN + 24;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PWAIT: ::c_int = PRI_MIN_KERN + 28;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PLOCK: ::c_int = PRI_MIN_KERN + 32;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PPAUSE: ::c_int = PRI_MIN_KERN + 36;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const PRI_MIN_TIMESHARE: ::c_int = 120;
pub const PRI_MAX_TIMESHARE: ::c_int = PRI_MIN_IDLE - 1;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
+#[allow(deprecated)]
pub const PUSER: ::c_int = PRI_MIN_TIMESHARE;
pub const PRI_MIN_IDLE: ::c_int = 224;
pub const PRI_MAX_IDLE: ::c_int = PRI_MAX;
@@ -3352,24 +3399,32 @@ pub const TDF_CANSWAP: ::c_int = 0x00000040;
pub const TDF_KTH_SUSP: ::c_int = 0x00000100;
pub const TDF_ALLPROCSUSP: ::c_int = 0x00000200;
pub const TDF_BOUNDARY: ::c_int = 0x00000400;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const TDF_ASTPENDING: ::c_int = 0x00000800;
pub const TDF_SBDRY: ::c_int = 0x00002000;
pub const TDF_UPIBLOCKED: ::c_int = 0x00004000;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const TDF_NEEDSUSPCHK: ::c_int = 0x00008000;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const TDF_NEEDRESCHED: ::c_int = 0x00010000;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const TDF_NEEDSIGCHK: ::c_int = 0x00020000;
pub const TDF_NOLOAD: ::c_int = 0x00040000;
pub const TDF_SERESTART: ::c_int = 0x00080000;
pub const TDF_THRWAKEUP: ::c_int = 0x00100000;
pub const TDF_SEINTR: ::c_int = 0x00200000;
pub const TDF_SWAPINREQ: ::c_int = 0x00400000;
+#[deprecated(since = "0.2.133", note = "Removed in FreeBSD 14")]
pub const TDF_UNUSED23: ::c_int = 0x00800000;
pub const TDF_SCHED0: ::c_int = 0x01000000;
pub const TDF_SCHED1: ::c_int = 0x02000000;
pub const TDF_SCHED2: ::c_int = 0x04000000;
pub const TDF_SCHED3: ::c_int = 0x08000000;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const TDF_ALRMPEND: ::c_int = 0x10000000;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const TDF_PROFPEND: ::c_int = 0x20000000;
+#[deprecated(since = "0.2.133", note = "Not stable across OS versions")]
pub const TDF_MACPEND: ::c_int = 0x40000000;
pub const TDB_SUSPEND: ::c_int = 0x00000001;
@@ -3661,6 +3716,19 @@ pub const CPUCLOCK_WHICH_TID: ::c_int = 1;
pub const MFD_CLOEXEC: ::c_uint = 0x00000001;
pub const MFD_ALLOW_SEALING: ::c_uint = 0x00000002;
pub const MFD_HUGETLB: ::c_uint = 0x00000004;
+pub const MFD_HUGE_MASK: ::c_uint = 0xFC000000;
+pub const MFD_HUGE_64KB: ::c_uint = 16 << 26;
+pub const MFD_HUGE_512KB: ::c_uint = 19 << 26;
+pub const MFD_HUGE_1MB: ::c_uint = 20 << 26;
+pub const MFD_HUGE_2MB: ::c_uint = 21 << 26;
+pub const MFD_HUGE_8MB: ::c_uint = 23 << 26;
+pub const MFD_HUGE_16MB: ::c_uint = 24 << 26;
+pub const MFD_HUGE_32MB: ::c_uint = 25 << 26;
+pub const MFD_HUGE_256MB: ::c_uint = 28 << 26;
+pub const MFD_HUGE_512MB: ::c_uint = 29 << 26;
+pub const MFD_HUGE_1GB: ::c_uint = 30 << 26;
+pub const MFD_HUGE_2GB: ::c_uint = 31 << 26;
+pub const MFD_HUGE_16GB: ::c_uint = 34 << 26;
pub const SHM_LARGEPAGE_ALLOC_DEFAULT: ::c_int = 0;
pub const SHM_LARGEPAGE_ALLOC_NOWAIT: ::c_int = 1;
@@ -3695,6 +3763,16 @@ pub const UMTX_OP_ROBUST_LISTS: ::c_int = 26;
pub const UMTX_ABSTIME: u32 = 1;
+pub const CPU_LEVEL_ROOT: ::c_int = 1;
+pub const CPU_LEVEL_CPUSET: ::c_int = 2;
+pub const CPU_LEVEL_WHICH: ::c_int = 3;
+
+pub const CPU_WHICH_TID: ::c_int = 1;
+pub const CPU_WHICH_PID: ::c_int = 2;
+pub const CPU_WHICH_CPUSET: ::c_int = 3;
+pub const CPU_WHICH_IRQ: ::c_int = 4;
+pub const CPU_WHICH_JAIL: ::c_int = 5;
+
const_fn! {
{const} fn _ALIGN(p: usize) -> usize {
(p + _ALIGNBYTES) & !_ALIGNBYTES
@@ -3772,21 +3850,21 @@ f! {
}
pub fn CPU_SET(cpu: usize, cpuset: &mut cpuset_t) -> () {
- let bitset_bits = ::mem::size_of::<::c_long>();
+ let bitset_bits = 8 * ::mem::size_of::<::c_long>();
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
cpuset.__bits[idx] |= 1 << offset;
()
}
pub fn CPU_CLR(cpu: usize, cpuset: &mut cpuset_t) -> () {
- let bitset_bits = ::mem::size_of::<::c_long>();
+ let bitset_bits = 8 * ::mem::size_of::<::c_long>();
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
cpuset.__bits[idx] &= !(1 << offset);
()
}
pub fn CPU_ISSET(cpu: usize, cpuset: &cpuset_t) -> bool {
- let bitset_bits = ::mem::size_of::<::c_long>();
+ let bitset_bits = 8 * ::mem::size_of::<::c_long>();
let (idx, offset) = (cpu / bitset_bits, cpu % bitset_bits);
0 != cpuset.__bits[idx] & (1 << offset)
}
@@ -3794,9 +3872,9 @@ f! {
pub fn CPU_COUNT(cpuset: &cpuset_t) -> ::c_int {
let mut s: u32 = 0;
let cpuset_size = ::mem::size_of::<cpuset_t>();
- let bitset_bits = ::mem::size_of::<::c_long>();
+ let bitset_size = ::mem::size_of::<::c_long>();
- for i in cpuset.__bits[..(cpuset_size / bitset_bits)].iter() {
+ for i in cpuset.__bits[..(cpuset_size / bitset_size)].iter() {
s += i.count_ones();
};
s as ::c_int
@@ -3839,6 +3917,8 @@ cfg_if! {
}
extern "C" {
+ #[cfg_attr(doc, doc(alias = "__errno_location"))]
+ #[cfg_attr(doc, doc(alias = "errno"))]
pub fn __error() -> *mut ::c_int;
pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
@@ -3974,6 +4054,7 @@ extern "C" {
infop: *mut ::siginfo_t,
options: ::c_int,
) -> ::c_int;
+ pub fn ptsname_r(fd: ::c_int, buf: *mut ::c_char, buflen: ::size_t) -> ::c_int;
pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t;
pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;
@@ -4182,6 +4263,14 @@ extern "C" {
setsize: ::size_t,
mask: *const cpuset_t,
) -> ::c_int;
+ pub fn cpuset(setid: *mut ::cpusetid_t) -> ::c_int;
+ pub fn cpuset_getid(
+ level: cpulevel_t,
+ which: cpuwhich_t,
+ id: ::id_t,
+ setid: *mut ::cpusetid_t,
+ ) -> ::c_int;
+ pub fn cpuset_setid(which: cpuwhich_t, id: ::id_t, setid: ::cpusetid_t) -> ::c_int;
pub fn cap_enter() -> ::c_int;
pub fn cap_getmode(modep: *mut ::c_uint) -> ::c_int;
pub fn __cap_rights_init(version: ::c_int, rights: *mut cap_rights_t, ...)
@@ -4272,71 +4361,39 @@ extern "C" {
#[link(name = "kvm")]
extern "C" {
- pub fn kvm_open(
- execfile: *const ::c_char,
- corefile: *const ::c_char,
- swapfile: *const ::c_char,
- flags: ::c_int,
- errstr: *const ::c_char,
- ) -> *mut kvm_t;
- pub fn kvm_close(kd: *mut kvm_t) -> ::c_int;
- pub fn kvm_dpcpu_setcpu(kd: *mut kvm_t, cpu: ::c_uint) -> ::c_int;
- pub fn kvm_getargv(kd: *mut kvm_t, p: *const kinfo_proc, nchr: ::c_int) -> *mut *mut ::c_char;
- pub fn kvm_getcptime(kd: *mut kvm_t, cp_time: *mut ::c_long) -> ::c_int;
- pub fn kvm_getenvv(kd: *mut kvm_t, p: *const kinfo_proc, nchr: ::c_int) -> *mut *mut ::c_char;
- pub fn kvm_geterr(kd: *mut kvm_t) -> *mut ::c_char;
- pub fn kvm_getloadavg(kd: *mut kvm_t, loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;
- pub fn kvm_getmaxcpu(kd: *mut kvm_t) -> ::c_int;
- pub fn kvm_getncpus(kd: *mut kvm_t) -> ::c_int;
- pub fn kvm_getpcpu(kd: *mut kvm_t, cpu: ::c_int) -> *mut ::c_void;
- pub fn kvm_counter_u64_fetch(kd: *mut kvm_t, base: ::c_ulong) -> u64;
- pub fn kvm_getprocs(
- kd: *mut kvm_t,
- op: ::c_int,
- arg: ::c_int,
- cnt: *mut ::c_int,
- ) -> *mut kinfo_proc;
+ pub fn kvm_dpcpu_setcpu(kd: *mut ::kvm_t, cpu: ::c_uint) -> ::c_int;
+ pub fn kvm_getargv(kd: *mut ::kvm_t, p: *const kinfo_proc, nchr: ::c_int)
+ -> *mut *mut ::c_char;
+ pub fn kvm_getcptime(kd: *mut ::kvm_t, cp_time: *mut ::c_long) -> ::c_int;
+ pub fn kvm_getenvv(kd: *mut ::kvm_t, p: *const kinfo_proc, nchr: ::c_int)
+ -> *mut *mut ::c_char;
+ pub fn kvm_geterr(kd: *mut ::kvm_t) -> *mut ::c_char;
+ pub fn kvm_getmaxcpu(kd: *mut ::kvm_t) -> ::c_int;
+ pub fn kvm_getncpus(kd: *mut ::kvm_t) -> ::c_int;
+ pub fn kvm_getpcpu(kd: *mut ::kvm_t, cpu: ::c_int) -> *mut ::c_void;
+ pub fn kvm_counter_u64_fetch(kd: *mut ::kvm_t, base: ::c_ulong) -> u64;
pub fn kvm_getswapinfo(
- kd: *mut kvm_t,
+ kd: *mut ::kvm_t,
info: *mut kvm_swap,
maxswap: ::c_int,
flags: ::c_int,
) -> ::c_int;
- pub fn kvm_native(kd: *mut kvm_t) -> ::c_int;
- pub fn kvm_nlist(kd: *mut kvm_t, nl: *mut nlist) -> ::c_int;
- pub fn kvm_nlist2(kd: *mut kvm_t, nl: *mut kvm_nlist) -> ::c_int;
- pub fn kvm_openfiles(
- execfile: *const ::c_char,
- corefile: *const ::c_char,
- swapfile: *const ::c_char,
- flags: ::c_int,
- errbuf: *mut ::c_char,
- ) -> *mut kvm_t;
- pub fn kvm_read(
- kd: *mut kvm_t,
- addr: ::c_ulong,
- buf: *mut ::c_void,
- nbytes: ::size_t,
- ) -> ::ssize_t;
+ pub fn kvm_native(kd: *mut ::kvm_t) -> ::c_int;
+ pub fn kvm_nlist(kd: *mut ::kvm_t, nl: *mut nlist) -> ::c_int;
+ pub fn kvm_nlist2(kd: *mut ::kvm_t, nl: *mut kvm_nlist) -> ::c_int;
pub fn kvm_read_zpcpu(
- kd: *mut kvm_t,
+ kd: *mut ::kvm_t,
base: ::c_ulong,
buf: *mut ::c_void,
size: ::size_t,
cpu: ::c_int,
) -> ::ssize_t;
pub fn kvm_read2(
- kd: *mut kvm_t,
+ kd: *mut ::kvm_t,
addr: kvaddr_t,
buf: *mut ::c_void,
nbytes: ::size_t,
) -> ::ssize_t;
- pub fn kvm_write(
- kd: *mut kvm_t,
- addr: ::c_ulong,
- buf: *const ::c_void,
- nbytes: ::size_t,
- ) -> ::ssize_t;
}
#[link(name = "util")]
@@ -4486,10 +4543,10 @@ extern "C" {
#[link(name = "devstat")]
extern "C" {
- pub fn devstat_getnumdevs(kd: *mut kvm_t) -> ::c_int;
- pub fn devstat_getgeneration(kd: *mut kvm_t) -> ::c_long;
- pub fn devstat_getversion(kd: *mut kvm_t) -> ::c_int;
- pub fn devstat_checkversion(kd: *mut kvm_t) -> ::c_int;
+ pub fn devstat_getnumdevs(kd: *mut ::kvm_t) -> ::c_int;
+ pub fn devstat_getgeneration(kd: *mut ::kvm_t) -> ::c_long;
+ pub fn devstat_getversion(kd: *mut ::kvm_t) -> ::c_int;
+ pub fn devstat_checkversion(kd: *mut ::kvm_t) -> ::c_int;
pub fn devstat_selectdevs(
dev_select: *mut *mut device_selection,
num_selected: *mut ::c_int,
diff --git a/vendor/libc/src/unix/bsd/freebsdlike/mod.rs b/vendor/libc/src/unix/bsd/freebsdlike/mod.rs
index b9d29d825..db21597d9 100644
--- a/vendor/libc/src/unix/bsd/freebsdlike/mod.rs
+++ b/vendor/libc/src/unix/bsd/freebsdlike/mod.rs
@@ -35,6 +35,10 @@ pub type Elf64_Xword = u64;
pub type iconv_t = *mut ::c_void;
+// It's an alias over "struct __kvm_t". However, its fields aren't supposed to be used directly,
+// making the type definition system dependent. Better not bind it exactly.
+pub type kvm_t = ::c_void;
+
cfg_if! {
if #[cfg(target_pointer_width = "64")] {
type Elf_Addr = Elf64_Addr;
@@ -372,6 +376,10 @@ s! {
pub seq: ::c_ushort,
pub key: ::key_t,
}
+
+ pub struct eui64 {
+ pub octet: [u8; EUI64_LEN],
+ }
}
s_no_extra_traits! {
@@ -1325,6 +1333,8 @@ pub const ONLRET: ::tcflag_t = 0x40;
pub const CMGROUP_MAX: usize = 16;
+pub const EUI64_LEN: usize = 8;
+
// https://github.com/freebsd/freebsd/blob/master/sys/net/bpf.h
pub const BPF_ALIGNMENT: usize = SIZEOF_LONG;
@@ -1716,6 +1726,13 @@ extern "C" {
pub fn memset_s(s: *mut ::c_void, smax: ::size_t, c: ::c_int, n: ::size_t) -> ::c_int;
pub fn gethostid() -> ::c_long;
pub fn sethostid(hostid: ::c_long);
+
+ pub fn eui64_aton(a: *const ::c_char, e: *mut eui64) -> ::c_int;
+ pub fn eui64_ntoa(id: *const eui64, a: *mut ::c_char, len: ::size_t) -> ::c_int;
+ pub fn eui64_ntohost(hostname: *mut ::c_char, len: ::size_t, id: *const eui64) -> ::c_int;
+ pub fn eui64_hostton(hostname: *const ::c_char, id: *mut eui64) -> ::c_int;
+
+ pub fn eaccess(path: *const ::c_char, mode: ::c_int) -> ::c_int;
}
#[link(name = "rt")]
@@ -1790,6 +1807,44 @@ extern "C" {
) -> ::c_int;
}
+#[link(name = "kvm")]
+extern "C" {
+ pub fn kvm_open(
+ execfile: *const ::c_char,
+ corefile: *const ::c_char,
+ swapfile: *const ::c_char,
+ flags: ::c_int,
+ errstr: *const ::c_char,
+ ) -> *mut ::kvm_t;
+ pub fn kvm_close(kd: *mut ::kvm_t) -> ::c_int;
+ pub fn kvm_getprocs(
+ kd: *mut ::kvm_t,
+ op: ::c_int,
+ arg: ::c_int,
+ cnt: *mut ::c_int,
+ ) -> *mut ::kinfo_proc;
+ pub fn kvm_getloadavg(kd: *mut kvm_t, loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;
+ pub fn kvm_openfiles(
+ execfile: *const ::c_char,
+ corefile: *const ::c_char,
+ swapfile: *const ::c_char,
+ flags: ::c_int,
+ errbuf: *mut ::c_char,
+ ) -> *mut ::kvm_t;
+ pub fn kvm_read(
+ kd: *mut ::kvm_t,
+ addr: ::c_ulong,
+ buf: *mut ::c_void,
+ nbytes: ::size_t,
+ ) -> ::ssize_t;
+ pub fn kvm_write(
+ kd: *mut ::kvm_t,
+ addr: ::c_ulong,
+ buf: *const ::c_void,
+ nbytes: ::size_t,
+ ) -> ::ssize_t;
+}
+
cfg_if! {
if #[cfg(target_os = "freebsd")] {
mod freebsd;
diff --git a/vendor/libc/src/unix/bsd/mod.rs b/vendor/libc/src/unix/bsd/mod.rs
index 8ebca0930..20e203bde 100644
--- a/vendor/libc/src/unix/bsd/mod.rs
+++ b/vendor/libc/src/unix/bsd/mod.rs
@@ -449,6 +449,12 @@ pub const TCP_MAXSEG: ::c_int = 2;
pub const PIPE_BUF: usize = 512;
+// si_code values for SIGBUS signal
+pub const BUS_ADRALN: ::c_int = 1;
+pub const BUS_ADRERR: ::c_int = 2;
+pub const BUS_OBJERR: ::c_int = 3;
+
+// si_code values for SIGCHLD signal
pub const CLD_EXITED: ::c_int = 1;
pub const CLD_KILLED: ::c_int = 2;
pub const CLD_DUMPED: ::c_int = 3;
diff --git a/vendor/libc/src/unix/bsd/netbsdlike/mod.rs b/vendor/libc/src/unix/bsd/netbsdlike/mod.rs
index d7d40bd97..a7f35ef85 100644
--- a/vendor/libc/src/unix/bsd/netbsdlike/mod.rs
+++ b/vendor/libc/src/unix/bsd/netbsdlike/mod.rs
@@ -639,17 +639,6 @@ pub const TIOCM_DSR: ::c_int = 0o0400;
pub const TIOCM_CD: ::c_int = TIOCM_CAR;
pub const TIOCM_RI: ::c_int = TIOCM_RNG;
-// Flags for chflags(2)
-pub const UF_SETTABLE: ::c_ulong = 0x0000ffff;
-pub const UF_NODUMP: ::c_ulong = 0x00000001;
-pub const UF_IMMUTABLE: ::c_ulong = 0x00000002;
-pub const UF_APPEND: ::c_ulong = 0x00000004;
-pub const UF_OPAQUE: ::c_ulong = 0x00000008;
-pub const SF_SETTABLE: ::c_ulong = 0xffff0000;
-pub const SF_ARCHIVED: ::c_ulong = 0x00010000;
-pub const SF_IMMUTABLE: ::c_ulong = 0x00020000;
-pub const SF_APPEND: ::c_ulong = 0x00040000;
-
pub const TIMER_ABSTIME: ::c_int = 1;
#[link(name = "util")]
diff --git a/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs b/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs
index 0afff1cd3..bfe2de083 100644
--- a/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs
+++ b/vendor/libc/src/unix/bsd/netbsdlike/netbsd/mod.rs
@@ -487,6 +487,134 @@ s! {
af_arg: [[::c_char; 10]; 24],
}
+ pub struct ki_sigset_t {
+ pub __bits: [u32; 4],
+ }
+
+ pub struct kinfo_proc2 {
+ pub p_forw: u64,
+ pub p_back: u64,
+ pub p_paddr: u64,
+ pub p_addr: u64,
+ pub p_fd: u64,
+ pub p_cwdi: u64,
+ pub p_stats: u64,
+ pub p_limit: u64,
+ pub p_vmspace: u64,
+ pub p_sigacts: u64,
+ pub p_sess: u64,
+ pub p_tsess: u64,
+ pub p_ru: u64,
+ pub p_eflag: i32,
+ pub p_exitsig: i32,
+ pub p_flag: i32,
+ pub p_pid: i32,
+ pub p_ppid: i32,
+ pub p_sid: i32,
+ pub p__pgid: i32,
+ pub p_tpgid: i32,
+ pub p_uid: u32,
+ pub p_ruid: u32,
+ pub p_gid: u32,
+ pub p_rgid: u32,
+ pub p_groups: [u32; KI_NGROUPS as usize],
+ pub p_ngroups: i16,
+ pub p_jobc: i16,
+ pub p_tdev: u32,
+ pub p_estcpu: u32,
+ pub p_rtime_sec: u32,
+ pub p_rtime_usec: u32,
+ pub p_cpticks: i32,
+ pub p_pctcpu: u32,
+ pub p_swtime: u32,
+ pub p_slptime: u32,
+ pub p_schedflags: i32,
+ pub p_uticks: u64,
+ pub p_sticks: u64,
+ pub p_iticks: u64,
+ pub p_tracep: u64,
+ pub p_traceflag: i32,
+ pub p_holdcnt: i32,
+ pub p_siglist: ki_sigset_t,
+ pub p_sigmask: ki_sigset_t,
+ pub p_sigignore: ki_sigset_t,
+ pub p_sigcatch: ki_sigset_t,
+ pub p_stat: i8,
+ pub p_priority: u8,
+ pub p_usrpri: u8,
+ pub p_nice: u8,
+ pub p_xstat: u16,
+ pub p_acflag: u16,
+ pub p_comm: [::c_char; KI_MAXCOMLEN as usize],
+ pub p_wmesg: [::c_char; KI_WMESGLEN as usize],
+ pub p_wchan: u64,
+ pub p_login: [::c_char; KI_MAXLOGNAME as usize],
+ pub p_vm_rssize: i32,
+ pub p_vm_tsize: i32,
+ pub p_vm_dsize: i32,
+ pub p_vm_ssize: i32,
+ pub p_uvalid: i64,
+ pub p_ustart_sec: u32,
+ pub p_ustart_usec: u32,
+ pub p_uutime_sec: u32,
+ pub p_uutime_usec: u32,
+ pub p_ustime_sec: u32,
+ pub p_ustime_usec: u32,
+ pub p_uru_maxrss: u64,
+ pub p_uru_ixrss: u64,
+ pub p_uru_idrss: u64,
+ pub p_uru_isrss: u64,
+ pub p_uru_minflt: u64,
+ pub p_uru_majflt: u64,
+ pub p_uru_nswap: u64,
+ pub p_uru_inblock: u64,
+ pub p_uru_oublock: u64,
+ pub p_uru_msgsnd: u64,
+ pub p_uru_msgrcv: u64,
+ pub p_uru_nsignals: u64,
+ pub p_uru_nvcsw: u64,
+ pub p_uru_nivcsw: u64,
+ pub p_uctime_sec: u32,
+ pub p_uctime_usec: u32,
+ pub p_cpuid: u64,
+ pub p_realflag: u64,
+ pub p_nlwps: u64,
+ pub p_nrlwps: u64,
+ pub p_realstat: u64,
+ pub p_svuid: u32,
+ pub p_svgid: u32,
+ pub p_ename: [::c_char; KI_MAXEMULLEN as usize],
+ pub p_vm_vsize: i64,
+ pub p_vm_msize: i64,
+ }
+
+ pub struct kinfo_lwp {
+ pub l_forw: u64,
+ pub l_back: u64,
+ pub l_laddr: u64,
+ pub l_addr: u64,
+ pub l_lid: i32,
+ pub l_flag: i32,
+ pub l_swtime: u32,
+ pub l_slptime: u32,
+ pub l_schedflags: i32,
+ pub l_holdcnt: i32,
+ pub l_priority: u8,
+ pub l_usrpri: u8,
+ pub l_stat: i8,
+ l_pad1: i8,
+ l_pad2: i32,
+ pub l_wmesg: [::c_char; KI_WMESGLEN as usize],
+ pub l_wchan: u64,
+ pub l_cpuid: u64,
+ pub l_rtime_sec: u32,
+ pub l_rtime_usec: u32,
+ pub l_cpticks: u32,
+ pub l_pctcpu: u32,
+ pub l_pid: u32,
+ pub l_name: [::c_char; KI_LNAMELEN as usize],
+ }
+
pub struct kinfo_vmentry {
pub kve_start: u64,
pub kve_end: u64,
@@ -1440,10 +1568,7 @@ pub const IPPROTO_VRRP: ::c_int = 112;
/// Common Address Resolution Protocol
pub const IPPROTO_CARP: ::c_int = 112;
/// L2TPv3
-// TEMP: Disabled for now; this constant was added to NetBSD on 2017-02-16,
-// but isn't yet supported by the NetBSD rumprun kernel image used for
-// libc testing.
-//pub const IPPROTO_L2TP: ::c_int = 115;
+pub const IPPROTO_L2TP: ::c_int = 115;
/// SCTP
pub const IPPROTO_SCTP: ::c_int = 132;
/// PFSYNC
@@ -2103,9 +2228,18 @@ pub const POSIX_SPAWN_SETSIGMASK: ::c_int = 0x20;
pub const POSIX_SPAWN_RETURNERROR: ::c_int = 0x40;
// Flags for chflags(2)
-pub const SF_SNAPSHOT: ::c_ulong = 0x00200000;
+pub const SF_APPEND: ::c_ulong = 0x00040000;
+pub const SF_ARCHIVED: ::c_ulong = 0x00010000;
+pub const SF_IMMUTABLE: ::c_ulong = 0x00020000;
pub const SF_LOG: ::c_ulong = 0x00400000;
+pub const SF_SETTABLE: ::c_ulong = 0xffff0000;
pub const SF_SNAPINVAL: ::c_ulong = 0x00800000;
+pub const SF_SNAPSHOT: ::c_ulong = 0x00200000;
+pub const UF_APPEND: ::c_ulong = 0x00000004;
+pub const UF_IMMUTABLE: ::c_ulong = 0x00000002;
+pub const UF_NODUMP: ::c_ulong = 0x00000001;
+pub const UF_OPAQUE: ::c_ulong = 0x00000008;
+pub const UF_SETTABLE: ::c_ulong = 0x0000ffff;
// sys/sysctl.h
pub const KVME_PROT_READ: ::c_int = 0x00000001;
@@ -2121,6 +2255,49 @@ pub const KVME_FLAG_GROWS_DOWN: ::c_int = 0x000000020;
pub const NGROUPS_MAX: ::c_int = 16;
+pub const KI_NGROUPS: ::c_int = 16;
+pub const KI_MAXCOMLEN: ::c_int = 24;
+pub const KI_WMESGLEN: ::c_int = 8;
+pub const KI_MAXLOGNAME: ::c_int = 24;
+pub const KI_MAXEMULLEN: ::c_int = 16;
+pub const KI_LNAMELEN: ::c_int = 20;
+
+// sys/lwp.h
+pub const LSIDL: ::c_int = 1;
+pub const LSRUN: ::c_int = 2;
+pub const LSSLEEP: ::c_int = 3;
+pub const LSSTOP: ::c_int = 4;
+pub const LSZOMB: ::c_int = 5;
+pub const LSONPROC: ::c_int = 7;
+pub const LSSUSPENDED: ::c_int = 8;
+
+pub const _REG_RDI: ::c_int = 0;
+pub const _REG_RSI: ::c_int = 1;
+pub const _REG_RDX: ::c_int = 2;
+pub const _REG_RCX: ::c_int = 3;
+pub const _REG_R8: ::c_int = 4;
+pub const _REG_R9: ::c_int = 5;
+pub const _REG_R10: ::c_int = 6;
+pub const _REG_R11: ::c_int = 7;
+pub const _REG_R12: ::c_int = 8;
+pub const _REG_R13: ::c_int = 9;
+pub const _REG_R14: ::c_int = 10;
+pub const _REG_R15: ::c_int = 11;
+pub const _REG_RBP: ::c_int = 12;
+pub const _REG_RBX: ::c_int = 13;
+pub const _REG_RAX: ::c_int = 14;
+pub const _REG_GS: ::c_int = 15;
+pub const _REG_FS: ::c_int = 16;
+pub const _REG_ES: ::c_int = 17;
+pub const _REG_DS: ::c_int = 18;
+pub const _REG_TRAPNO: ::c_int = 19;
+pub const _REG_ERR: ::c_int = 20;
+pub const _REG_RIP: ::c_int = 21;
+pub const _REG_CS: ::c_int = 22;
+pub const _REG_RFLAGS: ::c_int = 23;
+pub const _REG_RSP: ::c_int = 24;
+pub const _REG_SS: ::c_int = 25;
+
const_fn! {
{const} fn _ALIGN(p: usize) -> usize {
(p + _ALIGNBYTES) & !_ALIGNBYTES
@@ -2201,6 +2378,16 @@ safe_f! {
pub {const} fn WIFCONTINUED(status: ::c_int) -> bool {
status == 0xffff
}
+
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+ let major = major as ::dev_t;
+ let minor = minor as ::dev_t;
+ let mut dev = 0;
+ dev |= (major << 8) & 0x000ff00;
+ dev |= (minor << 12) & 0xfff00000;
+ dev |= minor & 0xff;
+ dev
+ }
}
extern "C" {
diff --git a/vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs b/vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs
index 199473dd6..506306e9f 100644
--- a/vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs
+++ b/vendor/libc/src/unix/bsd/netbsdlike/openbsd/mod.rs
@@ -1628,6 +1628,21 @@ pub const EPROC_SLEADER: i32 = 0x02; // session leader
pub const EPROC_UNVEIL: i32 = 0x04; // has unveil settings
pub const EPROC_LKUNVEIL: i32 = 0x08; // unveil is locked
+// Flags for chflags(2)
+pub const UF_SETTABLE: ::c_uint = 0x0000ffff;
+pub const UF_NODUMP: ::c_uint = 0x00000001;
+pub const UF_IMMUTABLE: ::c_uint = 0x00000002;
+pub const UF_APPEND: ::c_uint = 0x00000004;
+pub const UF_OPAQUE: ::c_uint = 0x00000008;
+pub const SF_SETTABLE: ::c_uint = 0xffff0000;
+pub const SF_ARCHIVED: ::c_uint = 0x00010000;
+pub const SF_IMMUTABLE: ::c_uint = 0x00020000;
+pub const SF_APPEND: ::c_uint = 0x00040000;
+
+pub const MNT_WAIT: ::c_int = 1;
+pub const MNT_NOWAIT: ::c_int = 2;
+pub const MNT_LAZY: ::c_int = 3;
+
const_fn! {
{const} fn _ALIGN(p: usize) -> usize {
(p + _ALIGNBYTES) & !_ALIGNBYTES
@@ -1684,6 +1699,16 @@ safe_f! {
pub {const} fn WIFCONTINUED(status: ::c_int) -> bool {
(status & 0o177777) == 0o177777
}
+
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+ let major = major as ::dev_t;
+ let minor = minor as ::dev_t;
+ let mut dev = 0;
+ dev |= (major & 0xff) << 8;
+ dev |= minor & 0xff;
+ dev |= (minor & 0xffff00) << 8;
+ dev
+ }
}
extern "C" {
@@ -1859,6 +1884,8 @@ cfg_if! {
// these functions use statfs which uses the union mount_info:
pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;
pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;
+ pub fn getmntinfo(mntbufp: *mut *mut ::statfs, flags: ::c_int) -> ::c_int;
+ pub fn getfsstat(buf: *mut statfs, bufsize: ::size_t, flags: ::c_int) -> ::c_int;
}
}
}
diff --git a/vendor/libc/src/unix/haiku/mod.rs b/vendor/libc/src/unix/haiku/mod.rs
index ab1df724c..bb2e0351b 100644
--- a/vendor/libc/src/unix/haiku/mod.rs
+++ b/vendor/libc/src/unix/haiku/mod.rs
@@ -52,6 +52,9 @@ pub type Elf64_Xword = u64;
pub type ENTRY = entry;
pub type ACTION = ::c_int;
+pub type posix_spawnattr_t = *mut ::c_void;
+pub type posix_spawn_file_actions_t = *mut ::c_void;
+
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum timezone {}
impl ::Copy for timezone {}
@@ -1051,6 +1054,7 @@ pub const LOCK_EX: ::c_int = 0x02;
pub const LOCK_NB: ::c_int = 0x04;
pub const LOCK_UN: ::c_int = 0x08;
+pub const MINSIGSTKSZ: ::size_t = 8192;
pub const SIGSTKSZ: ::size_t = 16384;
pub const IOV_MAX: ::c_int = 1024;
@@ -1067,6 +1071,9 @@ pub const SA_NOMASK: ::c_int = SA_NODEFER;
pub const SA_STACK: ::c_int = SA_ONSTACK;
pub const SA_ONESHOT: ::c_int = SA_RESETHAND;
+pub const SS_ONSTACK: ::c_int = 0x1;
+pub const SS_DISABLE: ::c_int = 0x2;
+
pub const FD_SETSIZE: usize = 1024;
pub const RTLD_LOCAL: ::c_int = 0x0;
@@ -1225,6 +1232,8 @@ pub const SO_PEERCRED: ::c_int = 0x4000000b;
pub const SCM_RIGHTS: ::c_int = 0x01;
+pub const SOMAXCONN: ::c_int = 32;
+
pub const NI_MAXHOST: ::size_t = 1025;
pub const WNOHANG: ::c_int = 0x01;
@@ -1234,6 +1243,12 @@ pub const WEXITED: ::c_int = 0x08;
pub const WSTOPPED: ::c_int = 0x10;
pub const WNOWAIT: ::c_int = 0x20;
+// si_code values for SIGBUS signal
+pub const BUS_ADRALN: ::c_int = 40;
+pub const BUS_ADRERR: ::c_int = 41;
+pub const BUS_OBJERR: ::c_int = 42;
+
+// si_code values for SIGCHLD signal
pub const CLD_EXITED: ::c_int = 60;
pub const CLD_KILLED: ::c_int = 61;
pub const CLD_DUMPED: ::c_int = 62;
@@ -1432,6 +1447,13 @@ pub const LOG_SERIAL: ::c_int = 16 << 12;
pub const LOG_PERROR: ::c_int = 32 << 12;
pub const LOG_NOWAIT: ::c_int = 64 << 12;
+// spawn.h
+pub const POSIX_SPAWN_RESETIDS: ::c_int = 0x01;
+pub const POSIX_SPAWN_SETPGROUP: ::c_int = 0x02;
+pub const POSIX_SPAWN_SETSIGDEF: ::c_int = 0x10;
+pub const POSIX_SPAWN_SETSIGMASK: ::c_int = 0x20;
+pub const POSIX_SPAWN_SETSID: ::c_int = 0x40;
+
const_fn! {
{const} fn CMSG_ALIGN(len: usize) -> usize {
len + ::mem::size_of::<usize>() - 1 & !(::mem::size_of::<usize>() - 1)
@@ -1768,8 +1790,6 @@ extern "C" {
pub fn endgrent();
pub fn getgrent() -> *mut ::group;
pub fn setgrent();
- pub fn setreuid(ruid: ::uid_t, euid: ::uid_t) -> ::c_int;
- pub fn setregid(rgid: ::gid_t, egid: ::gid_t) -> ::c_int;
pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;
pub fn pthread_atfork(
prepare: ::Option<unsafe extern "C" fn()>,
@@ -1884,6 +1904,74 @@ extern "C" {
pub fn brk(addr: *mut ::c_void) -> ::c_int;
pub fn sbrk(increment: ::intptr_t) -> *mut ::c_void;
+
+ pub fn posix_spawn(
+ pid: *mut ::pid_t,
+ path: *const ::c_char,
+ file_actions: *const ::posix_spawn_file_actions_t,
+ attrp: *const ::posix_spawnattr_t,
+ argv: *const *mut ::c_char,
+ envp: *const *mut ::c_char,
+ ) -> ::c_int;
+ pub fn posix_spawnp(
+ pid: *mut ::pid_t,
+ file: *const ::c_char,
+ file_actions: *const ::posix_spawn_file_actions_t,
+ attrp: *const ::posix_spawnattr_t,
+ argv: *const *mut ::c_char,
+ envp: *const *mut ::c_char,
+ ) -> ::c_int;
+
+ pub fn posix_spawn_file_actions_init(file_actions: *mut posix_spawn_file_actions_t) -> ::c_int;
+ pub fn posix_spawn_file_actions_destroy(
+ file_actions: *mut posix_spawn_file_actions_t,
+ ) -> ::c_int;
+ pub fn posix_spawn_file_actions_addopen(
+ file_actions: *mut posix_spawn_file_actions_t,
+ fildes: ::c_int,
+ path: *const ::c_char,
+ oflag: ::c_int,
+ mode: ::mode_t,
+ ) -> ::c_int;
+ pub fn posix_spawn_file_actions_addclose(
+ file_actions: *mut posix_spawn_file_actions_t,
+ fildes: ::c_int,
+ ) -> ::c_int;
+ pub fn posix_spawn_file_actions_adddup2(
+ file_actions: *mut posix_spawn_file_actions_t,
+ fildes: ::c_int,
+ newfildes: ::c_int,
+ ) -> ::c_int;
+
+ pub fn posix_spawnattr_init(attr: *mut posix_spawnattr_t) -> ::c_int;
+ pub fn posix_spawnattr_destroy(attr: *mut posix_spawnattr_t) -> ::c_int;
+ pub fn posix_spawnattr_getflags(
+ attr: *const posix_spawnattr_t,
+ _flags: *mut ::c_short,
+ ) -> ::c_int;
+ pub fn posix_spawnattr_setflags(attr: *mut posix_spawnattr_t, flags: ::c_short) -> ::c_int;
+ pub fn posix_spawnattr_getpgroup(
+ attr: *const posix_spawnattr_t,
+ _pgroup: *mut ::pid_t,
+ ) -> ::c_int;
+ pub fn posix_spawnattr_setpgroup(attr: *mut posix_spawnattr_t, pgroup: ::pid_t) -> ::c_int;
+ pub fn posix_spawnattr_getsigdefault(
+ attr: *const posix_spawnattr_t,
+ sigdefault: *mut ::sigset_t,
+ ) -> ::c_int;
+ pub fn posix_spawnattr_setsigdefault(
+ attr: *mut posix_spawnattr_t,
+ sigdefault: *const ::sigset_t,
+ ) -> ::c_int;
+ pub fn posix_spawnattr_getsigmask(
+ attr: *const posix_spawnattr_t,
+ _sigmask: *mut ::sigset_t,
+ ) -> ::c_int;
+ pub fn posix_spawnattr_setsigmask(
+ attr: *mut posix_spawnattr_t,
+ sigmask: *const ::sigset_t,
+ ) -> ::c_int;
+
}
#[link(name = "bsd")]
diff --git a/vendor/libc/src/unix/linux_like/android/b64/mod.rs b/vendor/libc/src/unix/linux_like/android/b64/mod.rs
index 0995c5412..67d0dacf1 100644
--- a/vendor/libc/src/unix/linux_like/android/b64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/android/b64/mod.rs
@@ -346,6 +346,9 @@ cfg_if! {
} else if #[cfg(target_arch = "aarch64")] {
mod aarch64;
pub use self::aarch64::*;
+ } else if #[cfg(target_arch = "riscv64")] {
+ mod riscv64;
+ pub use self::riscv64::*;
} else {
// Unknown target_arch
}
diff --git a/vendor/libc/src/unix/linux_like/android/b64/riscv64/align.rs b/vendor/libc/src/unix/linux_like/android/b64/riscv64/align.rs
new file mode 100644
index 000000000..8e949963a
--- /dev/null
+++ b/vendor/libc/src/unix/linux_like/android/b64/riscv64/align.rs
@@ -0,0 +1,7 @@
+s_no_extra_traits! {
+ #[allow(missing_debug_implementations)]
+ #[repr(align(16))]
+ pub struct max_align_t {
+ priv_: [f32; 8]
+ }
+}
diff --git a/vendor/libc/src/unix/linux_like/android/b64/riscv64/mod.rs b/vendor/libc/src/unix/linux_like/android/b64/riscv64/mod.rs
new file mode 100644
index 000000000..2421792cf
--- /dev/null
+++ b/vendor/libc/src/unix/linux_like/android/b64/riscv64/mod.rs
@@ -0,0 +1,342 @@
+pub type c_char = i8;
+pub type wchar_t = u32;
+pub type greg_t = i64;
+pub type __u64 = ::c_ulonglong;
+
+s! {
+ pub struct stat {
+ pub st_dev: ::dev_t,
+ pub st_ino: ::ino_t,
+ pub st_mode: ::c_uint,
+ pub st_nlink: ::c_uint,
+ pub st_uid: ::uid_t,
+ pub st_gid: ::gid_t,
+ pub st_rdev: ::dev_t,
+ __pad1: ::c_ulong,
+ pub st_size: ::off64_t,
+ pub st_blksize: ::c_int,
+ __pad2: ::c_int,
+ pub st_blocks: ::c_long,
+ pub st_atime: ::time_t,
+ pub st_atime_nsec: ::c_long,
+ pub st_mtime: ::time_t,
+ pub st_mtime_nsec: ::c_long,
+ pub st_ctime: ::time_t,
+ pub st_ctime_nsec: ::c_long,
+ __unused4: ::c_uint,
+ __unused5: ::c_uint,
+ }
+
+ pub struct stat64 {
+ pub st_dev: ::dev_t,
+ pub st_ino: ::ino_t,
+ pub st_mode: ::c_uint,
+ pub st_nlink: ::c_uint,
+ pub st_uid: ::uid_t,
+ pub st_gid: ::gid_t,
+ pub st_rdev: ::dev_t,
+ __pad1: ::c_ulong,
+ pub st_size: ::off64_t,
+ pub st_blksize: ::c_int,
+ __pad2: ::c_int,
+ pub st_blocks: ::c_long,
+ pub st_atime: ::time_t,
+ pub st_atime_nsec: ::c_long,
+ pub st_mtime: ::time_t,
+ pub st_mtime_nsec: ::c_long,
+ pub st_ctime: ::time_t,
+ pub st_ctime_nsec: ::c_long,
+ __unused4: ::c_uint,
+ __unused5: ::c_uint,
+ }
+}
+
+pub const O_DIRECT: ::c_int = 0x40000;
+pub const O_DIRECTORY: ::c_int = 0x200000;
+pub const O_NOFOLLOW: ::c_int = 0x400000;
+pub const O_LARGEFILE: ::c_int = 0x100000;
+
+pub const SIGSTKSZ: ::size_t = 8192;
+pub const MINSIGSTKSZ: ::size_t = 2048;
+
+// From NDK's asm/hwcap.h
+pub const COMPAT_HWCAP_ISA_I: ::c_ulong = 1 << ('I' - 'A');
+pub const COMPAT_HWCAP_ISA_M: ::c_ulong = 1 << ('M' - 'A');
+pub const COMPAT_HWCAP_ISA_A: ::c_ulong = 1 << ('A' - 'A');
+pub const COMPAT_HWCAP_ISA_F: ::c_ulong = 1 << ('F' - 'A');
+pub const COMPAT_HWCAP_ISA_D: ::c_ulong = 1 << ('D' - 'A');
+pub const COMPAT_HWCAP_ISA_C: ::c_ulong = 1 << ('C' - 'A');
+
+pub const SYS_io_setup: ::c_long = 0;
+pub const SYS_io_destroy: ::c_long = 1;
+pub const SYS_io_submit: ::c_long = 2;
+pub const SYS_io_cancel: ::c_long = 3;
+pub const SYS_io_getevents: ::c_long = 4;
+pub const SYS_setxattr: ::c_long = 5;
+pub const SYS_lsetxattr: ::c_long = 6;
+pub const SYS_fsetxattr: ::c_long = 7;
+pub const SYS_getxattr: ::c_long = 8;
+pub const SYS_lgetxattr: ::c_long = 9;
+pub const SYS_fgetxattr: ::c_long = 10;
+pub const SYS_listxattr: ::c_long = 11;
+pub const SYS_llistxattr: ::c_long = 12;
+pub const SYS_flistxattr: ::c_long = 13;
+pub const SYS_removexattr: ::c_long = 14;
+pub const SYS_lremovexattr: ::c_long = 15;
+pub const SYS_fremovexattr: ::c_long = 16;
+pub const SYS_getcwd: ::c_long = 17;
+pub const SYS_lookup_dcookie: ::c_long = 18;
+pub const SYS_eventfd2: ::c_long = 19;
+pub const SYS_epoll_create1: ::c_long = 20;
+pub const SYS_epoll_ctl: ::c_long = 21;
+pub const SYS_epoll_pwait: ::c_long = 22;
+pub const SYS_dup: ::c_long = 23;
+pub const SYS_dup3: ::c_long = 24;
+pub const SYS_inotify_init1: ::c_long = 26;
+pub const SYS_inotify_add_watch: ::c_long = 27;
+pub const SYS_inotify_rm_watch: ::c_long = 28;
+pub const SYS_ioctl: ::c_long = 29;
+pub const SYS_ioprio_set: ::c_long = 30;
+pub const SYS_ioprio_get: ::c_long = 31;
+pub const SYS_flock: ::c_long = 32;
+pub const SYS_mknodat: ::c_long = 33;
+pub const SYS_mkdirat: ::c_long = 34;
+pub const SYS_unlinkat: ::c_long = 35;
+pub const SYS_symlinkat: ::c_long = 36;
+pub const SYS_linkat: ::c_long = 37;
+pub const SYS_renameat: ::c_long = 38;
+pub const SYS_umount2: ::c_long = 39;
+pub const SYS_mount: ::c_long = 40;
+pub const SYS_pivot_root: ::c_long = 41;
+pub const SYS_nfsservctl: ::c_long = 42;
+pub const SYS_fallocate: ::c_long = 47;
+pub const SYS_faccessat: ::c_long = 48;
+pub const SYS_chdir: ::c_long = 49;
+pub const SYS_fchdir: ::c_long = 50;
+pub const SYS_chroot: ::c_long = 51;
+pub const SYS_fchmod: ::c_long = 52;
+pub const SYS_fchmodat: ::c_long = 53;
+pub const SYS_fchownat: ::c_long = 54;
+pub const SYS_fchown: ::c_long = 55;
+pub const SYS_openat: ::c_long = 56;
+pub const SYS_close: ::c_long = 57;
+pub const SYS_vhangup: ::c_long = 58;
+pub const SYS_pipe2: ::c_long = 59;
+pub const SYS_quotactl: ::c_long = 60;
+pub const SYS_getdents64: ::c_long = 61;
+pub const SYS_read: ::c_long = 63;
+pub const SYS_write: ::c_long = 64;
+pub const SYS_readv: ::c_long = 65;
+pub const SYS_writev: ::c_long = 66;
+pub const SYS_pread64: ::c_long = 67;
+pub const SYS_pwrite64: ::c_long = 68;
+pub const SYS_preadv: ::c_long = 69;
+pub const SYS_pwritev: ::c_long = 70;
+pub const SYS_pselect6: ::c_long = 72;
+pub const SYS_ppoll: ::c_long = 73;
+pub const SYS_signalfd4: ::c_long = 74;
+pub const SYS_vmsplice: ::c_long = 75;
+pub const SYS_splice: ::c_long = 76;
+pub const SYS_tee: ::c_long = 77;
+pub const SYS_readlinkat: ::c_long = 78;
+pub const SYS_sync: ::c_long = 81;
+pub const SYS_fsync: ::c_long = 82;
+pub const SYS_fdatasync: ::c_long = 83;
+pub const SYS_sync_file_range: ::c_long = 84;
+pub const SYS_timerfd_create: ::c_long = 85;
+pub const SYS_timerfd_settime: ::c_long = 86;
+pub const SYS_timerfd_gettime: ::c_long = 87;
+pub const SYS_utimensat: ::c_long = 88;
+pub const SYS_acct: ::c_long = 89;
+pub const SYS_capget: ::c_long = 90;
+pub const SYS_capset: ::c_long = 91;
+pub const SYS_personality: ::c_long = 92;
+pub const SYS_exit: ::c_long = 93;
+pub const SYS_exit_group: ::c_long = 94;
+pub const SYS_waitid: ::c_long = 95;
+pub const SYS_set_tid_address: ::c_long = 96;
+pub const SYS_unshare: ::c_long = 97;
+pub const SYS_futex: ::c_long = 98;
+pub const SYS_set_robust_list: ::c_long = 99;
+pub const SYS_get_robust_list: ::c_long = 100;
+pub const SYS_nanosleep: ::c_long = 101;
+pub const SYS_getitimer: ::c_long = 102;
+pub const SYS_setitimer: ::c_long = 103;
+pub const SYS_kexec_load: ::c_long = 104;
+pub const SYS_init_module: ::c_long = 105;
+pub const SYS_delete_module: ::c_long = 106;
+pub const SYS_timer_create: ::c_long = 107;
+pub const SYS_timer_gettime: ::c_long = 108;
+pub const SYS_timer_getoverrun: ::c_long = 109;
+pub const SYS_timer_settime: ::c_long = 110;
+pub const SYS_timer_delete: ::c_long = 111;
+pub const SYS_clock_settime: ::c_long = 112;
+pub const SYS_clock_gettime: ::c_long = 113;
+pub const SYS_clock_getres: ::c_long = 114;
+pub const SYS_clock_nanosleep: ::c_long = 115;
+pub const SYS_syslog: ::c_long = 116;
+pub const SYS_ptrace: ::c_long = 117;
+pub const SYS_sched_setparam: ::c_long = 118;
+pub const SYS_sched_setscheduler: ::c_long = 119;
+pub const SYS_sched_getscheduler: ::c_long = 120;
+pub const SYS_sched_getparam: ::c_long = 121;
+pub const SYS_sched_setaffinity: ::c_long = 122;
+pub const SYS_sched_getaffinity: ::c_long = 123;
+pub const SYS_sched_yield: ::c_long = 124;
+pub const SYS_sched_get_priority_max: ::c_long = 125;
+pub const SYS_sched_get_priority_min: ::c_long = 126;
+pub const SYS_sched_rr_get_interval: ::c_long = 127;
+pub const SYS_restart_syscall: ::c_long = 128;
+pub const SYS_kill: ::c_long = 129;
+pub const SYS_tkill: ::c_long = 130;
+pub const SYS_tgkill: ::c_long = 131;
+pub const SYS_sigaltstack: ::c_long = 132;
+pub const SYS_rt_sigsuspend: ::c_long = 133;
+pub const SYS_rt_sigaction: ::c_long = 134;
+pub const SYS_rt_sigprocmask: ::c_long = 135;
+pub const SYS_rt_sigpending: ::c_long = 136;
+pub const SYS_rt_sigtimedwait: ::c_long = 137;
+pub const SYS_rt_sigqueueinfo: ::c_long = 138;
+pub const SYS_rt_sigreturn: ::c_long = 139;
+pub const SYS_setpriority: ::c_long = 140;
+pub const SYS_getpriority: ::c_long = 141;
+pub const SYS_reboot: ::c_long = 142;
+pub const SYS_setregid: ::c_long = 143;
+pub const SYS_setgid: ::c_long = 144;
+pub const SYS_setreuid: ::c_long = 145;
+pub const SYS_setuid: ::c_long = 146;
+pub const SYS_setresuid: ::c_long = 147;
+pub const SYS_getresuid: ::c_long = 148;
+pub const SYS_setresgid: ::c_long = 149;
+pub const SYS_getresgid: ::c_long = 150;
+pub const SYS_setfsuid: ::c_long = 151;
+pub const SYS_setfsgid: ::c_long = 152;
+pub const SYS_times: ::c_long = 153;
+pub const SYS_setpgid: ::c_long = 154;
+pub const SYS_getpgid: ::c_long = 155;
+pub const SYS_getsid: ::c_long = 156;
+pub const SYS_setsid: ::c_long = 157;
+pub const SYS_getgroups: ::c_long = 158;
+pub const SYS_setgroups: ::c_long = 159;
+pub const SYS_uname: ::c_long = 160;
+pub const SYS_sethostname: ::c_long = 161;
+pub const SYS_setdomainname: ::c_long = 162;
+pub const SYS_getrlimit: ::c_long = 163;
+pub const SYS_setrlimit: ::c_long = 164;
+pub const SYS_getrusage: ::c_long = 165;
+pub const SYS_umask: ::c_long = 166;
+pub const SYS_prctl: ::c_long = 167;
+pub const SYS_getcpu: ::c_long = 168;
+pub const SYS_gettimeofday: ::c_long = 169;
+pub const SYS_settimeofday: ::c_long = 170;
+pub const SYS_adjtimex: ::c_long = 171;
+pub const SYS_getpid: ::c_long = 172;
+pub const SYS_getppid: ::c_long = 173;
+pub const SYS_getuid: ::c_long = 174;
+pub const SYS_geteuid: ::c_long = 175;
+pub const SYS_getgid: ::c_long = 176;
+pub const SYS_getegid: ::c_long = 177;
+pub const SYS_gettid: ::c_long = 178;
+pub const SYS_sysinfo: ::c_long = 179;
+pub const SYS_mq_open: ::c_long = 180;
+pub const SYS_mq_unlink: ::c_long = 181;
+pub const SYS_mq_timedsend: ::c_long = 182;
+pub const SYS_mq_timedreceive: ::c_long = 183;
+pub const SYS_mq_notify: ::c_long = 184;
+pub const SYS_mq_getsetattr: ::c_long = 185;
+pub const SYS_msgget: ::c_long = 186;
+pub const SYS_msgctl: ::c_long = 187;
+pub const SYS_msgrcv: ::c_long = 188;
+pub const SYS_msgsnd: ::c_long = 189;
+pub const SYS_semget: ::c_long = 190;
+pub const SYS_semctl: ::c_long = 191;
+pub const SYS_semtimedop: ::c_long = 192;
+pub const SYS_semop: ::c_long = 193;
+pub const SYS_shmget: ::c_long = 194;
+pub const SYS_shmctl: ::c_long = 195;
+pub const SYS_shmat: ::c_long = 196;
+pub const SYS_shmdt: ::c_long = 197;
+pub const SYS_socket: ::c_long = 198;
+pub const SYS_socketpair: ::c_long = 199;
+pub const SYS_bind: ::c_long = 200;
+pub const SYS_listen: ::c_long = 201;
+pub const SYS_accept: ::c_long = 202;
+pub const SYS_connect: ::c_long = 203;
+pub const SYS_getsockname: ::c_long = 204;
+pub const SYS_getpeername: ::c_long = 205;
+pub const SYS_sendto: ::c_long = 206;
+pub const SYS_recvfrom: ::c_long = 207;
+pub const SYS_setsockopt: ::c_long = 208;
+pub const SYS_getsockopt: ::c_long = 209;
+pub const SYS_shutdown: ::c_long = 210;
+pub const SYS_sendmsg: ::c_long = 211;
+pub const SYS_recvmsg: ::c_long = 212;
+pub const SYS_readahead: ::c_long = 213;
+pub const SYS_brk: ::c_long = 214;
+pub const SYS_munmap: ::c_long = 215;
+pub const SYS_mremap: ::c_long = 216;
+pub const SYS_add_key: ::c_long = 217;
+pub const SYS_request_key: ::c_long = 218;
+pub const SYS_keyctl: ::c_long = 219;
+pub const SYS_clone: ::c_long = 220;
+pub const SYS_execve: ::c_long = 221;
+pub const SYS_swapon: ::c_long = 224;
+pub const SYS_swapoff: ::c_long = 225;
+pub const SYS_mprotect: ::c_long = 226;
+pub const SYS_msync: ::c_long = 227;
+pub const SYS_mlock: ::c_long = 228;
+pub const SYS_munlock: ::c_long = 229;
+pub const SYS_mlockall: ::c_long = 230;
+pub const SYS_munlockall: ::c_long = 231;
+pub const SYS_mincore: ::c_long = 232;
+pub const SYS_madvise: ::c_long = 233;
+pub const SYS_remap_file_pages: ::c_long = 234;
+pub const SYS_mbind: ::c_long = 235;
+pub const SYS_get_mempolicy: ::c_long = 236;
+pub const SYS_set_mempolicy: ::c_long = 237;
+pub const SYS_migrate_pages: ::c_long = 238;
+pub const SYS_move_pages: ::c_long = 239;
+pub const SYS_rt_tgsigqueueinfo: ::c_long = 240;
+pub const SYS_perf_event_open: ::c_long = 241;
+pub const SYS_accept4: ::c_long = 242;
+pub const SYS_recvmmsg: ::c_long = 243;
+pub const SYS_arch_specific_syscall: ::c_long = 244;
+pub const SYS_wait4: ::c_long = 260;
+pub const SYS_prlimit64: ::c_long = 261;
+pub const SYS_fanotify_init: ::c_long = 262;
+pub const SYS_fanotify_mark: ::c_long = 263;
+pub const SYS_name_to_handle_at: ::c_long = 264;
+pub const SYS_open_by_handle_at: ::c_long = 265;
+pub const SYS_clock_adjtime: ::c_long = 266;
+pub const SYS_syncfs: ::c_long = 267;
+pub const SYS_setns: ::c_long = 268;
+pub const SYS_sendmmsg: ::c_long = 269;
+pub const SYS_process_vm_readv: ::c_long = 270;
+pub const SYS_process_vm_writev: ::c_long = 271;
+pub const SYS_kcmp: ::c_long = 272;
+pub const SYS_finit_module: ::c_long = 273;
+pub const SYS_sched_setattr: ::c_long = 274;
+pub const SYS_sched_getattr: ::c_long = 275;
+pub const SYS_renameat2: ::c_long = 276;
+pub const SYS_seccomp: ::c_long = 277;
+pub const SYS_getrandom: ::c_long = 278;
+pub const SYS_memfd_create: ::c_long = 279;
+pub const SYS_bpf: ::c_long = 280;
+pub const SYS_execveat: ::c_long = 281;
+pub const SYS_userfaultfd: ::c_long = 282;
+pub const SYS_membarrier: ::c_long = 283;
+pub const SYS_mlock2: ::c_long = 284;
+pub const SYS_copy_file_range: ::c_long = 285;
+pub const SYS_preadv2: ::c_long = 286;
+pub const SYS_pwritev2: ::c_long = 287;
+pub const SYS_pkey_mprotect: ::c_long = 288;
+pub const SYS_pkey_alloc: ::c_long = 289;
+pub const SYS_pkey_free: ::c_long = 290;
+pub const SYS_syscalls: ::c_long = 436;
+
+cfg_if! {
+ if #[cfg(libc_align)] {
+ mod align;
+ pub use self::align::*;
+ }
+}
diff --git a/vendor/libc/src/unix/linux_like/android/b64/x86_64/mod.rs b/vendor/libc/src/unix/linux_like/android/b64/x86_64/mod.rs
index df1161820..d25b50775 100644
--- a/vendor/libc/src/unix/linux_like/android/b64/x86_64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/android/b64/x86_64/mod.rs
@@ -350,6 +350,7 @@ cfg_if! {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("user_fpregs_struct")
.field("cwd", &self.cwd)
+ .field("swd", &self.swd)
.field("ftw", &self.ftw)
.field("fop", &self.fop)
.field("rip", &self.rip)
@@ -366,6 +367,7 @@ cfg_if! {
impl ::hash::Hash for user_fpregs_struct {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
self.cwd.hash(state);
+ self.swd.hash(state);
self.ftw.hash(state);
self.fop.hash(state);
self.rip.hash(state);
diff --git a/vendor/libc/src/unix/linux_like/android/mod.rs b/vendor/libc/src/unix/linux_like/android/mod.rs
index a57e9b7e7..67e5eb52b 100644
--- a/vendor/libc/src/unix/linux_like/android/mod.rs
+++ b/vendor/libc/src/unix/linux_like/android/mod.rs
@@ -2489,6 +2489,8 @@ pub const AF_VSOCK: ::c_int = 40;
pub const PF_NFC: ::c_int = AF_NFC;
pub const PF_VSOCK: ::c_int = AF_VSOCK;
+pub const SOMAXCONN: ::c_int = 128;
+
// sys/system_properties.h
pub const PROP_VALUE_MAX: ::c_int = 92;
pub const PROP_NAME_MAX: ::c_int = 32;
@@ -2496,6 +2498,227 @@ pub const PROP_NAME_MAX: ::c_int = 32;
// sys/prctl.h
pub const PR_SET_VMA: ::c_int = 0x53564d41;
pub const PR_SET_VMA_ANON_NAME: ::c_int = 0;
+pub const PR_SET_NO_NEW_PRIVS: ::c_int = 38;
+pub const PR_GET_NO_NEW_PRIVS: ::c_int = 39;
+pub const PR_GET_SECCOMP: ::c_int = 21;
+pub const PR_SET_SECCOMP: ::c_int = 22;
+pub const PR_GET_TIMING: ::c_int = 13;
+pub const PR_SET_TIMING: ::c_int = 14;
+pub const PR_TIMING_STATISTICAL: ::c_int = 0;
+pub const PR_TIMING_TIMESTAMP: ::c_int = 1;
+
+// linux/if_addr.h
+pub const IFA_UNSPEC: ::c_ushort = 0;
+pub const IFA_ADDRESS: ::c_ushort = 1;
+pub const IFA_LOCAL: ::c_ushort = 2;
+pub const IFA_LABEL: ::c_ushort = 3;
+pub const IFA_BROADCAST: ::c_ushort = 4;
+pub const IFA_ANYCAST: ::c_ushort = 5;
+pub const IFA_CACHEINFO: ::c_ushort = 6;
+pub const IFA_MULTICAST: ::c_ushort = 7;
+
+pub const IFA_F_SECONDARY: u32 = 0x01;
+pub const IFA_F_TEMPORARY: u32 = 0x01;
+pub const IFA_F_NODAD: u32 = 0x02;
+pub const IFA_F_OPTIMISTIC: u32 = 0x04;
+pub const IFA_F_DADFAILED: u32 = 0x08;
+pub const IFA_F_HOMEADDRESS: u32 = 0x10;
+pub const IFA_F_DEPRECATED: u32 = 0x20;
+pub const IFA_F_TENTATIVE: u32 = 0x40;
+pub const IFA_F_PERMANENT: u32 = 0x80;
+
+// linux/if_link.h
+pub const IFLA_UNSPEC: ::c_ushort = 0;
+pub const IFLA_ADDRESS: ::c_ushort = 1;
+pub const IFLA_BROADCAST: ::c_ushort = 2;
+pub const IFLA_IFNAME: ::c_ushort = 3;
+pub const IFLA_MTU: ::c_ushort = 4;
+pub const IFLA_LINK: ::c_ushort = 5;
+pub const IFLA_QDISC: ::c_ushort = 6;
+pub const IFLA_STATS: ::c_ushort = 7;
+pub const IFLA_COST: ::c_ushort = 8;
+pub const IFLA_PRIORITY: ::c_ushort = 9;
+pub const IFLA_MASTER: ::c_ushort = 10;
+pub const IFLA_WIRELESS: ::c_ushort = 11;
+pub const IFLA_PROTINFO: ::c_ushort = 12;
+pub const IFLA_TXQLEN: ::c_ushort = 13;
+pub const IFLA_MAP: ::c_ushort = 14;
+pub const IFLA_WEIGHT: ::c_ushort = 15;
+pub const IFLA_OPERSTATE: ::c_ushort = 16;
+pub const IFLA_LINKMODE: ::c_ushort = 17;
+pub const IFLA_LINKINFO: ::c_ushort = 18;
+pub const IFLA_NET_NS_PID: ::c_ushort = 19;
+pub const IFLA_IFALIAS: ::c_ushort = 20;
+pub const IFLA_NUM_VF: ::c_ushort = 21;
+pub const IFLA_VFINFO_LIST: ::c_ushort = 22;
+pub const IFLA_STATS64: ::c_ushort = 23;
+pub const IFLA_VF_PORTS: ::c_ushort = 24;
+pub const IFLA_PORT_SELF: ::c_ushort = 25;
+pub const IFLA_AF_SPEC: ::c_ushort = 26;
+pub const IFLA_GROUP: ::c_ushort = 27;
+pub const IFLA_NET_NS_FD: ::c_ushort = 28;
+pub const IFLA_EXT_MASK: ::c_ushort = 29;
+pub const IFLA_PROMISCUITY: ::c_ushort = 30;
+pub const IFLA_NUM_TX_QUEUES: ::c_ushort = 31;
+pub const IFLA_NUM_RX_QUEUES: ::c_ushort = 32;
+pub const IFLA_CARRIER: ::c_ushort = 33;
+pub const IFLA_PHYS_PORT_ID: ::c_ushort = 34;
+pub const IFLA_CARRIER_CHANGES: ::c_ushort = 35;
+pub const IFLA_PHYS_SWITCH_ID: ::c_ushort = 36;
+pub const IFLA_LINK_NETNSID: ::c_ushort = 37;
+pub const IFLA_PHYS_PORT_NAME: ::c_ushort = 38;
+pub const IFLA_PROTO_DOWN: ::c_ushort = 39;
+pub const IFLA_GSO_MAX_SEGS: ::c_ushort = 40;
+pub const IFLA_GSO_MAX_SIZE: ::c_ushort = 41;
+pub const IFLA_PAD: ::c_ushort = 42;
+pub const IFLA_XDP: ::c_ushort = 43;
+pub const IFLA_EVENT: ::c_ushort = 44;
+pub const IFLA_NEW_NETNSID: ::c_ushort = 45;
+pub const IFLA_IF_NETNSID: ::c_ushort = 46;
+pub const IFLA_TARGET_NETNSID: ::c_ushort = IFLA_IF_NETNSID;
+pub const IFLA_CARRIER_UP_COUNT: ::c_ushort = 47;
+pub const IFLA_CARRIER_DOWN_COUNT: ::c_ushort = 48;
+pub const IFLA_NEW_IFINDEX: ::c_ushort = 49;
+pub const IFLA_MIN_MTU: ::c_ushort = 50;
+pub const IFLA_MAX_MTU: ::c_ushort = 51;
+
+pub const IFLA_INFO_UNSPEC: ::c_ushort = 0;
+pub const IFLA_INFO_KIND: ::c_ushort = 1;
+pub const IFLA_INFO_DATA: ::c_ushort = 2;
+pub const IFLA_INFO_XSTATS: ::c_ushort = 3;
+pub const IFLA_INFO_SLAVE_KIND: ::c_ushort = 4;
+pub const IFLA_INFO_SLAVE_DATA: ::c_ushort = 5;
+
+// linux/rtnetlink.h
+pub const TCA_UNSPEC: ::c_ushort = 0;
+pub const TCA_KIND: ::c_ushort = 1;
+pub const TCA_OPTIONS: ::c_ushort = 2;
+pub const TCA_STATS: ::c_ushort = 3;
+pub const TCA_XSTATS: ::c_ushort = 4;
+pub const TCA_RATE: ::c_ushort = 5;
+pub const TCA_FCNT: ::c_ushort = 6;
+pub const TCA_STATS2: ::c_ushort = 7;
+pub const TCA_STAB: ::c_ushort = 8;
+
+pub const RTM_NEWLINK: u16 = 16;
+pub const RTM_DELLINK: u16 = 17;
+pub const RTM_GETLINK: u16 = 18;
+pub const RTM_SETLINK: u16 = 19;
+pub const RTM_NEWADDR: u16 = 20;
+pub const RTM_DELADDR: u16 = 21;
+pub const RTM_GETADDR: u16 = 22;
+pub const RTM_NEWROUTE: u16 = 24;
+pub const RTM_DELROUTE: u16 = 25;
+pub const RTM_GETROUTE: u16 = 26;
+pub const RTM_NEWNEIGH: u16 = 28;
+pub const RTM_DELNEIGH: u16 = 29;
+pub const RTM_GETNEIGH: u16 = 30;
+pub const RTM_NEWRULE: u16 = 32;
+pub const RTM_DELRULE: u16 = 33;
+pub const RTM_GETRULE: u16 = 34;
+pub const RTM_NEWQDISC: u16 = 36;
+pub const RTM_DELQDISC: u16 = 37;
+pub const RTM_GETQDISC: u16 = 38;
+pub const RTM_NEWTCLASS: u16 = 40;
+pub const RTM_DELTCLASS: u16 = 41;
+pub const RTM_GETTCLASS: u16 = 42;
+pub const RTM_NEWTFILTER: u16 = 44;
+pub const RTM_DELTFILTER: u16 = 45;
+pub const RTM_GETTFILTER: u16 = 46;
+pub const RTM_NEWACTION: u16 = 48;
+pub const RTM_DELACTION: u16 = 49;
+pub const RTM_GETACTION: u16 = 50;
+pub const RTM_NEWPREFIX: u16 = 52;
+pub const RTM_GETMULTICAST: u16 = 58;
+pub const RTM_GETANYCAST: u16 = 62;
+pub const RTM_NEWNEIGHTBL: u16 = 64;
+pub const RTM_GETNEIGHTBL: u16 = 66;
+pub const RTM_SETNEIGHTBL: u16 = 67;
+pub const RTM_NEWNDUSEROPT: u16 = 68;
+pub const RTM_NEWADDRLABEL: u16 = 72;
+pub const RTM_DELADDRLABEL: u16 = 73;
+pub const RTM_GETADDRLABEL: u16 = 74;
+pub const RTM_GETDCB: u16 = 78;
+pub const RTM_SETDCB: u16 = 79;
+pub const RTM_NEWNETCONF: u16 = 80;
+pub const RTM_GETNETCONF: u16 = 82;
+pub const RTM_NEWMDB: u16 = 84;
+pub const RTM_DELMDB: u16 = 85;
+pub const RTM_GETMDB: u16 = 86;
+pub const RTM_NEWNSID: u16 = 88;
+pub const RTM_DELNSID: u16 = 89;
+pub const RTM_GETNSID: u16 = 90;
+
+pub const RTM_F_NOTIFY: ::c_uint = 0x100;
+pub const RTM_F_CLONED: ::c_uint = 0x200;
+pub const RTM_F_EQUALIZE: ::c_uint = 0x400;
+pub const RTM_F_PREFIX: ::c_uint = 0x800;
+
+pub const RTA_UNSPEC: ::c_ushort = 0;
+pub const RTA_DST: ::c_ushort = 1;
+pub const RTA_SRC: ::c_ushort = 2;
+pub const RTA_IIF: ::c_ushort = 3;
+pub const RTA_OIF: ::c_ushort = 4;
+pub const RTA_GATEWAY: ::c_ushort = 5;
+pub const RTA_PRIORITY: ::c_ushort = 6;
+pub const RTA_PREFSRC: ::c_ushort = 7;
+pub const RTA_METRICS: ::c_ushort = 8;
+pub const RTA_MULTIPATH: ::c_ushort = 9;
+pub const RTA_PROTOINFO: ::c_ushort = 10; // No longer used
+pub const RTA_FLOW: ::c_ushort = 11;
+pub const RTA_CACHEINFO: ::c_ushort = 12;
+pub const RTA_SESSION: ::c_ushort = 13; // No longer used
+pub const RTA_MP_ALGO: ::c_ushort = 14; // No longer used
+pub const RTA_TABLE: ::c_ushort = 15;
+pub const RTA_MARK: ::c_ushort = 16;
+pub const RTA_MFC_STATS: ::c_ushort = 17;
+
+pub const RTN_UNSPEC: ::c_uchar = 0;
+pub const RTN_UNICAST: ::c_uchar = 1;
+pub const RTN_LOCAL: ::c_uchar = 2;
+pub const RTN_BROADCAST: ::c_uchar = 3;
+pub const RTN_ANYCAST: ::c_uchar = 4;
+pub const RTN_MULTICAST: ::c_uchar = 5;
+pub const RTN_BLACKHOLE: ::c_uchar = 6;
+pub const RTN_UNREACHABLE: ::c_uchar = 7;
+pub const RTN_PROHIBIT: ::c_uchar = 8;
+pub const RTN_THROW: ::c_uchar = 9;
+pub const RTN_NAT: ::c_uchar = 10;
+pub const RTN_XRESOLVE: ::c_uchar = 11;
+
+pub const RTPROT_UNSPEC: ::c_uchar = 0;
+pub const RTPROT_REDIRECT: ::c_uchar = 1;
+pub const RTPROT_KERNEL: ::c_uchar = 2;
+pub const RTPROT_BOOT: ::c_uchar = 3;
+pub const RTPROT_STATIC: ::c_uchar = 4;
+
+pub const RT_SCOPE_UNIVERSE: ::c_uchar = 0;
+pub const RT_SCOPE_SITE: ::c_uchar = 200;
+pub const RT_SCOPE_LINK: ::c_uchar = 253;
+pub const RT_SCOPE_HOST: ::c_uchar = 254;
+pub const RT_SCOPE_NOWHERE: ::c_uchar = 255;
+
+pub const RT_TABLE_UNSPEC: ::c_uchar = 0;
+pub const RT_TABLE_COMPAT: ::c_uchar = 252;
+pub const RT_TABLE_DEFAULT: ::c_uchar = 253;
+pub const RT_TABLE_MAIN: ::c_uchar = 254;
+pub const RT_TABLE_LOCAL: ::c_uchar = 255;
+
+pub const RTMSG_NEWDEVICE: u32 = 0x11;
+pub const RTMSG_DELDEVICE: u32 = 0x12;
+pub const RTMSG_NEWROUTE: u32 = 0x21;
+pub const RTMSG_DELROUTE: u32 = 0x22;
+
+// Most `*_SUPER_MAGIC` constants are defined at the `linux_like` level; the
+// following are only available on newer Linux versions than the versions
+// currently used in CI in some configurations, so we define them here.
+cfg_if! {
+ if #[cfg(not(target_arch = "s390x"))] {
+ pub const XFS_SUPER_MAGIC: ::c_long = 0x58465342;
+ } else if #[cfg(target_arch = "s390x")] {
+ pub const XFS_SUPER_MAGIC: ::c_uint = 0x58465342;
+ }
+}
f! {
pub fn CMSG_NXTHDR(mhdr: *const msghdr,
@@ -2569,12 +2792,6 @@ f! {
pub fn minor(dev: ::dev_t) -> ::c_int {
((dev & 0xff) | ((dev >> 12) & 0xfff00)) as ::c_int
}
- pub fn makedev(ma: ::c_int, mi: ::c_int) -> ::dev_t {
- let ma = ma as ::dev_t;
- let mi = mi as ::dev_t;
- ((ma & 0xfff) << 8) | (mi & 0xff) | ((mi & 0xfff00) << 12)
- }
-
pub fn NLA_ALIGN(len: ::c_int) -> ::c_int {
return ((len) + NLA_ALIGNTO - 1) & !(NLA_ALIGNTO - 1)
}
@@ -2584,6 +2801,15 @@ f! {
}
}
+safe_f! {
+ pub {const} fn makedev(ma: ::c_uint, mi: ::c_uint) -> ::dev_t {
+ let ma = ma as ::dev_t;
+ let mi = mi as ::dev_t;
+ ((ma & 0xfff) << 8) | (mi & 0xff) | ((mi & 0xfff00) << 12)
+ }
+
+}
+
extern "C" {
pub fn getrlimit64(resource: ::c_int, rlim: *mut rlimit64) -> ::c_int;
pub fn setrlimit64(resource: ::c_int, rlim: *const rlimit64) -> ::c_int;
diff --git a/vendor/libc/src/unix/linux_like/emscripten/mod.rs b/vendor/libc/src/unix/linux_like/emscripten/mod.rs
index 5494aad37..11fbb31c3 100644
--- a/vendor/libc/src/unix/linux_like/emscripten/mod.rs
+++ b/vendor/libc/src/unix/linux_like/emscripten/mod.rs
@@ -1669,6 +1669,8 @@ pub const PRIO_PROCESS: ::c_int = 0;
pub const PRIO_PGRP: ::c_int = 1;
pub const PRIO_USER: ::c_int = 2;
+pub const SOMAXCONN: ::c_int = 128;
+
f! {
pub fn CMSG_NXTHDR(mhdr: *const msghdr,
cmsg: *const cmsghdr) -> *mut cmsghdr {
@@ -1738,8 +1740,10 @@ f! {
minor |= (dev & 0xffffff00) >> 12;
minor as ::c_uint
}
+}
- pub fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+safe_f! {
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
let major = major as ::dev_t;
let minor = minor as ::dev_t;
let mut dev = 0;
diff --git a/vendor/libc/src/unix/linux_like/linux/arch/generic/mod.rs b/vendor/libc/src/unix/linux_like/linux/arch/generic/mod.rs
index 320579955..5265cdd17 100644
--- a/vendor/libc/src/unix/linux_like/linux/arch/generic/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/arch/generic/mod.rs
@@ -104,6 +104,13 @@ cfg_if! {
pub const SO_DETACH_REUSEPORT_BPF: ::c_int = 68;
}
}
+
+cfg_if! {
+ if #[cfg(any(target_arch = "x86", target_arch = "x86_64"))] {
+ pub const FICLONE: ::c_ulong = 0x40049409;
+ pub const FICLONERANGE: ::c_ulong = 0x4020940D;
+ }
+}
// pub const SO_PREFER_BUSY_POLL: ::c_int = 69;
// pub const SO_BUSY_POLL_BUDGET: ::c_int = 70;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs
index 2a064974d..e0ac0dfc3 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/arm/mod.rs
@@ -835,6 +835,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
cfg_if! {
if #[cfg(libc_align)] {
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs
index eb3886fbc..6a03f0ba8 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/mips/mod.rs
@@ -536,6 +536,14 @@ pub const SYS_faccessat2: ::c_long = 4000 + 439;
pub const SYS_process_madvise: ::c_long = 4000 + 440;
pub const SYS_epoll_pwait2: ::c_long = 4000 + 441;
pub const SYS_mount_setattr: ::c_long = 4000 + 442;
+pub const SYS_quotactl_fd: ::c_long = 4000 + 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 4000 + 444;
+pub const SYS_landlock_add_rule: ::c_long = 4000 + 445;
+pub const SYS_landlock_restrict_self: ::c_long = 4000 + 446;
+pub const SYS_memfd_secret: ::c_long = 4000 + 447;
+pub const SYS_process_mrelease: ::c_long = 4000 + 448;
+pub const SYS_futex_waitv: ::c_long = 4000 + 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 4000 + 450;
pub const O_DIRECT: ::c_int = 0x8000;
pub const O_DIRECTORY: ::c_int = 0x10000;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs
index ad45c607f..e70b216bf 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/powerpc.rs
@@ -814,3 +814,11 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs
index def90d6d1..827f85e86 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/riscv32/mod.rs
@@ -758,6 +758,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
cfg_if! {
if #[cfg(libc_align)] {
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs
index 5dd2302db..57ad9fe8e 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/sparc/mod.rs
@@ -839,6 +839,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
cfg_if! {
if #[cfg(libc_align)] {
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs
index e42e9ebd6..93622387e 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b32/x86/mod.rs
@@ -1040,6 +1040,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
// offsets in user_regs_structs, from sys/reg.h
pub const EBX: ::c_int = 0;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs
index 154c2c54c..cb2df378c 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/align.rs
@@ -26,4 +26,26 @@ s! {
// auto-derive traits like Debug
__reserved: [[u64; 32]; 16],
}
+
+ #[repr(align(16))]
+ pub struct user_fpsimd_struct {
+ pub vregs: [[u64; 2]; 32],
+ pub fpsr: ::c_uint,
+ pub fpcr: ::c_uint,
+ }
+
+ #[repr(align(8))]
+ pub struct clone_args {
+ pub flags: ::c_ulonglong,
+ pub pidfd: ::c_ulonglong,
+ pub child_tid: ::c_ulonglong,
+ pub parent_tid: ::c_ulonglong,
+ pub exit_signal: ::c_ulonglong,
+ pub stack: ::c_ulonglong,
+ pub stack_size: ::c_ulonglong,
+ pub tls: ::c_ulonglong,
+ pub set_tid: ::c_ulonglong,
+ pub set_tid_size: ::c_ulonglong,
+ pub cgroup: ::c_ulonglong,
+ }
}
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs
index 513f6acd1..b620cc03f 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/aarch64/mod.rs
@@ -573,6 +573,22 @@ pub const HWCAP_PACG: ::c_ulong = 1 << 31;
//pub const HWCAP2_SVESM4: ::c_ulong = 1 << 6;
//pub const HWCAP2_FLAGM2: ::c_ulong = 1 << 7;
//pub const HWCAP2_FRINT: ::c_ulong = 1 << 8;
+//pub const HWCAP2_MTE: ::c_ulong = 1 << 18;
+
+// linux/prctl.h
+pub const PR_PAC_RESET_KEYS: ::c_int = 54;
+pub const PR_SET_TAGGED_ADDR_CTRL: ::c_int = 55;
+pub const PR_GET_TAGGED_ADDR_CTRL: ::c_int = 56;
+pub const PR_PAC_SET_ENABLED_KEYS: ::c_int = 60;
+pub const PR_PAC_GET_ENABLED_KEYS: ::c_int = 61;
+
+pub const PR_TAGGED_ADDR_ENABLE: ::c_ulong = 1;
+
+pub const PR_PAC_APIAKEY: ::c_ulong = 1 << 0;
+pub const PR_PAC_APIBKEY: ::c_ulong = 1 << 1;
+pub const PR_PAC_APDAKEY: ::c_ulong = 1 << 2;
+pub const PR_PAC_APDBKEY: ::c_ulong = 1 << 3;
+pub const PR_PAC_APGAKEY: ::c_ulong = 1 << 4;
// Syscall table
pub const SYS_io_setup: ::c_long = 0;
@@ -869,6 +885,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
extern "C" {
pub fn sysctl(
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs
index cac215dc4..0bf5084d5 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/mips64/mod.rs
@@ -587,6 +587,14 @@ pub const SYS_faccessat2: ::c_long = 5000 + 439;
pub const SYS_process_madvise: ::c_long = 5000 + 440;
pub const SYS_epoll_pwait2: ::c_long = 5000 + 441;
pub const SYS_mount_setattr: ::c_long = 5000 + 442;
+pub const SYS_quotactl_fd: ::c_long = 5000 + 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 5000 + 444;
+pub const SYS_landlock_add_rule: ::c_long = 5000 + 445;
+pub const SYS_landlock_restrict_self: ::c_long = 5000 + 446;
+pub const SYS_memfd_secret: ::c_long = 5000 + 447;
+pub const SYS_process_mrelease: ::c_long = 5000 + 448;
+pub const SYS_futex_waitv: ::c_long = 5000 + 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 5000 + 450;
pub const SFD_CLOEXEC: ::c_int = 0x080000;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs
index b5c268706..ce8ce97bb 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/powerpc64/mod.rs
@@ -948,6 +948,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
extern "C" {
pub fn sysctl(
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs
index f8073902a..9d022f96e 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/riscv64/mod.rs
@@ -797,6 +797,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
cfg_if! {
if #[cfg(libc_align)] {
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs
index 212dc898c..c4bae089c 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/s390x.rs
@@ -935,6 +935,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
extern "C" {
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs
index 8d065e6a3..9fdacfac8 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/sparc64/mod.rs
@@ -900,6 +900,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
extern "C" {
pub fn sysctl(
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs
index 7ca870fd0..ba3075edd 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/align.rs
@@ -5,3 +5,20 @@ s_no_extra_traits! {
priv_: [f64; 4]
}
}
+
+s! {
+ #[repr(align(8))]
+ pub struct clone_args {
+ pub flags: ::c_ulonglong,
+ pub pidfd: ::c_ulonglong,
+ pub child_tid: ::c_ulonglong,
+ pub parent_tid: ::c_ulonglong,
+ pub exit_signal: ::c_ulonglong,
+ pub stack: ::c_ulonglong,
+ pub stack_size: ::c_ulonglong,
+ pub tls: ::c_ulonglong,
+ pub set_tid: ::c_ulonglong,
+ pub set_tid_size: ::c_ulonglong,
+ pub cgroup: ::c_ulonglong,
+ }
+}
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs
index 61242268e..d515d2231 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/mod.rs
@@ -265,6 +265,14 @@ s! {
pub seccomp_notif_resp: ::__u16,
pub seccomp_data: ::__u16,
}
+
+ pub struct ptrace_rseq_configuration {
+ pub rseq_abi_pointer: ::__u64,
+ pub rseq_abi_size: ::__u32,
+ pub signature: ::__u32,
+ pub flags: ::__u32,
+ pub pad: ::__u32,
+ }
}
s_no_extra_traits! {
@@ -535,6 +543,7 @@ pub const O_ASYNC: ::c_int = 0x2000;
pub const O_NDELAY: ::c_int = 0x800;
pub const PTRACE_DETACH: ::c_uint = 17;
+pub const PTRACE_GET_RSEQ_CONFIGURATION: ::c_uint = 0x420f;
pub const EFD_NONBLOCK: ::c_int = 0x800;
@@ -626,6 +635,19 @@ pub const PTRACE_PEEKSIGINFO_SHARED: ::c_uint = 1;
pub const PTRACE_SYSEMU: ::c_uint = 31;
pub const PTRACE_SYSEMU_SINGLESTEP: ::c_uint = 32;
+pub const PR_GET_SPECULATION_CTRL: ::c_int = 52;
+pub const PR_SET_SPECULATION_CTRL: ::c_int = 53;
+pub const PR_SPEC_NOT_AFFECTED: ::c_uint = 0;
+pub const PR_SPEC_PRCTL: ::c_uint = 1 << 0;
+pub const PR_SPEC_ENABLE: ::c_uint = 1 << 1;
+pub const PR_SPEC_DISABLE: ::c_uint = 1 << 2;
+pub const PR_SPEC_FORCE_DISABLE: ::c_uint = 1 << 3;
+pub const PR_SPEC_DISABLE_NOEXEC: ::c_uint = 1 << 4;
+pub const PR_SPEC_STORE_BYPASS: ::c_int = 0;
+pub const PR_SPEC_INDIRECT_BRANCH: ::c_int = 1;
+// FIXME: perharps for later
+//pub const PR_SPEC_L1D_FLUSH: ::c_int = 2;
+
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs
index f840f9f44..35d2714ee 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs
@@ -429,6 +429,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
extern "C" {
pub fn sysctl(
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs b/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs
index de1a8b94b..807b948ef 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/b64/x86_64/x32.rs
@@ -357,6 +357,14 @@ pub const SYS_faccessat2: ::c_long = __X32_SYSCALL_BIT + 439;
pub const SYS_process_madvise: ::c_long = __X32_SYSCALL_BIT + 440;
pub const SYS_epoll_pwait2: ::c_long = __X32_SYSCALL_BIT + 441;
pub const SYS_mount_setattr: ::c_long = __X32_SYSCALL_BIT + 442;
+pub const SYS_quotactl_fd: ::c_long = __X32_SYSCALL_BIT + 443;
+pub const SYS_landlock_create_ruleset: ::c_long = __X32_SYSCALL_BIT + 444;
+pub const SYS_landlock_add_rule: ::c_long = __X32_SYSCALL_BIT + 445;
+pub const SYS_landlock_restrict_self: ::c_long = __X32_SYSCALL_BIT + 446;
+pub const SYS_memfd_secret: ::c_long = __X32_SYSCALL_BIT + 447;
+pub const SYS_process_mrelease: ::c_long = __X32_SYSCALL_BIT + 448;
+pub const SYS_futex_waitv: ::c_long = __X32_SYSCALL_BIT + 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = __X32_SYSCALL_BIT + 450;
pub const SYS_rt_sigaction: ::c_long = __X32_SYSCALL_BIT + 512;
pub const SYS_rt_sigreturn: ::c_long = __X32_SYSCALL_BIT + 513;
pub const SYS_ioctl: ::c_long = __X32_SYSCALL_BIT + 514;
diff --git a/vendor/libc/src/unix/linux_like/linux/gnu/mod.rs b/vendor/libc/src/unix/linux_like/linux/gnu/mod.rs
index 8a5f9d169..21e7619db 100644
--- a/vendor/libc/src/unix/linux_like/linux/gnu/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/gnu/mod.rs
@@ -954,6 +954,8 @@ pub const NT_LWPSTATUS: ::c_int = 16;
pub const NT_LWPSINFO: ::c_int = 17;
pub const NT_PRFPXREG: ::c_int = 20;
+pub const ELFOSABI_ARM_AEABI: u8 = 64;
+
// linux/keyctl.h
pub const KEYCTL_DH_COMPUTE: u32 = 23;
pub const KEYCTL_PKEY_QUERY: u32 = 24;
@@ -1024,6 +1026,11 @@ pub const STATX_ATTR_APPEND: ::c_int = 0x0020;
pub const STATX_ATTR_NODUMP: ::c_int = 0x0040;
pub const STATX_ATTR_ENCRYPTED: ::c_int = 0x0800;
pub const STATX_ATTR_AUTOMOUNT: ::c_int = 0x1000;
+pub const STATX_ATTR_MOUNT_ROOT: ::c_int = 0x2000;
+pub const STATX_ATTR_VERITY: ::c_int = 0x00100000;
+pub const STATX_ATTR_DAX: ::c_int = 0x00200000;
+
+pub const SOMAXCONN: ::c_int = 4096;
//sys/timex.h
pub const ADJ_OFFSET: ::c_uint = 0x0001;
@@ -1289,6 +1296,7 @@ extern "C" {
attr: *mut ::pthread_rwlockattr_t,
val: ::c_int,
) -> ::c_int;
+ pub fn pthread_sigqueue(thread: ::pthread_t, sig: ::c_int, value: ::sigval) -> ::c_int;
pub fn mallinfo() -> ::mallinfo;
pub fn mallinfo2() -> ::mallinfo2;
pub fn malloc_info(options: ::c_int, stream: *mut ::FILE) -> ::c_int;
@@ -1305,11 +1313,28 @@ extern "C" {
buflen: ::size_t,
result: *mut *mut ::group,
) -> ::c_int;
+ pub fn fgetpwent_r(
+ stream: *mut ::FILE,
+ pwd: *mut ::passwd,
+ buf: *mut ::c_char,
+ buflen: ::size_t,
+ result: *mut *mut ::passwd,
+ ) -> ::c_int;
+ pub fn fgetgrent_r(
+ stream: *mut ::FILE,
+ grp: *mut ::group,
+ buf: *mut ::c_char,
+ buflen: ::size_t,
+ result: *mut *mut ::group,
+ ) -> ::c_int;
pub fn sethostid(hostid: ::c_long) -> ::c_int;
pub fn memfd_create(name: *const ::c_char, flags: ::c_uint) -> ::c_int;
pub fn mlock2(addr: *const ::c_void, len: ::size_t, flags: ::c_uint) -> ::c_int;
+
+ pub fn euidaccess(pathname: *const ::c_char, mode: ::c_int) -> ::c_int;
+ pub fn eaccess(pathname: *const ::c_char, mode: ::c_int) -> ::c_int;
}
extern "C" {
@@ -1324,6 +1349,11 @@ extern "C" {
pub fn malloc_trim(__pad: ::size_t) -> ::c_int;
}
+extern "C" {
+ pub fn gnu_get_libc_release() -> *const ::c_char;
+ pub fn gnu_get_libc_version() -> *const ::c_char;
+}
+
cfg_if! {
if #[cfg(any(target_arch = "x86",
target_arch = "arm",
diff --git a/vendor/libc/src/unix/linux_like/linux/mod.rs b/vendor/libc/src/unix/linux_like/linux/mod.rs
index 2086f705a..43f6399e4 100644
--- a/vendor/libc/src/unix/linux_like/linux/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/mod.rs
@@ -596,6 +596,13 @@ s! {
pub nla_len: u16,
pub nla_type: u16,
}
+
+ pub struct file_clone_range {
+ pub src_fd: ::__s64,
+ pub src_offset: ::__u64,
+ pub src_length: ::__u64,
+ pub dest_offset: ::__u64,
+ }
}
s_no_extra_traits! {
@@ -1299,6 +1306,181 @@ pub const _SC_THREAD_ROBUST_PRIO_PROTECT: ::c_int = 248;
pub const RLIM_SAVED_MAX: ::rlim_t = RLIM_INFINITY;
pub const RLIM_SAVED_CUR: ::rlim_t = RLIM_INFINITY;
+// elf.h - Fields in the e_ident array.
+pub const EI_NIDENT: usize = 16;
+
+pub const EI_MAG0: usize = 0;
+pub const ELFMAG0: u8 = 0x7f;
+pub const EI_MAG1: usize = 1;
+pub const ELFMAG1: u8 = b'E';
+pub const EI_MAG2: usize = 2;
+pub const ELFMAG2: u8 = b'L';
+pub const EI_MAG3: usize = 3;
+pub const ELFMAG3: u8 = b'F';
+pub const SELFMAG: usize = 4;
+
+pub const EI_CLASS: usize = 4;
+pub const ELFCLASSNONE: u8 = 0;
+pub const ELFCLASS32: u8 = 1;
+pub const ELFCLASS64: u8 = 2;
+pub const ELFCLASSNUM: usize = 3;
+
+pub const EI_DATA: usize = 5;
+pub const ELFDATANONE: u8 = 0;
+pub const ELFDATA2LSB: u8 = 1;
+pub const ELFDATA2MSB: u8 = 2;
+pub const ELFDATANUM: usize = 3;
+
+pub const EI_VERSION: usize = 6;
+
+pub const EI_OSABI: usize = 7;
+pub const ELFOSABI_NONE: u8 = 0;
+pub const ELFOSABI_SYSV: u8 = 0;
+pub const ELFOSABI_HPUX: u8 = 1;
+pub const ELFOSABI_NETBSD: u8 = 2;
+pub const ELFOSABI_GNU: u8 = 3;
+pub const ELFOSABI_LINUX: u8 = ELFOSABI_GNU;
+pub const ELFOSABI_SOLARIS: u8 = 6;
+pub const ELFOSABI_AIX: u8 = 7;
+pub const ELFOSABI_IRIX: u8 = 8;
+pub const ELFOSABI_FREEBSD: u8 = 9;
+pub const ELFOSABI_TRU64: u8 = 10;
+pub const ELFOSABI_MODESTO: u8 = 11;
+pub const ELFOSABI_OPENBSD: u8 = 12;
+pub const ELFOSABI_ARM: u8 = 97;
+pub const ELFOSABI_STANDALONE: u8 = 255;
+
+pub const EI_ABIVERSION: usize = 8;
+
+pub const EI_PAD: usize = 9;
+
+// elf.h - Legal values for e_type (object file type).
+pub const ET_NONE: u16 = 0;
+pub const ET_REL: u16 = 1;
+pub const ET_EXEC: u16 = 2;
+pub const ET_DYN: u16 = 3;
+pub const ET_CORE: u16 = 4;
+pub const ET_NUM: u16 = 5;
+pub const ET_LOOS: u16 = 0xfe00;
+pub const ET_HIOS: u16 = 0xfeff;
+pub const ET_LOPROC: u16 = 0xff00;
+pub const ET_HIPROC: u16 = 0xffff;
+
+// elf.h - Legal values for e_machine (architecture).
+pub const EM_NONE: u16 = 0;
+pub const EM_M32: u16 = 1;
+pub const EM_SPARC: u16 = 2;
+pub const EM_386: u16 = 3;
+pub const EM_68K: u16 = 4;
+pub const EM_88K: u16 = 5;
+pub const EM_860: u16 = 7;
+pub const EM_MIPS: u16 = 8;
+pub const EM_S370: u16 = 9;
+pub const EM_MIPS_RS3_LE: u16 = 10;
+pub const EM_PARISC: u16 = 15;
+pub const EM_VPP500: u16 = 17;
+pub const EM_SPARC32PLUS: u16 = 18;
+pub const EM_960: u16 = 19;
+pub const EM_PPC: u16 = 20;
+pub const EM_PPC64: u16 = 21;
+pub const EM_S390: u16 = 22;
+pub const EM_V800: u16 = 36;
+pub const EM_FR20: u16 = 37;
+pub const EM_RH32: u16 = 38;
+pub const EM_RCE: u16 = 39;
+pub const EM_ARM: u16 = 40;
+pub const EM_FAKE_ALPHA: u16 = 41;
+pub const EM_SH: u16 = 42;
+pub const EM_SPARCV9: u16 = 43;
+pub const EM_TRICORE: u16 = 44;
+pub const EM_ARC: u16 = 45;
+pub const EM_H8_300: u16 = 46;
+pub const EM_H8_300H: u16 = 47;
+pub const EM_H8S: u16 = 48;
+pub const EM_H8_500: u16 = 49;
+pub const EM_IA_64: u16 = 50;
+pub const EM_MIPS_X: u16 = 51;
+pub const EM_COLDFIRE: u16 = 52;
+pub const EM_68HC12: u16 = 53;
+pub const EM_MMA: u16 = 54;
+pub const EM_PCP: u16 = 55;
+pub const EM_NCPU: u16 = 56;
+pub const EM_NDR1: u16 = 57;
+pub const EM_STARCORE: u16 = 58;
+pub const EM_ME16: u16 = 59;
+pub const EM_ST100: u16 = 60;
+pub const EM_TINYJ: u16 = 61;
+pub const EM_X86_64: u16 = 62;
+pub const EM_PDSP: u16 = 63;
+pub const EM_FX66: u16 = 66;
+pub const EM_ST9PLUS: u16 = 67;
+pub const EM_ST7: u16 = 68;
+pub const EM_68HC16: u16 = 69;
+pub const EM_68HC11: u16 = 70;
+pub const EM_68HC08: u16 = 71;
+pub const EM_68HC05: u16 = 72;
+pub const EM_SVX: u16 = 73;
+pub const EM_ST19: u16 = 74;
+pub const EM_VAX: u16 = 75;
+pub const EM_CRIS: u16 = 76;
+pub const EM_JAVELIN: u16 = 77;
+pub const EM_FIREPATH: u16 = 78;
+pub const EM_ZSP: u16 = 79;
+pub const EM_MMIX: u16 = 80;
+pub const EM_HUANY: u16 = 81;
+pub const EM_PRISM: u16 = 82;
+pub const EM_AVR: u16 = 83;
+pub const EM_FR30: u16 = 84;
+pub const EM_D10V: u16 = 85;
+pub const EM_D30V: u16 = 86;
+pub const EM_V850: u16 = 87;
+pub const EM_M32R: u16 = 88;
+pub const EM_MN10300: u16 = 89;
+pub const EM_MN10200: u16 = 90;
+pub const EM_PJ: u16 = 91;
+pub const EM_OPENRISC: u16 = 92;
+pub const EM_ARC_A5: u16 = 93;
+pub const EM_XTENSA: u16 = 94;
+pub const EM_AARCH64: u16 = 183;
+pub const EM_TILEPRO: u16 = 188;
+pub const EM_TILEGX: u16 = 191;
+pub const EM_ALPHA: u16 = 0x9026;
+
+// elf.h - Legal values for e_version (version).
+pub const EV_NONE: u32 = 0;
+pub const EV_CURRENT: u32 = 1;
+pub const EV_NUM: u32 = 2;
+
+// elf.h - Legal values for p_type (segment type).
+pub const PT_NULL: u32 = 0;
+pub const PT_LOAD: u32 = 1;
+pub const PT_DYNAMIC: u32 = 2;
+pub const PT_INTERP: u32 = 3;
+pub const PT_NOTE: u32 = 4;
+pub const PT_SHLIB: u32 = 5;
+pub const PT_PHDR: u32 = 6;
+pub const PT_TLS: u32 = 7;
+pub const PT_NUM: u32 = 8;
+pub const PT_LOOS: u32 = 0x60000000;
+pub const PT_GNU_EH_FRAME: u32 = 0x6474e550;
+pub const PT_GNU_STACK: u32 = 0x6474e551;
+pub const PT_GNU_RELRO: u32 = 0x6474e552;
+pub const PT_LOSUNW: u32 = 0x6ffffffa;
+pub const PT_SUNWBSS: u32 = 0x6ffffffa;
+pub const PT_SUNWSTACK: u32 = 0x6ffffffb;
+pub const PT_HISUNW: u32 = 0x6fffffff;
+pub const PT_HIOS: u32 = 0x6fffffff;
+pub const PT_LOPROC: u32 = 0x70000000;
+pub const PT_HIPROC: u32 = 0x7fffffff;
+
+// Legal values for p_flags (segment flags).
+pub const PF_X: u32 = 1 << 0;
+pub const PF_W: u32 = 1 << 1;
+pub const PF_R: u32 = 1 << 2;
+pub const PF_MASKOS: u32 = 0x0ff00000;
+pub const PF_MASKPROC: u32 = 0xf0000000;
+
+// elf.h - Legal values for a_type (entry type).
pub const AT_NULL: ::c_ulong = 0;
pub const AT_IGNORE: ::c_ulong = 1;
pub const AT_EXECFD: ::c_ulong = 2;
@@ -1565,6 +1747,7 @@ pub const MSG_INFO: ::c_int = 12;
pub const MSG_NOERROR: ::c_int = 0o10000;
pub const MSG_EXCEPT: ::c_int = 0o20000;
+pub const MSG_ZEROCOPY: ::c_int = 0x4000000;
pub const SHM_R: ::c_int = 0o400;
pub const SHM_W: ::c_int = 0o200;
@@ -1810,6 +1993,7 @@ pub const ITIMER_PROF: ::c_int = 2;
pub const TFD_CLOEXEC: ::c_int = O_CLOEXEC;
pub const TFD_NONBLOCK: ::c_int = O_NONBLOCK;
pub const TFD_TIMER_ABSTIME: ::c_int = 1;
+pub const TFD_TIMER_CANCEL_ON_SET: ::c_int = 2;
pub const _POSIX_VDISABLE: ::cc_t = 0;
@@ -1841,6 +2025,17 @@ pub const IPV6_FLOWINFO_PRIORITY: ::c_int = 0x0ff00000;
pub const IPV6_RTHDR_LOOSE: ::c_int = 0;
pub const IPV6_RTHDR_STRICT: ::c_int = 1;
+// SO_MEMINFO offsets
+pub const SK_MEMINFO_RMEM_ALLOC: ::c_int = 0;
+pub const SK_MEMINFO_RCVBUF: ::c_int = 1;
+pub const SK_MEMINFO_WMEM_ALLOC: ::c_int = 2;
+pub const SK_MEMINFO_SNDBUF: ::c_int = 3;
+pub const SK_MEMINFO_FWD_ALLOC: ::c_int = 4;
+pub const SK_MEMINFO_WMEM_QUEUED: ::c_int = 5;
+pub const SK_MEMINFO_OPTMEM: ::c_int = 6;
+pub const SK_MEMINFO_BACKLOG: ::c_int = 7;
+pub const SK_MEMINFO_DROPS: ::c_int = 8;
+
pub const IUTF8: ::tcflag_t = 0x00004000;
#[cfg(not(all(target_env = "uclibc", target_arch = "mips")))]
pub const CMSPAR: ::tcflag_t = 0o10000000000;
@@ -1938,26 +2133,6 @@ pub const RESOLVE_BENEATH: ::__u64 = 0x08;
pub const RESOLVE_IN_ROOT: ::__u64 = 0x10;
pub const RESOLVE_CACHED: ::__u64 = 0x20;
-// these are used in the p_type field of Elf32_Phdr and Elf64_Phdr, which has
-// the type Elf32Word and Elf64Word respectively. Luckily, both of those are u32
-// so we can use that type here to avoid having to cast.
-pub const PT_NULL: u32 = 0;
-pub const PT_LOAD: u32 = 1;
-pub const PT_DYNAMIC: u32 = 2;
-pub const PT_INTERP: u32 = 3;
-pub const PT_NOTE: u32 = 4;
-pub const PT_SHLIB: u32 = 5;
-pub const PT_PHDR: u32 = 6;
-pub const PT_TLS: u32 = 7;
-pub const PT_NUM: u32 = 8;
-pub const PT_LOOS: u32 = 0x60000000;
-pub const PT_GNU_EH_FRAME: u32 = 0x6474e550;
-pub const PT_GNU_STACK: u32 = 0x6474e551;
-pub const PT_GNU_RELRO: u32 = 0x6474e552;
-pub const PT_HIOS: u32 = 0x6fffffff;
-pub const PT_LOPROC: u32 = 0x70000000;
-pub const PT_HIPROC: u32 = 0x7fffffff;
-
// linux/if_ether.h
pub const ETH_ALEN: ::c_int = 6;
pub const ETH_HLEN: ::c_int = 14;
@@ -2073,6 +2248,7 @@ pub const NFNLGRP_CONNTRACK_EXP_UPDATE: ::c_int = 5;
pub const NFNLGRP_CONNTRACK_EXP_DESTROY: ::c_int = 6;
pub const NFNLGRP_NFTABLES: ::c_int = 7;
pub const NFNLGRP_ACCT_QUOTA: ::c_int = 8;
+pub const NFNLGRP_NFTRACE: ::c_int = 9;
pub const NFNETLINK_V0: ::c_int = 0;
@@ -2088,15 +2264,23 @@ pub const NFNL_SUBSYS_CTNETLINK_TIMEOUT: ::c_int = 8;
pub const NFNL_SUBSYS_CTHELPER: ::c_int = 9;
pub const NFNL_SUBSYS_NFTABLES: ::c_int = 10;
pub const NFNL_SUBSYS_NFT_COMPAT: ::c_int = 11;
-pub const NFNL_SUBSYS_COUNT: ::c_int = 12;
+pub const NFNL_SUBSYS_HOOK: ::c_int = 12;
+pub const NFNL_SUBSYS_COUNT: ::c_int = 13;
pub const NFNL_MSG_BATCH_BEGIN: ::c_int = NLMSG_MIN_TYPE;
pub const NFNL_MSG_BATCH_END: ::c_int = NLMSG_MIN_TYPE + 1;
+pub const NFNL_BATCH_UNSPEC: ::c_int = 0;
+pub const NFNL_BATCH_GENID: ::c_int = 1;
+
// linux/netfilter/nfnetlink_log.h
pub const NFULNL_MSG_PACKET: ::c_int = 0;
pub const NFULNL_MSG_CONFIG: ::c_int = 1;
+pub const NFULA_VLAN_UNSPEC: ::c_int = 0;
+pub const NFULA_VLAN_PROTO: ::c_int = 1;
+pub const NFULA_VLAN_TCI: ::c_int = 2;
+
pub const NFULA_UNSPEC: ::c_int = 0;
pub const NFULA_PACKET_HDR: ::c_int = 1;
pub const NFULA_MARK: ::c_int = 2;
@@ -2117,6 +2301,8 @@ pub const NFULA_HWHEADER: ::c_int = 16;
pub const NFULA_HWLEN: ::c_int = 17;
pub const NFULA_CT: ::c_int = 18;
pub const NFULA_CT_INFO: ::c_int = 19;
+pub const NFULA_VLAN: ::c_int = 20;
+pub const NFULA_L2HDR: ::c_int = 21;
pub const NFULNL_CFG_CMD_NONE: ::c_int = 0;
pub const NFULNL_CFG_CMD_BIND: ::c_int = 1;
@@ -2140,7 +2326,7 @@ pub const NFULNL_CFG_F_SEQ: ::c_int = 0x0001;
pub const NFULNL_CFG_F_SEQ_GLOBAL: ::c_int = 0x0002;
pub const NFULNL_CFG_F_CONNTRACK: ::c_int = 0x0004;
-// linux/netfilter/nfnetlink_log.h
+// linux/netfilter/nfnetlink_queue.h
pub const NFQNL_MSG_PACKET: ::c_int = 0;
pub const NFQNL_MSG_VERDICT: ::c_int = 1;
pub const NFQNL_MSG_CONFIG: ::c_int = 2;
@@ -2165,18 +2351,13 @@ pub const NFQA_EXP: ::c_int = 15;
pub const NFQA_UID: ::c_int = 16;
pub const NFQA_GID: ::c_int = 17;
pub const NFQA_SECCTX: ::c_int = 18;
-/*
- FIXME: These are not yet available in musl sanitized kernel headers and
- make the tests fail. Enable them once musl has them.
-
- See https://github.com/rust-lang/libc/pull/1628 for more details.
pub const NFQA_VLAN: ::c_int = 19;
pub const NFQA_L2HDR: ::c_int = 20;
+pub const NFQA_PRIORITY: ::c_int = 21;
pub const NFQA_VLAN_UNSPEC: ::c_int = 0;
pub const NFQA_VLAN_PROTO: ::c_int = 1;
pub const NFQA_VLAN_TCI: ::c_int = 2;
-*/
pub const NFQNL_CFG_CMD_NONE: ::c_int = 0;
pub const NFQNL_CFG_CMD_BIND: ::c_int = 1;
@@ -2206,6 +2387,8 @@ pub const NFQA_SKB_CSUMNOTREADY: ::c_int = 0x0001;
pub const NFQA_SKB_GSO: ::c_int = 0x0002;
pub const NFQA_SKB_CSUM_NOTVERIFIED: ::c_int = 0x0004;
+// linux/genetlink.h
+
pub const GENL_NAMSIZ: ::c_int = 16;
pub const GENL_MIN_ID: ::c_int = NLMSG_MIN_TYPE;
@@ -2648,6 +2831,62 @@ pub const ARPD_LOOKUP: ::c_ushort = 0x02;
pub const ARPD_FLUSH: ::c_ushort = 0x03;
pub const ATF_MAGIC: ::c_int = 0x80;
+// userspace compat definitions for RTNLGRP_*
+pub const RTMGRP_LINK: ::c_int = 0x00001;
+pub const RTMGRP_NOTIFY: ::c_int = 0x00002;
+pub const RTMGRP_NEIGH: ::c_int = 0x00004;
+pub const RTMGRP_TC: ::c_int = 0x00008;
+pub const RTMGRP_IPV4_IFADDR: ::c_int = 0x00010;
+pub const RTMGRP_IPV4_MROUTE: ::c_int = 0x00020;
+pub const RTMGRP_IPV4_ROUTE: ::c_int = 0x00040;
+pub const RTMGRP_IPV4_RULE: ::c_int = 0x00080;
+pub const RTMGRP_IPV6_IFADDR: ::c_int = 0x00100;
+pub const RTMGRP_IPV6_MROUTE: ::c_int = 0x00200;
+pub const RTMGRP_IPV6_ROUTE: ::c_int = 0x00400;
+pub const RTMGRP_IPV6_IFINFO: ::c_int = 0x00800;
+pub const RTMGRP_DECnet_IFADDR: ::c_int = 0x01000;
+pub const RTMGRP_DECnet_ROUTE: ::c_int = 0x04000;
+pub const RTMGRP_IPV6_PREFIX: ::c_int = 0x20000;
+
+// enum rtnetlink_groups
+pub const RTNLGRP_NONE: ::c_uint = 0x00;
+pub const RTNLGRP_LINK: ::c_uint = 0x01;
+pub const RTNLGRP_NOTIFY: ::c_uint = 0x02;
+pub const RTNLGRP_NEIGH: ::c_uint = 0x03;
+pub const RTNLGRP_TC: ::c_uint = 0x04;
+pub const RTNLGRP_IPV4_IFADDR: ::c_uint = 0x05;
+pub const RTNLGRP_IPV4_MROUTE: ::c_uint = 0x06;
+pub const RTNLGRP_IPV4_ROUTE: ::c_uint = 0x07;
+pub const RTNLGRP_IPV4_RULE: ::c_uint = 0x08;
+pub const RTNLGRP_IPV6_IFADDR: ::c_uint = 0x09;
+pub const RTNLGRP_IPV6_MROUTE: ::c_uint = 0x0a;
+pub const RTNLGRP_IPV6_ROUTE: ::c_uint = 0x0b;
+pub const RTNLGRP_IPV6_IFINFO: ::c_uint = 0x0c;
+pub const RTNLGRP_DECnet_IFADDR: ::c_uint = 0x0d;
+pub const RTNLGRP_NOP2: ::c_uint = 0x0e;
+pub const RTNLGRP_DECnet_ROUTE: ::c_uint = 0x0f;
+pub const RTNLGRP_DECnet_RULE: ::c_uint = 0x10;
+pub const RTNLGRP_NOP4: ::c_uint = 0x11;
+pub const RTNLGRP_IPV6_PREFIX: ::c_uint = 0x12;
+pub const RTNLGRP_IPV6_RULE: ::c_uint = 0x13;
+pub const RTNLGRP_ND_USEROPT: ::c_uint = 0x14;
+pub const RTNLGRP_PHONET_IFADDR: ::c_uint = 0x15;
+pub const RTNLGRP_PHONET_ROUTE: ::c_uint = 0x16;
+pub const RTNLGRP_DCB: ::c_uint = 0x17;
+pub const RTNLGRP_IPV4_NETCONF: ::c_uint = 0x18;
+pub const RTNLGRP_IPV6_NETCONF: ::c_uint = 0x19;
+pub const RTNLGRP_MDB: ::c_uint = 0x1a;
+pub const RTNLGRP_MPLS_ROUTE: ::c_uint = 0x1b;
+pub const RTNLGRP_NSID: ::c_uint = 0x1c;
+pub const RTNLGRP_MPLS_NETCONF: ::c_uint = 0x1d;
+pub const RTNLGRP_IPV4_MROUTE_R: ::c_uint = 0x1e;
+pub const RTNLGRP_IPV6_MROUTE_R: ::c_uint = 0x1f;
+pub const RTNLGRP_NEXTHOP: ::c_uint = 0x20;
+pub const RTNLGRP_BRVLAN: ::c_uint = 0x21;
+pub const RTNLGRP_MCTP_IFADDR: ::c_uint = 0x22;
+pub const RTNLGRP_TUNNEL: ::c_uint = 0x23;
+pub const RTNLGRP_STATS: ::c_uint = 0x24;
+
// linux/module.h
pub const MODULE_INIT_IGNORE_MODVERSIONS: ::c_uint = 0x0001;
pub const MODULE_INIT_IGNORE_VERMAGIC: ::c_uint = 0x0002;
@@ -2660,6 +2899,14 @@ pub const SOF_TIMESTAMPING_RX_SOFTWARE: ::c_uint = 1 << 3;
pub const SOF_TIMESTAMPING_SOFTWARE: ::c_uint = 1 << 4;
pub const SOF_TIMESTAMPING_SYS_HARDWARE: ::c_uint = 1 << 5;
pub const SOF_TIMESTAMPING_RAW_HARDWARE: ::c_uint = 1 << 6;
+pub const SOF_TIMESTAMPING_OPT_ID: ::c_uint = 1 << 7;
+pub const SOF_TIMESTAMPING_TX_SCHED: ::c_uint = 1 << 8;
+pub const SOF_TIMESTAMPING_TX_ACK: ::c_uint = 1 << 9;
+pub const SOF_TIMESTAMPING_OPT_CMSG: ::c_uint = 1 << 10;
+pub const SOF_TIMESTAMPING_OPT_TSONLY: ::c_uint = 1 << 11;
+pub const SOF_TIMESTAMPING_OPT_STATS: ::c_uint = 1 << 12;
+pub const SOF_TIMESTAMPING_OPT_PKTINFO: ::c_uint = 1 << 13;
+pub const SOF_TIMESTAMPING_OPT_TX_SWHW: ::c_uint = 1 << 14;
pub const SOF_TXTIME_DEADLINE_MODE: u32 = 1 << 0;
pub const SOF_TXTIME_REPORT_ERRORS: u32 = 1 << 1;
@@ -3061,6 +3308,7 @@ pub const FUTEX_WAIT_BITSET: ::c_int = 9;
pub const FUTEX_WAKE_BITSET: ::c_int = 10;
pub const FUTEX_WAIT_REQUEUE_PI: ::c_int = 11;
pub const FUTEX_CMP_REQUEUE_PI: ::c_int = 12;
+pub const FUTEX_LOCK_PI2: ::c_int = 13;
pub const FUTEX_PRIVATE_FLAG: ::c_int = 128;
pub const FUTEX_CLOCK_REALTIME: ::c_int = 256;
@@ -3329,17 +3577,6 @@ f! {
minor as ::c_uint
}
- pub fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
- let major = major as ::dev_t;
- let minor = minor as ::dev_t;
- let mut dev = 0;
- dev |= (major & 0x00000fff) << 8;
- dev |= (major & 0xfffff000) << 32;
- dev |= (minor & 0x000000ff) << 0;
- dev |= (minor & 0xffffff00) << 12;
- dev
- }
-
pub fn IPTOS_TOS(tos: u8) -> u8 {
tos & IPTOS_TOS_MASK
}
@@ -3381,6 +3618,19 @@ f! {
}
}
+safe_f! {
+ pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
+ let major = major as ::dev_t;
+ let minor = minor as ::dev_t;
+ let mut dev = 0;
+ dev |= (major & 0x00000fff) << 8;
+ dev |= (major & 0xfffff000) << 32;
+ dev |= (minor & 0x000000ff) << 0;
+ dev |= (minor & 0xffffff00) << 12;
+ dev
+ }
+}
+
cfg_if! {
if #[cfg(not(target_env = "uclibc"))] {
extern "C" {
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs
index 7e4868b85..c47fa2c4c 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/arm/mod.rs
@@ -837,6 +837,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
extern "C" {
pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs
index 7443a09ed..40b507bcd 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/mips/mod.rs
@@ -777,6 +777,14 @@ pub const SYS_faccessat2: ::c_long = 4000 + 439;
pub const SYS_process_madvise: ::c_long = 4000 + 440;
pub const SYS_epoll_pwait2: ::c_long = 4000 + 441;
pub const SYS_mount_setattr: ::c_long = 4000 + 442;
+pub const SYS_quotactl_fd: ::c_long = 4000 + 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 4000 + 444;
+pub const SYS_landlock_add_rule: ::c_long = 4000 + 445;
+pub const SYS_landlock_restrict_self: ::c_long = 4000 + 446;
+pub const SYS_memfd_secret: ::c_long = 4000 + 447;
+pub const SYS_process_mrelease: ::c_long = 4000 + 448;
+pub const SYS_futex_waitv: ::c_long = 4000 + 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 4000 + 450;
cfg_if! {
if #[cfg(libc_align)] {
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs
index 6d2ecf2d8..63824fbf5 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/mod.rs
@@ -3,6 +3,7 @@ pub type c_ulong = u32;
pub type nlink_t = u32;
pub type blksize_t = ::c_long;
pub type __u64 = ::c_ulonglong;
+pub type __s64 = ::c_longlong;
pub type regoff_t = ::c_int;
s! {
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs
index d7ca03813..5b1bf17ed 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/powerpc.rs
@@ -790,6 +790,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
extern "C" {
pub fn getrandom(buf: *mut ::c_void, buflen: ::size_t, flags: ::c_uint) -> ::ssize_t;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
index 9b68ce258..573624620 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/riscv32/mod.rs
@@ -271,6 +271,7 @@ pub const ENOPROTOOPT: ::c_int = 92;
pub const EPROTONOSUPPORT: ::c_int = 93;
pub const ESOCKTNOSUPPORT: ::c_int = 94;
pub const EOPNOTSUPP: ::c_int = 95;
+pub const ENOTSUP: ::c_int = EOPNOTSUPP;
pub const EPFNOSUPPORT: ::c_int = 96;
pub const EAFNOSUPPORT: ::c_int = 97;
pub const EADDRINUSE: ::c_int = 98;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs
index a6efea13b..c319b91b6 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b32/x86/mod.rs
@@ -856,6 +856,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
// offsets in user_regs_structs, from sys/reg.h
pub const EBX: ::c_int = 0;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/align.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/align.rs
index 81c55c64a..a4bf9bff4 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/align.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/align.rs
@@ -24,4 +24,19 @@ s! {
pub pstate: ::c_ulong,
__reserved: [[u64; 32]; 16],
}
+
+ #[repr(align(8))]
+ pub struct clone_args {
+ pub flags: ::c_ulonglong,
+ pub pidfd: ::c_ulonglong,
+ pub child_tid: ::c_ulonglong,
+ pub parent_tid: ::c_ulonglong,
+ pub exit_signal: ::c_ulonglong,
+ pub stack: ::c_ulonglong,
+ pub stack_size: ::c_ulonglong,
+ pub tls: ::c_ulonglong,
+ pub set_tid: ::c_ulonglong,
+ pub set_tid_size: ::c_ulonglong,
+ pub cgroup: ::c_ulonglong,
+ }
}
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
index 845707dcd..14b4bc6d6 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/aarch64/mod.rs
@@ -1,5 +1,6 @@
pub type c_char = u8;
pub type __u64 = ::c_ulonglong;
+pub type __s64 = ::c_longlong;
pub type wchar_t = u32;
pub type nlink_t = u32;
pub type blksize_t = ::c_int;
@@ -555,6 +556,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
pub const MCL_CURRENT: ::c_int = 0x0001;
pub const MCL_FUTURE: ::c_int = 0x0002;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs
index cb9bb930d..22ac91690 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/mips64.rs
@@ -1,6 +1,7 @@
pub type c_char = i8;
pub type wchar_t = i32;
pub type __u64 = ::c_ulong;
+pub type __s64 = ::c_long;
pub type nlink_t = u64;
pub type blksize_t = i64;
@@ -444,6 +445,14 @@ pub const SYS_faccessat2: ::c_long = 5000 + 439;
pub const SYS_process_madvise: ::c_long = 5000 + 440;
pub const SYS_epoll_pwait2: ::c_long = 5000 + 441;
pub const SYS_mount_setattr: ::c_long = 5000 + 442;
+pub const SYS_quotactl_fd: ::c_long = 5000 + 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 5000 + 444;
+pub const SYS_landlock_add_rule: ::c_long = 5000 + 445;
+pub const SYS_landlock_restrict_self: ::c_long = 5000 + 446;
+pub const SYS_memfd_secret: ::c_long = 5000 + 447;
+pub const SYS_process_mrelease: ::c_long = 5000 + 448;
+pub const SYS_futex_waitv: ::c_long = 5000 + 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 5000 + 450;
pub const O_DIRECT: ::c_int = 0x8000;
pub const O_DIRECTORY: ::c_int = 0x10000;
@@ -458,7 +467,7 @@ pub const O_SYNC: ::c_int = 0x4010;
pub const O_RSYNC: ::c_int = 0x4010;
pub const O_DSYNC: ::c_int = 0x10;
pub const O_ASYNC: ::c_int = 0x1000;
-pub const O_LARGEFILE: ::c_int = 0;
+pub const O_LARGEFILE: ::c_int = 0x2000;
pub const EDEADLK: ::c_int = 45;
pub const ENAMETOOLONG: ::c_int = 78;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs
index f17d72cb1..0bb4cf837 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/powerpc64.rs
@@ -1,6 +1,7 @@
pub type c_char = u8;
pub type wchar_t = i32;
pub type __u64 = ::c_ulong;
+pub type __s64 = ::c_long;
pub type nlink_t = u64;
pub type blksize_t = ::c_long;
@@ -600,6 +601,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
pub const EDEADLK: ::c_int = 58;
pub const EDEADLOCK: ::c_int = EDEADLK;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
index fcb28c3cf..f354293e0 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/riscv64/mod.rs
@@ -8,6 +8,7 @@ pub type blksize_t = ::c_int;
pub type fsblkcnt64_t = ::c_ulong;
pub type fsfilcnt64_t = ::c_ulong;
pub type __u64 = ::c_ulonglong;
+pub type __s64 = ::c_longlong;
s! {
pub struct pthread_attr_t {
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs
index 5fdd03d2c..60bfc8d3e 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/s390x.rs
@@ -4,6 +4,7 @@ pub type nlink_t = u64;
pub type wchar_t = i32;
pub type greg_t = u64;
pub type __u64 = u64;
+pub type __s64 = i64;
s! {
pub struct ipc_perm {
@@ -221,6 +222,7 @@ pub const ENOPROTOOPT: ::c_int = 92;
pub const EPROTONOSUPPORT: ::c_int = 93;
pub const ESOCKTNOSUPPORT: ::c_int = 94;
pub const EOPNOTSUPP: ::c_int = 95;
+pub const ENOTSUP: ::c_int = EOPNOTSUPP;
pub const EPFNOSUPPORT: ::c_int = 96;
pub const EAFNOSUPPORT: ::c_int = 97;
pub const ENETDOWN: ::c_int = 100;
@@ -709,3 +711,11 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/align.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/align.rs
index 7ca870fd0..94391a01a 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/align.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/align.rs
@@ -4,4 +4,22 @@ s_no_extra_traits! {
pub struct max_align_t {
priv_: [f64; 4]
}
+
+}
+
+s! {
+ #[repr(align(8))]
+ pub struct clone_args {
+ pub flags: ::c_ulonglong,
+ pub pidfd: ::c_ulonglong,
+ pub child_tid: ::c_ulonglong,
+ pub parent_tid: ::c_ulonglong,
+ pub exit_signal: ::c_ulonglong,
+ pub stack: ::c_ulonglong,
+ pub stack_size: ::c_ulonglong,
+ pub tls: ::c_ulonglong,
+ pub set_tid: ::c_ulonglong,
+ pub set_tid_size: ::c_ulonglong,
+ pub cgroup: ::c_ulonglong,
+ }
}
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs
index 3429c2c1a..8198dc2f3 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/b64/x86_64/mod.rs
@@ -3,6 +3,7 @@ pub type wchar_t = i32;
pub type nlink_t = u64;
pub type blksize_t = ::c_long;
pub type __u64 = ::c_ulonglong;
+pub type __s64 = ::c_longlong;
pub type greg_t = i64;
s! {
@@ -599,6 +600,14 @@ pub const SYS_faccessat2: ::c_long = 439;
pub const SYS_process_madvise: ::c_long = 440;
pub const SYS_epoll_pwait2: ::c_long = 441;
pub const SYS_mount_setattr: ::c_long = 442;
+pub const SYS_quotactl_fd: ::c_long = 443;
+pub const SYS_landlock_create_ruleset: ::c_long = 444;
+pub const SYS_landlock_add_rule: ::c_long = 445;
+pub const SYS_landlock_restrict_self: ::c_long = 446;
+pub const SYS_memfd_secret: ::c_long = 447;
+pub const SYS_process_mrelease: ::c_long = 448;
+pub const SYS_futex_waitv: ::c_long = 449;
+pub const SYS_set_mempolicy_home_node: ::c_long = 450;
// offsets in user_regs_structs, from sys/reg.h
pub const R15: ::c_int = 0;
diff --git a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
index 707107345..894f377ac 100644
--- a/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/musl/mod.rs
@@ -529,6 +529,8 @@ pub const MAP_ANONYMOUS: ::c_int = MAP_ANON;
pub const SOCK_DCCP: ::c_int = 6;
pub const SOCK_PACKET: ::c_int = 10;
+pub const SOMAXCONN: ::c_int = 128;
+
#[deprecated(since = "0.2.55", note = "Use SIGSYS instead")]
pub const SIGUNUSED: ::c_int = ::SIGSYS;
@@ -752,6 +754,9 @@ extern "C" {
pub fn memfd_create(name: *const ::c_char, flags: ::c_uint) -> ::c_int;
pub fn mlock2(addr: *const ::c_void, len: ::size_t, flags: ::c_uint) -> ::c_int;
pub fn malloc_usable_size(ptr: *mut ::c_void) -> ::size_t;
+
+ pub fn euidaccess(pathname: *const ::c_char, mode: ::c_int) -> ::c_int;
+ pub fn eaccess(pathname: *const ::c_char, mode: ::c_int) -> ::c_int;
}
cfg_if! {
diff --git a/vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs b/vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs
index e0279574b..a0035b277 100644
--- a/vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/uclibc/arm/mod.rs
@@ -19,6 +19,7 @@ pub type blkcnt_t = ::c_long;
pub type fsblkcnt64_t = u64;
pub type fsfilcnt64_t = u64;
pub type __u64 = ::c_ulonglong;
+pub type __s64 = ::c_longlong;
s! {
pub struct cmsghdr {
diff --git a/vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs b/vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs
index fc80f0f9d..4a01e0cd8 100644
--- a/vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/uclibc/mod.rs
@@ -235,6 +235,8 @@ pub const PRIO_PROCESS: ::c_int = 0;
pub const PRIO_PGRP: ::c_int = 1;
pub const PRIO_USER: ::c_int = 2;
+pub const SOMAXCONN: ::c_int = 128;
+
pub const ST_RELATIME: ::c_ulong = 4096;
pub const AF_NFC: ::c_int = PF_NFC;
diff --git a/vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs b/vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs
index 529711fce..43ac79296 100644
--- a/vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs
+++ b/vendor/libc/src/unix/linux_like/linux/uclibc/x86_64/mod.rs
@@ -20,6 +20,7 @@ pub type wchar_t = ::c_int;
pub type fsblkcnt64_t = u64;
pub type fsfilcnt64_t = u64;
pub type __u64 = ::c_ulong;
+pub type __s64 = ::c_long;
s! {
pub struct ipc_perm {
diff --git a/vendor/libc/src/unix/linux_like/mod.rs b/vendor/libc/src/unix/linux_like/mod.rs
index 125c5d4e4..46964cc17 100644
--- a/vendor/libc/src/unix/linux_like/mod.rs
+++ b/vendor/libc/src/unix/linux_like/mod.rs
@@ -759,8 +759,6 @@ pub const PF_IEEE802154: ::c_int = AF_IEEE802154;
pub const PF_CAIF: ::c_int = AF_CAIF;
pub const PF_ALG: ::c_int = AF_ALG;
-pub const SOMAXCONN: ::c_int = 128;
-
pub const MSG_OOB: ::c_int = 1;
pub const MSG_PEEK: ::c_int = 2;
pub const MSG_DONTROUTE: ::c_int = 4;
@@ -1213,6 +1211,15 @@ pub const PIPE_BUF: usize = 4096;
pub const SI_LOAD_SHIFT: ::c_uint = 16;
+// si_code values for SIGBUS signal
+pub const BUS_ADRALN: ::c_int = 1;
+pub const BUS_ADRERR: ::c_int = 2;
+pub const BUS_OBJERR: ::c_int = 3;
+// Linux-specific si_code values for SIGBUS signal
+pub const BUS_MCEERR_AR: ::c_int = 4;
+pub const BUS_MCEERR_AO: ::c_int = 5;
+
+// si_code values for SIGCHLD signal
pub const CLD_EXITED: ::c_int = 1;
pub const CLD_KILLED: ::c_int = 2;
pub const CLD_DUMPED: ::c_int = 3;
@@ -1427,6 +1434,7 @@ cfg_if! {
pub const UDF_SUPER_MAGIC: ::c_long = 0x15013346;
pub const USBDEVICE_SUPER_MAGIC: ::c_long = 0x00009fa2;
pub const XENFS_SUPER_MAGIC: ::c_long = 0xabba1974;
+ pub const NSFS_MAGIC: ::c_long = 0x6e736673;
} else if #[cfg(target_arch = "s390x")] {
pub const ADFS_SUPER_MAGIC: ::c_uint = 0x0000adf5;
pub const AFFS_SUPER_MAGIC: ::c_uint = 0x0000adff;
@@ -1480,6 +1488,7 @@ cfg_if! {
pub const UDF_SUPER_MAGIC: ::c_uint = 0x15013346;
pub const USBDEVICE_SUPER_MAGIC: ::c_uint = 0x00009fa2;
pub const XENFS_SUPER_MAGIC: ::c_uint = 0xabba1974;
+ pub const NSFS_MAGIC: ::c_uint = 0x6e736673;
}
}
@@ -1726,8 +1735,6 @@ extern "C" {
pub fn clearenv() -> ::c_int;
pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t, options: ::c_int)
-> ::c_int;
- pub fn setreuid(ruid: ::uid_t, euid: ::uid_t) -> ::c_int;
- pub fn setregid(rgid: ::gid_t, egid: ::gid_t) -> ::c_int;
pub fn getresuid(ruid: *mut ::uid_t, euid: *mut ::uid_t, suid: *mut ::uid_t) -> ::c_int;
pub fn getresgid(rgid: *mut ::gid_t, egid: *mut ::gid_t, sgid: *mut ::gid_t) -> ::c_int;
pub fn acct(filename: *const ::c_char) -> ::c_int;
diff --git a/vendor/libc/src/unix/mod.rs b/vendor/libc/src/unix/mod.rs
index ecee44411..ecc693e3d 100644
--- a/vendor/libc/src/unix/mod.rs
+++ b/vendor/libc/src/unix/mod.rs
@@ -346,13 +346,13 @@ cfg_if! {
} else if #[cfg(target_os = "emscripten")] {
#[link(name = "c")]
extern {}
- } else if #[cfg(all(target_os = "netbsd",
- feature = "rustc-dep-of-std",
- target_vendor = "rumprun"))] {
- // Since we don't use -nodefaultlibs on Rumprun, libc is always pulled
- // in automatically by the linker. We avoid passing it explicitly, as it
- // causes some versions of binutils to crash with an assertion failure.
- #[link(name = "m")]
+ } else if #[cfg(all(target_os = "android", feature = "rustc-dep-of-std"))] {
+ #[link(name = "c", kind = "static", modifiers = "-bundle",
+ cfg(target_feature = "crt-static"))]
+ #[link(name = "m", kind = "static", modifiers = "-bundle",
+ cfg(target_feature = "crt-static"))]
+ #[link(name = "m", cfg(not(target_feature = "crt-static")))]
+ #[link(name = "c", cfg(not(target_feature = "crt-static")))]
extern {}
} else if #[cfg(any(target_os = "macos",
target_os = "ios",
@@ -901,6 +901,8 @@ extern "C" {
pub fn setpgid(pid: pid_t, pgid: pid_t) -> ::c_int;
pub fn setsid() -> pid_t;
pub fn setuid(uid: uid_t) -> ::c_int;
+ pub fn setreuid(ruid: uid_t, euid: uid_t) -> ::c_int;
+ pub fn setregid(rgid: gid_t, egid: gid_t) -> ::c_int;
#[cfg_attr(
all(target_os = "macos", target_arch = "x86"),
link_name = "sleep$UNIX2003"
diff --git a/vendor/libc/src/unix/newlib/espidf/mod.rs b/vendor/libc/src/unix/newlib/espidf/mod.rs
index 38c99c6b3..804cd6645 100644
--- a/vendor/libc/src/unix/newlib/espidf/mod.rs
+++ b/vendor/libc/src/unix/newlib/espidf/mod.rs
@@ -83,6 +83,9 @@ pub const MSG_DONTROUTE: ::c_int = 0x4;
pub const MSG_WAITALL: ::c_int = 0x02;
pub const MSG_MORE: ::c_int = 0x10;
pub const MSG_NOSIGNAL: ::c_int = 0x20;
+pub const MSG_TRUNC: ::c_int = 0x04;
+pub const MSG_CTRUNC: ::c_int = 0x08;
+pub const MSG_EOR: ::c_int = 0x08;
pub const PTHREAD_STACK_MIN: ::size_t = 768;
@@ -100,6 +103,8 @@ extern "C" {
pub fn sendmsg(s: ::c_int, msg: *const ::msghdr, flags: ::c_int) -> ::ssize_t;
#[link_name = "lwip_recvmsg"]
pub fn recvmsg(s: ::c_int, msg: *mut ::msghdr, flags: ::c_int) -> ::ssize_t;
+
+ pub fn eventfd(initval: ::c_uint, flags: ::c_int) -> ::c_int;
}
pub use crate::unix::newlib::generic::{sigset_t, stat};
diff --git a/vendor/libc/src/unix/newlib/mod.rs b/vendor/libc/src/unix/newlib/mod.rs
index 34a63a81a..1a694691a 100644
--- a/vendor/libc/src/unix/newlib/mod.rs
+++ b/vendor/libc/src/unix/newlib/mod.rs
@@ -41,7 +41,7 @@ pub type tcflag_t = ::c_uint;
pub type useconds_t = u32;
cfg_if! {
- if #[cfg(target_os = "horizon")] {
+ if #[cfg(any(target_os = "horizon", all(target_os = "espidf", espidf_time64)))] {
pub type time_t = ::c_longlong;
} else {
pub type time_t = i32;
diff --git a/vendor/libc/src/unix/solarish/illumos.rs b/vendor/libc/src/unix/solarish/illumos.rs
index c86c6d69d..7d491d382 100644
--- a/vendor/libc/src/unix/solarish/illumos.rs
+++ b/vendor/libc/src/unix/solarish/illumos.rs
@@ -42,6 +42,9 @@ pub const F_OFD_SETLKW: ::c_int = 49;
pub const F_FLOCK: ::c_int = 53;
pub const F_FLOCKW: ::c_int = 54;
+pub const F_DUPFD_CLOEXEC: ::c_int = 37;
+pub const F_DUP2FD_CLOEXEC: ::c_int = 36;
+
pub const FIL_ATTACH: ::c_int = 0x1;
pub const FIL_DETACH: ::c_int = 0x2;
pub const FIL_LIST: ::c_int = 0x3;
@@ -51,6 +54,8 @@ pub const FILF_AUTO: ::c_int = 0x2;
pub const FILF_BYPASS: ::c_int = 0x4;
pub const SOL_FILTER: ::c_int = 0xfffc;
+pub const MADV_PURGE: ::c_int = 9;
+
pub const MR_HDR_AOUT: ::c_uint = 0x3;
pub const B1000000: ::speed_t = 24;
diff --git a/vendor/libc/src/unix/solarish/mod.rs b/vendor/libc/src/unix/solarish/mod.rs
index 3ccdb8cab..c5da62be0 100644
--- a/vendor/libc/src/unix/solarish/mod.rs
+++ b/vendor/libc/src/unix/solarish/mod.rs
@@ -1327,7 +1327,6 @@ pub const F_LOCK: ::c_int = 1;
pub const F_TEST: ::c_int = 3;
pub const F_TLOCK: ::c_int = 2;
pub const F_ULOCK: ::c_int = 0;
-pub const F_DUPFD_CLOEXEC: ::c_int = 37;
pub const F_SETLK: ::c_int = 6;
pub const F_SETLKW: ::c_int = 7;
pub const F_GETLK: ::c_int = 14;
@@ -1441,6 +1440,7 @@ pub const MAP_RENAME: ::c_int = 0x20;
pub const MAP_ALIGN: ::c_int = 0x200;
pub const MAP_TEXT: ::c_int = 0x400;
pub const MAP_INITDATA: ::c_int = 0x800;
+pub const MAP_32BIT: ::c_int = 0x80;
pub const MAP_FAILED: *mut ::c_void = !0 as *mut ::c_void;
pub const MCL_CURRENT: ::c_int = 0x0001;
@@ -1601,7 +1601,6 @@ pub const NI_NUMERICSCOPE: ::c_uint = 0x0040;
pub const F_DUPFD: ::c_int = 0;
pub const F_DUP2FD: ::c_int = 9;
-pub const F_DUP2FD_CLOEXEC: ::c_int = 36;
pub const F_GETFD: ::c_int = 1;
pub const F_SETFD: ::c_int = 2;
pub const F_GETFL: ::c_int = 3;
@@ -1685,6 +1684,9 @@ pub const MADV_SEQUENTIAL: ::c_int = 2;
pub const MADV_WILLNEED: ::c_int = 3;
pub const MADV_DONTNEED: ::c_int = 4;
pub const MADV_FREE: ::c_int = 5;
+pub const MADV_ACCESS_DEFAULT: ::c_int = 6;
+pub const MADV_ACCESS_LWP: ::c_int = 7;
+pub const MADV_ACCESS_MANY: ::c_int = 8;
pub const AF_UNSPEC: ::c_int = 0;
pub const AF_UNIX: ::c_int = 1;
@@ -1796,6 +1798,8 @@ pub const TCP_LINGER2: ::c_int = 0x1c;
pub const UDP_NAT_T_ENDPOINT: ::c_int = 0x0103;
+pub const SOMAXCONN: ::c_int = 128;
+
pub const SOL_SOCKET: ::c_int = 0xffff;
pub const SO_DEBUG: ::c_int = 0x01;
pub const SO_ACCEPTCONN: ::c_int = 0x0002;
@@ -1892,6 +1896,14 @@ pub const IPC_RMID: ::c_int = 10;
pub const IPC_SET: ::c_int = 11;
pub const IPC_SEAT: ::c_int = 12;
+// sys/shm.h
+pub const SHM_R: ::c_int = 0o400;
+pub const SHM_W: ::c_int = 0o200;
+pub const SHM_RDONLY: ::c_int = 0o10000;
+pub const SHM_RND: ::c_int = 0o20000;
+pub const SHM_SHARE_MMU: ::c_int = 0o40000;
+pub const SHM_PAGEABLE: ::c_int = 0o100000;
+
pub const SHUT_RD: ::c_int = 0;
pub const SHUT_WR: ::c_int = 1;
pub const SHUT_RDWR: ::c_int = 2;
@@ -3133,6 +3145,8 @@ extern "C" {
pub fn setpflags(flags: ::c_uint, value: ::c_uint) -> ::c_int;
pub fn sysinfo(command: ::c_int, buf: *mut ::c_char, count: ::c_long) -> ::c_int;
+
+ pub fn faccessat(fd: ::c_int, path: *const ::c_char, amode: ::c_int, flag: ::c_int) -> ::c_int;
}
#[link(name = "sendfile")]
diff --git a/vendor/libc/src/unix/solarish/solaris.rs b/vendor/libc/src/unix/solarish/solaris.rs
index 8ea070c6d..3fb166049 100644
--- a/vendor/libc/src/unix/solarish/solaris.rs
+++ b/vendor/libc/src/unix/solarish/solaris.rs
@@ -33,8 +33,13 @@ pub const AF_LOCAL: ::c_int = 0;
pub const AF_FILE: ::c_int = 0;
pub const TCP_KEEPIDLE: ::c_int = 0x1d;
-pub const TCP_KEEPCNT: ::c_int = 0x1e;
-pub const TCP_KEEPINTVL: ::c_int = 0x1f;
+pub const TCP_KEEPINTVL: ::c_int = 0x1e;
+pub const TCP_KEEPCNT: ::c_int = 0x1f;
+
+pub const F_DUPFD_CLOEXEC: ::c_int = 47;
+pub const F_DUPFD_CLOFORK: ::c_int = 49;
+pub const F_DUP2FD_CLOEXEC: ::c_int = 48;
+pub const F_DUP2FD_CLOFORK: ::c_int = 50;
extern "C" {
pub fn fexecve(
@@ -67,6 +72,8 @@ extern "C" {
pub fn fattach(fildes: ::c_int, path: *const ::c_char) -> ::c_int;
pub fn pthread_getattr_np(thread: ::pthread_t, attr: *mut ::pthread_attr_t) -> ::c_int;
+
+ pub fn euidaccess(path: *const ::c_char, amode: ::c_int) -> ::c_int;
}
s_no_extra_traits! {
diff --git a/vendor/libc/src/unix/solarish/x86_64.rs b/vendor/libc/src/unix/solarish/x86_64.rs
index 5f75bdb79..bca552f37 100644
--- a/vendor/libc/src/unix/solarish/x86_64.rs
+++ b/vendor/libc/src/unix/solarish/x86_64.rs
@@ -157,3 +157,34 @@ cfg_if! {
}
}
+
+// sys/regset.h
+
+pub const REG_GSBASE: ::c_int = 27;
+pub const REG_FSBASE: ::c_int = 26;
+pub const REG_DS: ::c_int = 25;
+pub const REG_ES: ::c_int = 24;
+pub const REG_GS: ::c_int = 23;
+pub const REG_FS: ::c_int = 22;
+pub const REG_SS: ::c_int = 21;
+pub const REG_RSP: ::c_int = 20;
+pub const REG_RFL: ::c_int = 19;
+pub const REG_CS: ::c_int = 18;
+pub const REG_RIP: ::c_int = 17;
+pub const REG_ERR: ::c_int = 16;
+pub const REG_TRAPNO: ::c_int = 15;
+pub const REG_RAX: ::c_int = 14;
+pub const REG_RCX: ::c_int = 13;
+pub const REG_RDX: ::c_int = 12;
+pub const REG_RBX: ::c_int = 11;
+pub const REG_RBP: ::c_int = 10;
+pub const REG_RSI: ::c_int = 9;
+pub const REG_RDI: ::c_int = 8;
+pub const REG_R8: ::c_int = 7;
+pub const REG_R9: ::c_int = 6;
+pub const REG_R10: ::c_int = 5;
+pub const REG_R11: ::c_int = 4;
+pub const REG_R12: ::c_int = 3;
+pub const REG_R13: ::c_int = 2;
+pub const REG_R14: ::c_int = 1;
+pub const REG_R15: ::c_int = 0;
diff --git a/vendor/libc/src/windows/mod.rs b/vendor/libc/src/windows/mod.rs
index 08cba4edd..acb0de989 100644
--- a/vendor/libc/src/windows/mod.rs
+++ b/vendor/libc/src/windows/mod.rs
@@ -277,6 +277,16 @@ impl ::Clone for fpos_t {
}
}
+// Special handling for all print and scan type functions because of https://github.com/rust-lang/libc/issues/2860
+#[cfg_attr(
+ all(windows, target_env = "msvc"),
+ link(name = "legacy_stdio_definitions")
+)]
+extern "C" {
+ pub fn printf(format: *const c_char, ...) -> ::c_int;
+ pub fn fprintf(stream: *mut FILE, format: *const c_char, ...) -> ::c_int;
+}
+
extern "C" {
pub fn isalnum(c: c_int) -> c_int;
pub fn isalpha(c: c_int) -> c_int;
@@ -319,8 +329,6 @@ extern "C" {
pub fn feof(stream: *mut FILE) -> c_int;
pub fn ferror(stream: *mut FILE) -> c_int;
pub fn perror(s: *const c_char);
- pub fn printf(format: *const c_char, ...) -> ::c_int;
- pub fn fprintf(stream: *mut FILE, format: *const c_char, ...) -> ::c_int;
pub fn atoi(s: *const c_char) -> c_int;
pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;
pub fn strtof(s: *const c_char, endp: *mut *mut c_char) -> c_float;
diff --git a/vendor/lock_api/.cargo-checksum.json b/vendor/lock_api/.cargo-checksum.json
index ceb83ada3..cf8df26fa 100644
--- a/vendor/lock_api/.cargo-checksum.json
+++ b/vendor/lock_api/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"f0fb3e65549d1353e2e199977db7825c29721bbeb71dee9bb3905437dd444dce","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5","build.rs":"af84139c71d151adead0b4398c394a7dd16087bb2db44b14a0ed970ce868a6c6","src/lib.rs":"7b67c3b69c1b5e97248afe0f6c3bc353c793ed1ce4a5d5177e63f3f05d79c63b","src/mutex.rs":"dc4131ebf73e0474948d1849934ad5156e4a3dbd55f6881e60fd6c0acb6aa861","src/remutex.rs":"659454e66fa72e678e0aa1b83151c81c90321368dc6f4c31315230b969d4936e","src/rwlock.rs":"4f35072ca1fb476089d1548c40af775564bb7e763f86ec41a2190f8c659593cc"},"package":"327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53"} \ No newline at end of file
+{"files":{"Cargo.toml":"15453a84e25ac6ed84c95e11e71d9bee5b360b6dc787a433b8416b91bf8e216c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5","build.rs":"af84139c71d151adead0b4398c394a7dd16087bb2db44b14a0ed970ce868a6c6","src/lib.rs":"7b67c3b69c1b5e97248afe0f6c3bc353c793ed1ce4a5d5177e63f3f05d79c63b","src/mutex.rs":"f5627b1269a9b0d116507af19b8619b9922b95b73a84ab5be3134620c97caadb","src/remutex.rs":"4fa5f0448591a32ac37f2cf9af89813f32e415d2a1ca426670a0cdaccbca66aa","src/rwlock.rs":"9160cbada7e3179bd8ec13769761437e90bfb616316947dc0cc5959f0bcdc5b9"},"package":"435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df"} \ No newline at end of file
diff --git a/vendor/lock_api/Cargo.toml b/vendor/lock_api/Cargo.toml
index c1ebdb7b7..b1ff8c4db 100644
--- a/vendor/lock_api/Cargo.toml
+++ b/vendor/lock_api/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "lock_api"
-version = "0.4.7"
+version = "0.4.9"
authors = ["Amanieu d'Antras <amanieu@gmail.com>"]
description = "Wrappers to create fully-featured Mutex and RwLock types. Compatible with no_std."
keywords = [
diff --git a/vendor/lock_api/src/mutex.rs b/vendor/lock_api/src/mutex.rs
index 4e1b879e5..c97e5430b 100644
--- a/vendor/lock_api/src/mutex.rs
+++ b/vendor/lock_api/src/mutex.rs
@@ -681,15 +681,38 @@ unsafe impl<'a, R: RawMutex + 'a, T: ?Sized + 'a> StableAddress for MutexGuard<'
#[must_use = "if unused the Mutex will immediately unlock"]
pub struct ArcMutexGuard<R: RawMutex, T: ?Sized> {
mutex: Arc<Mutex<R, T>>,
- marker: PhantomData<R::GuardMarker>,
+ marker: PhantomData<*const ()>,
+}
+
+#[cfg(feature = "arc_lock")]
+unsafe impl<R: RawMutex + Send + Sync, T: Send + ?Sized> Send for ArcMutexGuard<R, T> where
+ R::GuardMarker: Send
+{
+}
+#[cfg(feature = "arc_lock")]
+unsafe impl<R: RawMutex + Sync, T: Sync + ?Sized> Sync for ArcMutexGuard<R, T> where
+ R::GuardMarker: Sync
+{
}
#[cfg(feature = "arc_lock")]
impl<R: RawMutex, T: ?Sized> ArcMutexGuard<R, T> {
/// Returns a reference to the `Mutex` this is guarding, contained in its `Arc`.
#[inline]
- pub fn mutex(&self) -> &Arc<Mutex<R, T>> {
- &self.mutex
+ pub fn mutex(s: &Self) -> &Arc<Mutex<R, T>> {
+ &s.mutex
+ }
+
+ /// Unlocks the mutex and returns the `Arc` that was held by the [`ArcMutexGuard`].
+ #[inline]
+ pub fn into_arc(s: Self) -> Arc<Mutex<R, T>> {
+ // Safety: Skip our Drop impl and manually unlock the mutex.
+ let arc = unsafe { ptr::read(&s.mutex) };
+ mem::forget(s);
+ unsafe {
+ arc.raw.unlock();
+ }
+ arc
}
/// Temporarily unlocks the mutex to execute the given function.
diff --git a/vendor/lock_api/src/remutex.rs b/vendor/lock_api/src/remutex.rs
index fa0e934d1..3e2010f2b 100644
--- a/vendor/lock_api/src/remutex.rs
+++ b/vendor/lock_api/src/remutex.rs
@@ -646,7 +646,7 @@ impl<'a, R: RawMutex + 'a, G: GetThreadId + 'a, T: ?Sized + 'a> ReentrantMutexGu
/// in already locked the mutex.
///
/// This is an associated function that needs to be
- /// used as `ReentrantMutexGuard::map(...)`. A method would interfere with methods of
+ /// used as `ReentrantMutexGuard::try_map(...)`. A method would interfere with methods of
/// the same name on the contents of the locked data.
#[inline]
pub fn try_map<U: ?Sized, F>(
@@ -654,10 +654,10 @@ impl<'a, R: RawMutex + 'a, G: GetThreadId + 'a, T: ?Sized + 'a> ReentrantMutexGu
f: F,
) -> Result<MappedReentrantMutexGuard<'a, R, G, U>, Self>
where
- F: FnOnce(&mut T) -> Option<&mut U>,
+ F: FnOnce(&T) -> Option<&U>,
{
let raw = &s.remutex.raw;
- let data = match f(unsafe { &mut *s.remutex.data.get() }) {
+ let data = match f(unsafe { &*s.remutex.data.get() }) {
Some(data) => data,
None => return Err(s),
};
@@ -942,7 +942,7 @@ impl<'a, R: RawMutex + 'a, G: GetThreadId + 'a, T: ?Sized + 'a>
/// in already locked the mutex.
///
/// This is an associated function that needs to be
- /// used as `MappedReentrantMutexGuard::map(...)`. A method would interfere with methods of
+ /// used as `MappedReentrantMutexGuard::try_map(...)`. A method would interfere with methods of
/// the same name on the contents of the locked data.
#[inline]
pub fn try_map<U: ?Sized, F>(
diff --git a/vendor/lock_api/src/rwlock.rs b/vendor/lock_api/src/rwlock.rs
index e947f1ec0..c972fb6c6 100644
--- a/vendor/lock_api/src/rwlock.rs
+++ b/vendor/lock_api/src/rwlock.rs
@@ -1218,13 +1218,13 @@ impl<'a, R: RawRwLock + 'a, T: ?Sized + 'a> RwLockReadGuard<'a, R, T> {
}
/// Attempts to make a new `MappedRwLockReadGuard` for a component of the
- /// locked data. The original guard is return if the closure returns `None`.
+ /// locked data. Returns the original guard if the closure returns `None`.
///
/// This operation cannot fail as the `RwLockReadGuard` passed
/// in already locked the data.
///
/// This is an associated function that needs to be
- /// used as `RwLockReadGuard::map(...)`. A method would interfere with methods of
+ /// used as `RwLockReadGuard::try_map(...)`. A method would interfere with methods of
/// the same name on the contents of the locked data.
#[inline]
pub fn try_map<U: ?Sized, F>(s: Self, f: F) -> Result<MappedRwLockReadGuard<'a, R, U>, Self>
@@ -1512,7 +1512,7 @@ impl<'a, R: RawRwLock + 'a, T: ?Sized + 'a> RwLockWriteGuard<'a, R, T> {
/// in already locked the data.
///
/// This is an associated function that needs to be
- /// used as `RwLockWriteGuard::map(...)`. A method would interfere with methods of
+ /// used as `RwLockWriteGuard::try_map(...)`. A method would interfere with methods of
/// the same name on the contents of the locked data.
#[inline]
pub fn try_map<U: ?Sized, F>(s: Self, f: F) -> Result<MappedRwLockWriteGuard<'a, R, U>, Self>
@@ -2374,7 +2374,7 @@ impl<'a, R: RawRwLock + 'a, T: ?Sized + 'a> MappedRwLockReadGuard<'a, R, T> {
/// in already locked the data.
///
/// This is an associated function that needs to be
- /// used as `MappedRwLockReadGuard::map(...)`. A method would interfere with methods of
+ /// used as `MappedRwLockReadGuard::try_map(...)`. A method would interfere with methods of
/// the same name on the contents of the locked data.
#[inline]
pub fn try_map<U: ?Sized, F>(s: Self, f: F) -> Result<MappedRwLockReadGuard<'a, R, U>, Self>
@@ -2512,7 +2512,7 @@ impl<'a, R: RawRwLock + 'a, T: ?Sized + 'a> MappedRwLockWriteGuard<'a, R, T> {
/// in already locked the data.
///
/// This is an associated function that needs to be
- /// used as `MappedRwLockWriteGuard::map(...)`. A method would interfere with methods of
+ /// used as `MappedRwLockWriteGuard::try_map(...)`. A method would interfere with methods of
/// the same name on the contents of the locked data.
#[inline]
pub fn try_map<U: ?Sized, F>(s: Self, f: F) -> Result<MappedRwLockWriteGuard<'a, R, U>, Self>
diff --git a/vendor/lsp-types/.cargo-checksum.json b/vendor/lsp-types/.cargo-checksum.json
index d33701a46..23aeed03e 100644
--- a/vendor/lsp-types/.cargo-checksum.json
+++ b/vendor/lsp-types/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"3d00836d81d20d4f701954274ae16ebed2de2b51d3ca7f05b822c2fe292de927","Cargo.toml":"cac46ecf9c36442fc444fbbd84e8314f2370504a90e8f69a0ed0dc2e080ac129","LICENSE":"a11232911aa0d746688b560af367728021184084eeb6328a1922d60925c5eda0","README.md":"641e5aa434ddaca69fcfca228e2e6d01d6cfa88424ba3a6457ed44649c03f2bc","release.sh":"3bfea9a6cd08e825f3247a868338f3844d7f72f4342671898a6326a5df3c4e42","release.toml":"d4f0fecf904b64d9fc9babd3afeff77d3c102d8555b43ef83902c143e3becf16","src/call_hierarchy.rs":"a64967af04133a9c08838db19d2de665d2062ed294f6ca7d1d97edb49dc4096f","src/code_action.rs":"78813e0095a78e89a74d897e8dcb5876e1e1480c5e9e37d6f2fb22fdaecb6045","src/code_lens.rs":"169cc96d4ee9690d0e2e119aee7949006f0123c4a6b919bf7ac484258c93fa95","src/color.rs":"72846c6cda18691f5f9eaa29cb8df87bb4a10ae4e0803916244b250c68dc7701","src/completion.rs":"96681827c185732730e6b352e6259430a0585f92e34ff446b43b8d36e366a6db","src/document_highlight.rs":"491aad4beeb72ecc986d9f4cb43202d440304df3be861c41ab4e892b129212b5","src/document_link.rs":"8aab0d78081aa624290c712bacd30215553e7f0f99b300d3fefd103179fdfad0","src/document_symbols.rs":"063c29bf761c17f6f55c6812da0aad4a6aa04c6db3efbb6ca01b646b7757aabe","src/error_codes.rs":"60d4a1d00e797fe3f3f2c5ffd11be7fbaad82f4fc247ff98285566d6b777f0f7","src/file_operations.rs":"bfc413d4bbfd311c7a178863961e6cde6e8cc7a654370b3848ffd64941fea82a","src/folding_range.rs":"3dc85496b6f5b8c11f3a57f888c2febdac71c997010b13eec34736b29fb86965","src/formatting.rs":"548df3c2da1dec8a3a578b381249b6812f92e73c22257459653980492b21a2a2","src/hover.rs":"fece13f93144dfea0b3c3204f19fc7fc366b25a614515825a20a2596c88966c8","src/inlay_hint.rs":"26671f81e045b3dcca6af3222fd3d8095f061e46b8ff7fc738b6f481a0b631d4","src/lib.rs":"833a1c91386b4d989bf5279a5c129c0bfe464e96a86adbee181b89bad1ae79eb","src/linked_editing.rs":"a840ee445fbcfe32e37191197fb37b19732260462a73cc4ba350b8d9a2c4e607","src/lsif.rs":"c3966583d9b0afc64e93d301c8e20f84ba875ffb6b5d4bbacf4ca4a12cc58e99","src/moniker.rs":"8d8c37daca1d2504c74c17e7195969efcfb42641392026a8e507490adf49d043","src/notification.rs":"67e831168d9e7898965d83a503a33ac10f36561bcdb07195f99769f8ff00340c","src/progress.rs":"2b2189b094fbe7b790a0895f96c29615b9375538760d413413c47ce882af2007","src/references.rs":"e824f6861f67c66af04f8f08afc174793a9662a0a67cc23ccd5240ac0d408212","src/rename.rs":"2980e9452a27868a972fc09d52ac7c000361be9f1efc2de4e20c9b99100010c8","src/request.rs":"3abac2c2390c82bf89180b1305984db2986c5bc716ae9f5dbbd0af0a783ab0f7","src/selection_range.rs":"238b14ba6ac2e45ec66fea32d8ebe5f1d235bde9bc69777a794e10d519bcac9c","src/semantic_tokens.rs":"933cb74c048269227fd7d5eda68432ad9a3b21e2dda2fc79cc6b8e46029a064f","src/signature_help.rs":"02d6c70a6c803badd22a8a474233d1be0b169eb39a6ae668f744dcaee71045ab","src/trace.rs":"81ca45bf188452d074cb879060a88f6d6ec087d6e31e29c37db542fdb5363f5c","src/window.rs":"b380ed57b4a700514ec043310253f3fc57c51d35df18fff8283b685ee8aa17d2","src/workspace_folders.rs":"79b75c1d75a1d57892d515efd8a5cbf7c8fddce1b49dc7dfbd94e685b30fce27","src/workspace_symbols.rs":"a1f18eecc09c352b342c5cc011805457eb836432d5b8688dd2e447ac9bda407a","tests/lsif.rs":"89c7c7fa06a8b108f7519a9860d0e2a049ac66d35db3630697f2f33038513898","tests/tsc-unix.lsif":"5a85759de361285d806c8147cfc9f9cb5235a6a2253bacd8243174713419facd"},"package":"70c74e2173b2b31f8655d33724b4b45ac13f439386f66290f539c22b144c2212"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"055f657808a4e9314db7f8c2a3976b2e67a015068d6780066614a1e1d6d96ec3","Cargo.toml":"f9c039bc12cb20091895edd166293512d911c6d80b82bf75acd7adf3f398a5b7","LICENSE":"a11232911aa0d746688b560af367728021184084eeb6328a1922d60925c5eda0","README.md":"6814882daa9018d1d99ebdb7861d9759b3c96f976683fabfc8f4b9c9a05b032a","release.sh":"3bfea9a6cd08e825f3247a868338f3844d7f72f4342671898a6326a5df3c4e42","release.toml":"d4f0fecf904b64d9fc9babd3afeff77d3c102d8555b43ef83902c143e3becf16","src/call_hierarchy.rs":"a64967af04133a9c08838db19d2de665d2062ed294f6ca7d1d97edb49dc4096f","src/code_action.rs":"78813e0095a78e89a74d897e8dcb5876e1e1480c5e9e37d6f2fb22fdaecb6045","src/code_lens.rs":"169cc96d4ee9690d0e2e119aee7949006f0123c4a6b919bf7ac484258c93fa95","src/color.rs":"72846c6cda18691f5f9eaa29cb8df87bb4a10ae4e0803916244b250c68dc7701","src/completion.rs":"96681827c185732730e6b352e6259430a0585f92e34ff446b43b8d36e366a6db","src/document_highlight.rs":"491aad4beeb72ecc986d9f4cb43202d440304df3be861c41ab4e892b129212b5","src/document_link.rs":"8aab0d78081aa624290c712bacd30215553e7f0f99b300d3fefd103179fdfad0","src/document_symbols.rs":"063c29bf761c17f6f55c6812da0aad4a6aa04c6db3efbb6ca01b646b7757aabe","src/error_codes.rs":"60d4a1d00e797fe3f3f2c5ffd11be7fbaad82f4fc247ff98285566d6b777f0f7","src/file_operations.rs":"bfc413d4bbfd311c7a178863961e6cde6e8cc7a654370b3848ffd64941fea82a","src/folding_range.rs":"3dc85496b6f5b8c11f3a57f888c2febdac71c997010b13eec34736b29fb86965","src/formatting.rs":"548df3c2da1dec8a3a578b381249b6812f92e73c22257459653980492b21a2a2","src/hover.rs":"fece13f93144dfea0b3c3204f19fc7fc366b25a614515825a20a2596c88966c8","src/inlay_hint.rs":"26671f81e045b3dcca6af3222fd3d8095f061e46b8ff7fc738b6f481a0b631d4","src/lib.rs":"3f261ef4e59b0fce07a9e37b1edbec4c0cfddb600afd2c6323ef833c565004cc","src/linked_editing.rs":"a840ee445fbcfe32e37191197fb37b19732260462a73cc4ba350b8d9a2c4e607","src/lsif.rs":"c3966583d9b0afc64e93d301c8e20f84ba875ffb6b5d4bbacf4ca4a12cc58e99","src/moniker.rs":"8d8c37daca1d2504c74c17e7195969efcfb42641392026a8e507490adf49d043","src/notification.rs":"67e831168d9e7898965d83a503a33ac10f36561bcdb07195f99769f8ff00340c","src/progress.rs":"2b2189b094fbe7b790a0895f96c29615b9375538760d413413c47ce882af2007","src/references.rs":"e824f6861f67c66af04f8f08afc174793a9662a0a67cc23ccd5240ac0d408212","src/rename.rs":"2980e9452a27868a972fc09d52ac7c000361be9f1efc2de4e20c9b99100010c8","src/request.rs":"3abac2c2390c82bf89180b1305984db2986c5bc716ae9f5dbbd0af0a783ab0f7","src/selection_range.rs":"238b14ba6ac2e45ec66fea32d8ebe5f1d235bde9bc69777a794e10d519bcac9c","src/semantic_tokens.rs":"e6af4475567efb67df53b756bb9b0c5d469f83ea0eba863209e4c151f8c60704","src/signature_help.rs":"02d6c70a6c803badd22a8a474233d1be0b169eb39a6ae668f744dcaee71045ab","src/trace.rs":"81ca45bf188452d074cb879060a88f6d6ec087d6e31e29c37db542fdb5363f5c","src/window.rs":"b380ed57b4a700514ec043310253f3fc57c51d35df18fff8283b685ee8aa17d2","src/workspace_folders.rs":"79b75c1d75a1d57892d515efd8a5cbf7c8fddce1b49dc7dfbd94e685b30fce27","src/workspace_symbols.rs":"a1f18eecc09c352b342c5cc011805457eb836432d5b8688dd2e447ac9bda407a","tests/lsif.rs":"89c7c7fa06a8b108f7519a9860d0e2a049ac66d35db3630697f2f33038513898","tests/tsc-unix.lsif":"5a85759de361285d806c8147cfc9f9cb5235a6a2253bacd8243174713419facd"},"package":"a3bcfee315dde785ba887edb540b08765fd7df75a7d948844be6bf5712246734"} \ No newline at end of file
diff --git a/vendor/lsp-types/CHANGELOG.md b/vendor/lsp-types/CHANGELOG.md
index 8c8ed7842..1b888b1ee 100644
--- a/vendor/lsp-types/CHANGELOG.md
+++ b/vendor/lsp-types/CHANGELOG.md
@@ -1,3 +1,9 @@
+<a name="v0.93.1"></a>
+### v0.93.1 (2022-08-23)
+
+
+
+
<a name="v0.93.0"></a>
## v0.93.0 (2022-04-08)
diff --git a/vendor/lsp-types/Cargo.toml b/vendor/lsp-types/Cargo.toml
index 886afcab7..16feaa691 100644
--- a/vendor/lsp-types/Cargo.toml
+++ b/vendor/lsp-types/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "lsp-types"
-version = "0.93.0"
+version = "0.93.1"
authors = [
"Markus Westerlind <marwes91@gmail.com>",
"Bruno Medeiros <bruno.do.medeiros@gmail.com>",
@@ -29,6 +29,7 @@ keywords = [
]
license = "MIT"
repository = "https://github.com/gluon-lang/lsp-types"
+resolver = "1"
[dependencies.bitflags]
version = "1.0.1"
diff --git a/vendor/lsp-types/README.md b/vendor/lsp-types/README.md
index d59e8e11a..d46701166 100644
--- a/vendor/lsp-types/README.md
+++ b/vendor/lsp-types/README.md
@@ -11,4 +11,4 @@ Proposed 3.17 features can be activated using the `proposed` feature flag.
[Stable Protocol reference](https://github.com/microsoft/language-server-protocol/blob/gh-pages/_specifications/specification-3-16.md)
-[Proposed Protocol reference](https://github.com/microsoft/language-server-protocol/blob/gh-pages/_specifications/specification-3-17.md) \ No newline at end of file
+[Proposed Protocol reference](https://github.com/microsoft/language-server-protocol/blob/gh-pages/_specifications/lsp/3.17/specification.md)
diff --git a/vendor/lsp-types/src/lib.rs b/vendor/lsp-types/src/lib.rs
index 503264d19..6a4f544d2 100644
--- a/vendor/lsp-types/src/lib.rs
+++ b/vendor/lsp-types/src/lib.rs
@@ -985,7 +985,7 @@ pub type DocumentSelector = Vec<DocumentFilter>;
// ========================= Actual Protocol =========================
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct InitializeParams {
/// The process Id of the parent process that started
@@ -1099,6 +1099,7 @@ pub struct GotoCapability {
pub dynamic_registration: Option<bool>,
/// The client supports additional metadata in the form of definition links.
+ #[serde(skip_serializing_if = "Option::is_none")]
pub link_support: Option<bool>,
}
@@ -1781,7 +1782,7 @@ pub struct ServerCapabilities {
#[serde(skip_serializing_if = "Option::is_none")]
pub type_definition_provider: Option<TypeDefinitionProviderCapability>,
- /// the server provides goto implementation support.
+ /// The server provides goto implementation support.
#[serde(skip_serializing_if = "Option::is_none")]
pub implementation_provider: Option<ImplementationProviderCapability>,
diff --git a/vendor/lsp-types/src/semantic_tokens.rs b/vendor/lsp-types/src/semantic_tokens.rs
index 70e593190..f1b6d53d2 100644
--- a/vendor/lsp-types/src/semantic_tokens.rs
+++ b/vendor/lsp-types/src/semantic_tokens.rs
@@ -10,8 +10,7 @@ use crate::{
/// A set of predefined token types. This set is not fixed
/// and clients can specify additional token types via the
/// corresponding client capabilities.
-///
-/// @since 3.16.0
+/// since @3.16.0
#[derive(Debug, Eq, PartialEq, Hash, PartialOrd, Clone, Deserialize, Serialize)]
pub struct SemanticTokenType(Cow<'static, str>);
@@ -39,6 +38,10 @@ impl SemanticTokenType {
pub const REGEXP: SemanticTokenType = SemanticTokenType::new("regexp");
pub const OPERATOR: SemanticTokenType = SemanticTokenType::new("operator");
+ /// since @3.17.0
+ #[cfg(feature = "proposed")]
+ pub const DECORATOR: SemanticTokenType = SemanticTokenType::new("decorator");
+
pub const fn new(tag: &'static str) -> Self {
SemanticTokenType(Cow::Borrowed(tag))
}
@@ -365,6 +368,31 @@ pub struct SemanticTokensClientCapabilities {
/// Whether the client supports tokens that can span multiple lines.
#[serde(skip_serializing_if = "Option::is_none")]
pub multiline_token_support: Option<bool>,
+
+ /// Whether the client allows the server to actively cancel a
+ /// semantic token request, e.g. supports returning
+ /// ErrorCodes.ServerCancelled. If a server does the client
+ /// needs to retrigger the request.
+ ///
+ /// since @3.17.0
+ #[cfg(feature = "proposed")]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub server_cancel_support: Option<bool>,
+
+
+ /// Whether the client uses semantic tokens to augment existing
+ /// syntax tokens. If set to `true` client side created syntax
+ /// tokens and semantic tokens are both used for colorization. If
+ /// set to `false` the client only uses the returned semantic tokens
+ /// for colorization.
+ ///
+ /// If the value is `undefined` then the client behavior is not
+ /// specified.
+ ///
+ /// @since 3.17.0
+ #[cfg(feature = "proposed")]
+ #[serde(skip_serializing_if = "Option::is_none")]
+ pub augments_syntax_tokens: Option<bool>,
}
#[derive(Debug, Eq, PartialEq, Clone, Default, Deserialize, Serialize)]
diff --git a/vendor/matches/.cargo-checksum.json b/vendor/matches/.cargo-checksum.json
deleted file mode 100644
index 65871b7ff..000000000
--- a/vendor/matches/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"194024a82bba1c84226ac827330511fba74474a7914b1319e6700285c15f5812","LICENSE":"d7b49708075b5f43f8e108464f1970c8c66fa8b6afce4f9c944da3af77cc1460","lib.rs":"9f4187510972f5fc356ca60d19daa0e69643dd6b530edf7c928cbd75a2b990c5","tests/macro_use_one.rs":"4f599fae16f1aef369050bf0ad74cbefec06c430b29e0c9ab0811ac9592e997a","tests/use_star.rs":"39a23b8002544f65e7a896e2cefe8e0af7404151fa65d327e748f5c1101badf8"},"package":"a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f"} \ No newline at end of file
diff --git a/vendor/matches/Cargo.toml b/vendor/matches/Cargo.toml
deleted file mode 100644
index 57a249a40..000000000
--- a/vendor/matches/Cargo.toml
+++ /dev/null
@@ -1,24 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-name = "matches"
-version = "0.1.9"
-authors = ["Simon Sapin <simon.sapin@exyr.org>"]
-description = "A macro to evaluate, as a boolean, whether an expression matches a pattern."
-documentation = "https://docs.rs/matches/"
-license = "MIT"
-repository = "https://github.com/SimonSapin/rust-std-candidates"
-
-[lib]
-name = "matches"
-path = "lib.rs"
diff --git a/vendor/matches/LICENSE b/vendor/matches/LICENSE
deleted file mode 100644
index a7b759a49..000000000
--- a/vendor/matches/LICENSE
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) 2014-2016 Simon Sapin
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/vendor/matches/lib.rs b/vendor/matches/lib.rs
deleted file mode 100644
index 3bcd6e2fe..000000000
--- a/vendor/matches/lib.rs
+++ /dev/null
@@ -1,128 +0,0 @@
-#![no_std]
-
-/// Check if an expression matches a refutable pattern.
-///
-/// Syntax: `matches!(` *expression* `,` *pattern* `)`
-///
-/// Return a boolean, true if the expression matches the pattern, false otherwise.
-///
-/// # Examples
-///
-/// ```
-/// #[macro_use]
-/// extern crate matches;
-///
-/// pub enum Foo<T> {
-/// A,
-/// B(T),
-/// }
-///
-/// impl<T> Foo<T> {
-/// pub fn is_a(&self) -> bool {
-/// matches!(*self, Foo::A)
-/// }
-///
-/// pub fn is_b(&self) -> bool {
-/// matches!(*self, Foo::B(_))
-/// }
-/// }
-///
-/// # fn main() { }
-/// ```
-#[macro_export]
-macro_rules! matches {
- ($expression:expr, $($pattern:tt)+) => {
- match $expression {
- $($pattern)+ => true,
- _ => false
- }
- }
-}
-
-/// Assert that an expression matches a refutable pattern.
-///
-/// Syntax: `assert_matches!(` *expression* `,` *pattern* `)`
-///
-/// Panic with a message that shows the expression if it does not match the
-/// pattern.
-///
-/// # Examples
-///
-/// ```
-/// #[macro_use]
-/// extern crate matches;
-///
-/// fn main() {
-/// let data = [1, 2, 3];
-/// assert_matches!(data.get(1), Some(_));
-/// }
-/// ```
-#[macro_export]
-macro_rules! assert_matches {
- ($expression:expr, $($pattern:tt)+) => {
- match $expression {
- $($pattern)+ => (),
- ref e => panic!("assertion failed: `{:?}` does not match `{}`", e, stringify!($($pattern)+)),
- }
- }
-}
-
-/// Assert that an expression matches a refutable pattern using debug assertions.
-///
-/// Syntax: `debug_assert_matches!(` *expression* `,` *pattern* `)`
-///
-/// If debug assertions are enabled, panic with a message that shows the
-/// expression if it does not match the pattern.
-///
-/// When debug assertions are not enabled, this macro does nothing.
-///
-/// # Examples
-///
-/// ```
-/// #[macro_use]
-/// extern crate matches;
-///
-/// fn main() {
-/// let data = [1, 2, 3];
-/// debug_assert_matches!(data.get(1), Some(_));
-/// }
-/// ```
-#[macro_export]
-macro_rules! debug_assert_matches {
- ($expression:expr, $($pattern:tt)+) => {
- if cfg!(debug_assertions) {
- match $expression {
- $($pattern)+ => (),
- ref e => panic!("assertion failed: `{:?}` does not match `{}`", e, stringify!($($pattern)+)),
- }
- }
- }
-}
-
-#[test]
-fn matches_works() {
- let foo = Some("-12");
- assert!(matches!(foo, Some(bar) if
- matches!(bar.as_bytes()[0], b'+' | b'-') &&
- matches!(bar.as_bytes()[1], b'0'...b'9')
- ));
-}
-
-#[test]
-fn assert_matches_works() {
- let foo = Some("-12");
- assert_matches!(foo, Some(bar) if
- matches!(bar.as_bytes()[0], b'+' | b'-') &&
- matches!(bar.as_bytes()[1], b'0'...b'9')
- );
-}
-
-#[test]
-#[should_panic(expected = "assertion failed: `Some(\"-AB\")` does not match ")]
-fn assert_matches_panics() {
- let foo = Some("-AB");
- assert_matches!(foo, Some(bar) if
- matches!(bar.as_bytes()[0], b'+' | b'-') &&
- matches!(bar.as_bytes()[1], b'0'...b'9')
- );
-}
diff --git a/vendor/matches/tests/macro_use_one.rs b/vendor/matches/tests/macro_use_one.rs
deleted file mode 100644
index a527a89ce..000000000
--- a/vendor/matches/tests/macro_use_one.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-// https://github.com/SimonSapin/rust-std-candidates/issues/12
-#[macro_use(matches)] extern crate matches;
-
-#[test]
-fn matches_works() {
- let foo = Some("-12");
- assert!(matches!(foo, Some(bar) if
- matches!(bar.as_bytes()[0], b'+' | b'-') &&
- matches!(bar.as_bytes()[1], b'0'...b'9')
- ));
-}
diff --git a/vendor/matches/tests/use_star.rs b/vendor/matches/tests/use_star.rs
deleted file mode 100644
index 58a670b93..000000000
--- a/vendor/matches/tests/use_star.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-//! https://github.com/SimonSapin/rust-std-candidates/issues/22
-
-extern crate matches;
-
-use matches::*;
-
-#[test]
-fn test_assert_matches() {
- assert_matches!(4, 4)
-}
diff --git a/vendor/memmap2/.cargo-checksum.json b/vendor/memmap2/.cargo-checksum.json
index 4cb59ff03..c189c8a9c 100644
--- a/vendor/memmap2/.cargo-checksum.json
+++ b/vendor/memmap2/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"9a280d0719b9d9a1fb12d31a2da544d103cb15f01ee2cf40bdcf28c6484eb1b8","Cargo.lock":"47b6feef3907ecbd586b49aadff92eaf84695d7508214210978fbf58b4f00ab6","Cargo.toml":"b93bec2a5377b79002ab53089a9ea9c0a8107f25c1dfb796ba0c01a50e7a1dec","LICENSE-APACHE":"04ea4849dba9dcae07113850c6f1b1a69052c625210639914eee352023f750ad","LICENSE-MIT":"0d25d03b5ab49576178ad0cae7a2648d12c17ad0452fe49c07e55e4b59aa5257","README.md":"c7b3cd928f0d1a10faa255e2f84a2a06636e55ea3e7edd4f6334dd9215151205","examples/cat.rs":"ab0b575d19662e2d5b6c7cea2756b57530e495d56acdb4fd2b56c0ba4d768dfd","src/advice.rs":"194bfd6a32495f6b0c739d083b06230ae656927767f15c1b49b245b63431cc4d","src/lib.rs":"2fa8c6162297441c82471132b9e26d3effcb9c06ae414a0104f9d871eba0aa00","src/stub.rs":"f276bb5e4bc29c2129ebc660b01a1de173b9575e2e866ea5a34e0ee6318f1177","src/unix.rs":"4fa52c514f15dd5e990e03671599a0c3f15770b8fb5f8fea3ea6333766b1e31c","src/windows.rs":"73838f8b2dc8b0c8d37045db36c3c7eb2dc00e6f5d5a7bc0c693bdb55d3ec721"},"package":"d5172b50c23043ff43dd53e51392f36519d9b35a8f3a410d30ece5d1aedd58ae"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"fb280b4d71ea601557e7ab637a7f82f73eb519dd9d16d38684bf6fe4e800a020","Cargo.lock":"80c9c7be560eee59e3eded68a49b53278198fc23495807c6a22e9c5190914ebe","Cargo.toml":"4738a7e9e1f236b95d41ef8837c351f895fcb1cc1cb82ab7e3bf39c72849cba4","LICENSE-APACHE":"04ea4849dba9dcae07113850c6f1b1a69052c625210639914eee352023f750ad","LICENSE-MIT":"0d25d03b5ab49576178ad0cae7a2648d12c17ad0452fe49c07e55e4b59aa5257","README.md":"c7b3cd928f0d1a10faa255e2f84a2a06636e55ea3e7edd4f6334dd9215151205","examples/cat.rs":"ab0b575d19662e2d5b6c7cea2756b57530e495d56acdb4fd2b56c0ba4d768dfd","src/advice.rs":"194bfd6a32495f6b0c739d083b06230ae656927767f15c1b49b245b63431cc4d","src/lib.rs":"ea214bce1c2409b8ee7a390c85f5114bc681a551d02aba23280030fe58588eb9","src/stub.rs":"f276bb5e4bc29c2129ebc660b01a1de173b9575e2e866ea5a34e0ee6318f1177","src/unix.rs":"03fe91a320d0146993019ea51e486275b8c8e13e42a995e649b8c76690e3f167","src/windows.rs":"bbb39200ac35b5517626c12efad4886f7b5d34e56256284914c556dec1567e38"},"package":"95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498"} \ No newline at end of file
diff --git a/vendor/memmap2/CHANGELOG.md b/vendor/memmap2/CHANGELOG.md
index e54a78122..14f481c4e 100644
--- a/vendor/memmap2/CHANGELOG.md
+++ b/vendor/memmap2/CHANGELOG.md
@@ -6,6 +6,23 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased]
+## [0.5.7] - 2022-08-15
+### Changed
+- Simplify file size retrieving code.
+ [@saethlin](https://github.com/saethlin)
+
+## [0.5.6] - 2022-08-11
+### Added
+- Memory locking and unlocking. See `Mmap::lock`, `Mmap::unlock`,
+ `MmapMut::lock` and `MmapMut::unlock`.
+ [@vmx](https://github.com/vmx)
+
+## [0.5.5] - 2022-07-09
+### Fixed
+- Limit mapping length to `isize::MAX` to prevent undefined behavior
+ on calling `std::slice::from_raw_parts`. Technically affects only 32-bit systems.
+ [@adamreichold](https://github.com/adamreichold)
+
## [0.5.4] - 2022-06-04
### Added
- Add madvice operations specific to Darwin. [@turbocool3r](https://github.com/turbocool3r)
@@ -100,7 +117,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
### Removed
- `winapi` dependency. [memmap-rs/pull/89](https://github.com/danburkert/memmap-rs/pull/89)
-[Unreleased]: https://github.com/RazrFalcon/memmap2-rs/compare/v0.5.4...HEAD
+[Unreleased]: https://github.com/RazrFalcon/memmap2-rs/compare/v0.5.7...HEAD
+[0.5.7]: https://github.com/RazrFalcon/memmap2-rs/compare/v0.5.6...v0.5.7
+[0.5.6]: https://github.com/RazrFalcon/memmap2-rs/compare/v0.5.5...v0.5.6
+[0.5.5]: https://github.com/RazrFalcon/memmap2-rs/compare/v0.5.4...v0.5.5
[0.5.4]: https://github.com/RazrFalcon/memmap2-rs/compare/v0.5.3...v0.5.4
[0.5.3]: https://github.com/RazrFalcon/memmap2-rs/compare/v0.5.2...v0.5.3
[0.5.2]: https://github.com/RazrFalcon/memmap2-rs/compare/v0.5.1...v0.5.2
diff --git a/vendor/memmap2/Cargo.lock b/vendor/memmap2/Cargo.lock
index 7f41430a4..5a4a2b5f2 100644
--- a/vendor/memmap2/Cargo.lock
+++ b/vendor/memmap2/Cargo.lock
@@ -40,7 +40,7 @@ checksum = "a7f823d141fe0a24df1e23b4af4e3c7ba9e5966ec514ea068c93024aa7deb765"
[[package]]
name = "memmap2"
-version = "0.5.4"
+version = "0.5.7"
dependencies = [
"libc",
"owning_ref",
diff --git a/vendor/memmap2/Cargo.toml b/vendor/memmap2/Cargo.toml
index bdbc259e3..29d796270 100644
--- a/vendor/memmap2/Cargo.toml
+++ b/vendor/memmap2/Cargo.toml
@@ -12,13 +12,14 @@
[package]
edition = "2018"
name = "memmap2"
-version = "0.5.4"
+version = "0.5.7"
authors = [
"Dan Burkert <dan@danburkert.com>",
"Yevhenii Reizner <razrfalcon@gmail.com>",
]
description = "Cross-platform Rust API for memory-mapped file IO"
documentation = "https://docs.rs/memmap2"
+readme = "README.md"
keywords = [
"mmap",
"memory-map",
diff --git a/vendor/memmap2/src/lib.rs b/vendor/memmap2/src/lib.rs
index b90d1bcf6..0b92ea0e1 100644
--- a/vendor/memmap2/src/lib.rs
+++ b/vendor/memmap2/src/lib.rs
@@ -51,13 +51,14 @@ use std::fmt;
#[cfg(not(any(unix, windows)))]
use std::fs::File;
use std::io::{Error, ErrorKind, Result};
+use std::isize;
+use std::mem;
use std::ops::{Deref, DerefMut};
#[cfg(unix)]
use std::os::unix::io::{AsRawFd, RawFd};
#[cfg(windows)]
use std::os::windows::io::{AsRawHandle, RawHandle};
use std::slice;
-use std::usize;
#[cfg(not(any(unix, windows)))]
pub struct MmapRawDescriptor<'a>(&'a File);
@@ -237,15 +238,20 @@ impl MmapOptions {
}
let len = file_len - self.offset;
- // This check it not relevant on 64bit targets, because usize == u64
- #[cfg(not(target_pointer_width = "64"))]
- {
- if len > (usize::MAX as u64) {
- return Err(Error::new(
- ErrorKind::InvalidData,
- "memory map length overflows usize",
- ));
- }
+ // Rust's slice cannot be larger than isize::MAX.
+ // See https://doc.rust-lang.org/std/slice/fn.from_raw_parts.html
+ //
+ // This is not a problem on 64-bit targets, but on 32-bit one
+ // having a file or an anonymous mapping larger than 2GB is quite normal
+ // and we have to prevent it.
+ //
+ // The code below is essentially the same as in Rust's std:
+ // https://github.com/rust-lang/rust/blob/db78ab70a88a0a5e89031d7ee4eccec835dcdbde/library/alloc/src/raw_vec.rs#L495
+ if mem::size_of::<usize>() < 8 && len > isize::MAX as u64 {
+ return Err(Error::new(
+ ErrorKind::InvalidData,
+ "memory map length overflows isize",
+ ));
}
Ok(len as usize)
@@ -457,14 +463,26 @@ impl MmapOptions {
/// Creates an anonymous memory map.
///
- /// Note: the memory map length must be configured to be greater than 0 before creating an
- /// anonymous memory map using `MmapOptions::len()`.
+ /// The memory map length should be configured using [`MmapOptions::len()`]
+ /// before creating an anonymous memory map, otherwise a zero-length mapping
+ /// will be crated.
///
/// # Errors
///
- /// This method returns an error when the underlying system call fails.
+ /// This method returns an error when the underlying system call fails or
+ /// when `len > isize::MAX`.
pub fn map_anon(&self) -> Result<MmapMut> {
- MmapInner::map_anon(self.len.unwrap_or(0), self.stack).map(|inner| MmapMut { inner })
+ let len = self.len.unwrap_or(0);
+
+ // See get_len() for details.
+ if mem::size_of::<usize>() < 8 && len > isize::MAX as usize {
+ return Err(Error::new(
+ ErrorKind::InvalidData,
+ "memory map length overflows isize",
+ ));
+ }
+
+ MmapInner::map_anon(len, self.stack).map(|inner| MmapMut { inner })
}
/// Creates a raw memory map.
@@ -611,6 +629,22 @@ impl Mmap {
pub fn advise(&self, advice: Advice) -> Result<()> {
self.inner.advise(advice)
}
+
+ /// Lock the whole memory map into RAM. Only supported on Unix.
+ ///
+ /// See [mlock()](https://man7.org/linux/man-pages/man2/mlock.2.html) map page.
+ #[cfg(unix)]
+ pub fn lock(&mut self) -> Result<()> {
+ self.inner.lock()
+ }
+
+ /// Unlock the whole memory map. Only supported on Unix.
+ ///
+ /// See [munlock()](https://man7.org/linux/man-pages/man2/munlock.2.html) map page.
+ #[cfg(unix)]
+ pub fn unlock(&mut self) -> Result<()> {
+ self.inner.unlock()
+ }
}
#[cfg(feature = "stable_deref_trait")]
@@ -856,7 +890,8 @@ impl MmapMut {
///
/// # Errors
///
- /// This method returns an error when the underlying system call fails.
+ /// This method returns an error when the underlying system call fails or
+ /// when `len > isize::MAX`.
pub fn map_anon(length: usize) -> Result<MmapMut> {
MmapOptions::new().len(length).map_anon()
}
@@ -987,6 +1022,22 @@ impl MmapMut {
pub fn advise(&self, advice: Advice) -> Result<()> {
self.inner.advise(advice)
}
+
+ /// Lock the whole memory map into RAM. Only supported on Unix.
+ ///
+ /// See [mlock()](https://man7.org/linux/man-pages/man2/mlock.2.html) map page.
+ #[cfg(unix)]
+ pub fn lock(&mut self) -> Result<()> {
+ self.inner.lock()
+ }
+
+ /// Unlock the whole memory map. Only supported on Unix.
+ ///
+ /// See [munlock()](https://man7.org/linux/man-pages/man2/munlock.2.html) map page.
+ #[cfg(unix)]
+ pub fn unlock(&mut self) -> Result<()> {
+ self.inner.unlock()
+ }
}
#[cfg(feature = "stable_deref_trait")]
@@ -1037,7 +1088,7 @@ mod test {
#[cfg(unix)]
use crate::advice::Advice;
- use std::fs::OpenOptions;
+ use std::fs::{self, OpenOptions};
use std::io::{Read, Write};
#[cfg(unix)]
use std::os::unix::io::AsRawFd;
@@ -1158,6 +1209,17 @@ mod test {
}
#[test]
+ #[cfg(target_pointer_width = "32")]
+ fn map_anon_len_overflow() {
+ let res = MmapMut::map_anon(0x80000000);
+
+ assert_eq!(
+ res.unwrap_err().to_string(),
+ "memory map length overflows isize"
+ );
+ }
+
+ #[test]
fn file_write() {
let tempdir = tempfile::tempdir().unwrap();
let path = tempdir.path().join("mmap");
@@ -1333,7 +1395,6 @@ mod test {
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
fn jit_x86(mut mmap: MmapMut) {
- use std::mem;
mmap[0] = 0xB8; // mov eax, 0xAB
mmap[1] = 0xAB;
mmap[2] = 0x00;
@@ -1343,7 +1404,7 @@ mod test {
let mmap = mmap.make_exec().expect("make_exec");
- let jitfn: extern "C" fn() -> u8 = unsafe { mem::transmute(mmap.as_ptr()) };
+ let jitfn: extern "C" fn() -> u8 = unsafe { std::mem::transmute(mmap.as_ptr()) };
assert_eq!(jitfn(), 0xab);
}
@@ -1557,4 +1618,56 @@ mod test {
// read values back
assert_eq!(&incr[..], &mmap[..]);
}
+
+ /// Returns true if a non-zero amount of memory is locked.
+ #[cfg(target_os = "linux")]
+ fn is_locked() -> bool {
+ let status = &fs::read_to_string("/proc/self/status")
+ .expect("/proc/self/status should be available");
+ for line in status.lines() {
+ if line.starts_with("VmLck:") {
+ let numbers = line.replace(|c: char| !c.is_ascii_digit(), "");
+ return numbers != "0";
+ }
+ }
+ panic!("cannot get VmLck information")
+ }
+
+ #[test]
+ #[cfg(unix)]
+ fn lock() {
+ let tempdir = tempfile::tempdir().unwrap();
+ let path = tempdir.path().join("mmap_lock");
+
+ let file = OpenOptions::new()
+ .read(true)
+ .write(true)
+ .create(true)
+ .open(&path)
+ .unwrap();
+ file.set_len(128).unwrap();
+
+ let mut mmap = unsafe { Mmap::map(&file).unwrap() };
+ #[cfg(target_os = "linux")]
+ assert!(!is_locked());
+
+ mmap.lock().expect("mmap lock should be supported on unix");
+ #[cfg(target_os = "linux")]
+ assert!(is_locked());
+
+ mmap.lock()
+ .expect("mmap lock again should not cause problems");
+ #[cfg(target_os = "linux")]
+ assert!(is_locked());
+
+ mmap.unlock()
+ .expect("mmap unlock should be supported on unix");
+ #[cfg(target_os = "linux")]
+ assert!(!is_locked());
+
+ mmap.unlock()
+ .expect("mmap unlock again should not cause problems");
+ #[cfg(target_os = "linux")]
+ assert!(!is_locked());
+ }
}
diff --git a/vendor/memmap2/src/unix.rs b/vendor/memmap2/src/unix.rs
index cd3dcdbce..158d78c1f 100644
--- a/vendor/memmap2/src/unix.rs
+++ b/vendor/memmap2/src/unix.rs
@@ -1,7 +1,8 @@
extern crate libc;
-use std::mem::MaybeUninit;
-use std::os::unix::io::RawFd;
+use std::fs::File;
+use std::mem::ManuallyDrop;
+use std::os::unix::io::{FromRawFd, RawFd};
use std::sync::atomic::{AtomicUsize, Ordering};
use std::{io, ptr};
@@ -248,6 +249,26 @@ impl MmapInner {
}
}
}
+
+ pub fn lock(&self) -> io::Result<()> {
+ unsafe {
+ if libc::mlock(self.ptr, self.len) != 0 {
+ Err(io::Error::last_os_error())
+ } else {
+ Ok(())
+ }
+ }
+ }
+
+ pub fn unlock(&self) -> io::Result<()> {
+ unsafe {
+ if libc::munlock(self.ptr, self.len) != 0 {
+ Err(io::Error::last_os_error())
+ } else {
+ Ok(())
+ }
+ }
+ }
}
impl Drop for MmapInner {
@@ -284,19 +305,10 @@ fn page_size() -> usize {
}
pub fn file_len(file: RawFd) -> io::Result<u64> {
- #[cfg(not(any(target_os = "linux", target_os = "emscripten", target_os = "l4re")))]
- use libc::{fstat, stat};
- #[cfg(any(target_os = "linux", target_os = "emscripten", target_os = "l4re"))]
- use libc::{fstat64 as fstat, stat64 as stat};
-
+ // SAFETY: We must not close the passed-in fd by dropping the File we create,
+ // we ensure this by immediately wrapping it in a ManuallyDrop.
unsafe {
- let mut stat = MaybeUninit::<stat>::uninit();
-
- let result = fstat(file, stat.as_mut_ptr());
- if result == 0 {
- Ok(stat.assume_init().st_size as u64)
- } else {
- Err(io::Error::last_os_error())
- }
+ let file = ManuallyDrop::new(File::from_raw_fd(file));
+ Ok(file.metadata()?.len())
}
}
diff --git a/vendor/memmap2/src/windows.rs b/vendor/memmap2/src/windows.rs
index b3b8c620a..d580995e6 100644
--- a/vendor/memmap2/src/windows.rs
+++ b/vendor/memmap2/src/windows.rs
@@ -1,8 +1,10 @@
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
+use std::fs::File;
+use std::mem::ManuallyDrop;
use std::os::raw::c_void;
-use std::os::windows::io::RawHandle;
+use std::os::windows::io::{FromRawHandle, RawHandle};
use std::{io, mem, ptr};
type BOOL = i32;
@@ -82,22 +84,6 @@ pub struct FILETIME {
pub dwHighDateTime: DWORD,
}
-#[repr(C)]
-struct BY_HANDLE_FILE_INFORMATION {
- dwFileAttributes: DWORD,
- ftCreationTime: FILETIME,
- ftLastAccessTime: FILETIME,
- ftLastWriteTime: FILETIME,
- dwVolumeSerialNumber: DWORD,
- nFileSizeHigh: DWORD,
- nFileSizeLow: DWORD,
- nNumberOfLinks: DWORD,
- nFileIndexHigh: DWORD,
- nFileIndexLow: DWORD,
-}
-
-type LPBY_HANDLE_FILE_INFORMATION = *mut BY_HANDLE_FILE_INFORMATION;
-
extern "system" {
fn GetCurrentProcess() -> HANDLE;
@@ -124,11 +110,6 @@ extern "system" {
fn FlushFileBuffers(hFile: HANDLE) -> BOOL;
- fn GetFileInformationByHandle(
- hFile: HANDLE,
- lpFileInformation: LPBY_HANDLE_FILE_INFORMATION,
- ) -> BOOL;
-
fn FlushViewOfFile(lpBaseAddress: LPCVOID, dwNumberOfBytesToFlush: SIZE_T) -> BOOL;
fn UnmapViewOfFile(lpBaseAddress: LPCVOID) -> BOOL;
@@ -526,16 +507,10 @@ fn allocation_granularity() -> usize {
}
pub fn file_len(handle: RawHandle) -> io::Result<u64> {
- let info = unsafe {
- let mut info = mem::MaybeUninit::<BY_HANDLE_FILE_INFORMATION>::uninit();
-
- let ok = GetFileInformationByHandle(handle, info.as_mut_ptr());
- if ok == 0 {
- return Err(io::Error::last_os_error());
- }
-
- info.assume_init()
- };
-
- Ok((info.nFileSizeHigh as u64) << 32 | info.nFileSizeLow as u64)
+ // SAFETY: We must not close the passed-in fd by dropping the File we create,
+ // we ensure this by immediately wrapping it in a ManuallyDrop.
+ unsafe {
+ let file = ManuallyDrop::new(File::from_raw_handle(handle));
+ Ok(file.metadata()?.len())
+ }
}
diff --git a/vendor/minifier/.cargo-checksum.json b/vendor/minifier/.cargo-checksum.json
index 4760bcb0d..6ca9569c2 100644
--- a/vendor/minifier/.cargo-checksum.json
+++ b/vendor/minifier/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"adb64b1e8820e83bebfc867d6e5846154743bc324754d50a2bb13742f682f1b9","Cargo.toml":"d5c1e43fffcf2a4a384ea0adfacac7c08b41bd3b05937e7e2ad1aeb0ea2aad62","LICENSE":"d64fe3199be0c90d1f88b363e6b567d5812f64c01accc8957e71381598a3d670","README.md":"7ce7cc43ebca972096db97b9f8bd211e5ac0c688f01b1732d5e2243e8c32d02d","src/css/mod.rs":"afbab7f8a657871fb567b25c5c87cb3e1c9e88d486335e154873b8c818370506","src/css/tests.rs":"056d1d3d927be4c7cece4033b48b28fe3a142939ac2f71cb10ca93f2a28a4477","src/css/token.rs":"b9fff49884a74423e11a913f49dd923b2f8c28e5a29894b08c9d1b2fbc06b85f","src/html.rs":"7b78e2c7d1b0d85065de7e6ab7e0407a74590e23ad1d20fe106c2361f5b09447","src/js/mod.rs":"b63e9cac9cc2cf7063f1eb598892fde3aa55081d0bf926df85c008e35d8e5a30","src/js/token.rs":"81918762068fba64a53dc0328222e74e8c922e657be46bb431ae4a3ac0e9fce9","src/js/tools.rs":"50e9581d6cfa2aebf2928f3df63bbb8a72149c7a40a687f248c108cf154a74ab","src/js/utils.rs":"54d97e766cb38ca1ac7c661a376f8e01c735486f2b78ae149794bb735e8f787b","src/json/json_minifier.rs":"83b5868bff0692aa655973596ad6ff34d215001be47c5c9adad8049faeec87bb","src/json/mod.rs":"e4ff2108ba01d5e937e22108c467c1c191ffc55fffedebd9c86d2a9789abb5e4","src/json/read/byte_to_char.rs":"633cdff14eb99fe7e2ba72594444b2c681a7ec13f557fecfc791b11ce8b9f130","src/json/read/internal_buffer.rs":"459e17fcc86039dd5000dbf9e8c834bfaa02cba2a2afbd19c067c9d621ba7d0b","src/json/read/internal_reader.rs":"37d9f8a31fd6477bbed676ce923a85568e9a96ef5d46db02e92e65ba13c65dea","src/json/read/json_read.rs":"dbc2c729c0c07109860e5a7c69f4fea2c4721fc17f764622392c54bd2afb1b55","src/json/string.rs":"9b9b3a40bfdb6fcbe2f3215a0506b8edfab577dd79e4a404c492fbc486896567","src/lib.rs":"ec53713f3903f80439c83a835d46b562c3cae119f2354d7a5558c0603c86c1a7","src/main.rs":"10c62d1d5544896506962d569d1507d3396bf894f501c26586a561b904956c47","tests/files/main.js":"18f43c7672eb75f532bc7f99dd2b6d644b3a11e19662774e93405928fde4d4d4","tests/files/minified_main.js":"0952e8cff3fae6c91b13a15f2923d922ccd9bce339419cc4bd52b5314180dabb","tests/files/test.json":"e07a148ef24385057cb7420209a630758c6ce80970bd54c8ffee5be207205608","tests/js_minify.rs":"66de1b596668a5f8d11e0b65d42ace3da6bc0b2b997b2d9e2fc09a488624c5af"},"package":"ac96d1e7a65f206443f95afff6de8f1690c77c97d6fc9c9bb2d2cd0662e9ff9f"} \ No newline at end of file
+{"files":{"Cargo.lock":"57dc07ee7630f30d86a9f9729eda1a2df49abcfbd82eaa850d1583de0507a57a","Cargo.toml":"1d804870b80ebb2d7361ab20144152a8593f97b37377834fa4c0f5c399281626","LICENSE":"d64fe3199be0c90d1f88b363e6b567d5812f64c01accc8957e71381598a3d670","README.md":"7ce7cc43ebca972096db97b9f8bd211e5ac0c688f01b1732d5e2243e8c32d02d","src/css/mod.rs":"afbab7f8a657871fb567b25c5c87cb3e1c9e88d486335e154873b8c818370506","src/css/tests.rs":"056d1d3d927be4c7cece4033b48b28fe3a142939ac2f71cb10ca93f2a28a4477","src/css/token.rs":"3f949eb966daab620df03a2fb9e8309fae0f48ad4b3012603f7daa363ab9d62f","src/html.rs":"7b78e2c7d1b0d85065de7e6ab7e0407a74590e23ad1d20fe106c2361f5b09447","src/js/mod.rs":"b63e9cac9cc2cf7063f1eb598892fde3aa55081d0bf926df85c008e35d8e5a30","src/js/token.rs":"81918762068fba64a53dc0328222e74e8c922e657be46bb431ae4a3ac0e9fce9","src/js/tools.rs":"50e9581d6cfa2aebf2928f3df63bbb8a72149c7a40a687f248c108cf154a74ab","src/js/utils.rs":"54d97e766cb38ca1ac7c661a376f8e01c735486f2b78ae149794bb735e8f787b","src/json/json_minifier.rs":"83b5868bff0692aa655973596ad6ff34d215001be47c5c9adad8049faeec87bb","src/json/mod.rs":"e4ff2108ba01d5e937e22108c467c1c191ffc55fffedebd9c86d2a9789abb5e4","src/json/read/byte_to_char.rs":"633cdff14eb99fe7e2ba72594444b2c681a7ec13f557fecfc791b11ce8b9f130","src/json/read/internal_buffer.rs":"459e17fcc86039dd5000dbf9e8c834bfaa02cba2a2afbd19c067c9d621ba7d0b","src/json/read/internal_reader.rs":"37d9f8a31fd6477bbed676ce923a85568e9a96ef5d46db02e92e65ba13c65dea","src/json/read/json_read.rs":"dbc2c729c0c07109860e5a7c69f4fea2c4721fc17f764622392c54bd2afb1b55","src/json/string.rs":"9b9b3a40bfdb6fcbe2f3215a0506b8edfab577dd79e4a404c492fbc486896567","src/lib.rs":"ec53713f3903f80439c83a835d46b562c3cae119f2354d7a5558c0603c86c1a7","src/main.rs":"10c62d1d5544896506962d569d1507d3396bf894f501c26586a561b904956c47","tests/files/main.js":"18f43c7672eb75f532bc7f99dd2b6d644b3a11e19662774e93405928fde4d4d4","tests/files/minified_main.js":"0952e8cff3fae6c91b13a15f2923d922ccd9bce339419cc4bd52b5314180dabb","tests/files/test.json":"e07a148ef24385057cb7420209a630758c6ce80970bd54c8ffee5be207205608","tests/js_minify.rs":"66de1b596668a5f8d11e0b65d42ace3da6bc0b2b997b2d9e2fc09a488624c5af"},"package":"8eb022374af2f446981254e6bf9efb6e2c9e1a53176d395fca02792fd4435729"} \ No newline at end of file
diff --git a/vendor/minifier/Cargo.lock b/vendor/minifier/Cargo.lock
index 9f5453ee1..2b0a9ea5c 100644
--- a/vendor/minifier/Cargo.lock
+++ b/vendor/minifier/Cargo.lock
@@ -19,7 +19,7 @@ checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
[[package]]
name = "minifier"
-version = "0.2.1"
+version = "0.2.2"
dependencies = [
"regex",
]
diff --git a/vendor/minifier/Cargo.toml b/vendor/minifier/Cargo.toml
index be981e4d0..a7f02a37c 100644
--- a/vendor/minifier/Cargo.toml
+++ b/vendor/minifier/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "minifier"
-version = "0.2.1"
+version = "0.2.2"
authors = ["Guillaume Gomez <guillaume1.gomez@gmail.com>"]
description = "Minifier tool/lib for JS/CSS/JSON files"
documentation = "https://docs.rs/minifier-rs"
diff --git a/vendor/minifier/src/css/token.rs b/vendor/minifier/src/css/token.rs
index d2d738840..58e416fcd 100644
--- a/vendor/minifier/src/css/token.rs
+++ b/vendor/minifier/src/css/token.rs
@@ -571,9 +571,17 @@ pub(super) fn tokenize<'a>(source: &'a str) -> Result<Tokens<'a>, &'static str>
}
fn clean_tokens(mut v: Vec<Token<'_>>) -> Vec<Token<'_>> {
+ // This function may remove multiple elements from the vector. Ideally we'd
+ // use `Vec::retain`, but the traversal requires inspecting the previously
+ // retained token and the next token, which `Vec::retain` doesn't allow. So
+ // we have to use a lower-level mechanism.
let mut i = 0;
+ // Index of the previous retained token, if there is one.
+ let mut ip: Option<usize> = None;
let mut is_in_calc = false;
let mut paren = 0;
+ // A vector of bools indicating which elements are to be retained.
+ let mut b = Vec::with_capacity(v.len());
while i < v.len() {
if v[i] == Token::Other("calc") {
@@ -587,39 +595,42 @@ fn clean_tokens(mut v: Vec<Token<'_>>) -> Vec<Token<'_>> {
}
}
+ let mut retain = true;
if v[i].is_useless() {
- if i > 0 && v[i - 1] == Token::Char(ReservedChar::CloseBracket) {
+ #[allow(clippy::if_same_then_else)]
+ if ip.is_some() && v[ip.unwrap()] == Token::Char(ReservedChar::CloseBracket) {
if i + 1 < v.len()
&& (v[i + 1].is_useless()
|| v[i + 1] == Token::Char(ReservedChar::OpenCurlyBrace))
{
- v.remove(i);
- continue;
+ retain = false;
}
- } else if i > 0
- && (v[i - 1] == Token::Other("and")
- || v[i - 1] == Token::Other("or")
- || v[i - 1] == Token::Other("not"))
- {
+ } else if ip.is_some() && matches!(v[ip.unwrap()], Token::Other("and" | "or" | "not")) {
// retain the space after "and", "or" or "not"
- } else if (is_in_calc && v[i - 1].is_useless())
- || !is_in_calc
- && ((i > 0
- && ((v[i - 1].is_char()
- && v[i - 1] != Token::Char(ReservedChar::CloseParenthese))
- || v[i - 1].is_a_media()
- || v[i - 1].is_a_license()))
- || (i < v.len() - 1 && v[i + 1].is_char()))
+ } else if is_in_calc && v[ip.unwrap()].is_useless() {
+ retain = false;
+ } else if !is_in_calc
+ && ((ip.is_some() && {
+ let prev = &v[ip.unwrap()];
+ (prev.is_char() && prev != &Token::Char(ReservedChar::CloseParenthese))
+ || prev.is_a_media()
+ || prev.is_a_license()
+ }) || (i < v.len() - 1 && v[i + 1].is_char()))
{
- v.remove(i);
- continue;
+ retain = false;
}
} else if v[i].is_comment() {
- v.remove(i);
- continue;
+ retain = false;
+ }
+ if retain {
+ ip = Some(i);
}
+ b.push(retain);
i += 1;
}
+ assert_eq!(v.len(), b.len());
+ let mut b = b.into_iter();
+ v.retain(|_| b.next().unwrap());
v
}
diff --git a/vendor/miniz_oxide/.cargo-checksum.json b/vendor/miniz_oxide/.cargo-checksum.json
index a30f6d5ad..16e89c510 100644
--- a/vendor/miniz_oxide/.cargo-checksum.json
+++ b/vendor/miniz_oxide/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"bdec209313b683bf315ff5134fde0322e46a27ae8ec9de303ffa22cc67826365","LICENSE":"e190940e8ad3cdd4fca962a6508ed6865d589d314b1cb055f86000e124b88d8d","LICENSE-APACHE.md":"0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594","LICENSE-MIT.md":"e190940e8ad3cdd4fca962a6508ed6865d589d314b1cb055f86000e124b88d8d","LICENSE-ZLIB.md":"c89bcc058da12a0fb24402b8ea4542a21515dd1da2e8c67bba4ed9bd269f1c96","Readme.md":"b6a6668b073a3356748b642ce51b31233b6408ffcca3e52801ef473a9f7925c7","src/deflate/buffer.rs":"76bcca4e79bef412eeebdd06d2d0a4348ed9ee17edbdaa6d451d8bf03b1cde85","src/deflate/core.rs":"8087c155cb47f57a9747565857dcef59fff0a7a499abbfdb0c60e694d3234db8","src/deflate/mod.rs":"8ade5b9683b8d728fe5e8f5c23e0630165bfdbef3e56a18b1b729f9bbd4a4b1d","src/deflate/stream.rs":"016c82b09a989492c8c8ea89027d339fcf59a5ca2155e7026ac094ca74344712","src/inflate/core.rs":"49bd596d5255ac88b486f6f978ab7b26663cdab01a6ebaa41bf4559f12b0fed8","src/inflate/mod.rs":"8b65692f1bb71b4973df8da7ca9ffc8c4e4e439f6b5993e16a96d20dc3a08f52","src/inflate/output_buffer.rs":"1ae90d03ba8c9d667fe248b6066731774afdf93cc79cd3bf90e0711b963b0b72","src/inflate/stream.rs":"f82c44ffdff054aff05307ed5709e432b54d5997bb4bbfff8f760171c33c76c3","src/lib.rs":"a9d6a889415ffe3d800c8516fb0ac0bae3585010966d1fdf3b06a85330c36854","src/shared.rs":"a8c47fcb566591e39fcd50d44f3b4d0f567318b8ca36c8d732ee0d8c99a14906"},"package":"6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc"} \ No newline at end of file
+{"files":{"Cargo.toml":"14ec71e104b90decb8b84170557138a51cc39a8b83b721d74eb476fb13f6bdd2","LICENSE":"e190940e8ad3cdd4fca962a6508ed6865d589d314b1cb055f86000e124b88d8d","LICENSE-APACHE.md":"0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594","LICENSE-MIT.md":"e190940e8ad3cdd4fca962a6508ed6865d589d314b1cb055f86000e124b88d8d","LICENSE-ZLIB.md":"c89bcc058da12a0fb24402b8ea4542a21515dd1da2e8c67bba4ed9bd269f1c96","Readme.md":"b6a6668b073a3356748b642ce51b31233b6408ffcca3e52801ef473a9f7925c7","src/deflate/buffer.rs":"76bcca4e79bef412eeebdd06d2d0a4348ed9ee17edbdaa6d451d8bf03b1cde85","src/deflate/core.rs":"8087c155cb47f57a9747565857dcef59fff0a7a499abbfdb0c60e694d3234db8","src/deflate/mod.rs":"8ade5b9683b8d728fe5e8f5c23e0630165bfdbef3e56a18b1b729f9bbd4a4b1d","src/deflate/stream.rs":"016c82b09a989492c8c8ea89027d339fcf59a5ca2155e7026ac094ca74344712","src/inflate/core.rs":"49bd596d5255ac88b486f6f978ab7b26663cdab01a6ebaa41bf4559f12b0fed8","src/inflate/mod.rs":"690a8cd50a7da88672b750bb2c62d52d2a58efa41e6ddb2084589a17095cb875","src/inflate/output_buffer.rs":"1ae90d03ba8c9d667fe248b6066731774afdf93cc79cd3bf90e0711b963b0b72","src/inflate/stream.rs":"f82c44ffdff054aff05307ed5709e432b54d5997bb4bbfff8f760171c33c76c3","src/lib.rs":"a9d6a889415ffe3d800c8516fb0ac0bae3585010966d1fdf3b06a85330c36854","src/shared.rs":"a8c47fcb566591e39fcd50d44f3b4d0f567318b8ca36c8d732ee0d8c99a14906"},"package":"96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"} \ No newline at end of file
diff --git a/vendor/miniz_oxide/Cargo.toml b/vendor/miniz_oxide/Cargo.toml
index 7546128ce..7fa9d3e06 100644
--- a/vendor/miniz_oxide/Cargo.toml
+++ b/vendor/miniz_oxide/Cargo.toml
@@ -12,20 +12,32 @@
[package]
edition = "2018"
name = "miniz_oxide"
-version = "0.5.3"
-authors = ["Frommi <daniil.liferenko@gmail.com>", "oyvindln <oyvindln@users.noreply.github.com>"]
-exclude = ["benches/*", "tests/*"]
+version = "0.5.4"
+authors = [
+ "Frommi <daniil.liferenko@gmail.com>",
+ "oyvindln <oyvindln@users.noreply.github.com>",
+]
+exclude = [
+ "benches/*",
+ "tests/*",
+]
description = "DEFLATE compression and decompression library rewritten in Rust based on miniz"
homepage = "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide"
documentation = "https://docs.rs/miniz_oxide"
readme = "Readme.md"
-keywords = ["zlib", "miniz", "deflate", "encoding"]
+keywords = [
+ "zlib",
+ "miniz",
+ "deflate",
+ "encoding",
+]
categories = ["compression"]
license = "MIT OR Zlib OR Apache-2.0"
repository = "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide"
[lib]
name = "miniz_oxide"
+
[dependencies.adler]
version = "1.0"
default-features = false
@@ -51,5 +63,10 @@ default-features = false
[features]
default = []
-rustc-dep-of-std = ["core", "alloc", "compiler_builtins", "adler/rustc-dep-of-std"]
+rustc-dep-of-std = [
+ "core",
+ "alloc",
+ "compiler_builtins",
+ "adler/rustc-dep-of-std",
+]
simd = ["simd-adler32"]
diff --git a/vendor/miniz_oxide/src/inflate/mod.rs b/vendor/miniz_oxide/src/inflate/mod.rs
index 535392327..03b9dc988 100644
--- a/vendor/miniz_oxide/src/inflate/mod.rs
+++ b/vendor/miniz_oxide/src/inflate/mod.rs
@@ -151,14 +151,12 @@ fn decompress_to_vec_inner(
}
TINFLStatus::HasMoreOutput => {
- // We need more space, so check if we can resize the buffer and do it.
- let new_len = ret
- .len()
- .checked_add(out_pos)
- .ok_or(TINFLStatus::HasMoreOutput)?;
- if new_len > max_output_size {
+ // if the buffer has already reached the size limit, return an error
+ if ret.len() >= max_output_size {
return Err(TINFLStatus::HasMoreOutput);
- };
+ }
+ // calculate the new length, capped at `max_output_size`
+ let new_len = ret.len().saturating_mul(2).min(max_output_size);
ret.resize(new_len, 0);
}
diff --git a/vendor/once_cell/.cargo-checksum.json b/vendor/once_cell/.cargo-checksum.json
index 247fbbfc0..6f8adad72 100644
--- a/vendor/once_cell/.cargo-checksum.json
+++ b/vendor/once_cell/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"6b2f19d43eb81a0d5e91340c27953334a1fce5f34056069ee126f4e40747606b","Cargo.lock":"dab17e5aacff6a0ede5fad63ae4aaa5173391f7a37cfac1ee51078a172816bb4","Cargo.toml":"6304404996d3c7506816b51df07b8f8fc3e4900e3d3a2c97dd7936567f20bbcc","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"813d262a320611ba874c4b2488256bdb2b4073649616a1471b389d464a704301","bors.toml":"ebd69f714a49dceb8fd10ebadfea6e2767be4732fdef49eddf6239151b4bc78c","examples/bench.rs":"1597a52529f75d6c5ad0b86759a775b1d723dfa810e2016317283b13594219da","examples/bench_acquire.rs":"9f4912ca262194cb55e893c33739c85c2f4868d07905b9dd3238552b6ce8a6e4","examples/bench_vs_lazy_static.rs":"d527294a2e73b53ac5faed8b316dfd1ae2a06adb31384134af21f10ce76333a5","examples/lazy_static.rs":"90541b093ed1d1cbb73f4097ff02cf80657e28264d281d6a31d96a708fdfea90","examples/reentrant_init_deadlocks.rs":"ff84929de27a848e5b155549caa96db5db5f030afca975f8ba3f3da640083001","examples/regex.rs":"4a2e0fb093c7f5bbe0fff8689fc0c670c5334344a1bfda376f5faa98a05d459f","examples/test_synchronization.rs":"88abd5c16275bb2f2d77eaecf369d97681404a77b8edd0021f24bfd377c46be3","src/imp_pl.rs":"1959494004fb0ee7443e97c4abd8be69d7173fe2b66f8fff0bca7b5c8e512525","src/imp_std.rs":"476c60b61762bda710c68624fb83531cc457780cf3e5223f40a5362d33f3ab5c","src/lib.rs":"5320847175dc279e7abd2d98e17ab8d05b2eb7e383a4f249623b71a5209f2346","src/race.rs":"5a19afca4b5510d09ca7317b96f5642725c58b0969b2bdeb7275ed674d061e5d","tests/it.rs":"501c4ab3f4e718fa555707e9d32f3688c05e4ef8ea967e72e1c99da6bb06a0ad"},"package":"18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"f6198c1a83a8245a7b2ab062a316f3f97dfba190ac1d6bb47949e9c0cf4dac80","Cargo.lock":"e69c2663fe7efb3a4e463af446fa1367bd8e008100500137052ef15b84b02ebc","Cargo.toml":"d08e0411e5eda265a3359939f1fb646dff29ca38896222ffe0900b0af8e3ae70","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"813d262a320611ba874c4b2488256bdb2b4073649616a1471b389d464a704301","bors.toml":"ebd69f714a49dceb8fd10ebadfea6e2767be4732fdef49eddf6239151b4bc78c","examples/bench.rs":"1597a52529f75d6c5ad0b86759a775b1d723dfa810e2016317283b13594219da","examples/bench_acquire.rs":"9f4912ca262194cb55e893c33739c85c2f4868d07905b9dd3238552b6ce8a6e4","examples/bench_vs_lazy_static.rs":"d527294a2e73b53ac5faed8b316dfd1ae2a06adb31384134af21f10ce76333a5","examples/lazy_static.rs":"8bca1b264da21eceb1ccaf30477fc941bc71bedd030f1c6982ed3a7804abfb4f","examples/reentrant_init_deadlocks.rs":"ff84929de27a848e5b155549caa96db5db5f030afca975f8ba3f3da640083001","examples/regex.rs":"4a2e0fb093c7f5bbe0fff8689fc0c670c5334344a1bfda376f5faa98a05d459f","examples/test_synchronization.rs":"88abd5c16275bb2f2d77eaecf369d97681404a77b8edd0021f24bfd377c46be3","src/imp_pl.rs":"1959494004fb0ee7443e97c4abd8be69d7173fe2b66f8fff0bca7b5c8e512525","src/imp_std.rs":"33be3a0df87e092abd68280dc72d50534d273d17eb86940e7ba2b8a45da78a70","src/lib.rs":"88d2f7a63bd63f630733c86ea035b53e53f2f8d3c44f1025bc9bbe5ceaa7375f","src/race.rs":"5a19afca4b5510d09ca7317b96f5642725c58b0969b2bdeb7275ed674d061e5d","tests/it.rs":"4448a74a9898babfb943bae42ebfe3b07ec2b002ea39712127159955015d33b4"},"package":"e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1"} \ No newline at end of file
diff --git a/vendor/once_cell/CHANGELOG.md b/vendor/once_cell/CHANGELOG.md
index d5019bae3..005ce6951 100644
--- a/vendor/once_cell/CHANGELOG.md
+++ b/vendor/once_cell/CHANGELOG.md
@@ -4,6 +4,23 @@
-
+## 1.15.0
+
+- Increase minimal supported Rust version to 1.56.0.
+- Implement `UnwindSafe` even if the `std` feature is disabled.
+
+## 1.14.0
+
+- Add extension to `unsync` and `sync` `Lazy` mut API:
+ - `force_mut`
+ - `get_mut`
+
+
+## 1.13.1
+
+- Make implementation compliant with [strict provenance](https://github.com/rust-lang/rust/issues/95228).
+- Upgrade `atomic-polyfill` to `1.0`
+
## 1.13.0
- Add `Lazy::get`, similar to `OnceCell::get`.
diff --git a/vendor/once_cell/Cargo.lock b/vendor/once_cell/Cargo.lock
index 27cd64c4a..83f83681a 100644
--- a/vendor/once_cell/Cargo.lock
+++ b/vendor/once_cell/Cargo.lock
@@ -4,50 +4,23 @@ version = 3
[[package]]
name = "aho-corasick"
-version = "0.7.4"
+version = "0.7.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36b7aa1ccb7d7ea3f437cf025a2ab1c47cc6c1bc9fc84918ff449def12f5e282"
+checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
dependencies = [
"memchr",
]
[[package]]
name = "atomic-polyfill"
-version = "0.1.8"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e14bf7b4f565e5e717d7a7a65b2a05c0b8c96e4db636d6f780f03b15108cdd1b"
+checksum = "d299f547288d6db8d5c3a2916f7b2f66134b15b8c1ac1c4357dd3b8752af7bb2"
dependencies = [
"critical-section",
]
[[package]]
-name = "bare-metal"
-version = "0.2.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5deb64efa5bd81e31fcd1938615a6d98c82eafcbcd787162b6f63b91d6bac5b3"
-dependencies = [
- "rustc_version",
-]
-
-[[package]]
-name = "bare-metal"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8fe8f5a8a398345e52358e18ff07cc17a568fbca5c6f73873d3a62056309603"
-
-[[package]]
-name = "bit_field"
-version = "0.10.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4"
-
-[[package]]
-name = "bitfield"
-version = "0.13.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "46afbd2983a5d5a7bd740ccb198caf5b82f45c40c09c0eed36052d91cb92e719"
-
-[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -60,91 +33,48 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
-name = "cortex-m"
-version = "0.7.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cd20d4ac4aa86f4f75f239d59e542ef67de87cce2c282818dc6e84155d3ea126"
-dependencies = [
- "bare-metal 0.2.5",
- "bitfield",
- "embedded-hal",
- "volatile-register",
-]
-
-[[package]]
name = "critical-section"
-version = "0.2.7"
+version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "95da181745b56d4bd339530ec393508910c909c784e8962d15d722bacf0bcbcd"
-dependencies = [
- "bare-metal 1.0.0",
- "cfg-if",
- "cortex-m",
- "riscv",
-]
+checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52"
[[package]]
name = "crossbeam-utils"
-version = "0.8.10"
+version = "0.8.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83"
+checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc"
dependencies = [
"cfg-if",
- "once_cell 1.12.1",
-]
-
-[[package]]
-name = "embedded-hal"
-version = "0.2.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35949884794ad573cf46071e41c9b60efb0cb311e3ca01f7af807af1debc66ff"
-dependencies = [
- "nb 0.1.3",
- "void",
+ "once_cell 1.14.0",
]
[[package]]
name = "lazy_static"
-version = "1.0.0"
+version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d"
+checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.126"
+version = "0.2.132"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
+checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5"
[[package]]
name = "memchr"
-version = "2.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e"
-
-[[package]]
-name = "nb"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "801d31da0513b6ec5214e9bf433a77966320625a37860f910be265be6e18d06f"
-dependencies = [
- "nb 1.0.0",
-]
-
-[[package]]
-name = "nb"
-version = "1.0.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "546c37ac5d9e56f55e73b677106873d9d9f5190605e41a856503623648488cae"
+checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
[[package]]
name = "once_cell"
-version = "1.12.1"
+version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac8b1a9b2518dc799a2271eff1688707eb315f0d4697aa6b0871369ca4c4da55"
+checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0"
[[package]]
name = "once_cell"
-version = "1.13.0"
+version = "1.15.0"
dependencies = [
"atomic-polyfill",
"crossbeam-utils",
@@ -168,79 +98,29 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.2.13"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42"
+checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"
dependencies = [
"bitflags",
]
[[package]]
name = "regex"
-version = "1.2.0"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b23da8dfd98a84bd7e08700190a5d9f7d2d38abd4369dd1dae651bc40bfd2cc"
+checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
- "thread_local",
- "utf8-ranges",
]
[[package]]
name = "regex-syntax"
-version = "0.6.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfaca88e749e19dffb60f77b55e5d87a872fac7e9e48598f7cf93b2d8c047b0a"
-dependencies = [
- "ucd-util",
-]
-
-[[package]]
-name = "riscv"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6907ccdd7a31012b70faf2af85cd9e5ba97657cc3987c4f13f8e4d2c2a088aba"
-dependencies = [
- "bare-metal 1.0.0",
- "bit_field",
- "riscv-target",
-]
-
-[[package]]
-name = "riscv-target"
-version = "0.1.2"
+version = "0.6.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "88aa938cda42a0cf62a20cfe8d139ff1af20c2e681212b5b34adb5a58333f222"
-dependencies = [
- "lazy_static",
- "regex",
-]
-
-[[package]]
-name = "rustc_version"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
-dependencies = [
- "semver",
-]
-
-[[package]]
-name = "semver"
-version = "0.9.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
-dependencies = [
- "semver-parser",
-]
-
-[[package]]
-name = "semver-parser"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
[[package]]
name = "smallvec"
@@ -249,48 +129,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"
[[package]]
-name = "thread_local"
-version = "0.3.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b"
-dependencies = [
- "lazy_static",
-]
-
-[[package]]
-name = "ucd-util"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f3bf5cdf1df6b578c0947a94d4740bbb2b2afd1b898e33df1ff07b555a335e4"
-
-[[package]]
-name = "utf8-ranges"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd70f467df6810094968e2fce0ee1bd0e87157aceb026a8c083bcf5e25b9efe4"
-
-[[package]]
-name = "vcell"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "77439c1b53d2303b20d9459b1ade71a83c716e3f9c34f3228c00e6f185d6c002"
-
-[[package]]
-name = "void"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
-
-[[package]]
-name = "volatile-register"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ee8f19f9d74293faf70901bc20ad067dc1ad390d2cbf1e3f75f721ffee908b6"
-dependencies = [
- "vcell",
-]
-
-[[package]]
name = "windows-sys"
version = "0.36.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/vendor/once_cell/Cargo.toml b/vendor/once_cell/Cargo.toml
index a815a5549..bde77ee9d 100644
--- a/vendor/once_cell/Cargo.toml
+++ b/vendor/once_cell/Cargo.toml
@@ -10,9 +10,10 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2018"
+edition = "2021"
+rust-version = "1.56"
name = "once_cell"
-version = "1.13.0"
+version = "1.15.0"
authors = ["Aleksey Kladov <aleksey.kladov@gmail.com>"]
exclude = [
"*.png",
@@ -33,6 +34,7 @@ categories = [
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/matklad/once_cell"
+resolver = "2"
[package.metadata.docs.rs]
all-features = true
@@ -66,7 +68,7 @@ name = "test_synchronization"
required-features = ["std"]
[dependencies.atomic-polyfill]
-version = "0.1"
+version = "1"
optional = true
[dependencies.parking_lot_core]
diff --git a/vendor/once_cell/examples/lazy_static.rs b/vendor/once_cell/examples/lazy_static.rs
index f0505609b..3cdb19f2a 100644
--- a/vendor/once_cell/examples/lazy_static.rs
+++ b/vendor/once_cell/examples/lazy_static.rs
@@ -32,5 +32,5 @@ fn main() {
// The same works for function-style:
assert_eq!(hashmap().get(&0), Some(&"foo"));
- assert_eq!(hashmap().get(&0), Some(&"bar"));
+ assert_eq!(hashmap().get(&1), Some(&"bar"));
}
diff --git a/vendor/once_cell/src/imp_std.rs b/vendor/once_cell/src/imp_std.rs
index 2bbe5b76e..4d5b5fd32 100644
--- a/vendor/once_cell/src/imp_std.rs
+++ b/vendor/once_cell/src/imp_std.rs
@@ -8,7 +8,7 @@ use std::{
hint::unreachable_unchecked,
marker::PhantomData,
panic::{RefUnwindSafe, UnwindSafe},
- sync::atomic::{AtomicBool, AtomicUsize, Ordering},
+ sync::atomic::{AtomicBool, AtomicPtr, Ordering},
thread::{self, Thread},
};
@@ -24,7 +24,7 @@ pub(crate) struct OnceCell<T> {
//
// State is encoded in two low bits. Only `INCOMPLETE` and `RUNNING` states
// allow waiters.
- queue: AtomicUsize,
+ queue: AtomicPtr<Waiter>,
_marker: PhantomData<*mut Waiter>,
value: UnsafeCell<Option<T>>,
}
@@ -43,7 +43,7 @@ impl<T: UnwindSafe> UnwindSafe for OnceCell<T> {}
impl<T> OnceCell<T> {
pub(crate) const fn new() -> OnceCell<T> {
OnceCell {
- queue: AtomicUsize::new(INCOMPLETE),
+ queue: AtomicPtr::new(INCOMPLETE_PTR),
_marker: PhantomData,
value: UnsafeCell::new(None),
}
@@ -51,7 +51,7 @@ impl<T> OnceCell<T> {
pub(crate) const fn with_value(value: T) -> OnceCell<T> {
OnceCell {
- queue: AtomicUsize::new(COMPLETE),
+ queue: AtomicPtr::new(COMPLETE_PTR),
_marker: PhantomData,
value: UnsafeCell::new(Some(value)),
}
@@ -64,7 +64,7 @@ impl<T> OnceCell<T> {
// operations visible to us, and, this being a fast path, weaker
// ordering helps with performance. This `Acquire` synchronizes with
// `SeqCst` operations on the slow path.
- self.queue.load(Ordering::Acquire) == COMPLETE
+ self.queue.load(Ordering::Acquire) == COMPLETE_PTR
}
/// Safety: synchronizes with store to value via SeqCst read from state,
@@ -145,6 +145,8 @@ impl<T> OnceCell<T> {
const INCOMPLETE: usize = 0x0;
const RUNNING: usize = 0x1;
const COMPLETE: usize = 0x2;
+const INCOMPLETE_PTR: *mut Waiter = INCOMPLETE as *mut Waiter;
+const COMPLETE_PTR: *mut Waiter = COMPLETE as *mut Waiter;
// Mask to learn about the state. All other bits are the queue of waiters if
// this is in the RUNNING state.
@@ -156,23 +158,24 @@ const STATE_MASK: usize = 0x3;
struct Waiter {
thread: Cell<Option<Thread>>,
signaled: AtomicBool,
- next: *const Waiter,
+ next: *mut Waiter,
}
/// Drains and notifies the queue of waiters on drop.
struct Guard<'a> {
- queue: &'a AtomicUsize,
- new_queue: usize,
+ queue: &'a AtomicPtr<Waiter>,
+ new_queue: *mut Waiter,
}
impl Drop for Guard<'_> {
fn drop(&mut self) {
let queue = self.queue.swap(self.new_queue, Ordering::AcqRel);
- assert_eq!(queue & STATE_MASK, RUNNING);
+ let state = strict::addr(queue) & STATE_MASK;
+ assert_eq!(state, RUNNING);
unsafe {
- let mut waiter = (queue & !STATE_MASK) as *const Waiter;
+ let mut waiter = strict::map_addr(queue, |q| q & !STATE_MASK);
while !waiter.is_null() {
let next = (*waiter).next;
let thread = (*waiter).thread.take().unwrap();
@@ -191,17 +194,17 @@ impl Drop for Guard<'_> {
//
// Note: this is intentionally monomorphic
#[inline(never)]
-fn initialize_or_wait(queue: &AtomicUsize, mut init: Option<&mut dyn FnMut() -> bool>) {
+fn initialize_or_wait(queue: &AtomicPtr<Waiter>, mut init: Option<&mut dyn FnMut() -> bool>) {
let mut curr_queue = queue.load(Ordering::Acquire);
loop {
- let curr_state = curr_queue & STATE_MASK;
+ let curr_state = strict::addr(curr_queue) & STATE_MASK;
match (curr_state, &mut init) {
(COMPLETE, _) => return,
(INCOMPLETE, Some(init)) => {
let exchange = queue.compare_exchange(
curr_queue,
- (curr_queue & !STATE_MASK) | RUNNING,
+ strict::map_addr(curr_queue, |q| (q & !STATE_MASK) | RUNNING),
Ordering::Acquire,
Ordering::Acquire,
);
@@ -209,9 +212,9 @@ fn initialize_or_wait(queue: &AtomicUsize, mut init: Option<&mut dyn FnMut() ->
curr_queue = new_queue;
continue;
}
- let mut guard = Guard { queue, new_queue: INCOMPLETE };
+ let mut guard = Guard { queue, new_queue: INCOMPLETE_PTR };
if init() {
- guard.new_queue = COMPLETE;
+ guard.new_queue = COMPLETE_PTR;
}
return;
}
@@ -224,24 +227,24 @@ fn initialize_or_wait(queue: &AtomicUsize, mut init: Option<&mut dyn FnMut() ->
}
}
-fn wait(queue: &AtomicUsize, mut curr_queue: usize) {
- let curr_state = curr_queue & STATE_MASK;
+fn wait(queue: &AtomicPtr<Waiter>, mut curr_queue: *mut Waiter) {
+ let curr_state = strict::addr(curr_queue) & STATE_MASK;
loop {
let node = Waiter {
thread: Cell::new(Some(thread::current())),
signaled: AtomicBool::new(false),
- next: (curr_queue & !STATE_MASK) as *const Waiter,
+ next: strict::map_addr(curr_queue, |q| q & !STATE_MASK),
};
- let me = &node as *const Waiter as usize;
+ let me = &node as *const Waiter as *mut Waiter;
let exchange = queue.compare_exchange(
curr_queue,
- me | curr_state,
+ strict::map_addr(me, |q| q | curr_state),
Ordering::Release,
Ordering::Relaxed,
);
if let Err(new_queue) = exchange {
- if new_queue & STATE_MASK != curr_state {
+ if strict::addr(new_queue) & STATE_MASK != curr_state {
return;
}
curr_queue = new_queue;
@@ -255,6 +258,54 @@ fn wait(queue: &AtomicUsize, mut curr_queue: usize) {
}
}
+// Polyfill of strict provenance from https://crates.io/crates/sptr.
+//
+// Use free-standing function rather than a trait to keep things simple and
+// avoid any potential conflicts with future stabile std API.
+mod strict {
+ #[must_use]
+ #[inline]
+ pub(crate) fn addr<T>(ptr: *mut T) -> usize
+ where
+ T: Sized,
+ {
+ // FIXME(strict_provenance_magic): I am magic and should be a compiler intrinsic.
+ // SAFETY: Pointer-to-integer transmutes are valid (if you are okay with losing the
+ // provenance).
+ unsafe { core::mem::transmute(ptr) }
+ }
+
+ #[must_use]
+ #[inline]
+ pub(crate) fn with_addr<T>(ptr: *mut T, addr: usize) -> *mut T
+ where
+ T: Sized,
+ {
+ // FIXME(strict_provenance_magic): I am magic and should be a compiler intrinsic.
+ //
+ // In the mean-time, this operation is defined to be "as if" it was
+ // a wrapping_offset, so we can emulate it as such. This should properly
+ // restore pointer provenance even under today's compiler.
+ let self_addr = self::addr(ptr) as isize;
+ let dest_addr = addr as isize;
+ let offset = dest_addr.wrapping_sub(self_addr);
+
+ // This is the canonical desugarring of this operation,
+ // but `pointer::cast` was only stabilized in 1.38.
+ // self.cast::<u8>().wrapping_offset(offset).cast::<T>()
+ (ptr as *mut u8).wrapping_offset(offset) as *mut T
+ }
+
+ #[must_use]
+ #[inline]
+ pub(crate) fn map_addr<T>(ptr: *mut T, f: impl FnOnce(usize) -> usize) -> *mut T
+ where
+ T: Sized,
+ {
+ self::with_addr(ptr, f(addr(ptr)))
+ }
+}
+
// These test are snatched from std as well.
#[cfg(test)]
mod tests {
diff --git a/vendor/once_cell/src/lib.rs b/vendor/once_cell/src/lib.rs
index 70f08dea6..6de1e3eeb 100644
--- a/vendor/once_cell/src/lib.rs
+++ b/vendor/once_cell/src/lib.rs
@@ -267,7 +267,7 @@
//!
//! # Minimum Supported `rustc` Version
//!
-//! This crate's minimum supported `rustc` version is `1.36.0`.
+//! This crate's minimum supported `rustc` version is `1.56.0`.
//!
//! If only the `std` feature is enabled, MSRV will be updated conservatively.
//! When using other features, like `parking_lot`, MSRV might be updated more frequently, up to the latest stable.
@@ -348,11 +348,9 @@ pub mod unsync {
cell::{Cell, UnsafeCell},
fmt, hint, mem,
ops::{Deref, DerefMut},
+ panic::{RefUnwindSafe, UnwindSafe},
};
- #[cfg(feature = "std")]
- use std::panic::{RefUnwindSafe, UnwindSafe};
-
/// A cell which can be written to only once. It is not thread safe.
///
/// Unlike [`std::cell::RefCell`], a `OnceCell` provides simple `&`
@@ -382,9 +380,7 @@ pub mod unsync {
// `&unsync::OnceCell` to sneak a `T` through `catch_unwind`,
// by initializing the cell in closure and extracting the value in the
// `Drop`.
- #[cfg(feature = "std")]
impl<T: RefUnwindSafe + UnwindSafe> RefUnwindSafe for OnceCell<T> {}
- #[cfg(feature = "std")]
impl<T: UnwindSafe> UnwindSafe for OnceCell<T> {}
impl<T> Default for OnceCell<T> {
@@ -680,7 +676,6 @@ pub mod unsync {
init: Cell<Option<F>>,
}
- #[cfg(feature = "std")]
impl<T, F: RefUnwindSafe> RefUnwindSafe for Lazy<T, F> where OnceCell<T>: RefUnwindSafe {}
impl<T: fmt::Debug, F> fmt::Debug for Lazy<T, F> {
@@ -742,6 +737,25 @@ pub mod unsync {
})
}
+ /// Forces the evaluation of this lazy value and returns a mutable reference to
+ /// the result.
+ ///
+ /// This is equivalent to the `DerefMut` impl, but is explicit.
+ ///
+ /// # Example
+ /// ```
+ /// use once_cell::unsync::Lazy;
+ ///
+ /// let mut lazy = Lazy::new(|| 92);
+ ///
+ /// assert_eq!(Lazy::force_mut(&mut lazy), &92);
+ /// assert_eq!(*lazy, 92);
+ /// ```
+ pub fn force_mut(this: &mut Lazy<T, F>) -> &mut T {
+ Self::force(this);
+ Self::get_mut(this).unwrap_or_else(|| unreachable!())
+ }
+
/// Gets the reference to the result of this lazy value if
/// it was initialized, otherwise returns `None`.
///
@@ -758,6 +772,23 @@ pub mod unsync {
pub fn get(this: &Lazy<T, F>) -> Option<&T> {
this.cell.get()
}
+
+ /// Gets the mutable reference to the result of this lazy value if
+ /// it was initialized, otherwise returns `None`.
+ ///
+ /// # Example
+ /// ```
+ /// use once_cell::unsync::Lazy;
+ ///
+ /// let mut lazy = Lazy::new(|| 92);
+ ///
+ /// assert_eq!(Lazy::get_mut(&mut lazy), None);
+ /// assert_eq!(*lazy, 92);
+ /// assert_eq!(Lazy::get_mut(&mut lazy), Some(&mut 92));
+ /// ```
+ pub fn get_mut(this: &mut Lazy<T, F>) -> Option<&mut T> {
+ this.cell.get_mut()
+ }
}
impl<T, F: FnOnce() -> T> Deref for Lazy<T, F> {
@@ -1189,7 +1220,6 @@ pub mod sync {
unsafe impl<T, F: Send> Sync for Lazy<T, F> where OnceCell<T>: Sync {}
// auto-derived `Send` impl is OK.
- #[cfg(feature = "std")]
impl<T, F: RefUnwindSafe> RefUnwindSafe for Lazy<T, F> where OnceCell<T>: RefUnwindSafe {}
impl<T, F> Lazy<T, F> {
@@ -1232,6 +1262,23 @@ pub mod sync {
})
}
+ /// Forces the evaluation of this lazy value and
+ /// returns a mutable reference to the result. This is equivalent
+ /// to the `Deref` impl, but is explicit.
+ ///
+ /// # Example
+ /// ```
+ /// use once_cell::sync::Lazy;
+ ///
+ /// let mut lazy = Lazy::new(|| 92);
+ ///
+ /// assert_eq!(Lazy::force_mut(&mut lazy), &mut 92);
+ /// ```
+ pub fn force_mut(this: &mut Lazy<T, F>) -> &mut T {
+ Self::force(this);
+ Self::get_mut(this).unwrap_or_else(|| unreachable!())
+ }
+
/// Gets the reference to the result of this lazy value if
/// it was initialized, otherwise returns `None`.
///
@@ -1248,6 +1295,23 @@ pub mod sync {
pub fn get(this: &Lazy<T, F>) -> Option<&T> {
this.cell.get()
}
+
+ /// Gets the reference to the result of this lazy value if
+ /// it was initialized, otherwise returns `None`.
+ ///
+ /// # Example
+ /// ```
+ /// use once_cell::sync::Lazy;
+ ///
+ /// let mut lazy = Lazy::new(|| 92);
+ ///
+ /// assert_eq!(Lazy::get_mut(&mut lazy), None);
+ /// assert_eq!(&*lazy, &92);
+ /// assert_eq!(Lazy::get_mut(&mut lazy), Some(&mut 92));
+ /// ```
+ pub fn get_mut(this: &mut Lazy<T, F>) -> Option<&mut T> {
+ this.cell.get_mut()
+ }
}
impl<T, F: FnOnce() -> T> Deref for Lazy<T, F> {
diff --git a/vendor/once_cell/tests/it.rs b/vendor/once_cell/tests/it.rs
index 476f14bb0..410b93b64 100644
--- a/vendor/once_cell/tests/it.rs
+++ b/vendor/once_cell/tests/it.rs
@@ -138,6 +138,41 @@ mod unsync {
}
#[test]
+ fn lazy_force_mut() {
+ let called = Cell::new(0);
+ let mut x = Lazy::new(|| {
+ called.set(called.get() + 1);
+ 92
+ });
+ assert_eq!(called.get(), 0);
+ let v = Lazy::force_mut(&mut x);
+ assert_eq!(called.get(), 1);
+
+ *v /= 2;
+ assert_eq!(*x, 46);
+ assert_eq!(called.get(), 1);
+ }
+
+ #[test]
+ fn lazy_get_mut() {
+ let called = Cell::new(0);
+ let mut x: Lazy<u32, _> = Lazy::new(|| {
+ called.set(called.get() + 1);
+ 92
+ });
+
+ assert_eq!(called.get(), 0);
+ assert_eq!(*x, 92);
+
+ let mut_ref: &mut u32 = Lazy::get_mut(&mut x).unwrap();
+ assert_eq!(called.get(), 1);
+
+ *mut_ref /= 2;
+ assert_eq!(*x, 46);
+ assert_eq!(called.get(), 1);
+ }
+
+ #[test]
fn lazy_default() {
static CALLED: AtomicUsize = AtomicUsize::new(0);
diff --git a/vendor/opaque-debug/.cargo-checksum.json b/vendor/opaque-debug/.cargo-checksum.json
deleted file mode 100644
index e431ffb85..000000000
--- a/vendor/opaque-debug/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.toml":"316df812f280ae0c584b6132630119bea8de32864c29772100f9bb8352196381","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"d5c22aa3118d240e877ad41c5d9fa232f9c77d757d4aac0c2f943afc0a95e0ef","src/lib.rs":"2d7d563f4a4df4b0583d6370046642103e4909f0ec2002768308f951f2d7e05c"},"package":"2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"} \ No newline at end of file
diff --git a/vendor/opaque-debug/Cargo.toml b/vendor/opaque-debug/Cargo.toml
deleted file mode 100644
index a2f9f1736..000000000
--- a/vendor/opaque-debug/Cargo.toml
+++ /dev/null
@@ -1,22 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-name = "opaque-debug"
-version = "0.2.3"
-authors = ["RustCrypto Developers"]
-description = "Macro for opaque Debug trait implementation"
-documentation = "https://docs.rs/opaque-debug"
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/RustCrypto/utils"
-
-[dependencies]
diff --git a/vendor/opaque-debug/LICENSE-APACHE b/vendor/opaque-debug/LICENSE-APACHE
deleted file mode 100644
index 78173fa2e..000000000
--- a/vendor/opaque-debug/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/vendor/opaque-debug/LICENSE-MIT b/vendor/opaque-debug/LICENSE-MIT
deleted file mode 100644
index 502cee6e8..000000000
--- a/vendor/opaque-debug/LICENSE-MIT
+++ /dev/null
@@ -1,25 +0,0 @@
-Copyright (c) 2018-2019 The RustCrypto Project Developers
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/vendor/opaque-debug/src/lib.rs b/vendor/opaque-debug/src/lib.rs
deleted file mode 100644
index 618626ead..000000000
--- a/vendor/opaque-debug/src/lib.rs
+++ /dev/null
@@ -1,24 +0,0 @@
-//! Macro for opaque `Debug` trait implementation.
-#![no_std]
-
-#[doc(hidden)]
-pub extern crate core as __core;
-
-/// Macro for defining opaque `Debug` implementation.
-///
-/// It will use the following format: "StructName { ... }". While it's
-/// convinient to have it (e.g. for including into other structs), it could be
-/// undesirable to leak internall state, which can happen for example through
-/// uncareful logging.
-#[macro_export]
-macro_rules! impl_opaque_debug {
- ($struct:ty) => {
- impl $crate::__core::fmt::Debug for $struct {
- fn fmt(&self, f: &mut $crate::__core::fmt::Formatter)
- -> Result<(), $crate::__core::fmt::Error>
- {
- write!(f, concat!(stringify!($struct), " {{ ... }}"))
- }
- }
- }
-}
diff --git a/vendor/percent-encoding/.cargo-checksum.json b/vendor/percent-encoding/.cargo-checksum.json
index 7576f0fde..e37d79346 100644
--- a/vendor/percent-encoding/.cargo-checksum.json
+++ b/vendor/percent-encoding/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"dd59f4e6c033f011625ede444aa27fc8df4be53297af238b4f76d05144de5878","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e","lib.rs":"b9dd3a27fb0f56aebe3c4c411ea768a106a54e480ac08d9023c35bbba0bdcbdc"},"package":"d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"} \ No newline at end of file
+{"files":{"Cargo.toml":"7330cca9fe75c0f7cadf87d42f1af587e57d7f3e90efad7b4476d8d78580e435","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"76e972ac0f4ddb116e86e10100132a783931a596e7b9872eaa31be15cd4d751d","src/lib.rs":"5eafa40dda1d5de9770181b836c37b078f790ccdee4f461d4601fc5bc17716b8"},"package":"478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"} \ No newline at end of file
diff --git a/vendor/percent-encoding/Cargo.toml b/vendor/percent-encoding/Cargo.toml
index b51d1d449..53d0b6307 100644
--- a/vendor/percent-encoding/Cargo.toml
+++ b/vendor/percent-encoding/Cargo.toml
@@ -3,21 +3,22 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
+rust-version = "1.51"
name = "percent-encoding"
-version = "2.1.0"
+version = "2.2.0"
authors = ["The rust-url developers"]
description = "Percent encoding and decoding"
-license = "MIT/Apache-2.0"
+license = "MIT OR Apache-2.0"
repository = "https://github.com/servo/rust-url/"
-[lib]
-path = "lib.rs"
-test = false
+[features]
+alloc = []
+default = ["alloc"]
diff --git a/vendor/percent-encoding/LICENSE-MIT b/vendor/percent-encoding/LICENSE-MIT
index 24de6b418..51d5dc7eb 100644
--- a/vendor/percent-encoding/LICENSE-MIT
+++ b/vendor/percent-encoding/LICENSE-MIT
@@ -1,4 +1,4 @@
-Copyright (c) 2013-2016 The rust-url developers
+Copyright (c) 2013-2022 The rust-url developers
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
diff --git a/vendor/percent-encoding/lib.rs b/vendor/percent-encoding/src/lib.rs
index 27eaf6740..46a5d747c 100644
--- a/vendor/percent-encoding/lib.rs
+++ b/vendor/percent-encoding/src/lib.rs
@@ -6,7 +6,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
-//! URLs use special chacters to indicate the parts of the request.
+//! URLs use special characters to indicate the parts of the request.
//! For example, a `?` question mark marks the end of a path and the start of a query string.
//! In order for that character to exist inside a path, it needs to be encoded differently.
//!
@@ -21,9 +21,9 @@
//! The [`AsciiSet`] parameter of [`percent_encode`] and [`utf8_percent_encode`]
//! lets callers configure this.
//!
-//! This crate delibarately does not provide many different sets.
+//! This crate deliberately does not provide many different sets.
//! Users should consider in what context the encoded string will be used,
-//! real relevant specifications, and define their own set.
+//! read relevant specifications, and define their own set.
//! This is done by using the `add` method of an existing set.
//!
//! # Examples
@@ -37,15 +37,22 @@
//! assert_eq!(utf8_percent_encode("foo <bar>", FRAGMENT).to_string(), "foo%20%3Cbar%3E");
//! ```
-use std::borrow::Cow;
-use std::fmt;
-use std::slice;
-use std::str;
+#![no_std]
+#[cfg(feature = "alloc")]
+extern crate alloc;
+
+#[cfg(feature = "alloc")]
+use alloc::{
+ borrow::{Cow, ToOwned},
+ string::String,
+ vec::Vec,
+};
+use core::{fmt, mem, slice, str};
/// Represents a set of characters or bytes in the ASCII range.
///
-/// This used in [`percent_encode`] and [`utf8_percent_encode`].
-/// This is simlar to [percent-encode sets](https://url.spec.whatwg.org/#percent-encoded-bytes).
+/// This is used in [`percent_encode`] and [`utf8_percent_encode`].
+/// This is similar to [percent-encode sets](https://url.spec.whatwg.org/#percent-encoded-bytes).
///
/// Use the `add` method of an existing set to define a new set. For example:
///
@@ -63,7 +70,7 @@ type Chunk = u32;
const ASCII_RANGE_LEN: usize = 0x80;
-const BITS_PER_CHUNK: usize = 8 * std::mem::size_of::<Chunk>();
+const BITS_PER_CHUNK: usize = 8 * mem::size_of::<Chunk>();
impl AsciiSet {
/// Called with UTF-8 bytes rather than code points.
@@ -109,7 +116,7 @@ macro_rules! static_assert {
($( $bool: expr, )+) => {
fn _static_assert() {
$(
- let _ = std::mem::transmute::<[u8; $bool as usize], u8>;
+ let _ = mem::transmute::<[u8; $bool as usize], u8>;
)+
}
}
@@ -252,6 +259,8 @@ impl<'a> Iterator for PercentEncode<'a> {
self.bytes = remaining;
Some(percent_encode_byte(first_byte))
} else {
+ // The unsafe blocks here are appropriate because the bytes are
+ // confirmed as a subset of UTF-8 in should_percent_encode.
for (i, &byte) in remaining.iter().enumerate() {
if self.ascii_set.should_percent_encode(byte) {
// 1 for first_byte + i for previous iterations of this loop
@@ -279,7 +288,7 @@ impl<'a> Iterator for PercentEncode<'a> {
}
impl<'a> fmt::Display for PercentEncode<'a> {
- fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+ fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
for c in (*self).clone() {
formatter.write_str(c)?
}
@@ -287,6 +296,7 @@ impl<'a> fmt::Display for PercentEncode<'a> {
}
}
+#[cfg(feature = "alloc")]
impl<'a> From<PercentEncode<'a>> for Cow<'a, str> {
fn from(mut iter: PercentEncode<'a>) -> Self {
match iter.next() {
@@ -310,7 +320,7 @@ impl<'a> From<PercentEncode<'a>> for Cow<'a, str> {
///
/// See [`percent_decode`] regarding the return type.
#[inline]
-pub fn percent_decode_str(input: &str) -> PercentDecode {
+pub fn percent_decode_str(input: &str) -> PercentDecode<'_> {
percent_decode(input.as_bytes())
}
@@ -333,7 +343,7 @@ pub fn percent_decode_str(input: &str) -> PercentDecode {
/// assert_eq!(percent_decode(b"foo%20bar%3f").decode_utf8().unwrap(), "foo bar?");
/// ```
#[inline]
-pub fn percent_decode(input: &[u8]) -> PercentDecode {
+pub fn percent_decode(input: &[u8]) -> PercentDecode<'_> {
PercentDecode {
bytes: input.iter(),
}
@@ -345,7 +355,7 @@ pub struct PercentDecode<'a> {
bytes: slice::Iter<'a, u8>,
}
-fn after_percent_sign(iter: &mut slice::Iter<u8>) -> Option<u8> {
+fn after_percent_sign(iter: &mut slice::Iter<'_, u8>) -> Option<u8> {
let mut cloned_iter = iter.clone();
let h = char::from(*cloned_iter.next()?).to_digit(16)?;
let l = char::from(*cloned_iter.next()?).to_digit(16)?;
@@ -368,10 +378,11 @@ impl<'a> Iterator for PercentDecode<'a> {
fn size_hint(&self) -> (usize, Option<usize>) {
let bytes = self.bytes.len();
- (bytes / 3, Some(bytes))
+ ((bytes + 2) / 3, Some(bytes))
}
}
+#[cfg(feature = "alloc")]
impl<'a> From<PercentDecode<'a>> for Cow<'a, [u8]> {
fn from(iter: PercentDecode<'a>) -> Self {
match iter.if_any() {
@@ -383,6 +394,7 @@ impl<'a> From<PercentDecode<'a>> for Cow<'a, [u8]> {
impl<'a> PercentDecode<'a> {
/// If the percent-decoding is different from the input, return it as a new bytes vector.
+ #[cfg(feature = "alloc")]
fn if_any(&self) -> Option<Vec<u8>> {
let mut bytes_iter = self.bytes.clone();
while bytes_iter.any(|&b| b == b'%') {
@@ -402,6 +414,7 @@ impl<'a> PercentDecode<'a> {
/// Decode the result of percent-decoding as UTF-8.
///
/// This is return `Err` when the percent-decoded bytes are not well-formed in UTF-8.
+ #[cfg(feature = "alloc")]
pub fn decode_utf8(self) -> Result<Cow<'a, str>, str::Utf8Error> {
match self.clone().into() {
Cow::Borrowed(bytes) => match str::from_utf8(bytes) {
@@ -419,24 +432,37 @@ impl<'a> PercentDecode<'a> {
///
/// Invalid UTF-8 percent-encoded byte sequences will be replaced � U+FFFD,
/// the replacement character.
+ #[cfg(feature = "alloc")]
pub fn decode_utf8_lossy(self) -> Cow<'a, str> {
decode_utf8_lossy(self.clone().into())
}
}
-fn decode_utf8_lossy(input: Cow<[u8]>) -> Cow<str> {
+#[cfg(feature = "alloc")]
+fn decode_utf8_lossy(input: Cow<'_, [u8]>) -> Cow<'_, str> {
+ // Note: This function is duplicated in `form_urlencoded/src/query_encoding.rs`.
match input {
Cow::Borrowed(bytes) => String::from_utf8_lossy(bytes),
Cow::Owned(bytes) => {
- let raw_utf8: *const [u8];
match String::from_utf8_lossy(&bytes) {
- Cow::Borrowed(utf8) => raw_utf8 = utf8.as_bytes(),
- Cow::Owned(s) => return s.into(),
+ Cow::Borrowed(utf8) => {
+ // If from_utf8_lossy returns a Cow::Borrowed, then we can
+ // be sure our original bytes were valid UTF-8. This is because
+ // if the bytes were invalid UTF-8 from_utf8_lossy would have
+ // to allocate a new owned string to back the Cow so it could
+ // replace invalid bytes with a placeholder.
+
+ // First we do a debug_assert to confirm our description above.
+ let raw_utf8: *const [u8] = utf8.as_bytes();
+ debug_assert!(raw_utf8 == &*bytes as *const [u8]);
+
+ // Given we know the original input bytes are valid UTF-8,
+ // and we have ownership of those bytes, we re-use them and
+ // return a Cow::Owned here.
+ Cow::Owned(unsafe { String::from_utf8_unchecked(bytes) })
+ }
+ Cow::Owned(s) => Cow::Owned(s),
}
- // from_utf8_lossy returned a borrow of `bytes` unchanged.
- debug_assert!(raw_utf8 == &*bytes as *const [u8]);
- // Reuse the existing `Vec` allocation.
- unsafe { String::from_utf8_unchecked(bytes) }.into()
}
}
}
diff --git a/vendor/pest/.cargo-checksum.json b/vendor/pest/.cargo-checksum.json
index e086f365c..8f4b91759 100644
--- a/vendor/pest/.cargo-checksum.json
+++ b/vendor/pest/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"dc22ac85e4f2d9721c8353751fa5375423f0713c132bbfc65bff52fa86f8fa73","Cargo.toml":"6af58a5c349afda2efbe0ef44e6be51da5bf0f569867ef6438373040dd6cc94b","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","_README.md":"e9901b6c4d50403bfda7e08a92b5c395a8c51eba868c7bd07b03e00ccba702f3","examples/parens.rs":"24b83b7fc014813aa089fd05c3ee36926e215ce74a96b07b2c4033dad4ba15b2","src/error.rs":"40dfdd4d32fde69f5320fe9516abd3b4c92ce570a306a3a010c7328ebc542c98","src/iterators/flat_pairs.rs":"0b602eb86a8fd1c037ece03afbbabce316d5938da84f98ca027e8532c311c396","src/iterators/mod.rs":"dfb9cc6d6c0c96f7365ec69500128e3547c0b15dd4e85a5d36e125649244d57a","src/iterators/pair.rs":"510d52a9a6bdf23b20c3e5156028f92ef43e9d7ca88f526d493b5701105d92d5","src/iterators/pairs.rs":"4b8a0cf20ab10ee16d947cdcffbdea535a1d264ea6a1ec4836cb7f1baff2ca38","src/iterators/queueable_token.rs":"b6c4fd1d43437ea7c6cab45717c1fb66f71fc91aaf3ed9cf9f5686fd8ccfa8f9","src/iterators/tokens.rs":"4deea56d66805afe36afb229b9355b43db051b21836af4a88d1febcc4f762ff6","src/lib.rs":"fba1b443efda3f02f20f16094404a74000bc0c6534a80b20cf74f2314fe2a42c","src/macros.rs":"576dc3b66de8d17da494c4a353474fd9bb5ebcde9ffb0d5e9ce7e950ac5b5e7e","src/parser.rs":"2cb858fa80115bf65ff6ceedf3ad73b33fd112bab2a3db4f97be84d6aa4482b5","src/parser_state.rs":"6ba62636a4fefbd11dd92af4480b4ec03ce213ba3ef18136db84a0fb76abca69","src/position.rs":"1b28abf0c8cfefc0ed305c4072b27c4803946c2e5e0bc1d0a4d20ff70e9eb810","src/prec_climber.rs":"e56e8ef7e8e019b5277f164d44acda2d6b993979cc65457e37463204a462be1c","src/span.rs":"cc6ab623ea4c496ddac79d9f179937f47da7c08b514f917f1a3b4e16ca701f52","src/stack.rs":"4fe043bab74b30049c834132c6d8ffc5e21131bc58b7219c5026968013cd665f","src/token.rs":"4ee741dd833c06f8ae826226fb1e5eaa671732d1c68b6b79dea55856ab8b5a0a","src/unicode/binary.rs":"1dcc20ae3922e92fa753849086f8290bebd6d3a1440c2f3cb3482d2192136323","src/unicode/category.rs":"94923b31f349503958e32def13c0b682e52c08b528dd1e0853b55b17627e4ad6","src/unicode/mod.rs":"66a1525a031a7508bdbf65709829e96541d3cc4f228088107f1b94101beec8d6","tests/calculator.rs":"5787fa07560f3187d0a83042336c8613ca90d71186aea88b79ef2a2ccf06f7ab","tests/json.rs":"430913278a7ed16587ac2fcdab2c68329a96cd5d2d2b2eff01245852792e1af1"},"package":"10f4872ae94d7b90ae48754df22fd42ad52ce740b8f370b03da4835417403e53"} \ No newline at end of file
+{"files":{"Cargo.lock":"d98d34674a20cc64c8bae177a8de54d9d51cf81279167ebe450876d847dc5578","Cargo.toml":"d5d80b396478e5329d5602215ddc6163ec32c362c3d991430cb48bfd884e3f68","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","_README.md":"01ba71f02581f9f5018962e083ca77bc8e8af2b6f8a73111bfa04e847a6440e2","examples/parens.rs":"a91a1680acc276bac82fbde4855610fab15a77f60041ce12f8adae1d1128157c","src/error.rs":"dc48b66b5e74e251e751a810e9a808deebc11ec036bb12ed1eea3fcfc1bc822c","src/iterators/flat_pairs.rs":"15c0c5b9b1a3fe1f91ce3a8cc5f2ed33319f2545cbef550270416a9a8c0c90c4","src/iterators/mod.rs":"dfb9cc6d6c0c96f7365ec69500128e3547c0b15dd4e85a5d36e125649244d57a","src/iterators/pair.rs":"4aa28ec4d851afa31d05ac21c6bbfd49c96ee452c9d1d5b97923f44a615f3ef1","src/iterators/pairs.rs":"79248afd6d8ed06df63c0cbf0dc2274dcf52b401eb4697a1263e5188915a684c","src/iterators/queueable_token.rs":"b6c4fd1d43437ea7c6cab45717c1fb66f71fc91aaf3ed9cf9f5686fd8ccfa8f9","src/iterators/tokens.rs":"4aa6d4c3eaec86e9086d6cf6499cb3c6f2b89f3269eae21fada9bfbb0c6fe57d","src/lib.rs":"aef41301bcc07e328f5c3a2b5e69d1efc8cbde46f20baa171ce0bad9b922954c","src/macros.rs":"ecbffdc94d721757ee8f11360f5ed38616c8b114c3301b9e424493b844eb1fe5","src/parser.rs":"ee93a084017c4a1da987e307d0aaa047cc4fd7df5fb12c8f730e2151145b8eca","src/parser_state.rs":"a01b978778b0b2aa44d1677d698cb2954517f7761b8e95a55676a639fa76a6f8","src/position.rs":"effe7859987f42e61e4e37e5bc408fb41d31329aa1e8760aa1faaf443e512715","src/prec_climber.rs":"e068f7abe105d39f56ba057e32c32450793b4180d243640cb1008c61f588ce48","src/span.rs":"2030645ea705c3e45a35a7e0d1b1582434fb5f48d336dac0d5c6e9f9b601b0be","src/stack.rs":"97b6fe59e60941c1388fa5fecc2a4fbf78e1cc7f1a3a7c4848cb68ae9d187628","src/token.rs":"810bd05d12ddc71c7fd9f489bbc70552b7479427bc2fe45cd88c191df69ed8c1","src/unicode/binary.rs":"f52dece4f345d1f63041ac6aa7c0673f6dc5100299a47672a35a5b6a64e5c423","src/unicode/category.rs":"7c62c0cdfe2aac27fd3617a17c156822f72e02ab84c761bc815ea01b07997064","src/unicode/mod.rs":"95b31b858565f18990066c64538529e216ce7dc79e7852992df473e4135f2dc1","tests/calculator.rs":"56cc0a279df8f7352b01fbac3ac1bb39208f2ec5227a2ad40b56cc30a5fb5b24","tests/json.rs":"e8bb5af43b4c3b326e29b976b80c7757e70ccafee4f29d8345d7f5f7bce22b59"},"package":"4b0560d531d1febc25a3c9398a62a71256c0178f2e3443baedd9ad4bb8c9deb4"} \ No newline at end of file
diff --git a/vendor/pest/Cargo.lock b/vendor/pest/Cargo.lock
index a5501eddc..c364151dd 100644
--- a/vendor/pest/Cargo.lock
+++ b/vendor/pest/Cargo.lock
@@ -1,37 +1,58 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
+version = 3
+
[[package]]
name = "itoa"
-version = "0.4.5"
+version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e"
+checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754"
[[package]]
name = "pest"
-version = "2.1.3"
+version = "2.3.0"
dependencies = [
"serde",
"serde_json",
+ "thiserror",
"ucd-trie",
]
[[package]]
+name = "proc-macro2"
+version = "1.0.43"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
name = "ryu"
-version = "1.0.2"
+version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8"
+checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"
[[package]]
name = "serde"
-version = "1.0.104"
+version = "1.0.144"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
+checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860"
[[package]]
name = "serde_json"
-version = "1.0.48"
+version = "1.0.83"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9371ade75d4c2d6cb154141b9752cf3781ec9c05e0e5cf35060e1e70ee7b9c25"
+checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7"
dependencies = [
"itoa",
"ryu",
@@ -39,7 +60,44 @@ dependencies = [
]
[[package]]
+name = "syn"
+version = "1.0.99"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.32"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
name = "ucd-trie"
-version = "0.1.2"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89570599c4fe5585de2b388aab47e99f7fa4e9238a1399f707a02e356058141c"
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f00ed7be0c1ff1e24f46c3d2af4859f7e863672ba3a6e92e7cff702bf9f06c2"
+checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf"
diff --git a/vendor/pest/Cargo.toml b/vendor/pest/Cargo.toml
index 5ad06075a..97246991c 100644
--- a/vendor/pest/Cargo.toml
+++ b/vendor/pest/Cargo.toml
@@ -3,25 +3,32 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
+rust-version = "1.56"
name = "pest"
-version = "2.1.3"
+version = "2.3.0"
authors = ["Dragoș Tiselice <dragostiselice@gmail.com>"]
description = "The Elegant Parser"
homepage = "https://pest-parser.github.io/"
documentation = "https://docs.rs/pest"
readme = "_README.md"
-keywords = ["pest", "parser", "peg", "grammar"]
+keywords = [
+ "pest",
+ "parser",
+ "peg",
+ "grammar",
+]
categories = ["parsing"]
license = "MIT/Apache-2.0"
repository = "https://github.com/pest-parser/pest"
+
[dependencies.serde]
version = "1.0.89"
optional = true
@@ -30,16 +37,22 @@ optional = true
version = "1.0.39"
optional = true
+[dependencies.thiserror]
+version = "1.0.31"
+optional = true
+
[dependencies.ucd-trie]
version = "0.1.1"
+default-features = false
[features]
-pretty-print = ["serde", "serde_json"]
-[badges.codecov]
-repository = "pest-parser/pest"
-
-[badges.maintenance]
-status = "actively-developed"
-
-[badges.travis-ci]
-repository = "pest-parser/pest"
+const_prec_climber = []
+default = ["std"]
+pretty-print = [
+ "serde",
+ "serde_json",
+]
+std = [
+ "ucd-trie/std",
+ "thiserror",
+]
diff --git a/vendor/pest/_README.md b/vendor/pest/_README.md
index 8e55f29a2..f91188ccb 100644
--- a/vendor/pest/_README.md
+++ b/vendor/pest/_README.md
@@ -1,3 +1,4 @@
+
<p align="center">
<img src="https://raw.github.com/pest-parser/pest/master/pest-logo.svg?sanitize=true" width="80%"/>
</p>
@@ -8,9 +9,10 @@
[![Book](https://img.shields.io/badge/book-WIP-4d76ae.svg)](https://pest-parser.github.io/book)
[![Docs](https://docs.rs/pest/badge.svg)](https://docs.rs/pest)
-[![Build Status](https://travis-ci.org/pest-parser/pest.svg?branch=master)](https://travis-ci.org/pest-parser/pest)
+[![pest Continuous Integration](https://github.com/pest-parser/pest/actions/workflows/ci.yml/badge.svg)](https://github.com/pest-parser/pest/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/pest-parser/pest/branch/master/graph/badge.svg)](https://codecov.io/gh/pest-parser/pest)
-[![Fuzzit Status](https://app.fuzzit.dev/badge?org_id=pest-parser)](https://app.fuzzit.dev/orgs/pest-parser/dashboard)
+<a href="https://blog.rust-lang.org/2021/11/01/Rust-1.56.1.html"><img alt="Rustc Version 1.56.1+" src="https://img.shields.io/badge/rustc-1.56.1%2B-lightgrey.svg"/></a>
+
[![Crates.io](https://img.shields.io/crates/d/pest.svg)](https://crates.io/crates/pest)
[![Crates.io](https://img.shields.io/crates/v/pest.svg)](https://crates.io/crates/pest)
@@ -38,7 +40,7 @@ Other helpful resources:
## Example
-The following is an example of a grammar for a list of alpha-numeric identifiers
+The following is an example of a grammar for a list of alphanumeric identifiers
where the first identifier does not start with a digit:
```rust
@@ -143,16 +145,18 @@ Digit: 2
* [pest_meta](https://github.com/pest-parser/pest/blob/master/meta/src/grammar.pest) (bootstrapped)
* [AshPaper](https://github.com/shnewto/ashpaper)
* [brain](https://github.com/brain-lang/brain)
-* [Chelone](https://github.com/Aaronepower/chelone)
+* [cicada](https://github.com/mitnk/cicada)
* [comrak](https://github.com/kivikakk/comrak)
* [elastic-rs](https://github.com/cch123/elastic-rs)
* [graphql-parser](https://github.com/Keats/graphql-parser)
* [handlebars-rust](https://github.com/sunng87/handlebars-rust)
* [hexdino](https://github.com/Luz/hexdino)
* [Huia](https://gitlab.com/jimsy/huia/)
+* [insta](https://github.com/mitsuhiko/insta)
* [jql](https://github.com/yamafaktory/jql)
* [json5-rs](https://github.com/callum-oakley/json5-rs)
* [mt940](https://github.com/svenstaro/mt940-rs)
+* [Myoxine](https://github.com/d3bate/myoxine)
* [py_literal](https://github.com/jturner314/py_literal)
* [rouler](https://github.com/jarcane/rouler)
* [RuSh](https://github.com/lwandrebeck/RuSh)
@@ -162,6 +166,17 @@ Digit: 2
* [ui_gen](https://github.com/emoon/ui_gen)
* [ukhasnet-parser](https://github.com/adamgreig/ukhasnet-parser)
* [ZoKrates](https://github.com/ZoKrates/ZoKrates)
+* [Vector](https://github.com/timberio/vector)
+* [AutoCorrect](https://github.com/huacnlee/autocorrect)
+* [yaml-peg](https://github.com/aofdev/yaml-peg)
+* [qubit](https://github.com/abhimanyu003/qubit)
+* [caith](https://github.com/Geobert/caith) (a dice roller crate)
+* [Melody](https://github.com/yoav-lavi/melody)
+
+## Minimum Supported Rust Version (MSRV)
+
+This library should always compile with default features on **Rust 1.56.1**
+or **Rust 1.61** with `const_prec_climber`.
## Special thanks
diff --git a/vendor/pest/examples/parens.rs b/vendor/pest/examples/parens.rs
index 2720f6346..566c119b4 100644
--- a/vendor/pest/examples/parens.rs
+++ b/vendor/pest/examples/parens.rs
@@ -19,7 +19,7 @@ struct ParenParser;
impl Parser<Rule> for ParenParser {
fn parse(rule: Rule, input: &str) -> Result<Pairs<Rule>, Error<Rule>> {
fn expr(state: Box<ParserState<Rule>>) -> ParseResult<Box<ParserState<Rule>>> {
- state.sequence(|s| s.repeat(|s| paren(s)).and_then(|s| s.end_of_input()))
+ state.sequence(|s| s.repeat(paren).and_then(|s| s.end_of_input()))
}
fn paren(state: Box<ParserState<Rule>>) -> ParseResult<Box<ParserState<Rule>>> {
@@ -30,7 +30,7 @@ impl Parser<Rule> for ParenParser {
s.optional(|s| {
s.sequence(|s| {
s.lookahead(true, |s| s.match_string("("))
- .and_then(|s| s.repeat(|s| paren(s)))
+ .and_then(|s| s.repeat(paren))
})
})
})
diff --git a/vendor/pest/src/error.rs b/vendor/pest/src/error.rs
index d6b76a82a..a83e23a49 100644
--- a/vendor/pest/src/error.rs
+++ b/vendor/pest/src/error.rs
@@ -9,17 +9,23 @@
//! Types for different kinds of parsing failures.
-use std::cmp;
-use std::error;
-use std::fmt;
-use std::mem;
-
-use position::Position;
-use span::Span;
-use RuleType;
+use alloc::borrow::Cow;
+use alloc::borrow::ToOwned;
+use alloc::format;
+use alloc::string::String;
+use alloc::string::ToString;
+use alloc::vec::Vec;
+use core::cmp;
+use core::fmt;
+use core::mem;
+
+use crate::position::Position;
+use crate::span::Span;
+use crate::RuleType;
/// Parse-related error type.
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
+#[cfg_attr(feature = "std", derive(thiserror::Error))]
pub struct Error<R> {
/// Variant of the error
pub variant: ErrorVariant<R>,
@@ -34,6 +40,7 @@ pub struct Error<R> {
/// Different kinds of parsing errors.
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
+#[cfg_attr(feature = "std", derive(thiserror::Error))]
pub enum ErrorVariant<R> {
/// Generated parsing error with expected and unexpected `Rule`s
ParsingError {
@@ -94,13 +101,19 @@ impl<R: RuleType> Error<R> {
///
/// println!("{}", error);
/// ```
- #[allow(clippy::needless_pass_by_value)]
pub fn new_from_pos(variant: ErrorVariant<R>, pos: Position) -> Error<R> {
+ let visualize_ws = pos.match_char('\n') || pos.match_char('\r');
+ let line_of = pos.line_of();
+ let line = if visualize_ws {
+ visualize_whitespace(line_of)
+ } else {
+ line_of.replace(&['\r', '\n'][..], "")
+ };
Error {
variant,
location: InputLocation::Pos(pos.pos()),
path: None,
- line: visualize_whitespace(pos.line_of()),
+ line,
continued_line: None,
line_col: LineColLocation::Pos(pos.line_col()),
}
@@ -134,22 +147,33 @@ impl<R: RuleType> Error<R> {
///
/// println!("{}", error);
/// ```
- #[allow(clippy::needless_pass_by_value)]
pub fn new_from_span(variant: ErrorVariant<R>, span: Span) -> Error<R> {
let end = span.end_pos();
-
let mut end_line_col = end.line_col();
// end position is after a \n, so we want to point to the visual lf symbol
if end_line_col.1 == 1 {
- let mut visual_end = end.clone();
+ let mut visual_end = end;
visual_end.skip_back(1);
let lc = visual_end.line_col();
end_line_col = (lc.0, lc.1 + 1);
};
let mut line_iter = span.lines();
- let start_line = visualize_whitespace(line_iter.next().unwrap_or(""));
- let continued_line = line_iter.last().map(visualize_whitespace);
+ let sl = line_iter.next().unwrap_or("");
+ let mut chars = span.as_str().chars();
+ let visualize_ws = matches!(chars.next(), Some('\n') | Some('\r'))
+ || matches!(chars.last(), Some('\n') | Some('\r'));
+ let start_line = if visualize_ws {
+ visualize_whitespace(sl)
+ } else {
+ sl.to_owned().replace(&['\r', '\n'][..], "")
+ };
+ let ll = line_iter.last();
+ let continued_line = if visualize_ws {
+ ll.map(&str::to_owned)
+ } else {
+ ll.map(visualize_whitespace)
+ };
Error {
variant,
@@ -191,6 +215,40 @@ impl<R: RuleType> Error<R> {
self
}
+ /// Returns the path set using [`Error::with_path()`].
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use pest::error::{Error, ErrorVariant};
+ /// # use pest::Position;
+ /// # #[allow(non_camel_case_types)]
+ /// # #[allow(dead_code)]
+ /// # #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+ /// # enum Rule {
+ /// # open_paren,
+ /// # closed_paren
+ /// # }
+ /// # let input = "";
+ /// # let pos = Position::from_start(input);
+ /// # let error = Error::new_from_pos(
+ /// # ErrorVariant::ParsingError {
+ /// # positives: vec![Rule::open_paren],
+ /// # negatives: vec![Rule::closed_paren]
+ /// # },
+ /// # pos);
+ /// let error = error.with_path("file.rs");
+ /// assert_eq!(Some("file.rs"), error.path());
+ /// ```
+ pub fn path(&self) -> Option<&str> {
+ self.path.as_deref()
+ }
+
+ /// Returns the line that the error is on.
+ pub fn line(&self) -> &str {
+ self.line.as_str()
+ }
+
/// Renames all `Rule`s if this is a [`ParsingError`]. It does nothing when called on a
/// [`CustomError`].
///
@@ -297,14 +355,12 @@ impl<R: RuleType> Error<R> {
}
if let Some(end) = end {
+ underline.push('^');
if end - start > 1 {
- underline.push('^');
for _ in 2..(end - start) {
underline.push('-');
}
underline.push('^');
- } else {
- underline.push('^');
}
} else {
underline.push_str("^---")
@@ -314,13 +370,7 @@ impl<R: RuleType> Error<R> {
}
fn message(&self) -> String {
- match self.variant {
- ErrorVariant::ParsingError {
- ref positives,
- ref negatives,
- } => Error::parsing_error_message(positives, negatives, |r| format!("{:?}", r)),
- ErrorVariant::CustomError { ref message } => message.clone(),
- }
+ self.variant.message().to_string()
}
fn parsing_error_message<F>(positives: &[R], negatives: &[R], mut f: F) -> String
@@ -347,13 +397,14 @@ impl<R: RuleType> Error<R> {
1 => f(&rules[0]),
2 => format!("{} or {}", f(&rules[0]), f(&rules[1])),
l => {
+ let non_separated = f(&rules[l - 1]);
let separated = rules
.iter()
.take(l - 1)
- .map(|r| f(r))
+ .map(f)
.collect::<Vec<_>>()
.join(", ");
- format!("{}, or {}", separated, f(&rules[l - 1]))
+ format!("{}, or {}", separated, non_separated)
}
}
}
@@ -431,17 +482,53 @@ impl<R: RuleType> Error<R> {
}
}
+impl<R: RuleType> ErrorVariant<R> {
+ ///
+ /// Returns the error message for [`ErrorVariant`]
+ ///
+ /// If [`ErrorVariant`] is [`CustomError`], it returns a
+ /// [`Cow::Borrowed`] reference to [`message`]. If [`ErrorVariant`] is [`ParsingError`], a
+ /// [`Cow::Owned`] containing "expected [ErrorVariant::ParsingError::positives] [ErrorVariant::ParsingError::negatives]" is returned.
+ ///
+ /// [`ErrorVariant`]: enum.ErrorVariant.html
+ /// [`CustomError`]: enum.ErrorVariant.html#variant.CustomError
+ /// [`ParsingError`]: enum.ErrorVariant.html#variant.ParsingError
+ /// [`Cow::Owned`]: https://doc.rust-lang.org/std/borrow/enum.Cow.html#variant.Owned
+ /// [`Cow::Borrowed`]: https://doc.rust-lang.org/std/borrow/enum.Cow.html#variant.Borrowed
+ /// [`message`]: enum.ErrorVariant.html#variant.CustomError.field.message
+ /// # Examples
+ ///
+ /// ```
+ /// # use pest::error::ErrorVariant;
+ /// let variant = ErrorVariant::<()>::CustomError {
+ /// message: String::from("unexpected error")
+ /// };
+ ///
+ /// println!("{}", variant.message());
+ pub fn message(&self) -> Cow<str> {
+ match self {
+ ErrorVariant::ParsingError {
+ ref positives,
+ ref negatives,
+ } => Cow::Owned(Error::parsing_error_message(positives, negatives, |r| {
+ format!("{:?}", r)
+ })),
+ ErrorVariant::CustomError { ref message } => Cow::Borrowed(message),
+ }
+ }
+}
+
impl<R: RuleType> fmt::Display for Error<R> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{}", self.format())
}
}
-impl<'i, R: RuleType> error::Error for Error<R> {
- fn description(&self) -> &str {
- match self.variant {
- ErrorVariant::ParsingError { .. } => "parsing error",
- ErrorVariant::CustomError { ref message } => message,
+impl<R: RuleType> fmt::Display for ErrorVariant<R> {
+ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+ match self {
+ ErrorVariant::ParsingError { .. } => write!(f, "parsing error: {}", self.message()),
+ ErrorVariant::CustomError { .. } => write!(f, "{}", self.message()),
}
}
}
@@ -454,6 +541,7 @@ fn visualize_whitespace(input: &str) -> String {
mod tests {
use super::super::position;
use super::*;
+ use alloc::vec;
#[test]
fn display_parsing_error_mixed() {
@@ -472,7 +560,7 @@ mod tests {
vec![
" --> 2:2",
" |",
- "2 | cd␊",
+ "2 | cd",
" | ^---",
" |",
" = unexpected 4, 5, or 6; expected 1, 2, or 3",
@@ -498,7 +586,7 @@ mod tests {
vec![
" --> 2:2",
" |",
- "2 | cd␊",
+ "2 | cd",
" | ^---",
" |",
" = expected 1 or 2",
@@ -524,7 +612,7 @@ mod tests {
vec![
" --> 2:2",
" |",
- "2 | cd␊",
+ "2 | cd",
" | ^---",
" |",
" = unexpected 4, 5, or 6",
@@ -550,7 +638,7 @@ mod tests {
vec![
" --> 2:2",
" |",
- "2 | cd␊",
+ "2 | cd",
" | ^---",
" |",
" = unknown parsing error",
@@ -575,7 +663,7 @@ mod tests {
vec![
" --> 2:2",
" |",
- "2 | cd␊",
+ "2 | cd",
" | ^---",
" |",
" = error: big one",
@@ -601,7 +689,7 @@ mod tests {
vec![
" --> 2:2",
" |",
- "2 | cd␊",
+ "2 | cd",
"3 | efgh",
" | ^^",
" |",
@@ -628,7 +716,7 @@ mod tests {
vec![
" --> 1:2",
" |",
- "1 | ab␊",
+ "1 | ab",
" | ...",
"3 | efgh",
" | ^^",
@@ -656,7 +744,7 @@ mod tests {
vec![
" --> 1:6",
" |",
- "1 | abcdef␊",
+ "1 | abcdef",
"2 | gh",
" | ^----^",
" |",
@@ -742,7 +830,7 @@ mod tests {
vec![
" --> 2:2",
" |",
- "2 | cd␊",
+ "2 | cd",
" | ^---",
" |",
" = unexpected 5, 6, or 7; expected 2, 3, or 4",
@@ -769,7 +857,7 @@ mod tests {
vec![
" --> file.rs:2:2",
" |",
- "2 | cd␊",
+ "2 | cd",
" | ^---",
" |",
" = unexpected 4, 5, or 6; expected 1, 2, or 3",
diff --git a/vendor/pest/src/iterators/flat_pairs.rs b/vendor/pest/src/iterators/flat_pairs.rs
index bb5bbb185..85171a3b6 100644
--- a/vendor/pest/src/iterators/flat_pairs.rs
+++ b/vendor/pest/src/iterators/flat_pairs.rs
@@ -7,13 +7,14 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use std::fmt;
-use std::rc::Rc;
+use alloc::rc::Rc;
+use alloc::vec::Vec;
+use core::fmt;
use super::pair::{self, Pair};
use super::queueable_token::QueueableToken;
use super::tokens::{self, Tokens};
-use RuleType;
+use crate::RuleType;
/// An iterator over [`Pair`]s. It is created by [`Pairs::flatten`].
///
@@ -151,6 +152,8 @@ impl<'i, R: Clone> Clone for FlatPairs<'i, R> {
mod tests {
use super::super::super::macros::tests::*;
use super::super::super::Parser;
+ use alloc::vec;
+ use alloc::vec::Vec;
#[test]
fn iter_for_flat_pairs() {
diff --git a/vendor/pest/src/iterators/pair.rs b/vendor/pest/src/iterators/pair.rs
index 88844a353..0a8f735a4 100644
--- a/vendor/pest/src/iterators/pair.rs
+++ b/vendor/pest/src/iterators/pair.rs
@@ -7,11 +7,15 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use std::fmt;
-use std::hash::{Hash, Hasher};
-use std::ptr;
-use std::rc::Rc;
-use std::str;
+use alloc::format;
+use alloc::rc::Rc;
+#[cfg(feature = "pretty-print")]
+use alloc::string::String;
+use alloc::vec::Vec;
+use core::fmt;
+use core::hash::{Hash, Hasher};
+use core::ptr;
+use core::str;
#[cfg(feature = "pretty-print")]
use serde::ser::SerializeStruct;
@@ -19,8 +23,8 @@ use serde::ser::SerializeStruct;
use super::pairs::{self, Pairs};
use super::queueable_token::QueueableToken;
use super::tokens::{self, Tokens};
-use span::{self, Span};
-use RuleType;
+use crate::span::{self, Span};
+use crate::RuleType;
/// A matching pair of [`Token`]s and everything between them.
///
@@ -343,8 +347,8 @@ impl<'i, R: RuleType> ::serde::Serialize for Pair<'i, R> {
#[cfg(test)]
mod tests {
- use macros::tests::*;
- use parser::Parser;
+ use crate::macros::tests::*;
+ use crate::parser::Parser;
#[test]
#[cfg(feature = "pretty-print")]
diff --git a/vendor/pest/src/iterators/pairs.rs b/vendor/pest/src/iterators/pairs.rs
index abae123e1..654b7dade 100644
--- a/vendor/pest/src/iterators/pairs.rs
+++ b/vendor/pest/src/iterators/pairs.rs
@@ -7,11 +7,14 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use std::fmt;
-use std::hash::{Hash, Hasher};
-use std::ptr;
-use std::rc::Rc;
-use std::str;
+use alloc::format;
+use alloc::rc::Rc;
+use alloc::string::String;
+use alloc::vec::Vec;
+use core::fmt;
+use core::hash::{Hash, Hasher};
+use core::ptr;
+use core::str;
#[cfg(feature = "pretty-print")]
use serde::ser::SerializeStruct;
@@ -20,7 +23,7 @@ use super::flat_pairs::{self, FlatPairs};
use super::pair::{self, Pair};
use super::queueable_token::QueueableToken;
use super::tokens::{self, Tokens};
-use RuleType;
+use crate::RuleType;
/// An iterator over [`Pair`]s. It is created by [`pest::state`] and [`Pair::into_inner`].
///
@@ -302,6 +305,10 @@ impl<'i, R: RuleType> ::serde::Serialize for Pairs<'i, R> {
mod tests {
use super::super::super::macros::tests::*;
use super::super::super::Parser;
+ use alloc::borrow::ToOwned;
+ use alloc::format;
+ use alloc::vec;
+ use alloc::vec::Vec;
#[test]
#[cfg(feature = "pretty-print")]
diff --git a/vendor/pest/src/iterators/tokens.rs b/vendor/pest/src/iterators/tokens.rs
index 59b75c520..f21cf072c 100644
--- a/vendor/pest/src/iterators/tokens.rs
+++ b/vendor/pest/src/iterators/tokens.rs
@@ -7,14 +7,15 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use std::fmt;
-use std::rc::Rc;
-use std::str;
+use alloc::rc::Rc;
+use alloc::vec::Vec;
+use core::fmt;
+use core::str;
use super::queueable_token::QueueableToken;
-use position;
-use token::Token;
-use RuleType;
+use crate::position;
+use crate::token::Token;
+use crate::RuleType;
/// An iterator over [`Token`]s. It is created by [`Pair::tokens`] and [`Pairs::tokens`].
///
@@ -132,6 +133,7 @@ mod tests {
use super::super::super::macros::tests::*;
use super::super::super::Parser;
use super::Token;
+ use alloc::vec::Vec;
#[test]
fn double_ended_iter_for_tokens() {
diff --git a/vendor/pest/src/lib.rs b/vendor/pest/src/lib.rs
index c55518c25..30f87db60 100644
--- a/vendor/pest/src/lib.rs
+++ b/vendor/pest/src/lib.rs
@@ -6,6 +6,7 @@
// license <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
+#![no_std]
//! # pest. The Elegant Parser
//!
@@ -63,6 +64,9 @@
#![doc(html_root_url = "https://docs.rs/pest")]
+extern crate alloc;
+#[cfg(feature = "std")]
+extern crate std;
extern crate ucd_trie;
#[cfg(feature = "pretty-print")]
@@ -70,13 +74,15 @@ extern crate serde;
#[cfg(feature = "pretty-print")]
extern crate serde_json;
-pub use parser::Parser;
-pub use parser_state::{state, Atomicity, Lookahead, MatchDir, ParseResult, ParserState};
-pub use position::Position;
-pub use span::{Lines, Span};
-use std::fmt::Debug;
-use std::hash::Hash;
-pub use token::Token;
+pub use crate::parser::Parser;
+pub use crate::parser_state::{
+ set_call_limit, state, Atomicity, Lookahead, MatchDir, ParseResult, ParserState,
+};
+pub use crate::position::Position;
+pub use crate::span::{Lines, LinesSpan, Span};
+pub use crate::token::Token;
+use core::fmt::Debug;
+use core::hash::Hash;
pub mod error;
pub mod iterators;
diff --git a/vendor/pest/src/macros.rs b/vendor/pest/src/macros.rs
index 01f410610..6f5c4c6eb 100644
--- a/vendor/pest/src/macros.rs
+++ b/vendor/pest/src/macros.rs
@@ -16,28 +16,25 @@ macro_rules! consumes_to {
$rules::$name, $start);
match $tokens.next().expect(&format!("{} but found nothing", expected)) {
$crate::Token::Start { rule, pos } => {
- let message = format!("{} but found Start {{ rule: {:?}, pos: Position {{ {} }} }}",
- expected, rule, pos.pos());
-
- if rule != $rules::$name || pos.pos() != $start {
- panic!("{}", message);
- }
+ assert!(
+ rule == $rules::$name && pos.pos() == $start,
+ "{} but found Start {{ rule: {:?}, pos: Position {{ {} }} }}",
+ expected, rule, pos.pos(),
+ )
},
- token => panic!("{}", format!("{} but found {:?}", expected, token))
+ token => panic!("{} but found {:?}", expected, token)
};
let expected = format!("expected End {{ rule: {:?}, pos: Position {{ pos: {} }} }}",
$rules::$name, $end);
match $tokens.next().expect(&format!("{} but found nothing", expected)) {
$crate::Token::End { rule, pos } => {
- let message = format!("{} but found End {{ rule: {:?}, pos: Position {{ {} }} }}",
- expected, rule, pos.pos());
-
- if rule != $rules::$name || pos.pos() != $end {
- panic!("{}", message);
- }
+ assert!(rule == $rules::$name && pos.pos() == $end,
+ "{} but found End {{ rule: {:?}, pos: Position {{ {} }} }}",
+ expected, rule, pos.pos(),
+ );
},
- token => panic!("{}", format!("{} but found {:?}", expected, token))
+ token => panic!("{} but found {:?}", expected, token)
};
};
( $rules:ident, $tokens:expr, [ $name:ident ( $start:expr, $end:expr ),
@@ -47,28 +44,24 @@ macro_rules! consumes_to {
$rules::$name, $start);
match $tokens.next().expect(&format!("{} but found nothing", expected)) {
$crate::Token::Start { rule, pos } => {
- let message = format!("{} but found Start {{ rule: {:?}, pos: Position {{ {} }} }}",
- expected, rule, pos.pos());
-
- if rule != $rules::$name || pos.pos() != $start {
- panic!("{}", message);
- }
+ assert!(rule == $rules::$name && pos.pos() == $start,
+ "{} but found Start {{ rule: {:?}, pos: Position {{ {} }} }}",
+ expected, rule, pos.pos(),
+ );
},
- token => panic!("{}", format!("{} but found {:?}", expected, token))
+ token => panic!("{} but found {:?}", expected, token)
};
let expected = format!("expected End {{ rule: {:?}, pos: Position {{ pos: {} }} }}",
$rules::$name, $end);
match $tokens.next().expect(&format!("{} but found nothing", expected)) {
$crate::Token::End { rule, pos } => {
- let message = format!("{} but found End {{ rule: {:?}, pos: Position {{ {} }} }}",
- expected, rule, pos.pos());
-
- if rule != $rules::$name || pos.pos() != $end {
- panic!("{}", message);
- }
+ assert!(rule == $rules::$name && pos.pos() == $end,
+ "{} but found End {{ rule: {:?}, pos: Position {{ {} }} }}",
+ expected, rule, pos.pos(),
+ );
},
- token => panic!("{}", format!("{} but found {:?}", expected, token))
+ token => panic!("{} but found {:?}", expected, token)
};
consumes_to!($rules, $tokens, [ $( $names $calls ),* ]);
@@ -79,14 +72,12 @@ macro_rules! consumes_to {
$rules::$name, $start);
match $tokens.next().expect(&format!("{} but found nothing", expected)) {
$crate::Token::Start { rule, pos } => {
- let message = format!("{} but found Start {{ rule: {:?}, pos: Position {{ {} }} }}",
- expected, rule, pos.pos());
-
- if rule != $rules::$name || pos.pos() != $start {
- panic!("{}", message);
- }
+ assert!(rule == $rules::$name && pos.pos() == $start,
+ "{} but found Start {{ rule: {:?}, pos: Position {{ {} }} }}",
+ expected, rule, pos.pos(),
+ );
},
- token => panic!("{}", format!("{} but found {:?}", expected, token))
+ token => panic!("{} but found {:?}", expected, token)
};
consumes_to!($rules, $tokens, [ $( $names $calls ),* ]);
@@ -95,14 +86,12 @@ macro_rules! consumes_to {
$rules::$name, $end);
match $tokens.next().expect(&format!("{} but found nothing", expected)) {
$crate::Token::End { rule, pos } => {
- let message = format!("{} but found End {{ rule: {:?}, pos: Position {{ {} }} }}",
- expected, rule, pos.pos());
-
- if rule != $rules::$name || pos.pos() != $end {
- panic!("{}", message);
- }
+ assert!(rule == $rules::$name && pos.pos() == $end,
+ "{} but found End {{ rule: {:?}, pos: Position {{ {} }} }}",
+ expected, rule, pos.pos(),
+ );
},
- token => panic!("{}", format!("{} but found {:?}", expected, token))
+ token => panic!("{} but found {:?}", expected, token)
};
};
( $rules:ident, $tokens:expr, [ $name:ident ( $start:expr, $end:expr,
@@ -114,14 +103,12 @@ macro_rules! consumes_to {
$rules::$name, $start);
match $tokens.next().expect(&format!("{} but found nothing", expected)) {
$crate::Token::Start { rule, pos } => {
- let message = format!("{} but found Start {{ rule: {:?}, pos: Position {{ {} }} }}",
- expected, rule, pos.pos());
-
- if rule != $rules::$name || pos.pos() != $start {
- panic!("{}", message);
- }
+ assert!(rule == $rules::$name && pos.pos() == $start,
+ "{} but found Start {{ rule: {:?}, pos: Position {{ {} }} }}",
+ expected, rule, pos.pos(),
+ );
},
- token => panic!("{}", format!("{} but found {:?}", expected, token))
+ token => panic!("{} but found {:?}", expected, token)
};
consumes_to!($rules, $tokens, [ $( $nested_names $nested_calls ),* ]);
@@ -130,14 +117,12 @@ macro_rules! consumes_to {
$rules::$name, $end);
match $tokens.next().expect(&format!("{} but found nothing", expected)) {
$crate::Token::End { rule, pos } => {
- let message = format!("{} but found End {{ rule: {:?}, pos: Position {{ {} }} }}",
- expected, rule, pos.pos());
-
- if rule != $rules::$name || pos.pos() != $end {
- panic!("{}", message);
- }
+ assert!(rule == $rules::$name && pos.pos() == $end,
+ "{} but found End {{ rule: {:?}, pos: Position {{ {} }} }}",
+ expected, rule, pos.pos(),
+ );
},
- token => panic!("{}", format!("{} but found {:?}", expected, token))
+ token => panic!("{} but found {:?}", expected, token)
};
consumes_to!($rules, $tokens, [ $( $names $calls ),* ]);
@@ -229,11 +214,11 @@ macro_rules! parses_to {
) => {
assert!(
format!("{:?}", first_rule) == "EOI",
- format!("expected end of input, but found {:?}", rest)
+ "expected end of input, but found {:?}", rest
);
assert!(
format!("{:?}", second_rule) == "EOI",
- format!("expected end of input, but found {:?}", rest)
+ "expected end of input, but found {:?}", rest
);
}
_ => panic!("expected end of input, but found {:?}", rest)
@@ -253,7 +238,7 @@ macro_rules! parses_to {
/// * `input` - input to be tested against
/// * `rule` - `Rule` which will be run
/// * `positives` - positive `Rule` attempts that failed
-/// * `negative` - negative `Rule` attempts that failed
+/// * `negatives` - negative `Rule` attempts that failed
/// * `pos` - byte position of failure
///
/// # Examples
@@ -315,14 +300,14 @@ macro_rules! fails_with {
positives,
negatives,
} => {
- assert_eq!(positives, $positives);
- assert_eq!(negatives, $negatives);
+ assert_eq!(positives, $positives, "positives");
+ assert_eq!(negatives, $negatives, "negatives");
}
_ => unreachable!(),
};
match error.location {
- $crate::error::InputLocation::Pos(pos) => assert_eq!(pos, $pos),
+ $crate::error::InputLocation::Pos(pos) => assert_eq!(pos, $pos, "pos"),
_ => unreachable!(),
}
}
@@ -334,6 +319,9 @@ pub mod tests {
use super::super::error::Error;
use super::super::iterators::Pairs;
use super::super::{state, Parser};
+ use alloc::format;
+ use alloc::vec;
+ use alloc::vec::Vec;
#[allow(non_camel_case_types)]
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
@@ -346,7 +334,7 @@ pub mod tests {
pub struct AbcParser;
impl Parser<Rule> for AbcParser {
- fn parse<'i>(_: Rule, input: &'i str) -> Result<Pairs<'i, Rule>, Error<Rule>> {
+ fn parse(_: Rule, input: &str) -> Result<Pairs<Rule>, Error<Rule>> {
state(input, |state| {
state
.rule(Rule::a, |s| {
diff --git a/vendor/pest/src/parser.rs b/vendor/pest/src/parser.rs
index a8792d152..8dd381419 100644
--- a/vendor/pest/src/parser.rs
+++ b/vendor/pest/src/parser.rs
@@ -7,9 +7,9 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use error::Error;
-use iterators::Pairs;
-use RuleType;
+use crate::error::Error;
+use crate::iterators::Pairs;
+use crate::RuleType;
/// A trait with a single method that parses strings.
pub trait Parser<R: RuleType> {
diff --git a/vendor/pest/src/parser_state.rs b/vendor/pest/src/parser_state.rs
index 09bc92710..a4422e866 100644
--- a/vendor/pest/src/parser_state.rs
+++ b/vendor/pest/src/parser_state.rs
@@ -7,15 +7,21 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use std::ops::Range;
-use std::rc::Rc;
-
-use error::{Error, ErrorVariant};
-use iterators::{pairs, QueueableToken};
-use position::{self, Position};
-use span::Span;
-use stack::Stack;
-use RuleType;
+use alloc::borrow::ToOwned;
+use alloc::boxed::Box;
+use alloc::rc::Rc;
+use alloc::vec;
+use alloc::vec::Vec;
+use core::num::NonZeroUsize;
+use core::ops::Range;
+use core::sync::atomic::{AtomicUsize, Ordering};
+
+use crate::error::{Error, ErrorVariant};
+use crate::iterators::{pairs, QueueableToken};
+use crate::position::{self, Position};
+use crate::span::Span;
+use crate::stack::Stack;
+use crate::RuleType;
/// The current lookahead status of a [`ParserState`].
///
@@ -47,6 +53,49 @@ pub enum MatchDir {
TopToBottom,
}
+static CALL_LIMIT: AtomicUsize = AtomicUsize::new(0);
+
+/// Sets the maximum call limit for the parser state
+/// to prevent stack overflows or excessive execution times
+/// in some grammars.
+/// If set, the calls are tracked as a running total
+/// over all non-terminal rules that can nest closures
+/// (which are passed to transform the parser state).
+///
+/// # Arguments
+///
+/// * `limit` - The maximum number of calls. If None,
+/// the number of calls is unlimited.
+pub fn set_call_limit(limit: Option<NonZeroUsize>) {
+ CALL_LIMIT.store(limit.map(|f| f.get()).unwrap_or(0), Ordering::Relaxed);
+}
+
+#[derive(Debug)]
+struct CallLimitTracker {
+ current_call_limit: Option<(usize, usize)>,
+}
+
+impl Default for CallLimitTracker {
+ fn default() -> Self {
+ let limit = CALL_LIMIT.load(Ordering::Relaxed);
+ let current_call_limit = if limit > 0 { Some((0, limit)) } else { None };
+ Self { current_call_limit }
+ }
+}
+
+impl CallLimitTracker {
+ fn limit_reached(&self) -> bool {
+ self.current_call_limit
+ .map_or(false, |(current, limit)| current >= limit)
+ }
+
+ fn increment_depth(&mut self) {
+ if let Some((current, _)) = &mut self.current_call_limit {
+ *current += 1;
+ }
+ }
+}
+
/// The complete state of a [`Parser`].
///
/// [`Parser`]: trait.Parser.html
@@ -60,6 +109,7 @@ pub struct ParserState<'i, R: RuleType> {
attempt_pos: usize,
atomicity: Atomicity,
stack: Stack<Span<'i>>,
+ call_tracker: CallLimitTracker,
}
/// Creates a `ParserState` from a `&str`, supplying it to a closure `f`.
@@ -83,16 +133,23 @@ where
Ok(pairs::new(Rc::new(state.queue), input, 0, len))
}
Err(mut state) => {
- state.pos_attempts.sort();
- state.pos_attempts.dedup();
- state.neg_attempts.sort();
- state.neg_attempts.dedup();
-
- Err(Error::new_from_pos(
+ let variant = if state.reached_call_limit() {
+ ErrorVariant::CustomError {
+ message: "call limit reached".to_owned(),
+ }
+ } else {
+ state.pos_attempts.sort();
+ state.pos_attempts.dedup();
+ state.neg_attempts.sort();
+ state.neg_attempts.dedup();
ErrorVariant::ParsingError {
positives: state.pos_attempts.clone(),
negatives: state.neg_attempts.clone(),
- },
+ }
+ };
+
+ Err(Error::new_from_pos(
+ variant,
// TODO(performance): Guarantee state.attempt_pos is a valid position
position::Position::new(input, state.attempt_pos).unwrap(),
))
@@ -111,7 +168,6 @@ impl<'i, R: RuleType> ParserState<'i, R> {
/// let input = "";
/// let state: Box<pest::ParserState<&str>> = pest::ParserState::new(input);
/// ```
- #[allow(clippy::new_ret_no_self)]
pub fn new(input: &'i str) -> Box<Self> {
Box::new(ParserState {
position: Position::from_start(input),
@@ -122,6 +178,7 @@ impl<'i, R: RuleType> ParserState<'i, R> {
attempt_pos: 0,
atomicity: Atomicity::NonAtomic,
stack: Stack::new(),
+ call_tracker: Default::default(),
})
}
@@ -168,6 +225,20 @@ impl<'i, R: RuleType> ParserState<'i, R> {
self.atomicity
}
+ #[inline]
+ fn inc_call_check_limit(mut self: Box<Self>) -> ParseResult<Box<Self>> {
+ if self.call_tracker.limit_reached() {
+ return Err(self);
+ }
+ self.call_tracker.increment_depth();
+ Ok(self)
+ }
+
+ #[inline]
+ fn reached_call_limit(&self) -> bool {
+ self.call_tracker.limit_reached()
+ }
+
/// Wrapper needed to generate tokens. This will associate the `R` type rule to the closure
/// meant to match the rule.
///
@@ -193,6 +264,7 @@ impl<'i, R: RuleType> ParserState<'i, R> {
where
F: FnOnce(Box<Self>) -> ParseResult<Box<Self>>,
{
+ self = self.inc_call_check_limit()?;
let actual_pos = self.position.pos();
let index = self.queue.len();
@@ -357,12 +429,13 @@ impl<'i, R: RuleType> ParserState<'i, R> {
/// assert_eq!(pairs.len(), 0);
/// ```
#[inline]
- pub fn sequence<F>(self: Box<Self>, f: F) -> ParseResult<Box<Self>>
+ pub fn sequence<F>(mut self: Box<Self>, f: F) -> ParseResult<Box<Self>>
where
F: FnOnce(Box<Self>) -> ParseResult<Box<Self>>,
{
+ self = self.inc_call_check_limit()?;
let token_index = self.queue.len();
- let initial_pos = self.position.clone();
+ let initial_pos = self.position;
let result = f(self);
@@ -406,10 +479,11 @@ impl<'i, R: RuleType> ParserState<'i, R> {
/// assert_eq!(result.unwrap().position().pos(), 0);
/// ```
#[inline]
- pub fn repeat<F>(self: Box<Self>, mut f: F) -> ParseResult<Box<Self>>
+ pub fn repeat<F>(mut self: Box<Self>, mut f: F) -> ParseResult<Box<Self>>
where
F: FnMut(Box<Self>) -> ParseResult<Box<Self>>,
{
+ self = self.inc_call_check_limit()?;
let mut result = f(self);
loop {
@@ -447,10 +521,11 @@ impl<'i, R: RuleType> ParserState<'i, R> {
/// assert!(result.is_ok());
/// ```
#[inline]
- pub fn optional<F>(self: Box<Self>, f: F) -> ParseResult<Box<Self>>
+ pub fn optional<F>(mut self: Box<Self>, f: F) -> ParseResult<Box<Self>>
where
F: FnOnce(Box<Self>) -> ParseResult<Box<Self>>,
{
+ self = self.inc_call_check_limit()?;
match f(self) {
Ok(state) | Err(state) => Ok(state),
}
@@ -728,6 +803,7 @@ impl<'i, R: RuleType> ParserState<'i, R> {
where
F: FnOnce(Box<Self>) -> ParseResult<Box<Self>>,
{
+ self = self.inc_call_check_limit()?;
let initial_lookahead = self.lookahead;
self.lookahead = if is_positive {
@@ -742,7 +818,7 @@ impl<'i, R: RuleType> ParserState<'i, R> {
}
};
- let initial_pos = self.position.clone();
+ let initial_pos = self.position;
let result = f(self.checkpoint());
@@ -795,6 +871,7 @@ impl<'i, R: RuleType> ParserState<'i, R> {
where
F: FnOnce(Box<Self>) -> ParseResult<Box<Self>>,
{
+ self = self.inc_call_check_limit()?;
let initial_atomicity = self.atomicity;
let should_toggle = self.atomicity != atomicity;
@@ -839,17 +916,18 @@ impl<'i, R: RuleType> ParserState<'i, R> {
/// assert_eq!(result.unwrap().position().pos(), 1);
/// ```
#[inline]
- pub fn stack_push<F>(self: Box<Self>, f: F) -> ParseResult<Box<Self>>
+ pub fn stack_push<F>(mut self: Box<Self>, f: F) -> ParseResult<Box<Self>>
where
F: FnOnce(Box<Self>) -> ParseResult<Box<Self>>,
{
- let start = self.position.clone();
+ self = self.inc_call_check_limit()?;
+ let start = self.position;
let result = f(self);
match result {
Ok(mut state) => {
- let end = state.position.clone();
+ let end = state.position;
state.stack.push(start.span(&end));
Ok(state)
}
@@ -955,7 +1033,7 @@ impl<'i, R: RuleType> ParserState<'i, R> {
return Ok(self);
}
- let mut position = self.position.clone();
+ let mut position = self.position;
let result = {
let mut iter_b2t = self.stack[range].iter();
let matcher = |span: &Span| position.match_string(span.as_str());
@@ -1016,7 +1094,7 @@ impl<'i, R: RuleType> ParserState<'i, R> {
/// ```
#[inline]
pub fn stack_match_pop(mut self: Box<Self>) -> ParseResult<Box<Self>> {
- let mut position = self.position.clone();
+ let mut position = self.position;
let mut result = true;
while let Some(span) = self.stack.pop() {
result = position.match_string(span.as_str());
diff --git a/vendor/pest/src/position.rs b/vendor/pest/src/position.rs
index 76e3383ba..c76589856 100644
--- a/vendor/pest/src/position.rs
+++ b/vendor/pest/src/position.rs
@@ -7,17 +7,17 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use std::cmp::Ordering;
-use std::fmt;
-use std::hash::{Hash, Hasher};
-use std::ops::Range;
-use std::ptr;
-use std::str;
+use core::cmp::Ordering;
+use core::fmt;
+use core::hash::{Hash, Hasher};
+use core::ops::Range;
+use core::ptr;
+use core::str;
-use span;
+use crate::span;
/// A cursor position in a `&str` which provides useful methods to manually parse that string.
-#[derive(Clone)]
+#[derive(Clone, Copy)]
pub struct Position<'i> {
input: &'i str,
/// # Safety:
@@ -49,7 +49,6 @@ impl<'i> Position<'i> {
/// assert_eq!(Position::new(heart, 1), None);
/// assert_ne!(Position::new(heart, cheart.len_utf8()), None);
/// ```
- #[allow(clippy::new_ret_no_self)]
pub fn new(input: &str, pos: usize) -> Option<Position> {
input.get(pos..).map(|_| Position { input, pos })
}
@@ -318,6 +317,14 @@ impl<'i> Position<'i> {
false
}
+ /// Matches the char at the `Position` against a specified character and returns `true` if a match
+ /// was made. If no match was made, returns `false`.
+ /// `pos` will not be updated in either case.
+ #[inline]
+ pub(crate) fn match_char(&self, c: char) -> bool {
+ matches!(self.input[self.pos..].chars().next(), Some(cc) if c == cc)
+ }
+
/// Matches the char at the `Position` against a filter function and returns `true` if a match
/// was made. If no match was made, returns `false` and `pos` will not be updated.
#[inline]
@@ -427,23 +434,21 @@ impl<'i> Hash for Position<'i> {
#[cfg(test)]
mod tests {
- use std::collections::HashSet;
-
use super::*;
#[test]
fn empty() {
let input = "";
- assert_eq!(Position::new(input, 0).unwrap().match_string(""), true);
- assert_eq!(!Position::new(input, 0).unwrap().match_string("a"), true);
+ assert!(Position::new(input, 0).unwrap().match_string(""));
+ assert!(!Position::new(input, 0).unwrap().match_string("a"));
}
#[test]
fn parts() {
let input = "asdasdf";
- assert_eq!(Position::new(input, 0).unwrap().match_string("asd"), true);
- assert_eq!(Position::new(input, 3).unwrap().match_string("asdf"), true);
+ assert!(Position::new(input, 0).unwrap().match_string("asd"));
+ assert!(Position::new(input, 3).unwrap().match_string("asdf"));
}
#[test]
@@ -530,23 +535,23 @@ mod tests {
let input = "ab ac";
let pos = Position::from_start(input);
- let mut test_pos = pos.clone();
+ let mut test_pos = pos;
test_pos.skip_until(&["a", "b"]);
assert_eq!(test_pos.pos(), 0);
- test_pos = pos.clone();
+ test_pos = pos;
test_pos.skip_until(&["b"]);
assert_eq!(test_pos.pos(), 1);
- test_pos = pos.clone();
+ test_pos = pos;
test_pos.skip_until(&["ab"]);
assert_eq!(test_pos.pos(), 0);
- test_pos = pos.clone();
+ test_pos = pos;
test_pos.skip_until(&["ac", "z"]);
assert_eq!(test_pos.pos(), 3);
- test_pos = pos.clone();
+ test_pos = pos;
assert!(!test_pos.skip_until(&["z"]));
assert_eq!(test_pos.pos(), 5);
}
@@ -555,41 +560,26 @@ mod tests {
fn match_range() {
let input = "b";
- assert_eq!(Position::new(input, 0).unwrap().match_range('a'..'c'), true);
- assert_eq!(Position::new(input, 0).unwrap().match_range('b'..'b'), true);
- assert_eq!(
- !Position::new(input, 0).unwrap().match_range('a'..'a'),
- true
- );
- assert_eq!(
- !Position::new(input, 0).unwrap().match_range('c'..'c'),
- true
- );
- assert_eq!(
- Position::new(input, 0).unwrap().match_range('a'..'嗨'),
- true
- );
+ assert!(Position::new(input, 0).unwrap().match_range('a'..'c'));
+ assert!(Position::new(input, 0).unwrap().match_range('b'..'b'));
+ assert!(!Position::new(input, 0).unwrap().match_range('a'..'a'));
+ assert!(!Position::new(input, 0).unwrap().match_range('c'..'c'));
+ assert!(Position::new(input, 0).unwrap().match_range('a'..'嗨'));
}
#[test]
fn match_insensitive() {
let input = "AsdASdF";
- assert_eq!(
- Position::new(input, 0).unwrap().match_insensitive("asd"),
- true
- );
- assert_eq!(
- Position::new(input, 3).unwrap().match_insensitive("asdf"),
- true
- );
+ assert!(Position::new(input, 0).unwrap().match_insensitive("asd"));
+ assert!(Position::new(input, 3).unwrap().match_insensitive("asdf"));
}
#[test]
fn cmp() {
let input = "a";
let start = Position::from_start(input);
- let mut end = start.clone();
+ let mut end = start;
assert!(end.skip(1));
let result = start.cmp(&end);
@@ -605,11 +595,14 @@ mod tests {
let pos1 = Position::from_start(input1);
let pos2 = Position::from_start(input2);
- pos1.cmp(&pos2);
+ let _ = pos1.cmp(&pos2);
}
#[test]
+ #[cfg(feature = "std")]
fn hash() {
+ use std::collections::HashSet;
+
let input = "a";
let start = Position::from_start(input);
let mut positions = HashSet::new();
diff --git a/vendor/pest/src/prec_climber.rs b/vendor/pest/src/prec_climber.rs
index d8bf0a08a..d35bd52db 100644
--- a/vendor/pest/src/prec_climber.rs
+++ b/vendor/pest/src/prec_climber.rs
@@ -9,12 +9,96 @@
//! Constructs useful in infix operator parsing with the precedence climbing method.
-use std::collections::HashMap;
-use std::iter::Peekable;
-use std::ops::BitOr;
+use alloc::borrow::Cow;
+use alloc::boxed::Box;
+use alloc::vec::Vec;
+use core::iter::Peekable;
+use core::ops::BitOr;
-use iterators::Pair;
-use RuleType;
+use crate::iterators::Pair;
+use crate::RuleType;
+
+/// Macro for more convenient const fn definition of `prec_climber::PrecClimber`.
+///
+/// # Examples
+///
+/// ```
+/// # use pest::prec_climber::{Assoc, PrecClimber};
+/// # use pest::prec_climber;
+/// # #[allow(non_camel_case_types)]
+/// # #[allow(dead_code)]
+/// # #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+/// # enum Rule {
+/// # plus,
+/// # minus,
+/// # times,
+/// # divide,
+/// # power
+/// # }
+/// static CLIMBER: PrecClimber<Rule> = prec_climber![
+/// L plus | minus,
+/// L times | divide,
+/// R power,
+/// ];
+/// ```
+#[cfg(feature = "const_prec_climber")]
+#[macro_export]
+macro_rules! prec_climber {
+ (
+ $( $assoc:ident $rule:ident $( | $rules:ident )* ),+ $(,)?
+ ) => {{
+ prec_climber!(
+ @precedences { 1u32 }
+ $( [ $rule $( $rules )* ] )*
+ );
+
+ $crate::prec_climber::PrecClimber::new_const(
+ prec_climber!(
+ @array
+ $( $assoc $rule $(, $assoc $rules )* ),*
+ )
+ )
+ }};
+
+ ( @assoc L ) => { $crate::prec_climber::Assoc::Left };
+ ( @assoc R ) => { $crate::prec_climber::Assoc::Right };
+
+ (
+ @array
+ $(
+ $assoc:ident $rule:ident
+ ),*
+ ) => {
+ &[
+ $(
+ (
+ Rule::$rule,
+ $rule,
+ prec_climber!( @assoc $assoc ),
+ )
+ ),*
+ ]
+ };
+
+ (
+ @precedences { $precedence:expr }
+ ) => {};
+
+ (
+ @precedences { $precedence:expr }
+ [ $( $rule:ident )* ]
+ $( [ $( $rules:ident )* ] )*
+ ) => {
+ $(
+ #[allow(non_upper_case_globals)]
+ const $rule: u32 = $precedence;
+ )*
+ prec_climber!(
+ @precedences { 1u32 + $precedence }
+ $( [ $( $rules )* ] )*
+ );
+ };
+}
/// Associativity of an [`Operator`].
///
@@ -86,11 +170,54 @@ impl<R: RuleType> BitOr for Operator<R> {
/// [1]: https://en.wikipedia.org/wiki/Operator-precedence_parser#Precedence_climbing_method
/// [`Pairs`]: ../iterators/struct.Pairs.html
#[derive(Debug)]
-pub struct PrecClimber<R: RuleType> {
- ops: HashMap<R, (u32, Assoc)>,
+pub struct PrecClimber<R: Clone + 'static> {
+ ops: Cow<'static, [(R, u32, Assoc)]>,
+}
+
+#[cfg(feature = "const_prec_climber")]
+impl<R: Clone + 'static> PrecClimber<R> {
+ /// Creates a new `PrecClimber` directly from a static slice of
+ /// `(rule: Rule, precedence: u32, associativity: Assoc)` tuples.
+ ///
+ /// Precedence starts from `1`. Entries don't have to be ordered in any way, but it's easier to read when
+ /// sorted.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use pest::prec_climber::{Assoc, PrecClimber};
+ /// # #[allow(non_camel_case_types)]
+ /// # #[allow(dead_code)]
+ /// # #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+ /// # enum Rule {
+ /// # plus,
+ /// # minus,
+ /// # times,
+ /// # divide,
+ /// # power
+ /// # }
+ /// static CLIMBER: PrecClimber<Rule> = PrecClimber::new_const(&[
+ /// (Rule::plus, 1, Assoc::Left), (Rule::minus, 1, Assoc::Left),
+ /// (Rule::times, 2, Assoc::Left), (Rule::divide, 2, Assoc::Left),
+ /// (Rule::power, 3, Assoc::Right)
+ /// ]);
+ /// ```
+ pub const fn new_const(ops: &'static [(R, u32, Assoc)]) -> PrecClimber<R> {
+ PrecClimber {
+ ops: Cow::Borrowed(ops),
+ }
+ }
}
impl<R: RuleType> PrecClimber<R> {
+ // find matching operator by `rule`
+ fn get(&self, rule: &R) -> Option<(u32, Assoc)> {
+ self.ops
+ .iter()
+ .find(|(r, _, _)| r == rule)
+ .map(|(_, precedence, assoc)| (*precedence, *assoc))
+ }
+
/// Creates a new `PrecClimber` from the `Operator`s contained in `ops`. Every entry in the
/// `Vec` has precedence *index + 1*. In order to have operators with same precedence, they need
/// to be chained with `|` between them.
@@ -119,26 +246,26 @@ impl<R: RuleType> PrecClimber<R> {
let ops = ops
.into_iter()
.zip(1..)
- .fold(HashMap::new(), |mut map, (op, prec)| {
+ .fold(Vec::new(), |mut vec, (op, prec)| {
let mut next = Some(op);
while let Some(op) = next.take() {
- match op {
- Operator {
- rule,
- assoc,
- next: op_next,
- } => {
- map.insert(rule, (prec, assoc));
- next = op_next.map(|op| *op);
- }
- }
+ let Operator {
+ rule,
+ assoc,
+ next: op_next,
+ } = op;
+
+ vec.push((rule, prec, assoc));
+ next = op_next.map(|op| *op);
}
- map
+ vec
});
- PrecClimber { ops }
+ PrecClimber {
+ ops: Cow::Owned(ops),
+ }
}
/// Performs the precedence climbing algorithm on the `pairs` in a similar manner to map-reduce.
@@ -198,7 +325,7 @@ impl<R: RuleType> PrecClimber<R> {
{
while pairs.peek().is_some() {
let rule = pairs.peek().unwrap().as_rule();
- if let Some(&(prec, _)) = self.ops.get(&rule) {
+ if let Some((prec, _)) = self.get(&rule) {
if prec >= min_prec {
let op = pairs.next().unwrap();
let mut rhs = primary(pairs.next().expect(
@@ -208,7 +335,7 @@ impl<R: RuleType> PrecClimber<R> {
while pairs.peek().is_some() {
let rule = pairs.peek().unwrap().as_rule();
- if let Some(&(new_prec, assoc)) = self.ops.get(&rule) {
+ if let Some((new_prec, assoc)) = self.get(&rule) {
if new_prec > prec || assoc == Assoc::Right && new_prec == prec {
rhs = self.climb_rec(rhs, new_prec, pairs, primary, infix);
} else {
diff --git a/vendor/pest/src/span.rs b/vendor/pest/src/span.rs
index f8beffe26..4007049c7 100644
--- a/vendor/pest/src/span.rs
+++ b/vendor/pest/src/span.rs
@@ -7,18 +7,19 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use std::fmt;
-use std::hash::{Hash, Hasher};
-use std::ptr;
-use std::str;
+use core::fmt;
+use core::hash::{Hash, Hasher};
+use core::ops::{Bound, RangeBounds};
+use core::ptr;
+use core::str;
-use position;
+use crate::position;
/// A span over a `&str`. It is created from either [two `Position`s] or from a [`Pair`].
///
/// [two `Position`s]: struct.Position.html#method.span
/// [`Pair`]: ../iterators/struct.Pair.html#method.span
-#[derive(Clone)]
+#[derive(Clone, Copy)]
pub struct Span<'i> {
input: &'i str,
/// # Safety
@@ -53,7 +54,6 @@ impl<'i> Span<'i> {
/// assert_eq!(None, Span::new(input, 100, 0));
/// assert!(Span::new(input, 0, input.len()).is_some());
/// ```
- #[allow(clippy::new_ret_no_self)]
pub fn new(input: &str, start: usize, end: usize) -> Option<Span> {
if input.get(start..end).is_some() {
Some(Span { input, start, end })
@@ -62,6 +62,37 @@ impl<'i> Span<'i> {
}
}
+ /// Attempts to create a new span based on a sub-range.
+ ///
+ /// ```
+ /// use pest::Span;
+ /// let input = "Hello World!";
+ /// let world = Span::new(input, 6, input.len()).unwrap();
+ /// let orl = world.get(1..=3);
+ /// assert!(orl.is_some());
+ /// assert_eq!(orl.unwrap().as_str(), "orl");
+ /// ```
+ ///
+ /// # Examples
+ pub fn get(&self, range: impl RangeBounds<usize>) -> Option<Span<'i>> {
+ let start = match range.start_bound() {
+ Bound::Included(offset) => *offset,
+ Bound::Excluded(offset) => *offset + 1,
+ Bound::Unbounded => 0,
+ };
+ let end = match range.end_bound() {
+ Bound::Included(offset) => *offset + 1,
+ Bound::Excluded(offset) => *offset,
+ Bound::Unbounded => self.as_str().len(),
+ };
+
+ self.as_str().get(start..end).map(|_| Span {
+ input: self.input,
+ start: self.start + start,
+ end: self.start + end,
+ })
+ }
+
/// Returns the `Span`'s start byte position as a `usize`.
///
/// # Examples
@@ -181,7 +212,7 @@ impl<'i> Span<'i> {
&self.input[self.start..self.end]
}
- /// Iterates over all lines (partially) covered by this span.
+ /// Iterates over all lines (partially) covered by this span. Yielding a `&str` for each line.
///
/// # Examples
///
@@ -201,6 +232,30 @@ impl<'i> Span<'i> {
#[inline]
pub fn lines(&self) -> Lines {
Lines {
+ inner: self.lines_span(),
+ }
+ }
+
+ /// Iterates over all lines (partially) covered by this span. Yielding a `Span` for each line.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # use pest;
+ /// # use pest::Span;
+ /// # #[allow(non_camel_case_types)]
+ /// # #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
+ /// enum Rule {}
+ ///
+ /// let input = "a\nb\nc";
+ /// let mut state: Box<pest::ParserState<Rule>> = pest::ParserState::new(input).skip(2).unwrap();
+ /// let start_pos = state.position().clone();
+ /// state = state.match_string("b\nc").unwrap();
+ /// let span = start_pos.span(&state.position().clone());
+ /// assert_eq!(span.lines_span().collect::<Vec<_>>(), vec![Span::new(input, 2, 4).unwrap(), Span::new(input, 4, 5).unwrap()]);
+ /// ```
+ pub fn lines_span(&self) -> LinesSpan {
+ LinesSpan {
span: self,
pos: self.start,
}
@@ -233,19 +288,19 @@ impl<'i> Hash for Span<'i> {
}
}
-/// Line iterator for Spans, created by [`Span::lines()`].
+/// Line iterator for Spans, created by [`Span::lines_span()`].
///
-/// Iterates all lines that are at least partially covered by the span.
+/// Iterates all lines that are at least _partially_ covered by the span. Yielding a `Span` for each.
///
-/// [`Span::lines()`]: struct.Span.html#method.lines
-pub struct Lines<'i> {
+/// [`Span::lines_span()`]: struct.Span.html#method.lines_span
+pub struct LinesSpan<'i> {
span: &'i Span<'i>,
pos: usize,
}
-impl<'i> Iterator for Lines<'i> {
- type Item = &'i str;
- fn next(&mut self) -> Option<&'i str> {
+impl<'i> Iterator for LinesSpan<'i> {
+ type Item = Span<'i>;
+ fn next(&mut self) -> Option<Self::Item> {
if self.pos > self.span.end {
return None;
}
@@ -253,21 +308,91 @@ impl<'i> Iterator for Lines<'i> {
if pos.at_end() {
return None;
}
- let line = pos.line_of();
+
+ let line_start = pos.find_line_start();
self.pos = pos.find_line_end();
- Some(line)
+
+ Span::new(self.span.input, line_start, self.pos)
+ }
+}
+
+/// Line iterator for Spans, created by [`Span::lines()`].
+///
+/// Iterates all lines that are at least _partially_ covered by the span. Yielding a `&str` for each.
+///
+/// [`Span::lines()`]: struct.Span.html#method.lines
+pub struct Lines<'i> {
+ inner: LinesSpan<'i>,
+}
+
+impl<'i> Iterator for Lines<'i> {
+ type Item = &'i str;
+ fn next(&mut self) -> Option<Self::Item> {
+ self.inner.next().map(|span| span.as_str())
}
}
#[cfg(test)]
mod tests {
use super::*;
+ use alloc::borrow::ToOwned;
+ use alloc::vec::Vec;
+
+ #[test]
+ fn get() {
+ let input = "abc123abc";
+ let span = Span::new(input, 3, input.len()).unwrap();
+ assert_eq!(span.as_str(), "123abc");
+ assert_eq!(span.input, input);
+
+ let span1 = span.get(..=2);
+ assert!(span1.is_some());
+ assert_eq!(span1.unwrap().input, input);
+ assert_eq!(span1.unwrap().as_str(), "123");
+
+ let span2 = span.get(..);
+ assert!(span2.is_some());
+ assert_eq!(span2.unwrap().input, input);
+ assert_eq!(span2.unwrap().as_str(), "123abc");
+
+ let span3 = span.get(3..);
+ assert!(span3.is_some());
+ assert_eq!(span3.unwrap().input, input);
+ assert_eq!(span3.unwrap().as_str(), "abc");
+
+ let span4 = span.get(0..0);
+ assert!(span4.is_some());
+ assert_eq!(span4.unwrap().input, input);
+ assert_eq!(span4.unwrap().as_str(), "");
+ }
+
+ #[test]
+ fn get_fails() {
+ let input = "abc";
+ let span = Span::new(input, 0, input.len()).unwrap();
+
+ let span1 = span.get(0..100);
+ assert!(span1.is_none());
+
+ let span2 = span.get(100..200);
+ assert!(span2.is_none());
+ }
+
+ #[test]
+ fn span_comp() {
+ let input = "abc\ndef\nghi";
+ let span = Span::new(input, 1, 7).unwrap();
+ let span2 = Span::new(input, 50, 51);
+ assert!(span2.is_none());
+ let span3 = Span::new(input, 0, 8).unwrap();
+ assert!(span != span3);
+ }
#[test]
fn split() {
let input = "a";
let start = position::Position::from_start(input);
- let mut end = start.clone();
+ let mut end = start;
assert!(end.skip(1));
@@ -281,10 +406,12 @@ mod tests {
let input = "abc\ndef\nghi";
let span = Span::new(input, 1, 7).unwrap();
let lines: Vec<_> = span.lines().collect();
- println!("{:?}", lines);
+ let lines_span: Vec<_> = span.lines_span().map(|span| span.as_str()).collect();
+
assert_eq!(lines.len(), 2);
assert_eq!(lines[0], "abc\n".to_owned());
assert_eq!(lines[1], "def\n".to_owned());
+ assert_eq!(lines, lines_span) // Verify parity with lines_span()
}
#[test]
@@ -292,10 +419,32 @@ mod tests {
let input = "abc\ndef\nghi";
let span = Span::new(input, 5, 11).unwrap();
assert!(span.end_pos().at_end());
+ assert_eq!(span.end(), 11);
let lines: Vec<_> = span.lines().collect();
- println!("{:?}", lines);
+ let lines_span: Vec<_> = span.lines_span().map(|span| span.as_str()).collect();
+
assert_eq!(lines.len(), 2);
assert_eq!(lines[0], "def\n".to_owned());
assert_eq!(lines[1], "ghi".to_owned());
+ assert_eq!(lines, lines_span) // Verify parity with lines_span()
+ }
+
+ #[test]
+ fn lines_span() {
+ let input = "abc\ndef\nghi";
+ let span = Span::new(input, 1, 7).unwrap();
+ let lines_span: Vec<_> = span.lines_span().collect();
+ let lines: Vec<_> = span.lines().collect();
+
+ assert_eq!(lines_span.len(), 2);
+ assert_eq!(lines_span[0], Span::new(input, 0, 4).unwrap());
+ assert_eq!(lines_span[1], Span::new(input, 4, 8).unwrap());
+ assert_eq!(
+ lines_span
+ .iter()
+ .map(|span| span.as_str())
+ .collect::<Vec<_>>(),
+ lines
+ );
}
}
diff --git a/vendor/pest/src/stack.rs b/vendor/pest/src/stack.rs
index dede80f1e..05ac11f67 100644
--- a/vendor/pest/src/stack.rs
+++ b/vendor/pest/src/stack.rs
@@ -7,7 +7,9 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use std::ops::{Index, Range};
+use alloc::vec;
+use alloc::vec::Vec;
+use core::ops::{Index, Range};
/// Implementation of a `Stack` which maintains an log of `StackOp`s in order to rewind the stack
/// to a previous state.
diff --git a/vendor/pest/src/token.rs b/vendor/pest/src/token.rs
index fbe544ab8..68cb1a6ee 100644
--- a/vendor/pest/src/token.rs
+++ b/vendor/pest/src/token.rs
@@ -7,7 +7,7 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use position::Position;
+use crate::position::Position;
/// A token generated by a `Parser`.
#[derive(Clone, Debug, Eq, Hash, PartialEq)]
diff --git a/vendor/pest/src/unicode/binary.rs b/vendor/pest/src/unicode/binary.rs
index 8ee9c6f97..a6c7d1d83 100644
--- a/vendor/pest/src/unicode/binary.rs
+++ b/vendor/pest/src/unicode/binary.rs
@@ -1,23 +1,29 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate.exe property-bool --trie-set ./target/ucd/
+// ucd-generate property-bool --trie-set ./target/ucd/
//
-// ucd-generate is available on crates.io.
+// Unicode version: 14.0.0.
+//
+// ucd-generate 0.2.12 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static ::ucd_trie::TrieSet)] = &[
("ASCII_Hex_Digit", ASCII_HEX_DIGIT), ("Alphabetic", ALPHABETIC),
- ("Bidi_Control", BIDI_CONTROL), ("Case_Ignorable", CASE_IGNORABLE),
- ("Cased", CASED), ("Changes_When_Casefolded", CHANGES_WHEN_CASEFOLDED),
+ ("Bidi_Control", BIDI_CONTROL), ("Bidi_Mirrored", BIDI_MIRRORED),
+ ("Case_Ignorable", CASE_IGNORABLE), ("Cased", CASED),
+ ("Changes_When_Casefolded", CHANGES_WHEN_CASEFOLDED),
("Changes_When_Casemapped", CHANGES_WHEN_CASEMAPPED),
("Changes_When_Lowercased", CHANGES_WHEN_LOWERCASED),
("Changes_When_Titlecased", CHANGES_WHEN_TITLECASED),
("Changes_When_Uppercased", CHANGES_WHEN_UPPERCASED), ("Dash", DASH),
("Default_Ignorable_Code_Point", DEFAULT_IGNORABLE_CODE_POINT),
- ("Deprecated", DEPRECATED), ("Diacritic", DIACRITIC),
- ("Extender", EXTENDER), ("Grapheme_Base", GRAPHEME_BASE),
- ("Grapheme_Extend", GRAPHEME_EXTEND), ("Grapheme_Link", GRAPHEME_LINK),
- ("Hex_Digit", HEX_DIGIT), ("Hyphen", HYPHEN),
- ("IDS_Binary_Operator", IDS_BINARY_OPERATOR),
+ ("Deprecated", DEPRECATED), ("Diacritic", DIACRITIC), ("Emoji", EMOJI),
+ ("Emoji_Component", EMOJI_COMPONENT), ("Emoji_Modifier", EMOJI_MODIFIER),
+ ("Emoji_Modifier_Base", EMOJI_MODIFIER_BASE),
+ ("Emoji_Presentation", EMOJI_PRESENTATION),
+ ("Extended_Pictographic", EXTENDED_PICTOGRAPHIC), ("Extender", EXTENDER),
+ ("Grapheme_Base", GRAPHEME_BASE), ("Grapheme_Extend", GRAPHEME_EXTEND),
+ ("Grapheme_Link", GRAPHEME_LINK), ("Hex_Digit", HEX_DIGIT),
+ ("Hyphen", HYPHEN), ("IDS_Binary_Operator", IDS_BINARY_OPERATOR),
("IDS_Trinary_Operator", IDS_TRINARY_OPERATOR),
("ID_Continue", ID_CONTINUE), ("ID_Start", ID_START),
("Ideographic", IDEOGRAPHIC), ("Join_Control", JOIN_CONTROL),
@@ -77,10 +83,10 @@ pub const ALPHABETIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 36, 36,
36, 36, 37, 38, 39, 40, 41, 42, 43, 44, 36, 36, 36, 36, 36, 36, 36, 36,
45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
- 31, 63, 64, 65, 66, 55, 67, 68, 69, 36, 36, 36, 70, 36, 36, 36, 36, 71,
- 72, 73, 74, 31, 75, 76, 31, 77, 78, 79, 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 80, 81, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 82, 83, 36,
+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 36, 36, 36, 72, 36, 36, 36, 36, 73,
+ 74, 75, 76, 31, 77, 78, 31, 79, 80, 81, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 82, 83, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 36, 36, 36,
84, 85, 86, 87, 88, 89, 31, 31, 31, 31, 31, 31, 31, 90, 44, 91, 92, 93,
36, 94, 95, 31, 31, 31, 31, 31, 31, 31, 31, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
@@ -88,7 +94,8 @@ pub const ALPHABETIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 55, 31, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 31, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
@@ -106,10 +113,9 @@ pub const ALPHABETIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 96, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 97, 98, 36, 36, 36, 36, 99,
- 100, 36, 96, 101, 36, 102, 103, 104, 105, 36, 106, 107, 108, 109, 110,
- 111, 112, 113, 114, 115, 116, 36, 117, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 96, 97, 36, 36, 36, 36, 98,
+ 99, 36, 100, 101, 36, 102, 103, 104, 105, 36, 106, 107, 108, 109, 110, 68,
+ 111, 112, 113, 114, 115, 36, 116, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
@@ -119,60 +125,60 @@ pub const ALPHABETIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 118, 119, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 36, 36, 117, 118, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
- 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 36, 36, 36, 36, 36, 120, 36,
- 121, 122, 123, 124, 125, 36, 36, 36, 36, 126, 127, 128, 129, 31, 130, 36,
- 131, 132, 133, 113, 134,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 36, 36, 36, 36, 36, 119, 36, 120,
+ 121, 122, 123, 124, 36, 36, 36, 36, 125, 33, 126, 127, 31, 128, 36, 129,
+ 130, 131, 112, 132,
],
tree2_level2: &[
- 0x1FFFFCFFFFFF, 0x7FF01FFFFFF, 0x3FDFFFFF00000000, 0xFFFF03F8FFF00000,
- 0xEFFFFFFFFFFFFFFF, 0xFFFE000FFFE1DFFF, 0xE3C5FDFFFFF99FEF,
- 0x1003000FB080599F, 0xC36DFDFFFFF987EE, 0x3F00005E021987,
- 0xE3EDFDFFFFFBBFEE, 0x1E00000F00011BBF, 0xE3EDFDFFFFF99FEE,
- 0x2000FB0C0199F, 0xC3FFC718D63DC7EC, 0x811DC7, 0xE3FFFDFFFFFDDFEF,
- 0xF07601DDF, 0xE3EFFDFFFFFDDFEF, 0x6000F40601DDF, 0xE7FFFFFFFFFDDFEF,
- 0xFC00000F80F05DDF, 0x2FFBFFFFFC7FFFEC, 0xC0000FF5F807F,
- 0x7FFFFFFFFFFFFFE, 0x207F, 0x3BFFECAEFEF02596, 0xF000205F, 0x1,
- 0xFFFE1FFFFFFFFEFF, 0x1FFFFFFFFEFFFF03, 0, 0xF97FFFFFFFFFFFFF,
- 0xFFFFC1E7FFFF0000, 0xFFFFFFFF3000407F, 0xF7FFFFFFFFFF20BF,
- 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF3D7F3DFF, 0x7F3DFFFFFFFF3DFF,
- 0xFFFFFFFFFF7FFF3D, 0xFFFFFFFFFF3DFFFF, 0x87FFFFFF, 0xFFFFFFFF0000FFFF,
- 0x3F3FFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFE, 0xFFFF9FFFFFFFFFFF,
- 0xFFFFFFFF07FFFFFE, 0x1FFC7FFFFFFFFFF, 0xFFFFF000FDFFF, 0xDDFFF000FFFFF,
- 0xFFCFFFFFFFFFFFFF, 0x108001FF, 0xFFFFFFFF00000000, 0x1FFFFFFFFFFFFFF,
- 0xFFFF07FFFFFFFFFF, 0x3FFFFFFFFFFFFF, 0x1FF0FFF7FFFFFFF, 0x1F3FFFFFFF0000,
- 0xFFFF0FFFFFFFFFFF, 0x3FF, 0xFFFFFFFF0FFFFFFF, 0x1FFFFE7FFFFFFF,
- 0x8000000000, 0xFFEFFFFFFFFFFFFF, 0xFEF, 0xFC00F3FFFFFFFFFF,
- 0x3FFBFFFFFFFFF, 0x3FFFFFFFFC00E000, 0xE7FFFFFFFFFF01FF, 0x6FDE0000000000,
- 0x1FFF8000000000, 0xFFFFFFFF3F3FFFFF, 0x3FFFFFFFAAFF3F3F,
- 0x5FDFFFFFFFFFFFFF, 0x1FDC1FFF0FCF1FDC, 0x8002000000000000, 0x1FFF0000,
- 0xF3FFBD503E2FFC84, 0xFFFFFFFF000043E0, 0x1FF, 0xFFC0000000000000,
- 0x3FFFFFFFFFF, 0xFFFF7FFFFFFFFFFF, 0xFFFFFFFF7FFFFFFF, 0xC781FFFFFFFFF,
+ 0x1FFFFCFFFFFF, 0xFFFF07FF01FFFFFF, 0xFFFFFFFF00007EFF,
+ 0xFFFF03F8FFF003FF, 0xEFFFFFFFFFFFFFFF, 0xFFFE000FFFE1DFFF,
+ 0xE3C5FDFFFFF99FEF, 0x1003000FB080599F, 0xC36DFDFFFFF987EE,
+ 0x3F00005E021987, 0xE3EDFDFFFFFBBFEE, 0x1E00000F00011BBF,
+ 0xE3EDFDFFFFF99FEE, 0x2000FB0C0199F, 0xC3FFC718D63DC7EC, 0x811DC7,
+ 0xE3FFFDFFFFFDDFEF, 0xF27601DDF, 0xE3EFFDFFFFFDDFEF, 0x6000F60601DDF,
+ 0xE7FFFFFFFFFDDFFF, 0xFC00000F80F05DDF, 0x2FFBFFFFFC7FFFEE,
+ 0xC0000FF5F807F, 0x7FFFFFFFFFFFFFE, 0x207F, 0x3BFFFFAFFFFFF7D6,
+ 0xF000205F, 0x1, 0xFFFE1FFFFFFFFEFF, 0x1FFFFFFFFEFFFF03, 0,
+ 0xF97FFFFFFFFFFFFF, 0xFFFFFFFFFFFF0000, 0xFFFFFFFF3C00FFFF,
+ 0xF7FFFFFFFFFF20BF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF3D7F3DFF,
+ 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D, 0xFFFFFFFFFF3DFFFF, 0x7FFFFFF,
+ 0xFFFFFFFF0000FFFF, 0x3F3FFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFE,
+ 0xFFFF9FFFFFFFFFFF, 0xFFFFFFFF07FFFFFE, 0x1FFC7FFFFFFFFFF,
+ 0xFFFFF800FFFFF, 0xDDFFF000FFFFF, 0xFFCFFFFFFFFFFFFF, 0x108001FF,
+ 0xFFFFFFFF00000000, 0x1FFFFFFFFFFFFFF, 0xFFFF07FFFFFFFFFF,
+ 0x3FFFFFFFFFFFFF, 0x1FF0FFF7FFFFFFF, 0x1F3FFFFFFF0000, 0xFFFF0FFFFFFFFFFF,
+ 0x3FF, 0xFFFFFFFF0FFFFFFF, 0x1FFFFE7FFFFFFF, 0x8000008000000000, 0x7001,
+ 0xFFEFFFFFFFFFFFFF, 0x1FEF, 0xFC00F3FFFFFFFFFF, 0x3FFBFFFFFFFFF,
+ 0x7FFFFFFFFFFFFF, 0x3FFFFFFFFC00E000, 0xE7FFFFFFFFFF01FF,
+ 0x46FDE0000000000, 0x1FFF8000000000, 0xFFFFFFFF3F3FFFFF,
+ 0x3FFFFFFFAAFF3F3F, 0x5FDFFFFFFFFFFFFF, 0x1FDC1FFF0FCF1FDC,
+ 0x8002000000000000, 0x1FFF0000, 0xF3FFBD503E2FFC84, 0xFFFFFFFF000043E0,
+ 0x1FF, 0xFFC0000000000000, 0x3FFFFFFFFFF, 0xC781FFFFFFFFF,
0xFFFF20BFFFFFFFFF, 0x80FFFFFFFFFF, 0x7F7F7F7F007FFFFF,
0xFFFFFFFF7F7F7F7F, 0x800000000000, 0x1F3E03FE000000E0,
0xFFFFFFFEE07FFFFF, 0xF7FFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFE0,
- 0x7FFFFFF00007FFF, 0xFFFF000000000000, 0xFFFFFFFFFFFF, 0x1FFF,
- 0x3FFFFFFFFFFF0000, 0xC00FFFF1FFF, 0x8FF07FFFFFFFFFFF, 0xFFFFFFFCFF800000,
- 0x3FFFFFFFFFFF9FF, 0xFF80000000000000, 0xFFFFFFF7BB, 0xFFFFFFFFFFFFF,
- 0x68FC00000000002F, 0xFFFF07FFFFFFFC00, 0x1FFFFFFF0007FFFF,
- 0xFFF7FFFFFFFFFFFF, 0x7C00FFDF00008000, 0x7FFFFFFFFFFFFF,
- 0xC47FFFFF00003FFF, 0x7FFFFFFFFFFFFFFF, 0x3CFFFF38000005,
- 0xFFFF7F7F007E7E7E, 0xFFFF003FF7FFFFFF, 0x7FFFFFFFFFF, 0xFFFF000FFFFFFFFF,
- 0xFFFFFFFFFFFF87F, 0xFFFF3FFFFFFFFFFF, 0x3FFFFFF, 0x5F7FFDFFE0F8007F,
- 0xFFFFFFFFFFFFFFDB, 0x3FFFFFFFFFFFF, 0xFFFFFFFFFFF80000,
- 0x3FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0000, 0xFFFFFFFFFFFCFFFF,
- 0xFFF0000000000FF, 0xFFDF000000000000, 0x1FFFFFFFFFFFFFFF,
- 0x7FFFFFE00000000, 0xFFFFFFC007FFFFFE, 0x1CFCFCFC,
+ 0xFFFFFFFF00007FFF, 0xFFFF000000000000, 0x1FFF, 0x3FFFFFFFFFFF0000,
+ 0xC00FFFF1FFF, 0x8FF07FFFFFFFFFFF, 0xFFFFFFFFFFFF, 0xFFFFFFFCFF800000,
+ 0xFFFFFFFFFFFFF9FF, 0xFFFC000003EB07FF, 0xFFFFFFFFBF, 0xFFFFFFFFFFFFF,
+ 0xE8FC00000000002F, 0xFFFF07FFFFFFFC00, 0x1FFFFFFF0007FFFF,
+ 0xFFF7FFFFFFFFFFFF, 0x7C00FFFF00008000, 0xFC7FFFFF00003FFF,
+ 0x7FFFFFFFFFFFFFFF, 0x3CFFFF38000005, 0xFFFF7F7F007E7E7E,
+ 0xFFFF03FFF7FFFFFF, 0x7FFFFFFFFFF, 0xFFFF000FFFFFFFFF, 0xFFFFFFFFFFFF87F,
+ 0xFFFF3FFFFFFFFFFF, 0x3FFFFFF, 0x5F7FFDFFE0F8007F, 0xFFFFFFFFFFFFFFDB,
+ 0x3FFFFFFFFFFFF, 0xFFFFFFFFFFF80000, 0x3FFFFFFFFFFFFFFF,
+ 0xFFFFFFFFFFFCFFFF, 0xFFF0000000000FF, 0xFFDF000000000000,
+ 0x1FFFFFFFFFFFFFFF, 0x7FFFFFE00000000, 0xFFFFFFC007FFFFFE, 0x1CFCFCFC,
],
tree3_level1: &[
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 12, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 13, 14, 15, 7, 16, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 5, 11, 12, 13, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 14, 15, 16, 7, 17, 18, 7, 19, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
@@ -181,84 +187,97 @@ pub const ALPHABETIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
],
tree3_level2: &[
- 0, 1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 7, 8, 9, 10, 11, 2, 2, 12, 13, 14, 15, 4,
- 4, 2, 2, 2, 2, 16, 17, 4, 4, 18, 19, 20, 21, 22, 4, 23, 4, 24, 25, 26, 27,
- 28, 29, 30, 4, 2, 31, 32, 32, 33, 4, 4, 4, 4, 4, 4, 4, 34, 35, 4, 4, 2,
- 35, 36, 37, 32, 38, 2, 39, 40, 4, 41, 42, 43, 44, 4, 4, 2, 45, 2, 46, 4,
- 4, 47, 48, 49, 50, 28, 4, 51, 4, 4, 4, 52, 4, 53, 54, 4, 4, 4, 4, 55, 56,
- 57, 52, 4, 4, 4, 4, 58, 59, 60, 4, 61, 62, 63, 4, 4, 4, 4, 64, 4, 4, 4, 4,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 65, 4, 2, 66, 2, 2, 2, 67, 4, 4,
+ 0, 1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 7, 8, 9, 10, 11, 2, 2, 12, 13, 14, 15,
+ 16, 4, 2, 2, 2, 2, 17, 18, 19, 4, 20, 21, 22, 23, 24, 4, 25, 4, 26, 27,
+ 28, 29, 30, 31, 32, 4, 2, 33, 34, 34, 35, 4, 4, 4, 4, 4, 36, 4, 37, 38,
+ 39, 40, 2, 41, 42, 43, 34, 44, 2, 45, 46, 4, 47, 48, 49, 50, 4, 4, 2, 51,
+ 2, 52, 4, 4, 53, 54, 55, 56, 57, 4, 58, 59, 4, 4, 60, 4, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 60, 4, 4, 4, 4, 70, 71, 72, 4, 73, 74, 75, 4, 4, 4, 4,
+ 76, 4, 4, 77, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 78, 4, 2, 79,
+ 2, 2, 2, 80, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 68, 81, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 79, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 2, 2, 2, 66, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 68, 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, 59, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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,
- 52, 20, 4, 69, 16, 70, 71, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 72,
- 73, 74, 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, 2,
+ 2, 2, 2, 2, 2, 2, 2, 60, 82, 55, 83, 84, 85, 86, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 2, 4, 4, 2, 87, 88, 89, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 75,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 32, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 20, 76, 2, 2, 2, 2, 2, 77, 4, 4, 4, 4,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 90, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 91, 33, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 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, 78, 79, 4, 4, 4, 4, 4, 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, 80, 81, 82, 83, 84, 2, 2,
- 2, 2, 85, 86, 87, 88, 89, 90, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 91, 4, 4, 4, 4, 4, 4,
4, 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, 92, 2, 93, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 94, 95, 96, 4, 4, 4, 4, 4, 4, 4, 4, 4, 76, 97, 98, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 92, 2, 2, 2, 2, 93, 94, 2, 2, 2, 2, 2, 95, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 99, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 10, 2, 2,
+ 4, 4, 4, 4, 2, 96, 97, 4, 4, 4, 4, 4, 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, 98, 99, 100, 101, 102, 2, 2, 2, 2,
+ 103, 104, 105, 106, 107, 108, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 22, 4, 4, 4, 109, 4, 4, 4, 110,
+ 111, 4, 4, 4, 4, 83, 112, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 113, 2, 2, 2, 114, 2, 115, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 116, 117, 118, 4, 4, 4, 4, 4, 4, 4, 4, 4, 119, 120, 121, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 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, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 122, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 60, 2, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 100, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 123, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 101, 4, 4, 4, 4, 4, 4, 4,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 124, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 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, 125, 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, 126, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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,
- 102, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
],
tree3_level3: &[
0xB7FFFF7FFFFFEFFF, 0x3FFF3FFF, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFF, 0,
0x1FFFFFFFFFFFFF, 0xFFFFFFFF1FFFFFFF, 0x1FFFF, 0xFFFFE000FFFFFFFF,
0x7FFFFFFFFFF07FF, 0xFFFFFFFF3FFFFFFF, 0x3EFF0F, 0xFFFF00003FFFFFFF,
- 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF, 0xFFFFFFFFF, 0x7FFFFFFFFFFFFF,
- 0xFF003FFFFF, 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF, 0x7FFFFFFF,
- 0x37FFFF00000000, 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF, 0x3FFFFFFEEFF06F,
+ 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF, 0xF7FF000FFFFFFFFF,
+ 0x1BFBFFFBFFB7F7FF, 0x7FFFFFFFFFFFFF, 0xFF003FFFFF, 0x7FDFFFFFFFFFFBF,
+ 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF, 0x7FFFFFFF, 0x37FFFF00000000,
+ 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF, 0x3FFFFFFEEFF06F,
0x1FFFFFFF00000000, 0x1FFFFFFF, 0x1FFFFFFEFF, 0x3FFFFFFFFFFFFF,
0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0x7FFFFFFFFFFFF, 0xFFFFFFFFFF,
- 0xFFFF00801FFFFFFF, 0x3F, 0x1FFFFFFFFFFFFFC, 0x1FFFFFF0000,
- 0x47FFFFFFFF0070, 0x1400001E, 0x409FFFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F,
- 0x1FFFFFFFFFF, 0xE3EDFDFFFFF99FEF, 0xFE081199F, 0x7BB, 0xB3,
- 0x7F3FFFFFFFFFFFFF, 0x3F000000, 0x7FFFFFFFFFFFFFFF, 0x11, 0x7FFE7FFFFFF,
- 0x1FFFFFFFFFFFFFF, 0xFFFFFFFF00000000, 0x80000000FFFFFFFF,
- 0x7FE7FFFFFFFFFFFF, 0xFFFFFFFFFFFF0000, 0x20FFFFCF, 0x7F7FFFFFFFFFFDFF,
- 0xFFFC000000000001, 0x7FFEFFFFFCFFFF, 0xB47FFFFFFFFFFB7F,
- 0xFFFFFDBF000000CB, 0x17B7FFF, 0x7FFFFF00000000, 0x3FFFFFF,
- 0x7FFFFFFFFFFF, 0xF, 0x7F, 0x3FFFFFFF0000, 0xE0FFFFF80000000F, 0xFFFF,
- 0x7FFFFFFFFFFF001F, 0xFFF80000, 0x300000000, 0x3FFFFFFFFFFFF,
- 0xFFFF000000000000, 0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF, 0x43FF01FF,
- 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF,
+ 0x31BFFFFFFFFFF, 0xFFFF00801FFFFFFF, 0xFFFF00000000003F,
+ 0xFFFF000000000003, 0x7FFFFF0000001F, 0x3E00000000003F, 0x1FFFFFFFFFFFFFC,
+ 0x1FFFFFF0004, 0x47FFFFFFFF00F0, 0x1400C01E, 0x409FFFFFFFFBFFFF,
+ 0xFFFF01FFBFFFBD7F, 0x1FFFFFFFFFF, 0xE3EDFDFFFFF99FEF, 0xFE081199F,
+ 0x3800007BB, 0xB3, 0x7F3FFFFFFFFFFFFF, 0x3F000000, 0x7FFFFFFFFFFFFFFF,
+ 0x11, 0x13FFFFFFFFFFFFF, 0x7FFE7FFFFFF, 0x7F, 0x1FFFFFFFFFFFFFF,
+ 0xFFFFFFFF00000000, 0x80000000FFFFFFFF, 0x99BFFFFFFF6FF27F, 0x7,
+ 0xFFFFFCFF00000000, 0x1AFCFFFFFF, 0x7FE7FFFFFFFFFFFF, 0xFFFFFFFFFFFF0000,
+ 0xFFFF000020FFFFFF, 0x7F7FFFFFFFFFFDFF, 0xFFFC000000000001,
+ 0x7FFEFFFFFCFFFF, 0xB47FFFFFFFFFFB7F, 0xFFFFFDBF000000CB, 0x17B7FFF,
+ 0x7FFFFF00000000, 0x1000000000000, 0x3FFFFFF, 0x7FFFFFFFFFFF, 0xF,
+ 0x1FFFFFFFFFFFF, 0xFFFF00007FFFFFFF, 0x3FFFFFFF0000, 0xFFFFFFFFFFFF,
+ 0xE0FFFFF80000000F, 0xFFFF, 0xFFFFFFFFFFFF87FF, 0xFFFF80FF,
+ 0x3000B00000000, 0xFFFFFFFFFFFFFF, 0x3FFFFF, 0x6FEF000000000000,
+ 0x7FFFFFFFF, 0xFFFF00F000070000, 0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF,
+ 0x43FF01FF, 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF,
0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF,
0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF,
- 0xFFFFFDFFFFFFFDFF, 0xFF7, 0x7DBF9FFFF7F, 0x1F, 0x8F, 0xAF7FE96FFFFFFEF,
- 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0xFFFF03FFFFFF03FF, 0x3FF,
- 0x7FFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF,
+ 0xFFFFFDFFFFFFFDFF, 0xFF7, 0x7DBF9FFFF7F, 0x3F801FFFFFFFFFFF, 0x4000,
+ 0xFFFFFFFFFFF, 0x7FFF6F7F00000000, 0x1F, 0x88F, 0xAF7FE96FFFFFFEF,
+ 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0xFFFF000000000000,
+ 0xFFFF03FFFFFF03FF, 0x3FF, 0xFFFFFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF,
+ 0x3FFFFFFF, 0x7FF,
],
};
@@ -320,88 +339,183 @@ pub const BIDI_CONTROL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
};
+pub const BIDI_MIRRORED: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
+ tree1_level1: &[
+ 0x5000030000000000, 0x2800000028000000, 0x800080000000000, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree2_level1: &[
+ 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0,
+ 0, 6, 0, 0, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 12, 0, 13, 0, 0, 0, 0, 0, 0, 14, 15, 16, 17, 18, 19, 0, 0, 0, 20, 0, 0,
+ 0, 0, 0, 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 25, 26, 0, 0,
+ ],
+ tree2_level2: &[
+ 0, 0x3C00000000000000, 0x18000000, 0x600000000000000, 0x6000000000000060,
+ 0x6000, 0x1, 0xFA0FF857BC623F1E, 0xFFFFCFF5803C1FFF, 0xC1FFFFCC01079FFF,
+ 0xFFFF3FFFFFC33E00, 0x60300000F00, 0x3FFF0000000000, 0xFFFC70783B79,
+ 0x100FFFDF9FFFFF8, 0x33F0033A1F37C23F, 0x70307A53DFFFFC00,
+ 0xFE19BC3001800000, 0xFFFFBFCFFFFFFFFF, 0x2F88707C507FFFFF,
+ 0x4000000000000000, 0x3FF3000363C, 0x1FE00000, 0xFF3FF00, 0x307E000000,
+ 0x2800000050000300, 0xDA8000000,
+ ],
+ tree3_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ ],
+ tree3_level2: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 3, 4, 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,
+ ],
+ tree3_level3: &[
+ 0, 0x8000000, 0x200000, 0x8000, 0x200, 0x8,
+ ],
+};
+
pub const CASE_IGNORABLE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree1_level1: &[
0x400408000000000, 0x140000000, 0x190A10000000000, 0, 0, 0, 0, 0, 0, 0,
0xFFFF000000000000, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF,
- 0x430FFFFFFFFFFFF, 0xB0, 0, 0, 0, 0x3F8, 0, 0, 0x2000000,
+ 0x430FFFFFFFFFFFF, 0xB0, 0, 0, 0, 0x3F8, 0, 0, 0x82000000,
0xBFFFFFFFFFFE0000, 0x100000000000B6, 0x17FF003F, 0x10000FFFFF801, 0,
0x3DFFBFC00000, 0xFFFF000000028000, 0x7FF, 0x1FFC000000000,
0x243FF80000000000,
],
tree2_level1: &[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 10, 11, 12, 13, 14, 15, 16, 11, 17, 18,
- 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 33, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 34, 35, 36, 37,
- 38, 39, 40, 2, 41, 2, 2, 2, 42, 43, 44, 2, 45, 46, 47, 48, 49, 50, 2, 51,
- 52, 53, 54, 55, 2, 2, 2, 2, 2, 2, 56, 57, 58, 59, 60, 61, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 62, 2, 63, 2, 64, 2, 65, 66,
- 2, 2, 2, 2, 2, 2, 2, 67, 2, 68, 69, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 70, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 50, 2, 2, 2, 2, 71, 72, 73, 74, 75, 76, 77, 78, 79, 2, 2, 80, 81, 82,
- 83, 84, 85, 86, 87, 88, 2, 89, 2, 90, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 91, 2, 92, 93, 2, 2, 2, 2, 2, 2, 2, 2, 94, 95, 2, 96, 97, 98,
- 99, 100,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 36, 37, 38, 39, 40, 41, 42, 34, 43, 34, 34, 34, 44, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 34, 54, 55, 56, 57, 58, 34, 34, 34, 34, 34,
+ 34, 59, 60, 61, 62, 63, 64, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 65, 34,
+ 66, 34, 67, 34, 68, 69, 34, 34, 34, 34, 34, 34, 34, 70, 34, 71, 72, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 73, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 53, 34, 34, 34, 34, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 34, 34, 83, 84, 85, 86, 87, 88, 89, 90,
+ 91, 34, 92, 34, 93, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 94, 34, 95,
+ 96, 34, 34, 34, 34, 34, 34, 34, 34, 97, 98, 34, 99, 100, 101, 102, 103,
],
tree2_level2: &[
- 0x3FFFFFC00000, 0xE000000, 0, 0xFFFFFFFFFFF80000, 0x1400000000000007,
- 0x2000C00FE21FE, 0x1000000000000002, 0x4000000C0000201E,
- 0x1000000000000006, 0x23000000023986, 0xFC00000C000021BE,
- 0x9000000000000002, 0xC0040201E, 0x4, 0x2001, 0xC000000000000011,
- 0xC00603DC1, 0xC00003040, 0x1800000000000003, 0xC0000201E, 0x5C0400,
- 0x7F2000000000000, 0x7FC0, 0x1BF2000000000000, 0x3F40, 0x2A0000003000000,
- 0x7FFE000000000000, 0x1FFFFFFFFEFFE0DF, 0x40, 0x66FDE00000000000,
- 0x1E0001C3000000, 0x20002064, 0x1000000000000000, 0xE0000000,
- 0x1C0000001C0000, 0xC0000000C0000, 0x3FB0000000000000, 0x208FFE40, 0x7800,
- 0x8, 0x20000000060, 0xE04018700000000, 0x9800000, 0x9FF81FE57F400000,
- 0x7FFF008000000000, 0x17D000000000000F, 0xFF80000000004, 0x3B3C00000003,
- 0x3A34000000000, 0xCFF00000000000, 0x3F00000000000000, 0x31021FDFFF70000,
- 0xFFFFF00000000000, 0x10007FFFFFFFFFF, 0xFFFFFFFFF8000000,
- 0xFBFFFFFFFFFFFFFF, 0xA000000000000000, 0x6000E000E000E003,
- 0x7C900300F800, 0x8002FFDF00000000, 0x1FFF0000, 0x1FFFFFFFF0000,
- 0x3000000000000000, 0x3800000000000, 0x8000800000000000,
- 0xFFFFFFFF00000000, 0x800000000000, 0x83E3C0000000020, 0x7E000000,
- 0x7000000000000000, 0x200000, 0x1000, 0xBFF7800000000000, 0xF0000000,
- 0x3000000000000, 0x3FFFFFFFF, 0x1000000000000, 0x700, 0x300000000000000,
- 0x6000000844, 0x8003FFFF00000030, 0x3FC000000000, 0x3FF80,
- 0x13C8000000000007, 0x6000008000, 0x667E0000000000, 0x1001000000001008,
- 0xC19D000000000000, 0x58300020000002, 0xF8000000, 0x212000000000,
- 0x40000000, 0xFFFC000000000000, 0x3, 0xFFFF0008FFFF, 0x240000,
- 0x8000000000000000, 0x4000000004004080, 0x1000000000001, 0xC0000000,
- 0xE00000800000000,
+ 0x3FFFFFC00000, 0xE000000, 0xFF030100, 0xFFFFFFFFFFFFFE00,
+ 0x1400000000000007, 0x2000C00FE21FE, 0x1000000000000002,
+ 0x4000000C0000201E, 0x1000000000000006, 0x23000000023986,
+ 0xFC00000C000021BE, 0x9000000000000002, 0xC0060201E, 0x4, 0x2001,
+ 0xD000000000000011, 0xC00603DC1, 0xC00003040, 0x1800000000000003,
+ 0xC0000201E, 0x2, 0x5C0400, 0x7F2000000000000, 0x7FC0, 0x1FF2000000000000,
+ 0x3F40, 0x2A0000003000000, 0x7FFE000000000000, 0x1FFFFFFFFEFFE0DF, 0x40,
+ 0x66FDE00000000000, 0x1E0001C3000000, 0x20002064, 0x1000000000000000, 0,
+ 0xE0000000, 0xC0000001C0000, 0xC0000000C0000, 0x3FB0000000000000,
+ 0x208FFE40, 0xF800, 0x8, 0x20000000060, 0xE04018700000000, 0x9800000,
+ 0x9FF81FE57F400000, 0xFFFF008000000000, 0x7FFF, 0x17D000000000000F,
+ 0xFF80000000004, 0x3B3C00000003, 0x3A34000000000, 0xCFF00000000000,
+ 0x3F00000000000000, 0x31021FDFFF70000, 0xFFFFF00000000000,
+ 0x10007FFFFFFFFFF, 0xFFFFFFFFF8000000, 0xFFFFFFFFFFFFFFFF,
+ 0xA000000000000000, 0x6000E000E000E003, 0x7C900300F800,
+ 0x8002FFDF00000000, 0x1FFF0000, 0x1FFFFFFFF0000, 0x3000000000000000,
+ 0x3800000000000, 0x8000800000000000, 0xFFFFFFFF00000000, 0x800000000000,
+ 0x83E3C0000000020, 0x7E000000, 0x7000000000000000, 0x200000, 0x1000,
+ 0xBFF7800000000000, 0xF0000000, 0x3000000000000, 0x3FFFFFFFF,
+ 0x1000000000000, 0x700, 0x31C000000000000, 0x106000000844,
+ 0x8003FFFF00000030, 0x3FC000000000, 0x3FF80, 0x33C8000000000007,
+ 0x6000008000, 0x667E0000000000, 0x1001000000001008, 0xC19D000000000000,
+ 0x58300020000002, 0xE00F8000000, 0x212000000000, 0x40000000,
+ 0xFFFC000000000000, 0x7, 0xFFFF0008FFFF, 0x240000, 0x8000000000000000,
+ 0x4000000004004080, 0x1000000000001, 0xC0000000, 0xE00000800000000,
],
tree3_level1: &[
- 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 2, 5, 6, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 1, 2, 3, 2, 2, 4, 2, 2, 2, 5, 6, 7, 8, 9, 10, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -409,51 +523,62 @@ pub const CASE_IGNORABLE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 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, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 3, 0, 0, 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, 0, 0, 5, 0, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 0, 0, 17, 18, 19, 0, 0, 20, 21, 22, 23, 0, 0, 24, 25, 26, 27, 28, 0,
- 29, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 31, 32, 33, 0, 0, 0, 0, 0, 34, 0,
- 35, 0, 36, 37, 38, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 6, 0, 0, 0, 0, 0, 0,
+ 0, 0, 7, 0, 0, 0, 0, 0, 8, 0, 0, 9, 10, 0, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 0, 0, 20, 21, 22, 0, 0, 23, 24, 25, 26, 0, 0, 27, 28, 29, 30, 31, 0,
+ 32, 0, 0, 0, 33, 0, 0, 0, 34, 35, 0, 36, 37, 38, 39, 0, 0, 0, 0, 0, 40, 0,
+ 41, 0, 42, 43, 44, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
- 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 0, 0, 48, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 50, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 55, 56, 0, 0, 0, 0, 0, 0, 0, 57, 58, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60,
+ 61, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
+ 0, 0, 0, 64, 0, 0, 0, 0, 0, 65, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 0, 57, 57, 57, 58, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 70, 71, 0, 0, 71, 71, 71, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0x2000000000000000, 0x100000000, 0x7C0000000000000, 0x870000000000F06E,
- 0x6000000000, 0xF000000000, 0x1FFC0, 0xFF00000000000002,
- 0x800000000000007F, 0x2678000000000003, 0x2000, 0x1FEF8000000007,
- 0x8000000000000, 0x7FC0000000000003, 0x1E00, 0x40D3800000000000,
- 0x7F880000000, 0x1800000000000003, 0x1F1FC000000001, 0xFF00000000000000,
- 0x4000005C, 0x85F8000000000000, 0xD, 0xB03C000000000000, 0x30000001,
- 0xA7F8000000000000, 0x1, 0xBF280000000000, 0xFBCE0000000,
- 0x6FF800000000000, 0x79F80000000007FE, 0xE7E0080, 0x37FFC00,
- 0xBF7F000000000000, 0x6DFCFFFFFC0000, 0xB47E000000000000, 0xBF, 0xA30000,
- 0x18000000000000, 0x1F000000000000, 0x7F000000000000, 0xF, 0xFFFF8000,
- 0x300000000, 0xF60000000, 0xFFF8038000000000, 0x3C0000000FE7, 0x1C,
+ 0, 0x2000000000000000, 0x100000000, 0x7C0000000000000, 0x7FDFFFFFFFFFFBF,
+ 0x870000000000F06E, 0x6000000000, 0xF000000000, 0x180000000000, 0x1FFC0,
+ 0x3C, 0xFF00000000000002, 0x801900000000007F, 0x2678000000000003, 0x2004,
+ 0x1FEF8000000007, 0x8000000000000, 0x7FC0000000000003, 0x9E00,
+ 0x40D3800000000000, 0x7F880000000, 0x1800000000000003, 0x1F1FC000000001,
+ 0xFF00000000000000, 0x4000005C, 0x85F8000000000000, 0xD,
+ 0xB03C000000000000, 0x30000001, 0xA7F8000000000000, 0x1, 0xBF280000000000,
+ 0xFBCE0000000, 0x6FF800000000000, 0x5800000000000000, 0x8, 0x10CF00000,
+ 0x79F80000000007FE, 0xE7E0080, 0x37FFC00, 0xBF7F000000000000,
+ 0x6DFCFFFFFC0000, 0xB47E000000000000, 0xBF, 0xA30000, 0x18000000000000,
+ 0x1FF000000000000, 0x1F000000000000, 0x7F000000000000, 0xF, 0x8000,
+ 0xFFFF8000, 0x1B00000000, 0x6FEF000000000000, 0xF60000000,
+ 0xFFFF3FFFFFFFFFFF, 0x7F, 0xFFF8038000000000, 0x3C0000000FE7, 0x1C,
0xF87FFFFFFFFFFFFF, 0x201FFFFFFFFFFF, 0xFFFEF8000010, 0x7DBF9FFFF7F,
- 0x7F0000, 0x7F0, 0xF800000000000000, 0xFFFFFFFF00000002,
- 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF,
+ 0x3FFF000000000000, 0x400000000000, 0xF00000000000, 0x7F0000, 0xFF0,
+ 0xF800000000000000, 0xFFFFFFFF00000002, 0xFFFFFFFFFFFFFFFF,
+ 0xFFFFFFFFFFFF,
],
};
@@ -473,8 +598,8 @@ pub const CASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 5, 5, 5, 0, 5, 5, 5, 5, 6, 7, 8, 9, 0, 10, 11,
0, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 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, 17, 18,
- 5, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+ 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -493,8 +618,8 @@ pub const CASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 0, 23, 5, 24, 25, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 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, 19, 20, 0, 21, 5, 22, 23, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -507,19 +632,17 @@ pub const CASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 0,
- 0,
+ 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 28, 0, 0,
],
tree2_level2: &[
0, 0xFFFFFFFF00000000, 0xE7FFFFFFFFFF20BF, 0x3F3FFFFFFFFFFFFF,
0xE7FFFFFFFFFF01FF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF3F3FFFFF,
0x3FFFFFFFAAFF3F3F, 0x5FDFFFFFFFFFFFFF, 0x1FDC1FFF0FCF1FDC,
0x8002000000000000, 0x1FFF0000, 0xF21FBD503E2FFC84, 0xFFFFFFFF000043E0,
- 0x18, 0xFFC0000000000000, 0x3FFFFFFFFFF, 0xFFFF7FFFFFFFFFFF,
- 0xFFFFFFFF7FFFFFFF, 0xC781FFFFFFFFF, 0x20BFFFFFFFFF, 0x3FFFFFFFFFFF,
- 0x3FFFFFFF, 0xFFFFFFFC00000000, 0x3FFFFFFFFFF78FF, 0x700000000000000,
- 0xFFFF000000000000, 0xFFFF003FF7FFFFFF, 0xF8007F, 0x7FFFFFE00000000,
- 0x7FFFFFE,
+ 0x18, 0xFFC0000000000000, 0x3FFFFFFFFFF, 0xC781FFFFFFFFF, 0x20BFFFFFFFFF,
+ 0x3FFFFFFFFFFF, 0x3FFFFFFF, 0xFFFFFFFC00000000, 0xFFFFFFFFFFFF78FF,
+ 0x760000003EB07FF, 0xFFFF000000000000, 0xFFFF01FFF7FFFFFF, 0xF8007F,
+ 0x7FFFFFE00000000, 0x7FFFFFE,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -535,33 +658,34 @@ pub const CASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 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,
- 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, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 5, 6, 0, 0,
+ 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9,
+ 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 9,
- 10, 11, 12, 1, 1, 1, 1, 13, 14, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 11, 12, 13, 14, 15, 1, 1, 1, 1, 16, 17, 18, 19, 20, 21, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 24, 25,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 20, 21, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
0, 0xFFFFFFFFFFFFFFFF, 0xFFFF, 0xFFFF000000000000, 0xFFFFFFFFF0FFFFF,
+ 0xF7FF000000000000, 0x1BFBFFFBFFB7F7FF, 0x7FDFFFFFFFFFFB9,
0x7FFFFFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFF, 0xFFFFFFFFFFDFFFFF,
0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF,
0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF, 0xF7FFFFFFF7FFFFFD,
- 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF, 0xFF7, 0xF,
- 0xFFFF03FFFFFF03FF, 0x3FF,
+ 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF, 0xFF7,
+ 0x7FFFFBFF, 0xF, 0xFFFF03FFFFFF03FF, 0x3FF,
],
};
@@ -600,8 +724,8 @@ pub const CHANGES_WHEN_CASEFOLDED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 21, 22, 23, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 21, 22, 23, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -614,17 +738,18 @@ pub const CHANGES_WHEN_CASEFOLDED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0,
+ 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0,
0,
],
tree2_level2: &[
0, 0xFFFFFFFF00000000, 0x20BF, 0x3F00000000000000, 0xE7FFFFFFFFFF01FF,
0x5555555555555555, 0x555555554C155555, 0xFF00FF003F00FF00,
0xFF00AA003F00, 0x1F9CFFFFFFFFFFFF, 0x1F9C1F000F001F9C, 0x40C4000000000,
- 0xFFFF00000000, 0x8, 0xFFC0000000000000, 0xFFFF, 0x7FFFFFFFFFFF,
+ 0xFFFF00000000, 0x8, 0xFFC0000000000000, 0xFFFF, 0xFFFFFFFFFFFF,
0xC025EA9D00000000, 0x4280555555555, 0x155555555555, 0x5555555,
- 0x5554555400000000, 0x6A00555555555555, 0x15F7D5555452855,
- 0xFFFF000000000000, 0xFFFFFFFFFFFFFFFF, 0xF8007F, 0x7FFFFFE00000000,
+ 0x5554555400000000, 0x6A00555555555555, 0x555F7D5555452855,
+ 0x200000014102F5, 0xFFFF000000000000, 0xFFFFFFFFFFFFFFFF, 0xF8007F,
+ 0x7FFFFFE00000000,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -640,23 +765,23 @@ pub const CHANGES_WHEN_CASEFOLDED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 4, 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,
- 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, 5, 0,
+ 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, 7, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFF, 0x7FFFFFFFFFFFF,
- 0xFFFFFFFF00000000, 0xFFFFFFFF, 0x3FFFFFFFF,
+ 0, 0xFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFF, 0xF7FF000000000000,
+ 0x37F7FF, 0x7FFFFFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFF, 0x3FFFFFFFF,
],
};
@@ -664,7 +789,7 @@ pub const CHANGES_WHEN_CASEMAPPED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
tree1_level1: &[
0, 0x7FFFFFE07FFFFFE, 0x20000000000000, 0xFF7FFFFFFF7FFFFF,
0xFEFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xB3FFF3FFF7FFDFFF,
- 0xFFFFFFFFFFFFFFF0, 0xFC0FFFFDFFFFFFFF, 0x20269F6B1ADFFFFF, 0x60041F89, 0,
+ 0xFFFFFFFFFFFFFFF0, 0xFC0FFFFDFFFFFFFF, 0x20269F6B1ADFFFFF, 0x60041F8D, 0,
0, 0xB8CF000000000020, 0xFFFFFFFBFFFFD740, 0xEFBFFFFFFFE3FFFF,
0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFC03,
0xFFFFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFFF, 0xFFFFFFFE007FFFFF, 0xFF, 0, 0, 0,
@@ -674,10 +799,10 @@ pub const CHANGES_WHEN_CASEMAPPED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 5, 0, 0, 6, 6, 7, 6, 8, 9, 10, 11, 0, 0, 0,
- 0, 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 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, 17, 18,
- 6, 19, 20, 0, 0, 0, 0, 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, 0, 0, 5, 6, 0, 7, 7, 8, 7, 9, 10, 11, 12, 0, 0, 0,
+ 0, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 18,
+ 7, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -696,8 +821,8 @@ pub const CHANGES_WHEN_CASEMAPPED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 0, 23, 24, 25, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 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, 21, 22, 0, 23, 24, 25, 26, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -710,18 +835,18 @@ pub const CHANGES_WHEN_CASEMAPPED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 0,
+ 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 0,
0,
],
tree2_level2: &[
0, 0xFFFFFFFF00000000, 0xE7FFFFFFFFFF20BF, 0x3F3FFFFFFFFFFFFF,
- 0xE7FFFFFFFFFF01FF, 0x2200000000000000, 0xFFFFFFFFFFFFFFFF,
+ 0xE7FFFFFFFFFF01FF, 0x2200000000000000, 0x4000, 0xFFFFFFFFFFFFFFFF,
0xFFFFFFFF4FFFFFFF, 0xFFFFFFFF3F3FFFFF, 0x3FFFFFFFAAFF3F3F,
0x5FDFFFFFFFFFFFFF, 0x1FDC1FFF0FCF1FDC, 0x40C4000000000,
0xFFFFFFFF00004000, 0x18, 0xFFC0000000000000, 0x3FFFFFFFFFF,
- 0xFFFF7FFFFFFFFFFF, 0xC06DFFFF7FFFFFFF, 0xC780FFFFFFFFF, 0x20BFFFFFFFFF,
- 0x3FFFFFFFFFFF, 0xFFFFFFF, 0xFFFCFFFC00000000, 0xFE00FFFFFFFFFFFF,
- 0x3FF7FFFFFCF38FF, 0xFFFF000000080000, 0xF8007F, 0x7FFFFFE00000000,
+ 0xC06DFFFFFFFFFFFF, 0xC780FFFFFFFFF, 0x20BFFFFFFFFF, 0x3FFFFFFFFFFF,
+ 0xFFFFFFF, 0xFFFCFFFC00000000, 0xFE00FFFFFFFFFFFF, 0xFFFF7FFFFFDF38FF,
+ 0x60000003C307FF, 0xFFFF000000080000, 0xF8007F, 0x7FFFFFE00000000,
0x7FFFFFE,
],
tree3_level1: &[
@@ -738,10 +863,10 @@ pub const CHANGES_WHEN_CASEMAPPED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 5, 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,
- 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, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7,
+ 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -749,12 +874,13 @@ pub const CHANGES_WHEN_CASEMAPPED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 1, 10, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
0, 0xFFFFFFFFFFFFFFFF, 0xFFFF, 0xFFFF000000000000, 0xFFFFFFFFF0FFFFF,
- 0x7FFFFFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFF, 0xF,
+ 0xF7FF000000000000, 0x1BFBFFFBFFB7F7FF, 0x7FFFFFFFFFFFF,
+ 0xFFFFFFFF00000000, 0xFFFFFFFF, 0xF,
],
};
@@ -792,7 +918,7 @@ pub const CHANGES_WHEN_LOWERCASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 21, 22, 23, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 21, 22, 23, 24, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -806,16 +932,16 @@ pub const CHANGES_WHEN_LOWERCASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
],
tree2_level2: &[
0, 0xFFFFFFFF00000000, 0x20BF, 0x3FFFFFFFFFFFFF, 0xE7FFFFFFFFFF0000,
0x5555555555555555, 0x5555555540155555, 0xFF00FF003F00FF00,
0xFF00AA003F00, 0x1F00FF00FF00FF00, 0x1F001F000F001F00, 0x40C4000000000,
- 0xFFFF00000000, 0x8, 0xFFC0000000000000, 0xFFFF, 0x7FFFFFFFFFFF,
+ 0xFFFF00000000, 0x8, 0xFFC0000000000000, 0xFFFF, 0xFFFFFFFFFFFF,
0xC025EA9D00000000, 0x4280555555555, 0x155555555555, 0x5555555,
- 0x5554555400000000, 0x6A00555555555555, 0x15F7D5555452855,
- 0x7FFFFFE00000000,
+ 0x5554555400000000, 0x6A00555555555555, 0x555F7D5555452855,
+ 0x200000014102F5, 0x7FFFFFE00000000,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -831,23 +957,23 @@ pub const CHANGES_WHEN_LOWERCASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 4, 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,
- 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, 5, 0,
+ 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, 7, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFF, 0x7FFFFFFFFFFFF,
- 0xFFFFFFFF00000000, 0xFFFFFFFF, 0x3FFFFFFFF,
+ 0, 0xFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFF, 0xF7FF000000000000,
+ 0x37F7FF, 0x7FFFFFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFF, 0x3FFFFFFFF,
],
};
@@ -855,7 +981,7 @@ pub const CHANGES_WHEN_TITLECASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
tree1_level1: &[
0, 0x7FFFFFE00000000, 0x20000000000000, 0xFF7FFFFF80000000,
0x54AAAAAAAAAAAAAA, 0xD4AAAAAAAAAAAB55, 0xA251212A46241129,
- 0xAA2BAAAAB55556D0, 0x900AAAA8AAAAAAAA, 0x20269F6B1ADFAA85, 0x60041F89, 0,
+ 0xAA2BAAAAB55556D0, 0x900AAAA8AAAAAAAA, 0x20269F6B1ADFAA85, 0x60041F8D, 0,
0, 0x388A000000000020, 0xFFFFF00000010000, 0x92FAAAAAAE37FFF,
0xFFFF000000000000, 0xAAAAAAAAFFFFFFFF, 0xAAAAAAAAAAAAA802,
0xAAAAAAAAAAAAD554, 0xAAAAAAAAAAAA, 0xFFFFFFFE00000000, 0xFF, 0, 0, 0, 0,
@@ -865,10 +991,10 @@ pub const CHANGES_WHEN_TITLECASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 3, 0, 0, 4, 4, 5, 4, 6, 7, 8, 9, 0, 0, 0, 0,
- 0, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 14, 4, 15,
- 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, 2, 0, 0, 3, 4, 0, 5, 5, 6, 5, 7, 8, 9, 10, 0, 0, 0,
+ 0, 0, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 5,
+ 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -887,8 +1013,8 @@ pub const CHANGES_WHEN_TITLECASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 0, 19, 20, 21, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 22, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 21, 22, 23, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -901,16 +1027,17 @@ pub const CHANGES_WHEN_TITLECASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0,
+ 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0,
],
tree2_level2: &[
- 0, 0x3F00000000000000, 0x1FF, 0x2200000000000000, 0xAAAAAAAAAAAAAAAA,
- 0xAAAAAAAA0FEAAAAA, 0xFF00FF003F00FF, 0x3FFF00FF00FF003F,
- 0x40DF00FF00FF00FF, 0xDC00FF00CF00DC, 0xFFFF000000004000, 0x10,
- 0x3FFFFFF0000, 0xFFFF000000000000, 0x4815627FFFFFFF, 0x8500AAAAAAAAA,
- 0x20BFFFFFFFFF, 0x2AAAAAAAAAAA, 0xAAAAAAA, 0xAAA8AAA800000000,
- 0x9400AAAAAAAAAAAA, 0x2A002AAAA8A10AA, 0xFFFF000000080000,
- 0xFFFFFFFFFFFFFFFF, 0xF8007F, 0x7FFFFFE,
+ 0, 0x3F00000000000000, 0x1FF, 0x2200000000000000, 0x4000,
+ 0xAAAAAAAAAAAAAAAA, 0xAAAAAAAA0FEAAAAA, 0xFF00FF003F00FF,
+ 0x3FFF00FF00FF003F, 0x40DF00FF00FF00FF, 0xDC00FF00CF00DC,
+ 0xFFFF000000004000, 0x10, 0x3FFFFFF0000, 0xFFFF000000000000,
+ 0x481562FFFFFFFF, 0x8500AAAAAAAAA, 0x20BFFFFFFFFF, 0x2AAAAAAAAAAA,
+ 0xAAAAAAA, 0xAAA8AAA800000000, 0x9400AAAAAAAAAAAA, 0xAAA002AAAA9A10AA,
+ 0x4000000282050A, 0xFFFF000000080000, 0xFFFFFFFFFFFFFFFF, 0xF8007F,
+ 0x7FFFFFE,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -926,23 +1053,23 @@ pub const CHANGES_WHEN_TITLECASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 0, 0, 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, 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, 5,
+ 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFFFFFF0000000000, 0xFFFF, 0xFFFFFFFFF000000, 0x7FFFFFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFC00000000, 0xF,
+ 0, 0xFFFFFF0000000000, 0xFFFF, 0xFFFFFFFFF000000, 0x1BFBFFFBFF800000,
+ 0x7FFFFFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFC00000000, 0xF,
],
};
@@ -950,7 +1077,7 @@ pub const CHANGES_WHEN_UPPERCASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
tree1_level1: &[
0, 0x7FFFFFE00000000, 0x20000000000000, 0xFF7FFFFF80000000,
0x54AAAAAAAAAAAAAA, 0xD4AAAAAAAAAAAB55, 0xA251212A46241129,
- 0xAA2DAAAAB5555B60, 0x900AAAA8AAAAAAAA, 0x20269F6B1ADFAA85, 0x60041F89, 0,
+ 0xAA2DAAAAB5555B60, 0x900AAAA8AAAAAAAA, 0x20269F6B1ADFAA85, 0x60041F8D, 0,
0, 0x388A000000000020, 0xFFFFF00000010000, 0x92FAAAAAAE37FFF,
0xFFFF000000000000, 0xAAAAAAAAFFFFFFFF, 0xAAAAAAAAAAAAA802,
0xAAAAAAAAAAAAD554, 0xAAAAAAAAAAAA, 0xFFFFFFFE00000000, 0xFF, 0, 0, 0, 0,
@@ -960,10 +1087,10 @@ pub const CHANGES_WHEN_UPPERCASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 4, 0, 0, 5, 5, 6, 5, 7, 8, 9, 10, 0, 0, 0,
- 0, 0, 11, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 15, 5,
- 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 4, 5, 0, 6, 6, 7, 6, 8, 9, 10, 11, 0, 0, 0,
+ 0, 0, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 16, 6,
+ 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -982,8 +1109,8 @@ pub const CHANGES_WHEN_UPPERCASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 20, 21, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 21, 22, 23, 24, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -996,16 +1123,17 @@ pub const CHANGES_WHEN_UPPERCASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0,
+ 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0,
],
tree2_level2: &[
0, 0xE7FFFFFFFFFF0000, 0x3F00000000000000, 0x1FF, 0x2200000000000000,
- 0xAAAAAAAAAAAAAAAA, 0xAAAAAAAA0FEAAAAA, 0xFF00FF003F00FF,
+ 0x4000, 0xAAAAAAAAAAAAAAAA, 0xAAAAAAAA0FEAAAAA, 0xFF00FF003F00FF,
0x3FFF00FF00FF003F, 0x50DFFFFFFFFFFFFF, 0x10DC00FF00CF10DC,
0xFFFF000000004000, 0x10, 0x3FFFFFF0000, 0xFFFF000000000000,
- 0x4815627FFFFFFF, 0x8500AAAAAAAAA, 0x20BFFFFFFFFF, 0x2AAAAAAAAAAA,
- 0xAAAAAAA, 0xAAA8AAA800000000, 0x9400AAAAAAAAAAAA, 0x2A002AAAA8A10AA,
- 0xFFFF000000080000, 0xFFFFFFFFFFFFFFFF, 0xF8007F, 0x7FFFFFE,
+ 0x481562FFFFFFFF, 0x8500AAAAAAAAA, 0x20BFFFFFFFFF, 0x2AAAAAAAAAAA,
+ 0xAAAAAAA, 0xAAA8AAA800000000, 0x9400AAAAAAAAAAAA, 0xAAA002AAAA9A10AA,
+ 0x4000000282050A, 0xFFFF000000080000, 0xFFFFFFFFFFFFFFFF, 0xF8007F,
+ 0x7FFFFFE,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1021,23 +1149,23 @@ pub const CHANGES_WHEN_UPPERCASED: &'static ::ucd_trie::TrieSet = &::ucd_trie::T
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 0, 0, 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, 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, 5,
+ 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFFFFFF0000000000, 0xFFFF, 0xFFFFFFFFF000000, 0x7FFFFFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFC00000000, 0xF,
+ 0, 0xFFFFFF0000000000, 0xFFFF, 0xFFFFFFFFF000000, 0x1BFBFFFBFF800000,
+ 0x7FFFFFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFC00000000, 0xF,
],
};
@@ -1053,7 +1181,7 @@ pub const DASH: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 0,
0, 0, 0, 0, 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, 7, 1, 0, 0, 0, 0, 0, 0, 8, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 7, 8, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1086,18 +1214,36 @@ pub const DASH: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 0, 0, 12, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 0, 0, 13, 0, 0, 0,
],
tree2_level2: &[
0, 0x1, 0x40, 0x3F0000, 0x800000000080000, 0x800, 0x40000,
- 0xC00000004800000, 0x1000010000000, 0x100000000, 0x6000000000000,
- 0x801000000, 0x2000,
+ 0xC00000004800000, 0x20000001, 0x1000010000000, 0x100000000,
+ 0x6000000000000, 0x801000000, 0x2000,
],
tree3_level1: &[
+ 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1,
],
tree3_level2: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
],
tree3_level3: &[
+ 0, 0x200000000000,
],
};
@@ -1149,7 +1295,7 @@ pub const DEFAULT_IGNORABLE_CODE_POINT: &'static ::ucd_trie::TrieSet = &::ucd_tr
0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 0, 0, 9, 10,
],
tree2_level2: &[
- 0, 0x180000000, 0x30000000000000, 0x7800, 0x7C000000F800, 0xFFFF00000000,
+ 0, 0x180000000, 0x30000000000000, 0xF800, 0x7C000000F800, 0xFFFF00000000,
0x1000000000, 0xFFFF, 0x8000000000000000, 0x100000000, 0x1FF000000000000,
],
tree3_level1: &[
@@ -1268,14 +1414,14 @@ pub const DIACRITIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0xFFFF000000000000, 0x7FF, 0x1FFC000000000, 0x3FF80000000000,
],
tree2_level1: &[
- 0, 1, 1, 2, 3, 4, 3, 5, 3, 5, 3, 6, 3, 5, 1, 5, 1, 5, 3, 5, 7, 5, 1, 8, 1,
- 9, 1, 10, 11, 1, 12, 13, 14, 1, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 1, 17, 1, 1, 1,
- 1, 18, 19, 1, 20, 21, 22, 1, 23, 24, 1, 25, 26, 27, 1, 28, 1, 1, 1, 1, 1,
- 1, 29, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 31, 1, 1, 1, 1, 32, 1, 1, 1, 1, 1, 1, 1, 33, 1, 34, 3, 1,
+ 0, 1, 2, 3, 4, 5, 4, 6, 4, 6, 4, 7, 4, 8, 1, 6, 4, 6, 4, 6, 9, 6, 1, 10,
+ 1, 11, 12, 13, 14, 1, 15, 16, 17, 18, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 20, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 21, 1, 1, 22, 1, 1, 1, 1,
+ 23, 1, 1, 1, 1, 24, 25, 26, 27, 28, 29, 1, 30, 31, 1, 32, 33, 34, 1, 35,
+ 1, 1, 1, 1, 1, 1, 36, 37, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 38, 1, 1, 1, 1, 39, 1, 1, 1, 1, 1, 1, 1, 40,
+ 1, 41, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1293,8 +1439,9 @@ pub const DIACRITIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 35, 36, 37, 38, 1,
- 39, 40, 1, 1, 1, 41, 42, 43, 44, 45, 1, 46, 47, 48, 1, 49, 1, 50, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 42,
+ 43, 44, 45, 1, 46, 47, 1, 1, 1, 48, 49, 50, 51, 52, 1, 53, 54, 55, 1, 56,
+ 1, 57, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1306,27 +1453,28 @@ pub const DIACRITIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 51, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 52, 1, 1, 1, 53, 54, 55, 56,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 58, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 59, 1, 1, 1, 60, 61, 62, 63,
],
tree2_level2: &[
- 0x3000000, 0, 0x7FFFFFF800000000, 0x1000000000000000, 0x20000001E2000,
- 0x2000, 0xE000000000002000, 0x1800000000000000, 0x400, 0x5F80, 0x1F00,
- 0xC2A0000003000000, 0xDC, 0x40, 0x680000000000000, 0xC00BF80, 0x200FFE00,
- 0xE00000000000000, 0x9FE0000000000000, 0x3FFF000000000000,
- 0x10000000000000, 0xFF80000000010, 0xC0000000000, 0xC0000000000000,
+ 0x3000000, 0, 0xFF000000, 0x7FFFFFF80007FE00, 0x1000000000000000,
+ 0x20000001E2000, 0x2000, 0xE000000000002000, 0x202000, 0x1800000000000000,
+ 0x400, 0x5F80, 0x400000000000000, 0x1F00, 0xC2A0000003000000, 0xDC, 0x40,
+ 0x680000000000000, 0x3E1800000000, 0xC00BF80, 0xE0000000, 0x300000,
+ 0x200FFE00, 0xE00000000000000, 0x9FE0000000000000, 0x7FFF000000000000,
+ 0xFFE, 0x10000000000000, 0xFF80000000010, 0xC0000000000, 0xC0000000000000,
0x3F00000000000000, 0x39021FFFFFF0000, 0xFFFFF00000000000, 0x7FFFFFFFFFF,
- 0xE3E000000000FFF0, 0xA000000000000000, 0x6000E000E000E003,
+ 0xFFE000000000FFF0, 0xA000000000000000, 0x6000E000E000E003,
0x3800000000000, 0x800000000000, 0xFC0000000000, 0x1E000000,
- 0xB000800000000000, 0x30000000, 0x3000000000000, 0x3FF800000, 0x100,
+ 0xB000800000000000, 0x30000000, 0x3000000000000, 0x3FFFFFFFF, 0x700,
0x300000000000000, 0x3FFFF00000010, 0x780000000000, 0x80000,
0x8000000000000, 0x2000000001, 0x3800000000000000, 0x8000000000000000,
- 0x40000000000007, 0xF8000000, 0x300000000000, 0x40000000, 0xFFFF00000000,
- 0x4000000000000000, 0x1000000000001, 0xC0000000, 0x800000000,
+ 0x40000000000007, 0xE00F8000000, 0x300000000000, 0x40000000,
+ 0xFFFF00000000, 0x4000000000000000, 0x1000000000001, 0xC0000000,
+ 0x800000000,
],
tree3_level1: &[
- 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 4, 2, 5, 6, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1340,45 +1488,55 @@ pub const DIACRITIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 5, 0, 6, 7, 0, 8, 9, 0, 0,
- 10, 11, 12, 0, 0, 0, 13, 0, 14, 0, 0, 15, 16, 15, 0, 17, 0, 18, 0, 0, 0,
- 5, 0, 0, 0, 0, 0, 0, 0, 19, 20, 21, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 22, 23,
+ 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5, 6, 0, 0, 7, 8, 0, 9, 10, 0, 11, 12, 0,
+ 0, 13, 14, 15, 0, 0, 0, 16, 0, 17, 0, 0, 18, 19, 18, 0, 20, 0, 21, 0, 0,
+ 0, 8, 0, 0, 0, 22, 23, 0, 1, 24, 25, 26, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0,
+ 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 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, 24, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 26, 27, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 35, 0, 0, 0, 0, 0,
+ 0, 0, 36, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 38, 39,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
+ 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0x100000000, 0x6000000000, 0xFC00000000, 0x1FFC0, 0x600000000000000,
- 0x18000000000000, 0x8000000000000, 0x1C01, 0x60000000000000,
- 0x60000000000, 0x1000000000000000, 0x1F1FC000002000, 0x44, 0xC,
- 0x8000000000000000, 0x1, 0xC0000000000000, 0x80000000000,
+ 0, 0x100000000, 0x7FDFFFFFFFFFFBF, 0x6000000000, 0xFC00000000, 0x1FFC0,
+ 0x3C, 0x1000000000040, 0x600000000000000, 0x18000000000000,
+ 0x8000000000000, 0x1C01, 0x60000000000000, 0x60000000000,
+ 0x1000000000000000, 0x1F1FC000002000, 0x44, 0xC, 0x8000000000000000, 0x1,
+ 0xC0000000000000, 0x80000000000, 0x6000000000000000, 0x8,
0x10000000000000, 0x80, 0x2000000, 0x34, 0x800000, 0x1F000000000000,
- 0xFFFF8000, 0xF807E38000000000, 0x3C0000000FE7, 0x7F0000, 0x770,
+ 0x7F000000000000, 0xFFFF8000, 0x3000000000000, 0x6FEF000000000000,
+ 0xFFFF3FFFFFFFFFFF, 0x7F, 0xF807E38000000000, 0x3C0000000FE7,
+ 0x400000000000, 0xF00000000000, 0x7F0000, 0x770,
],
};
-pub const EXTENDER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
+pub const EMOJI: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree1_level1: &[
- 0, 0, 0x80000000000000, 0, 0, 0, 0, 0, 0, 0, 0, 0x30000, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0x1, 0, 0, 0, 0, 0, 0x400000000000000,
+ 0x3FF040800000000, 0, 0x420000000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree2_level1: &[
0, 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, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4,
- 0, 0, 0, 0, 0, 5, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0,
+ 3, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 6, 0, 0, 0, 7, 0, 0, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1396,9 +1554,6 @@ pub const EXTENDER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
- 0, 13, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1411,15 +1566,20 @@ pub const EXTENDER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree2_level2: &[
- 0, 0x40, 0x400, 0x8, 0x8000000000, 0x40000000000000, 0x800000000000000,
- 0x3E000000000020, 0x60000000, 0x7000000000000000, 0x200000, 0x1000,
- 0x4000008000, 0x1000000000000, 0x18000020000000,
+ 0, 0x1000000000000000, 0x200, 0x200000400000000, 0x60003F00000,
+ 0x1000C000000, 0x70FFE0000008000, 0x4, 0x400C0000000000,
+ 0x7800000000000001, 0x700C44D2132401F, 0xC8000169800FFF05,
+ 0x60030C831AFC0000, 0x27BF0600001AC130, 0x1801022054BF24, 0x1800B85090,
+ 0x8001000200E00000, 0x30000000000000, 0x180000E0, 0x210000,
+ 0x2001000000000000, 0x2800000,
],
tree3_level1: &[
- 0, 1, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1434,18 +1594,466 @@ pub const EXTENDER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 2, 0, 3, 4, 5, 6, 7, 0,
+ 0, 8, 9, 10, 11, 9, 9, 9, 12, 13, 14, 15, 16, 9, 17, 9, 18, 0, 0, 0, 19,
+ 0, 0, 0, 0, 20, 21, 9, 9, 0, 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree3_level3: &[
+ 0, 0x10, 0x8000, 0xC003000000000000, 0x7FE4000, 0xFFFFFFC000000000,
+ 0x7FC800004000006, 0x30000, 0xFFFFFFF3FFFFFFFF, 0xFFFFFFFFFFFFFFFF,
+ 0xFFFFFFFFCECFFFFF, 0xFFB9FFFFFFFFFFFF, 0xBFFFFFFFFFFFFFFF,
+ 0x3FFFFFFFFFFFFFFF, 0x7F980FFFFFF7E00, 0x1006013000613C80,
+ 0xFC08810A700E001C, 0xFFFF, 0x1FF91A3FE0E7F83F, 0x10FFF00000000,
+ 0xF7FFFFFFFFFFF000, 0xFFFFFFFFFFFFFFBF, 0x1F1F000000000000,
+ 0x7FF1FFFFFFF007F, 0x7F00FF03FF003F,
+ ],
+};
+
+pub const EMOJI_COMPONENT: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
+ tree1_level1: &[
+ 0x3FF040800000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree2_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree2_level2: &[
+ 0, 0x2000, 0x800000000, 0x8000,
+ ],
+ tree3_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ ],
+ tree3_level2: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0,
+ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree3_level3: &[
+ 0, 0xFFFFFFC000000000, 0xF800000000000000, 0xF000000000000,
+ 0xFFFFFFFF00000000, 0xFFFFFFFFFFFFFFFF,
+ ],
+};
+
+pub const EMOJI_MODIFIER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
+ tree1_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree2_level1: &[
+ ],
+ tree2_level2: &[
+ ],
+ tree3_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ ],
+ tree3_level2: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
+ ],
+ tree3_level3: &[
+ 0, 0xF800000000000000,
+ ],
+};
+
+pub const EMOJI_MODIFIER_BASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
+ tree1_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree2_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 2, 3,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree2_level2: &[
+ 0, 0x20000000, 0x200000000000000, 0x3C00,
+ ],
+ tree3_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ ],
+ tree3_level2: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 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, 2, 0, 3, 4, 0, 0, 5, 6, 0, 0, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0,
+ 10, 11, 12, 13, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ ],
+ tree3_level3: &[
+ 0, 0x20, 0x1C9C, 0x11FFFFC00001FFCC, 0x400000280EE, 0x430000000000000,
+ 0x610000, 0xF8E0, 0x70000800000000, 0x1001, 0x73FF0040FF009000,
+ 0x80000000000000, 0xB60000000000000, 0x3FFEE000, 0x7F000000000038,
+ ],
+};
+
+pub const EMOJI_PRESENTATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
+ tree1_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree2_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 4, 5, 6, 7, 8,
+ 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree2_level2: &[
+ 0, 0xC000000, 0x91E0000000000, 0x6000000000000000, 0x300000,
+ 0x80000000000FFF00, 0x60000C0200080000, 0x242C040000104030, 0x10000000C20,
+ 0xB85000, 0x8001000000E00000, 0x18000000, 0x210000,
+ ],
+ tree3_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
+ ],
+ tree3_level2: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 2, 0, 0, 3, 4, 5, 6, 0,
+ 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 13, 19, 13, 20, 0, 0, 0,
+ 21, 0, 0, 0, 0, 22, 23, 13, 13, 0, 24, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree3_level3: &[
+ 0, 0x10, 0x8000, 0x7FE4000, 0xFFFFFFC000000000, 0x77C800004000002,
+ 0x30000, 0xFFBFE001FFFFFFFF, 0xDFFFFFFFFFFFFFFF, 0xFFFFFFFF000FFFFF,
+ 0xFF11FFFF000F87FF, 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFD,
+ 0xFFFFFFFFFFFFFFFF, 0x9FFFFFFFFFFFFFFF, 0x3FFFFFFFFFFFFFFF,
+ 0x40000FFFFFF7800, 0x1000600000, 0xF800000000000000, 0xFFFF,
+ 0x1FF01800E0E7103F, 0x10FFF00000000, 0xF7FFFFFFFFFFF000,
+ 0xFFFFFFFFFFFFFFBF, 0x1F1F000000000000, 0x7FF1FFFFFFF007F,
+ 0x7F00FF03FF003F,
+ ],
+};
+
+pub const EXTENDED_PICTOGRAPHIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
+ tree1_level1: &[
+ 0, 0, 0x420000000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree2_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 0,
+ 3, 0, 4, 0, 0, 0, 0, 0, 5, 0, 6, 7, 0, 0, 0, 8, 0, 0, 9, 10, 11, 12, 13,
+ 12, 14, 15, 16, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 18, 19, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ ],
+ tree2_level2: &[
+ 0, 0x1000000000000000, 0x200, 0x200000400000000, 0x60003F00000,
+ 0x1000C000000, 0x100, 0x70FFE0000008000, 0x4, 0x400C0000000000,
+ 0x7800000000000001, 0xFFFFFFFFFFF7FFBF, 0xFFFFFFFFFFFFFFFF,
+ 0xFFFFFFFFFFFF003F, 0x1801022057FF3F, 0xF800B85090, 0x8001000200E00000,
+ 0x30000000000000, 0x180000E0, 0x210000, 0x2001000000000000, 0x2800000,
+ ],
+ tree3_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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,
],
+ tree3_level2: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 3, 4, 5, 6, 7, 1,
+ 1, 1, 1, 1, 8, 1, 1, 1, 1, 9, 10, 1, 1, 1, 11, 1, 1, 0, 12, 0, 13, 14, 15,
+ 16, 1, 17, 18, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 9,
+ ],
tree3_level3: &[
- 0, 0x20000000, 0x1C0, 0x1000000, 0xC, 0x300000000, 0x70,
+ 0, 0xFFFFFFFFFFFFFFFF, 0x80000000E000, 0xC003F00000000000,
+ 0xFFFFE00007FE4000, 0x3FFFFFFFFF, 0xF7FC80000400FFFE, 0xFFFFFFFFFFFFFE00,
+ 0x7FFFFFFFFFFFFFF, 0x3FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFC0, 0xFFFF,
+ 0xFFF0000000000000, 0xFFFFFFFFFFE00000, 0xF000, 0xFC00FF00,
+ 0xFFFFC0000000FF00, 0xF7FFFFFFFFFFF000, 0xFFFFFFFFFFFFFFBF,
+ ],
+};
+
+pub const EXTENDER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
+ tree1_level1: &[
+ 0, 0, 0x80000000000000, 0, 0, 0, 0, 0, 0, 0, 0, 0x30000, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0x1, 0, 0, 0, 0, 0, 0x400000000000000,
+ ],
+ tree2_level1: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 0, 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, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12,
+ 0, 13, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
+ ],
+ tree2_level2: &[
+ 0, 0x200000, 0x40, 0x400, 0x8, 0x8000000000, 0x40000000000000,
+ 0x800000000000000, 0x3E000000000020, 0x60000000, 0x7000000000000000,
+ 0x1000, 0x4000008000, 0x1000000000000, 0x18000020000000,
+ ],
+ tree3_level1: &[
+ 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2,
+ ],
+ tree3_level2: &[
+ 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
+ ],
+ tree3_level3: &[
+ 0, 0x6, 0x20000000, 0x1C0, 0x1000000, 0xC, 0xB00000000,
+ 0x3000000000000000, 0x70,
],
};
@@ -1458,7 +2066,7 @@ pub const GRAPHEME_BASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0xFCFF000000000000, 0xFFFFFFFBFFFFD7F0, 0xFFFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFC07,
0xFFFFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFFF, 0xFFFFFFFFFE7FFFFF,
- 0x400000000000E7FF, 0x1F87FFFFFF0049, 0xFFFFFFFFC800FFC0,
+ 0x400000000000E7FF, 0x1F87FFFFFF0049, 0xFFFFFFFFE800FFC0,
0xFFFEFFFF000007FF, 0xFFFFFFFFFFFFFFFF, 0xFFFFC260403FFFFF,
0xFFFFFFFD3FFF, 0xFFFFFFFFFFFFE000, 0x2003FFFFFFFFF, 0xC7F007FFFFFFFFFF,
],
@@ -1466,19 +2074,19 @@ pub const GRAPHEME_BASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 36, 36,
36, 36, 37, 38, 39, 40, 41, 42, 43, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 44, 45, 46, 47, 48, 49, 50, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59, 3,
- 60, 61, 62, 63, 64, 65, 66, 67, 36, 36, 36, 3, 36, 36, 36, 36, 68, 69, 70,
- 71, 72, 73, 74, 3, 36, 36, 75, 36, 36, 36, 36, 36, 36, 36, 36, 36, 76, 77,
+ 36, 44, 45, 46, 47, 48, 49, 50, 45, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, 61, 62, 63, 64, 65, 66, 67, 68, 36, 36, 36, 60, 36, 36, 36, 36, 69,
+ 70, 71, 72, 73, 74, 75, 76, 36, 36, 77, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 78, 79, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 80, 81, 36, 36, 36, 36,
+ 82, 83, 84, 85, 86, 36, 87, 88, 89, 36, 36, 36, 90, 91, 92, 93, 36, 94,
+ 36, 95, 96, 97, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 36, 36, 78, 79, 80, 81, 82, 36, 83, 84, 85,
- 86, 87, 36, 88, 89, 90, 36, 36, 36, 91, 92, 93, 94, 36, 95, 36, 96, 97,
- 82, 36, 36, 98, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 52, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
@@ -1496,11 +2104,10 @@ pub const GRAPHEME_BASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 99, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 36, 36, 36, 36, 36, 36, 36, 100, 101, 36, 36, 36, 36, 102, 103, 104,
- 105, 36, 36, 106, 107, 108, 109, 36, 110, 111, 112, 113, 114, 115, 116,
- 117, 118, 119, 120, 36, 121, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 98, 99, 36, 36, 36, 36, 100,
+ 101, 102, 103, 36, 36, 36, 104, 105, 106, 36, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 55, 36, 117, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
@@ -1509,62 +2116,63 @@ pub const GRAPHEME_BASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
- 36, 97, 122, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 36, 36, 36, 36, 36, 123, 36, 124, 125,
- 126, 36, 127, 36, 36, 36, 36, 36, 128, 129, 130, 131, 132, 36, 133, 93,
- 36, 134, 135,
+ 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
+ 36, 36, 36, 96, 118, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
+ 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 36, 36, 36, 36, 36, 119, 36,
+ 120, 121, 122, 36, 123, 36, 36, 36, 36, 36, 36, 124, 125, 126, 127, 36,
+ 128, 92, 36, 129, 130,
],
tree2_level2: &[
- 0x7FFF0110043FFFFF, 0x7FF41FFFFFF, 0x3FDFFFFF00000000, 0,
+ 0x7FFF0110043FFFFF, 0xFFFF07FF41FFFFFF, 0xFFFFFFFF00007FFF, 0x3FF,
0xEBFFFFFFFFFFFFF8, 0xFFFFFFF3FF01DE01, 0xA3C5FDFFFFF99FED,
0x3FFFFFC3B0005981, 0xC36DFDFFFFF987E8, 0x5CFFC05E000001,
0xE3EDFDFFFFFBBFE8, 0x203FFC300011A01, 0x23EDFDFFFFF99FEC,
0xFFFFC3B0001981, 0x83FFC718D63DC7E8, 0x7FFFFC000011DC6,
- 0x23FFFDFFFFFDDFEE, 0xFF00FFC30700001E, 0x63EFFDFFFFFDDFFD,
- 0x6FFC340000D9B, 0xA7FFFFFFFFFDDFEC, 0xFFFFFFC3FF70DDC1,
+ 0x23FFFDFFFFFDDFEE, 0xFF80FFC32700001E, 0x63EFFDFFFFFDDFFD,
+ 0x6FFC360000D9B, 0xA7FFFFFFFFFDDFFC, 0xFFFFFFC3FF70DDC1,
0x2FFBFFFFFC7FFFEC, 0x1CFFC07F03007F, 0x800DFFFFFFFFFFFE, 0xFFF807F,
- 0x200DECAEFEF02596, 0xF3FF005F, 0xFD5FFFFFFCFFFFFF, 0x80001FFFFFFFFEFF,
+ 0x200DFFAFFFFFF7D6, 0xF3FF005F, 0xFD5FFFFFFCFFFFFF, 0x80001FFFFFFFFEFF,
0xC000000000001F20, 0x7FFDFBF, 0x99021FFFFFFFFFFF, 0xFFE1FFFE3CFFFFFF,
0xFFFFFFFFDFFFDF9B, 0xFFFFFFFFFFFF20BF, 0xFFFFFFFFFFFFFFFF,
0xFFFFFFFF3D7F3DFF, 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D,
0xFFFFFFFFFF3DFFFF, 0x1FFFFFFF07FFFFFF, 0xFFFFFFFF03FFFFFF,
0x3F3FFFFFFFFFFFFF, 0xFFFFFFFF1FFFFFFF, 0x1FFFFFFFFFFFFFF,
- 0x63FFFF0003DFFF, 0x1DFFF0003FFFF, 0xC04FFFFFFFFFFFFF, 0x3FF03FF1FF001BF,
+ 0x73FFFF8023FFFF, 0x1DFFF0003FFFF, 0xC04FFFFFFFFFFFFF, 0x3FF03FF1FF001BF,
0xFFFFFFFF03FF07FF, 0xFFFF05FFFFFFFF9F, 0x3FFFFFFFFFFFFF,
0x1FB0E787FFFFFFF, 0x1F3FFFFFFFFFF1, 0xFFFF0FFFFFFFFFFF,
0xFFFFFFFFC7FF03FF, 0xFFFFFFFFC67FFFFF, 0x7E01A00BFFFFF, 0x3FFF03FF03FF,
- 0xE82FFFFFFFFFFFF0, 0x1FF007FFFFFF0FFB, 0xFFFFC4C3FFFFFFFC,
+ 0, 0xE80FFFFFFFFFFFF0, 0x7FF007FFFFFF1FFB, 0xFFFFC4C3FFFFFFFC,
0xF00C5CBFFFFFFFFF, 0xF8300FFFFFFFFFFF, 0xFFFFFFFFFFFFE3FF,
- 0xE7FFFFFFFFFF01FF, 0xEFDE02000800FF, 0xFFFFFFFF3F3FFFFF,
+ 0xE7FFFFFFFFFF01FF, 0x4EFDE02000800FF, 0xFFFFFFFF3F3FFFFF,
0x3FFFFFFFAAFF3F3F, 0xFFDFFFFFFFFFFFFF, 0x7FDCFFFFEFCFFFDF,
- 0xFFFF80FFFFFF07FF, 0xFFF30000FFFFFFFF, 0xFFFFFFFF1FFF7FFF,
+ 0xFFFF80FFFFFF07FF, 0xFFF30000FFFFFFFF, 0xFFFFFFFF1FFF7FFF, 0x1,
0xFFFFFFFFFFFF0FFF, 0x7FFFFFFFFF, 0xFFFFFFFF000007FF, 0xFFCFFFFFFFFFFFFF,
- 0xFFFFFFFFFF3FFFFF, 0x7FFFFFFFFFFFFDFF, 0xFFFF7FFFFFFFFFFF,
- 0xFFFFFFFF7FFFFFFF, 0xFE0C7FFFFFFFFFFF, 0xFFFF20BFFFFFFFFF,
- 0x180FFFFFFFFFF, 0x7F7F7F7F007FFFFF, 0x7F7F7F7F, 0x7FFF,
+ 0xFFFFFFFFFFBFFFFF, 0xFE0C7FFFFFFFFFFF, 0xFFFF20BFFFFFFFFF,
+ 0x180FFFFFFFFFF, 0x7F7F7F7F007FFFFF, 0x7F7F7F7F, 0x3FFFFFFF,
0xFFFFFFFFFBFFFFFF, 0xFFFFFFFFFFFFF, 0xFFF0000003FFFFF,
0xFFFF03FFFFFFFFFF, 0xFFFFFFFFFFFFFFFE, 0xFFFFFFFFF87FFFFF,
- 0xFFFEFFFFFFFFFFE0, 0x7FFFFFFFFFF7FFF, 0xFFFF000FFFFFFFFF,
- 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF, 0xFFFFFFFFFFFF1FFF,
- 0xFFFFFFFFFFFF007F, 0xFFFFFFFFFFF, 0xC0087FFFFFFFFFFF, 0xFFFFFFFF3FFFFFFF,
- 0xFCFFFFFFFFFFFF, 0x3FFFFFFFFFFFFFF, 0xFF80000000000000,
- 0x3FF0F9FFFFFF7BB, 0xFFFFFFFFFFFFFF, 0x7FFC000003FFC00F,
- 0xFFFFC03FFFFFFFFF, 0x1FFFFFFF800C007F, 0xEC37FFFFFFFFFFF8,
- 0x7FFFFFDFC3FFBFFF, 0x1981FFFFFFFFFF, 0xEFFFFFFFF3FF2FF7,
- 0x3E62FFFFFFFFFFFF, 0x3FCFFFF8000005, 0xFFFF7F7F007E7E7E,
- 0xFFFF003FFFFFFFFF, 0x3FF1EDFFFFFFFFF, 0xFFFFFFFFFFFF87F,
+ 0xFFFEFFFFFFFFFFE0, 0xFFFFFFFFFFFF7FFF, 0xFFFF000FFFFFFFFF,
+ 0xFFFFFFFF7FFFFFFF, 0xFFFFFFFFFFFF1FFF, 0xFFFFFFFFFFFF007F, 0xFFFFFFFFFFF,
+ 0xC0087FFFFFFFFFFF, 0xFFFFFFFF3FFFFFFF, 0xFCFFFFFFFFFFFF,
+ 0xFFFC000003EB07FF, 0x3FF0F9FFFFFF7BB, 0xFFFFFFFFFFFFFF,
+ 0x7FFC000003FFC00F, 0xFFFFC03FFFFFFFFF, 0x1FFFFFFF800C007F,
+ 0xCC37FFFFFFFFFFF8, 0x7FFFFFDFC3FFBFFF, 0x1981FFFFFFFFFF,
+ 0xEFFFFFFFF3FF2FF7, 0x3E62FFFFFFFFFFFF, 0x3FCFFFF8000005,
+ 0xFFFF7F7F007E7E7E, 0x3FF1EDFFFFFFFFF, 0xFFFFFFFFFFFF87F,
0xFFFF3FFFFFFFFFFF, 0x3FFFFFF, 0x5F7FFFFFA0F8007F, 0xFFFFFFFFFFFFFFDB,
- 0xFFFFFFFFFFF80003, 0xFFFFFFFFFFFF0000, 0xFFFFFFFFFFFCFFFF,
- 0x3FFF0000000000FF, 0xFFFF000003FF0000, 0xFFDF0F7FFFF7FFFF,
- 0x1FFFFFFFFFFFFFFF, 0x7FFFFFFF3FFFFFFF, 0x30007F7F1CFCFCFC,
+ 0xFFFFFFFFFFF80007, 0xFFFFFFFFFFFCFFFF, 0xFFFF0000000080FF,
+ 0xFFFF000003FF0000, 0xFFDF0F7FFFF7FFFF, 0x1FFFFFFFFFFFFFFF,
+ 0x7FFFFFFF3FFFFFFF, 0x30007F7F1CFCFCFC,
],
tree3_level1: &[
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 12, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 13, 14, 15, 7, 16, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 11, 12, 13, 14, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 15, 16, 17, 7, 18, 19, 7, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
@@ -1573,100 +2181,114 @@ pub const GRAPHEME_BASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
],
tree3_level2: &[
0, 1, 2, 3, 4, 2, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 2, 2, 14, 15, 16, 17,
- 7, 7, 2, 2, 2, 2, 18, 19, 7, 7, 20, 21, 22, 23, 24, 7, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 7, 2, 34, 35, 36, 37, 7, 7, 7, 7, 38, 7, 7, 16, 39, 7, 7,
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 7, 49, 50, 51, 52, 7, 7, 53, 54, 55,
- 56, 7, 7, 57, 58, 59, 60, 61, 62, 63, 7, 7, 7, 64, 7, 65, 66, 7, 7, 7, 7,
- 67, 68, 69, 70, 7, 7, 7, 7, 71, 72, 73, 7, 74, 75, 76, 7, 7, 7, 7, 77, 7,
- 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 78, 7, 2, 79, 2, 2, 2,
- 80, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 81, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 18, 7, 2, 2, 2, 2, 19, 20, 21, 7, 22, 23, 24, 25, 26, 7, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 7, 2, 36, 37, 38, 39, 7, 7, 7, 7, 40, 41, 7, 16, 42,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 7, 54, 55, 56, 57, 7, 7, 58,
+ 59, 60, 61, 7, 7, 62, 63, 64, 65, 66, 67, 68, 69, 7, 7, 70, 7, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, 7, 7, 7, 7, 81, 82, 83, 7, 84, 85, 86, 7, 7,
+ 7, 7, 87, 7, 7, 88, 89, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 90, 7,
+ 2, 91, 2, 2, 2, 92, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 93, 37,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 94, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 82, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 69, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2,
- 2, 2, 2, 70, 83, 7, 84, 85, 86, 87, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 88,
- 7, 2, 89, 90, 91, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 2, 2, 2, 2, 2, 2, 2, 2, 80, 95, 96, 97, 98, 99, 100, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 2, 101, 7, 2, 102, 103, 104, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 92, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 35, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 93, 94, 2, 2, 2, 2, 2, 95, 7, 7,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 58, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 105, 36, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 106, 2, 2, 2, 2, 107, 108, 2, 2, 2, 2, 2, 109, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 96, 97, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 2, 2, 2, 98, 99, 100, 101, 102, 2, 103, 7, 104, 2, 105, 7, 7, 2, 106,
- 107, 108, 109, 110, 2, 2, 2, 2, 111, 2, 2, 2, 2, 112, 2, 2, 2, 2, 2, 2, 2,
- 2, 113, 114, 115, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 110, 111, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 116, 2, 117, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 118, 119, 7, 7, 7, 7, 7, 120, 121, 122, 123, 7, 7, 7, 7, 124, 2,
- 125, 126, 127, 124, 128, 129, 130, 131, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 132, 2, 133, 2, 134, 135, 136, 137, 7, 138, 139, 140,
- 141, 7, 142, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 143, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 93, 2, 92, 2, 2, 2, 112, 113, 114,
+ 115, 116, 2, 117, 7, 118, 2, 119, 7, 7, 2, 120, 121, 122, 123, 124, 2, 2,
+ 2, 2, 125, 2, 2, 2, 2, 126, 2, 2, 2, 2, 2, 2, 2, 2, 127, 128, 129, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 130, 7, 7, 7, 7, 7, 7, 7,
+ 131, 132, 7, 7, 7, 7, 133, 134, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 135, 2, 2, 2, 136, 2, 137, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 138, 139, 7, 140, 7, 7, 7, 141, 142, 143, 144, 7, 7, 7, 7, 145, 2, 146,
+ 147, 2, 2, 148, 149, 150, 151, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 152, 2, 153, 2, 154, 155, 156, 157, 7, 2, 2, 2, 2, 2, 158, 159,
+ 160, 2, 2, 161, 162, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 31, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 119, 2, 2, 2,
- 144, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 80, 2, 2, 2, 163, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 145, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 146, 7, 7, 7,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 164, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 165, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 166,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 167, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2,
- 2, 2, 2, 147, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
],
tree3_level3: &[
0xB7FFFF7FFFFFEFFF, 0x3FFF3FFF, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFF,
- 0xFF8FFFFFFFFFFF87, 0x10FFF7FFF, 0x1FFFFFFFFFFF0000, 0,
+ 0xFF8FFFFFFFFFFF87, 0x11FFF7FFF, 0x1FFFFFFFFFFF0000, 0,
0xFFFFFFFF1FFFFFFF, 0xFFFFFFE0001FFFF, 0xFFFFE00FFFFFFFFF,
0x3FFFFFFFFF07FF, 0xFFFFFFFFBFFFFFFF, 0x3FFF0F, 0xFFFF03FF3FFFFFFF,
- 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF, 0x800FFFFFFFFF, 0x7FFFFFFFFFFFFF,
- 0xFF003FFFFF, 0x91BFFFFFFFFFFD3F, 0xFFFFFFFFFFBFFFFF, 0xFF807FFFFFFF,
+ 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF, 0xF7FF800FFFFFFFFF,
+ 0x1BFBFFFBFFB7F7FF, 0x7FFFFFFFFFFFFF, 0xFF003FFFFF, 0x7FDFFFFFFFFFFBF,
+ 0x91BFFFFFFFFFFD3F, 0xFFFFFFFFFFBFFFFF, 0xFF807FFFFFFF,
0xF837FFFF00000000, 0x83FFFFFF8FFFFFFF, 0xF0FFFFFFFFFFFFFF,
0xFFFFFFFFFFFCFFFF, 0x3FFFFFFEEF0001, 0xFFFFFFFF01FF01FF, 0xFFFFFFFF,
0x7FF81FFFFFFFFF, 0xFE3FFFFFFFFFFFFF, 0xFF07FFFFFF3FFFFF, 0xFE001E03FFFF,
0x1FF, 0x7FFFFFFFFFFFF, 0xFC07FFFFFFFFFFFF, 0x3FF000FFFFFFFFF,
- 0x7FFFFFFF00000000, 0x3FE003F, 0xFFFFFFFFFFFFFD, 0xFFFFFFFC3F80,
+ 0x7FFFFFFF00000000, 0x323FFFFFFFFFF, 0xFFFF000003FE003F,
+ 0xFFFF0000000003C3, 0x7FFFFF00000FFF, 0xFFFFFFFFFFFFFD, 0x26FFFFFFFC3F80,
0xD987FFFFFFFFFFFC, 0x3FF01FFFFFF0003, 0xFFC0107FFFFFFFF8,
- 0x77FFFFFFFF007F, 0x803FFFFFFFFFFFFC, 0x1FFFFEFFFF21FF,
+ 0x77FFFFFFFF00FF, 0x803FFFFFFFFFFFFC, 0x1FFFFEFFFF61FF,
0x3F2C7FFFFFFBFFFF, 0xFFFF03FFBFFFBD7F, 0x3FF00077FFFFFFF,
- 0xA3EDFDFFFFF99FEC, 0xFE001399E, 0xFFFFFFFFFFFFFF, 0x2BFFFFA3,
+ 0xA3EDFDFFFFF99FEC, 0xFE001399E, 0xFFFFFFFFFFFFFF, 0x3AFFFFFA3,
0x5A06FFFFFFFFFFFF, 0x3FF00F2, 0x4F037FFFFFFFFFFF, 0xFFFFFFE,
- 0x5807FFFFFFFFFFFF, 0x1FFF03FF001E, 0x40D7FFFFFFFFFF, 0x3FF,
- 0xFFFF004307FFFFFF, 0x9007FFFFFFFFFFF, 0xFFFFFFFF00000000,
- 0x8007FFFFFFFFFFFF, 0x8607FFFFFFFFF801, 0xFFFFFFFFF181007F, 0x7FC8003CF,
+ 0x5807FFFFFFFFFFFF, 0x1FFF03FF001E, 0x340D7FFFFFFFFFF, 0x3FF,
+ 0xFFFF004307FFFFFF, 0x7F, 0x9007FFFFFFFFFFF, 0xFFFFFFFF00000000,
+ 0x8007FFFFFFFFFFFF, 0xA1BEFFFFFF6FF27F, 0x3FF0077, 0xFFFFFCFF00000000,
+ 0x1EF00FFFFF, 0x8607FFFFFFFFF801, 0xFFFFFFFFF181007F, 0xFFFF0007FC8003FF,
0x1FFFFFFFFFFFFFF, 0x4000FFFFFFFFFDFF, 0xFFFF1FFFFFFF003F,
0x1202000000FFFF, 0x1FFFFFFFFFB7F, 0xFFFFFDBF03FF0040, 0x3FF01587FFF,
- 0x1E7FFFF00000000, 0x3FFFFFF, 0x1F7FFFFFFFFFFF, 0xF, 0x7FFFFFFFFFFF, 0x7F,
- 0xC3FF7FFFFFFF, 0x203FFFFFFF0000, 0xFF80FFFFFFFFFFFF, 0xE0FFFFFBFBFF003F,
- 0xFFFF, 0x7FFFFFF, 0x7FFFFFFFFFFF001F, 0xFFF80000, 0x300000000,
- 0x3FFFFFFFFFFFF, 0x7FFFFFFF, 0xFFFF000000000000, 0xFFFFFFFFFFFFFFF,
+ 0x1E7FFFF00000000, 0x1000000000000, 0x8003FFFFFFFFFFFF, 0x3FFFFFF,
+ 0x1F7FFFFFFFFFFF, 0xF, 0xFFFFFFFFFFFF0000, 0x7FFFFFFFFFFF,
+ 0xFFFFC3FF7FFFFFFF, 0x7FFFFFFFFFFFFFFF, 0x203FFFFFFF03FF,
+ 0xFF80FFFFFFFFFFFF, 0xE0FFFFFBFBFF003F, 0xFFFF, 0x7FFFFFF,
+ 0xFFFFFFFFFFFF07FF, 0xFFF800FF, 0x3000F00000000, 0x3FFFFF,
+ 0x6FEF000000000000, 0x7FFFFFFFF, 0xFFFF00F000070000, 0xFFFFFFFFFFFFFFF,
0x1FFF07FFFFFFFFFF, 0x93FF01FF, 0x3FFFFFFFFFFFFF, 0xFFFFFE7FFFFFFFFF,
- 0x3C5FFFFFFFFF, 0xFFFFC3FFFFFFF018, 0x1FFFFFFFFFF, 0x23, 0xFFFFF00000000,
+ 0x3C5FFFFFFFFF, 0xFFFFC3FFFFFFF018, 0x7FFFFFFFFFF, 0x23, 0xFFFFF00000000,
0x1FFFFFF007FFFFF, 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF,
0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F,
0xFFFFFF3FFFFFFFFF, 0xFFFFFFFFFFFFCFFF, 0x780000000000000,
- 0xFFDFE00000000000, 0xFEF, 0xFF9F, 0xC3FF000F, 0xFFFE000000000000,
- 0x1FFFFFFFFFFFFF, 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84,
- 0xFFFFBEE0FFFFBFF, 0x3000000000000, 0xFFFF0FFFFFFFFFFF,
- 0xFFFE7FFF000FFFFF, 0x3FFFFFFFFEFFFE, 0xFFFFFFFFFFFF1FFF, 0x1FFFFFFFFFFF,
- 0xFFFFFFC000000000, 0xFFFFFFFFFFF0007, 0x3F000301FF, 0x3FF1FFF001FFFFF,
- 0xFFFFFFFFFFFFF, 0x1FFFFFF, 0xFFFFFFFFFFFF0FFF, 0xFFFFFFFF03FF00FF,
- 0x3FFFFFFF00FF, 0x7FFFFFFFFFFF0FFF, 0xF479FFFFFFFFFFFF, 0x3FF0007FFFFFFFF,
- 0xFFFFFFFFFFFF0007, 0x3FFF00000000, 0x7FFFFF, 0xFFFFFFFF3FFFFFFF,
- 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF,
+ 0xFFDFE00000000000, 0xFEF, 0x7FFFFFFF, 0x3F801FFFFFFFFFFF, 0xC3FF,
+ 0x3FFFFFFF0000, 0x83FF0FFFFFFFFFFF, 0x7FFF6F7F00000000, 0xFF9F,
+ 0xC3FF080F, 0xFFFE000000000000, 0x1FFFFFFFFFFFFF, 0x3FFFFFFFFFFFFFFE,
+ 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0x3000000000000,
+ 0xFFFF0FFFFFFFFFFF, 0xFFFE7FFF000FFFFF, 0x3FFFFFFFFEFFFE, 0x3FFFFFFFFFFF,
+ 0xFFFFFFC000000000, 0xFFFFFFFFFFF0007, 0x3F000301FF, 0x1FFF1FFFE0FFFFFF,
+ 0xFFFFFFFFFFFFF, 0x10FFF01FFFFFF, 0xFFFFFFFFFFFF0FFF, 0xFFFFFFFF03FF00FF,
+ 0x33FFFFFFF00FF, 0x1F1F3FFF000FFFFF, 0x7FF1FFFFFFF007F, 0x7F00FF03FF003F,
+ 0xFFFFFFFFFFF7FFFF, 0x3FF0000000007FF, 0xFFFFFFFF3FFFFFFF,
+ 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF, 0x7FF,
],
};
@@ -1679,69 +2301,84 @@ pub const GRAPHEME_EXTEND: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree2_level1: &[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 2, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 33, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 34, 35, 36, 37,
- 38, 2, 39, 2, 40, 2, 2, 2, 41, 42, 43, 2, 44, 45, 46, 47, 48, 2, 2, 49, 2,
- 2, 2, 50, 2, 2, 2, 2, 2, 2, 2, 2, 51, 2, 2, 52, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 53, 2, 54, 2, 55, 2, 2, 2, 2, 2, 2,
- 2, 2, 56, 2, 57, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 58, 59, 60, 2, 2, 2, 2, 61, 2, 2, 62, 63, 64, 65, 66, 67, 68, 69, 70,
- 2, 2, 2, 71, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 72, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 73, 2, 2, 2, 2, 2, 59, 2,
+ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 36, 37, 38, 39, 40, 34, 41, 34, 42, 34, 34, 34, 43, 44, 45,
+ 46, 47, 48, 49, 50, 51, 34, 34, 52, 34, 34, 34, 53, 34, 34, 34, 34, 34,
+ 34, 34, 34, 54, 34, 34, 55, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 56, 34, 57, 34, 58, 34, 34, 34, 34, 34, 34, 34, 34, 59, 34, 60, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 61, 62, 63, 34, 34, 34, 34, 64, 34, 34, 65, 66, 67, 68, 69, 70, 71, 72,
+ 73, 34, 34, 34, 74, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 75, 34, 34,
+ 34, 34, 34, 34, 34, 34, 34, 34, 34, 76, 34, 34, 34, 34, 34, 62, 34,
],
tree2_level2: &[
- 0x3EEFFBC00000, 0xE000000, 0, 0xFFFFFFFBFFF80000, 0x1400000000000007,
- 0xC00FE21FE, 0x5000000000000002, 0x4000000C0080201E, 0x1000000000000006,
- 0x23000000023986, 0xFC00000C000021BE, 0xD000000000000002, 0xC00C0201E,
- 0x4000000000000004, 0x802001, 0xC000000000000011, 0xC00603DC1,
- 0x9000000000000002, 0xC00603044, 0x5800000000000003, 0xC0080201E,
- 0x805C8400, 0x7F2000000000000, 0x7F80, 0x1BF2000000000000, 0x3F00,
- 0x2A0000003000000, 0x7FFE000000000000, 0x1FFFFFFFFEFFE0DF, 0x40,
- 0x66FDE00000000000, 0x1E0001C3000000, 0x20002064, 0xE0000000,
- 0x1C0000001C0000, 0xC0000000C0000, 0x3FB0000000000000, 0x200FFE40, 0x3800,
- 0x20000000060, 0xE04018700000000, 0x9800000, 0x9FF81FE57F400000,
- 0x7FFF000000000000, 0x17D000000000000F, 0xFF80000000004, 0x3B3C00000003,
- 0x3A34000000000, 0xCFF00000000000, 0x31021FDFFF70000, 0xFBFFFFFFFFFFFFFF,
- 0x1000, 0x1FFFFFFFF0000, 0x3800000000000, 0x8000000000000000,
- 0xFFFFFFFF00000000, 0xFC0000000000, 0x6000000, 0x3FF7800000000000,
- 0xC0000000, 0x3000000000000, 0x6000000844, 0x8003FFFF00000030,
- 0x3FC000000000, 0x3FF80, 0x13C8000000000007, 0x2000000000,
- 0x667E0000000000, 0x1000000000001008, 0xC19D000000000000,
- 0x40300000000002, 0x212000000000, 0x40000000, 0xFFFF0000FFFF,
+ 0x3EEFFBC00000, 0xE000000, 0xFF000000, 0xFFFFFFFBFFFFFC00,
+ 0x1400000000000007, 0xC00FE21FE, 0x5000000000000002, 0x4000000C0080201E,
+ 0x1000000000000006, 0x23000000023986, 0xFC00000C000021BE,
+ 0xD000000000000002, 0xC00E0201E, 0x4000000000000004, 0x802001,
+ 0xD000000000000011, 0xC00603DC1, 0x9000000000000002, 0xC00603044,
+ 0x5800000000000003, 0xC0080201E, 0x2, 0x805C8400, 0x7F2000000000000,
+ 0x7F80, 0x1FF2000000000000, 0x3F00, 0x2A0000003000000, 0x7FFE000000000000,
+ 0x1FFFFFFFFEFFE0DF, 0x40, 0x66FDE00000000000, 0x1E0001C3000000,
+ 0x20002064, 0, 0xE0000000, 0xC0000001C0000, 0xC0000000C0000,
+ 0x3FB0000000000000, 0x200FFE40, 0xB800, 0x20000000060, 0xE04018700000000,
+ 0x9800000, 0x9FF81FE57F400000, 0xFFFF000000000000, 0x7FFF,
+ 0x17F000000000000F, 0xFF80000000004, 0x3B3C00000003, 0x3A34000000000,
+ 0xCFF00000000000, 0x31021FDFFF70000, 0xFFFFFFFFFFFFFFFF, 0x1000,
+ 0x1FFFFFFFF0000, 0x3800000000000, 0x8000000000000000, 0xFFFFFFFF00000000,
+ 0xFC0000000000, 0x6000000, 0x3FF7800000000000, 0xC0000000,
+ 0x3000000000000, 0x106000000844, 0x8003FFFF00000030, 0x3FC000000000,
+ 0x3FF80, 0x33C8000000000007, 0x2000000000, 0x667E0000000000,
+ 0x1000000000001008, 0xC19D000000000000, 0x40300000000002, 0x212000000000,
+ 0x40000000, 0xFFFF0000FFFF,
],
tree3_level1: &[
- 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 2, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 5, 6, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1749,48 +2386,53 @@ pub const GRAPHEME_EXTEND: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 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,
],
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 3, 0, 0, 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, 0, 0, 5, 0, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15,
- 0, 0, 16, 17, 18, 0, 0, 19, 20, 21, 22, 0, 0, 23, 24, 25, 26, 27, 0, 28,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 0, 0, 0, 0, 0, 33, 0, 34, 0,
- 35, 36, 37, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 7, 0, 0, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 0, 0, 19, 20, 21, 0, 0, 22, 23, 24, 25, 0, 0, 26, 27, 28, 29, 30, 0,
+ 31, 0, 0, 0, 32, 0, 0, 0, 33, 34, 0, 35, 36, 37, 38, 0, 0, 0, 0, 0, 39, 0,
+ 40, 0, 41, 42, 43, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,
+ 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 0, 0, 45, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 53, 0, 0, 53, 53, 53,
- 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52,
+ 0, 0, 0, 0, 0, 0, 0, 53, 54, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 58, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 46, 0,
+ 0, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 62, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, 0, 0, 65, 65, 65, 66, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
],
tree3_level3: &[
0, 0x2000000000000000, 0x100000000, 0x7C0000000000000, 0x870000000000F06E,
- 0x6000000000, 0xF000000000, 0x1FFC0, 0xFF00000000000002,
- 0x800000000000007F, 0x678000000000003, 0x1FEF8000000007, 0x8000000000000,
- 0x7FC0000000000003, 0x1E00, 0x40D3800000000000, 0x7F880000000,
- 0x5800000000000003, 0x1F1FC000800001, 0xFF00000000000000, 0x4000005C,
- 0xA5F9000000000000, 0xD, 0xB03C800000000000, 0x30000001,
- 0xA7F8000000000000, 0x1, 0xBF280000000000, 0xFBCE0000000,
- 0x6FF800000000000, 0x79F80000000007FE, 0xE7E0080, 0x37FFC00,
- 0xBF7F000000000000, 0x6DFCFFFFFC0000, 0xB47E000000000000, 0xBF, 0xA30000,
- 0x18000000000000, 0x1F000000000000, 0x7F000000000000, 0x78000, 0x60000000,
- 0xF807C3A000000000, 0x3C0000000FE7, 0x1C, 0xF87FFFFFFFFFFFFF,
- 0x201FFFFFFFFFFF, 0xFFFEF8000010, 0x7DBF9FFFF7F, 0x7F0000, 0x7F0,
- 0xFFFFFFFF00000000, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF,
+ 0x6000000000, 0xF000000000, 0x180000000000, 0x1FFC0, 0x3C,
+ 0xFF00000000000002, 0x801900000000007F, 0x678000000000003, 0x4,
+ 0x1FEF8000000007, 0x8000000000000, 0x7FC0000000000003, 0x9E00,
+ 0x40D3800000000000, 0x7F880000000, 0x5800000000000003, 0x1F1FC000800001,
+ 0xFF00000000000000, 0x4000005C, 0xA5F9000000000000, 0xD,
+ 0xB03C800000000000, 0x30000001, 0xA7F8000000000000, 0x1, 0xBF280000000000,
+ 0xFBCE0000000, 0x6FF800000000000, 0x5801000000000000, 0x8, 0x10CF00000,
+ 0x79F80000000007FE, 0xE7E0080, 0x37FFC00, 0xBF7F000000000000,
+ 0x6DFCFFFFFC0000, 0xB47E000000000000, 0xBF, 0xA30000, 0x18000000000000,
+ 0x1F000000000000, 0x7F000000000000, 0x8000, 0x78000, 0x1000000000,
+ 0x60000000, 0xFFFF3FFFFFFFFFFF, 0x7F, 0xF807C3A000000000, 0x3C0000000FE7,
+ 0x1C, 0xF87FFFFFFFFFFFFF, 0x201FFFFFFFFFFF, 0xFFFEF8000010, 0x7DBF9FFFF7F,
+ 0x400000000000, 0xF00000000000, 0x7F0000, 0x7F0, 0xFFFFFFFF00000000,
+ 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF,
],
};
@@ -1801,7 +2443,7 @@ pub const GRAPHEME_LINK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree2_level1: &[
0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 2, 1, 0, 3, 4,
- 0, 0, 0, 0, 0, 5, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 0, 0, 5, 0, 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, 7, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0,
0, 0, 5, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1843,9 +2485,9 @@ pub const GRAPHEME_LINK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree2_level2: &[
0, 0x2000, 0x1800000000000000, 0x400, 0x400000000000000, 0x10,
- 0x600000000000000, 0x10000000100000, 0x40000, 0x100000000, 0xC0000000000,
- 0xC000000000000, 0x8000000000000000, 0x40, 0x80000, 0x1, 0x40000000000000,
- 0x200000000000,
+ 0x600000000000000, 0x10000000300000, 0x40000, 0x100000000, 0xC0000000000,
+ 0xC000000000000, 0x8000000000000000, 0x100000000040, 0x80000, 0x1,
+ 0x40000000000000, 0x200000000000,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1865,16 +2507,16 @@ pub const GRAPHEME_LINK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, 3, 0, 4, 0, 0, 5, 6, 0, 0,
7, 0, 8, 0, 0, 0, 9, 0, 9, 0, 0, 1, 0, 1, 0, 10, 0, 11, 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 12, 13, 14, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 15, 16, 0, 0, 0,
+ 0, 12, 0, 0, 13, 14, 15, 16, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 17, 18, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0x8000000000000000, 0x8000000000000040, 0x200000000000000,
+ 0, 0x8000000000000000, 0x8001000000000040, 0x200000000000000,
0x18000000000000, 0x1, 0x20000000000000, 0x40000000000, 0x2000, 0x4,
- 0x40000000000000, 0x80000000000, 0x10000000000000, 0x80, 0x2000000, 0x30,
- 0x800000,
+ 0x40000000000000, 0x80000000000, 0x6000000000000000, 0x100000000,
+ 0x10000000000000, 0x80, 0x2000000, 0x30, 0x800000,
],
};
@@ -2130,16 +2772,16 @@ pub const ID_CONTINUE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 4, 32, 33, 34, 4, 4, 4, 4, 4,
35, 36, 37, 38, 39, 40, 41, 42, 4, 4, 4, 4, 4, 4, 4, 4, 43, 44, 45, 46,
47, 4, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 4, 61, 4, 62,
- 63, 64, 65, 66, 4, 4, 4, 67, 4, 4, 4, 4, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 79, 80, 4, 81, 82, 83, 84, 85, 60, 60, 60,
- 60, 60, 60, 60, 60, 86, 42, 87, 88, 89, 4, 90, 91, 60, 60, 60, 60, 60, 60,
- 60, 60, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 63, 64, 65, 66, 4, 4, 4, 4, 4, 4, 4, 4, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 4, 4, 4, 79, 80, 81, 82, 83, 78, 78, 78,
+ 78, 78, 78, 78, 78, 84, 42, 85, 86, 87, 4, 88, 89, 78, 78, 78, 78, 78, 78,
+ 78, 78, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 52, 60, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 78, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
@@ -2152,158 +2794,176 @@ pub const ID_CONTINUE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 92, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 93, 94, 4, 4, 4, 4, 95, 96, 4, 97, 98, 4, 99, 100, 101, 62,
- 4, 102, 103, 104, 4, 105, 106, 107, 4, 108, 109, 110, 4, 111, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 90, 91, 4, 4, 4, 4, 92, 93, 4, 94, 95, 4, 96, 97, 98, 62, 4,
+ 99, 100, 101, 4, 102, 103, 104, 4, 105, 106, 107, 4, 108, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 112, 113, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 4, 4, 4, 4, 4, 103, 4, 114, 115, 116, 97, 117, 4, 4,
- 4, 4, 118, 119, 120, 121, 122, 123, 4, 124, 125, 126, 127, 128,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 109, 110, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 4, 4, 4, 4, 4, 100, 4, 111, 112, 113, 94, 114, 4, 4, 4, 4,
+ 115, 116, 117, 118, 119, 120, 4, 121, 122, 123, 124, 125,
],
tree2_level2: &[
- 0x3FFFFFFFFFFF, 0x7FF0FFFFFFF, 0x3FDFFFFF00000000, 0xFFFFFFFBFFF80000,
- 0xFFFFFFFFFFFFFFFF, 0xFFFEFFCFFFFFFFFF, 0xF3C5FDFFFFF99FEF,
- 0x5003FFCFB080799F, 0xD36DFDFFFFF987EE, 0x3FFFC05E023987,
- 0xF3EDFDFFFFFBBFEE, 0xFE00FFCF00013BBF, 0xF3EDFDFFFFF99FEE,
- 0x2FFCFB0C0399F, 0xC3FFC718D63DC7EC, 0xFFC000813DC7, 0xE3FFFDFFFFFDDFFF,
- 0xFFCF07603DDF, 0xF3EFFDFFFFFDDFEF, 0x6FFCF40603DDF, 0xFFFFFFFFFFFDDFEF,
- 0xFC00FFCF80F07DDF, 0x2FFBFFFFFC7FFFEC, 0xCFFC0FF5F847F,
- 0x7FFFFFFFFFFFFFE, 0x3FF7FFF, 0x3BFFECAEFEF02596, 0xF3FF3F5F,
- 0xC2A003FF03000001, 0xFFFE1FFFFFFFFEFF, 0x1FFFFFFFFEFFFFDF, 0x40,
- 0xFFFFFFFFFFFF03FF, 0xFFFFFFFF3FFFFFFF, 0xF7FFFFFFFFFF20BF,
+ 0x3FFFFFFFFFFF, 0xFFFF07FF0FFFFFFF, 0xFFFFFFFFFF007EFF,
+ 0xFFFFFFFBFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFEFFCFFFFFFFFF,
+ 0xF3C5FDFFFFF99FEF, 0x5003FFCFB080799F, 0xD36DFDFFFFF987EE,
+ 0x3FFFC05E023987, 0xF3EDFDFFFFFBBFEE, 0xFE00FFCF00013BBF,
+ 0xF3EDFDFFFFF99FEE, 0x2FFCFB0E0399F, 0xC3FFC718D63DC7EC, 0xFFC000813DC7,
+ 0xF3FFFDFFFFFDDFFF, 0xFFCF27603DDF, 0xF3EFFDFFFFFDDFEF, 0x6FFCF60603DDF,
+ 0xFFFFFFFFFFFDDFFF, 0xFC00FFCF80F07DDF, 0x2FFBFFFFFC7FFFEE,
+ 0xCFFC0FF5F847F, 0x7FFFFFFFFFFFFFE, 0x3FF7FFF, 0x3FFFFFAFFFFFF7D6,
+ 0xF3FF3F5F, 0xC2A003FF03000001, 0xFFFE1FFFFFFFFEFF, 0x1FFFFFFFFEFFFFDF,
+ 0x40, 0xFFFFFFFFFFFF03FF, 0xFFFFFFFF3FFFFFFF, 0xF7FFFFFFFFFF20BF,
0xFFFFFFFF3D7F3DFF, 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D,
0xFFFFFFFFFF3DFFFF, 0x3FE00E7FFFFFF, 0xFFFFFFFF0000FFFF,
0x3F3FFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFE, 0xFFFF9FFFFFFFFFFF,
- 0xFFFFFFFF07FFFFFE, 0x1FFC7FFFFFFFFFF, 0x1FFFFF001FDFFF, 0xDDFFF000FFFFF,
- 0x3FF308FFFFF, 0xFFFFFFFF03FF3800, 0x1FFFFFFFFFFFFFF, 0xFFFF07FFFFFFFFFF,
+ 0xFFFFFFFF07FFFFFE, 0x1FFC7FFFFFFFFFF, 0x1FFFFF803FFFFF, 0xDDFFF000FFFFF,
+ 0x3FF308FFFFF, 0xFFFFFFFF03FFB800, 0x1FFFFFFFFFFFFFF, 0xFFFF07FFFFFFFFFF,
0x3FFFFFFFFFFFFF, 0xFFF0FFF7FFFFFFF, 0x1F3FFFFFFFFFC0, 0xFFFF0FFFFFFFFFFF,
- 0x7FF03FF, 0xFFFFFFFF0FFFFFFF, 0x9FFFFFFF7FFFFFFF, 0x3FFF008003FF03FF, 0,
- 0xFF80003FF0FFF, 0xFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFF, 0x3FFFFFFFFFFFE3FF,
- 0xE7FFFFFFFFFF01FF, 0x3FFFFFFFFF70000, 0xFBFFFFFFFFFFFFFF,
+ 0x7FF03FF, 0xFFFFFFFF0FFFFFFF, 0x9FFFFFFF7FFFFFFF, 0xBFFF008003FF03FF,
+ 0x7FFF, 0xFF80003FF1FFF, 0xFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFF,
+ 0x3FFFFFFFFFFFE3FF, 0xE7FFFFFFFFFF01FF, 0x7FFFFFFFFF70000,
0xFFFFFFFF3F3FFFFF, 0x3FFFFFFFAAFF3F3F, 0x5FDFFFFFFFFFFFFF,
0x1FDC1FFF0FCF1FDC, 0x8000000000000000, 0x8002000000100001, 0x1FFF0000,
- 0x1FFE21FFF0000, 0xF3FFFD503F2FFC84, 0xFFFFFFFF000043E0, 0x1FF,
- 0xFFFF7FFFFFFFFFFF, 0xFFFFFFFF7FFFFFFF, 0xFF81FFFFFFFFF,
- 0xFFFF20BFFFFFFFFF, 0x800080FFFFFFFFFF, 0x7F7F7F7F007FFFFF,
- 0xFFFFFFFF7F7F7F7F, 0x1F3EFFFE000000E0, 0xFFFFFFFEFE7FFFFF,
- 0xF7FFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFE0, 0x7FFFFFF00007FFF,
- 0xFFFF000000000000, 0xFFFFFFFFFFFF, 0x1FFF, 0x3FFFFFFFFFFF0000,
+ 0x1FFE21FFF0000, 0xF3FFFD503F2FFC84, 0xFFFFFFFF000043E0, 0x1FF, 0,
+ 0xFF81FFFFFFFFF, 0xFFFF20BFFFFFFFFF, 0x800080FFFFFFFFFF,
+ 0x7F7F7F7F007FFFFF, 0xFFFFFFFF7F7F7F7F, 0x1F3EFFFE000000E0,
+ 0xFFFFFFFEFE7FFFFF, 0xF7FFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFE0,
+ 0xFFFFFFFF00007FFF, 0xFFFF000000000000, 0x1FFF, 0x3FFFFFFFFFFF0000,
0xFFFFFFF1FFF, 0xBFF0FFFFFFFFFFFF, 0x3FFFFFFFFFFFF, 0xFFFFFFFCFF800000,
- 0x3FFFFFFFFFFF9FF, 0xFF80000000000000, 0xFFFFFFFFFF, 0xE8FFFFFF03FF003F,
- 0xFFFF3FFFFFFFFFFF, 0x1FFFFFFF000FFFFF, 0x7FFFFFFF03FF8001,
- 0x7FFFFFFFFFFFFF, 0xFC7FFFFF03FF3FFF, 0x7CFFFF38000007,
- 0xFFFF7F7F007E7E7E, 0xFFFF003FF7FFFFFF, 0x3FF37FFFFFFFFFF,
- 0xFFFF000FFFFFFFFF, 0xFFFFFFFFFFFF87F, 0x3FFFFFF, 0x5F7FFDFFE0F8007F,
- 0xFFFFFFFFFFFFFFDB, 0xFFFFFFFFFFF80000, 0x3FFFFFFFFFFFFFFF,
- 0xFFFFFFFFFFFF0000, 0xFFFFFFFFFFFCFFFF, 0xFFF0000000000FF,
- 0x18FFFF0000FFFF, 0xFFDF00000000E000, 0x1FFFFFFFFFFFFFFF,
- 0x87FFFFFE03FF0000, 0xFFFFFFC007FFFFFE, 0x7FFFFFFFFFFFFFFF, 0x1CFCFCFC,
+ 0xFFFFFFFFFFFFF9FF, 0xFFFC000003EB07FF, 0x10FFFFFFFFFF,
+ 0xE8FFFFFF03FF003F, 0xFFFF3FFFFFFFFFFF, 0x1FFFFFFF000FFFFF,
+ 0x7FFFFFFF03FF8001, 0x7FFFFFFFFFFFFF, 0xFC7FFFFF03FF3FFF,
+ 0x7CFFFF38000007, 0xFFFF7F7F007E7E7E, 0xFFFF03FFF7FFFFFF,
+ 0x3FF37FFFFFFFFFF, 0xFFFF000FFFFFFFFF, 0xFFFFFFFFFFFF87F, 0x3FFFFFF,
+ 0x5F7FFDFFE0F8007F, 0xFFFFFFFFFFFFFFDB, 0xFFFFFFFFFFF80000,
+ 0x3FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0000, 0xFFFFFFFFFFFCFFFF,
+ 0xFFF0000000000FF, 0x18FFFF0000FFFF, 0xFFDF00000000E000,
+ 0x1FFFFFFFFFFFFFFF, 0x87FFFFFE03FF0000, 0xFFFFFFC007FFFFFE,
+ 0x7FFFFFFFFFFFFFFF, 0x1CFCFCFC,
],
tree3_level1: &[
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 5, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 12, 13, 14, 7, 15, 16, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 11, 12, 13, 14, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 15, 16, 17, 7, 18, 19, 7, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
],
tree3_level2: &[
0, 1, 2, 3, 4, 5, 4, 6, 4, 4, 7, 8, 9, 10, 11, 12, 2, 2, 13, 14, 15, 16,
- 4, 4, 2, 2, 2, 2, 17, 18, 4, 4, 19, 20, 21, 22, 23, 4, 24, 4, 25, 26, 27,
- 28, 29, 30, 31, 4, 2, 32, 33, 33, 34, 4, 4, 4, 4, 4, 4, 4, 35, 36, 4, 4,
- 2, 37, 3, 38, 39, 40, 2, 41, 42, 4, 43, 44, 45, 46, 4, 4, 2, 47, 2, 48, 4,
- 4, 49, 50, 2, 51, 52, 53, 54, 4, 4, 4, 3, 4, 55, 56, 4, 4, 4, 4, 57, 58,
- 59, 60, 4, 4, 4, 4, 61, 62, 63, 4, 64, 65, 66, 4, 4, 4, 4, 67, 4, 4, 4, 4,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 68, 4, 2, 69, 2, 2, 2, 70, 4, 4,
+ 17, 4, 2, 2, 2, 2, 18, 19, 20, 4, 21, 22, 23, 24, 25, 4, 26, 4, 27, 28,
+ 29, 30, 31, 32, 33, 4, 2, 34, 35, 35, 36, 4, 4, 4, 4, 4, 37, 4, 38, 39,
+ 40, 41, 2, 42, 3, 43, 44, 45, 2, 46, 47, 4, 48, 49, 50, 51, 4, 4, 2, 52,
+ 2, 53, 4, 4, 54, 55, 2, 56, 57, 58, 59, 60, 4, 4, 3, 4, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 57, 4, 4, 4, 4, 70, 71, 72, 4, 73, 74, 75, 4, 4, 4, 4,
+ 76, 4, 4, 77, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 78, 4, 2, 79,
+ 2, 2, 2, 80, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 81, 82, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 79, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 2, 2, 2, 69, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 71, 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, 60, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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,
- 60, 72, 4, 73, 17, 74, 75, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 76,
- 77, 78, 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, 2,
+ 2, 2, 2, 2, 2, 2, 2, 57, 83, 67, 84, 18, 85, 86, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 2, 4, 4, 2, 87, 88, 89, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 79,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 33, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 21, 80, 2, 2, 2, 2, 2, 81, 4, 4, 4, 4,
+ 2, 2, 2, 2, 2, 90, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 91, 34, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 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, 82, 83, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 84, 85, 4, 4, 86, 4, 4, 4, 4, 4, 4, 2, 87, 88, 89, 90, 91, 2,
- 2, 2, 2, 92, 93, 94, 95, 96, 97, 4, 4, 4, 4, 4, 4, 4, 4, 98, 99, 100, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 101, 4, 4, 4,
4, 4, 4, 4, 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, 102, 2, 103, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 104, 105, 106, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 107, 2, 2, 2, 2, 2, 2, 2,
- 2, 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, 92, 2, 2, 2, 2, 93, 94, 2, 2, 2, 2, 2, 95, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 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, 96, 97, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 98, 60, 4, 4, 4, 4, 4, 4, 4, 99, 100, 4, 4, 101, 4, 4,
+ 4, 4, 4, 4, 2, 102, 103, 104, 105, 106, 2, 2, 2, 2, 107, 108, 109, 110,
+ 111, 112, 4, 4, 4, 4, 4, 4, 4, 4, 113, 114, 115, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 23, 4, 4, 4, 116, 4, 4, 4, 117, 118, 4, 4, 4,
+ 4, 119, 120, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 121,
+ 2, 2, 2, 122, 2, 123, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 124, 125, 126, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 127, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 128, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 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, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 57, 2, 2, 2, 11,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 108, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 129, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 109, 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, 2, 2, 2, 2, 2, 130, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 131, 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, 132, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 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, 110, 4, 4, 4, 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, 111, 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, 133,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4,
],
tree3_level3: &[
0xB7FFFF7FFFFFEFFF, 0x3FFF3FFF, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFF, 0,
0x1FFFFFFFFFFFFF, 0x2000000000000000, 0xFFFFFFFF1FFFFFFF, 0x10001FFFF,
0xFFFFE000FFFFFFFF, 0x7FFFFFFFFFF07FF, 0xFFFFFFFF3FFFFFFF, 0x3EFF0F,
- 0xFFFF03FF3FFFFFFF, 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF, 0xFFFFFFFFF,
- 0x7FFFFFFFFFFFFF, 0xFF003FFFFF, 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF,
- 0x7FFFFFFF, 0x37FFFF00000000, 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF,
+ 0xFFFF03FF3FFFFFFF, 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF,
+ 0xF7FF000FFFFFFFFF, 0x1BFBFFFBFFB7F7FF, 0x7FFFFFFFFFFFFF, 0xFF003FFFFF,
+ 0x7FDFFFFFFFFFFBF, 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF, 0x7FFFFFFF,
+ 0x37FFFF00000000, 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF,
0x873FFFFFFEEFF06F, 0x1FFFFFFF00000000, 0x1FFFFFFF, 0x7FFFFFFEFF,
0x3FFFFFFFFFFFFF, 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0x7FFFFFFFFFFFF,
- 0x3FF00FFFFFFFFFF, 0xFFFF00801FFFFFFF, 0x1FFFF, 0x8000FFC00000007F,
- 0x3FF01FFFFFF0000, 0xFFDFFFFFFFFFFFFF, 0x4FFFFFFFFF0070, 0x17FF1E1F,
- 0x40FFFFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F, 0x3FF07FFFFFFFFFF,
- 0xFBEDFDFFFFF99FEF, 0x1F1FCFE081399F, 0x43FF07FF, 0x3FF00BF,
- 0xFF3FFFFFFFFFFFFF, 0x3F000001, 0x3FF0011, 0xFFFFFFFFFFFFFF, 0x3FF,
- 0x3FF0FFFE7FFFFFF, 0xFFFFFFFF00000000, 0x800003FFFFFFFFFF,
- 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0080, 0x23FFFFCF, 0x1FFFFFFFFFFFFFF,
+ 0x3FF00FFFFFFFFFF, 0x31BFFFFFFFFFF, 0xFFFF00801FFFFFFF,
+ 0xFFFF00000001FFFF, 0xFFFF00000000003F, 0x7FFFFF0000001F,
+ 0x803FFFC00000007F, 0x3FF01FFFFFF0004, 0xFFDFFFFFFFFFFFFF,
+ 0x4FFFFFFFFF00F0, 0x17FFDE1F, 0x40FFFFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F,
+ 0x3FF07FFFFFFFFFF, 0xFBEDFDFFFFF99FEF, 0x1F1FCFE081399F, 0x3C3FF07FF,
+ 0x3FF00BF, 0xFF3FFFFFFFFFFFFF, 0x3F000001, 0x3FF0011, 0x1FFFFFFFFFFFFFF,
+ 0x3FF, 0x3FF0FFFE7FFFFFF, 0x7F, 0xFFFFFFFF00000000, 0x800003FFFFFFFFFF,
+ 0xF9BFFFFFFF6FF27F, 0x3FF000F, 0xFFFFFCFF00000000, 0x1BFCFFFFFF,
+ 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0080, 0xFFFF000023FFFFFF,
0xFF7FFFFFFFFFFDFF, 0xFFFC000003FF0001, 0x7FFEFFFFFCFFFF,
0xB47FFFFFFFFFFB7F, 0xFFFFFDBF03FF00FF, 0x3FF01FB7FFF, 0x7FFFFF00000000,
- 0x3FFFFFF, 0x7FFFFFFFFFFF, 0xF, 0x7F, 0x3FF7FFFFFFF, 0x1F3FFFFFFF0000,
- 0xE0FFFFF803FF000F, 0xFFFF, 0x7FFFFFFFFFFF001F, 0xFFFF8000, 0x300000000,
- 0x3FFFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFFFFFFFFFFFF,
- 0x1FFF07FFFFFFFFFF, 0x63FF01FF, 0xF807E3E000000000, 0x3C0000000FE7, 0x1C,
- 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF,
- 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF,
- 0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF,
- 0xFFFFFDFFFFFFFDFF, 0xFFFFFFFFFFFFCFF7, 0xF87FFFFFFFFFFFFF,
- 0x201FFFFFFFFFFF, 0xFFFEF8000010, 0x7DBF9FFFF7F, 0x7F001F, 0x3FF07FF,
- 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0x7FFFFF,
- 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF, 0xFFFFFFFFFFFF,
+ 0x1000000000000, 0x3FFFFFF, 0x7FFFFFFFFFFF, 0xF, 0xFFFFFFFFFFFF0000,
+ 0x1FFFFFFFFFFFF, 0xFFFF03FF7FFFFFFF, 0x1F3FFFFFFF03FF, 0xE0FFFFF803FF000F,
+ 0xFFFF, 0xFFFFFFFFFFFF87FF, 0xFFFF80FF, 0x3001B00000000, 0xFFFFFFFFFFFFFF,
+ 0x3FFFFF, 0x6FEF000000000000, 0x7FFFFFFFF, 0xFFFF00F000070000,
+ 0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF, 0x63FF01FF, 0xFFFF3FFFFFFFFFFF,
+ 0xF807E3E000000000, 0x3C0000000FE7, 0x1C, 0xFFFFFFFFFFDFFFFF,
+ 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF,
+ 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF, 0xF7FFFFFFF7FFFFFD,
+ 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF,
+ 0xFFFFFFFFFFFFCFF7, 0xF87FFFFFFFFFFFFF, 0x201FFFFFFFFFFF, 0xFFFEF8000010,
+ 0x7DBF9FFFF7F, 0x3FFF1FFFFFFFFFFF, 0x43FF, 0x7FFFFFFF0000,
+ 0x3FFFFFFFFFFFFFF, 0x7FFF6F7F00000000, 0x7F001F, 0x3FF0FFF,
+ 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF,
+ 0x3FF000000000000, 0xFFFFFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF,
+ 0x3FFFFFFF, 0x7FF, 0xFFFFFFFFFFFF,
],
};
@@ -2322,100 +2982,103 @@ pub const ID_START: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree2_level1: &[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 23, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 34, 34, 34,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 34, 34, 34, 34, 34, 34, 34, 34, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 3, 61,
- 62, 63, 64, 65, 66, 67, 68, 34, 34, 34, 3, 34, 34, 34, 34, 69, 70, 71, 72,
- 3, 73, 74, 3, 75, 76, 77, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 78, 79, 34, 80, 81, 82, 83, 84, 3, 3, 3, 3, 3, 3, 3, 3, 85, 42, 86, 87,
- 88, 34, 89, 90, 3, 3, 3, 3, 3, 3, 3, 3, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 53, 3, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 91, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 92, 93, 34, 34, 34, 34, 94, 95, 96,
- 91, 97, 34, 98, 99, 100, 48, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 34, 113, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 114, 115, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 34, 34, 34, 34, 34, 116, 34, 117, 118,
- 119, 120, 121, 34, 34, 34, 34, 122, 123, 124, 125, 3, 126, 34, 127, 128,
- 129, 130, 131,
+ 21, 22, 23, 24, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 35, 35,
+ 35, 35, 36, 37, 38, 39, 40, 41, 42, 43, 35, 35, 35, 35, 35, 35, 35, 35,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 3, 58, 59, 60, 30,
+ 61, 62, 63, 64, 65, 66, 67, 68, 35, 35, 35, 30, 35, 35, 35, 35, 69, 70,
+ 71, 72, 30, 73, 74, 30, 75, 76, 77, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 78,
+ 79, 80, 81, 82, 30, 30, 30, 30, 30, 30, 30, 30, 83, 43, 84, 85, 86, 35,
+ 87, 88, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 89, 90, 35, 35, 35, 35, 91, 92,
+ 93, 94, 95, 35, 96, 97, 98, 49, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 35, 111, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 112, 113, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 35, 35, 114, 35, 115, 116,
+ 117, 118, 119, 35, 35, 35, 35, 120, 121, 122, 123, 30, 124, 35, 125, 126,
+ 127, 128, 129,
],
tree2_level2: &[
- 0x110043FFFFF, 0x7FF01FFFFFF, 0x3FDFFFFF00000000, 0, 0x23FFFFFFFFFFFFF0,
- 0xFFFE0003FF010000, 0x23C5FDFFFFF99FE1, 0x10030003B0004000,
- 0x36DFDFFFFF987E0, 0x1C00005E000000, 0x23EDFDFFFFFBBFE0,
- 0x200000300010000, 0x23EDFDFFFFF99FE0, 0x20003B0000000, 0x3FFC718D63DC7E8,
- 0x10000, 0x23FFFDFFFFFDDFE0, 0x307000000, 0x23EFFDFFFFFDDFE1,
- 0x6000340000000, 0x27FFFFFFFFFDDFE0, 0xFC00000380704000,
- 0x2FFBFFFFFC7FFFE0, 0x7F, 0xDFFFFFFFFFFFE, 0x200DECAEFEF02596, 0xF000005F,
- 0x1, 0x1FFFFFFFFEFF, 0x1F00, 0x800007FFFFFFFFFF, 0xFFE1C0623C3F0000,
- 0xFFFFFFFF00004003, 0xF7FFFFFFFFFF20BF, 0xFFFFFFFFFFFFFFFF,
- 0xFFFFFFFF3D7F3DFF, 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D,
- 0xFFFFFFFFFF3DFFFF, 0x7FFFFFF, 0xFFFFFFFF0000FFFF, 0x3F3FFFFFFFFFFFFF,
- 0xFFFFFFFFFFFFFFFE, 0xFFFF9FFFFFFFFFFF, 0xFFFFFFFF07FFFFFE,
- 0x1FFC7FFFFFFFFFF, 0x3FFFF0003DFFF, 0x1DFFF0003FFFF, 0xFFFFFFFFFFFFF,
- 0x10800000, 0xFFFFFFFF00000000, 0x1FFFFFFFFFFFFFF, 0xFFFF05FFFFFFFFFF,
- 0x3FFFFFFFFFFFFF, 0x7FFFFFFF, 0x1F3FFFFFFF0000, 0xFFFF0FFFFFFFFFFF, 0x3FF,
- 0xFFFFFFFF007FFFFF, 0x1FFFFF, 0x8000000000, 0xFFFFFFFFFFFE0, 0xFE0,
+ 0x110043FFFFF, 0xFFFF07FF01FFFFFF, 0xFFFFFFFF00007EFF, 0x3FF,
+ 0x23FFFFFFFFFFFFF0, 0xFFFE0003FF010000, 0x23C5FDFFFFF99FE1,
+ 0x10030003B0004000, 0x36DFDFFFFF987E0, 0x1C00005E000000,
+ 0x23EDFDFFFFFBBFE0, 0x200000300010000, 0x23EDFDFFFFF99FE0,
+ 0x20003B0000000, 0x3FFC718D63DC7E8, 0x10000, 0x23FFFDFFFFFDDFE0,
+ 0x327000000, 0x23EFFDFFFFFDDFE1, 0x6000360000000, 0x27FFFFFFFFFDDFF0,
+ 0xFC00000380704000, 0x2FFBFFFFFC7FFFE0, 0x7F, 0xDFFFFFFFFFFFE,
+ 0x200DFFAFFFFFF7D6, 0xF000005F, 0x1, 0x1FFFFFFFFEFF, 0x1F00, 0,
+ 0x800007FFFFFFFFFF, 0xFFE1C0623C3F0000, 0xFFFFFFFF00004003,
+ 0xF7FFFFFFFFFF20BF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF3D7F3DFF,
+ 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D, 0xFFFFFFFFFF3DFFFF, 0x7FFFFFF,
+ 0xFFFFFFFF0000FFFF, 0x3F3FFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFE,
+ 0xFFFF9FFFFFFFFFFF, 0xFFFFFFFF07FFFFFE, 0x1FFC7FFFFFFFFFF,
+ 0x3FFFF8003FFFF, 0x1DFFF0003FFFF, 0xFFFFFFFFFFFFF, 0x10800000,
+ 0xFFFFFFFF00000000, 0x1FFFFFFFFFFFFFF, 0xFFFF05FFFFFFFFFF,
+ 0x3FFFFFFFFFFFFF, 0x7FFFFFFF, 0x1F3FFFFFFF0000, 0xFFFF0FFFFFFFFFFF,
+ 0xFFFFFFFF007FFFFF, 0x1FFFFF, 0x8000000000, 0xFFFFFFFFFFFE0, 0x1FE0,
0xFC00C001FFFFFFF8, 0x3FFFFFFFFF, 0xFFFFFFFFF, 0x3FFFFFFFFC00E000,
- 0xE7FFFFFFFFFF01FF, 0x63DE0000000000, 0xFFFFFFFF3F3FFFFF,
+ 0xE7FFFFFFFFFF01FF, 0x46FDE0000000000, 0xFFFFFFFF3F3FFFFF,
0x3FFFFFFFAAFF3F3F, 0x5FDFFFFFFFFFFFFF, 0x1FDC1FFF0FCF1FDC,
0x8002000000000000, 0x1FFF0000, 0xF3FFFD503F2FFC84, 0xFFFFFFFF000043E0,
- 0x1FF, 0xFFFF7FFFFFFFFFFF, 0xFFFFFFFF7FFFFFFF, 0xC781FFFFFFFFF,
- 0xFFFF20BFFFFFFFFF, 0x80FFFFFFFFFF, 0x7F7F7F7F007FFFFF, 0x7F7F7F7F,
- 0x1F3E03FE000000E0, 0xFFFFFFFEF87FFFFF, 0xF7FFFFFFFFFFFFFF,
- 0xFFFEFFFFFFFFFFE0, 0x7FFFFFF00007FFF, 0xFFFF000000000000, 0xFFFFFFFFFFFF,
- 0x1FFF, 0x3FFFFFFFFFFF0000, 0xC00FFFF1FFF, 0x80007FFFFFFFFFFF,
- 0xFFFFFFFF3FFFFFFF, 0xFFFFFFFCFF800000, 0x3FFFFFFFFFFF9FF,
- 0xFF80000000000000, 0x7FFFFF7BB, 0xFFFFFFFFFFFFC, 0x68FC000000000000,
- 0xFFFF003FFFFFFC00, 0x1FFFFFFF0000007F, 0x7FFFFFFFFFFF0,
- 0x7C00FFDF00008000, 0x1FFFFFFFFFF, 0xC47FFFFF00000FF7, 0x3E62FFFFFFFFFFFF,
- 0x1C07FF38000005, 0xFFFF7F7F007E7E7E, 0xFFFF003FF7FFFFFF, 0x7FFFFFFFF,
- 0xFFFF000FFFFFFFFF, 0xFFFFFFFFFFFF87F, 0xFFFF3FFFFFFFFFFF, 0x3FFFFFF,
- 0x5F7FFDFFA0F8007F, 0xFFFFFFFFFFFFFFDB, 0x3FFFFFFFFFFFF,
- 0xFFFFFFFFFFF80000, 0x3FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0000,
- 0xFFFFFFFFFFFCFFFF, 0xFFF0000000000FF, 0xFFDF000000000000,
- 0x1FFFFFFFFFFFFFFF, 0x7FFFFFE00000000, 0xFFFFFFC007FFFFFE,
- 0x7FFFFFFFFFFFFFFF, 0x1CFCFCFC,
+ 0x1FF, 0xC781FFFFFFFFF, 0xFFFF20BFFFFFFFFF, 0x80FFFFFFFFFF,
+ 0x7F7F7F7F007FFFFF, 0x7F7F7F7F, 0x1F3E03FE000000E0, 0xFFFFFFFEF87FFFFF,
+ 0xF7FFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFE0, 0xFFFFFFFF00007FFF,
+ 0xFFFF000000000000, 0x1FFF, 0x3FFFFFFFFFFF0000, 0xC00FFFF1FFF,
+ 0x80007FFFFFFFFFFF, 0xFFFFFFFF3FFFFFFF, 0xFFFFFFFFFFFF,
+ 0xFFFFFFFCFF800000, 0xFFFFFFFFFFFFF9FF, 0xFFFC000003EB07FF, 0x7FFFFF7BB,
+ 0xFFFFFFFFFFFFC, 0x68FC000000000000, 0xFFFF003FFFFFFC00,
+ 0x1FFFFFFF0000007F, 0x7FFFFFFFFFFF0, 0x7C00FFDF00008000, 0x1FFFFFFFFFF,
+ 0xC47FFFFF00000FF7, 0x3E62FFFFFFFFFFFF, 0x1C07FF38000005,
+ 0xFFFF7F7F007E7E7E, 0xFFFF03FFF7FFFFFF, 0x7FFFFFFFF, 0xFFFF000FFFFFFFFF,
+ 0xFFFFFFFFFFFF87F, 0xFFFF3FFFFFFFFFFF, 0x3FFFFFF, 0x5F7FFDFFA0F8007F,
+ 0xFFFFFFFFFFFFFFDB, 0x3FFFFFFFFFFFF, 0xFFFFFFFFFFF80000,
+ 0x3FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0000, 0xFFFFFFFFFFFCFFFF,
+ 0xFFF0000000000FF, 0xFFDF000000000000, 0x1FFFFFFFFFFFFFFF,
+ 0x7FFFFFE00000000, 0xFFFFFFC007FFFFFE, 0x7FFFFFFFFFFFFFFF, 0x1CFCFCFC,
],
tree3_level1: &[
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 5, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 12, 13, 14, 7, 15, 16, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 5, 11, 12, 5, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 13, 14, 15, 7, 16, 17, 7, 18, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
@@ -2427,78 +3090,90 @@ pub const ID_START: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
5, 5, 5, 5, 5, 5, 5, 5, 5,
],
tree3_level2: &[
- 0, 1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 7, 8, 9, 10, 11, 2, 2, 12, 13, 14, 15, 4,
- 4, 2, 2, 2, 2, 16, 17, 4, 4, 18, 19, 20, 21, 22, 4, 23, 4, 24, 25, 26, 27,
- 28, 29, 30, 4, 2, 31, 32, 32, 15, 4, 4, 4, 4, 4, 4, 4, 33, 34, 4, 4, 35,
- 4, 36, 37, 38, 39, 40, 41, 42, 4, 43, 20, 44, 45, 4, 4, 5, 46, 47, 48, 4,
- 4, 49, 50, 47, 51, 52, 4, 53, 4, 4, 4, 54, 4, 55, 56, 4, 4, 4, 4, 57, 58,
- 59, 60, 4, 4, 4, 4, 61, 62, 63, 4, 64, 65, 66, 4, 4, 4, 4, 67, 4, 4, 4, 4,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 68, 4, 2, 49, 2, 2, 2, 69, 4, 4,
+ 0, 1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 7, 8, 9, 10, 11, 2, 2, 12, 13, 14, 15,
+ 16, 4, 2, 2, 2, 2, 17, 18, 19, 4, 20, 21, 22, 23, 24, 4, 25, 4, 26, 27,
+ 28, 29, 30, 31, 32, 4, 2, 33, 34, 34, 35, 4, 4, 4, 4, 4, 36, 4, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 4, 50, 22, 51, 52, 4, 4, 5,
+ 53, 54, 55, 4, 4, 56, 57, 54, 58, 59, 4, 60, 61, 4, 4, 62, 4, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 4, 4, 4, 4, 73, 74, 75, 4, 76, 77, 78, 4, 4,
+ 4, 4, 79, 4, 4, 80, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 81, 4, 2,
+ 56, 2, 2, 2, 82, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 83, 84, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 56, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 2, 2, 2, 49, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 70, 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, 61, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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,
- 60, 20, 4, 71, 47, 72, 63, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 73,
- 74, 75, 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,
+ 2, 2, 2, 2, 2, 2, 2, 2, 72, 85, 86, 87, 54, 88, 75, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 2, 4, 4, 2, 89, 90, 91, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 76,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 32, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 20, 77, 2, 2, 2, 2, 2, 78, 4, 4, 4, 4,
+ 2, 2, 2, 2, 2, 2, 92, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 93, 33, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 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, 79, 80, 4, 4, 4, 4, 4, 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, 81, 82, 83, 84, 85, 2, 2,
- 2, 2, 86, 87, 88, 89, 90, 91, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 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, 92, 2, 69, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 93,
- 94, 95, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 96, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 4, 4, 4, 4, 94, 2, 2, 2, 2, 95, 96, 2, 2, 2, 2, 2, 97, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 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, 98, 99, 4, 4, 4, 4, 4, 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, 100, 101, 102, 103, 104, 2, 2,
+ 2, 2, 105, 106, 107, 108, 109, 110, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 22, 4, 4, 4, 4, 4, 4, 4, 111,
+ 112, 4, 4, 4, 4, 87, 62, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 113, 2, 2, 2, 114, 2, 115, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 116, 117, 118, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 119, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 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, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 72, 2, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 97, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 120, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 98, 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, 121, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 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, 122, 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, 123, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 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, 99, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4,
],
tree3_level3: &[
0xB7FFFF7FFFFFEFFF, 0x3FFF3FFF, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFF, 0,
0x1FFFFFFFFFFFFF, 0xFFFFFFFF1FFFFFFF, 0x1FFFF, 0xFFFFE000FFFFFFFF,
0x3FFFFFFFFF07FF, 0xFFFFFFFF3FFFFFFF, 0x3EFF0F, 0xFFFF00003FFFFFFF,
- 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF, 0xFFFFFFFFF, 0x7FFFFFFFFFFFFF,
- 0xFF003FFFFF, 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF, 0x7FFFFFFF,
- 0x37FFFF00000000, 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF, 0x3FFFFFFEEF0001,
+ 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF, 0xF7FF000FFFFFFFFF,
+ 0x1BFBFFFBFFB7F7FF, 0x7FFFFFFFFFFFFF, 0xFF003FFFFF, 0x7FDFFFFFFFFFFBF,
+ 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF, 0x7FFFFFFF, 0x37FFFF00000000,
+ 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF, 0x3FFFFFFEEF0001,
0x1FFFFFFF00000000, 0x1FFFFFFF, 0x1FFFFFFEFF, 0x3FFFFFFFFFFFFF,
- 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0x7FFFFFFFFFFFF, 0xFFFF00801FFFFFFF,
- 0x3F, 0xFFFFFFFFFFFFF8, 0xFFFFFFFFFFF8, 0x1FFFFFF0000, 0x7FFFFFFFF8,
- 0x47FFFFFFFF0010, 0x7FFFFFFFFFFF8, 0x1400001E, 0xFFFFFFBFFFF,
- 0xFFFF01FFBFFFBD7F, 0x23EDFDFFFFF99FE0, 0x3E0010000, 0x780,
- 0xFFFFFFFFFFFF, 0xB0, 0x7FFFFFFFFFFF, 0xF000000, 0x10, 0x7FFFFFFFFFF,
- 0x7FFFFFF, 0xFFFFFFFFFFF, 0xFFFFFFFF00000000, 0x80000000FFFFFFFF,
- 0x407FFFFFFFFF801, 0xFFFFFFFFF0010000, 0x200003CF, 0x1FFFFFFFFFFFFFF,
- 0x7FFFFFFFFDFF, 0xFFFC000000000001, 0xFFFF, 0x1FFFFFFFFFB7F,
- 0xFFFFFDBF00000040, 0x10003FF, 0x7FFFF00000000, 0x3FFFFFF, 0xF, 0x7F,
- 0x3FFFFFFF0000, 0xE0FFFFF80000000F, 0x1001F, 0xFFF80000, 0x300000000,
- 0x3FFFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFFFFFFFFFFFF,
- 0x1FFF07FFFFFFFFFF, 0x3FF01FF, 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF,
- 0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F,
- 0xFFFFFF3FFFFFFFFF, 0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF,
- 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF, 0xFF7, 0x1F, 0xAF7FE96FFFFFFEF,
- 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0x7FFFFF, 0xFFFF0003FFFFFFFF,
- 0x1FFFFFFFF, 0x3FFFFFFF,
+ 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0x7FFFFFFFFFFFF, 0xFFFFFFFFF,
+ 0x303FFFFFFFFFF, 0xFFFF00801FFFFFFF, 0xFFFF00000000003F,
+ 0xFFFF000000000003, 0x7FFFFF0000001F, 0xFFFFFFFFFFFFF8, 0x26000000000000,
+ 0xFFFFFFFFFFF8, 0x1FFFFFF0000, 0x7FFFFFFFF8, 0x47FFFFFFFF0090,
+ 0x7FFFFFFFFFFF8, 0x1400001E, 0xFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F,
+ 0x23EDFDFFFFF99FE0, 0x3E0010000, 0x380000780, 0xFFFFFFFFFFFF, 0xB0,
+ 0x7FFFFFFFFFFF, 0xF000000, 0x10, 0x10007FFFFFFFFFF, 0x7FFFFFF, 0x7F,
+ 0xFFFFFFFFFFF, 0xFFFFFFFF00000000, 0x80000000FFFFFFFF, 0x8000FFFFFF6FF27F,
+ 0x2, 0xFFFFFCFF00000000, 0xA0001FFFF, 0x407FFFFFFFFF801,
+ 0xFFFFFFFFF0010000, 0xFFFF0000200003FF, 0x1FFFFFFFFFFFFFF, 0x7FFFFFFFFDFF,
+ 0xFFFC000000000001, 0xFFFF, 0x1FFFFFFFFFB7F, 0xFFFFFDBF00000040,
+ 0x10003FF, 0x7FFFF00000000, 0x1000000000000, 0x3FFFFFF, 0xF,
+ 0xFFFFFFFFFFFF0000, 0x1FFFFFFFFFFFF, 0xFFFF00007FFFFFFF,
+ 0x7FFFFFFFFFFFFFFF, 0x3FFFFFFF0000, 0xE0FFFFF80000000F, 0x107FF,
+ 0xFFF80000, 0xB00000000, 0xFFFFFFFFFFFFFF, 0x3FFFFF, 0x6FEF000000000000,
+ 0x7FFFFFFFF, 0xFFFF00F000070000, 0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF,
+ 0x3FF01FF, 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF,
+ 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF,
+ 0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF,
+ 0xFFFFFDFFFFFFFDFF, 0xFF7, 0x3F801FFFFFFFFFFF, 0x4000, 0x7FFF6F7F00000000,
+ 0x1F, 0x80F, 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF,
+ 0xFFFFFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF, 0x7FF,
],
};
@@ -2519,7 +3194,7 @@ pub const IDEOGRAPHIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 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, 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, 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, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -2532,7 +3207,7 @@ pub const IDEOGRAPHIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 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,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2546,16 +3221,15 @@ pub const IDEOGRAPHIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 5, 2, 6, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 3, 2, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree2_level2: &[
- 0, 0x70003FE000000C0, 0xFFFFFFFFFFFFFFFF, 0x3FFFFFFFFFFFFF,
- 0xFFFFFFFFFFFF, 0xFFFF3FFFFFFFFFFF, 0x3FFFFFF,
+ 0, 0x70003FE000000C0, 0xFFFFFFFFFFFFFFFF, 0xFFFF3FFFFFFFFFFF, 0x3FFFFFF,
],
tree3_level1: &[
- 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 3, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 4, 5, 6, 1, 7, 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, 1, 2, 3, 0, 0, 4, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 5, 6, 7, 2, 8, 9, 2, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2564,38 +3238,43 @@ pub const IDEOGRAPHIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
],
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 0, 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, 1, 1,
- 1, 1, 1, 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, 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, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1,
- 1, 1, 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, 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, 10, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,
+ 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 5, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 2, 2, 2, 2, 2, 7, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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, 9, 2, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 13, 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, 2, 2, 2, 2, 2, 2, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFFFFFFFFFFFFFFFF, 0x3FFFFFFFFFFFF, 0x7FFFFFFFFFFFF,
- 0xFFFF000000000000, 0xFFFFFFFFFFFFFFF, 0x7FFFFF, 0x1FFFFFFFFFFFFF,
- 0xFFFFFFFF3FFFFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF,
+ 0, 0x1000000000, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFF, 0x3FFFFF, 0x1FF,
+ 0xFFFF000000000000, 0xFFFFFFFFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFFFFFFFFF,
+ 0xFFFFFFFF3FFFFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF, 0x7FF,
],
};
@@ -2773,10 +3452,10 @@ pub const LOWERCASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0xAAAAAAAAAAAAAAAA, 0xAAAAAAAABFEAAAAA, 0xFF00FF003F00FF,
0x3FFF00FF00FF003F, 0x40DF00FF00FF00FF, 0xDC00FF00CF00DC,
0x8002000000000000, 0x1FFF0000, 0x321080000008C400, 0xFFFF0000000043C0,
- 0x10, 0x3FFFFFF0000, 0xFFFF000000000000, 0x3FDA15627FFFFFFF,
+ 0x10, 0x3FFFFFF0000, 0xFFFF000000000000, 0x3FDA1562FFFFFFFF,
0x8501AAAAAAAAA, 0x20BFFFFFFFFF, 0x2AAAAAAAAAAA, 0x3AAAAAAA,
- 0xAAABAAA800000000, 0x95FFAAAAAAAAAAAA, 0x2A082AAAABA50AA,
- 0x700000000000000, 0xFFFF003FF7FFFFFF, 0xF8007F, 0x7FFFFFE,
+ 0xAAABAAA800000000, 0x95FFAAAAAAAAAAAA, 0xAAA082AAAABA50AA,
+ 0x740000002AA050A, 0xFFFF01FFF7FFFFFF, 0xF8007F, 0x7FFFFFE,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -2792,30 +3471,31 @@ pub const LOWERCASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 0, 0, 0, 0, 0,
- 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 2, 0, 3, 0, 0, 4, 0, 0,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 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, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFFFFFF0000000000, 0xFFFF, 0xFFFFFFFFF000000, 0x7FFFFFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFC000000, 0xFFFFDFC000,
- 0xEBC000000FFFFFFC, 0xFFFFFC000000FFEF, 0xFFFFFFC000000F, 0xFFFFFFC0000,
- 0xFC000000FFFFFFC0, 0xFFFFC000000FFFFF, 0xFFFFFFC000000FF, 0xFFFFFFC00000,
- 0x3FFFFFFC00, 0xF0000003F7FFFFFC, 0xFFC000000FDFFFFF, 0xFFFF0000003F7FFF,
- 0xFFFFFC000000FDFF, 0xBF7, 0xFFFFFFFC00000000, 0xF,
+ 0, 0xFFFFFF0000000000, 0xFFFF, 0xFFFFFFFFF000000, 0x1BFBFFFBFF800000,
+ 0x7FDFFFFFFFFFFB9, 0x7FFFFFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF00000000,
+ 0xFFFFFFC000000, 0xFFFFDFC000, 0xEBC000000FFFFFFC, 0xFFFFFC000000FFEF,
+ 0xFFFFFFC000000F, 0xFFFFFFC0000, 0xFC000000FFFFFFC0, 0xFFFFC000000FFFFF,
+ 0xFFFFFFC000000FF, 0xFFFFFFC00000, 0x3FFFFFFC00, 0xF0000003F7FFFFFC,
+ 0xFFC000000FDFFFFF, 0xFFFF0000003F7FFF, 0xFFFFFC000000FDFF, 0xBF7,
+ 0x7FFFFBFF, 0xFFFFFFFC00000000, 0xF,
],
};
@@ -2991,10 +3671,10 @@ pub const OTHER_ALPHABETIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
tree2_level1: &[
0, 1, 1, 2, 3, 4, 5, 6, 5, 7, 5, 8, 5, 9, 10, 11, 12, 13, 5, 13, 12, 14,
15, 16, 17, 18, 19, 18, 1, 20, 21, 1, 22, 23, 24, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 26, 27, 28, 1, 1,
- 29, 1, 30, 1, 1, 1, 31, 32, 1, 1, 33, 34, 35, 36, 37, 1, 1, 38, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 25, 26, 27, 1, 1,
+ 28, 1, 29, 1, 1, 1, 30, 31, 32, 33, 34, 35, 36, 37, 38, 1, 1, 1, 1, 1, 1,
39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 27, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 26, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 41, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -3015,8 +3695,8 @@ pub const OTHER_ALPHABETIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 42, 43, 1, 1, 1, 1, 1, 44, 1, 45, 46, 47, 48, 49, 1, 50, 51, 52, 53, 1, 1,
- 1, 54, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 42, 43, 1, 1, 1, 1, 1, 44, 1, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 1,
+ 1, 1, 55, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -3028,23 +3708,24 @@ pub const OTHER_ALPHABETIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 55, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 56, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
],
tree2_level2: &[
0x1EEFF8C00000, 0, 0xFFFF03F8FFF00000, 0xCC0000000000000F, 0xC00E0DFFF,
0xC00000000000000E, 0xC0080199F, 0x23000000021987, 0x1C00000C00001BBF,
0xC00C0199F, 0xC000000000000004, 0x801DC7, 0xC00000000000000F,
- 0xC00601DDF, 0xC00801DDF, 0xC, 0xC0000FF5F8000, 0x7F2000000000000, 0x2000,
+ 0xC00601DDF, 0xC00801DDF, 0xE, 0xC0000FF5F8000, 0x7F2000000000000, 0x2000,
0x1BF2000000000000, 0xFFFE000000000000, 0x1FFFFFFFFEFFE003,
- 0x797FF80000000000, 0x1E0185C3C00000, 0x3000007C, 0x80000000,
- 0xC0000000C0000, 0xFFC0000000000000, 0x1FF, 0x20000000060,
- 0x1FF0FFF00000000, 0xF800000, 0x1FFFFE7FE00000, 0xFFE000000000001F, 0xF,
- 0x33FE00000007, 0x3FF8000000000, 0x3FFFF000000000, 0xC000000000000,
- 0x1FFF8000000000, 0x3FFFFFFFFFF, 0xFFFFFFFF00000000, 0xFF0000000000000,
- 0xC0000000, 0xF800000000, 0xFFF0000000000003, 0x2F, 0x7C000000000,
- 0x7FF80, 0xFFF000000000000F, 0x7FFE0000000000, 0x3008, 0x419D000000000000,
- 0x20F80000000000, 0x7F800000000, 0x40000000,
+ 0x797FF80000000000, 0x1E3F9DC3C00000, 0x3C00BFFC, 0xC0000000C0000,
+ 0xFFC0000000000000, 0x1FF, 0x20000000060, 0x1FF0FFF00000000, 0xF800000,
+ 0x1FFFFE7FE00000, 0x8000000000000000, 0x7001, 0xFFE000000000001F, 0xF,
+ 0x33FE00000007, 0x3FF8000000000, 0x7FFFF000000000, 0x1FFF8000000000,
+ 0x3FFFFFFFFFF, 0xFFFFFFFF00000000, 0xFF0000000000000, 0xC0000000,
+ 0xF800000804, 0xFFF0000000000003, 0x800000000000002F, 0x7C000000000,
+ 0x7FF80, 0xFFF000000000000F, 0x2000000000, 0x7FFE0000000000,
+ 0x3800000000003008, 0x419D000000000000, 0x20F80000000000, 0x7F800000000,
+ 0x40000000,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 2, 2, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -3062,34 +3743,36 @@ pub const OTHER_ALPHABETIC: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 0, 7, 8, 9, 0, 10, 0,
- 0, 11, 12, 13, 0, 0, 14, 15, 16, 17, 0, 0, 18, 19, 20, 21, 22, 0, 23, 0,
- 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 28, 0, 29, 0,
- 30, 31, 32, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 5, 6, 7, 8, 9, 10, 11, 12, 13,
+ 0, 0, 14, 15, 16, 0, 0, 17, 18, 19, 20, 0, 0, 21, 22, 23, 24, 25, 0, 26,
+ 0, 0, 0, 27, 0, 0, 0, 28, 29, 0, 30, 31, 32, 33, 0, 0, 0, 0, 0, 34, 0, 35,
+ 0, 36, 37, 38, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 16, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 19, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0x7C0000000000000, 0xF06E, 0xF000000000, 0xFF00000000000007, 0x3F,
- 0x1FF000000000004, 0x7FF8000000007, 0x60, 0xFFF8000000000007,
- 0x409FF00000000000, 0x1FF80000000, 0xC00000000000000F, 0xC0080199F,
- 0xFFE0000000000000, 0x3B, 0xFFFF000000000000, 0x3, 0x7F3F800000000000,
- 0x30000000, 0x7FFF000000000000, 0x1, 0x3FF80000000000, 0x7FFE0000000,
- 0x1FFF00000000000, 0x7BE00000000007FE, 0xFFE0000, 0xFFFC00,
- 0x7F7F800000000000, 0x7FFEFFFFFC0000, 0xB47E000000000000, 0x8B, 0x7B7C00,
- 0x78000000000000, 0x7F000000000000, 0x7FFFFFFFFFFE0000, 0x40000000,
- 0x7DBF9FFFF7F, 0x80, 0xFFFF03FFFFFF03FF, 0x3FF,
+ 0, 0x7C0000000000000, 0xF06E, 0xF000000000, 0x180000000000,
+ 0xFF00000000000007, 0x1800000000003F, 0x1FF000000000004, 0x4,
+ 0x7FF8000000007, 0x60, 0xFFF8000000000007, 0xC000, 0x409FF00000000000,
+ 0x1FF80000000, 0xC00000000000000F, 0xC0080199F, 0xFFE0000000000000, 0x3B,
+ 0xFFFF000000000000, 0x3, 0x7F3F800000000000, 0x30000000,
+ 0x7FFF000000000000, 0x1, 0x3FF80000000000, 0x7FFE0000000,
+ 0x1FFF00000000000, 0x19BF000000000000, 0x5, 0x10FCFE0000,
+ 0x7BE00000000007FE, 0xFFE0000, 0xFFFC00, 0x7F7F800000000000,
+ 0x7FFEFFFFFC0000, 0xB47E000000000000, 0x8B, 0x7B7C00, 0x78000000000000,
+ 0xFFFFFFFFFFFE8000, 0x780FF, 0x3000000000000, 0x40000000, 0x7DBF9FFFF7F,
+ 0x80, 0xFFFF03FFFFFF03FF, 0x3FF,
],
};
@@ -3179,10 +3862,10 @@ pub const OTHER_GRAPHEME_EXTEND: &'static ::ucd_trie::TrieSet = &::ucd_trie::Tri
0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 1, 2, 1, 2, 0, 0, 0, 3, 1, 2, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3215,11 +3898,11 @@ pub const OTHER_GRAPHEME_EXTEND: &'static ::ucd_trie::TrieSet = &::ucd_trie::Tri
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,
],
tree2_level2: &[
- 0, 0x4000000000000000, 0x800000, 0x600004, 0x80008000, 0x1000,
- 0xC00000000000, 0xC0000000,
+ 0, 0x4000000000000000, 0x800000, 0x600004, 0x80008000, 0x20000000000000,
+ 0x1000, 0xC00000000000, 0xC0000000,
],
tree3_level1: &[
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3239,17 +3922,17 @@ pub const OTHER_GRAPHEME_EXTEND: &'static ::ucd_trie::TrieSet = &::ucd_trie::Tri
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 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, 2, 0, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 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, 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, 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, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 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,
],
tree3_level3: &[
0, 0x4000000000000000, 0x800000, 0x2001000000000000, 0x800000000000,
- 0x7C02000000000, 0xFFFFFFFF00000000, 0xFFFFFFFFFFFFFFFF,
+ 0x1000000000000, 0x7C02000000000, 0xFFFFFFFF00000000, 0xFFFFFFFFFFFFFFFF,
],
};
@@ -3424,10 +4107,28 @@ pub const OTHER_LOWERCASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0xF0000000,
],
tree3_level1: &[
+ 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1,
],
tree3_level2: &[
+ 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
],
tree3_level3: &[
+ 0, 0x7FDFFFFFFFFFFB9,
],
};
@@ -3718,7 +4419,7 @@ pub const PREPENDED_CONCATENATION_MARK: &'static ::ucd_trie::TrieSet = &::ucd_tr
0x3F, 0, 0, 0x20000000, 0x8000, 0, 0, 0,
],
tree2_level1: &[
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3760,7 +4461,7 @@ pub const PREPENDED_CONCATENATION_MARK: &'static ::ucd_trie::TrieSet = &::ucd_tr
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree2_level2: &[
- 0, 0x400000000,
+ 0, 0x30000, 0x400000000,
],
tree3_level1: &[
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3942,7 +4643,7 @@ pub const REGIONAL_INDICATOR: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSe
pub const SENTENCE_TERMINAL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree1_level1: &[
0x8000400200000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0x200, 0, 0xC0000000, 0, 0, 0x100000, 0x7, 0, 0,
+ 0, 0, 0, 0x200, 0, 0xE0000000, 0, 0, 0x100000, 0x7, 0, 0,
0x200000000000000,
],
tree2_level1: &[
@@ -3952,7 +4653,7 @@ pub const SENTENCE_TERMINAL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
1, 1, 10, 1, 1, 11, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13, 14,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 15, 1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 15, 16, 1, 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -3971,8 +4672,8 @@ pub const SENTENCE_TERMINAL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 17, 1, 1, 1, 1, 18, 1, 1, 19, 1, 1, 1, 1, 1, 20, 1, 18, 21,
- 1, 1, 22, 1, 23, 1, 24, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 18, 1, 1, 1, 1, 19, 1, 1, 20, 1, 1, 1, 1, 1, 21, 1, 19, 22,
+ 1, 1, 23, 1, 24, 1, 25, 1, 1, 1, 26, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -3985,15 +4686,15 @@ pub const SENTENCE_TERMINAL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 26, 1, 1, 27, 28, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 1, 1, 28, 29, 1, 1,
],
tree2_level2: &[
0x6280000000000000, 0, 0x3000000000, 0xC00, 0x18400000000, 0x400000000000,
- 0x60000000000000, 0x208, 0x30, 0xF0000000000, 0xCC000000,
+ 0x60000000000000, 0x208, 0x30, 0xF0000000000, 0x60000000CC000000,
0x1800000000000000, 0xC000000000000000, 0x3000000000000000, 0x380,
- 0x1000400000000000, 0x4, 0x8000000000000000, 0xC000, 0x88000000000000,
- 0xC0000000000000, 0x800000000000, 0x300, 0xE0000000, 0x3000000000000,
- 0x80000000000, 0xC40000, 0x80004002, 0x200000000,
+ 0x1000400000000000, 0x180000, 0x4, 0x8000000000000000, 0xC000,
+ 0x88000000000000, 0xC0000000000000, 0x800000000000, 0x300, 0xE0000000,
+ 0x3000000000000, 0x80000000000, 0xC40000, 0x80004002, 0x200000000,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 2, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -4011,26 +4712,26 @@ pub const SENTENCE_TERMINAL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 4, 5, 0, 6, 0, 7, 8, 0, 9,
- 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 11, 0, 12, 0, 0, 13, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 14, 15, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 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, 2, 3, 0, 0, 4, 5, 6, 0, 7, 0, 8, 9, 0,
+ 10, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 12, 0, 13, 0, 0, 14, 0, 0, 0, 0,
+ 0, 0, 0, 0, 15, 0, 0, 0, 16, 17, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 18, 16, 19, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 20, 18, 21, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xC00000, 0x3E00000, 0x180, 0xC000000000000000, 0x3, 0xE, 0xC0002060,
- 0x1B00000000000000, 0x20000000000, 0x1800, 0xFFFE0C, 0x6,
- 0x7000000000000000, 0xC, 0x18000000, 0x180000000000000, 0xC00000000000,
- 0x20000000000000, 0x10, 0x1000000, 0x80000000, 0x100,
+ 0, 0xC00000, 0x3E00000, 0x3C0, 0x180, 0xC000000000000000, 0x3, 0xE,
+ 0xC0002060, 0x1B00000000000000, 0x20000000000, 0x1800, 0xFFFE0C, 0x6,
+ 0x7000000000000000, 0x50, 0xC, 0x18000000, 0x180000000000000,
+ 0xC00000000000, 0x20000000000000, 0x10, 0x1000000, 0x80000000, 0x100,
],
};
@@ -4105,19 +4806,19 @@ pub const SOFT_DOTTED: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 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, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,
+ 12, 0, 0, 0,
],
tree3_level3: &[
0, 0xC00000000, 0xC00000, 0xC000000000000C00, 0xC000000000000,
0xC000000000, 0xC000000, 0xC000, 0xC000000000000C, 0xC0000000000,
- 0xC0000000, 0xC0000,
+ 0xC0000000, 0xC0000, 0x4000000,
],
};
pub const TERMINAL_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree1_level1: &[
0x8C00500200000000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0x4000000000000000, 0x80, 0, 0, 0, 0, 0, 0, 0, 0x200, 0x8, 0xC8001000, 0,
+ 0x4000000000000000, 0x80, 0, 0, 0, 0, 0, 0, 0, 0x200, 0x8, 0xE8001000, 0,
0, 0x100000, 0x17FF, 0, 0, 0x300000000000000,
],
tree2_level1: &[
@@ -4165,12 +4866,12 @@ pub const TERMINAL_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::Trie
],
tree2_level2: &[
0x7FFF000000000000, 0x40000000, 0, 0x3000000000, 0xC000000, 0x7E100,
- 0xC00, 0x1FE00000000, 0x600000000000, 0x380000000000, 0x60000000000000,
- 0x4700000, 0x33C, 0x30, 0xF0000000000, 0xEC000000, 0xF800000000000000,
- 0xC000000000000000, 0x3000000000000000, 0x380, 0x1000400000000000, 0x5002,
- 0x6, 0xE000, 0xF8000000000000, 0xC0000000000000, 0xC000, 0x800000000000,
- 0xE0000000, 0x3000080000000, 0x80000000000, 0xF70000, 0x8C005002,
- 0x1200000000,
+ 0xC00, 0x1FE00000000, 0x400000000000, 0x380000000000, 0x60000000000000,
+ 0x4700000, 0x33C, 0x30, 0xF0000000000, 0x60000000EC000000,
+ 0xF800000000000000, 0xC000000000000000, 0x3000000000000000, 0x380,
+ 0x1000400000000000, 0x18D002, 0x6, 0xE000, 0xF8000000000000,
+ 0xC0000000000000, 0xC000, 0x800000000000, 0xE0000000, 0x3000080000000,
+ 0x80000000000, 0xF70000, 0x8C005002, 0x1200000000,
],
tree3_level1: &[
0, 1, 2, 3, 3, 3, 4, 3, 3, 3, 3, 5, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
@@ -4188,31 +4889,32 @@ pub const TERMINAL_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::Trie
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 0, 0, 0, 0, 4, 0, 5, 6, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 9, 10, 11, 0, 12, 0, 13, 14,
- 0, 15, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 17, 0, 18, 0, 0, 19, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 10, 11, 12, 0, 13, 0, 14, 15,
+ 0, 16, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 18, 0, 19, 0, 0, 20, 0, 0, 0,
+ 0, 0, 0, 0, 0, 21, 0, 0, 0, 22, 23, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 25, 0, 26, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 0, 0, 0, 0, 27, 0, 28, 29, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 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, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
0, 0x80000000, 0x10000, 0x800000, 0xC00000, 0x3F000000000000,
- 0xFC00000000000000, 0x1E000000, 0x3E00000, 0x3F80, 0xC000000000000000,
- 0x3, 0xE, 0xC0002060, 0x1F00000000000000, 0x20000000000, 0x8003800,
- 0xFFFE3C, 0x6, 0x7000000000000000, 0xC, 0x618000000, 0x200000000000E,
- 0x180000000000000, 0x1F000000000000, 0xC00000000000, 0x20000000000000,
- 0x380000000000000, 0x10, 0x1800000, 0x780,
+ 0xFC00000000000000, 0x1E000000, 0x3E00000, 0x3C0, 0x3F80,
+ 0xC000000000000000, 0x3, 0xE, 0xC0002060, 0x1F00000000000000,
+ 0x20000000000, 0xC003800, 0xFFFE3C, 0x6, 0x7000000000000000, 0x50, 0xC,
+ 0x618000000, 0x200000000000E, 0x180000000000000, 0x1F000000000000,
+ 0xC00000000000, 0x20000000000000, 0x380000000000000, 0x10, 0x1800000,
+ 0x780,
],
};
@@ -4233,7 +4935,7 @@ pub const UNIFIED_IDEOGRAPH: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 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, 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, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -4246,7 +4948,7 @@ pub const UNIFIED_IDEOGRAPH: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4260,15 +4962,15 @@ pub const UNIFIED_IDEOGRAPH: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree2_level2: &[
- 0, 0xFFFFFFFFFFFFFFFF, 0x3FFFFFFFFFFFFF, 0xFFFFFFFFFFFF, 0x39A801AC000,
+ 0, 0xFFFFFFFFFFFFFFFF, 0x39A801AC000,
],
tree3_level1: &[
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, 2, 3, 4, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 2, 3, 4, 1, 5, 0, 1, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4295,11 +4997,13 @@ pub const UNIFIED_IDEOGRAPH: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFFFFFFFFFFFFFFFF, 0x7FFFFF, 0x1FFFFFFFFFFFFF, 0xFFFFFFFF3FFFFFFF,
- 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF,
+ 0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF, 0x1FFFFFFFFFFFFFF, 0xFFFFFFFF3FFFFFFF,
+ 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x7FF,
],
};
@@ -4337,7 +5041,7 @@ pub const UPPERCASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 21, 22, 23, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, 0, 21, 22, 23, 24, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4351,16 +5055,16 @@ pub const UPPERCASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0,
],
tree2_level2: &[
0, 0xFFFFFFFF00000000, 0x20BF, 0x3FFFFFFFFFFFFF, 0xE7FFFFFFFFFF0000,
0x5555555555555555, 0x5555555540155555, 0xFF00FF003F00FF00,
0xFF00AA003F00, 0xF00000000000000, 0xF001F000F000F00, 0xC00F3D503E273884,
- 0xFFFF00000020, 0x8, 0xFFC0000000000000, 0xFFFF, 0x7FFFFFFFFFFF,
+ 0xFFFF00000020, 0x8, 0xFFC0000000000000, 0xFFFF, 0xFFFFFFFFFFFF,
0xC025EA9D00000000, 0x4280555555555, 0x155555555555, 0x5555555,
- 0x5554555400000000, 0x6A00555555555555, 0x15F7D5555452855,
- 0x7FFFFFE00000000,
+ 0x5554555400000000, 0x6A00555555555555, 0x555F7D5555452855,
+ 0x200000014102F5, 0x7FFFFFE00000000,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -4376,33 +5080,34 @@ pub const UPPERCASE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 4, 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,
- 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, 5, 0,
+ 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, 7, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 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, 24, 25, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 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, 26, 27, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFF, 0x7FFFFFFFFFFFF,
- 0xFFFFFFFF00000000, 0xFFFFFFFF, 0xFFF0000003FFFFFF, 0xFFFFFF0000003FFF,
- 0x3FDE64D0000003, 0x3FFFFFF0000, 0x7B0000001FDFE7B0, 0xFFFFF0000001FC5F,
- 0x3FFFFFF0000003F, 0x3FFFFFF00000, 0xF0000003FFFFFF00, 0xFFFF0000003FFFFF,
- 0xFFFFFF00000003FF, 0x7FFFFFC00000001, 0x1FFFFFF0000000, 0x7FFFFFC00000,
- 0x1FFFFFF0000, 0x400, 0x3FFFFFFFF, 0xFFFF03FFFFFF03FF, 0x3FF,
+ 0, 0xFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFF, 0xF7FF000000000000,
+ 0x37F7FF, 0x7FFFFFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFF,
+ 0xFFF0000003FFFFFF, 0xFFFFFF0000003FFF, 0x3FDE64D0000003, 0x3FFFFFF0000,
+ 0x7B0000001FDFE7B0, 0xFFFFF0000001FC5F, 0x3FFFFFF0000003F, 0x3FFFFFF00000,
+ 0xF0000003FFFFFF00, 0xFFFF0000003FFFFF, 0xFFFFFF00000003FF,
+ 0x7FFFFFC00000001, 0x1FFFFFF0000000, 0x7FFFFFC00000, 0x1FFFFFF0000, 0x400,
+ 0x3FFFFFFFF, 0xFFFF03FFFFFF03FF, 0x3FF,
],
};
@@ -4454,7 +5159,7 @@ pub const VARIATION_SELECTOR: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSe
0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
],
tree2_level2: &[
- 0, 0x3800, 0xFFFF,
+ 0, 0xB800, 0xFFFF,
],
tree3_level1: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -4559,16 +5264,16 @@ pub const XID_CONTINUE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 4, 32, 33, 34, 4, 4, 4, 4, 4,
35, 36, 37, 38, 39, 40, 41, 42, 4, 4, 4, 4, 4, 4, 4, 4, 43, 44, 45, 46,
47, 4, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 4, 61, 4, 62,
- 63, 64, 65, 66, 4, 4, 4, 67, 4, 4, 4, 4, 68, 69, 70, 71, 72, 73, 74, 75,
- 76, 77, 78, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 79, 80, 4, 81, 82, 83, 84, 85, 60, 60, 60,
- 60, 60, 60, 60, 60, 86, 42, 87, 88, 89, 4, 90, 91, 60, 60, 60, 60, 60, 60,
- 60, 60, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 63, 64, 65, 66, 4, 4, 4, 4, 4, 4, 4, 4, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 4, 4, 4, 79, 80, 81, 82, 83, 78, 78, 78,
+ 78, 78, 78, 78, 78, 84, 42, 85, 86, 87, 4, 88, 89, 78, 78, 78, 78, 78, 78,
+ 78, 78, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 52, 60, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 78, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
@@ -4581,159 +5286,176 @@ pub const XID_CONTINUE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 92, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 93, 94, 4, 4, 4, 4, 95, 96, 4, 97, 98, 4, 99, 100, 101, 62,
- 4, 102, 103, 104, 4, 105, 106, 107, 4, 108, 109, 110, 4, 111, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 90, 91, 4, 4, 4, 4, 92, 93, 4, 94, 95, 4, 96, 97, 98, 62, 4,
+ 99, 100, 101, 4, 102, 103, 104, 4, 105, 106, 107, 4, 108, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 112, 113, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
- 60, 60, 60, 60, 60, 4, 4, 4, 4, 4, 103, 4, 114, 115, 116, 97, 117, 4, 118,
- 4, 4, 119, 120, 121, 122, 123, 124, 4, 125, 126, 127, 128, 129,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 109, 110, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
+ 78, 78, 78, 78, 4, 4, 4, 4, 4, 100, 4, 111, 112, 113, 94, 114, 4, 115, 4,
+ 4, 116, 117, 118, 119, 120, 121, 4, 122, 123, 124, 125, 126,
],
tree2_level2: &[
- 0x3FFFFFFFFFFF, 0x7FF0FFFFFFF, 0x3FDFFFFF00000000, 0xFFFFFFFBFFF80000,
- 0xFFFFFFFFFFFFFFFF, 0xFFFEFFCFFFFFFFFF, 0xF3C5FDFFFFF99FEF,
- 0x5003FFCFB080799F, 0xD36DFDFFFFF987EE, 0x3FFFC05E023987,
- 0xF3EDFDFFFFFBBFEE, 0xFE00FFCF00013BBF, 0xF3EDFDFFFFF99FEE,
- 0x2FFCFB0C0399F, 0xC3FFC718D63DC7EC, 0xFFC000813DC7, 0xE3FFFDFFFFFDDFFF,
- 0xFFCF07603DDF, 0xF3EFFDFFFFFDDFEF, 0x6FFCF40603DDF, 0xFFFFFFFFFFFDDFEF,
- 0xFC00FFCF80F07DDF, 0x2FFBFFFFFC7FFFEC, 0xCFFC0FF5F847F,
- 0x7FFFFFFFFFFFFFE, 0x3FF7FFF, 0x3BFFECAEFEF02596, 0xF3FF3F5F,
- 0xC2A003FF03000001, 0xFFFE1FFFFFFFFEFF, 0x1FFFFFFFFEFFFFDF, 0x40,
- 0xFFFFFFFFFFFF03FF, 0xFFFFFFFF3FFFFFFF, 0xF7FFFFFFFFFF20BF,
+ 0x3FFFFFFFFFFF, 0xFFFF07FF0FFFFFFF, 0xFFFFFFFFFF007EFF,
+ 0xFFFFFFFBFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0xFFFEFFCFFFFFFFFF,
+ 0xF3C5FDFFFFF99FEF, 0x5003FFCFB080799F, 0xD36DFDFFFFF987EE,
+ 0x3FFFC05E023987, 0xF3EDFDFFFFFBBFEE, 0xFE00FFCF00013BBF,
+ 0xF3EDFDFFFFF99FEE, 0x2FFCFB0E0399F, 0xC3FFC718D63DC7EC, 0xFFC000813DC7,
+ 0xF3FFFDFFFFFDDFFF, 0xFFCF27603DDF, 0xF3EFFDFFFFFDDFEF, 0x6FFCF60603DDF,
+ 0xFFFFFFFFFFFDDFFF, 0xFC00FFCF80F07DDF, 0x2FFBFFFFFC7FFFEE,
+ 0xCFFC0FF5F847F, 0x7FFFFFFFFFFFFFE, 0x3FF7FFF, 0x3FFFFFAFFFFFF7D6,
+ 0xF3FF3F5F, 0xC2A003FF03000001, 0xFFFE1FFFFFFFFEFF, 0x1FFFFFFFFEFFFFDF,
+ 0x40, 0xFFFFFFFFFFFF03FF, 0xFFFFFFFF3FFFFFFF, 0xF7FFFFFFFFFF20BF,
0xFFFFFFFF3D7F3DFF, 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D,
0xFFFFFFFFFF3DFFFF, 0x3FE00E7FFFFFF, 0xFFFFFFFF0000FFFF,
0x3F3FFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFE, 0xFFFF9FFFFFFFFFFF,
- 0xFFFFFFFF07FFFFFE, 0x1FFC7FFFFFFFFFF, 0x1FFFFF001FDFFF, 0xDDFFF000FFFFF,
- 0x3FF308FFFFF, 0xFFFFFFFF03FF3800, 0x1FFFFFFFFFFFFFF, 0xFFFF07FFFFFFFFFF,
+ 0xFFFFFFFF07FFFFFE, 0x1FFC7FFFFFFFFFF, 0x1FFFFF803FFFFF, 0xDDFFF000FFFFF,
+ 0x3FF308FFFFF, 0xFFFFFFFF03FFB800, 0x1FFFFFFFFFFFFFF, 0xFFFF07FFFFFFFFFF,
0x3FFFFFFFFFFFFF, 0xFFF0FFF7FFFFFFF, 0x1F3FFFFFFFFFC0, 0xFFFF0FFFFFFFFFFF,
- 0x7FF03FF, 0xFFFFFFFF0FFFFFFF, 0x9FFFFFFF7FFFFFFF, 0x3FFF008003FF03FF, 0,
- 0xFF80003FF0FFF, 0xFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFF, 0x3FFFFFFFFFFFE3FF,
- 0xE7FFFFFFFFFF01FF, 0x3FFFFFFFFF70000, 0xFBFFFFFFFFFFFFFF,
+ 0x7FF03FF, 0xFFFFFFFF0FFFFFFF, 0x9FFFFFFF7FFFFFFF, 0xBFFF008003FF03FF,
+ 0x7FFF, 0xFF80003FF1FFF, 0xFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFF,
+ 0x3FFFFFFFFFFFE3FF, 0xE7FFFFFFFFFF01FF, 0x7FFFFFFFFF70000,
0xFFFFFFFF3F3FFFFF, 0x3FFFFFFFAAFF3F3F, 0x5FDFFFFFFFFFFFFF,
0x1FDC1FFF0FCF1FDC, 0x8000000000000000, 0x8002000000100001, 0x1FFF0000,
- 0x1FFE21FFF0000, 0xF3FFFD503F2FFC84, 0xFFFFFFFF000043E0, 0x1FF,
- 0xFFFF7FFFFFFFFFFF, 0xFFFFFFFF7FFFFFFF, 0xFF81FFFFFFFFF,
- 0xFFFF20BFFFFFFFFF, 0x800080FFFFFFFFFF, 0x7F7F7F7F007FFFFF,
- 0xFFFFFFFF7F7F7F7F, 0x1F3EFFFE000000E0, 0xFFFFFFFEE67FFFFF,
- 0xF7FFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFE0, 0x7FFFFFF00007FFF,
- 0xFFFF000000000000, 0xFFFFFFFFFFFF, 0x1FFF, 0x3FFFFFFFFFFF0000,
+ 0x1FFE21FFF0000, 0xF3FFFD503F2FFC84, 0xFFFFFFFF000043E0, 0x1FF, 0,
+ 0xFF81FFFFFFFFF, 0xFFFF20BFFFFFFFFF, 0x800080FFFFFFFFFF,
+ 0x7F7F7F7F007FFFFF, 0xFFFFFFFF7F7F7F7F, 0x1F3EFFFE000000E0,
+ 0xFFFFFFFEE67FFFFF, 0xF7FFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFE0,
+ 0xFFFFFFFF00007FFF, 0xFFFF000000000000, 0x1FFF, 0x3FFFFFFFFFFF0000,
0xFFFFFFF1FFF, 0xBFF0FFFFFFFFFFFF, 0x3FFFFFFFFFFFF, 0xFFFFFFFCFF800000,
- 0x3FFFFFFFFFFF9FF, 0xFF80000000000000, 0xFFFFFFFFFF, 0xE8FFFFFF03FF003F,
- 0xFFFF3FFFFFFFFFFF, 0x1FFFFFFF000FFFFF, 0x7FFFFFFF03FF8001,
- 0x7FFFFFFFFFFFFF, 0xFC7FFFFF03FF3FFF, 0x7CFFFF38000007,
- 0xFFFF7F7F007E7E7E, 0xFFFF003FF7FFFFFF, 0x3FF37FFFFFFFFFF,
- 0xFFFF000FFFFFFFFF, 0xFFFFFFFFFFFF87F, 0x3FFFFFF, 0x5F7FFDFFE0F8007F,
- 0xFFFFFFFFFFFFFFDB, 0xFFFFFFFFFFF80000, 0xFFFFFFF03FFFFFFF,
- 0x3FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0000, 0xFFFFFFFFFFFCFFFF,
- 0x3FF0000000000FF, 0x18FFFF0000FFFF, 0xAA8A00000000E000,
- 0x1FFFFFFFFFFFFFFF, 0x87FFFFFE03FF0000, 0xFFFFFFC007FFFFFE,
- 0x7FFFFFFFFFFFFFFF, 0x1CFCFCFC,
+ 0xFFFFFFFFFFFFF9FF, 0xFFFC000003EB07FF, 0x10FFFFFFFFFF,
+ 0xE8FFFFFF03FF003F, 0xFFFF3FFFFFFFFFFF, 0x1FFFFFFF000FFFFF,
+ 0x7FFFFFFF03FF8001, 0x7FFFFFFFFFFFFF, 0xFC7FFFFF03FF3FFF,
+ 0x7CFFFF38000007, 0xFFFF7F7F007E7E7E, 0xFFFF03FFF7FFFFFF,
+ 0x3FF37FFFFFFFFFF, 0xFFFF000FFFFFFFFF, 0xFFFFFFFFFFFF87F, 0x3FFFFFF,
+ 0x5F7FFDFFE0F8007F, 0xFFFFFFFFFFFFFFDB, 0xFFFFFFFFFFF80000,
+ 0xFFFFFFF03FFFFFFF, 0x3FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0000,
+ 0xFFFFFFFFFFFCFFFF, 0x3FF0000000000FF, 0x18FFFF0000FFFF,
+ 0xAA8A00000000E000, 0x1FFFFFFFFFFFFFFF, 0x87FFFFFE03FF0000,
+ 0xFFFFFFC007FFFFFE, 0x7FFFFFFFFFFFFFFF, 0x1CFCFCFC,
],
tree3_level1: &[
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 5, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 12, 13, 14, 7, 15, 16, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 11, 12, 13, 14, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 15, 16, 17, 7, 18, 19, 7, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
],
tree3_level2: &[
0, 1, 2, 3, 4, 5, 4, 6, 4, 4, 7, 8, 9, 10, 11, 12, 2, 2, 13, 14, 15, 16,
- 4, 4, 2, 2, 2, 2, 17, 18, 4, 4, 19, 20, 21, 22, 23, 4, 24, 4, 25, 26, 27,
- 28, 29, 30, 31, 4, 2, 32, 33, 33, 34, 4, 4, 4, 4, 4, 4, 4, 35, 36, 4, 4,
- 2, 37, 3, 38, 39, 40, 2, 41, 42, 4, 43, 44, 45, 46, 4, 4, 2, 47, 2, 48, 4,
- 4, 49, 50, 2, 51, 52, 53, 54, 4, 4, 4, 3, 4, 55, 56, 4, 4, 4, 4, 57, 58,
- 59, 60, 4, 4, 4, 4, 61, 62, 63, 4, 64, 65, 66, 4, 4, 4, 4, 67, 4, 4, 4, 4,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 68, 4, 2, 69, 2, 2, 2, 70, 4, 4,
+ 17, 4, 2, 2, 2, 2, 18, 19, 20, 4, 21, 22, 23, 24, 25, 4, 26, 4, 27, 28,
+ 29, 30, 31, 32, 33, 4, 2, 34, 35, 35, 36, 4, 4, 4, 4, 4, 37, 4, 38, 39,
+ 40, 41, 2, 42, 3, 43, 44, 45, 2, 46, 47, 4, 48, 49, 50, 51, 4, 4, 2, 52,
+ 2, 53, 4, 4, 54, 55, 2, 56, 57, 58, 59, 60, 4, 4, 3, 4, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 57, 4, 4, 4, 4, 70, 71, 72, 4, 73, 74, 75, 4, 4, 4, 4,
+ 76, 4, 4, 77, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 78, 4, 2, 79,
+ 2, 2, 2, 80, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 81, 82, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 79, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 2, 2, 2, 69, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 71, 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, 60, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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,
- 60, 72, 4, 73, 17, 74, 75, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 76,
- 77, 78, 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, 2,
+ 2, 2, 2, 2, 2, 2, 2, 57, 83, 67, 84, 18, 85, 86, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 2, 4, 4, 2, 87, 88, 89, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 79,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 33, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 21, 80, 2, 2, 2, 2, 2, 81, 4, 4, 4, 4,
+ 2, 2, 2, 2, 2, 90, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 91, 34, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 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, 82, 83, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 84, 85, 4, 4, 86, 4, 4, 4, 4, 4, 4, 2, 87, 88, 89, 90, 91, 2,
- 2, 2, 2, 92, 93, 94, 95, 96, 97, 4, 4, 4, 4, 4, 4, 4, 4, 98, 99, 100, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 101, 4, 4, 4,
4, 4, 4, 4, 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, 102, 2, 103, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 104, 105, 106, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 107, 2, 2, 2, 2, 2, 2, 2,
- 2, 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, 92, 2, 2, 2, 2, 93, 94, 2, 2, 2, 2, 2, 95, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 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, 96, 97, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 98, 60, 4, 4, 4, 4, 4, 4, 4, 99, 100, 4, 4, 101, 4, 4,
+ 4, 4, 4, 4, 2, 102, 103, 104, 105, 106, 2, 2, 2, 2, 107, 108, 109, 110,
+ 111, 112, 4, 4, 4, 4, 4, 4, 4, 4, 113, 114, 115, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 23, 4, 4, 4, 116, 4, 4, 4, 117, 118, 4, 4, 4,
+ 4, 119, 120, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 121,
+ 2, 2, 2, 122, 2, 123, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 124, 125, 126, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 127, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 128, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 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, 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 57, 2, 2, 2, 11,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 108, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 129, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 109, 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, 2, 2, 2, 2, 2, 130, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 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, 110, 4, 4, 4, 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, 111, 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, 131, 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, 132, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 133,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4,
],
tree3_level3: &[
0xB7FFFF7FFFFFEFFF, 0x3FFF3FFF, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFF, 0,
0x1FFFFFFFFFFFFF, 0x2000000000000000, 0xFFFFFFFF1FFFFFFF, 0x10001FFFF,
0xFFFFE000FFFFFFFF, 0x7FFFFFFFFFF07FF, 0xFFFFFFFF3FFFFFFF, 0x3EFF0F,
- 0xFFFF03FF3FFFFFFF, 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF, 0xFFFFFFFFF,
- 0x7FFFFFFFFFFFFF, 0xFF003FFFFF, 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF,
- 0x7FFFFFFF, 0x37FFFF00000000, 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF,
+ 0xFFFF03FF3FFFFFFF, 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF,
+ 0xF7FF000FFFFFFFFF, 0x1BFBFFFBFFB7F7FF, 0x7FFFFFFFFFFFFF, 0xFF003FFFFF,
+ 0x7FDFFFFFFFFFFBF, 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF, 0x7FFFFFFF,
+ 0x37FFFF00000000, 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF,
0x873FFFFFFEEFF06F, 0x1FFFFFFF00000000, 0x1FFFFFFF, 0x7FFFFFFEFF,
0x3FFFFFFFFFFFFF, 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0x7FFFFFFFFFFFF,
- 0x3FF00FFFFFFFFFF, 0xFFFF00801FFFFFFF, 0x1FFFF, 0x8000FFC00000007F,
- 0x3FF01FFFFFF0000, 0xFFDFFFFFFFFFFFFF, 0x4FFFFFFFFF0070, 0x17FF1E1F,
- 0x40FFFFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F, 0x3FF07FFFFFFFFFF,
- 0xFBEDFDFFFFF99FEF, 0x1F1FCFE081399F, 0x43FF07FF, 0x3FF00BF,
- 0xFF3FFFFFFFFFFFFF, 0x3F000001, 0x3FF0011, 0xFFFFFFFFFFFFFF, 0x3FF,
- 0x3FF0FFFE7FFFFFF, 0xFFFFFFFF00000000, 0x800003FFFFFFFFFF,
- 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0080, 0x23FFFFCF, 0x1FFFFFFFFFFFFFF,
+ 0x3FF00FFFFFFFFFF, 0x31BFFFFFFFFFF, 0xFFFF00801FFFFFFF,
+ 0xFFFF00000001FFFF, 0xFFFF00000000003F, 0x7FFFFF0000001F,
+ 0x803FFFC00000007F, 0x3FF01FFFFFF0004, 0xFFDFFFFFFFFFFFFF,
+ 0x4FFFFFFFFF00F0, 0x17FFDE1F, 0x40FFFFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F,
+ 0x3FF07FFFFFFFFFF, 0xFBEDFDFFFFF99FEF, 0x1F1FCFE081399F, 0x3C3FF07FF,
+ 0x3FF00BF, 0xFF3FFFFFFFFFFFFF, 0x3F000001, 0x3FF0011, 0x1FFFFFFFFFFFFFF,
+ 0x3FF, 0x3FF0FFFE7FFFFFF, 0x7F, 0xFFFFFFFF00000000, 0x800003FFFFFFFFFF,
+ 0xF9BFFFFFFF6FF27F, 0x3FF000F, 0xFFFFFCFF00000000, 0x1BFCFFFFFF,
+ 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0080, 0xFFFF000023FFFFFF,
0xFF7FFFFFFFFFFDFF, 0xFFFC000003FF0001, 0x7FFEFFFFFCFFFF,
0xB47FFFFFFFFFFB7F, 0xFFFFFDBF03FF00FF, 0x3FF01FB7FFF, 0x7FFFFF00000000,
- 0x3FFFFFF, 0x7FFFFFFFFFFF, 0xF, 0x7F, 0x3FF7FFFFFFF, 0x1F3FFFFFFF0000,
- 0xE0FFFFF803FF000F, 0xFFFF, 0x7FFFFFFFFFFF001F, 0xFFFF8000, 0x300000000,
- 0x3FFFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFFFFFFFFFFFF,
- 0x1FFF07FFFFFFFFFF, 0x63FF01FF, 0xF807E3E000000000, 0x3C0000000FE7, 0x1C,
- 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF,
- 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF,
- 0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF,
- 0xFFFFFDFFFFFFFDFF, 0xFFFFFFFFFFFFCFF7, 0xF87FFFFFFFFFFFFF,
- 0x201FFFFFFFFFFF, 0xFFFEF8000010, 0x7DBF9FFFF7F, 0x7F001F, 0x3FF07FF,
- 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0x7FFFFF,
- 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF, 0xFFFFFFFFFFFF,
+ 0x1000000000000, 0x3FFFFFF, 0x7FFFFFFFFFFF, 0xF, 0xFFFFFFFFFFFF0000,
+ 0x1FFFFFFFFFFFF, 0xFFFF03FF7FFFFFFF, 0x1F3FFFFFFF03FF, 0xE0FFFFF803FF000F,
+ 0xFFFF, 0xFFFFFFFFFFFF87FF, 0xFFFF80FF, 0x3001B00000000, 0xFFFFFFFFFFFFFF,
+ 0x3FFFFF, 0x6FEF000000000000, 0x7FFFFFFFF, 0xFFFF00F000070000,
+ 0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF, 0x63FF01FF, 0xFFFF3FFFFFFFFFFF,
+ 0xF807E3E000000000, 0x3C0000000FE7, 0x1C, 0xFFFFFFFFFFDFFFFF,
+ 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF,
+ 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF, 0xF7FFFFFFF7FFFFFD,
+ 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF,
+ 0xFFFFFFFFFFFFCFF7, 0xF87FFFFFFFFFFFFF, 0x201FFFFFFFFFFF, 0xFFFEF8000010,
+ 0x7DBF9FFFF7F, 0x3FFF1FFFFFFFFFFF, 0x43FF, 0x7FFFFFFF0000,
+ 0x3FFFFFFFFFFFFFF, 0x7FFF6F7F00000000, 0x7F001F, 0x3FF0FFF,
+ 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF,
+ 0x3FF000000000000, 0xFFFFFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF,
+ 0x3FFFFFFF, 0x7FF, 0xFFFFFFFFFFFF,
],
};
@@ -4752,100 +5474,104 @@ pub const XID_START: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree2_level1: &[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 23, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 34, 34, 34,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 34, 34, 34, 34, 34, 34, 34, 34, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 3, 61,
- 62, 63, 64, 65, 66, 67, 68, 34, 34, 34, 3, 34, 34, 34, 34, 69, 70, 71, 72,
- 3, 73, 74, 3, 75, 76, 77, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 78, 79, 34, 80, 81, 82, 83, 84, 3, 3, 3, 3, 3, 3, 3, 3, 85, 42, 86, 87,
- 88, 34, 89, 90, 3, 3, 3, 3, 3, 3, 3, 3, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 53, 3, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 91, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 92, 93, 34, 34, 34, 34, 94, 95, 96,
- 91, 97, 34, 98, 99, 100, 48, 101, 102, 103, 104, 105, 106, 107, 108, 109,
- 110, 111, 112, 34, 113, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 114, 115, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 34, 34, 34, 34, 34, 116, 34, 117, 118,
- 119, 120, 121, 34, 122, 34, 34, 123, 124, 125, 126, 3, 127, 34, 128, 129,
- 130, 131, 132,
+ 21, 22, 23, 24, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 35, 35,
+ 35, 35, 36, 37, 38, 39, 40, 41, 42, 43, 35, 35, 35, 35, 35, 35, 35, 35,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 3, 58, 59, 60, 30,
+ 61, 62, 63, 64, 65, 66, 67, 68, 35, 35, 35, 30, 35, 35, 35, 35, 69, 70,
+ 71, 72, 30, 73, 74, 30, 75, 76, 77, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 78,
+ 79, 80, 81, 82, 30, 30, 30, 30, 30, 30, 30, 30, 83, 43, 84, 85, 86, 35,
+ 87, 88, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 89, 90, 35, 35, 35, 35, 91, 92,
+ 93, 94, 95, 35, 96, 97, 98, 49, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 35, 111, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 112, 113, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 35, 35, 114, 35, 115, 116,
+ 117, 118, 119, 35, 120, 35, 35, 121, 122, 123, 124, 30, 125, 35, 126, 127,
+ 128, 129, 130,
],
tree2_level2: &[
- 0x110043FFFFF, 0x7FF01FFFFFF, 0x3FDFFFFF00000000, 0, 0x23FFFFFFFFFFFFF0,
- 0xFFFE0003FF010000, 0x23C5FDFFFFF99FE1, 0x10030003B0004000,
- 0x36DFDFFFFF987E0, 0x1C00005E000000, 0x23EDFDFFFFFBBFE0,
- 0x200000300010000, 0x23EDFDFFFFF99FE0, 0x20003B0000000, 0x3FFC718D63DC7E8,
- 0x10000, 0x23FFFDFFFFFDDFE0, 0x307000000, 0x23EFFDFFFFFDDFE1,
- 0x6000340000000, 0x27FFFFFFFFFDDFE0, 0xFC00000380704000,
- 0x2FFBFFFFFC7FFFE0, 0x7F, 0x5FFFFFFFFFFFE, 0x2005ECAEFEF02596, 0xF000005F,
- 0x1, 0x1FFFFFFFFEFF, 0x1F00, 0x800007FFFFFFFFFF, 0xFFE1C0623C3F0000,
- 0xFFFFFFFF00004003, 0xF7FFFFFFFFFF20BF, 0xFFFFFFFFFFFFFFFF,
- 0xFFFFFFFF3D7F3DFF, 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D,
- 0xFFFFFFFFFF3DFFFF, 0x7FFFFFF, 0xFFFFFFFF0000FFFF, 0x3F3FFFFFFFFFFFFF,
- 0xFFFFFFFFFFFFFFFE, 0xFFFF9FFFFFFFFFFF, 0xFFFFFFFF07FFFFFE,
- 0x1FFC7FFFFFFFFFF, 0x3FFFF0003DFFF, 0x1DFFF0003FFFF, 0xFFFFFFFFFFFFF,
- 0x10800000, 0xFFFFFFFF00000000, 0x1FFFFFFFFFFFFFF, 0xFFFF05FFFFFFFFFF,
- 0x3FFFFFFFFFFFFF, 0x7FFFFFFF, 0x1F3FFFFFFF0000, 0xFFFF0FFFFFFFFFFF, 0x3FF,
- 0xFFFFFFFF007FFFFF, 0x1FFFFF, 0x8000000000, 0xFFFFFFFFFFFE0, 0xFE0,
+ 0x110043FFFFF, 0xFFFF07FF01FFFFFF, 0xFFFFFFFF00007EFF, 0x3FF,
+ 0x23FFFFFFFFFFFFF0, 0xFFFE0003FF010000, 0x23C5FDFFFFF99FE1,
+ 0x10030003B0004000, 0x36DFDFFFFF987E0, 0x1C00005E000000,
+ 0x23EDFDFFFFFBBFE0, 0x200000300010000, 0x23EDFDFFFFF99FE0,
+ 0x20003B0000000, 0x3FFC718D63DC7E8, 0x10000, 0x23FFFDFFFFFDDFE0,
+ 0x327000000, 0x23EFFDFFFFFDDFE1, 0x6000360000000, 0x27FFFFFFFFFDDFF0,
+ 0xFC00000380704000, 0x2FFBFFFFFC7FFFE0, 0x7F, 0x5FFFFFFFFFFFE,
+ 0x2005FFAFFFFFF7D6, 0xF000005F, 0x1, 0x1FFFFFFFFEFF, 0x1F00, 0,
+ 0x800007FFFFFFFFFF, 0xFFE1C0623C3F0000, 0xFFFFFFFF00004003,
+ 0xF7FFFFFFFFFF20BF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF3D7F3DFF,
+ 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D, 0xFFFFFFFFFF3DFFFF, 0x7FFFFFF,
+ 0xFFFFFFFF0000FFFF, 0x3F3FFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFE,
+ 0xFFFF9FFFFFFFFFFF, 0xFFFFFFFF07FFFFFE, 0x1FFC7FFFFFFFFFF,
+ 0x3FFFF8003FFFF, 0x1DFFF0003FFFF, 0xFFFFFFFFFFFFF, 0x10800000,
+ 0xFFFFFFFF00000000, 0x1FFFFFFFFFFFFFF, 0xFFFF05FFFFFFFFFF,
+ 0x3FFFFFFFFFFFFF, 0x7FFFFFFF, 0x1F3FFFFFFF0000, 0xFFFF0FFFFFFFFFFF,
+ 0xFFFFFFFF007FFFFF, 0x1FFFFF, 0x8000000000, 0xFFFFFFFFFFFE0, 0x1FE0,
0xFC00C001FFFFFFF8, 0x3FFFFFFFFF, 0xFFFFFFFFF, 0x3FFFFFFFFC00E000,
- 0xE7FFFFFFFFFF01FF, 0x63DE0000000000, 0xFFFFFFFF3F3FFFFF,
+ 0xE7FFFFFFFFFF01FF, 0x46FDE0000000000, 0xFFFFFFFF3F3FFFFF,
0x3FFFFFFFAAFF3F3F, 0x5FDFFFFFFFFFFFFF, 0x1FDC1FFF0FCF1FDC,
0x8002000000000000, 0x1FFF0000, 0xF3FFFD503F2FFC84, 0xFFFFFFFF000043E0,
- 0x1FF, 0xFFFF7FFFFFFFFFFF, 0xFFFFFFFF7FFFFFFF, 0xC781FFFFFFFFF,
- 0xFFFF20BFFFFFFFFF, 0x80FFFFFFFFFF, 0x7F7F7F7F007FFFFF, 0x7F7F7F7F,
- 0x1F3E03FE000000E0, 0xFFFFFFFEE07FFFFF, 0xF7FFFFFFFFFFFFFF,
- 0xFFFEFFFFFFFFFFE0, 0x7FFFFFF00007FFF, 0xFFFF000000000000, 0xFFFFFFFFFFFF,
- 0x1FFF, 0x3FFFFFFFFFFF0000, 0xC00FFFF1FFF, 0x80007FFFFFFFFFFF,
- 0xFFFFFFFF3FFFFFFF, 0xFFFFFFFCFF800000, 0x3FFFFFFFFFFF9FF,
- 0xFF80000000000000, 0x7FFFFF7BB, 0xFFFFFFFFFFFFC, 0x68FC000000000000,
- 0xFFFF003FFFFFFC00, 0x1FFFFFFF0000007F, 0x7FFFFFFFFFFF0,
- 0x7C00FFDF00008000, 0x1FFFFFFFFFF, 0xC47FFFFF00000FF7, 0x3E62FFFFFFFFFFFF,
- 0x1C07FF38000005, 0xFFFF7F7F007E7E7E, 0xFFFF003FF7FFFFFF, 0x7FFFFFFFF,
- 0xFFFF000FFFFFFFFF, 0xFFFFFFFFFFFF87F, 0xFFFF3FFFFFFFFFFF, 0x3FFFFFF,
- 0x5F7FFDFFA0F8007F, 0xFFFFFFFFFFFFFFDB, 0x3FFFFFFFFFFFF,
- 0xFFFFFFFFFFF80000, 0xFFFFFFF03FFFFFFF, 0x3FFFFFFFFFFFFFFF,
- 0xFFFFFFFFFFFF0000, 0xFFFFFFFFFFFCFFFF, 0x3FF0000000000FF,
- 0xAA8A000000000000, 0x1FFFFFFFFFFFFFFF, 0x7FFFFFE00000000,
- 0xFFFFFFC007FFFFFE, 0x7FFFFFFF3FFFFFFF, 0x1CFCFCFC,
+ 0x1FF, 0xC781FFFFFFFFF, 0xFFFF20BFFFFFFFFF, 0x80FFFFFFFFFF,
+ 0x7F7F7F7F007FFFFF, 0x7F7F7F7F, 0x1F3E03FE000000E0, 0xFFFFFFFEE07FFFFF,
+ 0xF7FFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFE0, 0xFFFFFFFF00007FFF,
+ 0xFFFF000000000000, 0x1FFF, 0x3FFFFFFFFFFF0000, 0xC00FFFF1FFF,
+ 0x80007FFFFFFFFFFF, 0xFFFFFFFF3FFFFFFF, 0xFFFFFFFFFFFF,
+ 0xFFFFFFFCFF800000, 0xFFFFFFFFFFFFF9FF, 0xFFFC000003EB07FF, 0x7FFFFF7BB,
+ 0xFFFFFFFFFFFFC, 0x68FC000000000000, 0xFFFF003FFFFFFC00,
+ 0x1FFFFFFF0000007F, 0x7FFFFFFFFFFF0, 0x7C00FFDF00008000, 0x1FFFFFFFFFF,
+ 0xC47FFFFF00000FF7, 0x3E62FFFFFFFFFFFF, 0x1C07FF38000005,
+ 0xFFFF7F7F007E7E7E, 0xFFFF03FFF7FFFFFF, 0x7FFFFFFFF, 0xFFFF000FFFFFFFFF,
+ 0xFFFFFFFFFFFF87F, 0xFFFF3FFFFFFFFFFF, 0x3FFFFFF, 0x5F7FFDFFA0F8007F,
+ 0xFFFFFFFFFFFFFFDB, 0x3FFFFFFFFFFFF, 0xFFFFFFFFFFF80000,
+ 0xFFFFFFF03FFFFFFF, 0x3FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0000,
+ 0xFFFFFFFFFFFCFFFF, 0x3FF0000000000FF, 0xAA8A000000000000,
+ 0x1FFFFFFFFFFFFFFF, 0x7FFFFFE00000000, 0xFFFFFFC007FFFFFE,
+ 0x7FFFFFFF3FFFFFFF, 0x1CFCFCFC,
],
tree3_level1: &[
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 5, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 12, 13, 14, 7, 15, 16, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 5, 11, 12, 5, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 13, 14, 15, 7, 16, 17, 7, 18, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
@@ -4857,77 +5583,89 @@ pub const XID_START: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
5, 5, 5, 5, 5, 5, 5, 5, 5,
],
tree3_level2: &[
- 0, 1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 7, 8, 9, 10, 11, 2, 2, 12, 13, 14, 15, 4,
- 4, 2, 2, 2, 2, 16, 17, 4, 4, 18, 19, 20, 21, 22, 4, 23, 4, 24, 25, 26, 27,
- 28, 29, 30, 4, 2, 31, 32, 32, 15, 4, 4, 4, 4, 4, 4, 4, 33, 34, 4, 4, 35,
- 4, 36, 37, 38, 39, 40, 41, 42, 4, 43, 20, 44, 45, 4, 4, 5, 46, 47, 48, 4,
- 4, 49, 50, 47, 51, 52, 4, 53, 4, 4, 4, 54, 4, 55, 56, 4, 4, 4, 4, 57, 58,
- 59, 60, 4, 4, 4, 4, 61, 62, 63, 4, 64, 65, 66, 4, 4, 4, 4, 67, 4, 4, 4, 4,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 68, 4, 2, 49, 2, 2, 2, 69, 4, 4,
+ 0, 1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 7, 8, 9, 10, 11, 2, 2, 12, 13, 14, 15,
+ 16, 4, 2, 2, 2, 2, 17, 18, 19, 4, 20, 21, 22, 23, 24, 4, 25, 4, 26, 27,
+ 28, 29, 30, 31, 32, 4, 2, 33, 34, 34, 35, 4, 4, 4, 4, 4, 36, 4, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 4, 50, 22, 51, 52, 4, 4, 5,
+ 53, 54, 55, 4, 4, 56, 57, 54, 58, 59, 4, 60, 61, 4, 4, 62, 4, 63, 64, 65,
+ 66, 67, 68, 69, 70, 71, 72, 4, 4, 4, 4, 73, 74, 75, 4, 76, 77, 78, 4, 4,
+ 4, 4, 79, 4, 4, 80, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 81, 4, 2,
+ 56, 2, 2, 2, 82, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 83, 84, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 56, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 2, 2, 2, 49, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 70, 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, 61, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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,
- 60, 20, 4, 71, 47, 72, 63, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 73,
- 74, 75, 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,
+ 2, 2, 2, 2, 2, 2, 2, 2, 72, 85, 86, 87, 54, 88, 75, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 2, 4, 4, 2, 89, 90, 91, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 76,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 32, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 20, 77, 2, 2, 2, 2, 2, 78, 4, 4, 4, 4,
+ 2, 2, 2, 2, 2, 2, 92, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 93, 33, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 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, 79, 80, 4, 4, 4, 4, 4, 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, 81, 82, 83, 84, 85, 2, 2,
- 2, 2, 86, 87, 88, 89, 90, 91, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 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, 92, 2, 69, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 93,
- 94, 95, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 96, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 4, 4, 4, 4, 94, 2, 2, 2, 2, 95, 96, 2, 2, 2, 2, 2, 97, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 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, 98, 99, 4, 4, 4, 4, 4, 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, 100, 101, 102, 103, 104, 2, 2,
+ 2, 2, 105, 106, 107, 108, 109, 110, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 22, 4, 4, 4, 4, 4, 4, 4, 111,
+ 112, 4, 4, 4, 4, 87, 62, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 113, 2, 2, 2, 114, 2, 115, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 116, 117, 118, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 119, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 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, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 72, 2, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 97, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 120, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 98, 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, 121, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 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, 122, 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, 123, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 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, 99, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4,
],
tree3_level3: &[
0xB7FFFF7FFFFFEFFF, 0x3FFF3FFF, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFF, 0,
0x1FFFFFFFFFFFFF, 0xFFFFFFFF1FFFFFFF, 0x1FFFF, 0xFFFFE000FFFFFFFF,
0x3FFFFFFFFF07FF, 0xFFFFFFFF3FFFFFFF, 0x3EFF0F, 0xFFFF00003FFFFFFF,
- 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF, 0xFFFFFFFFF, 0x7FFFFFFFFFFFFF,
- 0xFF003FFFFF, 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF, 0x7FFFFFFF,
- 0x37FFFF00000000, 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF, 0x3FFFFFFEEF0001,
+ 0xFFFFFFFFF0FFFFF, 0xFFFF00FFFFFFFFFF, 0xF7FF000FFFFFFFFF,
+ 0x1BFBFFFBFFB7F7FF, 0x7FFFFFFFFFFFFF, 0xFF003FFFFF, 0x7FDFFFFFFFFFFBF,
+ 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF, 0x7FFFFFFF, 0x37FFFF00000000,
+ 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF, 0x3FFFFFFEEF0001,
0x1FFFFFFF00000000, 0x1FFFFFFF, 0x1FFFFFFEFF, 0x3FFFFFFFFFFFFF,
- 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0x7FFFFFFFFFFFF, 0xFFFF00801FFFFFFF,
- 0x3F, 0xFFFFFFFFFFFFF8, 0xFFFFFFFFFFF8, 0x1FFFFFF0000, 0x7FFFFFFFF8,
- 0x47FFFFFFFF0010, 0x7FFFFFFFFFFF8, 0x1400001E, 0xFFFFFFBFFFF,
- 0xFFFF01FFBFFFBD7F, 0x23EDFDFFFFF99FE0, 0x3E0010000, 0x780,
- 0xFFFFFFFFFFFF, 0xB0, 0x7FFFFFFFFFFF, 0xF000000, 0x10, 0x7FFFFFFFFFF,
- 0x7FFFFFF, 0xFFFFFFFFFFF, 0xFFFFFFFF00000000, 0x80000000FFFFFFFF,
- 0x407FFFFFFFFF801, 0xFFFFFFFFF0010000, 0x200003CF, 0x1FFFFFFFFFFFFFF,
- 0x7FFFFFFFFDFF, 0xFFFC000000000001, 0xFFFF, 0x1FFFFFFFFFB7F,
- 0xFFFFFDBF00000040, 0x10003FF, 0x7FFFF00000000, 0x3FFFFFF, 0xF, 0x7F,
- 0x3FFFFFFF0000, 0xE0FFFFF80000000F, 0x1001F, 0xFFF80000, 0x300000000,
- 0x3FFFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFFFFFFFFFFFF,
- 0x1FFF07FFFFFFFFFF, 0x3FF01FF, 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF,
- 0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F,
- 0xFFFFFF3FFFFFFFFF, 0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF,
- 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF, 0xFF7, 0x1F, 0xAF7FE96FFFFFFEF,
- 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0x7FFFFF, 0xFFFF0003FFFFFFFF,
- 0x1FFFFFFFF, 0x3FFFFFFF,
+ 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0x7FFFFFFFFFFFF, 0xFFFFFFFFF,
+ 0x303FFFFFFFFFF, 0xFFFF00801FFFFFFF, 0xFFFF00000000003F,
+ 0xFFFF000000000003, 0x7FFFFF0000001F, 0xFFFFFFFFFFFFF8, 0x26000000000000,
+ 0xFFFFFFFFFFF8, 0x1FFFFFF0000, 0x7FFFFFFFF8, 0x47FFFFFFFF0090,
+ 0x7FFFFFFFFFFF8, 0x1400001E, 0xFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F,
+ 0x23EDFDFFFFF99FE0, 0x3E0010000, 0x380000780, 0xFFFFFFFFFFFF, 0xB0,
+ 0x7FFFFFFFFFFF, 0xF000000, 0x10, 0x10007FFFFFFFFFF, 0x7FFFFFF, 0x7F,
+ 0xFFFFFFFFFFF, 0xFFFFFFFF00000000, 0x80000000FFFFFFFF, 0x8000FFFFFF6FF27F,
+ 0x2, 0xFFFFFCFF00000000, 0xA0001FFFF, 0x407FFFFFFFFF801,
+ 0xFFFFFFFFF0010000, 0xFFFF0000200003FF, 0x1FFFFFFFFFFFFFF, 0x7FFFFFFFFDFF,
+ 0xFFFC000000000001, 0xFFFF, 0x1FFFFFFFFFB7F, 0xFFFFFDBF00000040,
+ 0x10003FF, 0x7FFFF00000000, 0x1000000000000, 0x3FFFFFF, 0xF,
+ 0xFFFFFFFFFFFF0000, 0x1FFFFFFFFFFFF, 0xFFFF00007FFFFFFF,
+ 0x7FFFFFFFFFFFFFFF, 0x3FFFFFFF0000, 0xE0FFFFF80000000F, 0x107FF,
+ 0xFFF80000, 0xB00000000, 0xFFFFFFFFFFFFFF, 0x3FFFFF, 0x6FEF000000000000,
+ 0x7FFFFFFFF, 0xFFFF00F000070000, 0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF,
+ 0x3FF01FF, 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF,
+ 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF,
+ 0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF,
+ 0xFFFFFDFFFFFFFDFF, 0xFF7, 0x3F801FFFFFFFFFFF, 0x4000, 0x7FFF6F7F00000000,
+ 0x1F, 0x80F, 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF,
+ 0xFFFFFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF, 0x7FF,
],
};
diff --git a/vendor/pest/src/unicode/category.rs b/vendor/pest/src/unicode/category.rs
index 87532aabd..ca39b7fcf 100644
--- a/vendor/pest/src/unicode/category.rs
+++ b/vendor/pest/src/unicode/category.rs
@@ -1,8 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate.exe general-category --trie-set ./target/ucd/
+// ucd-generate general-category --trie-set ./target/ucd/
//
-// ucd-generate is available on crates.io.
+// Unicode version: 14.0.0.
+//
+// ucd-generate 0.2.12 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static ::ucd_trie::TrieSet)] = &[
("Cased_Letter", CASED_LETTER), ("Close_Punctuation", CLOSE_PUNCTUATION),
@@ -44,8 +46,8 @@ pub const CASED_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 5, 6, 7, 0, 8, 8, 8, 8, 9, 10, 11, 12, 0, 0, 0,
0, 13, 14, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 8,
- 18, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 16, 8,
+ 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -64,8 +66,8 @@ pub const CASED_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 21, 0, 22, 23, 24, 25, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 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, 19, 20, 0, 21, 22, 23, 24, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 25, 26, 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,
@@ -78,17 +80,17 @@ pub const CASED_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 0, 0,
+ 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 0, 0,
],
tree2_level2: &[
0, 0xFFFFFFFF00000000, 0xE7FFFFFFFFFF20BF, 0x3F3FFFFFFFFFFFFF,
0xE7FFFFFFFFFF01FF, 0xFFFFFFFFFFF, 0xFEFFF80000000000, 0x7FFFFFF,
0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF3F3FFFFF, 0x3FFFFFFFAAFF3F3F,
0x5FDFFFFFFFFFFFFF, 0x1FDC1FFF0FCF1FDC, 0xF21FBD503E2FFC84, 0x43E0, 0x18,
- 0xFFFF7FFFFFFFFFFF, 0xCFFFFFFF7FFFFFFF, 0xC781FFFFFFFFF, 0x20BFFFFFFFFF,
- 0x3FFFFFFFFFFF, 0xFFFFFFF, 0xFFFFFFFC00000000, 0xFFFEFFFFFFFFFFFF,
- 0x3FFFFFFFFFF78FF, 0x400000000000000, 0xFFFF000000000000,
- 0xFFFF003F07FFFFFF, 0xF8007F, 0x7FFFFFE00000000, 0x7FFFFFE,
+ 0xCFFFFFFFFFFFFFFF, 0xC781FFFFFFFFF, 0x20BFFFFFFFFF, 0x3FFFFFFFFFFF,
+ 0xFFFFFFF, 0xFFFFFFFC00000000, 0xFFFEFFFFFFFFFFFF, 0xFFFFFFFFFFFF78FF,
+ 0x460000003EB07FF, 0xFFFF000000000000, 0xFFFF01FF07FFFFFF, 0xF8007F,
+ 0x7FFFFFE00000000, 0x7FFFFFE,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -104,29 +106,30 @@ pub const CASED_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 0, 5, 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,
- 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, 0, 0, 0, 0, 0, 0, 0, 0, 6, 7,
+ 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 8, 9,
- 10, 11, 12, 1, 1, 1, 1, 13, 14, 15, 16, 17, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 10,
+ 11, 12, 13, 14, 1, 1, 1, 1, 15, 16, 17, 18, 19, 20, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 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, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
0, 0xFFFFFFFFFFFFFFFF, 0xFFFF, 0xFFFF000000000000, 0xFFFFFFFFF0FFFFF,
- 0x7FFFFFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFF, 0xFFFFFFFFFFDFFFFF,
- 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF,
- 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF, 0xF7FFFFFFF7FFFFFD,
- 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF, 0xFF7, 0xF,
+ 0xF7FF000000000000, 0x1BFBFFFBFFB7F7FF, 0x7FFFFFFFFFFFF,
+ 0xFFFFFFFF00000000, 0xFFFFFFFF, 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF,
+ 0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F,
+ 0xFFFFFF3FFFFFFFFF, 0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF,
+ 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF, 0xFF7, 0x7FFFFBFF, 0xF,
],
};
@@ -142,7 +145,7 @@ pub const CLOSE_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0,
0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
6, 0, 7, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 10, 11, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -175,13 +178,14 @@ pub const CLOSE_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 13, 14, 0, 0, 15, 16, 0, 0,
+ 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 14, 15, 0, 0, 16, 17, 0, 0,
],
tree2_level2: &[
0, 0x2800000000000000, 0x10000000, 0x4000000000000040, 0x4000,
0x40000000A00, 0x2AAA0000000000, 0xAA8000000040, 0x1555550,
- 0x200000000A000000, 0x2A800000000, 0xCAA2AA00, 0x4000000000000000,
- 0x5540000001000000, 0x54000115, 0x2000000000000200, 0x920000000,
+ 0x200000000A000000, 0x2A800000000, 0x15400000, 0xCAA2AA00,
+ 0x4000000000000000, 0x5540000001000000, 0x54000115, 0x2000000000000200,
+ 0x920000000,
],
tree3_level1: &[
],
@@ -275,7 +279,7 @@ pub const CURRENCY_SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 6, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -297,7 +301,7 @@ pub const CURRENCY_SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
@@ -311,15 +315,15 @@ pub const CURRENCY_SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 9, 0, 0, 10, 0, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 10, 0, 0, 11, 0, 0, 12,
],
tree2_level2: &[
0, 0x80C000000000000, 0x2000000000000, 0x200000000000000,
- 0x8000000000000000, 0x8000000, 0xFFFFFFFF00000000, 0x100000000000000,
+ 0x8000000000000000, 0x8000000, 0xFFFFFFFF00000000, 0x1, 0x100000000000000,
0x1000000000000000, 0x20000000000, 0x10, 0x6300000000,
],
tree3_level1: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
@@ -336,11 +340,13 @@ pub const CURRENCY_SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,
+ 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0x1000000000000,
+ 0, 0x1E0000000, 0x8000000000000000, 0x1000000000000,
],
};
@@ -356,7 +362,7 @@ pub const DASH_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 5, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 6, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -389,17 +395,35 @@ pub const DASH_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 0, 0, 9, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 10, 0, 0, 0,
],
tree2_level2: &[
- 0, 0x1, 0x40, 0x3F0000, 0xC00000004800000, 0x1000010000000, 0x100000000,
- 0x6000000000000, 0x801000000, 0x2000,
+ 0, 0x1, 0x40, 0x3F0000, 0xC00000004800000, 0x20000001, 0x1000010000000,
+ 0x100000000, 0x6000000000000, 0x801000000, 0x2000,
],
tree3_level1: &[
+ 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1,
],
tree3_level2: &[
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0,
],
tree3_level3: &[
+ 0, 0x200000000000,
],
};
@@ -455,7 +479,7 @@ pub const DECIMAL_NUMBER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0x3FF000000000000, 0x3FF000003FF0000,
],
tree3_level1: &[
- 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -472,18 +496,20 @@ pub const DECIMAL_NUMBER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 4, 0, 0, 5, 0, 0, 0,
2, 0, 0, 0, 0, 0, 5, 0, 5, 0, 0, 0, 0, 0, 5, 0, 6, 2, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0,
+ 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 5, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 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, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
0, 0x3FF00000000, 0x3FF000000000000, 0xFFC000000000, 0xFFC0000000000000,
@@ -613,10 +639,10 @@ pub const FORMAT: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0x1000003F, 0, 0, 0x20000000, 0x8000, 0, 0, 0,
],
tree2_level1: &[
- 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -652,14 +678,14 @@ pub const FORMAT: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 6,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 7,
],
tree2_level2: &[
- 0, 0x400000000, 0x4000, 0x7C000000F800, 0xFFDF00000000,
+ 0, 0x30000, 0x400000000, 0x4000, 0x7C000000F800, 0xFFDF00000000,
0x8000000000000000, 0xE00000000000000,
],
tree3_level1: &[
- 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -667,7 +693,7 @@ pub const FORMAT: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
],
@@ -677,18 +703,21 @@ pub const FORMAT: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 4, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,
- 0, 0, 0, 0, 0, 0, 5, 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, 6, 7, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0x2000000000000000, 0x2000, 0xF00000000, 0x7F8000000000000,
- 0xFFFFFFFF00000002, 0xFFFFFFFFFFFFFFFF,
+ 0, 0x2000000000000000, 0x2000, 0x1FF000000000000, 0xF00000000,
+ 0x7F8000000000000, 0xFFFFFFFF00000002, 0xFFFFFFFFFFFFFFFF,
],
};
@@ -765,91 +794,94 @@ pub const LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree2_level1: &[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 23, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 34, 34, 34,
- 34, 35, 36, 37, 38, 39, 40, 41, 42, 34, 34, 34, 34, 34, 34, 34, 34, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 3, 61,
- 62, 63, 64, 65, 66, 67, 68, 34, 34, 34, 3, 34, 34, 34, 34, 69, 70, 71, 72,
- 3, 73, 74, 3, 75, 76, 77, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 78, 79, 34, 80, 81, 82, 83, 84, 85, 3, 3, 3, 3, 3, 3, 3, 86, 42, 87, 88,
- 89, 34, 90, 91, 3, 3, 3, 3, 3, 3, 3, 3, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 53, 3, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 92, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 93, 94, 34, 34, 34, 34, 95, 96, 97,
- 64, 98, 34, 99, 100, 101, 48, 102, 103, 104, 105, 106, 107, 108, 109, 110,
- 111, 112, 113, 34, 114, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 115, 116, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 34, 34, 34, 34, 34, 117, 34, 118, 119,
- 120, 121, 122, 34, 34, 34, 34, 123, 124, 125, 126, 3, 127, 34, 128, 129,
- 130, 131, 132,
+ 21, 22, 23, 24, 23, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 35, 35,
+ 35, 35, 36, 37, 38, 39, 40, 41, 42, 43, 35, 35, 35, 35, 35, 35, 35, 35,
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 3, 58, 59, 60, 30,
+ 61, 62, 63, 64, 65, 66, 67, 68, 35, 35, 35, 30, 35, 35, 35, 35, 69, 70,
+ 71, 72, 30, 73, 74, 30, 75, 76, 77, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 78,
+ 79, 80, 81, 82, 83, 30, 30, 30, 30, 30, 30, 30, 84, 43, 85, 86, 87, 35,
+ 88, 89, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 30, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 90, 91, 35, 35, 35, 35, 92, 93,
+ 94, 64, 95, 35, 96, 97, 98, 49, 99, 100, 101, 102, 103, 104, 105, 106,
+ 107, 108, 109, 110, 35, 111, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 112, 113, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 35, 35, 35, 35, 35, 114, 35, 115, 116,
+ 117, 118, 119, 35, 35, 35, 35, 120, 121, 122, 123, 30, 124, 35, 125, 126,
+ 127, 128, 129,
],
tree2_level2: &[
- 0x110043FFFFF, 0x7FF01FFFFFF, 0x3FDFFFFF00000000, 0, 0x23FFFFFFFFFFFFF0,
- 0xFFFE0003FF010000, 0x23C5FDFFFFF99FE1, 0x10030003B0004000,
- 0x36DFDFFFFF987E0, 0x1C00005E000000, 0x23EDFDFFFFFBBFE0,
- 0x200000300010000, 0x23EDFDFFFFF99FE0, 0x20003B0000000, 0x3FFC718D63DC7E8,
- 0x10000, 0x23FFFDFFFFFDDFE0, 0x307000000, 0x23EFFDFFFFFDDFE1,
- 0x6000340000000, 0x27FFFFFFFFFDDFE0, 0xFC00000380704000,
- 0x2FFBFFFFFC7FFFE0, 0x7F, 0xDFFFFFFFFFFFE, 0x200DECAEFEF02596, 0xF000005F,
- 0x1, 0x1FFFFFFFFEFF, 0x1F00, 0x800007FFFFFFFFFF, 0xFFE1C0623C3F0000,
- 0xFFFFFFFF00004003, 0xF7FFFFFFFFFF20BF, 0xFFFFFFFFFFFFFFFF,
- 0xFFFFFFFF3D7F3DFF, 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D,
- 0xFFFFFFFFFF3DFFFF, 0x7FFFFFF, 0xFFFFFFFF0000FFFF, 0x3F3FFFFFFFFFFFFF,
- 0xFFFFFFFFFFFFFFFE, 0xFFFF9FFFFFFFFFFF, 0xFFFFFFFF07FFFFFE,
- 0x1FE07FFFFFFFFFF, 0x3FFFF0003DFFF, 0x1DFFF0003FFFF, 0xFFFFFFFFFFFFF,
- 0x10800000, 0xFFFFFFFF00000000, 0x1FFFFFFFFFFFFFF, 0xFFFF05FFFFFFFF9F,
- 0x3FFFFFFFFFFFFF, 0x7FFFFFFF, 0x1F3FFFFFFF0000, 0xFFFF0FFFFFFFFFFF, 0x3FF,
- 0xFFFFFFFF007FFFFF, 0x1FFFFF, 0x8000000000, 0xFFFFFFFFFFFE0, 0xFE0,
+ 0x110043FFFFF, 0xFFFF07FF01FFFFFF, 0xFFFFFFFF00007EFF, 0x3FF,
+ 0x23FFFFFFFFFFFFF0, 0xFFFE0003FF010000, 0x23C5FDFFFFF99FE1,
+ 0x10030003B0004000, 0x36DFDFFFFF987E0, 0x1C00005E000000,
+ 0x23EDFDFFFFFBBFE0, 0x200000300010000, 0x23EDFDFFFFF99FE0,
+ 0x20003B0000000, 0x3FFC718D63DC7E8, 0x10000, 0x23FFFDFFFFFDDFE0,
+ 0x327000000, 0x23EFFDFFFFFDDFE1, 0x6000360000000, 0x27FFFFFFFFFDDFF0,
+ 0xFC00000380704000, 0x2FFBFFFFFC7FFFE0, 0x7F, 0xDFFFFFFFFFFFE,
+ 0x200DFFAFFFFFF7D6, 0xF000005F, 0x1, 0x1FFFFFFFFEFF, 0x1F00, 0,
+ 0x800007FFFFFFFFFF, 0xFFE1C0623C3F0000, 0xFFFFFFFF00004003,
+ 0xF7FFFFFFFFFF20BF, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF3D7F3DFF,
+ 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D, 0xFFFFFFFFFF3DFFFF, 0x7FFFFFF,
+ 0xFFFFFFFF0000FFFF, 0x3F3FFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFE,
+ 0xFFFF9FFFFFFFFFFF, 0xFFFFFFFF07FFFFFE, 0x1FE07FFFFFFFFFF,
+ 0x3FFFF8003FFFF, 0x1DFFF0003FFFF, 0xFFFFFFFFFFFFF, 0x10800000,
+ 0xFFFFFFFF00000000, 0x1FFFFFFFFFFFFFF, 0xFFFF05FFFFFFFF9F,
+ 0x3FFFFFFFFFFFFF, 0x7FFFFFFF, 0x1F3FFFFFFF0000, 0xFFFF0FFFFFFFFFFF,
+ 0xFFFFFFFF007FFFFF, 0x1FFFFF, 0x8000000000, 0xFFFFFFFFFFFE0, 0x1FE0,
0xFC00C001FFFFFFF8, 0x3FFFFFFFFF, 0xFFFFFFFFF, 0x3FFFFFFFFC00E000,
- 0xE7FFFFFFFFFF01FF, 0x63DE0000000000, 0xFFFFFFFF3F3FFFFF,
+ 0xE7FFFFFFFFFF01FF, 0x46FDE0000000000, 0xFFFFFFFF3F3FFFFF,
0x3FFFFFFFAAFF3F3F, 0x5FDFFFFFFFFFFFFF, 0x1FDC1FFF0FCF1FDC,
0x8002000000000000, 0x1FFF0000, 0xF3FFBD503E2FFC84, 0x43E0, 0x18,
- 0xFFFF7FFFFFFFFFFF, 0xFFFFFFFF7FFFFFFF, 0xC781FFFFFFFFF,
- 0xFFFF20BFFFFFFFFF, 0x80FFFFFFFFFF, 0x7F7F7F7F007FFFFF, 0x7F7F7F7F,
- 0x800000000000, 0x183E000000000060, 0xFFFFFFFEE07FFFFF,
- 0xF7FFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFE0, 0x7FFFFFF00007FFF,
- 0xFFFF000000000000, 0xFFFFFFFFFFFF, 0x1FFF, 0x3FFFFFFFFFFF0000,
- 0xC00FFFF1FFF, 0x80007FFFFFFFFFFF, 0xFFFFFFFF3FFFFFFF, 0xFFFFFFFCFF800000,
- 0x3FFFFFFFFFFF9FF, 0xFF80000000000000, 0x7FFFFF7BB, 0xFFFFFFFFFFFFC,
+ 0xC781FFFFFFFFF, 0xFFFF20BFFFFFFFFF, 0x80FFFFFFFFFF, 0x7F7F7F7F007FFFFF,
+ 0x7F7F7F7F, 0x800000000000, 0x183E000000000060, 0xFFFFFFFEE07FFFFF,
+ 0xF7FFFFFFFFFFFFFF, 0xFFFEFFFFFFFFFFE0, 0xFFFFFFFF00007FFF,
+ 0xFFFF000000000000, 0x1FFF, 0x3FFFFFFFFFFF0000, 0xC00FFFF1FFF,
+ 0x80007FFFFFFFFFFF, 0xFFFFFFFF3FFFFFFF, 0xFFFFFFFCFF800000,
+ 0xFFFFFFFFFFFFF9FF, 0xFFFC000003EB07FF, 0x7FFFFF7BB, 0xFFFFFFFFFFFFC,
0x68FC000000000000, 0xFFFF003FFFFFFC00, 0x1FFFFFFF0000007F,
0x7FFFFFFFFFFF0, 0x7C00FFDF00008000, 0x1FFFFFFFFFF, 0xC47FFFFF00000FF7,
0x3E62FFFFFFFFFFFF, 0x1C07FF38000005, 0xFFFF7F7F007E7E7E,
- 0xFFFF003FF7FFFFFF, 0x7FFFFFFFF, 0xFFFF000FFFFFFFFF, 0xFFFFFFFFFFFF87F,
+ 0xFFFF03FFF7FFFFFF, 0x7FFFFFFFF, 0xFFFF000FFFFFFFFF, 0xFFFFFFFFFFFF87F,
0xFFFF3FFFFFFFFFFF, 0x3FFFFFF, 0x5F7FFDFFA0F8007F, 0xFFFFFFFFFFFFFFDB,
0x3FFFFFFFFFFFF, 0xFFFFFFFFFFF80000, 0x3FFFFFFFFFFFFFFF,
0xFFFFFFFFFFFF0000, 0xFFFFFFFFFFFCFFFF, 0xFFF0000000000FF,
@@ -857,8 +889,8 @@ pub const LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0xFFFFFFC007FFFFFE, 0x7FFFFFFFFFFFFFFF, 0x1CFCFCFC,
],
tree3_level1: &[
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 5, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 12, 13, 14, 7, 15, 16, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 5, 11, 12, 5, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 13, 14, 15, 7, 16, 17, 7, 18, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
@@ -870,78 +902,90 @@ pub const LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
5, 5, 5, 5, 5, 5, 5, 5, 5,
],
tree3_level2: &[
- 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 2, 2, 11, 12, 13, 14, 4,
- 4, 2, 2, 2, 2, 15, 16, 4, 4, 17, 18, 19, 20, 21, 4, 22, 4, 23, 24, 25, 26,
- 27, 28, 29, 4, 2, 30, 31, 31, 14, 4, 4, 4, 4, 4, 4, 4, 32, 33, 4, 4, 34,
- 4, 35, 36, 37, 38, 39, 40, 41, 4, 42, 19, 43, 44, 4, 4, 45, 46, 47, 48, 4,
- 4, 49, 50, 47, 51, 52, 4, 53, 4, 4, 4, 54, 4, 55, 56, 4, 4, 4, 4, 57, 58,
- 59, 60, 4, 4, 4, 4, 61, 62, 63, 4, 64, 65, 66, 4, 4, 4, 4, 67, 4, 4, 4, 4,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 68, 4, 4, 4, 2, 2, 2, 69, 4, 4,
+ 0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 2, 2, 11, 12, 13, 14, 15,
+ 4, 2, 2, 2, 2, 16, 17, 18, 4, 19, 20, 21, 22, 23, 4, 24, 4, 25, 26, 27,
+ 28, 29, 30, 31, 4, 2, 32, 33, 33, 34, 4, 4, 4, 4, 4, 35, 4, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 4, 49, 21, 50, 51, 4, 4, 52, 53,
+ 54, 55, 4, 4, 56, 57, 54, 58, 59, 4, 60, 61, 4, 4, 62, 4, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 4, 4, 4, 4, 73, 74, 75, 4, 76, 77, 78, 4, 4, 4, 4,
+ 79, 4, 4, 80, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 81, 4, 4, 4, 2,
+ 2, 2, 82, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 83, 84, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 56, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 2, 2, 2, 49, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 70, 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, 61, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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,
- 60, 19, 4, 71, 47, 72, 63, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 4, 4, 2, 73,
- 74, 75, 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, 2, 2,
+ 2, 2, 2, 2, 2, 2, 72, 85, 86, 87, 54, 88, 75, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 2, 4, 4, 2, 89, 90, 91, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 76,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 31, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 19, 77, 2, 2, 2, 2, 2, 78, 4, 4, 4, 4,
+ 2, 2, 2, 2, 92, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 93, 32, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 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, 79, 80, 4, 4, 4, 4, 4, 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, 81, 82, 83, 84, 85, 2, 2,
- 2, 2, 86, 87, 88, 89, 90, 91, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 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, 92, 2, 69, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 93,
- 94, 95, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 96, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 4, 4, 94, 2, 2, 2, 2, 95, 96, 2, 2, 2, 2, 2, 97, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 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, 98, 99, 4, 4, 4, 4, 4, 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, 100, 101, 102, 103, 104, 2, 2, 2, 2,
+ 105, 106, 107, 108, 109, 110, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 21, 4, 4, 4, 4, 4, 4, 4, 111, 112,
+ 4, 4, 4, 4, 87, 62, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 113, 2, 2, 2, 114, 2, 115, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 116, 117, 118, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 119, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 45, 2, 2, 2, 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, 72, 2, 2, 2, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 97, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 120, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 98, 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, 121, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 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, 122, 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, 123, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 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, 99, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4,
],
tree3_level3: &[
0xB7FFFF7FFFFFEFFF, 0x3FFF3FFF, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFF, 0,
0xFFFFFFFF1FFFFFFF, 0x1FFFF, 0xFFFFE000FFFFFFFF, 0x3FFFFFFFFF03FD,
0xFFFFFFFF3FFFFFFF, 0xFF0F, 0xFFFF00003FFFFFFF, 0xFFFFFFFFF0FFFFF,
- 0xFFFF00FFFFFFFFFF, 0xFFFFFFFFF, 0x7FFFFFFFFFFFFF, 0xFF003FFFFF,
- 0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF, 0x7FFFFFFF, 0x37FFFF00000000,
- 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF, 0x3FFFFFFEEF0001,
- 0x1FFFFFFF00000000, 0x1FFFFFFF, 0x1FFFFFFEFF, 0x3FFFFFFFFFFFFF,
- 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0x7FFFFFFFFFFFF, 0xFFFF00801FFFFFFF,
- 0x3F, 0xFFFFFFFFFFFFF8, 0xFFFFFFFFFFF8, 0x1FFFFFF0000, 0x7FFFFFFFF8,
- 0x47FFFFFFFF0010, 0x7FFFFFFFFFFF8, 0x1400001E, 0xFFFFFFBFFFF,
- 0xFFFF01FFBFFFBD7F, 0x23EDFDFFFFF99FE0, 0x3E0010000, 0x1FFFFFFFFFFFFF,
- 0x780, 0xFFFFFFFFFFFF, 0xB0, 0x7FFFFFFFFFFF, 0xF000000, 0x10,
- 0x7FFFFFFFFFF, 0x7FFFFFF, 0xFFFFFFFFFFF, 0xFFFFFFFF00000000,
- 0x80000000FFFFFFFF, 0x407FFFFFFFFF801, 0xFFFFFFFFF0010000, 0x200003CF,
- 0x1FFFFFFFFFFFFFF, 0x7FFFFFFFFDFF, 0xFFFC000000000001, 0xFFFF,
- 0x1FFFFFFFFFB7F, 0xFFFFFDBF00000040, 0x10003FF, 0x7FFFF00000000,
- 0x3FFFFFF, 0xF, 0x7F, 0x3FFFFFFF0000, 0xE0FFFFF80000000F, 0x1001F,
- 0xFFF80000, 0x300000000, 0x3FFFFFFFFFFFF, 0xFFFF000000000000,
+ 0xFFFF00FFFFFFFFFF, 0xF7FF000FFFFFFFFF, 0x1BFBFFFBFFB7F7FF,
+ 0x7FFFFFFFFFFFFF, 0xFF003FFFFF, 0x7FDFFFFFFFFFFBF, 0x91BFFFFFFFFFFD3F,
+ 0x7FFFFF003FFFFF, 0x7FFFFFFF, 0x37FFFF00000000, 0x3FFFFFF003FFFFF,
+ 0xC0FFFFFFFFFFFFFF, 0x3FFFFFFEEF0001, 0x1FFFFFFF00000000, 0x1FFFFFFF,
+ 0x1FFFFFFEFF, 0x3FFFFFFFFFFFFF, 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF,
+ 0x7FFFFFFFFFFFF, 0xFFFFFFFFF, 0x303FFFFFFFFFF, 0xFFFF00801FFFFFFF,
+ 0xFFFF00000000003F, 0xFFFF000000000003, 0x7FFFFF0000001F,
+ 0xFFFFFFFFFFFFF8, 0x26000000000000, 0xFFFFFFFFFFF8, 0x1FFFFFF0000,
+ 0x7FFFFFFFF8, 0x47FFFFFFFF0090, 0x7FFFFFFFFFFF8, 0x1400001E,
+ 0xFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F, 0x23EDFDFFFFF99FE0, 0x3E0010000,
+ 0x1FFFFFFFFFFFFF, 0x380000780, 0xFFFFFFFFFFFF, 0xB0, 0x7FFFFFFFFFFF,
+ 0xF000000, 0x10, 0x10007FFFFFFFFFF, 0x7FFFFFF, 0x7F, 0xFFFFFFFFFFF,
+ 0xFFFFFFFF00000000, 0x80000000FFFFFFFF, 0x8000FFFFFF6FF27F, 0x2,
+ 0xFFFFFCFF00000000, 0xA0001FFFF, 0x407FFFFFFFFF801, 0xFFFFFFFFF0010000,
+ 0xFFFF0000200003FF, 0x1FFFFFFFFFFFFFF, 0x7FFFFFFFFDFF, 0xFFFC000000000001,
+ 0xFFFF, 0x1FFFFFFFFFB7F, 0xFFFFFDBF00000040, 0x10003FF, 0x7FFFF00000000,
+ 0x1000000000000, 0x3FFFFFF, 0xF, 0xFFFFFFFFFFFF0000, 0x1FFFFFFFFFFFF,
+ 0xFFFF00007FFFFFFF, 0x7FFFFFFFFFFFFFFF, 0x3FFFFFFF0000,
+ 0xE0FFFFF80000000F, 0x107FF, 0xFFF80000, 0xB00000000, 0xFFFFFFFFFFFFFF,
+ 0x3FFFFF, 0x6FEF000000000000, 0x7FFFFFFFF, 0xFFFF00F000070000,
0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF, 0x3FF01FF, 0xFFFFFFFFFFDFFFFF,
0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF,
0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF, 0xF7FFFFFFF7FFFFFD,
- 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF, 0xFF7, 0x1F,
- 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0x7FFFFF,
- 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF,
+ 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF, 0xFF7,
+ 0x3F801FFFFFFFFFFF, 0x4000, 0x7FFF6F7F00000000, 0x1F, 0x80F,
+ 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0xFFFFFFFF,
+ 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF, 0x7FF,
],
};
@@ -1139,9 +1183,9 @@ pub const LOWERCASE_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
0xFEFFF80000000000, 0x7FFFFFF, 0xAAAAAAAAAAAAAAAA, 0xAAAAAAAABFEAAAAA,
0xFF00FF003F00FF, 0x3FFF00FF00FF003F, 0x40DF00FF00FF00FF,
0xDC00FF00CF00DC, 0x321080000008C400, 0x43C0, 0x10, 0xFFFF000000000000,
- 0xFDA15627FFFFFFF, 0x8501AAAAAAAAA, 0x20BFFFFFFFFF, 0x2AAAAAAAAAAA,
- 0xAAAAAAA, 0xAAABAAA800000000, 0x95FEAAAAAAAAAAAA, 0x2A082AAAABA50AA,
- 0x400000000000000, 0xFFFF003F07FFFFFF, 0xFFFFFFFFFFFFFFFF, 0xF8007F,
+ 0xFDA1562FFFFFFFF, 0x8501AAAAAAAAA, 0x20BFFFFFFFFF, 0x2AAAAAAAAAAA,
+ 0xAAAAAAA, 0xAAABAAA800000000, 0x95FEAAAAAAAAAAAA, 0xAAA082AAAABA50AA,
+ 0x440000002AA050A, 0xFFFF01FF07FFFFFF, 0xFFFFFFFFFFFFFFFF, 0xF8007F,
0x7FFFFFE,
],
tree3_level1: &[
@@ -1158,30 +1202,31 @@ pub const LOWERCASE_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 0, 0, 0, 0, 0,
- 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 3, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFFFFFF0000000000, 0xFFFF, 0xFFFFFFFFF000000, 0x7FFFFFFFFFFFF,
- 0xFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFC000000, 0xFFFFDFC000,
- 0xEBC000000FFFFFFC, 0xFFFFFC000000FFEF, 0xFFFFFFC000000F, 0xFFFFFFC0000,
- 0xFC000000FFFFFFC0, 0xFFFFC000000FFFFF, 0xFFFFFFC000000FF, 0xFFFFFFC00000,
- 0x3FFFFFFC00, 0xF0000003F7FFFFFC, 0xFFC000000FDFFFFF, 0xFFFF0000003F7FFF,
- 0xFFFFFC000000FDFF, 0xBF7, 0xFFFFFFFC00000000, 0xF,
+ 0, 0xFFFFFF0000000000, 0xFFFF, 0xFFFFFFFFF000000, 0x1BFBFFFBFF800000,
+ 0x7FFFFFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFC000000,
+ 0xFFFFDFC000, 0xEBC000000FFFFFFC, 0xFFFFFC000000FFEF, 0xFFFFFFC000000F,
+ 0xFFFFFFC0000, 0xFC000000FFFFFFC0, 0xFFFFC000000FFFFF, 0xFFFFFFC000000FF,
+ 0xFFFFFFC00000, 0x3FFFFFFC00, 0xF0000003F7FFFFFC, 0xFFC000000FDFFFFF,
+ 0xFFFF0000003F7FFF, 0xFFFFFC000000FDFF, 0xBF7, 0x7FFFFBFF,
+ 0xFFFFFFFC00000000, 0xF,
],
};
@@ -1194,68 +1239,83 @@ pub const MARK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree2_level1: &[
0, 1, 2, 3, 4, 5, 6, 7, 6, 8, 6, 9, 6, 10, 11, 12, 13, 14, 6, 14, 15, 16,
- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 31, 32, 33, 34, 35,
- 2, 36, 2, 37, 2, 2, 2, 38, 39, 40, 2, 41, 42, 43, 44, 45, 2, 2, 46, 2, 2,
- 2, 47, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 48, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 49, 2, 50, 2, 51, 2, 2, 2, 2, 2, 2, 2,
- 2, 52, 2, 53, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 54, 55, 56, 2, 2, 2, 2, 57, 2, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 2,
- 2, 2, 68, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 69, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 70, 2, 2, 2, 2, 2, 2, 2,
+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 31, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 32, 33, 34, 35, 36, 30, 37, 30, 38, 30, 30, 30, 39, 40, 41, 42,
+ 43, 44, 45, 46, 47, 30, 30, 48, 30, 30, 30, 49, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 50, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 51,
+ 30, 52, 30, 53, 30, 30, 30, 30, 30, 30, 30, 30, 54, 30, 55, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 56,
+ 57, 58, 30, 30, 30, 30, 59, 30, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69,
+ 30, 30, 30, 70, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 71, 30, 30, 30,
+ 30, 30, 30, 30, 30, 30, 30, 30, 72, 30, 30, 30, 30, 30, 30, 30,
],
tree2_level2: &[
- 0x3EEFFBC00000, 0xE000000, 0, 0xFFFFFFFBFFF80000, 0xDC0000000000000F,
- 0xC00FEFFFF, 0xD00000000000000E, 0x4000000C0080399F, 0x23000000023987,
- 0xFC00000C00003BBF, 0xC00C0399F, 0xC000000000000004, 0x803DC7,
- 0xC00000000000001F, 0xC00603DDF, 0xD80000000000000F, 0xC00803DDF, 0xC,
- 0xC0000FF5F8400, 0x7F2000000000000, 0x7F80, 0x1BF2000000000000, 0x3F00,
- 0xC2A0000003000000, 0xFFFE000000000000, 0x1FFFFFFFFEFFE0DF, 0x40,
- 0x7FFFF80000000000, 0x1E3F9DC3C00000, 0x3C00BFFC, 0xE0000000,
- 0x1C0000001C0000, 0xC0000000C0000, 0xFFF0000000000000, 0x200FFFFF, 0x3800,
- 0x20000000060, 0xFFF0FFF00000000, 0xF800000, 0x9FFFFFFF7FE00000,
- 0x7FFF000000000000, 0xFFF000000000001F, 0xFF8000000001F, 0x3FFE00000007,
- 0xFFFC000000000, 0xFFFFF000000000, 0x39C21FFFFF70000, 0xFBFFFFFFFFFFFFFF,
- 0x1FFFFFFFF0000, 0x3800000000000, 0x8000000000000000, 0xFFFFFFFF00000000,
- 0xFC0000000000, 0x6000000, 0x3FF7800000000000, 0xC0000000,
- 0x3000000000000, 0xF800000844, 0xFFF0000000000003, 0x8003FFFF0000003F,
- 0x3FC000000000, 0xFFF80, 0xFFF800000000000F, 0x2000000001,
- 0x7FFE0000000000, 0x3800000000003008, 0xC19D000000000000,
- 0x60F80000000002, 0x37F800000000, 0x40000000, 0xFFFF0000FFFF,
+ 0x3EEFFBC00000, 0xE000000, 0xFF000000, 0xFFFFFFFBFFFFFC00,
+ 0xDC0000000000000F, 0xC00FEFFFF, 0xD00000000000000E, 0x4000000C0080399F,
+ 0x23000000023987, 0xFC00000C00003BBF, 0xC00E0399F, 0xC000000000000004,
+ 0x803DC7, 0xD00000000000001F, 0xC00603DDF, 0xD80000000000000F,
+ 0xC00803DDF, 0xE, 0xC0000FF5F8400, 0x7F2000000000000, 0x7F80,
+ 0x1FF2000000000000, 0x3F00, 0xC2A0000003000000, 0xFFFE000000000000,
+ 0x1FFFFFFFFEFFE0DF, 0x40, 0x7FFFF80000000000, 0x1E3F9DC3C00000,
+ 0x3C00BFFC, 0, 0xE0000000, 0x1C0000003C0000, 0xC0000000C0000,
+ 0xFFF0000000000000, 0x200FFFFF, 0xB800, 0x20000000060, 0xFFF0FFF00000000,
+ 0xF800000, 0x9FFFFFFF7FE00000, 0xFFFF000000000000, 0x7FFF,
+ 0xFFF000000000001F, 0xFF8000000001F, 0x3FFE00000007, 0xFFFC000000000,
+ 0xFFFFF000000000, 0x39021FFFFF70000, 0xFFFFFFFFFFFFFFFF, 0x1FFFFFFFF0000,
+ 0x3800000000000, 0x8000000000000000, 0xFFFFFFFF00000000, 0xFC0000000000,
+ 0x6000000, 0x3FF7800000000000, 0xC0000000, 0x3000000000000,
+ 0x10F800000844, 0xFFF0000000000003, 0x8003FFFF0000003F, 0x3FC000000000,
+ 0xFFF80, 0xFFF800000000000F, 0x2000000001, 0x7FFE0000000000,
+ 0x3800000000003008, 0xC19D000000000000, 0x60F80000000002, 0x37F800000000,
+ 0x40000000, 0xFFFF0000FFFF,
],
tree3_level1: &[
- 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 2, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 5, 6, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1263,48 +1323,53 @@ pub const MARK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 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,
],
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 3, 0, 0, 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, 0, 0, 5, 0, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15,
- 0, 0, 16, 17, 18, 0, 0, 19, 20, 21, 22, 0, 0, 23, 24, 21, 25, 26, 0, 27,
- 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 0, 0, 0, 0, 0, 32, 0, 33, 0,
- 34, 35, 36, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 7, 0, 0, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 0, 0, 19, 20, 21, 0, 0, 22, 23, 24, 25, 0, 0, 26, 27, 24, 28, 29, 0,
+ 30, 0, 0, 0, 31, 0, 0, 0, 32, 33, 0, 34, 35, 36, 37, 0, 0, 0, 0, 0, 38, 0,
+ 39, 0, 40, 41, 42, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 48, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 0, 0, 45, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52,
- 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
+ 0, 0, 0, 0, 0, 0, 0, 52, 53, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, 57, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 45, 0,
+ 0, 0, 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 61, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 63, 63, 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,
],
tree3_level3: &[
0, 0x2000000000000000, 0x100000000, 0x7C0000000000000, 0x870000000000F06E,
- 0x6000000000, 0xF000000000, 0x1FFC0, 0xFF00000000000007,
- 0x800000000000007F, 0x7FF000000000007, 0x1FFF8000000007, 0x8000000000060,
- 0xFFF8000000000007, 0x1E01, 0x40FFF00000000000, 0x7FF80000000,
- 0xD80000000000000F, 0x1F1FCC0080399F, 0xFFE0000000000000, 0x4000007F,
- 0xFFFF000000000000, 0xF, 0xFF3F800000000000, 0x30000001, 0x1,
- 0xFFF80000000000, 0xFFFE0000000, 0x7FFF00000000000, 0x7BF80000000007FE,
- 0xFFE0080, 0x3FFFC00, 0xFF7F800000000000, 0x7FFEFFFFFC0000,
- 0xB47E000000000000, 0xBF, 0xFB7C00, 0x78000000000000, 0x1F000000000000,
- 0x7F000000000000, 0x7FFFFFFFFFFE0000, 0x78000, 0x60000000,
- 0xF807E3E000000000, 0x3C0000000FE7, 0x1C, 0xF87FFFFFFFFFFFFF,
- 0x201FFFFFFFFFFF, 0xFFFEF8000010, 0x7DBF9FFFF7F, 0x7F0000, 0x7F0,
- 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF,
+ 0x6000000000, 0xF000000000, 0x180000000000, 0x1FFC0, 0x3C,
+ 0xFF00000000000007, 0x801900000000007F, 0x7FF000000000007, 0x4,
+ 0x1FFF8000000007, 0x8000000000060, 0xFFF8000000000007, 0xDE01,
+ 0x40FFF00000000000, 0x7FF80000000, 0xD80000000000000F, 0x1F1FCC0080399F,
+ 0xFFE0000000000000, 0x4000007F, 0xFFFF000000000000, 0xF,
+ 0xFF3F800000000000, 0x30000001, 0x1, 0xFFF80000000000, 0xFFFE0000000,
+ 0x7FFF00000000000, 0x79BF000000000000, 0xD, 0x11FCFE0000,
+ 0x7BF80000000007FE, 0xFFE0080, 0x3FFFC00, 0xFF7F800000000000,
+ 0x7FFEFFFFFC0000, 0xB47E000000000000, 0xBF, 0xFB7C00, 0x78000000000000,
+ 0x1F000000000000, 0x7F000000000000, 0xFFFFFFFFFFFE8000, 0x780FF,
+ 0x3001000000000, 0x60000000, 0xFFFF3FFFFFFFFFFF, 0x7F, 0xF807E3E000000000,
+ 0x3C0000000FE7, 0x1C, 0xF87FFFFFFFFFFFFF, 0x201FFFFFFFFFFF,
+ 0xFFFEF8000010, 0x7DBF9FFFF7F, 0x400000000000, 0xF00000000000, 0x7F0000,
+ 0x7F0, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF,
],
};
@@ -1400,13 +1465,13 @@ pub const MODIFIER_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0x6000000000, 0, 0, 0, 0x430000000000000,
],
tree2_level1: &[
- 0, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 7,
- 1, 1, 1, 1, 1, 1, 8, 1, 1, 9, 10, 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 12,
- 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 14,
- 1, 1, 1, 15, 1, 1, 15, 1, 1, 1, 1, 1, 1, 1, 16, 1, 17, 18, 1, 1, 1, 1, 1,
+ 0, 1, 1, 2, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 4, 1, 4, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 7, 1, 1, 1, 1, 1, 1, 1, 1, 8,
+ 1, 1, 1, 1, 1, 1, 9, 1, 1, 10, 11, 12, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 13,
+ 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 15,
+ 1, 1, 1, 16, 1, 1, 16, 1, 1, 1, 1, 1, 1, 1, 17, 1, 18, 19, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1424,9 +1489,9 @@ pub const MODIFIER_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 19, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, 1, 1, 1, 1, 20, 21, 22, 1, 23, 24, 25, 26,
- 1, 1, 1, 1, 1, 1, 1, 27, 1, 24, 1, 28, 1, 29, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 1, 1, 1, 1, 21, 22, 23, 1, 24, 25, 26, 27,
+ 1, 1, 1, 1, 1, 1, 1, 28, 1, 25, 1, 29, 1, 30, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1440,40 +1505,48 @@ pub const MODIFIER_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 24, 30, 1,
+ 1, 25, 31, 1,
],
tree2_level2: &[
- 0x11004000000, 0, 0x2000000000000, 0x40, 0x1000000000000000, 0x800000,
- 0x8, 0x8000000000, 0x3F00000000000000, 0xFFFFF00000000000,
+ 0x11004000000, 0, 0x200, 0x2000000000000, 0x40, 0x1000000000000000,
+ 0x800000, 0x8, 0x8000000000, 0x3F00000000000000, 0xFFFFF00000000000,
0x10007FFFFFFFFFF, 0xFFFFFFFFF8000000, 0x8002000000000000, 0x1FFF0000,
0x3000000000000000, 0x800000000000, 0x83E000000000020, 0x60000000,
0x7000000000000000, 0x200000, 0x1000, 0x8000000000000000, 0x30000000,
- 0xFF800000, 0x1000000000000, 0x100, 0x300000000000000, 0x4000008000,
- 0x18000020000000, 0xF0000000, 0xC0000000,
+ 0xFF800000, 0x1000000000000, 0x100, 0x31C000000000000, 0x4000008000,
+ 0x18000020000000, 0x200F0000000, 0xC0000000,
],
tree3_level1: &[
- 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 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, 2, 1, 1, 1, 3, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1,
+ ],
+ tree3_level2: &[
0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- ],
- tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2, 3,
+ 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 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, 7, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xF, 0xFFF80000, 0x300000000,
+ 0, 0x7FDFFFFFFFFFFBF, 0xF, 0xFFF80000, 0xB00000000, 0x6FEF000000000000,
+ 0x3F80000000000000, 0x800,
],
};
@@ -1484,13 +1557,14 @@ pub const MODIFIER_SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0,
],
tree2_level1: &[
+ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 3, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1508,9 +1582,9 @@ pub const MODIFIER_SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1521,13 +1595,13 @@ pub const MODIFIER_SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
- 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 0, 11,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 11, 0, 12,
],
tree2_level2: &[
- 0, 0xA000000000000000, 0x6000E000E000E003, 0x18000000, 0x3007FFFFF, 0x600,
- 0x8000000, 0xFFFC000000000000, 0x3, 0x4000000000000000, 0x1, 0x800000000,
+ 0, 0x100, 0xA000000000000000, 0x6000E000E000E003, 0x18000000, 0x3007FFFFF,
+ 0x600, 0xC0008000000, 0xFFFC000000000000, 0x7, 0x4000000000000000, 0x1,
+ 0x800000000,
],
tree3_level1: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -1564,68 +1638,83 @@ pub const NONSPACING_MARK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree2_level1: &[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 10, 11, 12, 13, 14, 15, 16, 11, 17, 18,
- 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 32, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 33, 34, 35, 36,
- 37, 2, 38, 2, 39, 2, 2, 2, 40, 41, 42, 2, 43, 44, 45, 46, 47, 2, 2, 48, 2,
- 2, 2, 49, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 51, 2, 52, 2, 53, 2, 2, 2, 2, 2, 2,
- 2, 2, 54, 2, 55, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 56, 57, 58, 2, 2, 2, 2, 59, 2, 2, 60, 61, 62, 63, 64, 65, 66, 67, 68,
- 2, 2, 2, 69, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 70, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 71, 2, 2, 2, 2, 2, 2, 2,
+ 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 34, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 35, 36, 37, 38, 39, 33, 40, 33, 41, 33, 33, 33, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 33, 33, 51, 33, 33, 33, 52, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 53, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 54, 33, 55, 33, 56, 33, 33, 33, 33, 33, 33, 33, 33, 57, 33, 58, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 59, 60, 61, 33, 33, 33, 33, 62, 33, 33, 63, 64, 65, 66, 67, 68, 69, 70,
+ 71, 33, 33, 33, 72, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 73, 33, 33,
+ 33, 33, 33, 33, 33, 33, 33, 33, 33, 74, 33, 33, 33, 33, 33, 33, 33,
],
tree2_level2: &[
- 0x3EEFFBC00000, 0xE000000, 0, 0xFFFFFFFBFFF80000, 0x1400000000000007,
- 0xC00FE21FE, 0x1000000000000002, 0x4000000C0000201E, 0x1000000000000006,
- 0x23000000023986, 0xFC00000C000021BE, 0x9000000000000002, 0xC0040201E,
- 0x4, 0x2001, 0xC000000000000011, 0xC00603DC1, 0xC00003040,
- 0x1800000000000003, 0xC0000201E, 0x5C0400, 0x7F2000000000000, 0x7F80,
- 0x1BF2000000000000, 0x3F00, 0x2A0000003000000, 0x7FFE000000000000,
- 0x1FFFFFFFFEFFE0DF, 0x40, 0x66FDE00000000000, 0x1E0001C3000000,
- 0x20002064, 0xE0000000, 0x1C0000001C0000, 0xC0000000C0000,
- 0x3FB0000000000000, 0x200FFE40, 0x3800, 0x20000000060, 0xE04018700000000,
- 0x9800000, 0x9FF81FE57F400000, 0x3FFF000000000000, 0x17D000000000000F,
- 0xFF80000000004, 0x3B3C00000003, 0x3A34000000000, 0xCFF00000000000,
- 0x31021FDFFF70000, 0xFBFFFFFFFFFFFFFF, 0x1FFE21FFF0000, 0x3800000000000,
- 0x8000000000000000, 0xFFFFFFFF00000000, 0x3C0000000000, 0x6000000,
- 0x3FF0800000000000, 0xC0000000, 0x3000000000000, 0x6000000844,
- 0x8003FFFF00000030, 0x3FC000000000, 0x3FF80, 0x13C8000000000007,
- 0x2000000000, 0x667E0000000000, 0x1000000000001008, 0xC19D000000000000,
- 0x40300000000002, 0x212000000000, 0x40000000, 0xFFFF0000FFFF,
+ 0x3EEFFBC00000, 0xE000000, 0xFF000000, 0xFFFFFFFBFFFFFC00,
+ 0x1400000000000007, 0xC00FE21FE, 0x1000000000000002, 0x4000000C0000201E,
+ 0x1000000000000006, 0x23000000023986, 0xFC00000C000021BE,
+ 0x9000000000000002, 0xC0060201E, 0x4, 0x2001, 0xD000000000000011,
+ 0xC00603DC1, 0xC00003040, 0x1800000000000003, 0xC0000201E, 0x2, 0x5C0400,
+ 0x7F2000000000000, 0x7F80, 0x1FF2000000000000, 0x3F00, 0x2A0000003000000,
+ 0x7FFE000000000000, 0x1FFFFFFFFEFFE0DF, 0x40, 0x66FDE00000000000,
+ 0x1E0001C3000000, 0x20002064, 0, 0xE0000000, 0xC0000001C0000,
+ 0xC0000000C0000, 0x3FB0000000000000, 0x200FFE40, 0xB800, 0x20000000060,
+ 0xE04018700000000, 0x9800000, 0x9FF81FE57F400000, 0xBFFF000000000000,
+ 0x7FFF, 0x17D000000000000F, 0xFF80000000004, 0x3B3C00000003,
+ 0x3A34000000000, 0xCFF00000000000, 0x31021FDFFF70000, 0xFFFFFFFFFFFFFFFF,
+ 0x1FFE21FFF0000, 0x3800000000000, 0x8000000000000000, 0xFFFFFFFF00000000,
+ 0x3C0000000000, 0x6000000, 0x3FF0800000000000, 0xC0000000,
+ 0x3000000000000, 0x106000000844, 0x8003FFFF00000030, 0x3FC000000000,
+ 0x3FF80, 0x33C8000000000007, 0x2000000000, 0x667E0000000000,
+ 0x1000000000001008, 0xC19D000000000000, 0x40300000000002, 0x212000000000,
+ 0x40000000, 0xFFFF0000FFFF,
],
tree3_level1: &[
- 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 2, 5, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 5, 6, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -1633,48 +1722,53 @@ pub const NONSPACING_MARK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 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,
],
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 3, 0, 0, 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, 0, 0, 5, 0, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 8, 9, 10, 0, 11, 12, 13, 14, 15,
- 0, 0, 16, 17, 18, 0, 0, 19, 20, 21, 22, 0, 0, 23, 24, 25, 26, 27, 0, 28,
- 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 0, 0, 0, 0, 0, 33, 0, 34, 0,
- 35, 36, 37, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 6, 0, 0, 0, 0, 0, 7, 0, 0, 8, 9, 0, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 0, 0, 19, 20, 21, 0, 0, 22, 23, 24, 25, 0, 0, 26, 27, 28, 29, 30, 0,
+ 31, 0, 0, 0, 32, 0, 0, 0, 33, 34, 0, 35, 36, 37, 38, 0, 0, 0, 0, 0, 39, 0,
+ 40, 0, 41, 42, 43, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 40, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,
+ 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 48, 49, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 44, 0, 0, 45, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 46, 47, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 52, 52,
- 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52,
+ 0, 0, 0, 0, 0, 0, 0, 53, 54, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 58, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 46, 0,
+ 0, 0, 0, 0, 60, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 62, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64, 64, 65, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0,
],
tree3_level3: &[
0, 0x2000000000000000, 0x100000000, 0x7C0000000000000, 0x870000000000F06E,
- 0x6000000000, 0xF000000000, 0x1FFC0, 0xFF00000000000002,
- 0x800000000000007F, 0x678000000000003, 0x1FEF8000000007, 0x8000000000000,
- 0x7FC0000000000003, 0x1E00, 0x40D3800000000000, 0x7F880000000,
- 0x1800000000000003, 0x1F1FC000000001, 0xFF00000000000000, 0x4000005C,
- 0x85F8000000000000, 0xD, 0xB03C000000000000, 0x30000001,
- 0xA7F8000000000000, 0x1, 0xBF280000000000, 0xFBCE0000000,
- 0x6FF800000000000, 0x79F80000000007FE, 0xE7E0080, 0x37FFC00,
- 0xBF7F000000000000, 0x6DFCFFFFFC0000, 0xB47E000000000000, 0xBF, 0xA30000,
- 0x18000000000000, 0x1F000000000000, 0x7F000000000000, 0x78000, 0x60000000,
- 0xF800038000000000, 0x3C0000000FE7, 0x1C, 0xF87FFFFFFFFFFFFF,
- 0x201FFFFFFFFFFF, 0xFFFEF8000010, 0x7DBF9FFFF7F, 0x7F0000, 0x7F0,
- 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF,
+ 0x6000000000, 0xF000000000, 0x180000000000, 0x1FFC0, 0x3C,
+ 0xFF00000000000002, 0x801900000000007F, 0x678000000000003, 0x4,
+ 0x1FEF8000000007, 0x8000000000000, 0x7FC0000000000003, 0x9E00,
+ 0x40D3800000000000, 0x7F880000000, 0x1800000000000003, 0x1F1FC000000001,
+ 0xFF00000000000000, 0x4000005C, 0x85F8000000000000, 0xD,
+ 0xB03C000000000000, 0x30000001, 0xA7F8000000000000, 0x1, 0xBF280000000000,
+ 0xFBCE0000000, 0x6FF800000000000, 0x5800000000000000, 0x8, 0x10CF00000,
+ 0x79F80000000007FE, 0xE7E0080, 0x37FFC00, 0xBF7F000000000000,
+ 0x6DFCFFFFFC0000, 0xB47E000000000000, 0xBF, 0xA30000, 0x18000000000000,
+ 0x1F000000000000, 0x7F000000000000, 0x8000, 0x78000, 0x1000000000,
+ 0x60000000, 0xFFFF3FFFFFFFFFFF, 0x7F, 0xF800038000000000, 0x3C0000000FE7,
+ 0x1C, 0xF87FFFFFFFFFFFFF, 0x201FFFFFFFFFFF, 0xFFFEF8000010, 0x7DBF9FFFF7F,
+ 0x400000000000, 0xF00000000000, 0x7F0000, 0x7F0, 0xFFFFFFFFFFFFFFFF,
+ 0xFFFFFFFFFFFF,
],
};
@@ -1753,26 +1847,26 @@ pub const NUMBER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree3_level2: &[
0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 4, 5, 6, 0, 7, 0, 0, 8, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 11, 12, 0, 13, 14, 0, 15, 16, 17, 0, 18,
- 19, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, 22, 0, 0, 23, 24, 0, 0, 0, 25, 0, 21,
- 26, 0, 0, 27, 0, 0, 0, 21, 0, 0, 0, 0, 0, 28, 0, 28, 0, 0, 0, 0, 0, 28, 0,
- 29, 30, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,
- 0, 0, 0, 28, 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, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 19, 0, 0, 0, 0, 20, 21, 0, 0, 0, 0, 22, 0, 0, 23, 24, 0, 25, 0, 26, 0, 21,
+ 27, 0, 0, 28, 0, 0, 0, 21, 0, 0, 0, 0, 0, 29, 0, 29, 0, 0, 0, 0, 0, 29, 0,
+ 30, 31, 0, 0, 0, 0, 0, 0, 32, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33,
+ 0, 0, 0, 29, 8, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 35, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 30, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 40, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 43, 44, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
0, 0xFFFFFFFFFFF80, 0x1FFFFFFFFFFFFFF, 0xC00, 0xFFFFFFE00000000,
@@ -1780,11 +1874,12 @@ pub const NUMBER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0xFF8000000000, 0xF800000000000000, 0xFC00000, 0x3000000000000000,
0xFFFFFFFFFFFCFFFF, 0x60000000000001FF, 0xE0000000, 0xF80000000000,
0xFF000000FF000000, 0xFE0000000000, 0xFC00000000000000, 0x3FF000000000000,
- 0x7FFFFFFF00000000, 0x7FE0000000, 0x1E0000, 0xFFFFFFFC0000,
+ 0x7FFFFFFF00000000, 0x7FE0000000, 0x1E0000, 0xFE0, 0xFFFFFFFC0000,
0xFFC0000000000000, 0x1FFFFE03FF0000, 0x3FF0000, 0x3FF, 0xFFF000000000000,
- 0x7FFFF00000000, 0x1FFFFFFF0000, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFF,
- 0x3FBFF0000, 0x7FFFFF, 0xFFFFF00000000, 0x1FFFFFF00000000,
- 0xFFFFFFFFFFFFC000, 0xFF80, 0xFFFE000000000000, 0x1EEFFFFFFFFFFF, 0x1FFF,
+ 0x7FFFF00000000, 0x1FFFFFFF0000, 0x1FFFFF, 0xFFFFFFFFFFFFFFFF,
+ 0x7FFFFFFFFFFF, 0x3FBFF0000, 0x7FFFFF, 0xFFFFF00000000, 0x1FFFFFF00000000,
+ 0xFFFFFFFFFFFFC000, 0xFF80, 0xFFFE000000000000, 0x1EEFFFFFFFFFFF,
+ 0x3FFFBFFFFFFFFFFE, 0x1FFF,
],
};
@@ -1838,8 +1933,9 @@ pub const OPEN_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
tree2_level2: &[
0, 0x1400000000000000, 0x8000000, 0x44000000, 0x2000000000000020, 0x2000,
0x20000000500, 0x15550000000000, 0x554000000020, 0xAAAAA8,
- 0x1000000005000000, 0x15400000000, 0x4, 0x25515500, 0x8000000000000000,
- 0xAAA0000000800000, 0x2A00008A, 0x800000000000100, 0x488000000,
+ 0x1000000005000000, 0x15400000000, 0xAA00004, 0x25515500,
+ 0x8000000000000000, 0xAAA0000000800000, 0x2A00008A, 0x800000000000100,
+ 0x488000000,
],
tree3_level1: &[
],
@@ -1853,7 +1949,7 @@ pub const OTHER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree1_level1: &[
0xFFFFFFFF, 0x8000000000000000, 0x2000FFFFFFFF, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0x300000000000000, 0x40000280F, 0, 0, 0, 0, 0, 0x1000000000000,
- 0x1800000, 0x11800, 0xFFE078000000FF00, 0x3000003F, 0, 0, 0x20000000,
+ 0x1800000, 0x11800, 0xFFE078000000FF00, 0x1000003F, 0, 0, 0x20000000,
0xC000, 0x1800, 0xFFFC000000000000, 0x1800000000000000,
],
tree2_level1: &[
@@ -1861,15 +1957,15 @@ pub const OTHER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
20, 21, 22, 23, 24, 25, 26, 4, 27, 28, 29, 4, 4, 4, 30, 4, 4, 4, 4, 4, 31,
32, 33, 34, 35, 36, 37, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 38, 39, 40, 41, 4,
42, 43, 39, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 4, 54, 4, 55, 56, 57,
- 58, 59, 4, 4, 4, 60, 4, 4, 4, 4, 61, 62, 63, 64, 65, 66, 67, 68, 4, 4, 69,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 70, 71, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 72, 73, 74, 75, 76, 4, 77, 78,
- 79, 80, 81, 4, 82, 83, 84, 4, 4, 4, 85, 4, 86, 87, 4, 88, 4, 89, 90, 76,
- 4, 4, 91, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 58, 59, 4, 4, 4, 4, 4, 4, 4, 4, 60, 61, 62, 63, 64, 65, 66, 67, 4, 4, 68,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 69, 70, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 71, 72, 4, 4, 4, 4, 73, 74, 75,
+ 76, 77, 4, 78, 79, 80, 4, 4, 4, 81, 4, 82, 83, 4, 84, 4, 85, 86, 87, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 45, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
@@ -1882,167 +1978,182 @@ pub const OTHER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 92, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 93, 94, 4, 4, 4, 4, 95, 4, 4, 96, 4, 4, 97,
- 98, 99, 96, 4, 100, 4, 101, 4, 102, 103, 104, 4, 105, 106, 107, 4, 108, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 88, 89, 4, 4, 4, 4, 90, 4, 4, 91, 4, 4, 4, 92, 93, 91, 4,
+ 94, 4, 95, 4, 96, 97, 98, 4, 99, 100, 48, 4, 101, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 90,
- 109, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53,
- 53, 53, 53, 53, 53, 53, 53, 4, 4, 4, 4, 4, 110, 4, 111, 112, 113, 4, 114,
- 4, 4, 4, 4, 4, 115, 116, 117, 36, 118, 4, 119, 86, 4, 91, 120,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 86, 102, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
+ 103, 103, 103, 103, 103, 103, 103, 103, 103, 4, 4, 4, 4, 4, 104, 4, 105,
+ 106, 107, 4, 108, 4, 4, 4, 4, 4, 4, 109, 110, 36, 111, 4, 112, 82, 4, 113,
+ 114,
],
tree2_level2: &[
- 0x8000C00000000000, 0xFFFFF800B0000000, 0xC0200000FFFFFFFF, 0x40007FFFF,
- 0, 0xC3A020000066010, 0x800000304F7F8660, 0x2C92020000067811,
+ 0x8000C00000000000, 0xF800B0000000, 0xFF8000, 0x400000000, 0,
+ 0xC3A020000066010, 0x800000304F7F8660, 0x2C92020000067811,
0xFF80003FA1FDC678, 0xC12020000044011, 0x1FC0030FFFEC440,
- 0xC12020000066011, 0xFF0000304F3FC660, 0x3C0038E729C23813,
- 0xF800003FFF7EC238, 0x1C00020000022000, 0xFF0030F89FC220,
- 0xC10020000022000, 0xFFF90030BF9FC220, 0x22010, 0x30000F0220,
- 0xD004000003800013, 0xFFE3003F00A07B80, 0x7800000000000001,
- 0xFFFFFFFFF0000000, 0xC4001351010FDA69, 0xFFFFFFFF0C00C0A0,
+ 0xC12020000066011, 0xFF0000304F1FC660, 0x3C0038E729C23813,
+ 0xF800003FFF7EC238, 0xC00020000022000, 0x7F0030D89FC220,
+ 0xC10020000022000, 0xFFF900309F9FC220, 0x22000, 0x30000F0220,
+ 0xD004000003800011, 0xFFE3003F00A07B80, 0x7800000000000001,
+ 0xFFFFFFFFF0000000, 0xC000005000000829, 0xFFFFFFFF0C00C0A0,
0x1E00000000100, 0x2000000001000000, 0xFFFFFFFFF8002000, 0xDF40,
0xC280C200, 0x80C200000000C200, 0x8000C2, 0xC20000, 0xE000000018000000,
0xFC000000, 0xC0C0000000000000, 0xE0000000, 0xFE00000000000000,
- 0xFF800000FFE02000, 0xFFF22000FFF00000, 0xFC00FC00C0000000, 0xFC00C000,
+ 0xFF8000007FC00000, 0xFFF22000FFF00000, 0xFC00FC00C0000000, 0xFC004000,
0xF80000000000, 0xFFC0000000000000, 0xF000F00080000000,
0xFFE0C0000000000E, 0xF00000000000, 0x3800FC00, 0x30000000,
- 0x6000000080000000, 0x8000C000FC00FC00, 0xFFFFFFFFFFFFFFFF,
- 0xE00000000000F000, 0xFF0000000000000, 0x700000000000000, 0x1C00,
- 0x180000000000FE00, 0xFC0000000000FF00, 0x400000000000000, 0xC0C00000,
- 0xC00000005500C0C0, 0x20000000000000, 0x8023000010300020, 0x7C000000F800,
- 0xCFFFF00000000, 0xE0008000, 0xFFFE00000000FFFF, 0xF000,
- 0xFFFFFF8000000000, 0xFFFFF800, 0x30000000000000, 0xC00000,
- 0x8000000000000200, 0x800000000000, 0x80000000, 0x1F0000000000000,
- 0xDF4000000000, 0x7FFE7F0000000000, 0x80808080FF800000, 0x80808080,
- 0xFFFFFFFFFFFF8000, 0x4000000, 0xFFF0000000000000, 0xF000FFFFFFC00000,
- 0x1, 0x1800000, 0x100000000001F, 0xF800000000008000, 0xFFF000000000,
- 0x8000000000000000, 0xFFFF000000000000, 0xE000, 0xFF80,
- 0xFFFFF00000000000, 0xFF00000000000000, 0xFC00000000000000,
- 0x7FFFFFFFFFFFFF, 0xFC00F00000000000, 0xFC003FC0, 0xE00000007FF00000,
- 0x800000003C004000, 0xFF80000000000000, 0xC00C000, 0xFF80000007FFFFF8,
- 0x8080FF818181, 0xFFC000000000, 0xFC00C00000000000, 0xF000000000000780,
- 0xC00000000000, 0xFFFFFFFFFC000000, 0xA08000001F07FF80, 0x24, 0x7FFFC,
- 0xFFFF, 0x30000, 0xC000FFFFFFFFFF00, 0x20F08000080000, 0xE000000000000000,
- 0xCFFF8080E3030303,
+ 0x6000000080000000, 0xC000FC00FC00, 0xFFFFFFFFFFFF8000,
+ 0x800000000000E000, 0xFF0000000000000, 0x700000000000000, 0x1C00,
+ 0x180000000000FE00, 0xF80000000000FF00, 0xC0C00000, 0xC00000005500C0C0,
+ 0x20000000000000, 0x8023000010300020, 0x7C000000F800, 0xCFFFF00000000,
+ 0xE0008000, 0xFFFE00000000FFFE, 0xF000, 0xFFFFFF8000000000, 0xFFFFF800,
+ 0x30000000000000, 0x400000, 0x1F0000000000000, 0xDF4000000000,
+ 0x7FFE7F0000000000, 0x80808080FF800000, 0x80808080, 0xFFFFFFFFC0000000,
+ 0x4000000, 0xFFF0000000000000, 0xF000FFFFFFC00000, 0x1, 0x1800000,
+ 0x100000000001F, 0x8000, 0xFFF000000000, 0x80000000, 0xE000, 0xFF80,
+ 0xFFFFF00000000000, 0xFF00000000000000, 0x3FFFFFC14F800,
+ 0xFC00E00000000000, 0xFC003FC0, 0xE00000007FF00000, 0x800000003C004000,
+ 0xFF80000000000000, 0xC00C000, 0xFF80000007FFFFF8, 0x8080FF818181,
+ 0xFC00C00000000000, 0xF000000000000780, 0xFFFFFFFFFFFFFFFF,
+ 0xC00000000000, 0xFFFFFFFFFC000000, 0xA08000001F07FF80, 0x24, 0x7FFF8,
+ 0x30000, 0xFFFFFFFF7F00, 0x20F08000080000, 0xE000000000000000,
+ 0x8000000000000000, 0xCFFF8080E3030303,
],
tree3_level1: &[
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 12, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 13, 14, 15, 7, 16, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 11, 12, 13, 14, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 15, 16, 17, 7, 18, 19, 7, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 18, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
],
tree3_level2: &[
0, 1, 2, 3, 4, 2, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 2, 2, 14, 15, 16, 17,
- 7, 7, 2, 2, 2, 2, 18, 19, 7, 7, 20, 21, 22, 23, 24, 7, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 7, 2, 34, 35, 36, 37, 7, 7, 7, 7, 38, 7, 7, 16, 39, 7, 7,
- 2, 40, 41, 42, 43, 44, 2, 45, 46, 7, 47, 48, 49, 50, 7, 7, 2, 51, 2, 52,
- 7, 7, 53, 54, 2, 55, 56, 57, 58, 7, 7, 7, 59, 7, 60, 61, 7, 7, 7, 7, 2,
- 62, 63, 64, 7, 7, 7, 7, 65, 66, 67, 7, 68, 69, 70, 7, 7, 7, 7, 71, 7, 7,
- 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 39, 7, 2, 72, 2, 2, 2, 73,
+ 18, 7, 2, 2, 2, 2, 19, 20, 21, 7, 22, 23, 24, 25, 26, 7, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 7, 2, 36, 37, 38, 39, 7, 7, 7, 7, 40, 41, 7, 16, 42,
+ 43, 44, 2, 45, 46, 47, 48, 49, 2, 50, 51, 7, 52, 53, 54, 55, 7, 7, 2, 56,
+ 2, 57, 7, 7, 58, 59, 2, 60, 61, 62, 63, 64, 7, 7, 65, 7, 66, 67, 68, 69,
+ 70, 71, 2, 72, 73, 74, 7, 7, 7, 7, 75, 76, 77, 7, 78, 79, 80, 7, 7, 7, 7,
+ 81, 7, 7, 82, 83, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 84, 7, 2, 85,
+ 2, 2, 2, 86, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 87, 37, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 88, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 74, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 75, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 64, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2,
- 2, 64, 76, 7, 77, 2, 78, 79, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 80, 7, 2,
- 81, 82, 83, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2,
+ 2, 2, 2, 2, 2, 2, 2, 74, 89, 90, 91, 2, 92, 93, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 2, 94, 7, 2, 95, 96, 97, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 84, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 35, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 85, 86, 2, 2, 2, 2, 2, 59, 7, 7, 7,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 98, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 99, 36, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 2, 87, 88, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 2, 2, 2, 89, 90, 91, 2, 92, 2, 93, 7, 94, 2, 95, 7, 7, 2, 96, 97, 98, 99,
- 100, 2, 2, 2, 2, 101, 2, 2, 2, 2, 102, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 103,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 104, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 2, 2, 2, 105, 2, 106, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 107,
- 108, 7, 7, 7, 7, 7, 109, 110, 111, 112, 7, 7, 7, 7, 113, 2, 114, 115, 116,
- 113, 117, 118, 119, 120, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 121, 2, 122, 2, 123, 124, 125, 126, 7, 127, 128, 129, 130, 7, 131, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 132,
+ 7, 7, 7, 100, 2, 2, 2, 2, 101, 102, 2, 2, 2, 2, 2, 65, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 2, 103, 104, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 105, 106, 2, 86, 2, 2, 2, 107, 108, 109, 2, 110,
+ 2, 111, 7, 112, 2, 113, 7, 7, 2, 114, 115, 116, 117, 118, 2, 2, 2, 2, 119,
+ 2, 2, 2, 2, 120, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 121, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 122, 7, 7, 7, 123, 7, 7, 7, 124, 125, 7, 7,
+ 7, 7, 126, 127, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 128, 2, 2, 2, 129, 2, 130, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 131, 132, 7,
+ 133, 7, 7, 7, 134, 135, 136, 137, 7, 7, 7, 7, 138, 2, 139, 140, 2, 2, 141,
+ 142, 143, 144, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 145, 2,
+ 146, 2, 147, 148, 149, 150, 7, 2, 2, 2, 2, 2, 151, 152, 153, 2, 2, 154,
+ 155, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 31, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 108, 2, 2, 2, 133, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 74, 2, 2, 2, 156, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 134, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 157, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 135, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 158, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 54, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 59, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 159, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 2, 2, 2, 136, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 160, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
],
tree3_level3: &[
0x4800008000001000, 0xFFFFFFFFC000C000, 0, 0xF800000000000000,
- 0x70000000000078, 0xFFFFFFFEF0008000, 0xC00000000000FFFF,
+ 0x70000000000078, 0xFFFFFFFEE0008000, 0xC00000000000FFFF,
0xFFFFFFFFFFFFFFFF, 0xE0000000, 0xF0000000FFFE0000, 0x1FF000000000,
0xF80000000000F800, 0x40000000, 0xFFFFFFFFFFC000F0, 0xFC00C0000000,
- 0xF000000000F00000, 0xFF0000000000, 0xFFFF7FF000000000,
- 0xFF80000000000000, 0xFFFFFF00FFC00000, 0x6E400000000002C0, 0x400000,
- 0xFFFF007F80000000, 0x7C80000FFFFFFFF, 0x7C00000070000000,
- 0xF00000000000000, 0x30000, 0x78C0000001100F90, 0xFE00FE00,
- 0xFFFFFFFF00000000, 0xFF80078000000000, 0x1C0000000000000,
+ 0xF000000000F00000, 0xFF0000000000, 0x8007FF000000000, 0xE404000400480800,
+ 0xFF80000000000000, 0xFFFFFF00FFC00000, 0xF802000000000040,
+ 0x6E400000000002C0, 0x400000, 0xFFFF007F80000000, 0x7C80000FFFFFFFF,
+ 0x7C00000070000000, 0xF00000000000000, 0x30000, 0x78C0000001100F90,
+ 0xFE00FE00, 0xFFFFFFFF00000000, 0xFF80078000000000, 0x1C0000000000000,
0xF8000000C00000, 0xFFFF01FFE1FC0000, 0xFFFFFFFFFFFFFE00,
0xFFF8000000000000, 0x3F8000000000000, 0xFC00FF0000000000,
- 0x80000000FFFFFFFF, 0xFFFFFFFFFC000000, 0x7FFF00000003C000,
- 0x2000000000000000, 0xFC00FE000000FFFC, 0x20000000000000,
- 0xFF8000000000FF80, 0xFFE000010000C000, 0x8000000000040000,
- 0xFC0040004280, 0xFC00F80000000000, 0x412020000066010, 0xFFE0E0301F7EC660,
- 0xFFFFFFFF94000000, 0xFFFFFFFFFC00FF00, 0xC0000000000000,
- 0xFFFFFFFFC0000000, 0xFFFFE000FC00FFE0, 0xFF00000000000000,
- 0xFFFFFFFFFFFFFC00, 0xF00018000000, 0xF000000000000000, 0xFFFFFFFF,
- 0x7FF8000000000000, 0xFF00, 0xFFFFFFF800000030, 0xFE00000000000000,
- 0x80000000000200, 0xE0000000FFC0, 0xFF80010000030000, 0x4B80000000000480,
- 0x240FC00FF00, 0xFFFFFC00FE048000, 0xFE000000FFFFFFFF, 0xFFE0800000000000,
- 0xFFFFFFFFFFFFFFF0, 0xFFFF800000000000, 0xFFFFFFFFFFFFFF80,
- 0xFFFF3C0080000000, 0xFFC0C0000000FFFF, 0x1F0000040400FFC0,
- 0xFFFFFFFFFFFF0000, 0xFFFFFFFFF8000000, 0x800000000000FFE0,
- 0xFFFFFFFF00007FFF, 0xFFFFFFFCFFFFFFFF, 0xFFFC000000000000,
- 0xFFFFFFFF80000000, 0xFFFFFFFFFFFF, 0xE000F80000000000,
- 0xFFFFFFFF0C00FE00, 0xFFC0000000000000, 0x18000000000, 0x7F8000000000000,
- 0xFFFFFE0000000000, 0xFFFFFFFFFFFFFFC0, 0xFFF00000FFFFFFFF,
- 0xFE000000FF800000, 0x200000, 0x1400219B20000000, 0x10,
- 0x8400000020201840, 0x203A0, 0xC000000000, 0x3000, 0xFFFF000107FFF000,
- 0xFFFFF82406000080, 0xFFFFFFFFFF800060, 0xFFFFFFFF3C00F800,
- 0x1FFFFFFFFFFFF, 0xFFE0000000000000, 0xF508016900000010,
- 0xA10808695569157B, 0xF0000411F0000400, 0xFFFCFFFFFFFFFFFF,
- 0xF00000000000, 0x18000FFF00000, 0xFFC0000000010001, 0xE000,
- 0xFFFFE00000000000, 0x3FFFFFFFFF, 0xF00000000000FFF8, 0xFFFFFFC0FFFCFE00,
- 0xFC00E000FFE00000, 0xFFF0000000000000, 0xFFFFFFFFFE000000, 0xF000,
- 0xFC00FF00, 0xFFFFC0000000FF00, 0x800000000000F000, 0xB86000000000000,
- 0xFC00FFF800000000, 0xFFF8, 0xFFFFC000FFFFFFFF, 0xFFFFFFFFFF800000,
- 0xC0000000, 0xFFFC00000000, 0xFFFFFFFE00000000, 0xFFFF000000000000,
+ 0x80000000FFFFFFFF, 0xFFFCC40000000000, 0xFFFFFC000000, 0xFFFFFFFFFC00,
+ 0xFF800000FFFFF000, 0x7FC000000003C000, 0x2000000000000000,
+ 0xFC00FE000000FFF8, 0x20000000000000, 0xFF8000000000FF00,
+ 0xFFE0000100000000, 0x8000000000040000, 0xFC0040004280,
+ 0xFC00F80000000000, 0x412020000066010, 0xFFE0E0301F7EC660,
+ 0xFFFFFFFC10000000, 0xFFFFFFFFFC00FF00, 0xC0000000000000,
+ 0xFFFFFFFFC0000000, 0xFFFFE000FC00FFE0, 0xFC00000000000000,
+ 0xFFFFFFFFFFFFFC00, 0xF00018000000, 0xFFFFFFFFFFFFFF80,
+ 0xF000000000000000, 0xFFFFFFFF, 0x7FF8000000000000, 0x640000000900D80,
+ 0xFFFFFFFFFC00FF80, 0x300FFFFFFFF, 0xFFFFFFE003000000, 0xFF00,
+ 0xFFF800000000, 0xFE00000000000000, 0x80000000000200, 0xE0000000FFC0,
+ 0xFF80010000030000, 0x4B80000000000480, 0x240FC00FF00, 0xFFFFFC00FE048000,
+ 0xFE000000FFFFFFFF, 0xFFFEFFFFFFFFFFFF, 0x7FFC000000000000,
+ 0xFFFFFFFFFC000000, 0xFFE0800000000000, 0xFFFFFFFFFFFFFFF0, 0xFFFF,
+ 0xFFFF800000000000, 0x3C0080000000, 0x8000000000000000,
+ 0xFFC0C0000000FC00, 0x1F0000040400FFC0, 0xFFFFFFFFFFFF0000,
+ 0xFFFFFFFFF8000000, 0x7800, 0xFFFFFFFF00007F00, 0xFFFCFFE0FFFFFFFF,
+ 0xFF00000000000000, 0xFFFFFFFFFFC00000, 0x9010FFFFFFFFFFFF,
+ 0xFFFFFFF800000000, 0xFF0FFFF8FFFF, 0xE000F80000000000,
+ 0xFFFFFFFF0C00FE00, 0xC00000000000, 0xFF80, 0xFFC0000000000000,
+ 0x18000000000, 0x7F8000000000000, 0xFFFFF80000000000, 0xFFFFFFFFFFFFFFC0,
+ 0xFFF00000FFFFFFFF, 0xFE000000FF800000, 0x200000, 0x1400219B20000000,
+ 0x10, 0x8400000020201840, 0x203A0, 0xC000000000, 0x3000,
+ 0xFFFF000107FFF000, 0xFFFFFFFF80000000, 0xFFFFF82406000080,
+ 0xC000E00000000000, 0xFFFFFFFFFFFF3C00, 0xFFFF80000000FFFF,
+ 0x7C00000000000000, 0x80009080FFFFFFFF, 0xFFFFFFFFFF800060,
+ 0xFFFFFFFF3C00F000, 0x1FFFFFFFFFFFF, 0xFFE0000000000000,
+ 0xC000000000000001, 0xF508016900000010, 0xA10808695569157B,
+ 0xF0000411F0000400, 0xFFFCFFFFFFFFFFFF, 0xF00000000000, 0x18000FFF00000,
+ 0xFFC0000000010001, 0xFFFFC00000000000, 0x3FFFFFFFFF, 0xF00000000000FFF8,
+ 0xFFFFFFC0FFFCFE00, 0xE000E0001F000000, 0xFFF0000000000000,
+ 0xFFFEF000FE000000, 0xF000, 0xFC00FF00, 0xFFFCC0000000FF00,
+ 0xE0E0C000FFF00000, 0xF800E0000000FF80, 0xFF80FF00FC00FFC0, 0x80000,
+ 0xFC00FFFFFFFFF800, 0xC0000000, 0xFFFC00000000, 0xFFFFFFFE00000000,
+ 0xFFFFFFFFFFFFF800, 0xFFFF000000000000,
],
};
@@ -2055,79 +2166,84 @@ pub const OTHER_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree2_level1: &[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 3, 31, 32, 33, 3, 34, 34, 34, 34,
- 34, 35, 36, 37, 38, 39, 40, 3, 41, 34, 34, 34, 34, 34, 34, 34, 34, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 3, 3, 59, 60,
- 61, 62, 63, 64, 3, 65, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 66,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 67, 68,
- 69, 70, 3, 3, 3, 3, 3, 3, 3, 3, 71, 41, 72, 73, 74, 34, 75, 67, 3, 3, 3,
- 3, 3, 3, 3, 3, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 52, 3, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 76, 77, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 78, 79, 34, 34, 34, 34, 80, 81, 49, 62, 3, 3, 82, 83, 84, 47, 85,
- 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 3, 3, 96, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
- 34, 34, 34, 34, 34, 34, 97, 98, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 34, 34, 34, 34, 34,
- 99, 34, 100, 101, 102, 103, 104, 34, 34, 34, 34, 105, 106, 107, 108, 3,
- 109, 34, 110, 3, 111, 112, 113,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 31, 35, 35, 35,
+ 35, 35, 36, 37, 38, 39, 40, 41, 31, 42, 35, 35, 35, 35, 35, 35, 35, 35,
+ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 31,
+ 31, 60, 61, 62, 63, 64, 65, 31, 66, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 67, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 68, 69, 70, 71, 31, 31, 31, 31, 31, 31, 31, 31, 72, 42, 73, 74, 75,
+ 35, 76, 68, 31, 31, 31, 31, 31, 31, 31, 31, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 31, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 77, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 78, 79, 35, 35, 35, 35, 80,
+ 81, 50, 63, 31, 31, 82, 83, 84, 48, 85, 86, 87, 88, 89, 90, 91, 92, 93,
+ 94, 95, 31, 31, 96, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
+ 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 97,
+ 98, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31,
+ 31, 31, 31, 31, 31, 31, 31, 35, 35, 35, 35, 35, 99, 35, 100, 101, 102,
+ 103, 104, 35, 35, 35, 35, 105, 106, 107, 108, 31, 109, 35, 110, 31, 111,
+ 112, 113,
],
tree2_level2: &[
- 0x3FFFFF, 0x7FF01FFFFFF, 0x3FDFFFFF00000000, 0, 0x23FFFFFFFFFFFFF0,
- 0xFFFC0003FF010000, 0x23C5FDFFFFF99FE1, 0x10030003B0004000,
- 0x36DFDFFFFF987E0, 0x1C00005E000000, 0x23EDFDFFFFFBBFE0,
- 0x200000300010000, 0x23EDFDFFFFF99FE0, 0x20003B0000000, 0x3FFC718D63DC7E8,
- 0x10000, 0x23FFFDFFFFFDDFE0, 0x307000000, 0x23EFFDFFFFFDDFE1,
- 0x6000340000000, 0x27FFFFFFFFFDDFE0, 0xFC00000380704000,
- 0x2FFBFFFFFC7FFFE0, 0x7F, 0xDFFFFFFFFFFFE, 0x3F, 0x200DECAEFEF02596,
- 0xF000001F, 0x1, 0x1FFFFFFFFEFF, 0x1F00, 0x800007FFFFFFFFFF,
- 0xFFE1C0623C3F0000, 0x4003, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFF3D7F3DFF,
- 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D, 0xFFFFFFFFFF3DFFFF, 0x7FFFFFF,
- 0xFFFF, 0xFFFFFFFFFFFFFFFE, 0xFFFF9FFFFFFFFFFF, 0xFFFFFFFF07FFFFFE,
- 0x1FE07FFFFFFFFFF, 0x3FFFF0003DFFF, 0x1DFFF0003FFFF, 0xFFFFFFFFFFFFF,
- 0x10000000, 0xFFFFFFFF00000000, 0x1FFFFFFFFFFFFF7, 0xFFFF05FFFFFFFF9F,
+ 0x3FFFFF, 0xFFFF07FF01FFFFFF, 0xFFFFFFFF00007EFF, 0x1FF,
+ 0x23FFFFFFFFFFFFF0, 0xFFFC0003FF010000, 0x23C5FDFFFFF99FE1,
+ 0x10030003B0004000, 0x36DFDFFFFF987E0, 0x1C00005E000000,
+ 0x23EDFDFFFFFBBFE0, 0x200000300010000, 0x23EDFDFFFFF99FE0,
+ 0x20003B0000000, 0x3FFC718D63DC7E8, 0x10000, 0x23FFFDFFFFFDDFE0,
+ 0x327000000, 0x23EFFDFFFFFDDFE1, 0x6000360000000, 0x27FFFFFFFFFDDFF0,
+ 0xFC00000380704000, 0x2FFBFFFFFC7FFFE0, 0x7F, 0xDFFFFFFFFFFFE, 0x3F,
+ 0x200DFFAFFFFFF7D6, 0xF000001F, 0x1, 0x1FFFFFFFFEFF, 0x1F00, 0,
+ 0x800007FFFFFFFFFF, 0xFFE1C0623C3F0000, 0x4003, 0xFFFFFFFFFFFFFFFF,
+ 0xFFFFFFFF3D7F3DFF, 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D,
+ 0xFFFFFFFFFF3DFFFF, 0x7FFFFFF, 0xFFFF, 0xFFFFFFFFFFFFFFFE,
+ 0xFFFF9FFFFFFFFFFF, 0xFFFFFFFF07FFFFFE, 0x1FE07FFFFFFFFFF,
+ 0x3FFFF8003FFFF, 0x1DFFF0003FFFF, 0xFFFFFFFFFFFFF, 0x10000000,
+ 0xFFFFFFFF00000000, 0x1FFFFFFFFFFFFF7, 0xFFFF05FFFFFFFF9F,
0x3FFFFFFFFFFFFF, 0x7FFFFFFF, 0x1F3FFFFFFF0000, 0xFFFF0FFFFFFFFFFF, 0x3FF,
- 0xFFFFFFFF007FFFFF, 0x1FFFFF, 0xFFFFFFFFFFFE0, 0xFE0, 0xFC00C001FFFFFFF8,
- 0x3FFFFFFFFF, 0xFFFFFFFFF, 0xFFFFFFFC00E000, 0x63DE0000000000,
+ 0xFFFFFFFF007FFFFF, 0x1FFFFF, 0xFFFFFFFFFFFE0, 0x1FE0, 0xFC00C001FFFFFFF8,
+ 0x3FFFFFFFFF, 0xFFFFFFFFF, 0xFFFFFFFC00E000, 0x46FDE0000000000,
0x1E0000000000000, 0xFFFF000000000000, 0xFFFFFFFFFF, 0x7F7F7F7F007FFFFF,
0x7F7F7F7F, 0x1000000000000040, 0xFFFFFFFE807FFFFF, 0x87FFFFFFFFFFFFFF,
- 0xFFFEFFFFFFFFFFE0, 0x7FFFFFF00007FFF, 0xFFFFFFFFFFFF, 0xFFFFFFFFFFDFFFFF,
- 0x1FFF, 0xFFFFFFFFFF0000, 0xC00FFFF0FFF, 0x400000000000, 0x8000,
+ 0xFFFEFFFFFFFFFFE0, 0xFFFFFFFF00007FFF, 0xFFFFFFFFFFDFFFFF, 0x1FFF,
+ 0xFFFFFFFFFF0000, 0xC00FFFF0FFF, 0x400000000000, 0x8000,
0xF880000000000000, 0x7FFFFF7BB, 0xFFFFFFFFFFFFC, 0x68FC000000000000,
0xFFFF003FFFFFFC00, 0x1FFFFFFF0000007F, 0x7FFFFFFFFFFF0,
0x7C00FF9F00000000, 0x1FFFFFFFFFF, 0xC47EFFFF00000FF7, 0x3E62FFFFFFFFFFFF,
@@ -2139,8 +2255,8 @@ pub const OTHER_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0xFFFEFFC000000000, 0x7FFFFFFF3FFFFFFF, 0x1CFCFCFC,
],
tree3_level1: &[
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 5, 10, 5, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 11, 12, 13, 7, 14, 15, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 5, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 12, 13, 14, 7, 15, 16, 7, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
@@ -2154,47 +2270,52 @@ pub const OTHER_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree3_level2: &[
0, 1, 2, 3, 4, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9, 10, 4, 11, 12, 4, 13, 14, 4,
4, 2, 2, 2, 2, 15, 16, 4, 4, 17, 18, 19, 20, 21, 4, 22, 4, 23, 24, 25, 26,
- 27, 28, 29, 4, 2, 30, 4, 4, 14, 4, 4, 4, 4, 4, 4, 4, 31, 32, 4, 4, 33, 4,
- 34, 35, 36, 37, 38, 39, 40, 4, 41, 19, 42, 43, 4, 4, 44, 45, 46, 47, 4, 4,
- 48, 49, 46, 50, 51, 4, 52, 4, 4, 4, 53, 4, 4, 54, 4, 4, 4, 4, 55, 56, 57,
- 58, 4, 4, 4, 4, 59, 60, 61, 4, 62, 63, 64, 4, 4, 4, 4, 65, 4, 4, 4, 4, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 66, 4, 4, 4, 2, 2, 2, 67, 4, 4, 4,
+ 27, 28, 29, 4, 2, 30, 4, 4, 14, 4, 4, 4, 4, 4, 31, 4, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 41, 42, 43, 44, 4, 45, 19, 46, 47, 4, 4, 48, 49, 50, 51,
+ 4, 4, 52, 53, 50, 54, 55, 4, 56, 57, 4, 4, 58, 4, 4, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 4, 4, 4, 4, 68, 69, 70, 4, 71, 72, 73, 4, 4, 4, 4, 74, 4,
+ 4, 75, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 76, 4, 4, 4, 2, 2, 2,
+ 77, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 78, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 52, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 2, 2, 2, 48, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 68, 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, 57, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 58,
- 19, 4, 69, 46, 70, 61, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 71, 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, 67, 79, 80, 81, 50, 82, 70, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 2, 83, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 72, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 73, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 2, 2, 2, 2, 19, 74, 2, 2, 2, 2, 2, 75, 4, 4, 4, 4, 4, 4, 4,
+ 2, 2, 84, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 85, 30,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 86, 87, 2, 2, 2, 2, 2, 88, 4,
4, 4, 4, 4, 4, 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, 76, 77, 4, 4, 4, 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, 89, 90, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 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, 78, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 79, 80, 81, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 82, 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, 91, 4, 4, 4, 4, 4, 4, 4, 92, 93, 4, 4,
+ 4, 4, 81, 58, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 94,
+ 2, 2, 2, 95, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 96, 97, 98, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 99, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 44, 2, 2, 2, 9, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 67, 2, 2, 2, 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, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 100, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 83, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 84, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 2, 101, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 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, 12, 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, 102, 4,
4, 4, 4, 4, 4, 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, 12, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
],
tree3_level3: &[
0xB7FFFF7FFFFFEFFF, 0x3FFF3FFF, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFF, 0,
@@ -2204,20 +2325,23 @@ pub const OTHER_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0x91BFFFFFFFFFFD3F, 0x7FFFFF003FFFFF, 0x7FFFFFFF, 0x37FFFF00000000,
0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF, 0x3FFFFFFEEF0001,
0x1FFFFFFF00000000, 0x1FFFFFFF, 0x1FFFFFFEFF, 0x3FFFFFFFFFFFFF,
- 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0xFFFF00801FFFFFFF, 0x3F,
- 0xFFFFFFFFFFFFF8, 0xFFFFFFFFFFF8, 0x1FFFFFF0000, 0x7FFFFFFFF8,
- 0x47FFFFFFFF0010, 0x7FFFFFFFFFFF8, 0x1400001E, 0xFFFFFFBFFFF,
- 0xFFFF01FFBFFFBD7F, 0x23EDFDFFFFF99FE0, 0x3E0010000, 0x1FFFFFFFFFFFFF,
- 0x780, 0xFFFFFFFFFFFF, 0xB0, 0x7FFFFFFFFFFF, 0xF000000, 0x10,
- 0x7FFFFFFFFFF, 0x7FFFFFF, 0xFFFFFFFFFFF, 0x8000000000000000,
- 0x407FFFFFFFFF801, 0xFFFFFFFFF0010000, 0x200003CF, 0x1FFFFFFFFFFFFFF,
- 0x7FFFFFFFFDFF, 0xFFFC000000000001, 0xFFFF, 0x1FFFFFFFFFB7F,
- 0xFFFFFDBF00000040, 0x10003FF, 0x7FFFF00000000, 0x3FFFFFF, 0xF, 0x7F,
- 0x3FFFFFFF0000, 0xE0FFFFF800000000, 0x1001F, 0x3FFFFFFFFFFFF,
- 0x7FFFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFFFFFFFFFFFF,
- 0x1FFF07FFFFFFFFFF, 0x3FF01FF, 0x1F, 0xAF7FE96FFFFFFEF,
- 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0x7FFFFF, 0xFFFF0003FFFFFFFF,
- 0x1FFFFFFFF,
+ 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0x303FFFFFFFFFF, 0xFFFF00801FFFFFFF,
+ 0xFFFF00000000003F, 0xFFFF000000000003, 0x7FFFFF0000001F,
+ 0xFFFFFFFFFFFFF8, 0x26000000000000, 0xFFFFFFFFFFF8, 0x1FFFFFF0000,
+ 0x7FFFFFFFF8, 0x47FFFFFFFF0090, 0x7FFFFFFFFFFF8, 0x1400001E,
+ 0xFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F, 0x23EDFDFFFFF99FE0, 0x3E0010000,
+ 0x1FFFFFFFFFFFFF, 0x380000780, 0xFFFFFFFFFFFF, 0xB0, 0x7FFFFFFFFFFF,
+ 0xF000000, 0x10, 0x10007FFFFFFFFFF, 0x7FFFFFF, 0x7F, 0xFFFFFFFFFFF,
+ 0x8000000000000000, 0x8000FFFFFF6FF27F, 0x2, 0xFFFFFCFF00000000,
+ 0xA0001FFFF, 0x407FFFFFFFFF801, 0xFFFFFFFFF0010000, 0xFFFF0000200003FF,
+ 0x1FFFFFFFFFFFFFF, 0x7FFFFFFFFDFF, 0xFFFC000000000001, 0xFFFF,
+ 0x1FFFFFFFFFB7F, 0xFFFFFDBF00000040, 0x10003FF, 0x7FFFF00000000,
+ 0x1000000000000, 0x3FFFFFF, 0xF, 0x1FFFFFFFFFFFF, 0xFFFF00007FFFFFFF,
+ 0x7FFFFFFFFFFFFFFF, 0x3FFFFFFF0000, 0xE0FFFFF800000000, 0x107FF,
+ 0xFFFFFFFFFFFFFF, 0x3FFFFF, 0x7FFFFFFFF, 0xFFFF00F000070000,
+ 0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF, 0x3FF01FF, 0x400, 0x1FFFFFFFFFFF,
+ 0x4000, 0x7FFF6F7F00000000, 0x1F, 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84,
+ 0xFFFFBEE0FFFFBFF, 0xFFFFFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x7FF,
],
};
@@ -2292,33 +2416,34 @@ pub const OTHER_NUMBER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree3_level2: &[
0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 6, 7, 8, 9, 0, 10, 11, 0, 12, 13, 14, 0, 15, 16,
- 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 18, 0, 0, 19, 20, 0, 0, 0, 21, 0, 0, 0, 0,
- 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0,
- 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
+ 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 18, 0, 0, 19, 20, 0, 21, 0, 22, 0, 0, 0, 0,
+ 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0,
+ 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 30, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 28, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 33, 34, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 31, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
0, 0xFFFFFFFFFFF80, 0x1E0000000000000, 0xC00, 0xFFFFFFE00000000,
0xF00000000, 0xFE000000FF000000, 0xFF8000000000, 0xF800000000000000,
0xFC00000, 0x3000000000000000, 0xFFFFFFFFFFFCFFFF, 0x60000000000001FF,
0xE0000000, 0xF80000000000, 0xFF000000FF000000, 0xFE0000000000,
- 0xFC00000000000000, 0x7FFFFFFF00000000, 0x7FE0000000, 0x1E0000,
+ 0xFC00000000000000, 0x7FFFFFFF00000000, 0x7FE0000000, 0x1E0000, 0xFE0,
0x3FFFFC0000, 0x1FFFFE00000000, 0xC00000000000000, 0x7FC0000000000,
- 0x1FFFFC000000, 0x3F8000000, 0x7FFFFF, 0xFFFFF00000000, 0x1FFFFFF00000000,
- 0xFF80, 0xFFFE000000000000, 0x1EEFFFFFFFFFFF, 0x1FFF,
+ 0x1FFFFC000000, 0x1FFFFF, 0x3F8000000, 0x7FFFFF, 0xFFFFF00000000,
+ 0x1FFFFFF00000000, 0xFF80, 0xFFFE000000000000, 0x1EEFFFFFFFFFFF,
+ 0x3FFFBFFFFFFFFFFE, 0x1FFF,
],
};
@@ -2326,17 +2451,17 @@ pub const OTHER_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
tree1_level1: &[
0x8C00D4EE00000000, 0x10000001, 0x80C0008200000000, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0x4000000000000000, 0x80, 0, 0, 0, 0, 0, 0, 0xFC000000, 0x200,
- 0x18000000000049, 0xC8003600, 0x3C0000000000, 0, 0x100000, 0x3FFF, 0, 0,
+ 0x18000000000049, 0xE8003600, 0x3C0000000000, 0, 0x100000, 0x3FFF, 0, 0,
0x380000000000000,
],
tree2_level1: &[
- 0, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 8, 2,
- 9, 2, 2, 10, 2, 11, 12, 2, 13, 2, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 15, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 2, 17, 18, 2, 2, 19, 20, 2, 2, 2, 2, 21, 2,
- 2, 22, 2, 23, 2, 2, 24, 2, 25, 26, 27, 2, 28, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 29, 30, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 2, 2, 2, 2, 7, 8, 2, 2, 2, 2, 9, 2,
+ 10, 2, 2, 11, 2, 12, 13, 2, 14, 2, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 17, 2, 18, 19, 2, 2, 20, 21, 2, 2, 2, 2, 22,
+ 2, 2, 23, 2, 24, 2, 2, 25, 2, 26, 27, 28, 2, 29, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 30, 31, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 31, 2, 6, 2, 2, 32, 33, 2, 2, 2, 2, 2, 2, 34, 2, 2, 14, 2,
+ 2, 2, 2, 2, 2, 2, 32, 2, 6, 2, 2, 33, 34, 2, 2, 2, 2, 2, 2, 35, 2, 2, 15,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -2355,8 +2480,8 @@ pub const OTHER_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 27, 2, 2, 2, 2, 35, 36, 2, 37, 2, 2,
- 2, 2, 2, 38, 2, 39, 40, 41, 2, 42, 2, 43, 2, 44, 2, 2, 2, 45, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 28, 2, 2, 2, 2, 36, 37, 2, 38, 2,
+ 2, 2, 2, 2, 39, 2, 40, 41, 42, 2, 43, 2, 44, 2, 45, 2, 2, 2, 46, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -2369,21 +2494,22 @@ pub const OTHER_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 46, 47, 2, 2, 48, 49, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 47, 48, 2, 2, 49, 50, 2, 2,
],
tree2_level2: &[
0x7FFF000000000000, 0x40000000, 0, 0x1003000000000, 0x2000000000000000,
- 0x40000000000000, 0x1000000000000, 0x10, 0x10000000000000, 0xC008000,
- 0x17FFF0, 0x20, 0x61F0000, 0xFC00, 0x800000000000000, 0x1FF00000000,
- 0x600000000000, 0x380000000000, 0x60000000000000, 0x7700000, 0x7BF, 0x30,
- 0xC0000000, 0x3F7F00000000, 0x1FC000000, 0xF000000000000000,
- 0xF800000000000000, 0xC000000000000000, 0x800FF, 0x79FF00FF00C00000,
- 0x7FEBFF8E, 0xDE00000000000000, 0xF3FF7C00CB7FC9C3, 0x7FFA,
- 0x200000000000000E, 0xE000, 0x4008000000000000, 0xFC000000000000,
- 0xF0000000000000, 0x170000000000C000, 0xC00000000000, 0x80000000,
- 0xC0003FFE, 0xF0000000, 0x30000C0000000, 0x80000000000, 0x10000027F0000,
- 0xD0380F71E60, 0x100000018C00D4EE, 0x3200000000,
+ 0x40000000000000, 0x1000000000000, 0x80000000000000, 0x10,
+ 0x10000000000000, 0xC008000, 0x17FFF0, 0x20, 0x61F0000, 0xFC00,
+ 0x800000000000000, 0x1FF00000000, 0x400000000000, 0x380000000000,
+ 0x60000000000000, 0x7700000, 0x7BF, 0x30, 0xC0000000, 0x3F7F00000000,
+ 0x60000001FC000000, 0xF000000000000000, 0xF800000000000000,
+ 0xC000000000000000, 0x800FF, 0x79FF00FF00C00000, 0x7FEBFF8E,
+ 0xDE00000000000000, 0xF3FF7C00CB7FC9C3, 0x1CFFFA, 0x200000000000000E,
+ 0xE000, 0x4008000000000000, 0xFC000000000000, 0xF0000000000000,
+ 0x170000000000C000, 0xC00000000000, 0x80000000, 0xC0003FFE, 0xF0000000,
+ 0x30000C0000000, 0x80000000000, 0x10000027F0000, 0xD0380F71E60,
+ 0x100000018C00D4EE, 0x3200000000,
],
tree3_level1: &[
0, 1, 2, 3, 3, 3, 4, 3, 3, 3, 3, 5, 3, 6, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
@@ -2401,36 +2527,36 @@ pub const OTHER_PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
tree3_level2: &[
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 8, 9, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 13, 14, 0, 15, 0, 16,
- 17, 0, 18, 0, 0, 0, 0, 0, 0, 19, 0, 20, 0, 0, 0, 21, 0, 22, 0, 0, 23, 0,
- 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 0, 0, 13, 14, 15, 0, 16, 0,
+ 17, 18, 0, 19, 0, 0, 0, 0, 0, 0, 20, 0, 21, 0, 0, 0, 22, 0, 23, 24, 0, 25,
+ 0, 0, 0, 26, 0, 0, 0, 0, 27, 0, 28, 29, 30, 31, 0, 0, 0, 0, 0, 0, 32, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 37, 38, 39, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 40, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,
+ 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
],
tree3_level3: &[
0, 0x7, 0x80000000, 0x10000, 0x800000000000, 0x800000, 0x8000000080000000,
0x8000000001FF0000, 0x7F000000000000, 0xFE00000000000000, 0x1E000000,
- 0x3E00000, 0x3F80, 0xD800000000000000, 0x3, 0x3000000000000F, 0xE80021E0,
- 0x3F00000000000000, 0x20000000000, 0x2800F800, 0x40, 0xFFFFFE,
- 0x1FFF0000000E, 0x7000000000000000, 0x800000000000000, 0x8000000000000000,
- 0x7F, 0x7DC000000, 0x300000000003E, 0x180000000000000, 0x1F000000000000,
- 0xC00000000000, 0x20000000000000, 0xF80000000000000, 0x10, 0x7800000,
- 0xF80, 0xC0000000,
+ 0x3E00000, 0x3C0, 0x3F80, 0xD800000000000000, 0x3, 0x3000000000000F,
+ 0xE80021E0, 0x3F00000000000000, 0x20000000000, 0x2C00F800, 0x40, 0xFFFFFE,
+ 0x1FFF0000000E, 0x200000000000000, 0x7000000000000000, 0x800000000000000,
+ 0x70, 0x400000000, 0x8000000000000000, 0x7F, 0x7DC000000, 0x300000000003E,
+ 0x180000000000000, 0x1F000000000000, 0x6000000000000, 0xC00000000000,
+ 0x20000000000000, 0xF80000000000000, 0x10, 0x7800000, 0xF80, 0xC0000000,
],
};
@@ -2443,17 +2569,17 @@ pub const OTHER_SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree2_level1: &[
0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 3, 0, 4, 0, 0, 0, 5, 0, 0, 0,
0, 0, 0, 6, 0, 7, 8, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 12, 0,
- 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 14, 15, 16, 17, 0, 0, 0, 0, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 26, 27, 28, 26, 29, 26, 26, 26, 30, 31, 0, 26, 26, 26, 26, 0, 0, 0, 0, 0,
- 0, 0, 0, 32, 33, 34, 35, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 38, 26, 26,
- 26, 39, 40, 0, 0, 0, 0, 0, 41, 42, 43, 44, 45, 46, 26, 26, 26, 26, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 13, 0,
+ 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 15, 16, 17, 18, 0, 0, 0, 0, 19, 20, 21, 22, 23, 24, 25, 26, 27,
+ 27, 28, 29, 27, 30, 27, 27, 27, 31, 32, 0, 27, 27, 27, 27, 0, 0, 0, 0, 0,
+ 0, 0, 0, 33, 34, 35, 27, 0, 0, 0, 36, 0, 0, 0, 0, 0, 37, 38, 39, 27, 27,
+ 27, 40, 41, 0, 0, 0, 0, 0, 42, 43, 44, 45, 46, 27, 27, 27, 27, 27, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2481,26 +2607,26 @@ pub const OTHER_SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+ 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 52, 0, 0, 0, 0, 0, 0, 0, 53,
],
tree2_level2: &[
0, 0x400000000000000, 0x1000000000000, 0x5F8000000000000,
0x8000000000000000, 0x200000000008000, 0x1500000FCE8000E,
- 0xC000000000000000, 0x1E0DFBF, 0xC0000000, 0x3FF0000, 0x1,
+ 0xC000000000000000, 0x1E0DFBF, 0xC0000000, 0x3FF0000, 0x200000000000, 0x1,
0xFFFFFFFFC0000000, 0x1FF007FE00000000, 0xC0042AFC0D0037B, 0xB400,
0xFFFFBFB6F3E00C00, 0xFFFFFFFEB3FFF, 0xFFFFF9FCFFFFF0FF,
0xEFFFFFFFFFFFFFFF, 0xFFF0000007FFFFFF, 0xFFFFFFFC0FFFFFFF, 0x7FFFFFFFFF,
0x7FF, 0xFFFFFFFFF0000000, 0x3FFFFFFFFFF, 0xFFFFFFFFFFFFFFFF,
0xFF7FFFFFFFFFFFFF, 0xFFFFFFFFFFFFFD, 0xFFFF7FFFFFFFFFFF, 0xFFFFFFFFFF,
0xFFFFFFFFFFF00000, 0xFFFFFFFFFFFF, 0xFFCFFFFFFFFFE060,
- 0xFFFFFFFFFF3FFFFF, 0x7FFFFFFFFFFFFDFF, 0x7E000000000, 0xFFFFFFFFFBFFFFFF,
+ 0xFFFFFFFFFFBFFFFF, 0x7E000000000, 0x30000, 0xFFFFFFFFFBFFFFFF,
0xFFFFFFFFFFFFF, 0xFFF0000003FFFFF, 0xC0C00001000C0010, 0xFFC30000,
0xFFFFFFFFF, 0xFFFFFC007FFFFFFF, 0xFFFFFFFF000100FF, 0x1FFFFFFFFFC00,
- 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0000, 0x7F, 0x2C00F0000000000,
- 0x380000000000000, 0x2000000000000000, 0x3000611000000000,
+ 0xFFFFFFFFFFFF0000, 0x7F, 0x2C00F0000000000, 0x380000000000000, 0xFFFF,
+ 0xE000000000008000, 0x3000611000000000,
],
tree3_level1: &[
- 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 2, 5, 6, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 5, 6, 7, 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,
@@ -2518,36 +2644,40 @@ pub const OTHER_SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 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, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11,
- 12, 13, 14, 15, 16, 11, 17, 0, 0, 11, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 19, 20, 21, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 13, 13, 13, 15, 16, 17, 18, 19, 13,
+ 20, 0, 0, 13, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 13, 13, 13, 13, 13, 13, 13, 13, 22, 23, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 23, 11, 24, 25, 26, 23, 27, 28, 29, 30, 0, 0, 11,
- 11, 11, 31, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 32, 11, 33, 11,
- 34, 35, 36, 37, 0, 38, 39, 40, 41, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 28, 13, 29, 30, 31, 13, 32, 33, 34, 35, 0, 0, 13, 13, 13, 36, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 37, 13, 38, 13, 39, 40, 41, 42, 0,
+ 13, 13, 13, 13, 13, 43, 44, 45, 13, 13, 46, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFF80000000000000, 0xFE00000000000000, 0x10FFF73FF,
+ 0, 0xFF80000000000000, 0xFE00000000000000, 0x11FFF73FF,
0x1FFFFFFFFFFF0000, 0x180000000000000, 0x100, 0x8000000000000000,
- 0xF000000000000000, 0x20, 0x10000000, 0xFFFFFFFFFFFFFFFF,
- 0x3FFFFFFFFFFFFF, 0xFFFFFE7FFFFFFFFF, 0x1C1FFFFFFFFF, 0xFFFFC3FFFFFFF018,
- 0x1FFFFFFFFFF, 0x23, 0x7FFFFF, 0x780000000000000, 0xFFDFE00000000000,
- 0x6F, 0x100000000000, 0xFFFF0FFFFFFFFFFF, 0xFFFE7FFF000FFFFF,
- 0x3FFFFFFFFEFFFE, 0xFFFFFFFFFFFF0000, 0x1FFFFFFFFFFF, 0xFFFFFFC000000000,
- 0xFFFFFFFFFFF0007, 0x3F000301FF, 0x7FFFFFFFFFFFFFF, 0x3FF1FFF001FFFFF,
- 0xFFFFFFFFFFFFF, 0x1FFFFFF, 0xFFFFFFFFFFFF0FFF, 0xFFFFFFFF03FF00FF,
- 0x3FFFFFFF00FF, 0x7FFFFFFFFFFF0FFF, 0xF479FFFFFFFFFFFF, 0x3FF0007FFFFFFFF,
- 0xFFFFFFFFFFFF0007, 0x3FFF00000000,
+ 0x3FFFE1FE00000, 0xF000000000000000, 0x20, 0x10000000, 0xFFFFFFFFFFFF0000,
+ 0xFFFFFFFFFFFFFFFF, 0xF, 0x3FFFFFFFFFFFFF, 0xFFFFFE7FFFFFFFFF,
+ 0x1C1FFFFFFFFF, 0xFFFFC3FFFFFFF018, 0x7FFFFFFFFFF, 0x23, 0x7FFFFF,
+ 0x780000000000000, 0xFFDFE00000000000, 0x6F, 0x8000, 0x100000000000,
+ 0x400000000000, 0xFFFF0FFFFFFFFFFF, 0xFFFE7FFF000FFFFF, 0x3FFFFFFFFEFFFE,
+ 0xFFFFFFFFFFFFE000, 0x3FFFFFFFFFFF, 0xFFFFFFC000000000, 0xFFFFFFFFFFF0007,
+ 0x3F000301FF, 0x7FFFFFFFFFFFFFF, 0x1FFF1FFFE0FFFFFF, 0xFFFFFFFFFFFFF,
+ 0x10FFF01FFFFFF, 0xFFFFFFFFFFFF0FFF, 0xFFFFFFFF03FF00FF, 0x33FFFFFFF00FF,
+ 0x1F1F3FFF000FFFFF, 0x7FF1FFFFFFF007F, 0x7F00FF03FF003F,
+ 0xFFFFFFFFFFF7FFFF, 0x7FF,
],
};
@@ -2691,18 +2821,18 @@ pub const PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree1_level1: &[
0x8C00F7EE00000000, 0x28000000B8000001, 0x88C0088200000000, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0x4000000000000000, 0x80, 0, 0, 0, 0, 0, 0, 0xFC000000,
- 0x4000000000000600, 0x18000000000049, 0xC8003600, 0x3C0000000000, 0,
+ 0x4000000000000600, 0x18000000000049, 0xE8003600, 0x3C0000000000, 0,
0x100000, 0x3FFF, 0, 0, 0x380000000000000,
],
tree2_level1: &[
- 0, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 2, 2, 2, 2, 2, 7, 2, 2, 2, 2, 8, 2,
- 9, 2, 2, 10, 2, 11, 12, 2, 13, 2, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 15, 2, 2,
- 16, 2, 2, 2, 2, 2, 2, 2, 2, 17, 18, 19, 20, 2, 2, 21, 22, 2, 2, 2, 2, 23,
- 2, 2, 24, 2, 25, 2, 2, 26, 2, 27, 28, 29, 2, 30, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 31, 32, 33, 2, 2, 2, 2, 2, 2, 2, 2, 2, 34, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 35, 2, 36, 2, 2, 2, 2, 2, 2, 37, 38, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 39, 2, 6, 2, 2, 40, 41, 2, 2, 2, 2, 2, 2, 42,
- 2, 43, 14, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 2, 2, 2, 2, 7, 8, 2, 2, 2, 2, 9, 2,
+ 10, 2, 2, 11, 2, 12, 13, 2, 14, 2, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 16, 2,
+ 2, 17, 2, 2, 2, 2, 2, 2, 2, 2, 18, 19, 20, 21, 2, 2, 22, 23, 2, 2, 2, 2,
+ 24, 2, 2, 25, 2, 26, 2, 2, 27, 2, 28, 29, 30, 2, 31, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 32, 33, 34, 2, 2, 2, 2, 2, 2, 2, 2, 2, 35, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 36, 2, 37, 2, 2, 2, 2, 2, 2, 38, 39, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 40, 2, 6, 2, 2, 41, 42, 2, 2, 2, 2, 2, 2,
+ 43, 2, 44, 15, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -2720,8 +2850,9 @@ pub const PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 29, 2, 2, 2, 2, 44, 45,
- 2, 46, 2, 2, 2, 2, 2, 47, 2, 48, 49, 50, 2, 51, 2, 52, 2, 53, 2, 2, 2, 54,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 30, 2, 2, 2, 2, 45,
+ 46, 2, 47, 2, 2, 2, 2, 2, 48, 2, 49, 50, 51, 2, 52, 2, 53, 2, 54, 2, 2, 2,
+ 55, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -2734,23 +2865,23 @@ pub const PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 29, 2, 2, 2, 55, 56, 2, 2, 57, 58, 2, 2,
+ 2, 30, 2, 2, 2, 56, 57, 2, 2, 58, 59, 2, 2,
],
tree2_level2: &[
0x7FFF000000000000, 0x40000000, 0, 0x1003000000000, 0x2000000000000000,
- 0x40000000000000, 0x1000000000000, 0x10, 0x10000000000000, 0xC008000,
- 0x3C0000000017FFF0, 0x20, 0x61F0000, 0xFC00, 0x800000000000000,
- 0x1FF00000000, 0x1, 0x600000000000, 0x18000000, 0x380000000000,
- 0x60000000000000, 0x7700000, 0x7FF, 0x30, 0xC0000000, 0x3F7F00000000,
- 0x1FC000000, 0xF000000000000000, 0xF800000000000000, 0xC000000000000000,
- 0x800FF, 0xFFFF00FFFFFF0000, 0x600000007FFBFFEF, 0x6000, 0x60000000F00,
- 0x3FFF0000000000, 0xFFC000000060, 0x1FFFFF8, 0x300000000F000000,
- 0xDE00000000000000, 0xFFFF7FFFFFFFFFFF, 0x7FFF, 0x20010000FFF3FF0E,
- 0x100000000, 0xE000, 0x4008000000000000, 0xFC000000000000,
- 0xF0000000000000, 0x170000000000C000, 0xC00000000000, 0x80000000,
- 0xC0003FFE, 0xF0000000, 0x30000C0000000, 0x80000000000,
- 0xFFFF000003FF0000, 0xD0BFFF7FFFF, 0xB80000018C00F7EE, 0x3FA8000000,
+ 0x40000000000000, 0x1000000000000, 0x80000000000000, 0x10,
+ 0x10000000000000, 0xC008000, 0x3C0000000017FFF0, 0x20, 0x61F0000, 0xFC00,
+ 0x800000000000000, 0x1FF00000000, 0x1, 0x400000000000, 0x18000000,
+ 0x380000000000, 0x60000000000000, 0x7700000, 0x7FF, 0x30, 0xC0000000,
+ 0x3F7F00000000, 0x60000001FC000000, 0xF000000000000000,
+ 0xF800000000000000, 0xC000000000000000, 0x800FF, 0xFFFF00FFFFFF0000,
+ 0x600000007FFBFFEF, 0x6000, 0x60000000F00, 0x3FFF0000000000,
+ 0xFFC000000060, 0x1FFFFF8, 0x300000000F000000, 0xDE00000000000000,
+ 0xFFFF7FFFFFFFFFFF, 0x3FFCFFFF, 0x20010000FFF3FF0E, 0x100000000, 0xE000,
+ 0x4008000000000000, 0xFC000000000000, 0xF0000000000000,
+ 0x170000000000C000, 0xC00000000000, 0x80000000, 0xC0003FFE, 0xF0000000,
+ 0x30000C0000000, 0x80000000000, 0xFFFF000003FF0000, 0xD0BFFF7FFFF,
+ 0xB80000018C00F7EE, 0x3FA8000000,
],
tree3_level1: &[
0, 1, 2, 3, 3, 3, 4, 3, 3, 3, 3, 5, 3, 6, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
@@ -2768,36 +2899,37 @@ pub const PUNCTUATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree3_level2: &[
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 4, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 8, 9, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 12, 13, 14, 0, 15, 0, 16,
- 17, 0, 18, 0, 0, 0, 0, 0, 0, 19, 0, 20, 0, 0, 0, 21, 0, 22, 0, 0, 23, 0,
- 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 25, 26, 27, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 12, 13, 0, 0, 14, 15, 16, 0, 17, 0,
+ 18, 19, 0, 20, 0, 0, 0, 0, 0, 0, 21, 0, 22, 0, 0, 0, 23, 0, 24, 25, 0, 26,
+ 0, 0, 0, 27, 0, 0, 0, 0, 28, 0, 29, 30, 31, 32, 0, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 38, 39, 40, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 41, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 33, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0,
+ 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0,
],
tree3_level3: &[
0, 0x7, 0x80000000, 0x10000, 0x800000000000, 0x800000, 0x8000000080000000,
0x8000000001FF0000, 0x7F000000000000, 0xFE00000000000000, 0x1E000000,
- 0x3E00000, 0x3F80, 0xD800000000000000, 0x3, 0x3000000000000F, 0xE80021E0,
- 0x3F00000000000000, 0x20000000000, 0x2800F800, 0x40, 0xFFFFFE,
- 0x1FFF0000000E, 0x7000000000000000, 0x800000000000000, 0x8000000000000000,
- 0x7F, 0x7DC000000, 0x300000000003E, 0x180000000000000, 0x1F000000000000,
- 0xC00000000000, 0x20000000000000, 0xF80000000000000, 0x10, 0x7800000,
- 0xF80, 0xC0000000,
+ 0x200000000000, 0x3E00000, 0x3C0, 0x3F80, 0xD800000000000000, 0x3,
+ 0x3000000000000F, 0xE80021E0, 0x3F00000000000000, 0x20000000000,
+ 0x2C00F800, 0x40, 0xFFFFFE, 0x1FFF0000000E, 0x200000000000000,
+ 0x7000000000000000, 0x800000000000000, 0x70, 0x400000000,
+ 0x8000000000000000, 0x7F, 0x7DC000000, 0x300000000003E, 0x180000000000000,
+ 0x1F000000000000, 0x6000000000000, 0xC00000000000, 0x20000000000000,
+ 0xF80000000000000, 0x10, 0x7800000, 0xF80, 0xC0000000,
],
};
@@ -2925,11 +3057,11 @@ pub const SPACING_MARK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree2_level1: &[
0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 5, 7, 8, 4, 9, 10, 11, 12, 8, 13, 3, 14, 15,
16, 0, 0, 0, 0, 9, 17, 0, 0, 18, 19, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 22, 0, 0, 0, 0, 23, 0,
- 0, 0, 24, 25, 0, 0, 26, 27, 28, 29, 30, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 22, 23, 0, 0, 0, 0, 24,
+ 0, 0, 0, 25, 26, 0, 0, 27, 28, 29, 30, 31, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 33, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2948,8 +3080,8 @@ pub const SPACING_MARK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 33, 0, 34, 35, 0, 36, 37, 6, 38, 39, 0, 40, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 34, 0, 35, 36, 0, 37, 38, 6, 39, 40, 0, 41, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -2970,10 +3102,10 @@ pub const SPACING_MARK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0xC000000000000008, 0x1, 0x1A01, 0x400000000000000C, 0xC000000000000000,
0x801DC6, 0xE, 0x1E, 0x600D9F, 0x801DC1, 0xC, 0xC0000FF038000,
0x8000000000000000, 0x1902180000000000, 0x3F9C00C00000, 0x1C009F98,
- 0xC040000000000000, 0x1BF, 0x1FB0E7800000000, 0x6000000, 0x7E01A00A00000,
- 0xE820000000000010, 0x1B, 0x4C200000004, 0xC5C8000000000,
- 0x300FF000000000, 0x8C000200000000, 0xC00000000000, 0x9800000000,
- 0xFFF0000000000003, 0xF, 0xC0000, 0xEC30000000000008, 0x19800000000000,
+ 0x10000000200000, 0xC040000000000000, 0x1BF, 0x1FB0E7800000000, 0x6000000,
+ 0x7E01A00A00000, 0xE820000000000010, 0x1B, 0x4C200000004, 0xC5C8000000000,
+ 0x300FF000000000, 0x80000200000000, 0xC00000000000, 0x9800000000,
+ 0xFFF0000000000003, 0xF, 0xC0000, 0xCC30000000000008, 0x19800000000000,
0x2800000000002000, 0x20C80000000000, 0x16D800000000,
],
tree3_level1: &[
@@ -2994,22 +3126,22 @@ pub const SPACING_MARK: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 2, 0, 3, 4, 5, 6, 7, 0, 0,
8, 9, 10, 0, 0, 11, 12, 13, 14, 0, 0, 15, 0, 16, 0, 17, 0, 18, 0, 0, 0,
- 19, 0, 0, 0, 0, 0, 0, 0, 20, 21, 22, 0, 0, 0, 0, 0, 23, 0, 24, 0, 0, 0,
- 25, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 19, 0, 0, 0, 20, 1, 0, 21, 22, 23, 24, 0, 0, 0, 0, 0, 25, 0, 26, 0, 0, 0,
+ 27, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0,
- 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30,
+ 31, 0, 0, 0, 0, 0, 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,
],
tree3_level3: &[
- 0, 0x5, 0x187000000000004, 0x100000000000, 0x60, 0x8038000000000004, 0x1,
- 0x2C700000000000, 0x700000000, 0xC00000000000000C, 0xC0080399E,
+ 0, 0x5, 0x187000000000004, 0x100000000000, 0x60, 0x8038000000000004,
+ 0x4001, 0x2C700000000000, 0x700000000, 0xC00000000000000C, 0xC0080399E,
0xE0000000000000, 0x23, 0x7A07000000000000, 0x2, 0x4F03800000000000,
0x5807000000000000, 0x40D00000000000, 0x4300000000, 0x100700000000000,
- 0x200000000000000, 0x1800000, 0x800000, 0x4000800000000000,
- 0x12020000000000, 0x587C00, 0x60000000000000, 0x7FFFFFFFFFFE0000,
- 0x7E06000000000,
+ 0x21BF000000000000, 0x10F00E0000, 0x200000000000000, 0x1800000, 0x800000,
+ 0x4000800000000000, 0x12020000000000, 0x587C00, 0x60000000000000,
+ 0xFFFFFFFFFFFE0000, 0xFF, 0x3000000000000, 0x7E06000000000,
],
};
@@ -3079,19 +3211,19 @@ pub const SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0xC9C0, 0, 0, 0x6000020040000000, 0, 0, 0, 0xC040000000000000,
],
tree2_level1: &[
- 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 3, 0, 4, 0, 5, 0, 0, 0, 6, 0, 0, 5,
- 0, 0, 0, 7, 0, 8, 9, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 13, 0, 14, 0,
- 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, 0,
- 18, 19, 0, 20, 21, 22, 23, 23, 23, 23, 23, 24, 23, 23, 23, 25, 26, 27, 28,
- 23, 23, 23, 23, 23, 23, 23, 23, 23, 29, 30, 31, 23, 23, 23, 23, 23, 23,
- 32, 33, 23, 23, 23, 23, 23, 34, 35, 36, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38,
- 39, 23, 23, 23, 40, 41, 0, 42, 0, 0, 0, 43, 44, 45, 46, 47, 48, 23, 23,
- 23, 23, 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, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 4, 0, 5, 0, 6, 0, 0, 0, 7, 0, 0, 6,
+ 0, 0, 0, 8, 0, 9, 10, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 15, 0, 16,
+ 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 19,
+ 0, 20, 21, 15, 22, 23, 24, 25, 25, 25, 25, 25, 26, 25, 25, 25, 27, 28, 29,
+ 30, 25, 25, 25, 25, 25, 25, 25, 25, 25, 31, 32, 33, 25, 25, 25, 25, 25,
+ 25, 34, 35, 25, 25, 25, 25, 25, 36, 37, 25, 0, 0, 0, 38, 0, 0, 0, 0, 0,
+ 39, 40, 41, 25, 25, 25, 42, 43, 0, 44, 0, 0, 0, 45, 46, 47, 48, 49, 25,
+ 25, 25, 25, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3105,8 +3237,8 @@ pub const SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 52, 0, 53, 0, 0, 0, 0,
- 0, 0, 0, 0, 54, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 53, 0, 54, 0,
+ 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3119,29 +3251,30 @@ pub const SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 55, 0, 56, 57, 0, 0, 0, 0, 0, 0, 0, 58, 0, 59, 0, 0, 60, 61, 0,
- 62,
+ 0, 0, 0, 0, 0, 0, 57, 0, 58, 59, 0, 0, 0, 0, 0, 60, 0, 61, 0, 62, 0, 0,
+ 63, 64, 0, 65,
],
tree2_level2: &[
- 0, 0xC0C000000000000, 0x2000000000000, 0x1000000000000, 0x7F8000000000000,
- 0x8000000000000000, 0x200000000008000, 0x1500000FCE8000E,
- 0xC000000000000000, 0x1E0DFBF, 0xC0000000, 0x3FF0000, 0x8000000, 0x1,
- 0xFFFFFFFFC0000000, 0x1FF007FE00000000, 0xA000000000000000,
- 0x6000E000E000E003, 0x1C00000000040010, 0xFFFFFFFF00001C00,
- 0xC0042AFC1D0037B, 0xBC1F, 0xFFFFFFFFFFFF0C00, 0xFFFFFFFFFFFFFFFF,
- 0xFFFFF9FFFFFFF0FF, 0x7FFFFFFFFF, 0x7FF, 0xFFFFFFFFF0000000,
- 0x3FFFFFFFFFF, 0xFFFFFFFFFF, 0xFFFFFFFFFFF00000, 0xFFFF003FFFFFFF9F,
- 0xFFFFFFFFFE000007, 0xCFFFFFFFF0FFFFFF, 0xFFCFFFFFFFFFFFFF,
- 0xFFFFFFFFFF3FFFFF, 0x7FFFFFFFFFFFFDFF, 0x7E000000000, 0xFFFFFFFFFBFFFFFF,
- 0xFFFFFFFFFFFFF, 0xFFF0000003FFFFF, 0xC0C00001000C0010, 0x18000000,
- 0xFFC30000, 0xFFFFFFFFF, 0xFFFFFC007FFFFFFF, 0xFFFFFFFF000100FF,
- 0x1FFFFFFFFFC00, 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0000, 0x7F,
- 0x3007FFFFF, 0x600, 0x3C00F0000000000, 0x380000000000000, 0x20000000000,
- 0xFFFC000000000000, 0x3, 0x3000000000000000, 0x27400000000,
- 0x4000000070000810, 0x50000001, 0x30007F7F00000000,
+ 0, 0x100, 0xC0C000000000000, 0x2000000000000, 0x1000000000000,
+ 0x7F8000000000000, 0x8000000000000000, 0x200000000008000,
+ 0x1500000FCE8000E, 0xC000000000000000, 0x1E0DFBF, 0xC0000000, 0x3FF0000,
+ 0x200000000000, 0x8000000, 0x1, 0xFFFFFFFFC0000000, 0x1FF007FE00000000,
+ 0xA000000000000000, 0x6000E000E000E003, 0x1C00000000040010,
+ 0xFFFFFFFF00001C00, 0xC0042AFC1D0037B, 0xBC1F, 0xFFFFFFFFFFFF0C00,
+ 0xFFFFFFFFFFFFFFFF, 0xFFFFF9FFFFFFF0FF, 0x7FFFFFFFFF, 0x7FF,
+ 0xFFFFFFFFF0000000, 0x3FFFFFFFFFF, 0xFFFFFFFFFF, 0xFFFFFFFFFFF00000,
+ 0xFFFF003FFFFFFF9F, 0xFFFFFFFFFE000007, 0xCFFFFFFFF0FFFFFF,
+ 0xFFCFFFFFFFFFFFFF, 0xFFFFFFFFFFBFFFFF, 0x7E000000000, 0x30000,
+ 0xFFFFFFFFFBFFFFFF, 0xFFFFFFFFFFFFF, 0xFFF0000003FFFFF,
+ 0xC0C00001000C0010, 0x18000000, 0xFFC30000, 0xFFFFFFFFF,
+ 0xFFFFFC007FFFFFFF, 0xFFFFFFFF000100FF, 0x1FFFFFFFFFC00,
+ 0xFFFFFFFFFFFF0000, 0x7F, 0x3007FFFFF, 0x600, 0x3C00F0000000000,
+ 0x380000000000000, 0xC0008000000, 0x20000000000, 0xFFFC000000000000, 0x7,
+ 0xFFFF, 0xF000000000008000, 0x27400000000, 0x4000000070000810, 0x50000001,
+ 0x30007F7F00000000,
],
tree3_level1: &[
- 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 2, 5, 6, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 4, 5, 6, 7, 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,
@@ -3159,37 +3292,41 @@ pub const SYMBOL: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 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, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11,
- 12, 13, 14, 15, 16, 11, 17, 0, 0, 11, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 19, 20, 21, 22, 23, 11, 11, 11, 11, 11, 11, 11, 11, 24, 25, 26, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 12, 13, 14, 13, 13, 13, 15, 16, 17, 18, 19, 13,
+ 20, 0, 0, 13, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 23, 24, 25,
+ 26, 13, 13, 13, 13, 13, 13, 13, 13, 27, 28, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 7,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0,
- 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 29, 11, 30, 31, 32, 29, 33, 34, 35, 36, 0,
- 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 37, 11, 38,
- 11, 39, 40, 41, 42, 0, 43, 44, 45, 46, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 32, 0, 0, 0, 0, 0, 0, 33, 0,
+ 0, 0, 0, 34, 13, 35, 36, 37, 13, 38, 39, 40, 41, 0, 0, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 42, 13, 43, 13, 44, 45, 46, 47, 0,
+ 13, 13, 13, 13, 13, 48, 49, 50, 13, 13, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFF80000000000000, 0xFE00000000000000, 0x10FFF73FF,
+ 0, 0xFF80000000000000, 0xFE00000000000000, 0x11FFF73FF,
0x1FFFFFFFFFFF0000, 0x180000000000000, 0x100, 0x8000000000000000,
- 0xF000000000000000, 0x20, 0x10000000, 0xFFFFFFFFFFFFFFFF,
- 0x3FFFFFFFFFFFFF, 0xFFFFFE7FFFFFFFFF, 0x1C1FFFFFFFFF, 0xFFFFC3FFFFFFF018,
- 0x1FFFFFFFFFF, 0x23, 0x7FFFFF, 0x800000008000002, 0x20000000200000,
- 0x800000008000, 0x20000000200, 0x8, 0x780000000000000, 0xFFDFE00000000000,
- 0x6F, 0x1100000000000, 0x3000000000000, 0xFFFF0FFFFFFFFFFF,
- 0xFFFE7FFF000FFFFF, 0x3FFFFFFFFEFFFE, 0xFFFFFFFFFFFF0000, 0x1FFFFFFFFFFF,
- 0xFFFFFFC000000000, 0xFFFFFFFFFFF0007, 0x3F000301FF, 0x3FF1FFF001FFFFF,
- 0xFFFFFFFFFFFFF, 0x1FFFFFF, 0xFFFFFFFFFFFF0FFF, 0xFFFFFFFF03FF00FF,
- 0x3FFFFFFF00FF, 0x7FFFFFFFFFFF0FFF, 0xF479FFFFFFFFFFFF, 0x3FF0007FFFFFFFF,
- 0xFFFFFFFFFFFF0007, 0x3FFF00000000,
+ 0x3FFFFFFE00000, 0xF000000000000000, 0x20, 0x10000000, 0xFFFFFFFFFFFF0000,
+ 0xFFFFFFFFFFFFFFFF, 0xF, 0x3FFFFFFFFFFFFF, 0xFFFFFE7FFFFFFFFF,
+ 0x1C1FFFFFFFFF, 0xFFFFC3FFFFFFF018, 0x7FFFFFFFFFF, 0x23, 0x7FFFFF,
+ 0x800000008000002, 0x20000000200000, 0x800000008000, 0x20000000200, 0x8,
+ 0x780000000000000, 0xFFDFE00000000000, 0x6F, 0x8000, 0x1100000000000,
+ 0x400000000000, 0x3000000000000, 0xFFFF0FFFFFFFFFFF, 0xFFFE7FFF000FFFFF,
+ 0x3FFFFFFFFEFFFE, 0xFFFFFFFFFFFFE000, 0x3FFFFFFFFFFF, 0xFFFFFFC000000000,
+ 0xFFFFFFFFFFF0007, 0x3F000301FF, 0x1FFF1FFFE0FFFFFF, 0xFFFFFFFFFFFFF,
+ 0x10FFF01FFFFFF, 0xFFFFFFFFFFFF0FFF, 0xFFFFFFFF03FF00FF, 0x33FFFFFFF00FF,
+ 0x1F1F3FFF000FFFFF, 0x7FF1FFFFFFF007F, 0x7F00FF03FF003F,
+ 0xFFFFFFFFFFF7FFFF, 0x7FF,
],
};
@@ -3254,198 +3391,209 @@ pub const TITLECASE_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
pub const UNASSIGNED: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree1_level1: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x300000000000000, 0x40000280F, 0,
- 0, 0, 0, 0, 0x1000000000000, 0x1800000, 0x11800, 0xFFE078000000FF00,
- 0x20000000, 0, 0, 0, 0x4000, 0x1800, 0xFFFC000000000000,
- 0x1800000000000000,
+ 0, 0, 0, 0, 0x1000000000000, 0x1800000, 0x11800, 0xFFE078000000FF00, 0, 0,
+ 0, 0, 0x4000, 0x1800, 0xFFFC000000000000, 0x1800000000000000,
],
tree2_level1: &[
- 0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 4, 27, 28, 29, 4, 4, 4, 30, 4, 4, 4, 4, 4, 31,
- 32, 33, 34, 35, 36, 37, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 38, 39, 40, 41, 4,
- 42, 43, 39, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 4, 54, 4, 55, 56, 57,
- 58, 59, 4, 4, 4, 60, 4, 4, 4, 4, 61, 62, 63, 64, 4, 65, 66, 67, 4, 4, 68,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 69, 70, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 71, 72, 73, 74, 75, 4, 76, 77,
- 78, 79, 80, 4, 81, 82, 83, 4, 4, 4, 84, 4, 85, 86, 4, 87, 4, 88, 89, 75,
- 4, 4, 90, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 45, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 91, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 92, 93, 4, 4, 4, 4, 94, 4, 4, 95, 4, 4, 96,
- 97, 98, 95, 4, 99, 4, 100, 4, 101, 102, 103, 4, 104, 105, 106, 4, 107, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 89,
- 108, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 109, 4, 110, 111, 112, 4, 113,
- 4, 4, 4, 4, 4, 114, 115, 116, 36, 117, 4, 118, 85, 4, 90, 119,
+ 0, 1, 2, 3, 3, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
+ 19, 20, 21, 22, 23, 24, 25, 3, 26, 27, 28, 3, 3, 3, 29, 3, 3, 3, 3, 3, 30,
+ 31, 32, 33, 34, 35, 36, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 37, 38, 39, 40, 3,
+ 41, 35, 38, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 3, 52, 3, 53, 54, 55,
+ 56, 57, 3, 3, 3, 3, 3, 3, 3, 3, 58, 59, 60, 61, 3, 62, 63, 64, 3, 3, 65,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 66, 67, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 68, 69, 3, 3, 3, 3, 70, 71, 72,
+ 73, 74, 3, 75, 76, 77, 3, 3, 3, 78, 3, 79, 80, 3, 81, 3, 82, 83, 84, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 85, 86, 3, 3, 3, 3, 87, 3, 3, 88, 3, 3, 3, 89, 90, 88, 3,
+ 91, 3, 92, 3, 93, 94, 95, 3, 96, 97, 46, 3, 98, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 83, 99, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 100, 3, 101, 102, 103, 3, 104, 3, 3, 3, 3, 3, 3, 105, 106,
+ 35, 107, 3, 108, 79, 3, 109, 110,
],
tree2_level2: &[
- 0x8000C00000000000, 0xFFFFF800B0000000, 0xC0200000FFFFFFFF, 0x7FFFF, 0,
- 0xC3A020000066010, 0x800000304F7F8660, 0x2C92020000067811,
- 0xFF80003FA1FDC678, 0xC12020000044011, 0x1FC0030FFFEC440,
- 0xC12020000066011, 0xFF0000304F3FC660, 0x3C0038E729C23813,
- 0xF800003FFF7EC238, 0x1C00020000022000, 0xFF0030F89FC220,
- 0xC10020000022000, 0xFFF90030BF9FC220, 0x22010, 0x30000F0220,
- 0xD004000003800013, 0xFFE3003F00A07B80, 0x7800000000000001,
- 0xFFFFFFFFF0000000, 0xC4001351010FDA69, 0xFFFFFFFF0C00C0A0,
- 0x1E00000000100, 0x2000000001000000, 0xFFFFFFFFF8002000, 0xDF40,
- 0xC280C200, 0x80C200000000C200, 0x8000C2, 0xC20000, 0xE000000018000000,
- 0xFC000000, 0xC0C0000000000000, 0xE0000000, 0xFE00000000000000,
- 0xFF800000FFE02000, 0xFFF22000FFF00000, 0xFC00FC00C0000000, 0xFC008000,
- 0xF80000000000, 0xFFC0000000000000, 0xF000F00080000000,
- 0xFFE0C0000000000E, 0xF00000000000, 0x3800FC00, 0x30000000,
- 0x6000000080000000, 0x8000C000FC00FC00, 0xFFFFFFFFFFFFFFFF,
- 0xE00000000000F000, 0xFF0000000000000, 0x700000000000000, 0x1C00,
- 0x180000000000FE00, 0xFC0000000000FF00, 0x400000000000000, 0xC0C00000,
- 0xC00000005500C0C0, 0x20000000000000, 0x8023000010300020, 0xC002000000000,
- 0xE0008000, 0xFFFE00000000FFFF, 0xF000, 0xFFFFFF8000000000, 0xFFFFF800,
- 0x30000000000000, 0xC00000, 0x8000000000000200, 0x800000000000,
- 0x80000000, 0x1F0000000000000, 0xDF4000000000, 0x7FFE7F0000000000,
- 0x80808080FF800000, 0x80808080, 0xFFFFFFFFFFFF8000, 0x4000000,
- 0xFFF0000000000000, 0xF000FFFFFFC00000, 0x1, 0x1800000, 0x100000000001F,
- 0xF800000000008000, 0xFFF000000000, 0x8000000000000000,
- 0xFFFF000000000000, 0xE000, 0xFF80, 0xFFFFF00000000000,
- 0xFF00000000000000, 0xFC00000000000000, 0x7FFFFFFFFFFFFF,
- 0xFC00F00000000000, 0xFC003FC0, 0xE00000007FF00000, 0x800000003C004000,
- 0xFF80000000000000, 0xC00C000, 0xFF80000007FFFFF8, 0x8080FF818181,
- 0xFFC000000000, 0xFC00C00000000000, 0xF000000000000780, 0xC00000000000,
- 0xFFFFFFFFFC000000, 0xA08000001F07FF80, 0x24, 0x7FFFC, 0xFFFF, 0x30000,
- 0xC000FFFFFFFFFF00, 0x20F08000080000, 0x6000000000000000,
+ 0x8000C00000000000, 0xF800B0000000, 0xFC8000, 0, 0xC3A020000066010,
+ 0x800000304F7F8660, 0x2C92020000067811, 0xFF80003FA1FDC678,
+ 0xC12020000044011, 0x1FC0030FFFEC440, 0xC12020000066011,
+ 0xFF0000304F1FC660, 0x3C0038E729C23813, 0xF800003FFF7EC238,
+ 0xC00020000022000, 0x7F0030D89FC220, 0xC10020000022000,
+ 0xFFF900309F9FC220, 0x22000, 0x30000F0220, 0xD004000003800011,
+ 0xFFE3003F00A07B80, 0x7800000000000001, 0xFFFFFFFFF0000000,
+ 0xC000005000000829, 0xFFFFFFFF0C00C0A0, 0x1E00000000100,
+ 0x2000000001000000, 0xFFFFFFFFF8002000, 0xDF40, 0xC280C200,
+ 0x80C200000000C200, 0x8000C2, 0xC20000, 0xE000000018000000, 0xFC000000,
+ 0xC0C0000000000000, 0xE0000000, 0xFE00000000000000, 0xFF8000007FC00000,
+ 0xFFF22000FFF00000, 0xFC00FC00C0000000, 0xF80000000000,
+ 0xFFC0000000000000, 0xF000F00080000000, 0xFFE0C0000000000E,
+ 0xF00000000000, 0x3800FC00, 0x30000000, 0x6000000080000000,
+ 0xC000FC00FC00, 0xFFFFFFFFFFFF8000, 0x800000000000E000, 0xFF0000000000000,
+ 0x700000000000000, 0x1C00, 0x180000000000FE00, 0xF80000000000FF00,
+ 0xC0C00000, 0xC00000005500C0C0, 0x20000000000000, 0x8023000010300020,
+ 0xC002000000000, 0xE0008000, 0xFFFE00000000FFFE, 0xF000,
+ 0xFFFFFF8000000000, 0xFFFFF800, 0x30000000000000, 0x400000,
+ 0x1F0000000000000, 0xDF4000000000, 0x7FFE7F0000000000, 0x80808080FF800000,
+ 0x80808080, 0xFFFFFFFFC0000000, 0x4000000, 0xFFF0000000000000,
+ 0xF000FFFFFFC00000, 0x1, 0x1800000, 0x100000000001F, 0x8000,
+ 0xFFF000000000, 0x80000000, 0xE000, 0xFF80, 0xFFFFF00000000000,
+ 0xFF00000000000000, 0x3FFFFFC14F800, 0xFC00E00000000000, 0xFC003FC0,
+ 0xE00000007FF00000, 0x800000003C004000, 0xFF80000000000000, 0xC00C000,
+ 0xFF80000007FFFFF8, 0x8080FF818181, 0xFC00C00000000000,
+ 0xF000000000000780, 0xC00000000000, 0xFFFFFFFFFC000000,
+ 0xA08000001F07FF80, 0x24, 0x7FFF8, 0x30000, 0xFFFFFFFF7F00,
+ 0x20F08000080000, 0x6000000000000000, 0x8000000000000000,
0xC1FF8080E3030303,
],
tree3_level1: &[
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 5, 9, 5, 10, 11, 12, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 13, 14, 15, 7, 16, 17, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 11, 12, 13, 14, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 15, 16, 17, 7, 18, 19, 7, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 18, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 19, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 19,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 22, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 22,
],
tree3_level2: &[
0, 1, 2, 3, 4, 2, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 2, 2, 14, 15, 16, 17,
- 7, 7, 2, 2, 2, 2, 18, 19, 7, 7, 20, 21, 22, 23, 24, 7, 25, 26, 27, 28, 29,
- 30, 31, 32, 33, 7, 2, 34, 35, 36, 37, 7, 7, 7, 7, 38, 7, 7, 16, 39, 7, 7,
- 2, 40, 2, 41, 42, 43, 2, 44, 45, 7, 46, 47, 48, 49, 7, 7, 2, 50, 2, 51, 7,
- 7, 52, 53, 2, 54, 55, 56, 57, 7, 7, 7, 58, 7, 59, 60, 7, 7, 7, 7, 2, 61,
- 62, 63, 7, 7, 7, 7, 64, 65, 66, 7, 67, 68, 69, 7, 7, 7, 7, 70, 7, 7, 7, 7,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 39, 7, 2, 71, 2, 2, 2, 72, 7, 7,
+ 18, 7, 2, 2, 2, 2, 19, 20, 21, 7, 22, 23, 24, 25, 26, 7, 27, 28, 29, 30,
+ 31, 32, 33, 34, 35, 7, 2, 36, 37, 38, 39, 7, 7, 7, 7, 40, 41, 7, 16, 42,
+ 43, 44, 2, 45, 2, 46, 47, 48, 2, 49, 50, 7, 51, 52, 53, 54, 7, 7, 2, 55,
+ 2, 56, 7, 7, 57, 58, 2, 59, 60, 61, 62, 63, 7, 7, 64, 7, 65, 66, 67, 68,
+ 69, 70, 2, 71, 72, 73, 7, 7, 7, 7, 74, 75, 76, 7, 77, 78, 79, 7, 7, 7, 7,
+ 80, 7, 7, 81, 82, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 83, 7, 2, 84,
+ 2, 2, 2, 85, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 86, 37, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 87, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 73, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 74, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 63, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2,
- 63, 75, 7, 76, 2, 77, 78, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 79, 7, 2, 80,
- 81, 82, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2,
+ 2, 2, 2, 2, 2, 2, 2, 73, 88, 89, 90, 2, 91, 92, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 2, 93, 7, 2, 94, 95, 96, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 83,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 35, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 84, 85, 2, 2, 2, 2, 2, 58, 7, 7, 7, 7,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 97, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 98, 36, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 2, 86, 87, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2,
- 2, 2, 88, 89, 2, 2, 90, 2, 91, 7, 92, 2, 93, 7, 7, 2, 94, 95, 96, 97, 98,
- 2, 2, 2, 2, 99, 2, 2, 2, 2, 100, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 101, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 102, 7, 7, 7, 7,
+ 7, 7, 7, 99, 2, 2, 2, 2, 100, 101, 2, 2, 2, 2, 2, 64, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 2, 2, 2, 103, 2, 104, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 105, 106, 7,
- 7, 7, 7, 7, 107, 108, 109, 110, 7, 7, 7, 7, 111, 2, 112, 113, 114, 111,
- 115, 116, 117, 118, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 119, 2, 120, 2, 121, 122, 123, 124, 7, 125, 126, 127, 128, 7, 129, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 130, 2,
+ 7, 7, 7, 7, 2, 102, 103, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 104, 105, 2, 85, 2, 2, 2, 106, 107, 2, 2, 108, 2,
+ 109, 7, 110, 2, 111, 7, 7, 2, 112, 113, 114, 115, 116, 2, 2, 2, 2, 117, 2,
+ 2, 2, 2, 118, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 119, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 120, 7, 7, 7, 121, 7, 7, 7, 122, 123, 7, 7, 7,
+ 7, 124, 125, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 126,
+ 2, 2, 2, 127, 2, 128, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 129, 130, 7, 131,
+ 7, 7, 7, 132, 133, 134, 135, 7, 7, 7, 7, 136, 2, 137, 138, 2, 2, 139, 140,
+ 141, 142, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 143, 2, 144,
+ 2, 145, 146, 147, 148, 7, 2, 2, 2, 2, 2, 149, 150, 151, 2, 2, 152, 153, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 31, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 106, 2, 2, 2, 131, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 73, 2, 2, 2, 154, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 132, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 155, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 133, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 2, 2, 2, 2, 2, 2, 2, 156, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 58, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 157, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 53, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 134, 2, 7,
- 7, 2, 2, 2, 135, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
+ 7, 7, 7, 7, 7, 158, 2, 7, 7, 2, 2, 2, 159, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 136,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 160,
],
tree3_level3: &[
0x4800008000001000, 0xFFFFFFFFC000C000, 0, 0xF800000000000000,
- 0x70000000000078, 0xFFFFFFFEF0008000, 0xC00000000000FFFF,
+ 0x70000000000078, 0xFFFFFFFEE0008000, 0xC00000000000FFFF,
0xFFFFFFFFFFFFFFFF, 0xE0000000, 0xF0000000FFFE0000, 0x1FF000000000,
0xF80000000000F800, 0x40000000, 0xFFFFFFFFFFC000F0, 0xFC00C0000000,
- 0xF000000000F00000, 0xFF0000000000, 0xFFFF7FF000000000,
- 0xFF80000000000000, 0xFFFFFF00FFC00000, 0x6E400000000002C0, 0x400000,
- 0xFFFF007F80000000, 0x7C80000FFFFFFFF, 0x7C00000070000000,
- 0xF00000000000000, 0x30000, 0x78C0000001100F90, 0xFE00FE00,
- 0xFFFFFFFF00000000, 0xFF80078000000000, 0x1C0000000000000,
+ 0xF000000000F00000, 0xFF0000000000, 0x8007FF000000000, 0xE404000400480800,
+ 0xFF80000000000000, 0xFFFFFF00FFC00000, 0xF802000000000040,
+ 0x6E400000000002C0, 0x400000, 0xFFFF007F80000000, 0x7C80000FFFFFFFF,
+ 0x7C00000070000000, 0xF00000000000000, 0x30000, 0x78C0000001100F90,
+ 0xFE00FE00, 0xFFFFFFFF00000000, 0xFF80078000000000, 0x1C0000000000000,
0xF8000000C00000, 0xFFFF01FFE1FC0000, 0xFFFFFFFFFFFFFE00,
0xFFF8000000000000, 0x3F8000000000000, 0xFC00FF0000000000,
- 0x80000000FFFFFFFF, 0xFFFFFFFFFC000000, 0x7FFF00000003C000,
- 0xFC00FE000000DFFC, 0x20000000000000, 0xFF8000000000FF80,
- 0xFFE000010000C000, 0x8000000000040000, 0xFC0040004280,
- 0xFC00F80000000000, 0x412020000066010, 0xFFE0E0301F7EC660,
- 0xFFFFFFFF94000000, 0xFFFFFFFFFC00FF00, 0xC0000000000000,
- 0xFFFFFFFFC0000000, 0xFFFFE000FC00FFE0, 0xFF00000000000000,
- 0xFFFFFFFFFFFFFC00, 0xF00018000000, 0xF000000000000000, 0xFFFFFFFF,
- 0x7FF8000000000000, 0xFF00, 0xFFFFFFF800000030, 0xFE00000000000000,
- 0x80000000000200, 0xE0000000FFC0, 0xFF80010000030000, 0x4B80000000000480,
- 0x240FC00FF00, 0xFFFFFC00FE048000, 0xFE000000FFFFFFFF, 0xFFE0800000000000,
- 0xFFFFFFFFFFFFFFF0, 0xFFFF800000000000, 0xFFFFFFFFFFFFFF80,
- 0xFFFF3C0080000000, 0xFFC0C0000000FFFF, 0x1F0000040400FFC0,
- 0xFFFFFFFFFFFF0000, 0xFFFFFFFFF8000000, 0x800000000000FFE0,
- 0xFFFFFFFF00007FFF, 0xFFFFFFFCFFFFFFFF, 0xFFFC000000000000,
- 0xFFFFFFFF80000000, 0xFFFFFFFFFFFF, 0xE000F80000000000,
- 0xFFFFFFF00C00FE00, 0xFFC0000000000000, 0x18000000000, 0xFFFFFE0000000000,
- 0xFFFFFFFFFFFFFFC0, 0xFFF00000FFFFFFFF, 0xFE000000FF800000, 0x200000,
- 0x1400219B20000000, 0x10, 0x8400000020201840, 0x203A0, 0xC000000000,
- 0x3000, 0xFFFF000107FFF000, 0xFFFFF82406000080, 0xFFFFFFFFFF800060,
- 0xFFFFFFFF3C00F800, 0x1FFFFFFFFFFFF, 0xFFE0000000000000,
- 0xF508016900000010, 0xA10808695569157B, 0xF0000411F0000400,
- 0xFFFCFFFFFFFFFFFF, 0xF00000000000, 0x18000FFF00000, 0xFFC0000000010001,
- 0xE000, 0xFFFFE00000000000, 0x3FFFFFFFFF, 0xF00000000000FFF8,
- 0xFFFFFFC0FFFCFE00, 0xFC00E000FFE00000, 0xFFF0000000000000,
- 0xFFFFFFFFFE000000, 0xF000, 0xFC00FF00, 0xFFFFC0000000FF00,
- 0x800000000000F000, 0xB86000000000000, 0xFC00FFF800000000, 0xFFF8,
- 0xFFFFC000FFFFFFFF, 0xFFFFFFFFFF800000, 0xC0000000, 0xFFFC00000000,
- 0xFFFFFFFE00000000, 0xFFFFFFFD, 0xFFFF000000000000, 0xC000000000000000,
+ 0x80000000FFFFFFFF, 0xFFFCC40000000000, 0xFFFFFC000000, 0xFFFFFFFFFC00,
+ 0xFF800000FFFFF000, 0x7FC000000003C000, 0xFC00FE000000DFF8,
+ 0x20000000000000, 0xFF8000000000FF00, 0xFFE0000100000000,
+ 0x8000000000040000, 0xFC0040004280, 0xFC00F80000000000, 0x412020000066010,
+ 0xFFE0E0301F7EC660, 0xFFFFFFFC10000000, 0xFFFFFFFFFC00FF00,
+ 0xC0000000000000, 0xFFFFFFFFC0000000, 0xFFFFE000FC00FFE0,
+ 0xFC00000000000000, 0xFFFFFFFFFFFFFC00, 0xF00018000000,
+ 0xFFFFFFFFFFFFFF80, 0xF000000000000000, 0xFFFFFFFF, 0x7FF8000000000000,
+ 0x640000000900D80, 0xFFFFFFFFFC00FF80, 0x300FFFFFFFF, 0xFFFFFFE003000000,
+ 0xFF00, 0xFFF800000000, 0xFE00000000000000, 0x80000000000200,
+ 0xE0000000FFC0, 0xFF80010000030000, 0x4B80000000000480, 0x240FC00FF00,
+ 0xFFFFFC00FE048000, 0xFE000000FFFFFFFF, 0xFFFEFFFFFFFFFFFF,
+ 0x7FFC000000000000, 0xFFFFFFFFFC000000, 0xFFE0800000000000,
+ 0xFFFFFFFFFFFFFFF0, 0xFFFF, 0xFE00800000000000, 0x3C0080000000,
+ 0x8000000000000000, 0xFFC0C0000000FC00, 0x1F0000040400FFC0,
+ 0xFFFFFFFFFFFF0000, 0xFFFFFFFFF8000000, 0x7800, 0xFFFFFFFF00007F00,
+ 0xFFFCFFE0FFFFFFFF, 0xFF00000000000000, 0xFFFFFFFFFFC00000,
+ 0x9010FFFFFFFFFFFF, 0xFFFFFFF800000000, 0xFF0FFFF8FFFF,
+ 0xE000F80000000000, 0xFFFFFFF00C00FE00, 0xC00000000000, 0xFF80,
+ 0xFFC0000000000000, 0x18000000000, 0xFFFFF80000000000, 0xFFFFFFFFFFFFFFC0,
+ 0xFFF00000FFFFFFFF, 0xFE000000FF800000, 0x200000, 0x1400219B20000000,
+ 0x10, 0x8400000020201840, 0x203A0, 0xC000000000, 0x3000,
+ 0xFFFF000107FFF000, 0xFFFFFFFF80000000, 0xFFFFF82406000080,
+ 0xC000E00000000000, 0xFFFFFFFFFFFF3C00, 0xFFFF80000000FFFF,
+ 0x7C00000000000000, 0x80009080FFFFFFFF, 0xFFFFFFFFFF800060,
+ 0xFFFFFFFF3C00F000, 0x1FFFFFFFFFFFF, 0xFFE0000000000000,
+ 0xC000000000000001, 0xF508016900000010, 0xA10808695569157B,
+ 0xF0000411F0000400, 0xFFFCFFFFFFFFFFFF, 0xF00000000000, 0x18000FFF00000,
+ 0xFFC0000000010001, 0xFFFFC00000000000, 0x3FFFFFFFFF, 0xF00000000000FFF8,
+ 0xFFFFFFC0FFFCFE00, 0xE000E0001F000000, 0xFFF0000000000000,
+ 0xFFFEF000FE000000, 0xF000, 0xFC00FF00, 0xFFFCC0000000FF00,
+ 0xE0E0C000FFF00000, 0xF800E0000000FF80, 0xFF80FF00FC00FFC0, 0x80000,
+ 0xFC00FFFFFFFFF800, 0xC0000000, 0xFFFC00000000, 0xFFFFFFFE00000000,
+ 0xFFFFFFFFFFFFF800, 0xFFFFFFFD, 0xFFFF000000000000, 0xC000000000000000,
],
};
@@ -3483,7 +3631,7 @@ pub const UPPERCASE_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 0, 19, 20, 21, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 18, 0, 19, 20, 21, 22, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -3497,15 +3645,15 @@ pub const UPPERCASE_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0,
],
tree2_level2: &[
0, 0xFFFFFFFF00000000, 0x20BF, 0x3FFFFFFFFFFFFF, 0xE7FFFFFFFFFF0000,
0x5555555555555555, 0x5555555540155555, 0xFF00FF003F00FF00,
0xFF00AA003F00, 0xF00000000000000, 0xF001F000F000F00, 0xC00F3D503E273884,
- 0x20, 0x8, 0x7FFFFFFFFFFF, 0xC025EA9D00000000, 0x4280555555555,
+ 0x20, 0x8, 0xFFFFFFFFFFFF, 0xC025EA9D00000000, 0x4280555555555,
0x155555555555, 0x5555555, 0x5554555400000000, 0x6A00555555555555,
- 0x15F7D5555452855, 0x7FFFFFE00000000,
+ 0x555F7D5555452855, 0x200000014102F5, 0x7FFFFFE00000000,
],
tree3_level1: &[
0, 1, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, 4, 5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -3521,29 +3669,30 @@ pub const UPPERCASE_LETTER: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet
2, 2, 2, 2, 2, 2,
],
tree3_level2: &[
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 3, 0, 4, 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,
- 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, 5, 0,
+ 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, 7, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 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,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
- 0, 0xFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFF, 0x7FFFFFFFFFFFF,
- 0xFFFFFFFF00000000, 0xFFFFFFFF, 0xFFF0000003FFFFFF, 0xFFFFFF0000003FFF,
- 0x3FDE64D0000003, 0x3FFFFFF0000, 0x7B0000001FDFE7B0, 0xFFFFF0000001FC5F,
- 0x3FFFFFF0000003F, 0x3FFFFFF00000, 0xF0000003FFFFFF00, 0xFFFF0000003FFFFF,
- 0xFFFFFF00000003FF, 0x7FFFFFC00000001, 0x1FFFFFF0000000, 0x7FFFFFC00000,
- 0x1FFFFFF0000, 0x400, 0x3FFFFFFFF,
+ 0, 0xFFFFFFFFFF, 0xFFFF000000000000, 0xFFFFF, 0xF7FF000000000000,
+ 0x37F7FF, 0x7FFFFFFFFFFFF, 0xFFFFFFFF00000000, 0xFFFFFFFF,
+ 0xFFF0000003FFFFFF, 0xFFFFFF0000003FFF, 0x3FDE64D0000003, 0x3FFFFFF0000,
+ 0x7B0000001FDFE7B0, 0xFFFFF0000001FC5F, 0x3FFFFFF0000003F, 0x3FFFFFF00000,
+ 0xF0000003FFFFFF00, 0xFFFF0000003FFFFF, 0xFFFFFF00000003FF,
+ 0x7FFFFFC00000001, 0x1FFFFFF0000000, 0x7FFFFFC00000, 0x1FFFFFF0000, 0x400,
+ 0x3FFFFFFFF,
],
};
diff --git a/vendor/pest/src/unicode/mod.rs b/vendor/pest/src/unicode/mod.rs
index 3def67e34..912a7ecee 100644
--- a/vendor/pest/src/unicode/mod.rs
+++ b/vendor/pest/src/unicode/mod.rs
@@ -5,6 +5,8 @@
#![allow(bad_style)]
#![allow(clippy::all)]
+use alloc::boxed::Box;
+
macro_rules! char_property_functions {
{$(
mod $module:ident;
diff --git a/vendor/pest/tests/calculator.rs b/vendor/pest/tests/calculator.rs
index b78ee0d27..54a50cc67 100644
--- a/vendor/pest/tests/calculator.rs
+++ b/vendor/pest/tests/calculator.rs
@@ -40,12 +40,12 @@ impl Parser<Rule> for CalculatorParser {
s.repeat(|s| {
s.sequence(|s| {
plus(s)
- .or_else(|s| minus(s))
- .or_else(|s| times(s))
- .or_else(|s| divide(s))
- .or_else(|s| modulus(s))
- .or_else(|s| power(s))
- .and_then(|s| primary(s))
+ .or_else(minus)
+ .or_else(times)
+ .or_else(divide)
+ .or_else(modulus)
+ .or_else(power)
+ .and_then(primary)
})
})
})
@@ -57,10 +57,10 @@ impl Parser<Rule> for CalculatorParser {
state
.sequence(|s| {
s.match_string("(")
- .and_then(|s| expression(s))
+ .and_then(expression)
.and_then(|s| s.match_string(")"))
})
- .or_else(|s| number(s))
+ .or_else(number)
}
fn number(state: Box<ParserState<Rule>>) -> ParseResult<Box<ParserState<Rule>>> {
@@ -109,7 +109,7 @@ impl Parser<Rule> for CalculatorParser {
}
}
-fn consume<'i>(pair: Pair<'i, Rule>, climber: &PrecClimber<Rule>) -> i32 {
+fn consume(pair: Pair<Rule>, climber: &PrecClimber<Rule>) -> i32 {
let primary = |pair| consume(pair, climber);
let infix = |lhs: i32, op: Pair<Rule>, rhs: i32| match op.as_rule() {
Rule::plus => lhs + rhs,
diff --git a/vendor/pest/tests/json.rs b/vendor/pest/tests/json.rs
index 84906258a..b9338c342 100644
--- a/vendor/pest/tests/json.rs
+++ b/vendor/pest/tests/json.rs
@@ -47,16 +47,16 @@ impl Parser<Rule> for JsonParser {
state.rule(Rule::object, |s| {
s.sequence(|s| {
s.match_string("{")
- .and_then(|s| skip(s))
- .and_then(|s| pair(s))
- .and_then(|s| skip(s))
+ .and_then(skip)
+ .and_then(pair)
+ .and_then(skip)
.and_then(|s| {
s.repeat(|s| {
s.sequence(|s| {
s.match_string(",")
- .and_then(|s| skip(s))
- .and_then(|s| pair(s))
- .and_then(|s| skip(s))
+ .and_then(skip)
+ .and_then(pair)
+ .and_then(skip)
})
})
})
@@ -65,7 +65,7 @@ impl Parser<Rule> for JsonParser {
.or_else(|s| {
s.sequence(|s| {
s.match_string("{")
- .and_then(|s| skip(s))
+ .and_then(skip)
.and_then(|s| s.match_string("}"))
})
})
@@ -76,10 +76,10 @@ impl Parser<Rule> for JsonParser {
state.rule(Rule::pair, |s| {
s.sequence(|s| {
string(s)
- .and_then(|s| skip(s))
+ .and_then(skip)
.and_then(|s| s.match_string(":"))
- .and_then(|s| skip(s))
- .and_then(|s| value(s))
+ .and_then(skip)
+ .and_then(value)
})
})
}
@@ -88,16 +88,16 @@ impl Parser<Rule> for JsonParser {
state.rule(Rule::array, |s| {
s.sequence(|s| {
s.match_string("[")
- .and_then(|s| skip(s))
- .and_then(|s| value(s))
- .and_then(|s| skip(s))
+ .and_then(skip)
+ .and_then(value)
+ .and_then(skip)
.and_then(|s| {
s.repeat(|s| {
s.sequence(|s| {
s.match_string(",")
- .and_then(|s| skip(s))
- .and_then(|s| value(s))
- .and_then(|s| skip(s))
+ .and_then(skip)
+ .and_then(value)
+ .and_then(skip)
})
})
})
@@ -106,7 +106,7 @@ impl Parser<Rule> for JsonParser {
.or_else(|s| {
s.sequence(|s| {
s.match_string("[")
- .and_then(|s| skip(s))
+ .and_then(skip)
.and_then(|s| s.match_string("]"))
})
})
@@ -116,11 +116,11 @@ impl Parser<Rule> for JsonParser {
fn value(state: Box<ParserState<Rule>>) -> ParseResult<Box<ParserState<Rule>>> {
state.rule(Rule::value, |s| {
string(s)
- .or_else(|s| number(s))
- .or_else(|s| object(s))
- .or_else(|s| array(s))
- .or_else(|s| bool(s))
- .or_else(|s| null(s))
+ .or_else(number)
+ .or_else(object)
+ .or_else(array)
+ .or_else(bool)
+ .or_else(null)
})
}
@@ -154,7 +154,7 @@ impl Parser<Rule> for JsonParser {
.or_else(|s| s.match_string("n"))
.or_else(|s| s.match_string("r"))
.or_else(|s| s.match_string("t"))
- .or_else(|s| unicode(s))
+ .or_else(unicode)
})
})
}
@@ -162,9 +162,9 @@ impl Parser<Rule> for JsonParser {
fn unicode(state: Box<ParserState<Rule>>) -> ParseResult<Box<ParserState<Rule>>> {
state.sequence(|s| {
s.match_string("u")
- .and_then(|s| hex(s))
- .and_then(|s| hex(s))
- .and_then(|s| hex(s))
+ .and_then(hex)
+ .and_then(hex)
+ .and_then(hex)
})
}
@@ -179,15 +179,15 @@ impl Parser<Rule> for JsonParser {
state.rule(Rule::number, |s| {
s.sequence(|s| {
s.optional(|s| s.match_string("-"))
- .and_then(|s| int(s))
+ .and_then(int)
.and_then(|s| {
s.optional(|s| {
s.sequence(|s| {
s.match_string(".")
.and_then(|s| s.match_range('0'..'9'))
.and_then(|s| s.repeat(|s| s.match_range('0'..'9')))
- .and_then(|s| s.optional(|s| exp(s)))
- .or_else(|s| exp(s))
+ .and_then(|s| s.optional(exp))
+ .or_else(exp)
})
})
})
@@ -211,7 +211,7 @@ impl Parser<Rule> for JsonParser {
.and_then(|s| {
s.optional(|s| s.match_string("+").or_else(|s| s.match_string("-")))
})
- .and_then(|s| int(s))
+ .and_then(int)
})
}
@@ -451,15 +451,12 @@ fn ast() {
.unwrap(),
);
- match ast {
- Json::Object(pairs) => {
- let vals: Vec<&Json> = pairs.values().collect();
+ if let Json::Object(pairs) = ast {
+ let vals: Vec<&Json> = pairs.values().collect();
- assert_eq!(
- **vals.get(0).unwrap(),
- Json::Array(vec![Json::Null, Json::Bool(true), Json::Number(3.4)])
- );
- }
- _ => {}
+ assert_eq!(
+ **vals.get(0).unwrap(),
+ Json::Array(vec![Json::Null, Json::Bool(true), Json::Number(3.4)])
+ );
}
}
diff --git a/vendor/pest_derive/.cargo-checksum.json b/vendor/pest_derive/.cargo-checksum.json
index 0f484603a..b9c70e450 100644
--- a/vendor/pest_derive/.cargo-checksum.json
+++ b/vendor/pest_derive/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"3616e31e313d646dd0372ba0116b596a4c9dfc21cda88625ef00001ab13b0d68","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","_README.md":"7c31c505c267ac538b70deaa9ad95ef0cc68720c46b4d3276df8f3a278d233e2","src/lib.rs":"f343c474ce5ff5520907bd69dd52b965b4aec42750fe3bf7eaf2b5075b08cfd6","tests/grammar.pest":"3a2212c28dd560ba3169e0e1470394ae706eb9336360ecdc0f1d9934af9fc223","tests/grammar.rs":"75261bc1ba2817d59e35fa2a7c07a661f9f2200a0144cb768837d37d3c370aa0","tests/grammar_inline.rs":"675c55697df7b8d011cef7182f2b05d52b4e73d405c869b9ea361bff5f17b63a","tests/lists.pest":"96d90ad5eb7b14648fa8720f0a48e680327080b07251a4dd74e1a023625e9c1a","tests/lists.rs":"5cc0c79494685d5056ab6164bc8893e26d29810f5c5a20d895f27c1695bab31c","tests/reporting.pest":"f5bc8405ea117b76338e0003e359731a8aaf1a36672f31a6a639a4e67a65e331","tests/reporting.rs":"d1658fd9466278f80769384f4377056274bd06fff586c2422b4fe42d39967e4b"},"package":"833d1ae558dc601e9a60366421196a8d94bc0ac980476d0b67e1d0988d72b2d0"} \ No newline at end of file
+{"files":{"Cargo.toml":"3b10f9a7d7abd7529819a9c273e1e1fe6868225f3eb14fca998ede71e81d0d9c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","_README.md":"01ba71f02581f9f5018962e083ca77bc8e8af2b6f8a73111bfa04e847a6440e2","src/lib.rs":"8a4edbd00a1ac7dddf041618bc088d095ade1647799fcb7621b71cc2660f0822","tests/grammar.pest":"23c99a141f9165d24f3c46cd40a15788056b87558398b80a757980fd6967f271","tests/grammar.rs":"1c583be001c7f627816507142324a465d6bd2c701e869a3382ff44e8c45050e9","tests/grammar_inline.rs":"349527e75a1fc10e0208d3d88cbac427dd5999b8a2a79d2b9c981e73af22da37","tests/lists.pest":"96d90ad5eb7b14648fa8720f0a48e680327080b07251a4dd74e1a023625e9c1a","tests/lists.rs":"2dc0cb9c07f5b077743ce9313488599347061ea486e0f5160bff50b3d07ca72c","tests/reporting.pest":"f5bc8405ea117b76338e0003e359731a8aaf1a36672f31a6a639a4e67a65e331","tests/reporting.rs":"8b88238dc33abff5dbc76434a7468dceeb9db3dfa8826d44c8ea1d13d52431e8"},"package":"905708f7f674518498c1f8d644481440f476d39ca6ecae83319bba7c6c12da91"} \ No newline at end of file
diff --git a/vendor/pest_derive/Cargo.toml b/vendor/pest_derive/Cargo.toml
index 47dfec41b..44212b499 100644
--- a/vendor/pest_derive/Cargo.toml
+++ b/vendor/pest_derive/Cargo.toml
@@ -3,22 +3,28 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
+rust-version = "1.56"
name = "pest_derive"
-version = "2.1.0"
+version = "2.3.0"
authors = ["Dragoș Tiselice <dragostiselice@gmail.com>"]
description = "pest's derive macro"
homepage = "https://pest-parser.github.io/"
documentation = "https://docs.rs/pest"
readme = "_README.md"
-keywords = ["pest", "parser", "peg", "grammar"]
+keywords = [
+ "pest",
+ "parser",
+ "peg",
+ "grammar",
+]
categories = ["parsing"]
license = "MIT/Apache-2.0"
repository = "https://github.com/pest-parser/pest"
@@ -26,16 +32,18 @@ repository = "https://github.com/pest-parser/pest"
[lib]
name = "pest_derive"
proc-macro = true
+
[dependencies.pest]
-version = "2.1.0"
+version = "2.3.0"
+default-features = false
[dependencies.pest_generator]
-version = "2.1.0"
-[badges.codecov]
-repository = "pest-parser/pest"
-
-[badges.maintenance]
-status = "actively-developed"
+version = "2.3.0"
+default-features = false
-[badges.travis-ci]
-repository = "pest-parser/pest"
+[features]
+default = ["std"]
+std = [
+ "pest/std",
+ "pest_generator/std",
+]
diff --git a/vendor/pest_derive/_README.md b/vendor/pest_derive/_README.md
index 2c94a7222..f91188ccb 100644
--- a/vendor/pest_derive/_README.md
+++ b/vendor/pest_derive/_README.md
@@ -1,3 +1,4 @@
+
<p align="center">
<img src="https://raw.github.com/pest-parser/pest/master/pest-logo.svg?sanitize=true" width="80%"/>
</p>
@@ -8,8 +9,10 @@
[![Book](https://img.shields.io/badge/book-WIP-4d76ae.svg)](https://pest-parser.github.io/book)
[![Docs](https://docs.rs/pest/badge.svg)](https://docs.rs/pest)
-[![Build Status](https://travis-ci.org/pest-parser/pest.svg?branch=master)](https://travis-ci.org/pest-parser/pest)
+[![pest Continuous Integration](https://github.com/pest-parser/pest/actions/workflows/ci.yml/badge.svg)](https://github.com/pest-parser/pest/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/pest-parser/pest/branch/master/graph/badge.svg)](https://codecov.io/gh/pest-parser/pest)
+<a href="https://blog.rust-lang.org/2021/11/01/Rust-1.56.1.html"><img alt="Rustc Version 1.56.1+" src="https://img.shields.io/badge/rustc-1.56.1%2B-lightgrey.svg"/></a>
+
[![Crates.io](https://img.shields.io/crates/d/pest.svg)](https://crates.io/crates/pest)
[![Crates.io](https://img.shields.io/crates/v/pest.svg)](https://crates.io/crates/pest)
@@ -37,7 +40,7 @@ Other helpful resources:
## Example
-The following is an example of a grammar for a list of alpha-numeric identifiers
+The following is an example of a grammar for a list of alphanumeric identifiers
where the first identifier does not start with a digit:
```rust
@@ -99,19 +102,16 @@ fn main() {
// Because ident_list is silent, the iterator will contain idents
for pair in pairs {
-
- let span = pair.clone().into_span();
// A pair is a combination of the rule which matched and a span of input
println!("Rule: {:?}", pair.as_rule());
- println!("Span: {:?}", span);
- println!("Text: {}", span.as_str());
+ println!("Span: {:?}", pair.as_span());
+ println!("Text: {}", pair.as_str());
// A pair can be converted to an iterator of the tokens which make it up:
for inner_pair in pair.into_inner() {
- let inner_span = inner_pair.clone().into_span();
match inner_pair.as_rule() {
- Rule::alpha => println!("Letter: {}", inner_span.as_str()),
- Rule::digit => println!("Digit: {}", inner_span.as_str()),
+ Rule::alpha => println!("Letter: {}", inner_pair.as_str()),
+ Rule::digit => println!("Digit: {}", inner_pair.as_str()),
_ => unreachable!()
};
}
@@ -143,15 +143,20 @@ Digit: 2
## Projects using pest
* [pest_meta](https://github.com/pest-parser/pest/blob/master/meta/src/grammar.pest) (bootstrapped)
+* [AshPaper](https://github.com/shnewto/ashpaper)
* [brain](https://github.com/brain-lang/brain)
-* [Chelone](https://github.com/Aaronepower/chelone)
+* [cicada](https://github.com/mitnk/cicada)
* [comrak](https://github.com/kivikakk/comrak)
+* [elastic-rs](https://github.com/cch123/elastic-rs)
* [graphql-parser](https://github.com/Keats/graphql-parser)
* [handlebars-rust](https://github.com/sunng87/handlebars-rust)
* [hexdino](https://github.com/Luz/hexdino)
* [Huia](https://gitlab.com/jimsy/huia/)
+* [insta](https://github.com/mitsuhiko/insta)
+* [jql](https://github.com/yamafaktory/jql)
* [json5-rs](https://github.com/callum-oakley/json5-rs)
* [mt940](https://github.com/svenstaro/mt940-rs)
+* [Myoxine](https://github.com/d3bate/myoxine)
* [py_literal](https://github.com/jturner314/py_literal)
* [rouler](https://github.com/jarcane/rouler)
* [RuSh](https://github.com/lwandrebeck/RuSh)
@@ -160,6 +165,18 @@ Digit: 2
* [tera](https://github.com/Keats/tera)
* [ui_gen](https://github.com/emoon/ui_gen)
* [ukhasnet-parser](https://github.com/adamgreig/ukhasnet-parser)
+* [ZoKrates](https://github.com/ZoKrates/ZoKrates)
+* [Vector](https://github.com/timberio/vector)
+* [AutoCorrect](https://github.com/huacnlee/autocorrect)
+* [yaml-peg](https://github.com/aofdev/yaml-peg)
+* [qubit](https://github.com/abhimanyu003/qubit)
+* [caith](https://github.com/Geobert/caith) (a dice roller crate)
+* [Melody](https://github.com/yoav-lavi/melody)
+
+## Minimum Supported Rust Version (MSRV)
+
+This library should always compile with default features on **Rust 1.56.1**
+or **Rust 1.61** with `const_prec_climber`.
## Special thanks
diff --git a/vendor/pest_derive/src/lib.rs b/vendor/pest_derive/src/lib.rs
index f60d5d943..d980c6ae9 100644
--- a/vendor/pest_derive/src/lib.rs
+++ b/vendor/pest_derive/src/lib.rs
@@ -55,7 +55,7 @@
//!
//! Comments start with `//` and end at the end of the line.
//!
-//! ```ignore
+//! ```text
//! // a comment
//! ```
//!
@@ -152,7 +152,7 @@
//!
//! Strings and characters follow
//! [Rust's escape mechanisms](https://doc.rust-lang.org/reference/tokens.html#byte-escapes), while
-//! identifiers can contain alpha-numeric characters and underscores (`_`), as long as they do not
+//! identifiers can contain alphanumeric characters and underscores (`_`), as long as they do not
//! start with a digit.
//!
//! 2. Non-terminals
@@ -266,7 +266,7 @@
//! ```
//!
//! For historical reasons, `PEEK_ALL` matches from top to bottom, while `PEEK[start..end]` matches
-//! from bottom to top. There is currectly no syntax to match a slice of the stack top to bottom.
+//! from bottom to top. There is currently no syntax to match a slice of the stack top to bottom.
//!
//! ## `Rule`
//!
@@ -290,7 +290,6 @@
//! * `NEWLINE` - matches either "\n" or "\r\n" or "\r"
#![doc(html_root_url = "https://docs.rs/pest_derive")]
-
extern crate pest_generator;
extern crate proc_macro;
diff --git a/vendor/pest_derive/tests/grammar.pest b/vendor/pest_derive/tests/grammar.pest
index 43a7b8cfd..126f112d3 100644
--- a/vendor/pest_derive/tests/grammar.pest
+++ b/vendor/pest_derive/tests/grammar.pest
@@ -22,6 +22,7 @@ sequence_atomic_compound = @{ sequence_compound }
sequence_nested = { string ~ string }
sequence_compound_nested = ${ sequence_nested }
choice = { string | range }
+choice_prefix = { | string | range }
optional = { string? }
repeat = { string* }
repeat_atomic = @{ string* }
@@ -36,6 +37,9 @@ repeat_max = { string{, 2} }
repeat_max_atomic = @{ string{, 2} }
soi_at_start = { SOI ~ string }
repeat_mutate_stack = { (PUSH('a'..'c') ~ ",")* ~ POP ~ POP ~ POP }
+repeat_mutate_stack_pop_all = { (PUSH('a'..'c') ~ ",")* ~ POP_ALL }
+will_fail = { repeat_mutate_stack_pop_all ~ "FAIL" }
+stack_resume_after_fail = { will_fail | repeat_mutate_stack_pop_all }
peek_ = { PUSH(range) ~ PUSH(range) ~ PEEK ~ PEEK }
peek_all = { PUSH(range) ~ PUSH(range) ~ PEEK_ALL }
peek_slice_23 = { PUSH(range) ~ PUSH(range) ~ PUSH(range) ~ PUSH(range) ~ PUSH(range) ~ PEEK[1..-2] }
diff --git a/vendor/pest_derive/tests/grammar.rs b/vendor/pest_derive/tests/grammar.rs
index 799beb7e0..57bed9072 100644
--- a/vendor/pest_derive/tests/grammar.rs
+++ b/vendor/pest_derive/tests/grammar.rs
@@ -6,6 +6,9 @@
// license <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
+#![cfg_attr(not(feature = "std"), no_std)]
+extern crate alloc;
+use alloc::{format, vec::Vec};
#[macro_use]
extern crate pest;
@@ -246,6 +249,20 @@ fn choice_range() {
}
#[test]
+fn choice_prefix() {
+ parses_to! {
+ parser: GrammarParser,
+ input: "abc",
+ rule: Rule::choice_prefix,
+ tokens: [
+ choice_prefix(0, 3, [
+ string(0, 3)
+ ])
+ ]
+ };
+}
+
+#[test]
fn optional_string() {
parses_to! {
parser: GrammarParser,
@@ -783,6 +800,20 @@ fn repeat_mutate_stack() {
}
#[test]
+fn stack_resume_after_fail() {
+ parses_to! {
+ parser: GrammarParser,
+ input: "a,b,c,cba",
+ rule: Rule::stack_resume_after_fail,
+ tokens: [
+ stack_resume_after_fail(0, 9, [
+ repeat_mutate_stack_pop_all(0, 9)
+ ])
+ ]
+ };
+}
+
+#[test]
fn checkpoint_restore() {
parses_to! {
parser: GrammarParser,
diff --git a/vendor/pest_derive/tests/grammar_inline.rs b/vendor/pest_derive/tests/grammar_inline.rs
index 2cc730afc..549a8145e 100644
--- a/vendor/pest_derive/tests/grammar_inline.rs
+++ b/vendor/pest_derive/tests/grammar_inline.rs
@@ -4,6 +4,10 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
+#![cfg_attr(not(feature = "std"), no_std)]
+extern crate alloc;
+use alloc::{format, vec::Vec};
+
#[macro_use]
extern crate pest;
#[macro_use]
diff --git a/vendor/pest_derive/tests/lists.rs b/vendor/pest_derive/tests/lists.rs
index 4ba0effce..3678b603b 100644
--- a/vendor/pest_derive/tests/lists.rs
+++ b/vendor/pest_derive/tests/lists.rs
@@ -7,6 +7,10 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
+#![cfg_attr(not(feature = "std"), no_std)]
+extern crate alloc;
+use alloc::{format, vec::Vec};
+
#[macro_use]
extern crate pest;
#[macro_use]
diff --git a/vendor/pest_derive/tests/reporting.rs b/vendor/pest_derive/tests/reporting.rs
index aa0a974e0..8a41bef72 100644
--- a/vendor/pest_derive/tests/reporting.rs
+++ b/vendor/pest_derive/tests/reporting.rs
@@ -7,6 +7,10 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
+#![cfg_attr(not(feature = "std"), no_std)]
+extern crate alloc;
+use alloc::vec;
+
#[macro_use]
extern crate pest;
#[macro_use]
diff --git a/vendor/pest_generator/.cargo-checksum.json b/vendor/pest_generator/.cargo-checksum.json
index 54f869f8e..573d6c49f 100644
--- a/vendor/pest_generator/.cargo-checksum.json
+++ b/vendor/pest_generator/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"0f2f8b8f880c20e4281e53b2675356ee672d7c04b015f4c182509ed2ca614e6e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","_README.md":"e9901b6c4d50403bfda7e08a92b5c395a8c51eba868c7bd07b03e00ccba702f3","src/generator.rs":"7b0b67ec000ccde0ec8df83b26f84e0a7b2a17e255e900ab28379984e7dbba27","src/lib.rs":"1cc63047aad721587a23eeea54d4c398bf5c085d934e41100a8766954a1b6071","src/macros.rs":"03ae0a9ec0210b19c8e6becc275df11b504003d22f3ff758d8bf3ee997d2b476"},"package":"99b8db626e31e5b81787b9783425769681b347011cc59471e33ea46d2ea0cf55"} \ No newline at end of file
+{"files":{"Cargo.toml":"f047138333fb2c65ecd773393f1f61e4778ad467a376b5417d9047c300274be5","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","_README.md":"01ba71f02581f9f5018962e083ca77bc8e8af2b6f8a73111bfa04e847a6440e2","src/generator.rs":"51081975a6237bc77cdc4535841c7fbf777e3c466b4c89c821ab68850eeb656a","src/lib.rs":"1cc63047aad721587a23eeea54d4c398bf5c085d934e41100a8766954a1b6071","src/macros.rs":"6522f9b7a2fb172d9ff6ad75c3dcfd547596b5c6ea23f3f5a386220d4f85afa4"},"package":"5803d8284a629cc999094ecd630f55e91b561a1d1ba75e233b00ae13b91a69ad"} \ No newline at end of file
diff --git a/vendor/pest_generator/Cargo.toml b/vendor/pest_generator/Cargo.toml
index 1ef45f99a..5db0c4b01 100644
--- a/vendor/pest_generator/Cargo.toml
+++ b/vendor/pest_generator/Cargo.toml
@@ -3,30 +3,36 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
+rust-version = "1.56"
name = "pest_generator"
-version = "2.1.3"
+version = "2.3.0"
authors = ["Dragoș Tiselice <dragostiselice@gmail.com>"]
description = "pest code generator"
homepage = "https://pest-parser.github.io/"
documentation = "https://docs.rs/pest"
readme = "_README.md"
-keywords = ["pest", "generator"]
+keywords = [
+ "pest",
+ "generator",
+]
categories = ["parsing"]
license = "MIT/Apache-2.0"
repository = "https://github.com/pest-parser/pest"
+
[dependencies.pest]
-version = "2.1.0"
+version = "2.3.0"
+default-features = false
[dependencies.pest_meta]
-version = "2.1.0"
+version = "2.3.0"
[dependencies.proc-macro2]
version = "1.0"
@@ -36,11 +42,7 @@ version = "1.0"
[dependencies.syn]
version = "1.0"
-[badges.codecov]
-repository = "pest-parser/pest"
-
-[badges.maintenance]
-status = "actively-developed"
-[badges.travis-ci]
-repository = "pest-parser/pest"
+[features]
+default = ["std"]
+std = ["pest/std"]
diff --git a/vendor/pest_generator/_README.md b/vendor/pest_generator/_README.md
index 8e55f29a2..f91188ccb 100644
--- a/vendor/pest_generator/_README.md
+++ b/vendor/pest_generator/_README.md
@@ -1,3 +1,4 @@
+
<p align="center">
<img src="https://raw.github.com/pest-parser/pest/master/pest-logo.svg?sanitize=true" width="80%"/>
</p>
@@ -8,9 +9,10 @@
[![Book](https://img.shields.io/badge/book-WIP-4d76ae.svg)](https://pest-parser.github.io/book)
[![Docs](https://docs.rs/pest/badge.svg)](https://docs.rs/pest)
-[![Build Status](https://travis-ci.org/pest-parser/pest.svg?branch=master)](https://travis-ci.org/pest-parser/pest)
+[![pest Continuous Integration](https://github.com/pest-parser/pest/actions/workflows/ci.yml/badge.svg)](https://github.com/pest-parser/pest/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/pest-parser/pest/branch/master/graph/badge.svg)](https://codecov.io/gh/pest-parser/pest)
-[![Fuzzit Status](https://app.fuzzit.dev/badge?org_id=pest-parser)](https://app.fuzzit.dev/orgs/pest-parser/dashboard)
+<a href="https://blog.rust-lang.org/2021/11/01/Rust-1.56.1.html"><img alt="Rustc Version 1.56.1+" src="https://img.shields.io/badge/rustc-1.56.1%2B-lightgrey.svg"/></a>
+
[![Crates.io](https://img.shields.io/crates/d/pest.svg)](https://crates.io/crates/pest)
[![Crates.io](https://img.shields.io/crates/v/pest.svg)](https://crates.io/crates/pest)
@@ -38,7 +40,7 @@ Other helpful resources:
## Example
-The following is an example of a grammar for a list of alpha-numeric identifiers
+The following is an example of a grammar for a list of alphanumeric identifiers
where the first identifier does not start with a digit:
```rust
@@ -143,16 +145,18 @@ Digit: 2
* [pest_meta](https://github.com/pest-parser/pest/blob/master/meta/src/grammar.pest) (bootstrapped)
* [AshPaper](https://github.com/shnewto/ashpaper)
* [brain](https://github.com/brain-lang/brain)
-* [Chelone](https://github.com/Aaronepower/chelone)
+* [cicada](https://github.com/mitnk/cicada)
* [comrak](https://github.com/kivikakk/comrak)
* [elastic-rs](https://github.com/cch123/elastic-rs)
* [graphql-parser](https://github.com/Keats/graphql-parser)
* [handlebars-rust](https://github.com/sunng87/handlebars-rust)
* [hexdino](https://github.com/Luz/hexdino)
* [Huia](https://gitlab.com/jimsy/huia/)
+* [insta](https://github.com/mitsuhiko/insta)
* [jql](https://github.com/yamafaktory/jql)
* [json5-rs](https://github.com/callum-oakley/json5-rs)
* [mt940](https://github.com/svenstaro/mt940-rs)
+* [Myoxine](https://github.com/d3bate/myoxine)
* [py_literal](https://github.com/jturner314/py_literal)
* [rouler](https://github.com/jarcane/rouler)
* [RuSh](https://github.com/lwandrebeck/RuSh)
@@ -162,6 +166,17 @@ Digit: 2
* [ui_gen](https://github.com/emoon/ui_gen)
* [ukhasnet-parser](https://github.com/adamgreig/ukhasnet-parser)
* [ZoKrates](https://github.com/ZoKrates/ZoKrates)
+* [Vector](https://github.com/timberio/vector)
+* [AutoCorrect](https://github.com/huacnlee/autocorrect)
+* [yaml-peg](https://github.com/aofdev/yaml-peg)
+* [qubit](https://github.com/abhimanyu003/qubit)
+* [caith](https://github.com/Geobert/caith) (a dice roller crate)
+* [Melody](https://github.com/yoav-lavi/melody)
+
+## Minimum Supported Rust Version (MSRV)
+
+This library should always compile with default features on **Rust 1.56.1**
+or **Rust 1.61** with `const_prec_climber`.
## Special thanks
diff --git a/vendor/pest_generator/src/generator.rs b/vendor/pest_generator/src/generator.rs
index bed56f34a..0d3051e27 100644
--- a/vendor/pest_generator/src/generator.rs
+++ b/vendor/pest_generator/src/generator.rs
@@ -17,7 +17,6 @@ use pest_meta::ast::*;
use pest_meta::optimizer::*;
use pest_meta::UNICODE_PROPERTY_NAMES;
-#[allow(clippy::needless_pass_by_value)]
pub fn generate(
name: Ident,
generics: &Generics,
@@ -52,17 +51,20 @@ pub fn generate(
let (impl_generics, ty_generics, where_clause) = generics.split_for_impl();
+ let result = result_type();
+
let parser_impl = quote! {
#[allow(clippy::all)]
impl #impl_generics ::pest::Parser<Rule> for #name #ty_generics #where_clause {
fn parse<'i>(
rule: Rule,
input: &'i str
- ) -> ::std::result::Result<
+ ) -> #result<
::pest::iterators::Pairs<'i, Rule>,
::pest::error::Error<Rule>
> {
mod rules {
+ #![allow(clippy::upper_case_acronyms)]
pub mod hidden {
use super::super::Rule;
#skip
@@ -98,7 +100,7 @@ fn generate_builtin_rules() -> Vec<(&'static str, TokenStream)> {
let mut builtins = Vec::new();
insert_builtin!(builtins, ANY, state.skip(1));
- insert_public_builtin!(
+ insert_builtin!(
builtins,
EOI,
state.rule(Rule::EOI, |state| state.end_of_input())
@@ -149,13 +151,15 @@ fn generate_builtin_rules() -> Vec<(&'static str, TokenStream)> {
.or_else(|state| state.match_string("\r"))
);
+ let box_ty = box_type();
+
for property in UNICODE_PROPERTY_NAMES {
let property_ident: Ident = syn::parse_str(property).unwrap();
// insert manually for #property substitution
builtins.push((property, quote! {
#[inline]
#[allow(dead_code, non_snake_case, unused_variables)]
- fn #property_ident(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ fn #property_ident(state: #box_ty<::pest::ParserState<Rule>>) -> ::pest::ParseResult<#box_ty<::pest::ParserState<Rule>>> {
state.match_char_by(::pest::unicode::#property_ident)
}
}));
@@ -183,7 +187,7 @@ fn generate_enum(rules: &[OptimizedRule], uses_eoi: bool) -> TokenStream {
.map(|rule| Ident::new(rule.name.as_str(), Span::call_site()));
if uses_eoi {
quote! {
- #[allow(dead_code, non_camel_case_types)]
+ #[allow(dead_code, non_camel_case_types, clippy::upper_case_acronyms)]
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub enum Rule {
EOI,
@@ -192,7 +196,7 @@ fn generate_enum(rules: &[OptimizedRule], uses_eoi: bool) -> TokenStream {
}
} else {
quote! {
- #[allow(dead_code, non_camel_case_types)]
+ #[allow(dead_code, non_camel_case_types, clippy::upper_case_acronyms)]
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub enum Rule {
#( #rules ),*
@@ -239,11 +243,13 @@ fn generate_rule(rule: OptimizedRule) -> TokenStream {
generate_expr(rule.expr)
};
+ let box_ty = box_type();
+
match rule.ty {
RuleType::Normal => quote! {
#[inline]
#[allow(non_snake_case, unused_variables)]
- pub fn #name(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ pub fn #name(state: #box_ty<::pest::ParserState<Rule>>) -> ::pest::ParseResult<#box_ty<::pest::ParserState<Rule>>> {
state.rule(Rule::#name, |state| {
#expr
})
@@ -252,14 +258,14 @@ fn generate_rule(rule: OptimizedRule) -> TokenStream {
RuleType::Silent => quote! {
#[inline]
#[allow(non_snake_case, unused_variables)]
- pub fn #name(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ pub fn #name(state: #box_ty<::pest::ParserState<Rule>>) -> ::pest::ParseResult<#box_ty<::pest::ParserState<Rule>>> {
#expr
}
},
RuleType::Atomic => quote! {
#[inline]
#[allow(non_snake_case, unused_variables)]
- pub fn #name(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ pub fn #name(state: #box_ty<::pest::ParserState<Rule>>) -> ::pest::ParseResult<#box_ty<::pest::ParserState<Rule>>> {
state.rule(Rule::#name, |state| {
state.atomic(::pest::Atomicity::Atomic, |state| {
#expr
@@ -270,7 +276,7 @@ fn generate_rule(rule: OptimizedRule) -> TokenStream {
RuleType::CompoundAtomic => quote! {
#[inline]
#[allow(non_snake_case, unused_variables)]
- pub fn #name(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ pub fn #name(state: #box_ty<::pest::ParserState<Rule>>) -> ::pest::ParseResult<#box_ty<::pest::ParserState<Rule>>> {
state.atomic(::pest::Atomicity::CompoundAtomic, |state| {
state.rule(Rule::#name, |state| {
#expr
@@ -281,7 +287,7 @@ fn generate_rule(rule: OptimizedRule) -> TokenStream {
RuleType::NonAtomic => quote! {
#[inline]
#[allow(non_snake_case, unused_variables)]
- pub fn #name(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ pub fn #name(state: #box_ty<::pest::ParserState<Rule>>) -> ::pest::ParseResult<#box_ty<::pest::ParserState<Rule>>> {
state.atomic(::pest::Atomicity::NonAtomic, |state| {
state.rule(Rule::#name, |state| {
#expr
@@ -619,13 +625,38 @@ struct QuoteOption<T>(Option<T>);
impl<T: ToTokens> ToTokens for QuoteOption<T> {
fn to_tokens(&self, tokens: &mut TokenStream) {
+ let option = option_type();
tokens.append_all(match self.0 {
- Some(ref t) => quote! { ::std::option::Option::Some(#t) },
- None => quote! { ::std::option::Option::None },
+ Some(ref t) => quote! { #option::Some(#t) },
+ None => quote! { #option::None },
});
}
}
+fn box_type() -> TokenStream {
+ #[cfg(feature = "std")]
+ quote! { ::std::boxed::Box }
+
+ #[cfg(not(feature = "std"))]
+ quote! { ::alloc::boxed::Box }
+}
+
+fn result_type() -> TokenStream {
+ #[cfg(feature = "std")]
+ quote! { ::std::result::Result }
+
+ #[cfg(not(feature = "std"))]
+ quote! { ::core::result::Result }
+}
+
+fn option_type() -> TokenStream {
+ #[cfg(feature = "std")]
+ quote! { ::std::option::Option }
+
+ #[cfg(not(feature = "std"))]
+ quote! { ::core::option::Option }
+}
+
#[cfg(test)]
mod tests {
use super::*;
@@ -641,7 +672,7 @@ mod tests {
assert_eq!(
generate_enum(&rules, false).to_string(),
quote! {
- #[allow(dead_code, non_camel_case_types)]
+ #[allow(dead_code, non_camel_case_types, clippy::upper_case_acronyms)]
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub enum Rule {
f
@@ -935,6 +966,8 @@ mod tests {
expr: OptimizedExpr::Str("b".to_owned()),
}];
let defaults = vec!["ANY"];
+ let result = result_type();
+ let box_ty = box_type();
let mut current_dir = std::env::current_dir().expect("Unable to get current directory");
current_dir.push("test.pest");
let test_path = current_dir.to_str().expect("path contains invalid unicode");
@@ -944,7 +977,7 @@ mod tests {
#[allow(non_upper_case_globals)]
const _PEST_GRAMMAR_MyParser: &'static str = include_str!(#test_path);
- #[allow(dead_code, non_camel_case_types)]
+ #[allow(dead_code, non_camel_case_types, clippy::upper_case_acronyms)]
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub enum Rule {
a
@@ -955,17 +988,18 @@ mod tests {
fn parse<'i>(
rule: Rule,
input: &'i str
- ) -> ::std::result::Result<
+ ) -> #result<
::pest::iterators::Pairs<'i, Rule>,
::pest::error::Error<Rule>
> {
mod rules {
+ #![allow(clippy::upper_case_acronyms)]
pub mod hidden {
use super::super::Rule;
#[inline]
#[allow(dead_code, non_snake_case, unused_variables)]
- pub fn skip(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ pub fn skip(state: #box_ty<::pest::ParserState<Rule>>) -> ::pest::ParseResult<#box_ty<::pest::ParserState<Rule>>> {
Ok(state)
}
}
@@ -975,13 +1009,13 @@ mod tests {
#[inline]
#[allow(non_snake_case, unused_variables)]
- pub fn a(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ pub fn a(state: #box_ty<::pest::ParserState<Rule>>) -> ::pest::ParseResult<#box_ty<::pest::ParserState<Rule>>> {
state.match_string("b")
}
#[inline]
#[allow(dead_code, non_snake_case, unused_variables)]
- pub fn ANY(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ pub fn ANY(state: #box_ty<::pest::ParserState<Rule>>) -> ::pest::ParseResult<#box_ty<::pest::ParserState<Rule>>> {
state.skip(1)
}
}
diff --git a/vendor/pest_generator/src/macros.rs b/vendor/pest_generator/src/macros.rs
index 9d02725da..37ef531f3 100644
--- a/vendor/pest_generator/src/macros.rs
+++ b/vendor/pest_generator/src/macros.rs
@@ -13,30 +13,26 @@ macro_rules! insert_builtin {
};
}
-macro_rules! insert_public_builtin {
- ($builtin: expr, $name: ident, $pattern: expr) => {
- $builtin.push((stringify!($name), generate_public_rule!($name, $pattern)));
- };
-}
-
+#[cfg(feature = "std")]
macro_rules! generate_rule {
($name: ident, $pattern: expr) => {
quote! {
#[inline]
#[allow(dead_code, non_snake_case, unused_variables)]
- pub fn $name(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ pub fn $name(state: ::std::boxed::Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<::std::boxed::Box<::pest::ParserState<Rule>>> {
$pattern
}
}
}
}
-macro_rules! generate_public_rule {
+#[cfg(not(feature = "std"))]
+macro_rules! generate_rule {
($name: ident, $pattern: expr) => {
quote! {
#[inline]
#[allow(dead_code, non_snake_case, unused_variables)]
- pub fn $name(state: Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<Box<::pest::ParserState<Rule>>> {
+ pub fn $name(state: ::alloc::boxed::Box<::pest::ParserState<Rule>>) -> ::pest::ParseResult<::alloc::boxed::Box<::pest::ParserState<Rule>>> {
$pattern
}
}
diff --git a/vendor/pest_meta/.cargo-checksum.json b/vendor/pest_meta/.cargo-checksum.json
index f51cb5967..5a98eadb3 100644
--- a/vendor/pest_meta/.cargo-checksum.json
+++ b/vendor/pest_meta/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"adf86f275ddc1ae02311ab5e1b51a165dc034edf466fc74dea6cbe63fe80d9b3","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","_README.md":"e9901b6c4d50403bfda7e08a92b5c395a8c51eba868c7bd07b03e00ccba702f3","src/ast.rs":"b2d0b054d66525b6c9ceed7a9b24cabcdd1074b525b230fc99a1a31019010f58","src/grammar.pest":"fac55bde3f3b59058293d220fec96ef033e61cb24fc032cad21d76aa6f963bc1","src/grammar.rs":"eb8f1f0c964467c081564de8830f3db4966499311868127342b9b651e8cee06f","src/lib.rs":"b248cf6bc5d4a8537f682c23f8d2c8910eb764ee5f1cc02b2c344b0b920943da","src/optimizer/concatenator.rs":"94c2a79d39ebeddbc413d30f2c20d0b50ae2c0e2e86bff90a029b70aa028e2fc","src/optimizer/factorizer.rs":"84df67d6e3f1b507b3e970cb8fba1ab9e2254c3ba778c4a0cf100452b36f1e08","src/optimizer/mod.rs":"69f25916112cbfa4b3d2225f8af463a03ebe706ae757d9c97be523c5601d7b3c","src/optimizer/restorer.rs":"182561b972752ec961fa45d0ca705a9852462010003e4e1ab646e5cd486bedd1","src/optimizer/rotater.rs":"e59f6c3e9197dc3cb4f21edf0c5ffb1a2638a81e4ce9b0373a2d2147a12a3bd5","src/optimizer/skipper.rs":"ab52c7a44a35aefcd1546da5e2084af642c472f07565dcb1be1bb3e2b5fc5a41","src/optimizer/unroller.rs":"99b4940906b0eb443a8b0bf6499130098d59a8141f2693ec50a653cb21c534d5","src/parser.rs":"04a93b2d36bcf199cbc5ab3e943a85cc1730529af83bb3f4a1a9f6b80e2eda4a","src/validator.rs":"5436c0cafc8fa91e45e4988e280220057c8f43ec7a796491abb8e9b22f80582d"},"package":"54be6e404f5317079812fc8f9f5279de376d8856929e21c184ecf6bbd692a11d"} \ No newline at end of file
+{"files":{"Cargo.toml":"3673efe1bf8eb36b5ae86959a918a846040826779babf8729a2725d651a6d035","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","_README.md":"01ba71f02581f9f5018962e083ca77bc8e8af2b6f8a73111bfa04e847a6440e2","src/ast.rs":"782e31c3e3ad194209975d9515b5df42883f7b7e316cd342e4603bcd5b3ec8d6","src/grammar.pest":"697e32f6fee403c3199317404891481b13dee127b956d6c3ec5a6a6116d18921","src/grammar.rs":"ed08400f1d37fee264359077666a02df0b6ac0d52500040b1157957502ab04ad","src/lib.rs":"8773adeac67a4c7de66f129f0d88fcf88748acc9a44b32949d7e1a3bcd338448","src/optimizer/concatenator.rs":"b77e6ec1d4d79d5383c74435d86e888a048c134fc5cff250356de9405e0ecfab","src/optimizer/factorizer.rs":"ffe510cc8c33fdb89c2a4e575f4d54f7894f126e71e6ae010d9614679d26254e","src/optimizer/lister.rs":"706812c52df72753071bf2db039dffb1061c1a0f030e4c1af67302c632ff15cd","src/optimizer/mod.rs":"18daf1ee2e6789ee4c9afddd34e1081364c7b30b2163ca0c6bf843fee865420e","src/optimizer/restorer.rs":"8b65cfe7dfd4d812bee6ac3cdbcc3d0026e03fd2b456a7c866dd83e6fdbf26a7","src/optimizer/rotater.rs":"7256bc8c01a09c5489fdb8d1cc52461bcc5ccf826db478b1420b01473b9b6c62","src/optimizer/skipper.rs":"8a7cd27713c8ffc795a82471242225b5fbbecec221c75fe8ac48e878d5a6088e","src/optimizer/unroller.rs":"f4010f2bf3b2bb0740d17b04c73f772284f576bfb57b9cac16b98293168ffb7a","src/parser.rs":"11b030a345afb092d1a66cf1481c6653f3d192e585632fbe8fa5641b771e5236","src/validator.rs":"97be65d88cc064c0857deb3ab73c3373560882e454c6ed2cd6a4a9d8d773beaf"},"package":"1538eb784f07615c6d9a8ab061089c6c54a344c5b4301db51990ca1c241e8c04"} \ No newline at end of file
diff --git a/vendor/pest_meta/Cargo.toml b/vendor/pest_meta/Cargo.toml
index 74f837745..347b7db37 100644
--- a/vendor/pest_meta/Cargo.toml
+++ b/vendor/pest_meta/Cargo.toml
@@ -3,40 +3,46 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
+rust-version = "1.56"
name = "pest_meta"
-version = "2.1.3"
+version = "2.3.0"
authors = ["Dragoș Tiselice <dragostiselice@gmail.com>"]
exclude = ["src/grammar.pest"]
-include = ["Cargo.toml", "src/**/*", "src/grammar.rs", "_README.md", "LICENSE-*"]
+include = [
+ "Cargo.toml",
+ "src/**/*",
+ "src/grammar.rs",
+ "_README.md",
+ "LICENSE-*",
+]
description = "pest meta language parser and validator"
homepage = "https://pest-parser.github.io/"
documentation = "https://docs.rs/pest"
readme = "_README.md"
-keywords = ["pest", "parser", "meta", "optimizer"]
+keywords = [
+ "pest",
+ "parser",
+ "meta",
+ "optimizer",
+]
categories = ["parsing"]
license = "MIT/Apache-2.0"
repository = "https://github.com/pest-parser/pest"
-[dependencies.maplit]
-version = "1.0"
+
+[dependencies.once_cell]
+version = "1.8.0"
[dependencies.pest]
-version = "2.1.0"
+version = "2.3.0"
+
[build-dependencies.sha-1]
-version = "0.8"
+version = "0.10"
default-features = false
-[badges.codecov]
-repository = "pest-parser/pest"
-
-[badges.maintenance]
-status = "actively-developed"
-
-[badges.travis-ci]
-repository = "pest-parser/pest"
diff --git a/vendor/pest_meta/_README.md b/vendor/pest_meta/_README.md
index 8e55f29a2..f91188ccb 100644
--- a/vendor/pest_meta/_README.md
+++ b/vendor/pest_meta/_README.md
@@ -1,3 +1,4 @@
+
<p align="center">
<img src="https://raw.github.com/pest-parser/pest/master/pest-logo.svg?sanitize=true" width="80%"/>
</p>
@@ -8,9 +9,10 @@
[![Book](https://img.shields.io/badge/book-WIP-4d76ae.svg)](https://pest-parser.github.io/book)
[![Docs](https://docs.rs/pest/badge.svg)](https://docs.rs/pest)
-[![Build Status](https://travis-ci.org/pest-parser/pest.svg?branch=master)](https://travis-ci.org/pest-parser/pest)
+[![pest Continuous Integration](https://github.com/pest-parser/pest/actions/workflows/ci.yml/badge.svg)](https://github.com/pest-parser/pest/actions/workflows/ci.yml)
[![codecov](https://codecov.io/gh/pest-parser/pest/branch/master/graph/badge.svg)](https://codecov.io/gh/pest-parser/pest)
-[![Fuzzit Status](https://app.fuzzit.dev/badge?org_id=pest-parser)](https://app.fuzzit.dev/orgs/pest-parser/dashboard)
+<a href="https://blog.rust-lang.org/2021/11/01/Rust-1.56.1.html"><img alt="Rustc Version 1.56.1+" src="https://img.shields.io/badge/rustc-1.56.1%2B-lightgrey.svg"/></a>
+
[![Crates.io](https://img.shields.io/crates/d/pest.svg)](https://crates.io/crates/pest)
[![Crates.io](https://img.shields.io/crates/v/pest.svg)](https://crates.io/crates/pest)
@@ -38,7 +40,7 @@ Other helpful resources:
## Example
-The following is an example of a grammar for a list of alpha-numeric identifiers
+The following is an example of a grammar for a list of alphanumeric identifiers
where the first identifier does not start with a digit:
```rust
@@ -143,16 +145,18 @@ Digit: 2
* [pest_meta](https://github.com/pest-parser/pest/blob/master/meta/src/grammar.pest) (bootstrapped)
* [AshPaper](https://github.com/shnewto/ashpaper)
* [brain](https://github.com/brain-lang/brain)
-* [Chelone](https://github.com/Aaronepower/chelone)
+* [cicada](https://github.com/mitnk/cicada)
* [comrak](https://github.com/kivikakk/comrak)
* [elastic-rs](https://github.com/cch123/elastic-rs)
* [graphql-parser](https://github.com/Keats/graphql-parser)
* [handlebars-rust](https://github.com/sunng87/handlebars-rust)
* [hexdino](https://github.com/Luz/hexdino)
* [Huia](https://gitlab.com/jimsy/huia/)
+* [insta](https://github.com/mitsuhiko/insta)
* [jql](https://github.com/yamafaktory/jql)
* [json5-rs](https://github.com/callum-oakley/json5-rs)
* [mt940](https://github.com/svenstaro/mt940-rs)
+* [Myoxine](https://github.com/d3bate/myoxine)
* [py_literal](https://github.com/jturner314/py_literal)
* [rouler](https://github.com/jarcane/rouler)
* [RuSh](https://github.com/lwandrebeck/RuSh)
@@ -162,6 +166,17 @@ Digit: 2
* [ui_gen](https://github.com/emoon/ui_gen)
* [ukhasnet-parser](https://github.com/adamgreig/ukhasnet-parser)
* [ZoKrates](https://github.com/ZoKrates/ZoKrates)
+* [Vector](https://github.com/timberio/vector)
+* [AutoCorrect](https://github.com/huacnlee/autocorrect)
+* [yaml-peg](https://github.com/aofdev/yaml-peg)
+* [qubit](https://github.com/abhimanyu003/qubit)
+* [caith](https://github.com/Geobert/caith) (a dice roller crate)
+* [Melody](https://github.com/yoav-lavi/melody)
+
+## Minimum Supported Rust Version (MSRV)
+
+This library should always compile with default features on **Rust 1.56.1**
+or **Rust 1.61** with `const_prec_climber`.
## Special thanks
diff --git a/vendor/pest_meta/src/ast.rs b/vendor/pest_meta/src/ast.rs
index b80c59630..da6ee5278 100644
--- a/vendor/pest_meta/src/ast.rs
+++ b/vendor/pest_meta/src/ast.rs
@@ -280,7 +280,7 @@ mod tests {
Box::new(Expr::Str(String::from("a"))),
Box::new(Expr::Str(String::from("b"))),
);
- let mut top_down = expr.clone().iter_top_down();
+ let mut top_down = expr.iter_top_down();
assert_eq!(top_down.next(), Some(expr));
assert_eq!(top_down.next(), Some(Expr::Str(String::from("a"))));
assert_eq!(top_down.next(), Some(Expr::Str(String::from("b"))));
diff --git a/vendor/pest_meta/src/grammar.pest b/vendor/pest_meta/src/grammar.pest
index 0d03ba899..282ca35b8 100644
--- a/vendor/pest_meta/src/grammar.pest
+++ b/vendor/pest_meta/src/grammar.pest
@@ -34,7 +34,7 @@ atomic_modifier = { "@" }
compound_atomic_modifier = { "$" }
non_atomic_modifier = { "!" }
-expression = { term ~ (infix_operator ~ term)* }
+expression = { choice_operator? ~ term ~ (infix_operator ~ term)* }
term = { prefix_operator* ~ node ~ postfix_operator* }
node = _{ opening_paren ~ expression ~ closing_paren | terminal }
terminal = _{ _push | peek_slice | identifier | string | insensitive_string | range }
diff --git a/vendor/pest_meta/src/grammar.rs b/vendor/pest_meta/src/grammar.rs
index bf94a1e3a..e42982b06 100644
--- a/vendor/pest_meta/src/grammar.rs
+++ b/vendor/pest_meta/src/grammar.rs
@@ -1,2 +1,2 @@
pub struct PestParser;
-# [ allow ( dead_code , non_camel_case_types ) ] # [ derive ( Clone , Copy , Debug , Eq , Hash , Ord , PartialEq , PartialOrd ) ] pub enum Rule { EOI , grammar_rules , grammar_rule , assignment_operator , opening_brace , closing_brace , opening_paren , closing_paren , opening_brack , closing_brack , modifier , silent_modifier , atomic_modifier , compound_atomic_modifier , non_atomic_modifier , expression , term , node , terminal , prefix_operator , infix_operator , postfix_operator , positive_predicate_operator , negative_predicate_operator , sequence_operator , choice_operator , optional_operator , repeat_operator , repeat_once_operator , repeat_exact , repeat_min , repeat_max , repeat_min_max , number , integer , comma , _push , peek_slice , identifier , alpha , alpha_num , string , insensitive_string , range , character , inner_str , inner_chr , escape , code , unicode , hex_digit , quote , single_quote , range_operator , newline , WHITESPACE , block_comment , COMMENT } # [ allow ( clippy :: all ) ] impl :: pest :: Parser < Rule > for PestParser { fn parse < 'i > ( rule : Rule , input : & 'i str ) -> :: std :: result :: Result < :: pest :: iterators :: Pairs < 'i , Rule > , :: pest :: error :: Error < Rule > > { mod rules { pub mod hidden { use super :: super :: Rule ; # [ inline ] # [ allow ( dead_code , non_snake_case , unused_variables ) ] pub fn skip ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { if state . atomicity ( ) == :: pest :: Atomicity :: NonAtomic { state . sequence ( | state | { state . repeat ( | state | super :: visible :: WHITESPACE ( state ) ) . and_then ( | state | { state . repeat ( | state | { state . sequence ( | state | { super :: visible :: COMMENT ( state ) . and_then ( | state | { state . repeat ( | state | super :: visible :: WHITESPACE ( state ) ) } ) } ) } ) } ) } ) } else { Ok ( state ) } } } pub mod visible { use super :: super :: Rule ; # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn grammar_rules ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . sequence ( | state | { self :: SOI ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { state . sequence ( | state | { self :: grammar_rule ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { state . sequence ( | state | { state . optional ( | state | { self :: grammar_rule ( state ) . and_then ( | state | { state . repeat ( | state | { state . sequence ( | state | { super :: hidden :: skip ( state ) . and_then ( | state | { self :: grammar_rule ( state ) } ) } ) } ) } ) } ) } ) } ) } ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: EOI ( state ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn grammar_rule ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: grammar_rule , | state | { state . sequence ( | state | { self :: identifier ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: assignment_operator ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { state . optional ( | state | { self :: modifier ( state ) } ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: opening_brace ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: expression ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: closing_brace ( state ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn assignment_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: assignment_operator , | state | { state . match_string ( "=" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn opening_brace ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: opening_brace , | state | { state . match_string ( "{" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn closing_brace ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: closing_brace , | state | { state . match_string ( "}" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn opening_paren ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: opening_paren , | state | { state . match_string ( "(" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn closing_paren ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: closing_paren , | state | { state . match_string ( ")" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn opening_brack ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: opening_brack , | state | { state . match_string ( "[" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn closing_brack ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: closing_brack , | state | { state . match_string ( "]" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn modifier ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { self :: silent_modifier ( state ) . or_else ( | state | { self :: atomic_modifier ( state ) } ) . or_else ( | state | { self :: compound_atomic_modifier ( state ) } ) . or_else ( | state | { self :: non_atomic_modifier ( state ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn silent_modifier ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: silent_modifier , | state | { state . match_string ( "_" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn atomic_modifier ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: atomic_modifier , | state | { state . match_string ( "@" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn compound_atomic_modifier ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: compound_atomic_modifier , | state | { state . match_string ( "$" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn non_atomic_modifier ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: non_atomic_modifier , | state | { state . match_string ( "!" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn expression ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: expression , | state | { state . sequence ( | state | { self :: term ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { state . sequence ( | state | { state . optional ( | state | { state . sequence ( | state | { self :: infix_operator ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: term ( state ) } ) } ) . and_then ( | state | { state . repeat ( | state | { state . sequence ( | state | { super :: hidden :: skip ( state ) . and_then ( | state | { state . sequence ( | state | { self :: infix_operator ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: term ( state ) } ) } ) } ) } ) } ) } ) } ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn term ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: term , | state | { state . sequence ( | state | { state . sequence ( | state | { state . optional ( | state | { self :: prefix_operator ( state ) . and_then ( | state | { state . repeat ( | state | { state . sequence ( | state | { super :: hidden :: skip ( state ) . and_then ( | state | { self :: prefix_operator ( state ) } ) } ) } ) } ) } ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: node ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { state . sequence ( | state | { state . optional ( | state | { self :: postfix_operator ( state ) . and_then ( | state | { state . repeat ( | state | { state . sequence ( | state | { super :: hidden :: skip ( state ) . and_then ( | state | { self :: postfix_operator ( state ) } ) } ) } ) } ) } ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn node ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . sequence ( | state | { self :: opening_paren ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: expression ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: closing_paren ( state ) } ) } ) . or_else ( | state | { self :: terminal ( state ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn terminal ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { self :: _push ( state ) . or_else ( | state | { self :: peek_slice ( state ) } ) . or_else ( | state | { self :: identifier ( state ) } ) . or_else ( | state | { self :: string ( state ) } ) . or_else ( | state | { self :: insensitive_string ( state ) } ) . or_else ( | state | { self :: range ( state ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn prefix_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { self :: positive_predicate_operator ( state ) . or_else ( | state | { self :: negative_predicate_operator ( state ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn infix_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { self :: sequence_operator ( state ) . or_else ( | state | { self :: choice_operator ( state ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn postfix_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { self :: optional_operator ( state ) . or_else ( | state | { self :: repeat_operator ( state ) } ) . or_else ( | state | { self :: repeat_once_operator ( state ) } ) . or_else ( | state | { self :: repeat_exact ( state ) } ) . or_else ( | state | { self :: repeat_min ( state ) } ) . or_else ( | state | { self :: repeat_max ( state ) } ) . or_else ( | state | { self :: repeat_min_max ( state ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn positive_predicate_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: positive_predicate_operator , | state | { state . match_string ( "&" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn negative_predicate_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: negative_predicate_operator , | state | { state . match_string ( "!" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn sequence_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: sequence_operator , | state | { state . match_string ( "~" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn choice_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: choice_operator , | state | { state . match_string ( "|" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn optional_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: optional_operator , | state | { state . match_string ( "?" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn repeat_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: repeat_operator , | state | { state . match_string ( "*" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn repeat_once_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: repeat_once_operator , | state | { state . match_string ( "+" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn repeat_exact ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: repeat_exact , | state | { state . sequence ( | state | { self :: opening_brace ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: number ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: closing_brace ( state ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn repeat_min ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: repeat_min , | state | { state . sequence ( | state | { self :: opening_brace ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: number ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: comma ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: closing_brace ( state ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn repeat_max ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: repeat_max , | state | { state . sequence ( | state | { self :: opening_brace ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: comma ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: number ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: closing_brace ( state ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn repeat_min_max ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: repeat_min_max , | state | { state . sequence ( | state | { self :: opening_brace ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: number ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: comma ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: number ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: closing_brace ( state ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn number ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: number , | state | { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { state . sequence ( | state | { state . match_range ( '0' .. '9' ) . and_then ( | state | { state . repeat ( | state | { state . match_range ( '0' .. '9' ) } ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn integer ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: integer , | state | { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { self :: number ( state ) . or_else ( | state | { state . sequence ( | state | { state . match_string ( "-" ) . and_then ( | state | { state . repeat ( | state | { state . match_string ( "0" ) } ) } ) . and_then ( | state | { state . match_range ( '1' .. '9' ) } ) . and_then ( | state | { state . optional ( | state | { self :: number ( state ) } ) } ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn comma ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: comma , | state | { state . match_string ( "," ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn _push ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: _push , | state | { state . sequence ( | state | { state . match_string ( "PUSH" ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: opening_paren ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: expression ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: closing_paren ( state ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn peek_slice ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: peek_slice , | state | { state . sequence ( | state | { state . match_string ( "PEEK" ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: opening_brack ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { state . optional ( | state | { self :: integer ( state ) } ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: range_operator ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { state . optional ( | state | { self :: integer ( state ) } ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: closing_brack ( state ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn identifier ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: identifier , | state | { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { state . sequence ( | state | { state . lookahead ( false , | state | { state . match_string ( "PUSH" ) } ) . and_then ( | state | { state . match_string ( "_" ) . or_else ( | state | { self :: alpha ( state ) } ) } ) . and_then ( | state | { state . repeat ( | state | { state . match_string ( "_" ) . or_else ( | state | { self :: alpha_num ( state ) } ) } ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn alpha ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . match_range ( 'a' .. 'z' ) . or_else ( | state | { state . match_range ( 'A' .. 'Z' ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn alpha_num ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { self :: alpha ( state ) . or_else ( | state | { state . match_range ( '0' .. '9' ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn string ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . atomic ( :: pest :: Atomicity :: CompoundAtomic , | state | { state . rule ( Rule :: string , | state | { state . sequence ( | state | { self :: quote ( state ) . and_then ( | state | { self :: inner_str ( state ) } ) . and_then ( | state | { self :: quote ( state ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn insensitive_string ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: insensitive_string , | state | { state . sequence ( | state | { state . match_string ( "^" ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: string ( state ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn range ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: range , | state | { state . sequence ( | state | { self :: character ( state ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: range_operator ( state ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: character ( state ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn character ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . atomic ( :: pest :: Atomicity :: CompoundAtomic , | state | { state . rule ( Rule :: character , | state | { state . sequence ( | state | { self :: single_quote ( state ) . and_then ( | state | { self :: inner_chr ( state ) } ) . and_then ( | state | { self :: single_quote ( state ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn inner_str ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: inner_str , | state | { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { state . sequence ( | state | { let strings = [ "\"" , "\\" ] ; state . skip_until ( & strings ) . and_then ( | state | { state . optional ( | state | { state . sequence ( | state | { self :: escape ( state ) . and_then ( | state | { self :: inner_str ( state ) } ) } ) } ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn inner_chr ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: inner_chr , | state | { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { self :: escape ( state ) . or_else ( | state | { self :: ANY ( state ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn escape ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: escape , | state | { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { state . sequence ( | state | { state . match_string ( "\\" ) . and_then ( | state | { state . match_string ( "\"" ) . or_else ( | state | { state . match_string ( "\\" ) } ) . or_else ( | state | { state . match_string ( "r" ) } ) . or_else ( | state | { state . match_string ( "n" ) } ) . or_else ( | state | { state . match_string ( "t" ) } ) . or_else ( | state | { state . match_string ( "0" ) } ) . or_else ( | state | { state . match_string ( "'" ) } ) . or_else ( | state | { self :: code ( state ) } ) . or_else ( | state | { self :: unicode ( state ) } ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn code ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: code , | state | { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { state . sequence ( | state | { state . match_string ( "x" ) . and_then ( | state | { self :: hex_digit ( state ) } ) . and_then ( | state | { self :: hex_digit ( state ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn unicode ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: unicode , | state | { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { state . sequence ( | state | { state . match_string ( "u" ) . and_then ( | state | { self :: opening_brace ( state ) } ) . and_then ( | state | { state . sequence ( | state | { self :: hex_digit ( state ) . and_then ( | state | { self :: hex_digit ( state ) } ) . and_then ( | state | { state . optional ( | state | { self :: hex_digit ( state ) } ) } ) . and_then ( | state | { state . optional ( | state | { self :: hex_digit ( state ) } ) } ) . and_then ( | state | { state . optional ( | state | { self :: hex_digit ( state ) } ) } ) . and_then ( | state | { state . optional ( | state | { self :: hex_digit ( state ) } ) } ) } ) } ) . and_then ( | state | { self :: closing_brace ( state ) } ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn hex_digit ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: hex_digit , | state | { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { state . match_range ( '0' .. '9' ) . or_else ( | state | { state . match_range ( 'a' .. 'f' ) } ) . or_else ( | state | { state . match_range ( 'A' .. 'F' ) } ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn quote ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: quote , | state | { state . match_string ( "\"" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn single_quote ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: single_quote , | state | { state . match_string ( "'" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn range_operator ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: range_operator , | state | { state . match_string ( ".." ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn newline ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . match_string ( "\n" ) . or_else ( | state | { state . match_string ( "\r\n" ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn WHITESPACE ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { state . match_string ( " " ) . or_else ( | state | { state . match_string ( "\t" ) } ) . or_else ( | state | { self :: newline ( state ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn block_comment ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . sequence ( | state | { state . match_string ( "/*" ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { state . sequence ( | state | { state . optional ( | state | { self :: block_comment ( state ) . or_else ( | state | { state . sequence ( | state | { state . lookahead ( false , | state | { state . match_string ( "*/" ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: ANY ( state ) } ) } ) } ) . and_then ( | state | { state . repeat ( | state | { state . sequence ( | state | { super :: hidden :: skip ( state ) . and_then ( | state | { self :: block_comment ( state ) . or_else ( | state | { state . sequence ( | state | { state . lookahead ( false , | state | { state . match_string ( "*/" ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { self :: ANY ( state ) } ) } ) } ) } ) } ) } ) } ) } ) } ) } ) . and_then ( | state | { super :: hidden :: skip ( state ) } ) . and_then ( | state | { state . match_string ( "*/" ) } ) } ) } # [ inline ] # [ allow ( non_snake_case , unused_variables ) ] pub fn COMMENT ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . atomic ( :: pest :: Atomicity :: Atomic , | state | { self :: block_comment ( state ) . or_else ( | state | { state . sequence ( | state | { state . match_string ( "//" ) . and_then ( | state | { state . repeat ( | state | { state . sequence ( | state | { state . lookahead ( false , | state | { self :: newline ( state ) } ) . and_then ( | state | { self :: ANY ( state ) } ) } ) } ) } ) } ) } ) } ) } # [ inline ] # [ allow ( dead_code , non_snake_case , unused_variables ) ] pub fn SOI ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . start_of_input ( ) } # [ inline ] # [ allow ( dead_code , non_snake_case , unused_variables ) ] pub fn ANY ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . skip ( 1 ) } # [ inline ] # [ allow ( dead_code , non_snake_case , unused_variables ) ] pub fn EOI ( state : Box < :: pest :: ParserState < Rule >> ) -> :: pest :: ParseResult < Box < :: pest :: ParserState < Rule >> > { state . rule ( Rule :: EOI , | state | state . end_of_input ( ) ) } } pub use self :: visible :: * ; } :: pest :: state ( input , | state | { match rule { Rule :: grammar_rules => rules :: grammar_rules ( state ) , Rule :: grammar_rule => rules :: grammar_rule ( state ) , Rule :: assignment_operator => rules :: assignment_operator ( state ) , Rule :: opening_brace => rules :: opening_brace ( state ) , Rule :: closing_brace => rules :: closing_brace ( state ) , Rule :: opening_paren => rules :: opening_paren ( state ) , Rule :: closing_paren => rules :: closing_paren ( state ) , Rule :: opening_brack => rules :: opening_brack ( state ) , Rule :: closing_brack => rules :: closing_brack ( state ) , Rule :: modifier => rules :: modifier ( state ) , Rule :: silent_modifier => rules :: silent_modifier ( state ) , Rule :: atomic_modifier => rules :: atomic_modifier ( state ) , Rule :: compound_atomic_modifier => rules :: compound_atomic_modifier ( state ) , Rule :: non_atomic_modifier => rules :: non_atomic_modifier ( state ) , Rule :: expression => rules :: expression ( state ) , Rule :: term => rules :: term ( state ) , Rule :: node => rules :: node ( state ) , Rule :: terminal => rules :: terminal ( state ) , Rule :: prefix_operator => rules :: prefix_operator ( state ) , Rule :: infix_operator => rules :: infix_operator ( state ) , Rule :: postfix_operator => rules :: postfix_operator ( state ) , Rule :: positive_predicate_operator => rules :: positive_predicate_operator ( state ) , Rule :: negative_predicate_operator => rules :: negative_predicate_operator ( state ) , Rule :: sequence_operator => rules :: sequence_operator ( state ) , Rule :: choice_operator => rules :: choice_operator ( state ) , Rule :: optional_operator => rules :: optional_operator ( state ) , Rule :: repeat_operator => rules :: repeat_operator ( state ) , Rule :: repeat_once_operator => rules :: repeat_once_operator ( state ) , Rule :: repeat_exact => rules :: repeat_exact ( state ) , Rule :: repeat_min => rules :: repeat_min ( state ) , Rule :: repeat_max => rules :: repeat_max ( state ) , Rule :: repeat_min_max => rules :: repeat_min_max ( state ) , Rule :: number => rules :: number ( state ) , Rule :: integer => rules :: integer ( state ) , Rule :: comma => rules :: comma ( state ) , Rule :: _push => rules :: _push ( state ) , Rule :: peek_slice => rules :: peek_slice ( state ) , Rule :: identifier => rules :: identifier ( state ) , Rule :: alpha => rules :: alpha ( state ) , Rule :: alpha_num => rules :: alpha_num ( state ) , Rule :: string => rules :: string ( state ) , Rule :: insensitive_string => rules :: insensitive_string ( state ) , Rule :: range => rules :: range ( state ) , Rule :: character => rules :: character ( state ) , Rule :: inner_str => rules :: inner_str ( state ) , Rule :: inner_chr => rules :: inner_chr ( state ) , Rule :: escape => rules :: escape ( state ) , Rule :: code => rules :: code ( state ) , Rule :: unicode => rules :: unicode ( state ) , Rule :: hex_digit => rules :: hex_digit ( state ) , Rule :: quote => rules :: quote ( state ) , Rule :: single_quote => rules :: single_quote ( state ) , Rule :: range_operator => rules :: range_operator ( state ) , Rule :: newline => rules :: newline ( state ) , Rule :: WHITESPACE => rules :: WHITESPACE ( state ) , Rule :: block_comment => rules :: block_comment ( state ) , Rule :: COMMENT => rules :: COMMENT ( state ) , Rule :: EOI => rules :: EOI ( state ) } } ) } }
+# [allow (dead_code , non_camel_case_types , clippy :: upper_case_acronyms)] # [derive (Clone , Copy , Debug , Eq , Hash , Ord , PartialEq , PartialOrd)] pub enum Rule { EOI , grammar_rules , grammar_rule , assignment_operator , opening_brace , closing_brace , opening_paren , closing_paren , opening_brack , closing_brack , modifier , silent_modifier , atomic_modifier , compound_atomic_modifier , non_atomic_modifier , expression , term , node , terminal , prefix_operator , infix_operator , postfix_operator , positive_predicate_operator , negative_predicate_operator , sequence_operator , choice_operator , optional_operator , repeat_operator , repeat_once_operator , repeat_exact , repeat_min , repeat_max , repeat_min_max , number , integer , comma , _push , peek_slice , identifier , alpha , alpha_num , string , insensitive_string , range , character , inner_str , inner_chr , escape , code , unicode , hex_digit , quote , single_quote , range_operator , newline , WHITESPACE , block_comment , COMMENT } # [allow (clippy :: all)] impl :: pest :: Parser < Rule > for PestParser { fn parse < 'i > (rule : Rule , input : & 'i str) -> :: std :: result :: Result < :: pest :: iterators :: Pairs < 'i , Rule > , :: pest :: error :: Error < Rule > > { mod rules { # ! [allow (clippy :: upper_case_acronyms)] pub mod hidden { use super :: super :: Rule ; # [inline] # [allow (dead_code , non_snake_case , unused_variables)] pub fn skip (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { if state . atomicity () == :: pest :: Atomicity :: NonAtomic { state . sequence (| state | { state . repeat (| state | super :: visible :: WHITESPACE (state)) . and_then (| state | { state . repeat (| state | { state . sequence (| state | { super :: visible :: COMMENT (state) . and_then (| state | { state . repeat (| state | super :: visible :: WHITESPACE (state)) }) }) }) }) }) } else { Ok (state) } } } pub mod visible { use super :: super :: Rule ; # [inline] # [allow (non_snake_case , unused_variables)] pub fn grammar_rules (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . sequence (| state | { self :: SOI (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { state . sequence (| state | { self :: grammar_rule (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { state . sequence (| state | { state . optional (| state | { self :: grammar_rule (state) . and_then (| state | { state . repeat (| state | { state . sequence (| state | { super :: hidden :: skip (state) . and_then (| state | { self :: grammar_rule (state) }) }) }) }) }) }) }) }) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: EOI (state) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn grammar_rule (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: grammar_rule , | state | { state . sequence (| state | { self :: identifier (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: assignment_operator (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { state . optional (| state | { self :: modifier (state) }) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: opening_brace (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: expression (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: closing_brace (state) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn assignment_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: assignment_operator , | state | { state . match_string ("=") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn opening_brace (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: opening_brace , | state | { state . match_string ("{") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn closing_brace (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: closing_brace , | state | { state . match_string ("}") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn opening_paren (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: opening_paren , | state | { state . match_string ("(") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn closing_paren (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: closing_paren , | state | { state . match_string (")") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn opening_brack (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: opening_brack , | state | { state . match_string ("[") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn closing_brack (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: closing_brack , | state | { state . match_string ("]") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn modifier (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { self :: silent_modifier (state) . or_else (| state | { self :: atomic_modifier (state) }) . or_else (| state | { self :: compound_atomic_modifier (state) }) . or_else (| state | { self :: non_atomic_modifier (state) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn silent_modifier (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: silent_modifier , | state | { state . match_string ("_") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn atomic_modifier (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: atomic_modifier , | state | { state . match_string ("@") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn compound_atomic_modifier (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: compound_atomic_modifier , | state | { state . match_string ("$") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn non_atomic_modifier (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: non_atomic_modifier , | state | { state . match_string ("!") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn expression (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: expression , | state | { state . sequence (| state | { state . optional (| state | { self :: choice_operator (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: term (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { state . sequence (| state | { state . optional (| state | { state . sequence (| state | { self :: infix_operator (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: term (state) }) }) . and_then (| state | { state . repeat (| state | { state . sequence (| state | { super :: hidden :: skip (state) . and_then (| state | { state . sequence (| state | { self :: infix_operator (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: term (state) }) }) }) }) }) }) }) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn term (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: term , | state | { state . sequence (| state | { state . sequence (| state | { state . optional (| state | { self :: prefix_operator (state) . and_then (| state | { state . repeat (| state | { state . sequence (| state | { super :: hidden :: skip (state) . and_then (| state | { self :: prefix_operator (state) }) }) }) }) }) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: node (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { state . sequence (| state | { state . optional (| state | { self :: postfix_operator (state) . and_then (| state | { state . repeat (| state | { state . sequence (| state | { super :: hidden :: skip (state) . and_then (| state | { self :: postfix_operator (state) }) }) }) }) }) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn node (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . sequence (| state | { self :: opening_paren (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: expression (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: closing_paren (state) }) }) . or_else (| state | { self :: terminal (state) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn terminal (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { self :: _push (state) . or_else (| state | { self :: peek_slice (state) }) . or_else (| state | { self :: identifier (state) }) . or_else (| state | { self :: string (state) }) . or_else (| state | { self :: insensitive_string (state) }) . or_else (| state | { self :: range (state) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn prefix_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { self :: positive_predicate_operator (state) . or_else (| state | { self :: negative_predicate_operator (state) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn infix_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { self :: sequence_operator (state) . or_else (| state | { self :: choice_operator (state) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn postfix_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { self :: optional_operator (state) . or_else (| state | { self :: repeat_operator (state) }) . or_else (| state | { self :: repeat_once_operator (state) }) . or_else (| state | { self :: repeat_exact (state) }) . or_else (| state | { self :: repeat_min (state) }) . or_else (| state | { self :: repeat_max (state) }) . or_else (| state | { self :: repeat_min_max (state) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn positive_predicate_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: positive_predicate_operator , | state | { state . match_string ("&") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn negative_predicate_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: negative_predicate_operator , | state | { state . match_string ("!") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn sequence_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: sequence_operator , | state | { state . match_string ("~") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn choice_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: choice_operator , | state | { state . match_string ("|") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn optional_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: optional_operator , | state | { state . match_string ("?") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn repeat_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: repeat_operator , | state | { state . match_string ("*") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn repeat_once_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: repeat_once_operator , | state | { state . match_string ("+") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn repeat_exact (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: repeat_exact , | state | { state . sequence (| state | { self :: opening_brace (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: number (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: closing_brace (state) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn repeat_min (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: repeat_min , | state | { state . sequence (| state | { self :: opening_brace (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: number (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: comma (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: closing_brace (state) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn repeat_max (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: repeat_max , | state | { state . sequence (| state | { self :: opening_brace (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: comma (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: number (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: closing_brace (state) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn repeat_min_max (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: repeat_min_max , | state | { state . sequence (| state | { self :: opening_brace (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: number (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: comma (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: number (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: closing_brace (state) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn number (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: number , | state | { state . atomic (:: pest :: Atomicity :: Atomic , | state | { state . sequence (| state | { state . match_range ('0' .. '9') . and_then (| state | { state . repeat (| state | { state . match_range ('0' .. '9') }) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn integer (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: integer , | state | { state . atomic (:: pest :: Atomicity :: Atomic , | state | { self :: number (state) . or_else (| state | { state . sequence (| state | { state . match_string ("-") . and_then (| state | { state . repeat (| state | { state . match_string ("0") }) }) . and_then (| state | { state . match_range ('1' .. '9') }) . and_then (| state | { state . optional (| state | { self :: number (state) }) }) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn comma (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: comma , | state | { state . match_string (",") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn _push (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: _push , | state | { state . sequence (| state | { state . match_string ("PUSH") . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: opening_paren (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: expression (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: closing_paren (state) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn peek_slice (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: peek_slice , | state | { state . sequence (| state | { state . match_string ("PEEK") . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: opening_brack (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { state . optional (| state | { self :: integer (state) }) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: range_operator (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { state . optional (| state | { self :: integer (state) }) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: closing_brack (state) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn identifier (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: identifier , | state | { state . atomic (:: pest :: Atomicity :: Atomic , | state | { state . sequence (| state | { state . lookahead (false , | state | { state . match_string ("PUSH") }) . and_then (| state | { state . match_string ("_") . or_else (| state | { self :: alpha (state) }) }) . and_then (| state | { state . repeat (| state | { state . match_string ("_") . or_else (| state | { self :: alpha_num (state) }) }) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn alpha (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . match_range ('a' .. 'z') . or_else (| state | { state . match_range ('A' .. 'Z') }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn alpha_num (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { self :: alpha (state) . or_else (| state | { state . match_range ('0' .. '9') }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn string (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . atomic (:: pest :: Atomicity :: CompoundAtomic , | state | { state . rule (Rule :: string , | state | { state . sequence (| state | { self :: quote (state) . and_then (| state | { self :: inner_str (state) }) . and_then (| state | { self :: quote (state) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn insensitive_string (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: insensitive_string , | state | { state . sequence (| state | { state . match_string ("^") . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: string (state) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn range (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: range , | state | { state . sequence (| state | { self :: character (state) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: range_operator (state) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: character (state) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn character (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . atomic (:: pest :: Atomicity :: CompoundAtomic , | state | { state . rule (Rule :: character , | state | { state . sequence (| state | { self :: single_quote (state) . and_then (| state | { self :: inner_chr (state) }) . and_then (| state | { self :: single_quote (state) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn inner_str (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: inner_str , | state | { state . atomic (:: pest :: Atomicity :: Atomic , | state | { state . sequence (| state | { let strings = ["\"" , "\\"] ; state . skip_until (& strings) . and_then (| state | { state . optional (| state | { state . sequence (| state | { self :: escape (state) . and_then (| state | { self :: inner_str (state) }) }) }) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn inner_chr (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: inner_chr , | state | { state . atomic (:: pest :: Atomicity :: Atomic , | state | { self :: escape (state) . or_else (| state | { self :: ANY (state) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn escape (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: escape , | state | { state . atomic (:: pest :: Atomicity :: Atomic , | state | { state . sequence (| state | { state . match_string ("\\") . and_then (| state | { state . match_string ("\"") . or_else (| state | { state . match_string ("\\") }) . or_else (| state | { state . match_string ("r") }) . or_else (| state | { state . match_string ("n") }) . or_else (| state | { state . match_string ("t") }) . or_else (| state | { state . match_string ("0") }) . or_else (| state | { state . match_string ("'") }) . or_else (| state | { self :: code (state) }) . or_else (| state | { self :: unicode (state) }) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn code (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: code , | state | { state . atomic (:: pest :: Atomicity :: Atomic , | state | { state . sequence (| state | { state . match_string ("x") . and_then (| state | { self :: hex_digit (state) }) . and_then (| state | { self :: hex_digit (state) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn unicode (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: unicode , | state | { state . atomic (:: pest :: Atomicity :: Atomic , | state | { state . sequence (| state | { state . match_string ("u") . and_then (| state | { self :: opening_brace (state) }) . and_then (| state | { state . sequence (| state | { self :: hex_digit (state) . and_then (| state | { self :: hex_digit (state) }) . and_then (| state | { state . optional (| state | { self :: hex_digit (state) }) }) . and_then (| state | { state . optional (| state | { self :: hex_digit (state) }) }) . and_then (| state | { state . optional (| state | { self :: hex_digit (state) }) }) . and_then (| state | { state . optional (| state | { self :: hex_digit (state) }) }) }) }) . and_then (| state | { self :: closing_brace (state) }) }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn hex_digit (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: hex_digit , | state | { state . atomic (:: pest :: Atomicity :: Atomic , | state | { state . match_range ('0' .. '9') . or_else (| state | { state . match_range ('a' .. 'f') }) . or_else (| state | { state . match_range ('A' .. 'F') }) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn quote (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: quote , | state | { state . match_string ("\"") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn single_quote (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: single_quote , | state | { state . match_string ("'") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn range_operator (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: range_operator , | state | { state . match_string ("..") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn newline (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . match_string ("\n") . or_else (| state | { state . match_string ("\r\n") }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn WHITESPACE (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . atomic (:: pest :: Atomicity :: Atomic , | state | { state . match_string (" ") . or_else (| state | { state . match_string ("\t") }) . or_else (| state | { self :: newline (state) }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn block_comment (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . sequence (| state | { state . match_string ("/*") . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { state . sequence (| state | { state . optional (| state | { self :: block_comment (state) . or_else (| state | { state . sequence (| state | { state . lookahead (false , | state | { state . match_string ("*/") }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: ANY (state) }) }) }) . and_then (| state | { state . repeat (| state | { state . sequence (| state | { super :: hidden :: skip (state) . and_then (| state | { self :: block_comment (state) . or_else (| state | { state . sequence (| state | { state . lookahead (false , | state | { state . match_string ("*/") }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { self :: ANY (state) }) }) }) }) }) }) }) }) }) }) . and_then (| state | { super :: hidden :: skip (state) }) . and_then (| state | { state . match_string ("*/") }) }) } # [inline] # [allow (non_snake_case , unused_variables)] pub fn COMMENT (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . atomic (:: pest :: Atomicity :: Atomic , | state | { self :: block_comment (state) . or_else (| state | { state . sequence (| state | { state . match_string ("//") . and_then (| state | { state . repeat (| state | { state . sequence (| state | { state . lookahead (false , | state | { self :: newline (state) }) . and_then (| state | { self :: ANY (state) }) }) }) }) }) }) }) } # [inline] # [allow (dead_code , non_snake_case , unused_variables)] pub fn ANY (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . skip (1) } # [inline] # [allow (dead_code , non_snake_case , unused_variables)] pub fn EOI (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . rule (Rule :: EOI , | state | state . end_of_input ()) } # [inline] # [allow (dead_code , non_snake_case , unused_variables)] pub fn SOI (state : :: std :: boxed :: Box < :: pest :: ParserState < Rule >>) -> :: pest :: ParseResult < :: std :: boxed :: Box < :: pest :: ParserState < Rule >> > { state . start_of_input () } } pub use self :: visible :: * ; } :: pest :: state (input , | state | { match rule { Rule :: grammar_rules => rules :: grammar_rules (state) , Rule :: grammar_rule => rules :: grammar_rule (state) , Rule :: assignment_operator => rules :: assignment_operator (state) , Rule :: opening_brace => rules :: opening_brace (state) , Rule :: closing_brace => rules :: closing_brace (state) , Rule :: opening_paren => rules :: opening_paren (state) , Rule :: closing_paren => rules :: closing_paren (state) , Rule :: opening_brack => rules :: opening_brack (state) , Rule :: closing_brack => rules :: closing_brack (state) , Rule :: modifier => rules :: modifier (state) , Rule :: silent_modifier => rules :: silent_modifier (state) , Rule :: atomic_modifier => rules :: atomic_modifier (state) , Rule :: compound_atomic_modifier => rules :: compound_atomic_modifier (state) , Rule :: non_atomic_modifier => rules :: non_atomic_modifier (state) , Rule :: expression => rules :: expression (state) , Rule :: term => rules :: term (state) , Rule :: node => rules :: node (state) , Rule :: terminal => rules :: terminal (state) , Rule :: prefix_operator => rules :: prefix_operator (state) , Rule :: infix_operator => rules :: infix_operator (state) , Rule :: postfix_operator => rules :: postfix_operator (state) , Rule :: positive_predicate_operator => rules :: positive_predicate_operator (state) , Rule :: negative_predicate_operator => rules :: negative_predicate_operator (state) , Rule :: sequence_operator => rules :: sequence_operator (state) , Rule :: choice_operator => rules :: choice_operator (state) , Rule :: optional_operator => rules :: optional_operator (state) , Rule :: repeat_operator => rules :: repeat_operator (state) , Rule :: repeat_once_operator => rules :: repeat_once_operator (state) , Rule :: repeat_exact => rules :: repeat_exact (state) , Rule :: repeat_min => rules :: repeat_min (state) , Rule :: repeat_max => rules :: repeat_max (state) , Rule :: repeat_min_max => rules :: repeat_min_max (state) , Rule :: number => rules :: number (state) , Rule :: integer => rules :: integer (state) , Rule :: comma => rules :: comma (state) , Rule :: _push => rules :: _push (state) , Rule :: peek_slice => rules :: peek_slice (state) , Rule :: identifier => rules :: identifier (state) , Rule :: alpha => rules :: alpha (state) , Rule :: alpha_num => rules :: alpha_num (state) , Rule :: string => rules :: string (state) , Rule :: insensitive_string => rules :: insensitive_string (state) , Rule :: range => rules :: range (state) , Rule :: character => rules :: character (state) , Rule :: inner_str => rules :: inner_str (state) , Rule :: inner_chr => rules :: inner_chr (state) , Rule :: escape => rules :: escape (state) , Rule :: code => rules :: code (state) , Rule :: unicode => rules :: unicode (state) , Rule :: hex_digit => rules :: hex_digit (state) , Rule :: quote => rules :: quote (state) , Rule :: single_quote => rules :: single_quote (state) , Rule :: range_operator => rules :: range_operator (state) , Rule :: newline => rules :: newline (state) , Rule :: WHITESPACE => rules :: WHITESPACE (state) , Rule :: block_comment => rules :: block_comment (state) , Rule :: COMMENT => rules :: COMMENT (state) , Rule :: EOI => rules :: EOI (state) } }) } }
diff --git a/vendor/pest_meta/src/lib.rs b/vendor/pest_meta/src/lib.rs
index 1f9c5bcb6..4e178be6f 100644
--- a/vendor/pest_meta/src/lib.rs
+++ b/vendor/pest_meta/src/lib.rs
@@ -7,9 +7,7 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-#![allow(clippy::range_plus_one)]
-
-extern crate maplit;
+extern crate once_cell;
#[cfg(test)]
#[macro_use]
extern crate pest;
@@ -30,18 +28,19 @@ where
{
result.unwrap_or_else(|e| {
panic!(
- "grammar error\n\n".to_owned()
- + &e.into_iter()
- .map(|error| format!("{}", error))
- .collect::<Vec<_>>()
- .join("\n\n")
+ "grammar error\n\n{}",
+ &e.into_iter()
+ .map(|error| format!("{}", error))
+ .collect::<Vec<_>>()
+ .join("\n\n")
)
})
}
#[doc(hidden)]
pub static UNICODE_PROPERTY_NAMES: &[&str] = &[
- /* BINARY */ "ALPHABETIC",
+ /* BINARY */
+ "ALPHABETIC",
"BIDI_CONTROL",
"CASE_IGNORABLE",
"CASED",
@@ -93,7 +92,8 @@ pub static UNICODE_PROPERTY_NAMES: &[&str] = &[
"WHITE_SPACE",
"XID_CONTINUE",
"XID_START",
- /* CATEGORY */ "CASED_LETTER",
+ /* CATEGORY */
+ "CASED_LETTER",
"CLOSE_PUNCTUATION",
"CONNECTOR_PUNCTUATION",
"CONTROL",
diff --git a/vendor/pest_meta/src/optimizer/concatenator.rs b/vendor/pest_meta/src/optimizer/concatenator.rs
index e0aab7bc1..31d3aa531 100644
--- a/vendor/pest_meta/src/optimizer/concatenator.rs
+++ b/vendor/pest_meta/src/optimizer/concatenator.rs
@@ -7,28 +7,27 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use ast::*;
+use crate::ast::*;
pub fn concatenate(rule: Rule) -> Rule {
- match rule {
- Rule { name, ty, expr } => Rule {
- name,
- ty,
- expr: expr.map_bottom_up(|expr| {
- if ty == RuleType::Atomic {
- // TODO: Use box syntax when it gets stabilized.
- match expr {
- Expr::Seq(lhs, rhs) => match (*lhs, *rhs) {
- (Expr::Str(lhs), Expr::Str(rhs)) => Expr::Str(lhs + &rhs),
- (Expr::Insens(lhs), Expr::Insens(rhs)) => Expr::Insens(lhs + &rhs),
- (lhs, rhs) => Expr::Seq(Box::new(lhs), Box::new(rhs)),
- },
- expr => expr,
- }
- } else {
- expr
+ let Rule { name, ty, expr } = rule;
+ Rule {
+ name,
+ ty,
+ expr: expr.map_bottom_up(|expr| {
+ if ty == RuleType::Atomic {
+ // TODO: Use box syntax when it gets stabilized.
+ match expr {
+ Expr::Seq(lhs, rhs) => match (*lhs, *rhs) {
+ (Expr::Str(lhs), Expr::Str(rhs)) => Expr::Str(lhs + &rhs),
+ (Expr::Insens(lhs), Expr::Insens(rhs)) => Expr::Insens(lhs + &rhs),
+ (lhs, rhs) => Expr::Seq(Box::new(lhs), Box::new(rhs)),
+ },
+ expr => expr,
}
- }),
- },
+ } else {
+ expr
+ }
+ }),
}
}
diff --git a/vendor/pest_meta/src/optimizer/factorizer.rs b/vendor/pest_meta/src/optimizer/factorizer.rs
index 236289e14..5481870bf 100644
--- a/vendor/pest_meta/src/optimizer/factorizer.rs
+++ b/vendor/pest_meta/src/optimizer/factorizer.rs
@@ -7,32 +7,45 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use ast::*;
+use crate::ast::*;
pub fn factor(rule: Rule) -> Rule {
- match rule {
- Rule { name, ty, expr } => Rule {
- name,
- ty,
- expr: expr.map_top_down(|expr| {
- // TODO: Use box syntax when it gets stabilized.
- match expr {
- Expr::Choice(lhs, rhs) => match (*lhs, *rhs) {
- (Expr::Seq(l1, r1), Expr::Seq(l2, r2)) => {
- if l1 == l2 {
- Expr::Seq(l1, Box::new(Expr::Choice(r1, r2)))
- } else {
- Expr::Choice(
- Box::new(Expr::Seq(l1, r1)),
- Box::new(Expr::Seq(l2, r2)),
- )
- }
+ let Rule { name, ty, expr } = rule;
+ Rule {
+ name,
+ ty,
+ expr: expr.map_top_down(|expr| {
+ // TODO: Use box syntax when it gets stabilized.
+ match expr {
+ Expr::Choice(lhs, rhs) => match (*lhs, *rhs) {
+ (Expr::Seq(l1, r1), Expr::Seq(l2, r2)) => {
+ if l1 == l2 {
+ Expr::Seq(l1, Box::new(Expr::Choice(r1, r2)))
+ } else {
+ Expr::Choice(Box::new(Expr::Seq(l1, r1)), Box::new(Expr::Seq(l2, r2)))
}
- (lhs, rhs) => Expr::Choice(Box::new(lhs), Box::new(rhs)),
- },
- expr => expr,
- }
- }),
- },
+ }
+ // Converts `(rule ~ rest) | rule` to `rule ~ rest?`, avoiding trying to match `rule` twice.
+ (Expr::Seq(l1, l2), r) => {
+ if *l1 == r {
+ Expr::Seq(l1, Box::new(Expr::Opt(l2)))
+ } else {
+ Expr::Choice(Box::new(Expr::Seq(l1, l2)), Box::new(r))
+ }
+ }
+ // Converts `rule | (rule ~ rest)` to `rule` since `(rule ~ rest)`
+ // will never match if `rule` didn't.
+ (l, Expr::Seq(r1, r2)) => {
+ if l == *r1 {
+ l
+ } else {
+ Expr::Choice(Box::new(l), Box::new(Expr::Seq(r1, r2)))
+ }
+ }
+ (lhs, rhs) => Expr::Choice(Box::new(lhs), Box::new(rhs)),
+ },
+ expr => expr,
+ }
+ }),
}
}
diff --git a/vendor/pest_meta/src/optimizer/lister.rs b/vendor/pest_meta/src/optimizer/lister.rs
new file mode 100644
index 000000000..e19885032
--- /dev/null
+++ b/vendor/pest_meta/src/optimizer/lister.rs
@@ -0,0 +1,42 @@
+// pest. The Elegant Parser
+// Copyright (c) 2018 Dragoș Tiselice
+//
+// Licensed under the Apache License, Version 2.0
+// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT
+// license <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. All files in the project carrying such notice may not be copied,
+// modified, or distributed except according to those terms.
+
+use crate::ast::*;
+
+pub fn list(rule: Rule) -> Rule {
+ let Rule { name, ty, expr } = rule;
+ Rule {
+ name,
+ ty,
+ expr: expr.map_bottom_up(|expr| {
+ // TODO: Use box syntax when it gets stabilized.
+ match expr {
+ Expr::Seq(l, r) => match *l {
+ Expr::Rep(l) => {
+ let l = *l;
+ match l {
+ Expr::Seq(l1, l2) => {
+ // Converts `(rule ~ rest)* ~ rule` to `rule ~ (rest ~ rule)*`,
+ // avoiding matching the last `rule` twice.
+ if l1 == r {
+ Expr::Seq(l1, Box::new(Expr::Rep(Box::new(Expr::Seq(l2, r)))))
+ } else {
+ Expr::Seq(Box::new(Expr::Rep(Box::new(Expr::Seq(l1, l2)))), r)
+ }
+ }
+ expr => Expr::Seq(Box::new(Expr::Rep(Box::new(expr))), r),
+ }
+ }
+ expr => Expr::Seq(Box::new(expr), r),
+ },
+ expr => expr,
+ }
+ }),
+ }
+}
diff --git a/vendor/pest_meta/src/optimizer/mod.rs b/vendor/pest_meta/src/optimizer/mod.rs
index 7013c43f9..e0cbdb0de 100644
--- a/vendor/pest_meta/src/optimizer/mod.rs
+++ b/vendor/pest_meta/src/optimizer/mod.rs
@@ -7,7 +7,7 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use ast::*;
+use crate::ast::*;
use std::collections::HashMap;
#[cfg(test)]
@@ -20,6 +20,7 @@ macro_rules! box_tree {
mod concatenator;
mod factorizer;
+mod lister;
mod restorer;
mod rotater;
mod skipper;
@@ -33,6 +34,7 @@ pub fn optimize(rules: Vec<Rule>) -> Vec<OptimizedRule> {
.map(unroller::unroll)
.map(concatenator::concatenate)
.map(factorizer::factor)
+ .map(lister::list)
.map(rule_to_optimized_rule)
.collect();
@@ -279,7 +281,7 @@ mod tests {
#[test]
fn rotate() {
let rules = {
- use ast::Expr::*;
+ use crate::ast::Expr::*;
vec![Rule {
name: "rule".to_owned(),
ty: RuleType::Normal,
@@ -293,7 +295,7 @@ mod tests {
}]
};
let rotated = {
- use optimizer::OptimizedExpr::*;
+ use crate::optimizer::OptimizedExpr::*;
vec![OptimizedRule {
name: "rule".to_owned(),
ty: RuleType::Normal,
@@ -313,7 +315,7 @@ mod tests {
#[test]
fn skip() {
let rules = {
- use ast::Expr::*;
+ use crate::ast::Expr::*;
vec![Rule {
name: "rule".to_owned(),
ty: RuleType::Atomic,
@@ -335,7 +337,7 @@ mod tests {
#[test]
fn concat_strings() {
let rules = {
- use ast::Expr::*;
+ use crate::ast::Expr::*;
vec![Rule {
name: "rule".to_owned(),
ty: RuleType::Atomic,
@@ -362,7 +364,7 @@ mod tests {
expr: Expr::RepExact(Box::new(Expr::Ident(String::from("a"))), 3),
}];
let unrolled = {
- use optimizer::OptimizedExpr::*;
+ use crate::optimizer::OptimizedExpr::*;
vec![OptimizedRule {
name: "rule".to_owned(),
ty: RuleType::Atomic,
@@ -384,7 +386,7 @@ mod tests {
expr: Expr::RepMax(Box::new(Expr::Str("a".to_owned())), 3),
}];
let unrolled = {
- use optimizer::OptimizedExpr::*;
+ use crate::optimizer::OptimizedExpr::*;
vec![OptimizedRule {
name: "rule".to_owned(),
ty: RuleType::Atomic,
@@ -406,7 +408,7 @@ mod tests {
expr: Expr::RepMin(Box::new(Expr::Str("a".to_owned())), 2),
}];
let unrolled = {
- use optimizer::OptimizedExpr::*;
+ use crate::optimizer::OptimizedExpr::*;
vec![OptimizedRule {
name: "rule".to_owned(),
ty: RuleType::Atomic,
@@ -428,7 +430,7 @@ mod tests {
expr: Expr::RepMinMax(Box::new(Expr::Str("a".to_owned())), 2, 3),
}];
let unrolled = {
- use optimizer::OptimizedExpr::*;
+ use crate::optimizer::OptimizedExpr::*;
vec![OptimizedRule {
name: "rule".to_owned(),
ty: RuleType::Atomic,
@@ -452,7 +454,7 @@ mod tests {
#[test]
fn concat_insensitive_strings() {
let rules = {
- use ast::Expr::*;
+ use crate::ast::Expr::*;
vec![Rule {
name: "rule".to_owned(),
ty: RuleType::Atomic,
@@ -474,7 +476,7 @@ mod tests {
#[test]
fn long_common_sequence() {
let rules = {
- use ast::Expr::*;
+ use crate::ast::Expr::*;
vec![Rule {
name: "rule".to_owned(),
ty: RuleType::Silent,
@@ -491,7 +493,7 @@ mod tests {
}]
};
let optimized = {
- use optimizer::OptimizedExpr::*;
+ use crate::optimizer::OptimizedExpr::*;
vec![OptimizedRule {
name: "rule".to_owned(),
ty: RuleType::Silent,
@@ -507,4 +509,82 @@ mod tests {
assert_eq!(optimize(rules), optimized);
}
+
+ #[test]
+ fn short_common_sequence() {
+ let rules = {
+ use crate::ast::Expr::*;
+ vec![Rule {
+ name: "rule".to_owned(),
+ ty: RuleType::Silent,
+ expr: box_tree!(Choice(
+ Seq(Ident(String::from("a")), Ident(String::from("b"))),
+ Ident(String::from("a"))
+ )),
+ }]
+ };
+ let optimized = {
+ use crate::optimizer::OptimizedExpr::*;
+ vec![OptimizedRule {
+ name: "rule".to_owned(),
+ ty: RuleType::Silent,
+ expr: box_tree!(Seq(Ident(String::from("a")), Opt(Ident(String::from("b"))))),
+ }]
+ };
+
+ assert_eq!(optimize(rules), optimized);
+ }
+
+ #[test]
+ fn impossible_common_sequence() {
+ let rules = {
+ use crate::ast::Expr::*;
+ vec![Rule {
+ name: "rule".to_owned(),
+ ty: RuleType::Silent,
+ expr: box_tree!(Choice(
+ Ident(String::from("a")),
+ Seq(Ident(String::from("a")), Ident(String::from("b")))
+ )),
+ }]
+ };
+ let optimized = {
+ use crate::optimizer::OptimizedExpr::*;
+ vec![OptimizedRule {
+ name: "rule".to_owned(),
+ ty: RuleType::Silent,
+ expr: box_tree!(Ident(String::from("a"))),
+ }]
+ };
+
+ assert_eq!(optimize(rules), optimized);
+ }
+
+ #[test]
+ fn lister() {
+ let rules = {
+ use crate::ast::Expr::*;
+ vec![Rule {
+ name: "rule".to_owned(),
+ ty: RuleType::Silent,
+ expr: box_tree!(Seq(
+ Rep(Seq(Ident(String::from("a")), Ident(String::from("b")))),
+ Ident(String::from("a"))
+ )),
+ }]
+ };
+ let optimized = {
+ use crate::optimizer::OptimizedExpr::*;
+ vec![OptimizedRule {
+ name: "rule".to_owned(),
+ ty: RuleType::Silent,
+ expr: box_tree!(Seq(
+ Ident(String::from("a")),
+ Rep(Seq(Ident(String::from("b")), Ident(String::from("a"))))
+ )),
+ }]
+ };
+
+ assert_eq!(optimize(rules), optimized);
+ }
}
diff --git a/vendor/pest_meta/src/optimizer/restorer.rs b/vendor/pest_meta/src/optimizer/restorer.rs
index 34a710eab..e128e03f1 100644
--- a/vendor/pest_meta/src/optimizer/restorer.rs
+++ b/vendor/pest_meta/src/optimizer/restorer.rs
@@ -8,19 +8,15 @@
// modified, or distributed except according to those terms.
use std::collections::HashMap;
-use optimizer::*;
+use crate::optimizer::*;
pub fn restore_on_err(
rule: OptimizedRule,
rules: &HashMap<String, OptimizedExpr>,
) -> OptimizedRule {
- match rule {
- OptimizedRule { name, ty, expr } => {
- let expr = expr.map_bottom_up(|expr| wrap_branching_exprs(expr, rules));
-
- OptimizedRule { name, ty, expr }
- }
- }
+ let OptimizedRule { name, ty, expr } = rule;
+ let expr = expr.map_bottom_up(|expr| wrap_branching_exprs(expr, rules));
+ OptimizedRule { name, ty, expr }
}
fn wrap_branching_exprs(
@@ -96,7 +92,7 @@ fn child_modifies_state(
#[cfg(test)]
mod tests {
use super::*;
- use optimizer::OptimizedExpr::*;
+ use crate::optimizer::OptimizedExpr::*;
#[test]
fn restore_no_stack_children() {
diff --git a/vendor/pest_meta/src/optimizer/rotater.rs b/vendor/pest_meta/src/optimizer/rotater.rs
index 3588738ad..7a7d8fba4 100644
--- a/vendor/pest_meta/src/optimizer/rotater.rs
+++ b/vendor/pest_meta/src/optimizer/rotater.rs
@@ -7,7 +7,7 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use ast::*;
+use crate::ast::*;
pub fn rotate(rule: Rule) -> Rule {
fn rotate_internal(expr: Expr) -> Expr {
@@ -35,11 +35,10 @@ pub fn rotate(rule: Rule) -> Rule {
}
}
- match rule {
- Rule { name, ty, expr } => Rule {
- name,
- ty,
- expr: expr.map_top_down(rotate_internal),
- },
+ let Rule { name, ty, expr } = rule;
+ Rule {
+ name,
+ ty,
+ expr: expr.map_top_down(rotate_internal),
}
}
diff --git a/vendor/pest_meta/src/optimizer/skipper.rs b/vendor/pest_meta/src/optimizer/skipper.rs
index f55edc06f..40bc5a16f 100644
--- a/vendor/pest_meta/src/optimizer/skipper.rs
+++ b/vendor/pest_meta/src/optimizer/skipper.rs
@@ -7,7 +7,7 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use ast::*;
+use crate::ast::*;
pub fn skip(rule: Rule) -> Rule {
fn populate_choices(expr: Expr, mut choices: Vec<String>) -> Option<Expr> {
@@ -28,30 +28,29 @@ pub fn skip(rule: Rule) -> Rule {
}
}
- match rule {
- Rule { name, ty, expr } => Rule {
- name,
- ty,
- expr: if ty == RuleType::Atomic {
- expr.map_top_down(|expr| {
- // TODO: Use box syntax when it gets stabilized.
- if let Expr::Rep(expr) = expr.clone() {
- if let Expr::Seq(lhs, rhs) = *expr.clone() {
- if let (Expr::NegPred(expr), Expr::Ident(ident)) = (*lhs, *rhs) {
- if ident == "ANY" {
- if let Some(expr) = populate_choices(*expr, vec![]) {
- return expr;
- }
+ let Rule { name, ty, expr } = rule;
+ Rule {
+ name,
+ ty,
+ expr: if ty == RuleType::Atomic {
+ expr.map_top_down(|expr| {
+ // TODO: Use box syntax when it gets stabilized.
+ if let Expr::Rep(expr) = expr.clone() {
+ if let Expr::Seq(lhs, rhs) = *expr {
+ if let (Expr::NegPred(expr), Expr::Ident(ident)) = (*lhs, *rhs) {
+ if ident == "ANY" {
+ if let Some(expr) = populate_choices(*expr, vec![]) {
+ return expr;
}
}
}
- };
+ }
+ };
- expr
- })
- } else {
expr
- },
+ })
+ } else {
+ expr
},
}
}
diff --git a/vendor/pest_meta/src/optimizer/unroller.rs b/vendor/pest_meta/src/optimizer/unroller.rs
index fff17336d..e3c360d90 100644
--- a/vendor/pest_meta/src/optimizer/unroller.rs
+++ b/vendor/pest_meta/src/optimizer/unroller.rs
@@ -7,61 +7,60 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
-use ast::*;
+use crate::ast::*;
pub fn unroll(rule: Rule) -> Rule {
- match rule {
- Rule { name, ty, expr } => Rule {
- name,
- ty,
- expr: expr.map_bottom_up(|expr| match expr {
- Expr::RepOnce(expr) => Expr::Seq(expr.clone(), Box::new(Expr::Rep(expr))),
- Expr::RepExact(expr, num) => (1..num + 1)
- .map(|_| *expr.clone())
- .rev()
- .fold(None, |rep, expr| match rep {
- None => Some(expr),
- Some(rep) => Some(Expr::Seq(Box::new(expr), Box::new(rep))),
- })
- .unwrap(),
- Expr::RepMin(expr, min) => (1..min + 2)
- .map(|i| {
- if i <= min {
- *expr.clone()
- } else {
- Expr::Rep(expr.clone())
- }
- })
- .rev()
- .fold(None, |rep, expr| match rep {
- None => Some(expr),
- Some(rep) => Some(Expr::Seq(Box::new(expr), Box::new(rep))),
- })
- .unwrap(),
- Expr::RepMax(expr, max) => (1..max + 1)
- .map(|_| Expr::Opt(expr.clone()))
- .rev()
- .fold(None, |rep, expr| match rep {
- None => Some(expr),
- Some(rep) => Some(Expr::Seq(Box::new(expr), Box::new(rep))),
- })
- .unwrap(),
- Expr::RepMinMax(expr, min, max) => (1..max + 1)
- .map(|i| {
- if i <= min {
- *expr.clone()
- } else {
- Expr::Opt(expr.clone())
- }
- })
- .rev()
- .fold(None, |rep, expr| match rep {
- None => Some(expr),
- Some(rep) => Some(Expr::Seq(Box::new(expr), Box::new(rep))),
- })
- .unwrap(),
- expr => expr,
- }),
- },
+ let Rule { name, ty, expr } = rule;
+ Rule {
+ name,
+ ty,
+ expr: expr.map_bottom_up(|expr| match expr {
+ Expr::RepOnce(expr) => Expr::Seq(expr.clone(), Box::new(Expr::Rep(expr))),
+ Expr::RepExact(expr, num) => (1..num + 1)
+ .map(|_| *expr.clone())
+ .rev()
+ .fold(None, |rep, expr| match rep {
+ None => Some(expr),
+ Some(rep) => Some(Expr::Seq(Box::new(expr), Box::new(rep))),
+ })
+ .unwrap(),
+ Expr::RepMin(expr, min) => (1..min + 2)
+ .map(|i| {
+ if i <= min {
+ *expr.clone()
+ } else {
+ Expr::Rep(expr.clone())
+ }
+ })
+ .rev()
+ .fold(None, |rep, expr| match rep {
+ None => Some(expr),
+ Some(rep) => Some(Expr::Seq(Box::new(expr), Box::new(rep))),
+ })
+ .unwrap(),
+ Expr::RepMax(expr, max) => (1..max + 1)
+ .map(|_| Expr::Opt(expr.clone()))
+ .rev()
+ .fold(None, |rep, expr| match rep {
+ None => Some(expr),
+ Some(rep) => Some(Expr::Seq(Box::new(expr), Box::new(rep))),
+ })
+ .unwrap(),
+ Expr::RepMinMax(expr, min, max) => (1..max + 1)
+ .map(|i| {
+ if i <= min {
+ *expr.clone()
+ } else {
+ Expr::Opt(expr.clone())
+ }
+ })
+ .rev()
+ .fold(None, |rep, expr| match rep {
+ None => Some(expr),
+ Some(rep) => Some(Expr::Seq(Box::new(expr), Box::new(rep))),
+ })
+ .unwrap(),
+ expr => expr,
+ }),
}
}
diff --git a/vendor/pest_meta/src/parser.rs b/vendor/pest_meta/src/parser.rs
index 5f6f3b374..72abd810d 100644
--- a/vendor/pest_meta/src/parser.rs
+++ b/vendor/pest_meta/src/parser.rs
@@ -15,10 +15,14 @@ use pest::iterators::{Pair, Pairs};
use pest::prec_climber::{Assoc, Operator, PrecClimber};
use pest::{Parser, Span};
-use ast::{Expr, Rule as AstRule, RuleType};
-use validator;
+use crate::ast::{Expr, Rule as AstRule, RuleType};
+use crate::validator;
-include!("grammar.rs");
+mod grammar {
+ include!("grammar.rs");
+}
+
+pub use self::grammar::*;
pub fn parse(rule: Rule, data: &str) -> Result<Pairs<Rule>, Error<Rule>> {
PestParser::parse(rule, data)
@@ -125,13 +129,9 @@ pub enum ParserExpr<'i> {
}
fn convert_rule(rule: ParserRule) -> AstRule {
- match rule {
- ParserRule { name, ty, node, .. } => {
- let expr = convert_node(node);
-
- AstRule { name, ty, expr }
- }
- }
+ let ParserRule { name, ty, node, .. } = rule;
+ let expr = convert_node(node);
+ AstRule { name, ty, expr }
}
fn convert_node(node: ParserNode) -> Expr {
@@ -174,9 +174,7 @@ pub fn consume_rules(pairs: Pairs<Rule>) -> Result<Vec<AstRule>, Vec<Error<Rule>
}
}
-fn consume_rules_with_spans<'i>(
- pairs: Pairs<'i, Rule>,
-) -> Result<Vec<ParserRule<'i>>, Vec<Error<Rule>>> {
+fn consume_rules_with_spans(pairs: Pairs<Rule>) -> Result<Vec<ParserRule>, Vec<Error<Rule>>> {
let climber = PrecClimber::new(vec![
Operator::new(Rule::choice_operator, Assoc::Left),
Operator::new(Rule::sequence_operator, Assoc::Left),
@@ -206,7 +204,13 @@ fn consume_rules_with_spans<'i>(
pairs.next().unwrap(); // opening_brace
- let node = consume_expr(pairs.next().unwrap().into_inner().peekable(), &climber)?;
+ // skip initial infix operators
+ let mut inner_nodes = pairs.next().unwrap().into_inner().peekable();
+ if inner_nodes.peek().unwrap().as_rule() == Rule::choice_operator {
+ inner_nodes.next().unwrap();
+ }
+
+ let node = consume_expr(inner_nodes, &climber)?;
Ok(ParserRule {
name,
@@ -617,6 +621,8 @@ fn unescape(string: &str) -> Option<String> {
#[cfg(test)]
mod tests {
+ use std::convert::TryInto;
+
use super::super::unwrap_or_report;
use super::*;
@@ -1073,7 +1079,7 @@ mod tests {
parser: PestParser,
input: "a = {}",
rule: Rule::grammar_rules,
- positives: vec![Rule::term],
+ positives: vec![Rule::expression],
negatives: vec![],
pos: 5
};
@@ -1092,6 +1098,18 @@ mod tests {
}
#[test]
+ fn incorrect_prefix() {
+ fails_with! {
+ parser: PestParser,
+ input: "a = { ~ b}",
+ rule: Rule::grammar_rules,
+ positives: vec![Rule::expression],
+ negatives: vec![],
+ pos: 6
+ };
+ }
+
+ #[test]
fn wrong_op() {
fails_with! {
parser: PestParser,
@@ -1228,7 +1246,7 @@ mod tests {
let pairs = PestParser::parse(Rule::grammar_rules, input).unwrap();
let ast = consume_rules_with_spans(pairs).unwrap();
- let ast: Vec<_> = ast.into_iter().map(|rule| convert_rule(rule)).collect();
+ let ast: Vec<_> = ast.into_iter().map(convert_rule).collect();
assert_eq!(
ast,
@@ -1266,7 +1284,7 @@ mod tests {
let pairs = PestParser::parse(Rule::grammar_rules, input).unwrap();
let ast = consume_rules_with_spans(pairs).unwrap();
- let ast: Vec<_> = ast.into_iter().map(|rule| convert_rule(rule)).collect();
+ let ast: Vec<_> = ast.into_iter().map(convert_rule).collect();
assert_eq!(
ast,
@@ -1485,4 +1503,45 @@ mod tests {
assert_eq!(unescape(string), None);
}
+
+ #[test]
+ fn handles_deep_nesting() {
+ let sample1 = include_str!(concat!(
+ env!("CARGO_MANIFEST_DIR"),
+ "/resources/test/fuzzsample1.grammar"
+ ));
+ let sample2 = include_str!(concat!(
+ env!("CARGO_MANIFEST_DIR"),
+ "/resources/test/fuzzsample2.grammar"
+ ));
+ let sample3 = include_str!(concat!(
+ env!("CARGO_MANIFEST_DIR"),
+ "/resources/test/fuzzsample3.grammar"
+ ));
+ let sample4 = include_str!(concat!(
+ env!("CARGO_MANIFEST_DIR"),
+ "/resources/test/fuzzsample4.grammar"
+ ));
+ let sample5 = include_str!(concat!(
+ env!("CARGO_MANIFEST_DIR"),
+ "/resources/test/fuzzsample5.grammar"
+ ));
+ const ERROR: &str = "call limit reached";
+ pest::set_call_limit(Some(5_000usize.try_into().unwrap()));
+ let s1 = crate::parser::parse(crate::parser::Rule::grammar_rules, sample1);
+ assert!(s1.is_err());
+ assert_eq!(s1.unwrap_err().variant.message(), ERROR);
+ let s2 = crate::parser::parse(crate::parser::Rule::grammar_rules, sample2);
+ assert!(s2.is_err());
+ assert_eq!(s2.unwrap_err().variant.message(), ERROR);
+ let s3 = crate::parser::parse(crate::parser::Rule::grammar_rules, sample3);
+ assert!(s3.is_err());
+ assert_eq!(s3.unwrap_err().variant.message(), ERROR);
+ let s4 = crate::parser::parse(crate::parser::Rule::grammar_rules, sample4);
+ assert!(s4.is_err());
+ assert_eq!(s4.unwrap_err().variant.message(), ERROR);
+ let s5 = crate::parser::parse(crate::parser::Rule::grammar_rules, sample5);
+ assert!(s5.is_err());
+ assert_eq!(s5.unwrap_err().variant.message(), ERROR);
+ }
}
diff --git a/vendor/pest_meta/src/validator.rs b/vendor/pest_meta/src/validator.rs
index a358dbeec..5448c3bcd 100644
--- a/vendor/pest_meta/src/validator.rs
+++ b/vendor/pest_meta/src/validator.rs
@@ -7,105 +7,67 @@
// option. All files in the project carrying such notice may not be copied,
// modified, or distributed except according to those terms.
+use once_cell::sync::Lazy;
use std::collections::{HashMap, HashSet};
use pest::error::{Error, ErrorVariant, InputLocation};
use pest::iterators::Pairs;
use pest::Span;
-use parser::{ParserExpr, ParserNode, ParserRule, Rule};
-use UNICODE_PROPERTY_NAMES;
-
-#[allow(clippy::needless_pass_by_value)]
-pub fn validate_pairs<'i>(pairs: Pairs<'i, Rule>) -> Result<Vec<&'i str>, Vec<Error<Rule>>> {
- let mut rust_keywords = HashSet::new();
- rust_keywords.insert("abstract");
- rust_keywords.insert("alignof");
- rust_keywords.insert("as");
- rust_keywords.insert("become");
- rust_keywords.insert("box");
- rust_keywords.insert("break");
- rust_keywords.insert("const");
- rust_keywords.insert("continue");
- rust_keywords.insert("crate");
- rust_keywords.insert("do");
- rust_keywords.insert("else");
- rust_keywords.insert("enum");
- rust_keywords.insert("extern");
- rust_keywords.insert("false");
- rust_keywords.insert("final");
- rust_keywords.insert("fn");
- rust_keywords.insert("for");
- rust_keywords.insert("if");
- rust_keywords.insert("impl");
- rust_keywords.insert("in");
- rust_keywords.insert("let");
- rust_keywords.insert("loop");
- rust_keywords.insert("macro");
- rust_keywords.insert("match");
- rust_keywords.insert("mod");
- rust_keywords.insert("move");
- rust_keywords.insert("mut");
- rust_keywords.insert("offsetof");
- rust_keywords.insert("override");
- rust_keywords.insert("priv");
- rust_keywords.insert("proc");
- rust_keywords.insert("pure");
- rust_keywords.insert("pub");
- rust_keywords.insert("ref");
- rust_keywords.insert("return");
- rust_keywords.insert("Self");
- rust_keywords.insert("self");
- rust_keywords.insert("sizeof");
- rust_keywords.insert("static");
- rust_keywords.insert("struct");
- rust_keywords.insert("super");
- rust_keywords.insert("trait");
- rust_keywords.insert("true");
- rust_keywords.insert("type");
- rust_keywords.insert("typeof");
- rust_keywords.insert("unsafe");
- rust_keywords.insert("unsized");
- rust_keywords.insert("use");
- rust_keywords.insert("virtual");
- rust_keywords.insert("where");
- rust_keywords.insert("while");
- rust_keywords.insert("yield");
-
- let mut pest_keywords = HashSet::new();
- pest_keywords.insert("_");
- pest_keywords.insert("ANY");
- pest_keywords.insert("DROP");
- pest_keywords.insert("EOI");
- pest_keywords.insert("PEEK");
- pest_keywords.insert("PEEK_ALL");
- pest_keywords.insert("POP");
- pest_keywords.insert("POP_ALL");
- pest_keywords.insert("PUSH");
- pest_keywords.insert("SOI");
-
- let mut builtins = HashSet::new();
- builtins.insert("ANY");
- builtins.insert("DROP");
- builtins.insert("EOI");
- builtins.insert("PEEK");
- builtins.insert("PEEK_ALL");
- builtins.insert("POP");
- builtins.insert("POP_ALL");
- builtins.insert("SOI");
- builtins.insert("ASCII_DIGIT");
- builtins.insert("ASCII_NONZERO_DIGIT");
- builtins.insert("ASCII_BIN_DIGIT");
- builtins.insert("ASCII_OCT_DIGIT");
- builtins.insert("ASCII_HEX_DIGIT");
- builtins.insert("ASCII_ALPHA_LOWER");
- builtins.insert("ASCII_ALPHA_UPPER");
- builtins.insert("ASCII_ALPHA");
- builtins.insert("ASCII_ALPHANUMERIC");
- builtins.insert("ASCII");
- builtins.insert("NEWLINE");
- builtins.extend(UNICODE_PROPERTY_NAMES);
-
+use crate::parser::{ParserExpr, ParserNode, ParserRule, Rule};
+use crate::UNICODE_PROPERTY_NAMES;
+
+static RUST_KEYWORDS: Lazy<HashSet<&'static str>> = Lazy::new(|| {
+ [
+ "abstract", "alignof", "as", "become", "box", "break", "const", "continue", "crate", "do",
+ "else", "enum", "extern", "false", "final", "fn", "for", "if", "impl", "in", "let", "loop",
+ "macro", "match", "mod", "move", "mut", "offsetof", "override", "priv", "proc", "pure",
+ "pub", "ref", "return", "Self", "self", "sizeof", "static", "struct", "super", "trait",
+ "true", "type", "typeof", "unsafe", "unsized", "use", "virtual", "where", "while", "yield",
+ ]
+ .iter()
+ .cloned()
+ .collect()
+});
+
+static PEST_KEYWORDS: Lazy<HashSet<&'static str>> = Lazy::new(|| {
+ [
+ "_", "ANY", "DROP", "EOI", "PEEK", "PEEK_ALL", "POP", "POP_ALL", "PUSH", "SOI",
+ ]
+ .iter()
+ .cloned()
+ .collect()
+});
+
+static BUILTINS: Lazy<HashSet<&'static str>> = Lazy::new(|| {
+ [
+ "ANY",
+ "DROP",
+ "EOI",
+ "PEEK",
+ "PEEK_ALL",
+ "POP",
+ "POP_ALL",
+ "SOI",
+ "ASCII_DIGIT",
+ "ASCII_NONZERO_DIGIT",
+ "ASCII_BIN_DIGIT",
+ "ASCII_OCT_DIGIT",
+ "ASCII_HEX_DIGIT",
+ "ASCII_ALPHA_LOWER",
+ "ASCII_ALPHA_UPPER",
+ "ASCII_ALPHA",
+ "ASCII_ALPHANUMERIC",
+ "ASCII",
+ "NEWLINE",
+ ]
+ .iter()
+ .cloned()
+ .chain(UNICODE_PROPERTY_NAMES.iter().cloned())
+ .collect::<HashSet<&str>>()
+});
+
+pub fn validate_pairs(pairs: Pairs<Rule>) -> Result<Vec<&str>, Vec<Error<Rule>>> {
let definitions: Vec<_> = pairs
.clone()
.filter(|pair| pair.as_rule() == Rule::grammar_rule)
@@ -125,10 +87,10 @@ pub fn validate_pairs<'i>(pairs: Pairs<'i, Rule>) -> Result<Vec<&'i str>, Vec<Er
let mut errors = vec![];
- errors.extend(validate_rust_keywords(&definitions, &rust_keywords));
- errors.extend(validate_pest_keywords(&definitions, &pest_keywords));
+ errors.extend(validate_rust_keywords(&definitions));
+ errors.extend(validate_pest_keywords(&definitions));
errors.extend(validate_already_defined(&definitions));
- errors.extend(validate_undefined(&definitions, &called_rules, &builtins));
+ errors.extend(validate_undefined(&definitions, &called_rules));
if !errors.is_empty() {
return Err(errors);
@@ -142,22 +104,19 @@ pub fn validate_pairs<'i>(pairs: Pairs<'i, Rule>) -> Result<Vec<&'i str>, Vec<Er
Ok(defaults.cloned().collect())
}
-#[allow(clippy::implicit_hasher, clippy::ptr_arg)]
-pub fn validate_rust_keywords<'i>(
- definitions: &Vec<Span<'i>>,
- rust_keywords: &HashSet<&str>,
-) -> Vec<Error<Rule>> {
+#[allow(clippy::ptr_arg)]
+pub fn validate_rust_keywords(definitions: &Vec<Span>) -> Vec<Error<Rule>> {
let mut errors = vec![];
for definition in definitions {
let name = definition.as_str();
- if rust_keywords.contains(name) {
+ if RUST_KEYWORDS.contains(name) {
errors.push(Error::new_from_span(
ErrorVariant::CustomError {
message: format!("{} is a rust keyword", name),
},
- definition.clone(),
+ *definition,
))
}
}
@@ -165,22 +124,19 @@ pub fn validate_rust_keywords<'i>(
errors
}
-#[allow(clippy::implicit_hasher, clippy::ptr_arg)]
-pub fn validate_pest_keywords<'i>(
- definitions: &Vec<Span<'i>>,
- pest_keywords: &HashSet<&str>,
-) -> Vec<Error<Rule>> {
+#[allow(clippy::ptr_arg)]
+pub fn validate_pest_keywords(definitions: &Vec<Span>) -> Vec<Error<Rule>> {
let mut errors = vec![];
for definition in definitions {
let name = definition.as_str();
- if pest_keywords.contains(name) {
+ if PEST_KEYWORDS.contains(name) {
errors.push(Error::new_from_span(
ErrorVariant::CustomError {
message: format!("{} is a pest keyword", name),
},
- definition.clone(),
+ *definition,
))
}
}
@@ -189,7 +145,7 @@ pub fn validate_pest_keywords<'i>(
}
#[allow(clippy::ptr_arg)]
-pub fn validate_already_defined<'i>(definitions: &Vec<Span<'i>>) -> Vec<Error<Rule>> {
+pub fn validate_already_defined(definitions: &Vec<Span>) -> Vec<Error<Rule>> {
let mut errors = vec![];
let mut defined = HashSet::new();
@@ -201,7 +157,7 @@ pub fn validate_already_defined<'i>(definitions: &Vec<Span<'i>>) -> Vec<Error<Ru
ErrorVariant::CustomError {
message: format!("rule {} already defined", name),
},
- definition.clone(),
+ *definition,
))
} else {
defined.insert(name);
@@ -211,11 +167,10 @@ pub fn validate_already_defined<'i>(definitions: &Vec<Span<'i>>) -> Vec<Error<Ru
errors
}
-#[allow(clippy::implicit_hasher, clippy::ptr_arg)]
+#[allow(clippy::ptr_arg)]
pub fn validate_undefined<'i>(
definitions: &Vec<Span<'i>>,
called_rules: &Vec<Span<'i>>,
- builtins: &HashSet<&str>,
) -> Vec<Error<Rule>> {
let mut errors = vec![];
let definitions: HashSet<_> = definitions.iter().map(|span| span.as_str()).collect();
@@ -223,12 +178,12 @@ pub fn validate_undefined<'i>(
for rule in called_rules {
let name = rule.as_str();
- if !definitions.contains(name) && !builtins.contains(name) {
+ if !definitions.contains(name) && !BUILTINS.contains(name) {
errors.push(Error::new_from_span(
ErrorVariant::CustomError {
message: format!("rule {} is undefined", name),
},
- rule.clone(),
+ *rule,
))
}
}
@@ -259,7 +214,7 @@ fn is_non_progressing<'i>(
trace: &mut Vec<String>,
) -> bool {
match *expr {
- ParserExpr::Str(ref string) => string == "",
+ ParserExpr::Str(ref string) => string.is_empty(),
ParserExpr::Ident(ref ident) => {
if ident == "soi" || ident == "eoi" {
return true;
@@ -297,7 +252,7 @@ fn is_non_failing<'i>(
trace: &mut Vec<String>,
) -> bool {
match *expr {
- ParserExpr::Str(ref string) => string == "",
+ ParserExpr::Str(ref string) => string.is_empty(),
ParserExpr::Ident(ref ident) => {
if !trace.contains(ident) {
if let Some(node) = rules.get(ident) {
@@ -342,7 +297,7 @@ fn validate_repetition<'a, 'i: 'a>(rules: &'a [ParserRule<'i>]) -> Vec<Error<Rul
infinitely"
.to_owned()
},
- node.span.clone()
+ node.span
))
} else if is_non_progressing(&other.expr, &map, &mut vec![]) {
Some(Error::new_from_span(
@@ -352,7 +307,7 @@ fn validate_repetition<'a, 'i: 'a>(rules: &'a [ParserRule<'i>]) -> Vec<Error<Rul
infinitely"
.to_owned(),
},
- node.span.clone()
+ node.span
))
} else {
None
@@ -389,7 +344,7 @@ fn validate_choices<'a, 'i: 'a>(rules: &'a [ParserRule<'i>]) -> Vec<Error<Rule>>
"expression cannot fail; following choices cannot be reached"
.to_owned(),
},
- node.span.clone(),
+ node.span,
))
} else {
None
@@ -419,7 +374,7 @@ fn validate_whitespace_comment<'a, 'i: 'a>(rules: &'a [ParserRule<'i>]) -> Vec<E
&rule.name
),
},
- rule.node.span.clone(),
+ rule.node.span,
))
} else if is_non_progressing(&rule.node.expr, &map, &mut vec![]) {
Some(Error::new_from_span(
@@ -429,7 +384,7 @@ fn validate_whitespace_comment<'a, 'i: 'a>(rules: &'a [ParserRule<'i>]) -> Vec<E
&rule.name
),
},
- rule.node.span.clone(),
+ rule.node.span,
))
} else {
None
@@ -449,7 +404,6 @@ fn to_hash_map<'a, 'i: 'a>(rules: &'a [ParserRule<'i>]) -> HashMap<String, &'a P
rules.iter().map(|r| (r.name.clone(), &r.node)).collect()
}
-#[allow(clippy::needless_pass_by_value)]
fn left_recursion<'a, 'i: 'a>(rules: HashMap<String, &'a ParserNode<'i>>) -> Vec<Error<Rule>> {
fn check_expr<'a, 'i: 'a>(
node: &'a ParserNode<'i>,
@@ -475,7 +429,7 @@ fn left_recursion<'a, 'i: 'a>(rules: HashMap<String, &'a ParserNode<'i>>) -> Vec
chain
)
},
- node.span.clone()
+ node.span
));
}
@@ -499,22 +453,22 @@ fn left_recursion<'a, 'i: 'a>(rules: HashMap<String, &'a ParserNode<'i>>) -> Vec
}
}
ParserExpr::Choice(ref lhs, ref rhs) => {
- check_expr(&lhs, rules, trace).or_else(|| check_expr(&rhs, rules, trace))
+ check_expr(lhs, rules, trace).or_else(|| check_expr(rhs, rules, trace))
}
- ParserExpr::Rep(ref node) => check_expr(&node, rules, trace),
- ParserExpr::RepOnce(ref node) => check_expr(&node, rules, trace),
- ParserExpr::Opt(ref node) => check_expr(&node, rules, trace),
- ParserExpr::PosPred(ref node) => check_expr(&node, rules, trace),
- ParserExpr::NegPred(ref node) => check_expr(&node, rules, trace),
- ParserExpr::Push(ref node) => check_expr(&node, rules, trace),
+ ParserExpr::Rep(ref node) => check_expr(node, rules, trace),
+ ParserExpr::RepOnce(ref node) => check_expr(node, rules, trace),
+ ParserExpr::Opt(ref node) => check_expr(node, rules, trace),
+ ParserExpr::PosPred(ref node) => check_expr(node, rules, trace),
+ ParserExpr::NegPred(ref node) => check_expr(node, rules, trace),
+ ParserExpr::Push(ref node) => check_expr(node, rules, trace),
_ => None,
}
}
let mut errors = vec![];
- for (ref name, ref node) in &rules {
- let name = (*name).clone();
+ for (name, node) in &rules {
+ let name = name.clone();
if let Some(error) = check_expr(node, &rules, &mut vec![name]) {
errors.push(error);
diff --git a/vendor/pretty_assertions-0.7.2/.cargo-checksum.json b/vendor/pretty_assertions/.cargo-checksum.json
index 74431486b..74431486b 100644
--- a/vendor/pretty_assertions-0.7.2/.cargo-checksum.json
+++ b/vendor/pretty_assertions/.cargo-checksum.json
diff --git a/vendor/pretty_assertions-0.7.2/CHANGELOG.md b/vendor/pretty_assertions/CHANGELOG.md
index a5c81b75b..a5c81b75b 100644
--- a/vendor/pretty_assertions-0.7.2/CHANGELOG.md
+++ b/vendor/pretty_assertions/CHANGELOG.md
diff --git a/vendor/pretty_assertions-0.7.2/Cargo.lock b/vendor/pretty_assertions/Cargo.lock
index 8e433f023..8e433f023 100644
--- a/vendor/pretty_assertions-0.7.2/Cargo.lock
+++ b/vendor/pretty_assertions/Cargo.lock
diff --git a/vendor/pretty_assertions-0.7.2/Cargo.toml b/vendor/pretty_assertions/Cargo.toml
index 3f4660d5a..3f4660d5a 100644
--- a/vendor/pretty_assertions-0.7.2/Cargo.toml
+++ b/vendor/pretty_assertions/Cargo.toml
diff --git a/vendor/pretty_assertions-0.7.2/LICENSE-APACHE b/vendor/pretty_assertions/LICENSE-APACHE
index 8f71f43fe..8f71f43fe 100644
--- a/vendor/pretty_assertions-0.7.2/LICENSE-APACHE
+++ b/vendor/pretty_assertions/LICENSE-APACHE
diff --git a/vendor/pretty_assertions-0.7.2/LICENSE-MIT b/vendor/pretty_assertions/LICENSE-MIT
index 48b7653f4..48b7653f4 100644
--- a/vendor/pretty_assertions-0.7.2/LICENSE-MIT
+++ b/vendor/pretty_assertions/LICENSE-MIT
diff --git a/vendor/pretty_assertions-0.7.2/README.md b/vendor/pretty_assertions/README.md
index cc9a6ef74..cc9a6ef74 100644
--- a/vendor/pretty_assertions-0.7.2/README.md
+++ b/vendor/pretty_assertions/README.md
diff --git a/vendor/pretty_assertions-0.7.2/examples/pretty_assertion.png b/vendor/pretty_assertions/examples/pretty_assertion.png
index 1e5b645f0..1e5b645f0 100644
--- a/vendor/pretty_assertions-0.7.2/examples/pretty_assertion.png
+++ b/vendor/pretty_assertions/examples/pretty_assertion.png
Binary files differ
diff --git a/vendor/pretty_assertions-0.7.2/examples/pretty_assertion.rs b/vendor/pretty_assertions/examples/pretty_assertion.rs
index 63246c6d7..63246c6d7 100644
--- a/vendor/pretty_assertions-0.7.2/examples/pretty_assertion.rs
+++ b/vendor/pretty_assertions/examples/pretty_assertion.rs
diff --git a/vendor/pretty_assertions-0.7.2/examples/pretty_assertion_v0_6_1.png b/vendor/pretty_assertions/examples/pretty_assertion_v0_6_1.png
index dc192d081..dc192d081 100644
--- a/vendor/pretty_assertions-0.7.2/examples/pretty_assertion_v0_6_1.png
+++ b/vendor/pretty_assertions/examples/pretty_assertion_v0_6_1.png
Binary files differ
diff --git a/vendor/pretty_assertions-0.7.2/examples/standard_assertion.png b/vendor/pretty_assertions/examples/standard_assertion.png
index 03ea059b7..03ea059b7 100644
--- a/vendor/pretty_assertions-0.7.2/examples/standard_assertion.png
+++ b/vendor/pretty_assertions/examples/standard_assertion.png
Binary files differ
diff --git a/vendor/pretty_assertions-0.7.2/examples/standard_assertion.rs b/vendor/pretty_assertions/examples/standard_assertion.rs
index fddd512f4..fddd512f4 100644
--- a/vendor/pretty_assertions-0.7.2/examples/standard_assertion.rs
+++ b/vendor/pretty_assertions/examples/standard_assertion.rs
diff --git a/vendor/pretty_assertions-0.7.2/scripts/check b/vendor/pretty_assertions/scripts/check
index 43fb3a9b3..43fb3a9b3 100755
--- a/vendor/pretty_assertions-0.7.2/scripts/check
+++ b/vendor/pretty_assertions/scripts/check
diff --git a/vendor/pretty_assertions-0.7.2/scripts/install b/vendor/pretty_assertions/scripts/install
index 92577640c..92577640c 100755
--- a/vendor/pretty_assertions-0.7.2/scripts/install
+++ b/vendor/pretty_assertions/scripts/install
diff --git a/vendor/pretty_assertions-0.7.2/scripts/publish b/vendor/pretty_assertions/scripts/publish
index e904f03eb..e904f03eb 100755
--- a/vendor/pretty_assertions-0.7.2/scripts/publish
+++ b/vendor/pretty_assertions/scripts/publish
diff --git a/vendor/pretty_assertions-0.7.2/src/lib.rs b/vendor/pretty_assertions/src/lib.rs
index 5c1787533..5c1787533 100644
--- a/vendor/pretty_assertions-0.7.2/src/lib.rs
+++ b/vendor/pretty_assertions/src/lib.rs
diff --git a/vendor/pretty_assertions-0.7.2/src/printer.rs b/vendor/pretty_assertions/src/printer.rs
index 172b1ed6c..172b1ed6c 100644
--- a/vendor/pretty_assertions-0.7.2/src/printer.rs
+++ b/vendor/pretty_assertions/src/printer.rs
diff --git a/vendor/proc-macro2/.cargo-checksum.json b/vendor/proc-macro2/.cargo-checksum.json
index 00ef04da4..b20fcaba3 100644
--- a/vendor/proc-macro2/.cargo-checksum.json
+++ b/vendor/proc-macro2/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"d6809d3069ce4c5e92828c6e49100a684c37f55e4d2d42bbe02362e0cd0297d7","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"0c17148c1957c3f721d99fc99aedaefee5f2f1ba7e2336a289b02f91609099fb","build.rs":"2c6ddbeeb1700b8dba3689185a535c672dc43e9d61b54f835cf4f3cc163b4afc","src/detection.rs":"12821bd715999c994fc1c8e1b68e52e1d64677290d803c53ad096ab17c9959fb","src/fallback.rs":"21f3f0f552db6fbec0cde8c056a2c722a3c88302b1519d08a3bfe341f2a62055","src/lib.rs":"ed7b36e5b3a35852936a4d1121704ee249011379b582cd0409e1ce08fae25c24","src/marker.rs":"87fce2d0357f5b7998b6d9dfb064f4a0cbc9dabb19e33d4b514a446243ebe2e8","src/parse.rs":"44a6fdec0332de7b8c083530294d3dc0aadb626a0739fd07a16a1ec48473a99d","src/wrapper.rs":"a0ba0eadd7f30842049bd9f4dca9182f2e4f7e2a09d394959bcd48c1d752a795","tests/comments.rs":"065132797580744767b7a854d5467757bd3433a990957f8dbccdfa779bfb275f","tests/features.rs":"a86deb8644992a4eb64d9fd493eff16f9cf9c5cb6ade3a634ce0c990cf87d559","tests/marker.rs":"cb6d776eba6a238d726b0f531883adf41957e06f2717ee8a069821c81e7081d6","tests/test.rs":"15783299f85ecccb51acd6cc95087077eccfecddce1208e56ad5dabf74d3f50a","tests/test_fmt.rs":"9357769945784354909259084ec8b34d2aa52081dd3967cac6dae3a5e3df3bc0"},"package":"dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"} \ No newline at end of file
+{"files":{"Cargo.toml":"070b0704e5cdbac330b9cecee44e488a40b6daf6161215e4457bdfc3e7e9bf94","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"0c17148c1957c3f721d99fc99aedaefee5f2f1ba7e2336a289b02f91609099fb","build.rs":"275f7a9ee0b9eff972124951de544ae17ee3e698a4e89b0f0393b334344f5e30","src/detection.rs":"ed9a5f9a979ab01247d7a68eeb1afa3c13209334c5bfff0f9289cb07e5bb4e8b","src/fallback.rs":"a9e6fa159d6a111a231fa9367d54859103e9d49f6662397baea951b5f3e7e983","src/lib.rs":"81865a868ef697987cafef5eb9512d3109da373456eead2a36c22d44e769c947","src/marker.rs":"344a8394f06a1d43355b514920e7e3c0c6dce507be767e3a590bbe3552edd110","src/parse.rs":"637a9fe6e3e21c36fa411b70674f617743fe0129787c17a559e78f86418d0da4","src/rcvec.rs":"49b6784c6ca5f32573cd8a83758b485d8acbfa126e5fb516ae439e429ef4c144","src/wrapper.rs":"8ea825cdac628570719a258419fcffd1c9d2ca1ca5e2fbbbf283dd9cc6695910","tests/comments.rs":"31115b3a56c83d93eef2fb4c9566bf4543e302560732986161b98aef504785ed","tests/features.rs":"a86deb8644992a4eb64d9fd493eff16f9cf9c5cb6ade3a634ce0c990cf87d559","tests/marker.rs":"cb6d776eba6a238d726b0f531883adf41957e06f2717ee8a069821c81e7081d6","tests/test.rs":"d7f21088314d1df25447fdc0a32feffae26d4d637e3ce68e23c0190060cb5652","tests/test_fmt.rs":"9357769945784354909259084ec8b34d2aa52081dd3967cac6dae3a5e3df3bc0"},"package":"5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725"} \ No newline at end of file
diff --git a/vendor/proc-macro2/Cargo.toml b/vendor/proc-macro2/Cargo.toml
index 2dabf8994..1bda7e36d 100644
--- a/vendor/proc-macro2/Cargo.toml
+++ b/vendor/proc-macro2/Cargo.toml
@@ -13,19 +13,19 @@
edition = "2018"
rust-version = "1.31"
name = "proc-macro2"
-version = "1.0.40"
+version = "1.0.47"
authors = [
"David Tolnay <dtolnay@gmail.com>",
"Alex Crichton <alex@alexcrichton.com>",
]
autobenches = false
-description = """
-A substitute implementation of the compiler's `proc_macro` API to decouple
-token-based libraries from the procedural macro use case.
-"""
+description = "A substitute implementation of the compiler's `proc_macro` API to decouple token-based libraries from the procedural macro use case."
documentation = "https://docs.rs/proc-macro2"
readme = "README.md"
-keywords = ["macros"]
+keywords = [
+ "macros",
+ "syn",
+]
categories = ["development-tools::procedural-macro-helpers"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/proc-macro2"
diff --git a/vendor/proc-macro2/build.rs b/vendor/proc-macro2/build.rs
index 38404967d..b69d813f0 100644
--- a/vendor/proc-macro2/build.rs
+++ b/vendor/proc-macro2/build.rs
@@ -111,7 +111,10 @@ fn main() {
println!("cargo:rustc-cfg=wrap_proc_macro");
}
- if version.nightly && feature_allowed("proc_macro_span") {
+ if version.nightly
+ && feature_allowed("proc_macro_span")
+ && feature_allowed("proc_macro_span_shrink")
+ {
println!("cargo:rustc-cfg=proc_macro_span");
}
diff --git a/vendor/proc-macro2/src/detection.rs b/vendor/proc-macro2/src/detection.rs
index d139b7365..beba7b237 100644
--- a/vendor/proc-macro2/src/detection.rs
+++ b/vendor/proc-macro2/src/detection.rs
@@ -1,4 +1,4 @@
-use std::sync::atomic::{AtomicUsize, Ordering};
+use core::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Once;
static WORKS: AtomicUsize = AtomicUsize::new(0);
diff --git a/vendor/proc-macro2/src/fallback.rs b/vendor/proc-macro2/src/fallback.rs
index 6afa790f8..fe4f248d3 100644
--- a/vendor/proc-macro2/src/fallback.rs
+++ b/vendor/proc-macro2/src/fallback.rs
@@ -1,18 +1,19 @@
use crate::parse::{self, Cursor};
+use crate::rcvec::{RcVec, RcVecBuilder, RcVecIntoIter, RcVecMut};
use crate::{Delimiter, Spacing, TokenTree};
#[cfg(span_locations)]
-use std::cell::RefCell;
+use core::cell::RefCell;
#[cfg(span_locations)]
-use std::cmp;
-use std::fmt::{self, Debug, Display, Write};
-use std::iter::FromIterator;
-use std::mem;
-use std::ops::RangeBounds;
+use core::cmp;
+use core::fmt::{self, Debug, Display, Write};
+use core::iter::FromIterator;
+use core::mem::ManuallyDrop;
+use core::ops::RangeBounds;
+use core::ptr;
+use core::str::FromStr;
#[cfg(procmacro2_semver_exempt)]
use std::path::Path;
use std::path::PathBuf;
-use std::str::FromStr;
-use std::vec;
/// Force use of proc-macro2's fallback implementation of the API for now, even
/// if the compiler's implementation is available.
@@ -30,7 +31,7 @@ pub fn unforce() {
#[derive(Clone)]
pub(crate) struct TokenStream {
- inner: Vec<TokenTree>,
+ inner: RcVec<TokenTree>,
}
#[derive(Debug)]
@@ -52,71 +53,69 @@ impl LexError {
impl TokenStream {
pub fn new() -> Self {
- TokenStream { inner: Vec::new() }
+ TokenStream {
+ inner: RcVecBuilder::new().build(),
+ }
}
pub fn is_empty(&self) -> bool {
self.inner.len() == 0
}
- fn take_inner(&mut self) -> Vec<TokenTree> {
- mem::replace(&mut self.inner, Vec::new())
+ fn take_inner(self) -> RcVecBuilder<TokenTree> {
+ let nodrop = ManuallyDrop::new(self);
+ unsafe { ptr::read(&nodrop.inner) }.make_owned()
}
+}
- fn push_token(&mut self, token: TokenTree) {
- // https://github.com/dtolnay/proc-macro2/issues/235
- match token {
- #[cfg(not(no_bind_by_move_pattern_guard))]
- TokenTree::Literal(crate::Literal {
- #[cfg(wrap_proc_macro)]
- inner: crate::imp::Literal::Fallback(literal),
- #[cfg(not(wrap_proc_macro))]
- inner: literal,
- ..
- }) if literal.repr.starts_with('-') => {
- push_negative_literal(self, literal);
- }
- #[cfg(no_bind_by_move_pattern_guard)]
- TokenTree::Literal(crate::Literal {
- #[cfg(wrap_proc_macro)]
- inner: crate::imp::Literal::Fallback(literal),
- #[cfg(not(wrap_proc_macro))]
- inner: literal,
- ..
- }) => {
- if literal.repr.starts_with('-') {
- push_negative_literal(self, literal);
- } else {
- self.inner
- .push(TokenTree::Literal(crate::Literal::_new_stable(literal)));
- }
- }
- _ => self.inner.push(token),
+fn push_token_from_proc_macro(mut vec: RcVecMut<TokenTree>, token: TokenTree) {
+ // https://github.com/dtolnay/proc-macro2/issues/235
+ match token {
+ #[cfg(not(no_bind_by_move_pattern_guard))]
+ TokenTree::Literal(crate::Literal {
+ #[cfg(wrap_proc_macro)]
+ inner: crate::imp::Literal::Fallback(literal),
+ #[cfg(not(wrap_proc_macro))]
+ inner: literal,
+ ..
+ }) if literal.repr.starts_with('-') => {
+ push_negative_literal(vec, literal);
}
-
- #[cold]
- fn push_negative_literal(stream: &mut TokenStream, mut literal: Literal) {
- literal.repr.remove(0);
- let mut punct = crate::Punct::new('-', Spacing::Alone);
- punct.set_span(crate::Span::_new_stable(literal.span));
- stream.inner.push(TokenTree::Punct(punct));
- stream
- .inner
- .push(TokenTree::Literal(crate::Literal::_new_stable(literal)));
+ #[cfg(no_bind_by_move_pattern_guard)]
+ TokenTree::Literal(crate::Literal {
+ #[cfg(wrap_proc_macro)]
+ inner: crate::imp::Literal::Fallback(literal),
+ #[cfg(not(wrap_proc_macro))]
+ inner: literal,
+ ..
+ }) => {
+ if literal.repr.starts_with('-') {
+ push_negative_literal(vec, literal);
+ } else {
+ vec.push(TokenTree::Literal(crate::Literal::_new_stable(literal)));
+ }
}
+ _ => vec.push(token),
}
-}
-impl From<Vec<TokenTree>> for TokenStream {
- fn from(inner: Vec<TokenTree>) -> Self {
- TokenStream { inner }
+ #[cold]
+ fn push_negative_literal(mut vec: RcVecMut<TokenTree>, mut literal: Literal) {
+ literal.repr.remove(0);
+ let mut punct = crate::Punct::new('-', Spacing::Alone);
+ punct.set_span(crate::Span::_new_stable(literal.span));
+ vec.push(TokenTree::Punct(punct));
+ vec.push(TokenTree::Literal(crate::Literal::_new_stable(literal)));
}
}
// Nonrecursive to prevent stack overflow.
impl Drop for TokenStream {
fn drop(&mut self) {
- while let Some(token) = self.inner.pop() {
+ let mut inner = match self.inner.get_mut() {
+ Some(inner) => inner,
+ None => return,
+ };
+ while let Some(token) = inner.pop() {
let group = match token {
TokenTree::Group(group) => group.inner,
_ => continue,
@@ -126,8 +125,35 @@ impl Drop for TokenStream {
crate::imp::Group::Fallback(group) => group,
crate::imp::Group::Compiler(_) => continue,
};
- let mut group = group;
- self.inner.extend(group.stream.take_inner());
+ inner.extend(group.stream.take_inner());
+ }
+ }
+}
+
+pub(crate) struct TokenStreamBuilder {
+ inner: RcVecBuilder<TokenTree>,
+}
+
+impl TokenStreamBuilder {
+ pub fn new() -> Self {
+ TokenStreamBuilder {
+ inner: RcVecBuilder::new(),
+ }
+ }
+
+ pub fn with_capacity(cap: usize) -> Self {
+ TokenStreamBuilder {
+ inner: RcVecBuilder::with_capacity(cap),
+ }
+ }
+
+ pub fn push_token_from_parser(&mut self, tt: TokenTree) {
+ self.inner.push(tt);
+ }
+
+ pub fn build(self) -> TokenStream {
+ TokenStream {
+ inner: self.inner.build(),
}
}
}
@@ -156,7 +182,13 @@ impl FromStr for TokenStream {
fn from_str(src: &str) -> Result<TokenStream, LexError> {
// Create a dummy file & add it to the source map
- let cursor = get_cursor(src);
+ let mut cursor = get_cursor(src);
+
+ // Strip a byte order mark if present
+ const BYTE_ORDER_MARK: &str = "\u{feff}";
+ if cursor.starts_with(BYTE_ORDER_MARK) {
+ cursor = cursor.advance(BYTE_ORDER_MARK.len());
+ }
parse::token_stream(cursor)
}
@@ -220,9 +252,11 @@ impl From<TokenStream> for proc_macro::TokenStream {
impl From<TokenTree> for TokenStream {
fn from(tree: TokenTree) -> TokenStream {
- let mut stream = TokenStream::new();
- stream.push_token(tree);
- stream
+ let mut stream = RcVecBuilder::new();
+ push_token_from_proc_macro(stream.as_mut(), tree);
+ TokenStream {
+ inner: stream.build(),
+ }
}
}
@@ -236,35 +270,38 @@ impl FromIterator<TokenTree> for TokenStream {
impl FromIterator<TokenStream> for TokenStream {
fn from_iter<I: IntoIterator<Item = TokenStream>>(streams: I) -> Self {
- let mut v = Vec::new();
+ let mut v = RcVecBuilder::new();
- for mut stream in streams {
+ for stream in streams {
v.extend(stream.take_inner());
}
- TokenStream { inner: v }
+ TokenStream { inner: v.build() }
}
}
impl Extend<TokenTree> for TokenStream {
fn extend<I: IntoIterator<Item = TokenTree>>(&mut self, tokens: I) {
- tokens.into_iter().for_each(|token| self.push_token(token));
+ let mut vec = self.inner.make_mut();
+ tokens
+ .into_iter()
+ .for_each(|token| push_token_from_proc_macro(vec.as_mut(), token));
}
}
impl Extend<TokenStream> for TokenStream {
fn extend<I: IntoIterator<Item = TokenStream>>(&mut self, streams: I) {
- self.inner.extend(streams.into_iter().flatten());
+ self.inner.make_mut().extend(streams.into_iter().flatten());
}
}
-pub(crate) type TokenTreeIter = vec::IntoIter<TokenTree>;
+pub(crate) type TokenTreeIter = RcVecIntoIter<TokenTree>;
impl IntoIterator for TokenStream {
type Item = TokenTree;
type IntoIter = TokenTreeIter;
- fn into_iter(mut self) -> TokenTreeIter {
+ fn into_iter(self) -> TokenTreeIter {
self.take_inner().into_iter()
}
}
@@ -383,7 +420,7 @@ impl SourceMap {
fn add_file(&mut self, name: &str, src: &str) -> Span {
let (len, lines) = lines_offsets(src);
let lo = self.next_start_pos();
- // XXX(nika): Shouild we bother doing a checked cast or checked add here?
+ // XXX(nika): Should we bother doing a checked cast or checked add here?
let span = Span {
lo,
hi: lo + (len as u32),
@@ -481,6 +518,26 @@ impl Span {
})
}
+ #[cfg(procmacro2_semver_exempt)]
+ pub fn before(&self) -> Span {
+ Span {
+ #[cfg(span_locations)]
+ lo: self.lo,
+ #[cfg(span_locations)]
+ hi: self.lo,
+ }
+ }
+
+ #[cfg(procmacro2_semver_exempt)]
+ pub fn after(&self) -> Span {
+ Span {
+ #[cfg(span_locations)]
+ lo: self.hi,
+ #[cfg(span_locations)]
+ hi: self.hi,
+ }
+ }
+
#[cfg(not(span_locations))]
pub fn join(&self, _other: Span) -> Option<Span> {
Some(Span {})
diff --git a/vendor/proc-macro2/src/lib.rs b/vendor/proc-macro2/src/lib.rs
index 6adf71a19..3fda02d5c 100644
--- a/vendor/proc-macro2/src/lib.rs
+++ b/vendor/proc-macro2/src/lib.rs
@@ -86,8 +86,11 @@
//! a different thread.
// Proc-macro2 types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/proc-macro2/1.0.40")]
-#![cfg_attr(any(proc_macro_span, super_unstable), feature(proc_macro_span))]
+#![doc(html_root_url = "https://docs.rs/proc-macro2/1.0.47")]
+#![cfg_attr(
+ any(proc_macro_span, super_unstable),
+ feature(proc_macro_span, proc_macro_span_shrink)
+)]
#![cfg_attr(super_unstable, feature(proc_macro_def_site))]
#![cfg_attr(doc_cfg, feature(doc_cfg))]
#![allow(
@@ -120,6 +123,7 @@ extern crate proc_macro;
mod marker;
mod parse;
+mod rcvec;
#[cfg(wrap_proc_macro)]
mod detection;
@@ -136,15 +140,15 @@ use crate::fallback as imp;
mod imp;
use crate::marker::Marker;
-use std::cmp::Ordering;
+use core::cmp::Ordering;
+use core::fmt::{self, Debug, Display};
+use core::hash::{Hash, Hasher};
+use core::iter::FromIterator;
+use core::ops::RangeBounds;
+use core::str::FromStr;
use std::error::Error;
-use std::fmt::{self, Debug, Display};
-use std::hash::{Hash, Hasher};
-use std::iter::FromIterator;
-use std::ops::RangeBounds;
#[cfg(procmacro2_semver_exempt)]
use std::path::PathBuf;
-use std::str::FromStr;
/// An abstract stream of tokens, or more concretely a sequence of token trees.
///
@@ -508,6 +512,24 @@ impl Span {
LineColumn { line, column }
}
+ /// Creates an empty span pointing to directly before this span.
+ ///
+ /// This method is semver exempt and not exposed by default.
+ #[cfg(all(procmacro2_semver_exempt, any(not(wrap_proc_macro), super_unstable)))]
+ #[cfg_attr(doc_cfg, doc(cfg(procmacro2_semver_exempt)))]
+ pub fn before(&self) -> Span {
+ Span::_new(self.inner.before())
+ }
+
+ /// Creates an empty span pointing to directly after this span.
+ ///
+ /// This method is semver exempt and not exposed by default.
+ #[cfg(all(procmacro2_semver_exempt, any(not(wrap_proc_macro), super_unstable)))]
+ #[cfg_attr(doc_cfg, doc(cfg(procmacro2_semver_exempt)))]
+ pub fn after(&self) -> Span {
+ Span::_new(self.inner.after())
+ }
+
/// Create a new span encompassing `self` and `other`.
///
/// Returns `None` if `self` and `other` are from different files.
@@ -1128,9 +1150,9 @@ impl Literal {
/// This constructor is similar to those like `Literal::i8_unsuffixed` where
/// the float's value is emitted directly into the token but no suffix is
/// used, so it may be inferred to be a `f64` later in the compiler.
- /// Literals created from negative numbers may not survive rountrips through
- /// `TokenStream` or strings and may be broken into two tokens (`-` and
- /// positive literal).
+ /// Literals created from negative numbers may not survive round-trips
+ /// through `TokenStream` or strings and may be broken into two tokens (`-`
+ /// and positive literal).
///
/// # Panics
///
@@ -1147,7 +1169,7 @@ impl Literal {
/// specified is the preceding part of the token and `f64` is the suffix of
/// the token. This token will always be inferred to be an `f64` in the
/// compiler. Literals created from negative numbers may not survive
- /// rountrips through `TokenStream` or strings and may be broken into two
+ /// round-trips through `TokenStream` or strings and may be broken into two
/// tokens (`-` and positive literal).
///
/// # Panics
@@ -1164,9 +1186,9 @@ impl Literal {
/// This constructor is similar to those like `Literal::i8_unsuffixed` where
/// the float's value is emitted directly into the token but no suffix is
/// used, so it may be inferred to be a `f64` later in the compiler.
- /// Literals created from negative numbers may not survive rountrips through
- /// `TokenStream` or strings and may be broken into two tokens (`-` and
- /// positive literal).
+ /// Literals created from negative numbers may not survive round-trips
+ /// through `TokenStream` or strings and may be broken into two tokens (`-`
+ /// and positive literal).
///
/// # Panics
///
@@ -1183,7 +1205,7 @@ impl Literal {
/// specified is the preceding part of the token and `f32` is the suffix of
/// the token. This token will always be inferred to be an `f32` in the
/// compiler. Literals created from negative numbers may not survive
- /// rountrips through `TokenStream` or strings and may be broken into two
+ /// round-trips through `TokenStream` or strings and may be broken into two
/// tokens (`-` and positive literal).
///
/// # Panics
@@ -1270,7 +1292,7 @@ impl Display for Literal {
pub mod token_stream {
use crate::marker::Marker;
use crate::{imp, TokenTree};
- use std::fmt::{self, Debug};
+ use core::fmt::{self, Debug};
pub use crate::TokenStream;
@@ -1290,11 +1312,16 @@ pub mod token_stream {
fn next(&mut self) -> Option<TokenTree> {
self.inner.next()
}
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.inner.size_hint()
+ }
}
impl Debug for IntoIter {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- Debug::fmt(&self.inner, f)
+ f.write_str("TokenStream ")?;
+ f.debug_list().entries(self.clone()).finish()
}
}
diff --git a/vendor/proc-macro2/src/marker.rs b/vendor/proc-macro2/src/marker.rs
index 58729baf4..59fd09630 100644
--- a/vendor/proc-macro2/src/marker.rs
+++ b/vendor/proc-macro2/src/marker.rs
@@ -1,4 +1,4 @@
-use std::marker::PhantomData;
+use core::marker::PhantomData;
use std::panic::{RefUnwindSafe, UnwindSafe};
use std::rc::Rc;
@@ -9,7 +9,7 @@ pub(crate) type Marker = PhantomData<ProcMacroAutoTraits>;
pub(crate) use self::value::*;
mod value {
- pub(crate) use std::marker::PhantomData as Marker;
+ pub(crate) use core::marker::PhantomData as Marker;
}
pub(crate) struct ProcMacroAutoTraits(Rc<()>);
diff --git a/vendor/proc-macro2/src/parse.rs b/vendor/proc-macro2/src/parse.rs
index f77213aa1..307e06508 100644
--- a/vendor/proc-macro2/src/parse.rs
+++ b/vendor/proc-macro2/src/parse.rs
@@ -1,9 +1,10 @@
use crate::fallback::{
is_ident_continue, is_ident_start, Group, LexError, Literal, Span, TokenStream,
+ TokenStreamBuilder,
};
use crate::{Delimiter, Punct, Spacing, TokenTree};
-use std::char;
-use std::str::{Bytes, CharIndices, Chars};
+use core::char;
+use core::str::{Bytes, CharIndices, Chars};
#[derive(Copy, Clone, Eq, PartialEq)]
pub(crate) struct Cursor<'a> {
@@ -13,7 +14,7 @@ pub(crate) struct Cursor<'a> {
}
impl<'a> Cursor<'a> {
- fn advance(&self, bytes: usize) -> Cursor<'a> {
+ pub fn advance(&self, bytes: usize) -> Cursor<'a> {
let (_front, rest) = self.rest.split_at(bytes);
Cursor {
rest,
@@ -22,7 +23,7 @@ impl<'a> Cursor<'a> {
}
}
- fn starts_with(&self, s: &str) -> bool {
+ pub fn starts_with(&self, s: &str) -> bool {
self.rest.starts_with(s)
}
@@ -115,9 +116,9 @@ fn block_comment(input: Cursor) -> PResult<&str> {
return Err(Reject);
}
- let mut depth = 0;
+ let mut depth = 0usize;
let bytes = input.as_bytes();
- let mut i = 0;
+ let mut i = 0usize;
let upper = bytes.len() - 1;
while i < upper {
@@ -150,14 +151,13 @@ fn word_break(input: Cursor) -> Result<Cursor, Reject> {
}
pub(crate) fn token_stream(mut input: Cursor) -> Result<TokenStream, LexError> {
- let mut trees = Vec::new();
+ let mut trees = TokenStreamBuilder::new();
let mut stack = Vec::new();
loop {
input = skip_whitespace(input);
- if let Ok((rest, tt)) = doc_comment(input) {
- trees.extend(tt);
+ if let Ok((rest, ())) = doc_comment(input, &mut trees) {
input = rest;
continue;
}
@@ -168,7 +168,7 @@ pub(crate) fn token_stream(mut input: Cursor) -> Result<TokenStream, LexError> {
let first = match input.bytes().next() {
Some(first) => first,
None => match stack.last() {
- None => return Ok(TokenStream::from(trees)),
+ None => return Ok(trees.build()),
#[cfg(span_locations)]
Some((lo, _frame)) => {
return Err(LexError {
@@ -191,7 +191,7 @@ pub(crate) fn token_stream(mut input: Cursor) -> Result<TokenStream, LexError> {
#[cfg(span_locations)]
let frame = (lo, frame);
stack.push(frame);
- trees = Vec::new();
+ trees = TokenStreamBuilder::new();
} else if let Some(close_delimiter) = match first {
b')' => Some(Delimiter::Parenthesis),
b']' => Some(Delimiter::Bracket),
@@ -209,7 +209,7 @@ pub(crate) fn token_stream(mut input: Cursor) -> Result<TokenStream, LexError> {
return Err(lex_error(input));
}
input = input.advance(1);
- let mut g = Group::new(open_delimiter, TokenStream::from(trees));
+ let mut g = Group::new(open_delimiter, trees.build());
g.set_span(Span {
#[cfg(span_locations)]
lo,
@@ -217,7 +217,7 @@ pub(crate) fn token_stream(mut input: Cursor) -> Result<TokenStream, LexError> {
hi: input.off,
});
trees = outer;
- trees.push(TokenTree::Group(crate::Group::_new_stable(g)));
+ trees.push_token_from_parser(TokenTree::Group(crate::Group::_new_stable(g)));
} else {
let (rest, mut tt) = match leaf_token(input) {
Ok((rest, tt)) => (rest, tt),
@@ -229,7 +229,7 @@ pub(crate) fn token_stream(mut input: Cursor) -> Result<TokenStream, LexError> {
#[cfg(span_locations)]
hi: rest.off,
}));
- trees.push(tt);
+ trees.push_token_from_parser(tt);
input = rest;
}
}
@@ -283,8 +283,9 @@ fn ident_any(input: Cursor) -> PResult<crate::Ident> {
return Ok((rest, ident));
}
- if sym == "_" {
- return Err(Reject);
+ match sym {
+ "_" | "super" | "self" | "Self" | "crate" => return Err(Reject),
+ _ => {}
}
let ident = crate::Ident::_new_raw(sym, crate::Span::call_site());
@@ -786,7 +787,7 @@ fn punct_char(input: Cursor) -> PResult<char> {
}
}
-fn doc_comment(input: Cursor) -> PResult<Vec<TokenTree>> {
+fn doc_comment<'a>(input: Cursor<'a>, trees: &mut TokenStreamBuilder) -> PResult<'a, ()> {
#[cfg(span_locations)]
let lo = input.off;
let (rest, (comment, inner)) = doc_comment_contents(input)?;
@@ -806,25 +807,31 @@ fn doc_comment(input: Cursor) -> PResult<Vec<TokenTree>> {
scan_for_bare_cr = rest;
}
- let mut trees = Vec::new();
- trees.push(TokenTree::Punct(Punct::new('#', Spacing::Alone)));
+ let mut pound = Punct::new('#', Spacing::Alone);
+ pound.set_span(span);
+ trees.push_token_from_parser(TokenTree::Punct(pound));
+
if inner {
- trees.push(Punct::new('!', Spacing::Alone).into());
- }
- let mut stream = vec![
- TokenTree::Ident(crate::Ident::new("doc", span)),
- TokenTree::Punct(Punct::new('=', Spacing::Alone)),
- TokenTree::Literal(crate::Literal::string(comment)),
- ];
- for tt in &mut stream {
- tt.set_span(span);
- }
- let group = Group::new(Delimiter::Bracket, TokenStream::from(stream));
- trees.push(crate::Group::_new_stable(group).into());
- for tt in &mut trees {
- tt.set_span(span);
- }
- Ok((rest, trees))
+ let mut bang = Punct::new('!', Spacing::Alone);
+ bang.set_span(span);
+ trees.push_token_from_parser(TokenTree::Punct(bang));
+ }
+
+ let doc_ident = crate::Ident::new("doc", span);
+ let mut equal = Punct::new('=', Spacing::Alone);
+ equal.set_span(span);
+ let mut literal = crate::Literal::string(comment);
+ literal.set_span(span);
+ let mut bracketed = TokenStreamBuilder::with_capacity(3);
+ bracketed.push_token_from_parser(TokenTree::Ident(doc_ident));
+ bracketed.push_token_from_parser(TokenTree::Punct(equal));
+ bracketed.push_token_from_parser(TokenTree::Literal(literal));
+ let group = Group::new(Delimiter::Bracket, bracketed.build());
+ let mut group = crate::Group::_new_stable(group);
+ group.set_span(span);
+ trees.push_token_from_parser(TokenTree::Group(group));
+
+ Ok((rest, ()))
}
fn doc_comment_contents(input: Cursor) -> PResult<(&str, bool)> {
diff --git a/vendor/proc-macro2/src/rcvec.rs b/vendor/proc-macro2/src/rcvec.rs
new file mode 100644
index 000000000..86ca7d808
--- /dev/null
+++ b/vendor/proc-macro2/src/rcvec.rs
@@ -0,0 +1,142 @@
+use core::mem;
+use core::slice;
+use std::rc::Rc;
+use std::vec;
+
+pub(crate) struct RcVec<T> {
+ inner: Rc<Vec<T>>,
+}
+
+pub(crate) struct RcVecBuilder<T> {
+ inner: Vec<T>,
+}
+
+pub(crate) struct RcVecMut<'a, T> {
+ inner: &'a mut Vec<T>,
+}
+
+#[derive(Clone)]
+pub(crate) struct RcVecIntoIter<T> {
+ inner: vec::IntoIter<T>,
+}
+
+impl<T> RcVec<T> {
+ pub fn is_empty(&self) -> bool {
+ self.inner.is_empty()
+ }
+
+ pub fn len(&self) -> usize {
+ self.inner.len()
+ }
+
+ pub fn iter(&self) -> slice::Iter<T> {
+ self.inner.iter()
+ }
+
+ pub fn make_mut(&mut self) -> RcVecMut<T>
+ where
+ T: Clone,
+ {
+ RcVecMut {
+ inner: Rc::make_mut(&mut self.inner),
+ }
+ }
+
+ pub fn get_mut(&mut self) -> Option<RcVecMut<T>> {
+ let inner = Rc::get_mut(&mut self.inner)?;
+ Some(RcVecMut { inner })
+ }
+
+ pub fn make_owned(mut self) -> RcVecBuilder<T>
+ where
+ T: Clone,
+ {
+ let vec = if let Some(owned) = Rc::get_mut(&mut self.inner) {
+ mem::replace(owned, Vec::new())
+ } else {
+ Vec::clone(&self.inner)
+ };
+ RcVecBuilder { inner: vec }
+ }
+}
+
+impl<T> RcVecBuilder<T> {
+ pub fn new() -> Self {
+ RcVecBuilder { inner: Vec::new() }
+ }
+
+ pub fn with_capacity(cap: usize) -> Self {
+ RcVecBuilder {
+ inner: Vec::with_capacity(cap),
+ }
+ }
+
+ pub fn push(&mut self, element: T) {
+ self.inner.push(element);
+ }
+
+ pub fn extend(&mut self, iter: impl IntoIterator<Item = T>) {
+ self.inner.extend(iter);
+ }
+
+ pub fn as_mut(&mut self) -> RcVecMut<T> {
+ RcVecMut {
+ inner: &mut self.inner,
+ }
+ }
+
+ pub fn build(self) -> RcVec<T> {
+ RcVec {
+ inner: Rc::new(self.inner),
+ }
+ }
+}
+
+impl<'a, T> RcVecMut<'a, T> {
+ pub fn push(&mut self, element: T) {
+ self.inner.push(element);
+ }
+
+ pub fn extend(&mut self, iter: impl IntoIterator<Item = T>) {
+ self.inner.extend(iter);
+ }
+
+ pub fn pop(&mut self) -> Option<T> {
+ self.inner.pop()
+ }
+
+ pub fn as_mut(&mut self) -> RcVecMut<T> {
+ RcVecMut { inner: self.inner }
+ }
+}
+
+impl<T> Clone for RcVec<T> {
+ fn clone(&self) -> Self {
+ RcVec {
+ inner: Rc::clone(&self.inner),
+ }
+ }
+}
+
+impl<T> IntoIterator for RcVecBuilder<T> {
+ type Item = T;
+ type IntoIter = RcVecIntoIter<T>;
+
+ fn into_iter(self) -> Self::IntoIter {
+ RcVecIntoIter {
+ inner: self.inner.into_iter(),
+ }
+ }
+}
+
+impl<T> Iterator for RcVecIntoIter<T> {
+ type Item = T;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ self.inner.next()
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.inner.size_hint()
+ }
+}
diff --git a/vendor/proc-macro2/src/wrapper.rs b/vendor/proc-macro2/src/wrapper.rs
index 750e156ff..47d149473 100644
--- a/vendor/proc-macro2/src/wrapper.rs
+++ b/vendor/proc-macro2/src/wrapper.rs
@@ -1,12 +1,12 @@
use crate::detection::inside_proc_macro;
use crate::{fallback, Delimiter, Punct, Spacing, TokenTree};
-use std::fmt::{self, Debug, Display};
-use std::iter::FromIterator;
-use std::ops::RangeBounds;
+use core::fmt::{self, Debug, Display};
+use core::iter::FromIterator;
+use core::ops::RangeBounds;
+use core::str::FromStr;
use std::panic;
#[cfg(super_unstable)]
use std::path::PathBuf;
-use std::str::FromStr;
#[derive(Clone)]
pub(crate) enum TokenStream {
@@ -350,12 +350,6 @@ impl Iterator for TokenTreeIter {
}
}
-impl Debug for TokenTreeIter {
- fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
- f.debug_struct("TokenTreeIter").finish()
- }
-}
-
#[derive(Clone, PartialEq, Eq)]
#[cfg(super_unstable)]
pub(crate) enum SourceFile {
@@ -511,6 +505,22 @@ impl Span {
}
}
+ #[cfg(super_unstable)]
+ pub fn before(&self) -> Span {
+ match self {
+ Span::Compiler(s) => Span::Compiler(s.before()),
+ Span::Fallback(s) => Span::Fallback(s.before()),
+ }
+ }
+
+ #[cfg(super_unstable)]
+ pub fn after(&self) -> Span {
+ match self {
+ Span::Compiler(s) => Span::Compiler(s.after()),
+ Span::Fallback(s) => Span::Fallback(s.after()),
+ }
+ }
+
pub fn join(&self, other: Span) -> Option<Span> {
let ret = match (self, other) {
#[cfg(proc_macro_span)]
diff --git a/vendor/proc-macro2/tests/comments.rs b/vendor/proc-macro2/tests/comments.rs
index 71741080c..4f7236dea 100644
--- a/vendor/proc-macro2/tests/comments.rs
+++ b/vendor/proc-macro2/tests/comments.rs
@@ -1,3 +1,5 @@
+#![allow(clippy::assertions_on_result_states)]
+
use proc_macro2::{Delimiter, Literal, Spacing, TokenStream, TokenTree};
// #[doc = "..."] -> "..."
diff --git a/vendor/proc-macro2/tests/test.rs b/vendor/proc-macro2/tests/test.rs
index 86031db6a..8f5624dbc 100644
--- a/vendor/proc-macro2/tests/test.rs
+++ b/vendor/proc-macro2/tests/test.rs
@@ -1,4 +1,4 @@
-#![allow(clippy::non_ascii_literal)]
+#![allow(clippy::assertions_on_result_states, clippy::non_ascii_literal)]
use proc_macro2::{Ident, Literal, Punct, Spacing, Span, TokenStream, TokenTree};
use std::panic;
@@ -548,6 +548,13 @@ fn default_tokenstream_is_empty() {
}
#[test]
+fn tokenstream_size_hint() {
+ let tokens = "a b (c d) e".parse::<TokenStream>().unwrap();
+
+ assert_eq!(tokens.into_iter().size_hint(), (4, Some(4)));
+}
+
+#[test]
fn tuple_indexing() {
// This behavior may change depending on https://github.com/rust-lang/rust/pull/71322
let mut tokens = "tuple.0.0".parse::<TokenStream>().unwrap().into_iter();
@@ -623,3 +630,16 @@ fn check_spans_internal(ts: TokenStream, lines: &mut &[(usize, usize, usize, usi
}
}
}
+
+#[test]
+fn byte_order_mark() {
+ let string = "\u{feff}foo";
+ let tokens = string.parse::<TokenStream>().unwrap();
+ match tokens.into_iter().next().unwrap() {
+ TokenTree::Ident(ident) => assert_eq!(ident, "foo"),
+ _ => unreachable!(),
+ }
+
+ let string = "foo\u{feff}";
+ string.parse::<TokenStream>().unwrap_err();
+}
diff --git a/vendor/quick-error-1.2.3/.cargo-checksum.json b/vendor/quick-error-1.2.3/.cargo-checksum.json
deleted file mode 100644
index 5f19af61c..000000000
--- a/vendor/quick-error-1.2.3/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.lock":"b88df71c076815e9922973e1f54af221486c3a83d5be2c1af9ca650a8f8f526f","Cargo.toml":"1f24b567c7f10b4ec44f5baf033d27da39f659c09df0e8a057437d10ecdd551a","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"058f01fe181608d027fcde7e528fc03ea3cf90f30903c407644b0a9bbc54f500","README.rst":"8bd690e0089d4c38eb71f1327f5144741009f4b2f49f0b16f2547f528171e2e6","bulk.yaml":"17c2548388e0cd3a63473021a2f1e4ddedee082d79d9167cb31ad06a1890d3fc","examples/context.rs":"b9be9a4ca021a1f0ba659932bfc0cf891728bfaea49d48a8be183644c492515b","src/lib.rs":"a02c8a3c40fa1dcee8285b9c238d40cb3078cf4dded1c972fa6361a485d1667f","vagga.yaml":"b01ad1fd3aa25de2439c0f7a437c6517808ba3a7eeeb0363eb209f08e326cc8e"},"package":"a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"} \ No newline at end of file
diff --git a/vendor/quick-error-1.2.3/Cargo.lock b/vendor/quick-error-1.2.3/Cargo.lock
deleted file mode 100644
index da1963ecf..000000000
--- a/vendor/quick-error-1.2.3/Cargo.lock
+++ /dev/null
@@ -1,6 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-[[package]]
-name = "quick-error"
-version = "1.2.3"
-
diff --git a/vendor/quick-error-1.2.3/Cargo.toml b/vendor/quick-error-1.2.3/Cargo.toml
deleted file mode 100644
index b5d5f60b1..000000000
--- a/vendor/quick-error-1.2.3/Cargo.toml
+++ /dev/null
@@ -1,23 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-name = "quick-error"
-version = "1.2.3"
-authors = ["Paul Colomiets <paul@colomiets.name>", "Colin Kiegel <kiegel@gmx.de>"]
-description = " A macro which makes error types pleasant to write.\n"
-homepage = "http://github.com/tailhook/quick-error"
-documentation = "http://docs.rs/quick-error"
-keywords = ["macro", "error", "type", "enum"]
-categories = ["rust-patterns"]
-license = "MIT/Apache-2.0"
-repository = "http://github.com/tailhook/quick-error"
diff --git a/vendor/quick-error-1.2.3/LICENSE-APACHE b/vendor/quick-error-1.2.3/LICENSE-APACHE
deleted file mode 100644
index 8f71f43fe..000000000
--- a/vendor/quick-error-1.2.3/LICENSE-APACHE
+++ /dev/null
@@ -1,202 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "{}"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright {yyyy} {name of copyright owner}
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
diff --git a/vendor/quick-error-1.2.3/LICENSE-MIT b/vendor/quick-error-1.2.3/LICENSE-MIT
deleted file mode 100644
index 14f715b80..000000000
--- a/vendor/quick-error-1.2.3/LICENSE-MIT
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2015 The quick-error Developers
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/vendor/quick-error-1.2.3/README.rst b/vendor/quick-error-1.2.3/README.rst
deleted file mode 100644
index e54c055c4..000000000
--- a/vendor/quick-error-1.2.3/README.rst
+++ /dev/null
@@ -1,66 +0,0 @@
-===========
-Quick Error
-===========
-
-:Status: production-ready
-:Documentation: http://tailhook.github.io/quick-error/
-
-A macro which makes error types pleasant to write.
-
-Features:
-
-* Define enum type with arbitrary parameters
-* Concise notation of ``Display`` and ``Error`` traits
-* Full control of ``Display`` and ``Error`` trait implementation
-* Any number of ``From`` traits
-* Support for all enum-variants ``Unit``, ``Tuple`` and ``Struct``
-
-Here is the comprehensive example:
-
-.. code-block:: rust
-
- quick_error! {
- #[derive(Debug)]
- pub enum IoWrapper {
- Io(err: io::Error) {
- from()
- display("I/O error: {}", err)
- cause(err)
- }
- Other(descr: &'static str) {
- display("Error {}", descr)
- }
- IoAt { place: &'static str, err: io::Error } {
- cause(err)
- display(me) -> ("io error at {}: {}", place, err)
- from(s: String) -> {
- place: "some string",
- err: io::Error::new(io::ErrorKind::Other, s)
- }
- }
- Discard {
- from(&'static str)
- }
- }
- }
-
-=======
-License
-=======
-
-Licensed under either of
-
- * Apache License, Version 2.0, (./LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- * MIT license (./LICENSE-MIT or http://opensource.org/licenses/MIT)
-
-at your option.
-
-------------
-Contribution
-------------
-
-Unless you explicitly state otherwise, any contribution intentionally
-submitted for inclusion in the work by you, as defined in the Apache-2.0
-license, shall be dual licensed as above, without any additional terms or
-conditions.
-
diff --git a/vendor/quick-error-1.2.3/bulk.yaml b/vendor/quick-error-1.2.3/bulk.yaml
deleted file mode 100644
index cdb9763b6..000000000
--- a/vendor/quick-error-1.2.3/bulk.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-minimum-bulk: v0.4.5
-
-versions:
-
-- file: Cargo.toml
- block-start: ^\[package\]
- block-end: ^\[.*\]
- regex: ^version\s*=\s*"(\S+)"
diff --git a/vendor/quick-error-1.2.3/examples/context.rs b/vendor/quick-error-1.2.3/examples/context.rs
deleted file mode 100644
index 334700a03..000000000
--- a/vendor/quick-error-1.2.3/examples/context.rs
+++ /dev/null
@@ -1,48 +0,0 @@
-#[macro_use(quick_error)] extern crate quick_error;
-
-use std::io::{self, stderr, Read, Write};
-use std::fs::File;
-use std::env;
-use std::num::ParseIntError;
-use std::path::{Path, PathBuf};
-
-use quick_error::ResultExt;
-
-quick_error! {
- #[derive(Debug)]
- pub enum Error {
- NoFileName {
- description("no file name specified")
- }
- Io(err: io::Error, path: PathBuf) {
- display("could not read file {:?}: {}", path, err)
- context(path: &'a Path, err: io::Error)
- -> (err, path.to_path_buf())
- }
- Parse(err: ParseIntError, path: PathBuf) {
- display("could not parse file {:?}: {}", path, err)
- context(path: &'a Path, err: ParseIntError)
- -> (err, path.to_path_buf())
- }
- }
-}
-
-fn parse_file() -> Result<u64, Error> {
- let fname = try!(env::args().skip(1).next().ok_or(Error::NoFileName));
- let fname = Path::new(&fname);
- let mut file = try!(File::open(fname).context(fname));
- let mut buf = String::new();
- try!(file.read_to_string(&mut buf).context(fname));
- Ok(try!(buf.parse().context(fname)))
-}
-
-fn main() {
- match parse_file() {
- Ok(val) => {
- println!("Read: {}", val);
- }
- Err(e) => {
- writeln!(&mut stderr(), "Error: {}", e).ok();
- }
- }
-}
diff --git a/vendor/quick-error-1.2.3/src/lib.rs b/vendor/quick-error-1.2.3/src/lib.rs
deleted file mode 100644
index 17fc455d4..000000000
--- a/vendor/quick-error-1.2.3/src/lib.rs
+++ /dev/null
@@ -1,1262 +0,0 @@
-#![warn(missing_docs)]
-//! A macro which makes errors easy to write
-//!
-//! Minimum type is like this:
-//!
-//! ```rust
-//! #[macro_use] extern crate quick_error;
-//! # fn main() {}
-//!
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum SomeError {
-//! Variant1 {}
-//! }
-//! }
-//! ```
-//! Both ``pub`` and non-public types may be declared, and all meta attributes
-//! (such as ``#[derive(Debug)]``) are forwarded as is. The `Debug` must be
-//! implemented (but you may do that yourself if you like). The documentation
-//! comments ``/// something`` (as well as other meta attrbiutes) on variants
-//! are allowed.
-//!
-//! # Allowed Syntax
-//!
-//! You may add arbitrary parameters to any struct variant:
-//!
-//! ```rust
-//! # #[macro_use] extern crate quick_error;
-//! # fn main() {}
-//! #
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum SomeError {
-//! /// IO Error
-//! Io(err: std::io::Error) {}
-//! /// Utf8 Error
-//! Utf8(err: std::str::Utf8Error) {}
-//! }
-//! }
-//! ```
-//!
-//! Note unlike in normal Enum declarations you declare names of fields (which
-//! are omitted from type). How they can be used is outlined below.
-//!
-//! Now you might have noticed trailing braces `{}`. They are used to define
-//! implementations. By default:
-//!
-//! * `Error::cause()` returns None (even if type wraps some value)
-//! * `Display` outputs debug representation
-//! * No `From` implementations are defined
-//!
-//! ```rust
-//! # #[macro_use] extern crate quick_error;
-//! # fn main() {}
-//! #
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum SomeError {
-//! Io(err: std::io::Error) {
-//! display("{}", err)
-//! }
-//! Utf8(err: std::str::Utf8Error) {
-//! display("utf8 error")
-//! }
-//! }
-//! }
-//! ```
-//!
-//! To change `cause` method to return some error, add `cause(value)`, for
-//! example:
-//!
-//! ```rust
-//! # #[macro_use] extern crate quick_error;
-//! # fn main() {}
-//! #
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum SomeError {
-//! Io(err: std::io::Error) {
-//! cause(err)
-//! }
-//! Utf8(err: std::str::Utf8Error) {
-//! display("utf8 error")
-//! }
-//! Other(err: Box<std::error::Error>) {
-//! cause(&**err)
-//! }
-//! }
-//! }
-//! ```
-//! Note you don't need to wrap value in `Some`, its implicit. In case you want
-//! `None` returned just omit the `cause`. You can't return `None`
-//! conditionally.
-//!
-//! To change how each clause is `Display`ed add `display(pattern,..args)`,
-//! for example:
-//!
-//! ```rust
-//! # #[macro_use] extern crate quick_error;
-//! # fn main() {}
-//! #
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum SomeError {
-//! Io(err: std::io::Error) {
-//! display("I/O error: {}", err)
-//! }
-//! Utf8(err: std::str::Utf8Error) {
-//! display("Utf8 error, valid up to {}", err.valid_up_to())
-//! }
-//! }
-//! }
-//! ```
-//!
-//! If you need a reference to the error when `Display`ing, you can instead use
-//! `display(x) -> (pattern, ..args)`, where `x` sets the name of the reference.
-//!
-//! ```rust
-//! # #[macro_use] extern crate quick_error;
-//! # fn main() {}
-//! #
-//! use std::error::Error; // put methods like `source()` of this trait into scope
-//!
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum SomeError {
-//! Io(err: std::io::Error) {
-//! display(x) -> ("I/O: {}", err)
-//! }
-//! Utf8(err: std::str::Utf8Error) {
-//! display(self_) -> ("UTF-8 error. Valid up to {}", err.valid_up_to())
-//! }
-//! }
-//! }
-//! ```
-//!
-//! To convert to the type from any other, use one of the three forms of
-//! `from` clause.
-//!
-//! For example, to convert simple wrapper use bare `from()`:
-//!
-//! ```rust
-//! # #[macro_use] extern crate quick_error;
-//! # fn main() {}
-//! #
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum SomeError {
-//! Io(err: std::io::Error) {
-//! from()
-//! }
-//! }
-//! }
-//! ```
-//!
-//! This implements ``From<io::Error>``.
-//!
-//! To convert to singleton enumeration type (discarding the value), use
-//! the `from(type)` form:
-//!
-//! ```rust
-//! # #[macro_use] extern crate quick_error;
-//! # fn main() {}
-//! #
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum SomeError {
-//! FormatError {
-//! from(std::fmt::Error)
-//! }
-//! }
-//! }
-//! ```
-//!
-//! And the most powerful form is `from(var: type) -> (arguments...)`. It
-//! might be used to convert to type with multiple arguments or for arbitrary
-//! value conversions:
-//!
-//! ```rust
-//! # #[macro_use] extern crate quick_error;
-//! # fn main() {}
-//! #
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum SomeError {
-//! FailedOperation(s: &'static str, errno: i32) {
-//! from(errno: i32) -> ("os error", errno)
-//! from(e: std::io::Error) -> ("io error", e.raw_os_error().unwrap())
-//! }
-//! /// Converts from both kinds of utf8 errors
-//! Utf8(err: std::str::Utf8Error) {
-//! from()
-//! from(err: std::string::FromUtf8Error) -> (err.utf8_error())
-//! }
-//! }
-//! }
-//! ```
-//! # Context
-//!
-//! Since quick-error 1.1 we also have a `context` declaration, which is
-//! similar to (the longest form of) `from`, but allows adding some context to
-//! the error. We need a longer example to demonstrate this:
-//!
-//! ```rust
-//! # #[macro_use] extern crate quick_error;
-//! # use std::io;
-//! # use std::fs::File;
-//! # use std::path::{Path, PathBuf};
-//! #
-//! use quick_error::ResultExt;
-//!
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum Error {
-//! File(filename: PathBuf, err: io::Error) {
-//! context(path: &'a Path, err: io::Error)
-//! -> (path.to_path_buf(), err)
-//! }
-//! }
-//! }
-//!
-//! fn openfile(path: &Path) -> Result<(), Error> {
-//! try!(File::open(path).context(path));
-//!
-//! // If we didn't have context, the line above would be written as;
-//! //
-//! // try!(File::open(path)
-//! // .map_err(|err| Error::File(path.to_path_buf(), err)));
-//!
-//! Ok(())
-//! }
-//!
-//! # fn main() {
-//! # openfile(Path::new("/etc/somefile")).ok();
-//! # }
-//! ```
-//!
-//! Each `context(a: A, b: B)` clause implements
-//! `From<Context<A, B>> for Error`. Which means multiple `context` clauses
-//! are a subject to the normal coherence rules. Unfortunately, we can't
-//! provide full support of generics for the context, but you may either use a
-//! lifetime `'a` for references or `AsRef<Type>` (the latter means `A:
-//! AsRef<Type>`, and `Type` must be concrete). It's also occasionally useful
-//! to use a tuple as a type of the first argument.
-//!
-//! You also need to `use quick_error::ResultExt` extension trait to get
-//! working `.context()` method.
-//!
-//! More info on context in [this article](http://bit.ly/1PsuxDt).
-//!
-//! All forms of `from`, `display`, `cause`, and `context`
-//! clauses can be combined and put in arbitrary order. Only `from` and
-//! `context` can be used multiple times in single variant of enumeration.
-//! Docstrings are also okay. Empty braces can be omitted as of quick_error
-//! 0.1.3.
-//!
-//! # Private Enums
-//!
-//! Since quick-error 1.2.0 we have a way to make a private enum that is
-//! wrapped by public structure:
-//!
-//! ```rust
-//! #[macro_use] extern crate quick_error;
-//! # fn main() {}
-//!
-//! quick_error! {
-//! #[derive(Debug)]
-//! pub enum PubError wraps ErrorEnum {
-//! Variant1 {}
-//! }
-//! }
-//! ```
-//!
-//! This generates data structures like this
-//!
-//! ```rust
-//!
-//! pub struct PubError(ErrorEnum);
-//!
-//! enum ErrorEnum {
-//! Variant1,
-//! }
-//!
-//! ```
-//!
-//! Which in turn allows you to export just `PubError` in your crate and keep
-//! actual enumeration private to the crate. This is useful to keep backwards
-//! compatibility for error types. Currently there is no shorcuts to define
-//! error constructors for the inner type, but we consider adding some in
-//! future versions.
-//!
-//! It's possible to declare internal enum as public too.
-//!
-//!
-
-
-/// Main macro that does all the work
-#[macro_export]
-macro_rules! quick_error {
-
- ( $(#[$meta:meta])*
- pub enum $name:ident { $($chunks:tt)* }
- ) => {
- quick_error!(SORT [pub enum $name $(#[$meta])* ]
- items [] buf []
- queue [ $($chunks)* ]);
- };
- ( $(#[$meta:meta])*
- enum $name:ident { $($chunks:tt)* }
- ) => {
- quick_error!(SORT [enum $name $(#[$meta])* ]
- items [] buf []
- queue [ $($chunks)* ]);
- };
-
- ( $(#[$meta:meta])*
- pub enum $name:ident wraps $enum_name:ident { $($chunks:tt)* }
- ) => {
- quick_error!(WRAPPER $enum_name [ pub struct ] $name $(#[$meta])*);
- quick_error!(SORT [enum $enum_name $(#[$meta])* ]
- items [] buf []
- queue [ $($chunks)* ]);
- };
-
- ( $(#[$meta:meta])*
- pub enum $name:ident wraps pub $enum_name:ident { $($chunks:tt)* }
- ) => {
- quick_error!(WRAPPER $enum_name [ pub struct ] $name $(#[$meta])*);
- quick_error!(SORT [pub enum $enum_name $(#[$meta])* ]
- items [] buf []
- queue [ $($chunks)* ]);
- };
- ( $(#[$meta:meta])*
- enum $name:ident wraps $enum_name:ident { $($chunks:tt)* }
- ) => {
- quick_error!(WRAPPER $enum_name [ struct ] $name $(#[$meta])*);
- quick_error!(SORT [enum $enum_name $(#[$meta])* ]
- items [] buf []
- queue [ $($chunks)* ]);
- };
-
- ( $(#[$meta:meta])*
- enum $name:ident wraps pub $enum_name:ident { $($chunks:tt)* }
- ) => {
- quick_error!(WRAPPER $enum_name [ struct ] $name $(#[$meta])*);
- quick_error!(SORT [pub enum $enum_name $(#[$meta])* ]
- items [] buf []
- queue [ $($chunks)* ]);
- };
-
-
- (
- WRAPPER $internal:ident [ $($strdef:tt)* ] $strname:ident
- $(#[$meta:meta])*
- ) => {
- $(#[$meta])*
- $($strdef)* $strname ( $internal );
-
- impl ::std::fmt::Display for $strname {
- fn fmt(&self, f: &mut ::std::fmt::Formatter)
- -> ::std::fmt::Result
- {
- ::std::fmt::Display::fmt(&self.0, f)
- }
- }
-
- impl From<$internal> for $strname {
- fn from(err: $internal) -> Self {
- $strname(err)
- }
- }
-
- impl ::std::error::Error for $strname {
- #[allow(deprecated)]
- fn cause(&self) -> Option<&::std::error::Error> {
- self.0.cause()
- }
- }
- };
-
- // Queue is empty, can do the work
- (SORT [enum $name:ident $( #[$meta:meta] )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [ ]
- queue [ ]
- ) => {
- quick_error!(ENUM_DEFINITION [enum $name $( #[$meta] )*]
- body []
- queue [$($( #[$imeta] )*
- => $iitem: $imode [$( $ivar: $ityp ),*] )*]
- );
- quick_error!(IMPLEMENTATIONS $name {$(
- $iitem: $imode [$(#[$imeta])*] [$( $ivar: $ityp ),*] {$( $ifuncs )*}
- )*});
- $(
- quick_error!(ERROR_CHECK $imode $($ifuncs)*);
- )*
- };
- (SORT [pub enum $name:ident $( #[$meta:meta] )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [ ]
- queue [ ]
- ) => {
- quick_error!(ENUM_DEFINITION [pub enum $name $( #[$meta] )*]
- body []
- queue [$($( #[$imeta] )*
- => $iitem: $imode [$( $ivar: $ityp ),*] )*]
- );
- quick_error!(IMPLEMENTATIONS $name {$(
- $iitem: $imode [$(#[$imeta])*] [$( $ivar: $ityp ),*] {$( $ifuncs )*}
- )*});
- $(
- quick_error!(ERROR_CHECK $imode $($ifuncs)*);
- )*
- };
- // Add meta to buffer
- (SORT [$( $def:tt )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [$( #[$bmeta:meta] )*]
- queue [ #[$qmeta:meta] $( $tail:tt )*]
- ) => {
- quick_error!(SORT [$( $def )*]
- items [$( $(#[$imeta])* => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*]
- buf [$( #[$bmeta] )* #[$qmeta] ]
- queue [$( $tail )*]);
- };
- // Add ident to buffer
- (SORT [$( $def:tt )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [$( #[$bmeta:meta] )*]
- queue [ $qitem:ident $( $tail:tt )*]
- ) => {
- quick_error!(SORT [$( $def )*]
- items [$( $(#[$imeta])*
- => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*]
- buf [$(#[$bmeta])* => $qitem : UNIT [ ] ]
- queue [$( $tail )*]);
- };
- // Flush buffer on meta after ident
- (SORT [$( $def:tt )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [$( #[$bmeta:meta] )*
- => $bitem:ident: $bmode:tt [$( $bvar:ident: $btyp:ty ),*] ]
- queue [ #[$qmeta:meta] $( $tail:tt )*]
- ) => {
- quick_error!(SORT [$( $def )*]
- enum [$( $(#[$emeta])* => $eitem $(( $($etyp),* ))* )*
- $(#[$bmeta])* => $bitem: $bmode $(( $($btyp),* ))*]
- items [$($( #[$imeta:meta] )*
- => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*
- $bitem: $bmode [$( $bvar:$btyp ),*] {} ]
- buf [ #[$qmeta] ]
- queue [$( $tail )*]);
- };
- // Add tuple enum-variant
- (SORT [$( $def:tt )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [$( #[$bmeta:meta] )* => $bitem:ident: UNIT [ ] ]
- queue [($( $qvar:ident: $qtyp:ty ),+) $( $tail:tt )*]
- ) => {
- quick_error!(SORT [$( $def )*]
- items [$( $(#[$imeta])* => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*]
- buf [$( #[$bmeta] )* => $bitem: TUPLE [$( $qvar:$qtyp ),*] ]
- queue [$( $tail )*]
- );
- };
- // Add struct enum-variant - e.g. { descr: &'static str }
- (SORT [$( $def:tt )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [$( #[$bmeta:meta] )* => $bitem:ident: UNIT [ ] ]
- queue [{ $( $qvar:ident: $qtyp:ty ),+} $( $tail:tt )*]
- ) => {
- quick_error!(SORT [$( $def )*]
- items [$( $(#[$imeta])* => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*]
- buf [$( #[$bmeta] )* => $bitem: STRUCT [$( $qvar:$qtyp ),*] ]
- queue [$( $tail )*]);
- };
- // Add struct enum-variant, with excess comma - e.g. { descr: &'static str, }
- (SORT [$( $def:tt )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [$( #[$bmeta:meta] )* => $bitem:ident: UNIT [ ] ]
- queue [{$( $qvar:ident: $qtyp:ty ),+ ,} $( $tail:tt )*]
- ) => {
- quick_error!(SORT [$( $def )*]
- items [$( $(#[$imeta])* => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*]
- buf [$( #[$bmeta] )* => $bitem: STRUCT [$( $qvar:$qtyp ),*] ]
- queue [$( $tail )*]);
- };
- // Add braces and flush always on braces
- (SORT [$( $def:tt )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [$( #[$bmeta:meta] )*
- => $bitem:ident: $bmode:tt [$( $bvar:ident: $btyp:ty ),*] ]
- queue [ {$( $qfuncs:tt )*} $( $tail:tt )*]
- ) => {
- quick_error!(SORT [$( $def )*]
- items [$( $(#[$imeta])* => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*
- $(#[$bmeta])* => $bitem: $bmode [$( $bvar:$btyp ),*] {$( $qfuncs )*} ]
- buf [ ]
- queue [$( $tail )*]);
- };
- // Flush buffer on double ident
- (SORT [$( $def:tt )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [$( #[$bmeta:meta] )*
- => $bitem:ident: $bmode:tt [$( $bvar:ident: $btyp:ty ),*] ]
- queue [ $qitem:ident $( $tail:tt )*]
- ) => {
- quick_error!(SORT [$( $def )*]
- items [$( $(#[$imeta])* => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*
- $(#[$bmeta])* => $bitem: $bmode [$( $bvar:$btyp ),*] {} ]
- buf [ => $qitem : UNIT [ ] ]
- queue [$( $tail )*]);
- };
- // Flush buffer on end
- (SORT [$( $def:tt )*]
- items [$($( #[$imeta:meta] )*
- => $iitem:ident: $imode:tt [$( $ivar:ident: $ityp:ty ),*]
- {$( $ifuncs:tt )*} )* ]
- buf [$( #[$bmeta:meta] )*
- => $bitem:ident: $bmode:tt [$( $bvar:ident: $btyp:ty ),*] ]
- queue [ ]
- ) => {
- quick_error!(SORT [$( $def )*]
- items [$( $(#[$imeta])* => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*
- $(#[$bmeta])* => $bitem: $bmode [$( $bvar:$btyp ),*] {} ]
- buf [ ]
- queue [ ]);
- };
- // Public enum (Queue Empty)
- (ENUM_DEFINITION [pub enum $name:ident $( #[$meta:meta] )*]
- body [$($( #[$imeta:meta] )*
- => $iitem:ident ($(($( $ttyp:ty ),+))*) {$({$( $svar:ident: $styp:ty ),*})*} )* ]
- queue [ ]
- ) => {
- #[allow(unknown_lints)] // no unused_doc_comments in older rust
- #[allow(renamed_and_removed_lints)]
- #[allow(unused_doc_comment)]
- #[allow(unused_doc_comments)]
- $(#[$meta])*
- pub enum $name {
- $(
- $(#[$imeta])*
- $iitem $(($( $ttyp ),*))* $({$( $svar: $styp ),*})*,
- )*
- }
- };
- // Private enum (Queue Empty)
- (ENUM_DEFINITION [enum $name:ident $( #[$meta:meta] )*]
- body [$($( #[$imeta:meta] )*
- => $iitem:ident ($(($( $ttyp:ty ),+))*) {$({$( $svar:ident: $styp:ty ),*})*} )* ]
- queue [ ]
- ) => {
- #[allow(unknown_lints)] // no unused_doc_comments in older rust
- #[allow(renamed_and_removed_lints)]
- #[allow(unused_doc_comment)]
- #[allow(unused_doc_comments)]
- $(#[$meta])*
- enum $name {
- $(
- $(#[$imeta])*
- $iitem $(($( $ttyp ),*))* $({$( $svar: $styp ),*})*,
- )*
- }
- };
- // Unit variant
- (ENUM_DEFINITION [$( $def:tt )*]
- body [$($( #[$imeta:meta] )*
- => $iitem:ident ($(($( $ttyp:ty ),+))*) {$({$( $svar:ident: $styp:ty ),*})*} )* ]
- queue [$( #[$qmeta:meta] )*
- => $qitem:ident: UNIT [ ] $( $queue:tt )*]
- ) => {
- quick_error!(ENUM_DEFINITION [ $($def)* ]
- body [$($( #[$imeta] )* => $iitem ($(($( $ttyp ),+))*) {$({$( $svar: $styp ),*})*} )*
- $( #[$qmeta] )* => $qitem () {} ]
- queue [ $($queue)* ]
- );
- };
- // Tuple variant
- (ENUM_DEFINITION [$( $def:tt )*]
- body [$($( #[$imeta:meta] )*
- => $iitem:ident ($(($( $ttyp:ty ),+))*) {$({$( $svar:ident: $styp:ty ),*})*} )* ]
- queue [$( #[$qmeta:meta] )*
- => $qitem:ident: TUPLE [$( $qvar:ident: $qtyp:ty ),+] $( $queue:tt )*]
- ) => {
- quick_error!(ENUM_DEFINITION [ $($def)* ]
- body [$($( #[$imeta] )* => $iitem ($(($( $ttyp ),+))*) {$({$( $svar: $styp ),*})*} )*
- $( #[$qmeta] )* => $qitem (($( $qtyp ),*)) {} ]
- queue [ $($queue)* ]
- );
- };
- // Struct variant
- (ENUM_DEFINITION [$( $def:tt )*]
- body [$($( #[$imeta:meta] )*
- => $iitem:ident ($(($( $ttyp:ty ),+))*) {$({$( $svar:ident: $styp:ty ),*})*} )* ]
- queue [$( #[$qmeta:meta] )*
- => $qitem:ident: STRUCT [$( $qvar:ident: $qtyp:ty ),*] $( $queue:tt )*]
- ) => {
- quick_error!(ENUM_DEFINITION [ $($def)* ]
- body [$($( #[$imeta] )* => $iitem ($(($( $ttyp ),+))*) {$({$( $svar: $styp ),*})*} )*
- $( #[$qmeta] )* => $qitem () {{$( $qvar: $qtyp ),*}} ]
- queue [ $($queue)* ]
- );
- };
- (IMPLEMENTATIONS
- $name:ident {$(
- $item:ident: $imode:tt [$(#[$imeta:meta])*] [$( $var:ident: $typ:ty ),*] {$( $funcs:tt )*}
- )*}
- ) => {
- #[allow(unused)]
- #[allow(unknown_lints)] // no unused_doc_comments in older rust
- #[allow(renamed_and_removed_lints)]
- #[allow(unused_doc_comment)]
- #[allow(unused_doc_comments)]
- impl ::std::fmt::Display for $name {
- fn fmt(&self, fmt: &mut ::std::fmt::Formatter)
- -> ::std::fmt::Result
- {
- match *self {
- $(
- $(#[$imeta])*
- quick_error!(ITEM_PATTERN
- $name $item: $imode [$( ref $var ),*]
- ) => {
- let display_fn = quick_error!(FIND_DISPLAY_IMPL
- $name $item: $imode
- {$( $funcs )*});
-
- display_fn(self, fmt)
- }
- )*
- }
- }
- }
- #[allow(unused)]
- #[allow(unknown_lints)] // no unused_doc_comments in older rust
- #[allow(renamed_and_removed_lints)]
- #[allow(unused_doc_comment)]
- #[allow(unused_doc_comments)]
- impl ::std::error::Error for $name {
- fn cause(&self) -> Option<&::std::error::Error> {
- match *self {
- $(
- $(#[$imeta])*
- quick_error!(ITEM_PATTERN
- $name $item: $imode [$( ref $var ),*]
- ) => {
- quick_error!(FIND_CAUSE_IMPL
- $item: $imode [$( $var ),*]
- {$( $funcs )*})
- }
- )*
- }
- }
- }
- $(
- quick_error!(FIND_FROM_IMPL
- $name $item: $imode [$( $var:$typ ),*]
- {$( $funcs )*});
- )*
- $(
- quick_error!(FIND_CONTEXT_IMPL
- $name $item: $imode [$( $var:$typ ),*]
- {$( $funcs )*});
- )*
- };
- (FIND_DISPLAY_IMPL $name:ident $item:ident: $imode:tt
- { display($self_:tt) -> ($( $exprs:tt )*) $( $tail:tt )*}
- ) => {
- |quick_error!(IDENT $self_): &$name, f: &mut ::std::fmt::Formatter| { write!(f, $( $exprs )*) }
- };
- (FIND_DISPLAY_IMPL $name:ident $item:ident: $imode:tt
- { display($pattern:expr) $( $tail:tt )*}
- ) => {
- |_, f: &mut ::std::fmt::Formatter| { write!(f, $pattern) }
- };
- (FIND_DISPLAY_IMPL $name:ident $item:ident: $imode:tt
- { display($pattern:expr, $( $exprs:tt )*) $( $tail:tt )*}
- ) => {
- |_, f: &mut ::std::fmt::Formatter| { write!(f, $pattern, $( $exprs )*) }
- };
- (FIND_DISPLAY_IMPL $name:ident $item:ident: $imode:tt
- { $t:tt $( $tail:tt )*}
- ) => {
- quick_error!(FIND_DISPLAY_IMPL
- $name $item: $imode
- {$( $tail )*})
- };
- (FIND_DISPLAY_IMPL $name:ident $item:ident: $imode:tt
- { }
- ) => {
- |self_: &$name, f: &mut ::std::fmt::Formatter| {
- write!(f, "{:?}", self_)
- }
- };
- (FIND_DESCRIPTION_IMPL $item:ident: $imode:tt $me:ident $fmt:ident
- [$( $var:ident ),*]
- { description($expr:expr) $( $tail:tt )*}
- ) => {};
- (FIND_DESCRIPTION_IMPL $item:ident: $imode:tt $me:ident $fmt:ident
- [$( $var:ident ),*]
- { $t:tt $( $tail:tt )*}
- ) => {};
- (FIND_DESCRIPTION_IMPL $item:ident: $imode:tt $me:ident $fmt:ident
- [$( $var:ident ),*]
- { }
- ) => {};
- (FIND_CAUSE_IMPL $item:ident: $imode:tt
- [$( $var:ident ),*]
- { cause($expr:expr) $( $tail:tt )*}
- ) => {
- Some($expr)
- };
- (FIND_CAUSE_IMPL $item:ident: $imode:tt
- [$( $var:ident ),*]
- { $t:tt $( $tail:tt )*}
- ) => {
- quick_error!(FIND_CAUSE_IMPL
- $item: $imode [$( $var ),*]
- { $($tail)* })
- };
- (FIND_CAUSE_IMPL $item:ident: $imode:tt
- [$( $var:ident ),*]
- { }
- ) => {
- None
- };
- // ----------------------------- FROM IMPL --------------------------
- (FIND_FROM_IMPL $name:ident $item:ident: $imode:tt
- [$( $var:ident: $typ:ty ),*]
- { from() $( $tail:tt )*}
- ) => {
- $(
- impl From<$typ> for $name {
- fn from($var: $typ) -> $name {
- $name::$item($var)
- }
- }
- )*
- quick_error!(FIND_FROM_IMPL
- $name $item: $imode [$( $var:$typ ),*]
- {$( $tail )*});
- };
- (FIND_FROM_IMPL $name:ident $item:ident: UNIT
- [ ]
- { from($ftyp:ty) $( $tail:tt )*}
- ) => {
- impl From<$ftyp> for $name {
- fn from(_discarded_error: $ftyp) -> $name {
- $name::$item
- }
- }
- quick_error!(FIND_FROM_IMPL
- $name $item: UNIT [ ]
- {$( $tail )*});
- };
- (FIND_FROM_IMPL $name:ident $item:ident: TUPLE
- [$( $var:ident: $typ:ty ),*]
- { from($fvar:ident: $ftyp:ty) -> ($( $texpr:expr ),*) $( $tail:tt )*}
- ) => {
- impl From<$ftyp> for $name {
- fn from($fvar: $ftyp) -> $name {
- $name::$item($( $texpr ),*)
- }
- }
- quick_error!(FIND_FROM_IMPL
- $name $item: TUPLE [$( $var:$typ ),*]
- { $($tail)* });
- };
- (FIND_FROM_IMPL $name:ident $item:ident: STRUCT
- [$( $var:ident: $typ:ty ),*]
- { from($fvar:ident: $ftyp:ty) -> {$( $tvar:ident: $texpr:expr ),*} $( $tail:tt )*}
- ) => {
- impl From<$ftyp> for $name {
- fn from($fvar: $ftyp) -> $name {
- $name::$item {
- $( $tvar: $texpr ),*
- }
- }
- }
- quick_error!(FIND_FROM_IMPL
- $name $item: STRUCT [$( $var:$typ ),*]
- { $($tail)* });
- };
- (FIND_FROM_IMPL $name:ident $item:ident: $imode:tt
- [$( $var:ident: $typ:ty ),*]
- { $t:tt $( $tail:tt )*}
- ) => {
- quick_error!(FIND_FROM_IMPL
- $name $item: $imode [$( $var:$typ ),*]
- {$( $tail )*}
- );
- };
- (FIND_FROM_IMPL $name:ident $item:ident: $imode:tt
- [$( $var:ident: $typ:ty ),*]
- { }
- ) => {
- };
- // ----------------------------- CONTEXT IMPL --------------------------
- (FIND_CONTEXT_IMPL $name:ident $item:ident: TUPLE
- [$( $var:ident: $typ:ty ),*]
- { context($cvar:ident: AsRef<$ctyp:ty>, $fvar:ident: $ftyp:ty)
- -> ($( $texpr:expr ),*) $( $tail:tt )* }
- ) => {
- impl<T: AsRef<$ctyp>> From<$crate::Context<T, $ftyp>> for $name {
- fn from(
- $crate::Context($cvar, $fvar): $crate::Context<T, $ftyp>)
- -> $name
- {
- $name::$item($( $texpr ),*)
- }
- }
- quick_error!(FIND_CONTEXT_IMPL
- $name $item: TUPLE [$( $var:$typ ),*]
- { $($tail)* });
- };
- (FIND_CONTEXT_IMPL $name:ident $item:ident: TUPLE
- [$( $var:ident: $typ:ty ),*]
- { context($cvar:ident: $ctyp:ty, $fvar:ident: $ftyp:ty)
- -> ($( $texpr:expr ),*) $( $tail:tt )* }
- ) => {
- impl<'a> From<$crate::Context<$ctyp, $ftyp>> for $name {
- fn from(
- $crate::Context($cvar, $fvar): $crate::Context<$ctyp, $ftyp>)
- -> $name
- {
- $name::$item($( $texpr ),*)
- }
- }
- quick_error!(FIND_CONTEXT_IMPL
- $name $item: TUPLE [$( $var:$typ ),*]
- { $($tail)* });
- };
- (FIND_CONTEXT_IMPL $name:ident $item:ident: STRUCT
- [$( $var:ident: $typ:ty ),*]
- { context($cvar:ident: AsRef<$ctyp:ty>, $fvar:ident: $ftyp:ty)
- -> {$( $tvar:ident: $texpr:expr ),*} $( $tail:tt )* }
- ) => {
- impl<T: AsRef<$ctyp>> From<$crate::Context<T, $ftyp>> for $name {
- fn from(
- $crate::Context($cvar, $fvar): $crate::Context<$ctyp, $ftyp>)
- -> $name
- {
- $name::$item {
- $( $tvar: $texpr ),*
- }
- }
- }
- quick_error!(FIND_CONTEXT_IMPL
- $name $item: STRUCT [$( $var:$typ ),*]
- { $($tail)* });
- };
- (FIND_CONTEXT_IMPL $name:ident $item:ident: STRUCT
- [$( $var:ident: $typ:ty ),*]
- { context($cvar:ident: $ctyp:ty, $fvar:ident: $ftyp:ty)
- -> {$( $tvar:ident: $texpr:expr ),*} $( $tail:tt )* }
- ) => {
- impl<'a> From<$crate::Context<$ctyp, $ftyp>> for $name {
- fn from(
- $crate::Context($cvar, $fvar): $crate::Context<$ctyp, $ftyp>)
- -> $name
- {
- $name::$item {
- $( $tvar: $texpr ),*
- }
- }
- }
- quick_error!(FIND_CONTEXT_IMPL
- $name $item: STRUCT [$( $var:$typ ),*]
- { $($tail)* });
- };
- (FIND_CONTEXT_IMPL $name:ident $item:ident: $imode:tt
- [$( $var:ident: $typ:ty ),*]
- { $t:tt $( $tail:tt )*}
- ) => {
- quick_error!(FIND_CONTEXT_IMPL
- $name $item: $imode [$( $var:$typ ),*]
- {$( $tail )*}
- );
- };
- (FIND_CONTEXT_IMPL $name:ident $item:ident: $imode:tt
- [$( $var:ident: $typ:ty ),*]
- { }
- ) => {
- };
- // ----------------------------- ITEM IMPL --------------------------
- (ITEM_BODY $(#[$imeta:meta])* $item:ident: UNIT
- ) => { };
- (ITEM_BODY $(#[$imeta:meta])* $item:ident: TUPLE
- [$( $typ:ty ),*]
- ) => {
- ($( $typ ),*)
- };
- (ITEM_BODY $(#[$imeta:meta])* $item:ident: STRUCT
- [$( $var:ident: $typ:ty ),*]
- ) => {
- {$( $var:$typ ),*}
- };
- (ITEM_PATTERN $name:ident $item:ident: UNIT []
- ) => {
- $name::$item
- };
- (ITEM_PATTERN $name:ident $item:ident: TUPLE
- [$( ref $var:ident ),*]
- ) => {
- $name::$item ($( ref $var ),*)
- };
- (ITEM_PATTERN $name:ident $item:ident: STRUCT
- [$( ref $var:ident ),*]
- ) => {
- $name::$item {$( ref $var ),*}
- };
- // This one should match all allowed sequences in "funcs" but not match
- // anything else.
- // This is to contrast FIND_* clauses which just find stuff they need and
- // skip everything else completely
- (ERROR_CHECK $imode:tt display($self_:tt) -> ($( $exprs:tt )*) $( $tail:tt )*)
- => { quick_error!(ERROR_CHECK $imode $($tail)*); };
- (ERROR_CHECK $imode:tt display($pattern: expr) $( $tail:tt )*)
- => { quick_error!(ERROR_CHECK $imode $($tail)*); };
- (ERROR_CHECK $imode:tt display($pattern: expr, $( $exprs:tt )*) $( $tail:tt )*)
- => { quick_error!(ERROR_CHECK $imode $($tail)*); };
- (ERROR_CHECK $imode:tt description($expr:expr) $( $tail:tt )*)
- => { quick_error!(ERROR_CHECK $imode $($tail)*); };
- (ERROR_CHECK $imode:tt cause($expr:expr) $($tail:tt)*)
- => { quick_error!(ERROR_CHECK $imode $($tail)*); };
- (ERROR_CHECK $imode:tt from() $($tail:tt)*)
- => { quick_error!(ERROR_CHECK $imode $($tail)*); };
- (ERROR_CHECK $imode:tt from($ftyp:ty) $($tail:tt)*)
- => { quick_error!(ERROR_CHECK $imode $($tail)*); };
- (ERROR_CHECK TUPLE from($fvar:ident: $ftyp:ty) -> ($( $e:expr ),*) $( $tail:tt )*)
- => { quick_error!(ERROR_CHECK TUPLE $($tail)*); };
- (ERROR_CHECK STRUCT from($fvar:ident: $ftyp:ty) -> {$( $v:ident: $e:expr ),*} $( $tail:tt )*)
- => { quick_error!(ERROR_CHECK STRUCT $($tail)*); };
-
- (ERROR_CHECK TUPLE context($cvar:ident: $ctyp:ty, $fvar:ident: $ftyp:ty)
- -> ($( $e:expr ),*) $( $tail:tt )*)
- => { quick_error!(ERROR_CHECK TUPLE $($tail)*); };
- (ERROR_CHECK STRUCT context($cvar:ident: $ctyp:ty, $fvar:ident: $ftyp:ty)
- -> {$( $v:ident: $e:expr ),*} $( $tail:tt )*)
- => { quick_error!(ERROR_CHECK STRUCT $($tail)*); };
-
- (ERROR_CHECK $imode:tt ) => {};
- // Utility functions
- (IDENT $ident:ident) => { $ident }
-}
-
-
-/// Generic context type
-///
-/// Used mostly as a transport for `ResultExt::context` method
-#[derive(Debug)]
-pub struct Context<X, E>(pub X, pub E);
-
-/// Result extension trait adding a `context` method
-pub trait ResultExt<T, E> {
- /// The method is use to add context information to current operation
- ///
- /// The context data is then used in error constructor to store additional
- /// information within error. For example, you may add a filename as a
- /// context for file operation. See crate documentation for the actual
- /// example.
- fn context<X>(self, x: X) -> Result<T, Context<X, E>>;
-}
-
-impl<T, E> ResultExt<T, E> for Result<T, E> {
- fn context<X>(self, x: X) -> Result<T, Context<X, E>> {
- self.map_err(|e| Context(x, e))
- }
-}
-
-
-
-#[cfg(test)]
-#[allow(deprecated)]
-mod test {
- use std::num::{ParseFloatError, ParseIntError};
- use std::str::Utf8Error;
- use std::string::FromUtf8Error;
- use std::error::Error;
- use std::path::{Path, PathBuf};
-
- use super::ResultExt;
-
- quick_error! {
- #[derive(Debug)]
- pub enum Bare {
- One
- Two
- }
- }
-
- #[test]
- fn bare_item_direct() {
- assert_eq!(format!("{}", Bare::One), "One".to_string());
- assert_eq!(format!("{:?}", Bare::One), "One".to_string());
- assert!(Bare::One.cause().is_none());
- }
- #[test]
- fn bare_item_trait() {
- let err: &Error = &Bare::Two;
- assert_eq!(format!("{}", err), "Two".to_string());
- assert_eq!(format!("{:?}", err), "Two".to_string());
- assert!(err.cause().is_none());
- }
-
- quick_error! {
- #[derive(Debug)]
- pub enum Wrapper wraps Wrapped {
- One
- Two(s: String) {
- display("two: {}", s)
- from()
- }
- }
- }
-
- #[test]
- fn wrapper() {
- assert_eq!(format!("{}", Wrapper::from(Wrapped::One)),
- "One".to_string());
- assert_eq!(format!("{}",
- Wrapper::from(Wrapped::from(String::from("hello")))),
- "two: hello".to_string());
- assert_eq!(format!("{:?}", Wrapper::from(Wrapped::One)),
- "Wrapper(One)".to_string());
- }
-
- quick_error! {
- #[derive(Debug, PartialEq)]
- pub enum TupleWrapper {
- /// ParseFloat Error
- ParseFloatError(err: ParseFloatError) {
- from()
- display("parse float error: {err}", err=err)
- cause(err)
- }
- Other(descr: &'static str) {
- display("Error: {}", descr)
- }
- /// FromUtf8 Error
- FromUtf8Error(err: Utf8Error, source: Vec<u8>) {
- cause(err)
- display(me) -> ("{desc} at index {pos}: {err}", desc="utf8 error", pos=err.valid_up_to(), err=err)
- from(err: FromUtf8Error) -> (err.utf8_error().clone(), err.into_bytes())
- }
- Discard {
- from(&'static str)
- }
- Singleton {
- display("Just a string")
- }
- }
- }
-
- #[test]
- fn tuple_wrapper_err() {
- let cause = "one and a half times pi".parse::<f32>().unwrap_err();
- let err = TupleWrapper::ParseFloatError(cause.clone());
- assert_eq!(format!("{}", err), format!("parse float error: {}", cause));
- assert_eq!(format!("{:?}", err), format!("ParseFloatError({:?})", cause));
- assert_eq!(format!("{:?}", err.cause().unwrap()), format!("{:?}", cause));
- }
-
- #[test]
- fn tuple_wrapper_trait_str() {
- let desc = "hello";
- let err: &Error = &TupleWrapper::Other(desc);
- assert_eq!(format!("{}", err), format!("Error: {}", desc));
- assert_eq!(format!("{:?}", err), format!("Other({:?})", desc));
- assert!(err.cause().is_none());
- }
-
- #[test]
- fn tuple_wrapper_trait_two_fields() {
- let invalid_utf8: Vec<u8> = vec![0, 159, 146, 150];
- let cause = String::from_utf8(invalid_utf8.clone()).unwrap_err().utf8_error();
- let err: &Error = &TupleWrapper::FromUtf8Error(cause.clone(), invalid_utf8.clone());
- assert_eq!(format!("{}", err), format!("{desc} at index {pos}: {cause}", desc="utf8 error", pos=cause.valid_up_to(), cause=cause));
- assert_eq!(format!("{:?}", err), format!("FromUtf8Error({:?}, {:?})", cause, invalid_utf8));
- assert_eq!(format!("{:?}", err.cause().unwrap()), format!("{:?}", cause));
- }
-
- #[test]
- fn tuple_wrapper_from() {
- let cause = "one and a half times pi".parse::<f32>().unwrap_err();
- let err = TupleWrapper::ParseFloatError(cause.clone());
- let err_from: TupleWrapper = From::from(cause);
- assert_eq!(err_from, err);
- }
-
- #[test]
- fn tuple_wrapper_custom_from() {
- let invalid_utf8: Vec<u8> = vec![0, 159, 146, 150];
- let cause = String::from_utf8(invalid_utf8.clone()).unwrap_err();
- let err = TupleWrapper::FromUtf8Error(cause.utf8_error().clone(), invalid_utf8);
- let err_from: TupleWrapper = From::from(cause);
- assert_eq!(err_from, err);
- }
-
- #[test]
- fn tuple_wrapper_discard() {
- let err: TupleWrapper = From::from("hello");
- assert_eq!(format!("{}", err), format!("Discard"));
- assert_eq!(format!("{:?}", err), format!("Discard"));
- assert!(err.cause().is_none());
- }
-
- #[test]
- fn tuple_wrapper_singleton() {
- let err: TupleWrapper = TupleWrapper::Singleton;
- assert_eq!(format!("{}", err), format!("Just a string"));
- assert_eq!(format!("{:?}", err), format!("Singleton"));
- assert!(err.cause().is_none());
- }
-
- quick_error! {
- #[derive(Debug, PartialEq)]
- pub enum StructWrapper {
- // Utf8 Error
- Utf8Error{ err: Utf8Error, hint: Option<&'static str> } {
- cause(err)
- display(me) -> ("{desc} at index {pos}: {err}", desc="utf8 error", pos=err.valid_up_to(), err=err)
- from(err: Utf8Error) -> { err: err, hint: None }
- }
- // Utf8 Error
- ExcessComma { descr: &'static str, } {
- display("Error: {}", descr)
- }
- }
- }
-
- #[test]
- fn struct_wrapper_err() {
- let invalid_utf8: Vec<u8> = vec![0, 159, 146, 150];
- let cause = String::from_utf8(invalid_utf8.clone()).unwrap_err().utf8_error();
- let err: &Error = &StructWrapper::Utf8Error{ err: cause.clone(), hint: Some("nonsense") };
- assert_eq!(format!("{}", err), format!("{desc} at index {pos}: {cause}", desc="utf8 error", pos=cause.valid_up_to(), cause=cause));
- assert_eq!(format!("{:?}", err), format!("Utf8Error {{ err: {:?}, hint: {:?} }}", cause, Some("nonsense")));
- assert_eq!(format!("{:?}", err.cause().unwrap()), format!("{:?}", cause));
- }
-
- #[test]
- fn struct_wrapper_struct_from() {
- let invalid_utf8: Vec<u8> = vec![0, 159, 146, 150];
- let cause = String::from_utf8(invalid_utf8.clone()).unwrap_err().utf8_error();
- let err = StructWrapper::Utf8Error{ err: cause.clone(), hint: None };
- let err_from: StructWrapper = From::from(cause);
- assert_eq!(err_from, err);
- }
-
- #[test]
- fn struct_wrapper_excess_comma() {
- let descr = "hello";
- let err = StructWrapper::ExcessComma { descr: descr };
- assert_eq!(format!("{}", err), format!("Error: {}", descr));
- assert_eq!(format!("{:?}", err), format!("ExcessComma {{ descr: {:?} }}", descr));
- assert!(err.cause().is_none());
- }
-
- quick_error! {
- #[derive(Debug)]
- pub enum ContextErr {
- Float(src: String, err: ParseFloatError) {
- context(s: &'a str, e: ParseFloatError) -> (s.to_string(), e)
- display("Float error {:?}: {}", src, err)
- }
- Int { src: String, err: ParseIntError } {
- context(s: &'a str, e: ParseIntError)
- -> {src: s.to_string(), err: e}
- display("Int error {:?}: {}", src, err)
- }
- Utf8(path: PathBuf, err: Utf8Error) {
- context(p: AsRef<Path>, e: Utf8Error)
- -> (p.as_ref().to_path_buf(), e)
- display("Path error at {:?}: {}", path, err)
- }
- Utf8Str(s: String, err: ::std::io::Error) {
- context(s: AsRef<str>, e: ::std::io::Error)
- -> (s.as_ref().to_string(), e)
- display("Str error {:?}: {}", s, err)
- }
- }
- }
-
- #[test]
- fn parse_float_error() {
- fn parse_float(s: &str) -> Result<f32, ContextErr> {
- Ok(try!(s.parse().context(s)))
- }
- assert_eq!(format!("{}", parse_float("12ab").unwrap_err()),
- r#"Float error "12ab": invalid float literal"#);
- }
-
- #[test]
- fn parse_int_error() {
- fn parse_int(s: &str) -> Result<i32, ContextErr> {
- Ok(try!(s.parse().context(s)))
- }
- assert_eq!(format!("{}", parse_int("12.5").unwrap_err()),
- r#"Int error "12.5": invalid digit found in string"#);
- }
-
- #[test]
- fn debug_context() {
- fn parse_int(s: &str) -> i32 {
- s.parse().context(s).unwrap()
- }
- assert_eq!(parse_int("12"), 12);
- assert_eq!(format!("{:?}", "x".parse::<i32>().context("x")),
- r#"Err(Context("x", ParseIntError { kind: InvalidDigit }))"#);
- }
-
- #[test]
- fn path_context() {
- fn parse_utf<P: AsRef<Path>>(s: &[u8], p: P)
- -> Result<(), ContextErr>
- {
- try!(::std::str::from_utf8(s).context(p));
- Ok(())
- }
- let etext = parse_utf(b"a\x80\x80", "/etc").unwrap_err().to_string();
- assert!(etext.starts_with(
- "Path error at \"/etc\": invalid utf-8"));
- let etext = parse_utf(b"\x80\x80", PathBuf::from("/tmp")).unwrap_err()
- .to_string();
- assert!(etext.starts_with(
- "Path error at \"/tmp\": invalid utf-8"));
- }
-
- #[test]
- fn conditional_compilation() {
- quick_error! {
- #[allow(dead_code)]
- #[derive(Debug)]
- pub enum Test {
- #[cfg(feature = "foo")]
- Variant
- }
- }
- }
-}
diff --git a/vendor/quick-error-1.2.3/vagga.yaml b/vendor/quick-error-1.2.3/vagga.yaml
deleted file mode 100644
index 71b9be44e..000000000
--- a/vendor/quick-error-1.2.3/vagga.yaml
+++ /dev/null
@@ -1,36 +0,0 @@
-commands:
-
- cargo: !Command
- description: Run any cargo command
- container: ubuntu
- run: [cargo]
-
- test: !Command
- description: Run unit tests
- container: ubuntu
- run: [cargo, test]
-
- _bulk: !Command
- description: Run `bulk` command (for version bookkeeping)
- container: ubuntu
- run: [bulk]
-
-containers:
-
- ubuntu:
- setup:
- - !Ubuntu xenial
- - !Install [ca-certificates, build-essential, vim]
-
- - !TarInstall
- url: "https://static.rust-lang.org/dist/rust-1.16.0-x86_64-unknown-linux-gnu.tar.gz"
- script: "./install.sh --prefix=/usr \
- --components=rustc,rust-std-x86_64-unknown-linux-gnu,cargo"
- - &bulk !Tar
- url: "https://github.com/tailhook/bulk/releases/download/v0.4.9/bulk-v0.4.9.tar.gz"
- sha256: 23471a9986274bb4b7098c03e2eb7e1204171869b72c45385fcee1c64db2d111
- path: /
-
- environ:
- HOME: /work/target
- USER: pc
diff --git a/vendor/quick-error/.cargo-checksum.json b/vendor/quick-error/.cargo-checksum.json
index 869218ba2..5f19af61c 100644
--- a/vendor/quick-error/.cargo-checksum.json
+++ b/vendor/quick-error/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"d586689373f57572b86215aba1457e8486665e3a598e00b8f3f352b129e8aab5","Cargo.toml":"65148316f0d5161bbc86cd08f3feedf44936284c0665603baacf503d933a256e","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"058f01fe181608d027fcde7e528fc03ea3cf90f30903c407644b0a9bbc54f500","README.rst":"97f715a3a68ede33bca81c98ad791375b2bb7ad0d814377b0651f5c4de8f7d4a","bulk.yaml":"17c2548388e0cd3a63473021a2f1e4ddedee082d79d9167cb31ad06a1890d3fc","examples/context.rs":"5045319e03fa5214c7b2f9ef28d6012ffd34f7095d2103b5579a4c8567ddab68","src/lib.rs":"c94106502d7afb9ffb18b57ba9b42075b28017c765529e30db75a0e612152ec0","vagga.yaml":"280ac771f03284bb3f7e1b5b50c0b8046e79cc5c54f40b7c738f7a8ebaa586f2"},"package":"3ac73b1112776fc109b2e61909bc46c7e1bf0d7f690ffb1676553acce16d5cda"} \ No newline at end of file
+{"files":{"Cargo.lock":"b88df71c076815e9922973e1f54af221486c3a83d5be2c1af9ca650a8f8f526f","Cargo.toml":"1f24b567c7f10b4ec44f5baf033d27da39f659c09df0e8a057437d10ecdd551a","LICENSE-APACHE":"c6596eb7be8581c18be736c846fb9173b69eccf6ef94c5135893ec56bd92ba08","LICENSE-MIT":"058f01fe181608d027fcde7e528fc03ea3cf90f30903c407644b0a9bbc54f500","README.rst":"8bd690e0089d4c38eb71f1327f5144741009f4b2f49f0b16f2547f528171e2e6","bulk.yaml":"17c2548388e0cd3a63473021a2f1e4ddedee082d79d9167cb31ad06a1890d3fc","examples/context.rs":"b9be9a4ca021a1f0ba659932bfc0cf891728bfaea49d48a8be183644c492515b","src/lib.rs":"a02c8a3c40fa1dcee8285b9c238d40cb3078cf4dded1c972fa6361a485d1667f","vagga.yaml":"b01ad1fd3aa25de2439c0f7a437c6517808ba3a7eeeb0363eb209f08e326cc8e"},"package":"a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"} \ No newline at end of file
diff --git a/vendor/quick-error/Cargo.lock b/vendor/quick-error/Cargo.lock
index 4e9e64eb5..da1963ecf 100644
--- a/vendor/quick-error/Cargo.lock
+++ b/vendor/quick-error/Cargo.lock
@@ -2,4 +2,5 @@
# It is not intended for manual editing.
[[package]]
name = "quick-error"
-version = "2.0.0"
+version = "1.2.3"
+
diff --git a/vendor/quick-error/Cargo.toml b/vendor/quick-error/Cargo.toml
index f5f929231..b5d5f60b1 100644
--- a/vendor/quick-error/Cargo.toml
+++ b/vendor/quick-error/Cargo.toml
@@ -11,9 +11,8 @@
# will likely look very different (and much more reasonable)
[package]
-edition = "2018"
name = "quick-error"
-version = "2.0.0"
+version = "1.2.3"
authors = ["Paul Colomiets <paul@colomiets.name>", "Colin Kiegel <kiegel@gmx.de>"]
description = " A macro which makes error types pleasant to write.\n"
homepage = "http://github.com/tailhook/quick-error"
diff --git a/vendor/quick-error/README.rst b/vendor/quick-error/README.rst
index 67773e8ab..e54c055c4 100644
--- a/vendor/quick-error/README.rst
+++ b/vendor/quick-error/README.rst
@@ -3,7 +3,7 @@ Quick Error
===========
:Status: production-ready
-:Documentation: https://docs.rs/quick-error/
+:Documentation: http://tailhook.github.io/quick-error/
A macro which makes error types pleasant to write.
@@ -25,13 +25,13 @@ Here is the comprehensive example:
Io(err: io::Error) {
from()
display("I/O error: {}", err)
- source(err)
+ cause(err)
}
Other(descr: &'static str) {
display("Error {}", descr)
}
IoAt { place: &'static str, err: io::Error } {
- source(err)
+ cause(err)
display(me) -> ("io error at {}: {}", place, err)
from(s: String) -> {
place: "some string",
diff --git a/vendor/quick-error/examples/context.rs b/vendor/quick-error/examples/context.rs
index 1d406613e..334700a03 100644
--- a/vendor/quick-error/examples/context.rs
+++ b/vendor/quick-error/examples/context.rs
@@ -1,14 +1,19 @@
-use quick_error::{quick_error, ResultExt};
-use std::env;
-use std::fs::File;
+#[macro_use(quick_error)] extern crate quick_error;
+
use std::io::{self, stderr, Read, Write};
+use std::fs::File;
+use std::env;
use std::num::ParseIntError;
use std::path::{Path, PathBuf};
+use quick_error::ResultExt;
+
quick_error! {
#[derive(Debug)]
pub enum Error {
- NoFileName {}
+ NoFileName {
+ description("no file name specified")
+ }
Io(err: io::Error, path: PathBuf) {
display("could not read file {:?}: {}", path, err)
context(path: &'a Path, err: io::Error)
@@ -23,12 +28,12 @@ quick_error! {
}
fn parse_file() -> Result<u64, Error> {
- let fname = env::args().skip(1).next().ok_or(Error::NoFileName)?;
+ let fname = try!(env::args().skip(1).next().ok_or(Error::NoFileName));
let fname = Path::new(&fname);
- let mut file = File::open(fname).context(fname)?;
+ let mut file = try!(File::open(fname).context(fname));
let mut buf = String::new();
- file.read_to_string(&mut buf).context(fname)?;
- Ok(buf.parse().context(fname)?)
+ try!(file.read_to_string(&mut buf).context(fname));
+ Ok(try!(buf.parse().context(fname)))
}
fn main() {
diff --git a/vendor/quick-error/src/lib.rs b/vendor/quick-error/src/lib.rs
index e5eb62e44..17fc455d4 100644
--- a/vendor/quick-error/src/lib.rs
+++ b/vendor/quick-error/src/lib.rs
@@ -45,7 +45,7 @@
//! Now you might have noticed trailing braces `{}`. They are used to define
//! implementations. By default:
//!
-//! * `Error::source()` returns None (even if type wraps some value)
+//! * `Error::cause()` returns None (even if type wraps some value)
//! * `Display` outputs debug representation
//! * No `From` implementations are defined
//!
@@ -66,7 +66,7 @@
//! }
//! ```
//!
-//! To change `source` method to return some error, add `source(value)`, for
+//! To change `cause` method to return some error, add `cause(value)`, for
//! example:
//!
//! ```rust
@@ -77,19 +77,19 @@
//! #[derive(Debug)]
//! pub enum SomeError {
//! Io(err: std::io::Error) {
-//! source(err)
+//! cause(err)
//! }
//! Utf8(err: std::str::Utf8Error) {
//! display("utf8 error")
//! }
//! Other(err: Box<std::error::Error>) {
-//! source(&**err)
+//! cause(&**err)
//! }
//! }
//! }
//! ```
//! Note you don't need to wrap value in `Some`, its implicit. In case you want
-//! `None` returned just omit the `source`. You can't return `None`
+//! `None` returned just omit the `cause`. You can't return `None`
//! conditionally.
//!
//! To change how each clause is `Display`ed add `display(pattern,..args)`,
@@ -220,12 +220,12 @@
//! }
//!
//! fn openfile(path: &Path) -> Result<(), Error> {
-//! File::open(path).context(path)?;
+//! try!(File::open(path).context(path));
//!
//! // If we didn't have context, the line above would be written as;
//! //
-//! // File::open(path)
-//! // .map_err(|err| Error::File(path.to_path_buf(), err))?;
+//! // try!(File::open(path)
+//! // .map_err(|err| Error::File(path.to_path_buf(), err)));
//!
//! Ok(())
//! }
@@ -248,7 +248,7 @@
//!
//! More info on context in [this article](http://bit.ly/1PsuxDt).
//!
-//! All forms of `from`, `display`, `source`, and `context`
+//! All forms of `from`, `display`, `cause`, and `context`
//! clauses can be combined and put in arbitrary order. Only `from` and
//! `context` can be used multiple times in single variant of enumeration.
//! Docstrings are also okay. Empty braces can be omitted as of quick_error
@@ -293,6 +293,7 @@
//!
//!
+
/// Main macro that does all the work
#[macro_export]
macro_rules! quick_error {
@@ -370,8 +371,9 @@ macro_rules! quick_error {
}
impl ::std::error::Error for $strname {
- fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
- self.0.source()
+ #[allow(deprecated)]
+ fn cause(&self) -> Option<&::std::error::Error> {
+ self.0.cause()
}
}
};
@@ -452,6 +454,8 @@ macro_rules! quick_error {
queue [ #[$qmeta:meta] $( $tail:tt )*]
) => {
quick_error!(SORT [$( $def )*]
+ enum [$( $(#[$emeta])* => $eitem $(( $($etyp),* ))* )*
+ $(#[$bmeta])* => $bitem: $bmode $(( $($btyp),* ))*]
items [$($( #[$imeta:meta] )*
=> $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*
$bitem: $bmode [$( $bvar:$btyp ),*] {} ]
@@ -468,7 +472,7 @@ macro_rules! quick_error {
) => {
quick_error!(SORT [$( $def )*]
items [$( $(#[$imeta])* => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*]
- buf [$( #[$bmeta] )* => $bitem: TUPLE [$( $qvar:$qtyp ),+] ]
+ buf [$( #[$bmeta] )* => $bitem: TUPLE [$( $qvar:$qtyp ),*] ]
queue [$( $tail )*]
);
};
@@ -482,7 +486,7 @@ macro_rules! quick_error {
) => {
quick_error!(SORT [$( $def )*]
items [$( $(#[$imeta])* => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*]
- buf [$( #[$bmeta] )* => $bitem: STRUCT [$( $qvar:$qtyp ),+] ]
+ buf [$( #[$bmeta] )* => $bitem: STRUCT [$( $qvar:$qtyp ),*] ]
queue [$( $tail )*]);
};
// Add struct enum-variant, with excess comma - e.g. { descr: &'static str, }
@@ -495,7 +499,7 @@ macro_rules! quick_error {
) => {
quick_error!(SORT [$( $def )*]
items [$( $(#[$imeta])* => $iitem: $imode [$( $ivar:$ityp ),*] {$( $ifuncs )*} )*]
- buf [$( #[$bmeta] )* => $bitem: STRUCT [$( $qvar:$qtyp ),+] ]
+ buf [$( #[$bmeta] )* => $bitem: STRUCT [$( $qvar:$qtyp ),*] ]
queue [$( $tail )*]);
};
// Add braces and flush always on braces
@@ -557,7 +561,7 @@ macro_rules! quick_error {
pub enum $name {
$(
$(#[$imeta])*
- $iitem $(($( $ttyp ),+))* $({$( $svar: $styp ),*})*,
+ $iitem $(($( $ttyp ),*))* $({$( $svar: $styp ),*})*,
)*
}
};
@@ -575,7 +579,7 @@ macro_rules! quick_error {
enum $name {
$(
$(#[$imeta])*
- $iitem $(($( $ttyp ),+))* $({$( $svar: $styp ),*})*,
+ $iitem $(($( $ttyp ),*))* $({$( $svar: $styp ),*})*,
)*
}
};
@@ -601,7 +605,7 @@ macro_rules! quick_error {
) => {
quick_error!(ENUM_DEFINITION [ $($def)* ]
body [$($( #[$imeta] )* => $iitem ($(($( $ttyp ),+))*) {$({$( $svar: $styp ),*})*} )*
- $( #[$qmeta] )* => $qitem (($( $qtyp ),+)) {} ]
+ $( #[$qmeta] )* => $qitem (($( $qtyp ),*)) {} ]
queue [ $($queue)* ]
);
};
@@ -654,14 +658,14 @@ macro_rules! quick_error {
#[allow(unused_doc_comment)]
#[allow(unused_doc_comments)]
impl ::std::error::Error for $name {
- fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
+ fn cause(&self) -> Option<&::std::error::Error> {
match *self {
$(
$(#[$imeta])*
quick_error!(ITEM_PATTERN
$name $item: $imode [$( ref $var ),*]
) => {
- quick_error!(FIND_SOURCE_IMPL
+ quick_error!(FIND_CAUSE_IMPL
$item: $imode [$( $var ),*]
{$( $funcs )*})
}
@@ -709,21 +713,33 @@ macro_rules! quick_error {
write!(f, "{:?}", self_)
}
};
- (FIND_SOURCE_IMPL $item:ident: $imode:tt
+ (FIND_DESCRIPTION_IMPL $item:ident: $imode:tt $me:ident $fmt:ident
+ [$( $var:ident ),*]
+ { description($expr:expr) $( $tail:tt )*}
+ ) => {};
+ (FIND_DESCRIPTION_IMPL $item:ident: $imode:tt $me:ident $fmt:ident
+ [$( $var:ident ),*]
+ { $t:tt $( $tail:tt )*}
+ ) => {};
+ (FIND_DESCRIPTION_IMPL $item:ident: $imode:tt $me:ident $fmt:ident
+ [$( $var:ident ),*]
+ { }
+ ) => {};
+ (FIND_CAUSE_IMPL $item:ident: $imode:tt
[$( $var:ident ),*]
- { source($expr:expr) $( $tail:tt )*}
+ { cause($expr:expr) $( $tail:tt )*}
) => {
Some($expr)
};
- (FIND_SOURCE_IMPL $item:ident: $imode:tt
+ (FIND_CAUSE_IMPL $item:ident: $imode:tt
[$( $var:ident ),*]
{ $t:tt $( $tail:tt )*}
) => {
- quick_error!(FIND_SOURCE_IMPL
+ quick_error!(FIND_CAUSE_IMPL
$item: $imode [$( $var ),*]
{ $($tail)* })
};
- (FIND_SOURCE_IMPL $item:ident: $imode:tt
+ (FIND_CAUSE_IMPL $item:ident: $imode:tt
[$( $var:ident ),*]
{ }
) => {
@@ -924,7 +940,9 @@ macro_rules! quick_error {
=> { quick_error!(ERROR_CHECK $imode $($tail)*); };
(ERROR_CHECK $imode:tt display($pattern: expr, $( $exprs:tt )*) $( $tail:tt )*)
=> { quick_error!(ERROR_CHECK $imode $($tail)*); };
- (ERROR_CHECK $imode:tt source($expr:expr) $($tail:tt)*)
+ (ERROR_CHECK $imode:tt description($expr:expr) $( $tail:tt )*)
+ => { quick_error!(ERROR_CHECK $imode $($tail)*); };
+ (ERROR_CHECK $imode:tt cause($expr:expr) $($tail:tt)*)
=> { quick_error!(ERROR_CHECK $imode $($tail)*); };
(ERROR_CHECK $imode:tt from() $($tail:tt)*)
=> { quick_error!(ERROR_CHECK $imode $($tail)*); };
@@ -947,6 +965,7 @@ macro_rules! quick_error {
(IDENT $ident:ident) => { $ident }
}
+
/// Generic context type
///
/// Used mostly as a transport for `ResultExt::context` method
@@ -970,13 +989,16 @@ impl<T, E> ResultExt<T, E> for Result<T, E> {
}
}
+
+
#[cfg(test)]
+#[allow(deprecated)]
mod test {
- use std::error::Error;
use std::num::{ParseFloatError, ParseIntError};
- use std::path::{Path, PathBuf};
use std::str::Utf8Error;
use std::string::FromUtf8Error;
+ use std::error::Error;
+ use std::path::{Path, PathBuf};
use super::ResultExt;
@@ -992,15 +1014,14 @@ mod test {
fn bare_item_direct() {
assert_eq!(format!("{}", Bare::One), "One".to_string());
assert_eq!(format!("{:?}", Bare::One), "One".to_string());
- assert!(Bare::One.source().is_none());
+ assert!(Bare::One.cause().is_none());
}
-
#[test]
fn bare_item_trait() {
- let err: &dyn Error = &Bare::Two;
+ let err: &Error = &Bare::Two;
assert_eq!(format!("{}", err), "Two".to_string());
assert_eq!(format!("{:?}", err), "Two".to_string());
- assert!(err.source().is_none());
+ assert!(err.cause().is_none());
}
quick_error! {
@@ -1016,18 +1037,13 @@ mod test {
#[test]
fn wrapper() {
- assert_eq!(
- format!("{}", Wrapper::from(Wrapped::One)),
- "One".to_string()
- );
- assert_eq!(
- format!("{}", Wrapper::from(Wrapped::from(String::from("hello")))),
- "two: hello".to_string()
- );
- assert_eq!(
- format!("{:?}", Wrapper::from(Wrapped::One)),
- "Wrapper(One)".to_string()
- );
+ assert_eq!(format!("{}", Wrapper::from(Wrapped::One)),
+ "One".to_string());
+ assert_eq!(format!("{}",
+ Wrapper::from(Wrapped::from(String::from("hello")))),
+ "two: hello".to_string());
+ assert_eq!(format!("{:?}", Wrapper::from(Wrapped::One)),
+ "Wrapper(One)".to_string());
}
quick_error! {
@@ -1037,14 +1053,14 @@ mod test {
ParseFloatError(err: ParseFloatError) {
from()
display("parse float error: {err}", err=err)
- source(err)
+ cause(err)
}
Other(descr: &'static str) {
display("Error: {}", descr)
}
/// FromUtf8 Error
FromUtf8Error(err: Utf8Error, source: Vec<u8>) {
- source(err)
+ cause(err)
display(me) -> ("{desc} at index {pos}: {err}", desc="utf8 error", pos=err.valid_up_to(), err=err)
from(err: FromUtf8Error) -> (err.utf8_error().clone(), err.into_bytes())
}
@@ -1059,68 +1075,46 @@ mod test {
#[test]
fn tuple_wrapper_err() {
- let source = "one and a half times pi".parse::<f32>().unwrap_err();
- let err = TupleWrapper::ParseFloatError(source.clone());
- assert_eq!(format!("{}", err), format!("parse float error: {}", source));
- assert_eq!(
- format!("{:?}", err),
- format!("ParseFloatError({:?})", source)
- );
- assert_eq!(
- format!("{:?}", err.source().unwrap()),
- format!("{:?}", source)
- );
+ let cause = "one and a half times pi".parse::<f32>().unwrap_err();
+ let err = TupleWrapper::ParseFloatError(cause.clone());
+ assert_eq!(format!("{}", err), format!("parse float error: {}", cause));
+ assert_eq!(format!("{:?}", err), format!("ParseFloatError({:?})", cause));
+ assert_eq!(format!("{:?}", err.cause().unwrap()), format!("{:?}", cause));
}
#[test]
fn tuple_wrapper_trait_str() {
let desc = "hello";
- let err: &dyn Error = &TupleWrapper::Other(desc);
+ let err: &Error = &TupleWrapper::Other(desc);
assert_eq!(format!("{}", err), format!("Error: {}", desc));
assert_eq!(format!("{:?}", err), format!("Other({:?})", desc));
- assert!(err.source().is_none());
+ assert!(err.cause().is_none());
}
#[test]
fn tuple_wrapper_trait_two_fields() {
let invalid_utf8: Vec<u8> = vec![0, 159, 146, 150];
- let source = String::from_utf8(invalid_utf8.clone())
- .unwrap_err()
- .utf8_error();
- let err: &dyn Error = &TupleWrapper::FromUtf8Error(source.clone(), invalid_utf8.clone());
- assert_eq!(
- format!("{}", err),
- format!(
- "{desc} at index {pos}: {source}",
- desc = "utf8 error",
- pos = source.valid_up_to(),
- source = source
- )
- );
- assert_eq!(
- format!("{:?}", err),
- format!("FromUtf8Error({:?}, {:?})", source, invalid_utf8)
- );
- assert_eq!(
- format!("{:?}", err.source().unwrap()),
- format!("{:?}", source)
- );
+ let cause = String::from_utf8(invalid_utf8.clone()).unwrap_err().utf8_error();
+ let err: &Error = &TupleWrapper::FromUtf8Error(cause.clone(), invalid_utf8.clone());
+ assert_eq!(format!("{}", err), format!("{desc} at index {pos}: {cause}", desc="utf8 error", pos=cause.valid_up_to(), cause=cause));
+ assert_eq!(format!("{:?}", err), format!("FromUtf8Error({:?}, {:?})", cause, invalid_utf8));
+ assert_eq!(format!("{:?}", err.cause().unwrap()), format!("{:?}", cause));
}
#[test]
fn tuple_wrapper_from() {
- let source = "one and a half times pi".parse::<f32>().unwrap_err();
- let err = TupleWrapper::ParseFloatError(source.clone());
- let err_from: TupleWrapper = From::from(source);
+ let cause = "one and a half times pi".parse::<f32>().unwrap_err();
+ let err = TupleWrapper::ParseFloatError(cause.clone());
+ let err_from: TupleWrapper = From::from(cause);
assert_eq!(err_from, err);
}
#[test]
fn tuple_wrapper_custom_from() {
let invalid_utf8: Vec<u8> = vec![0, 159, 146, 150];
- let source = String::from_utf8(invalid_utf8.clone()).unwrap_err();
- let err = TupleWrapper::FromUtf8Error(source.utf8_error().clone(), invalid_utf8);
- let err_from: TupleWrapper = From::from(source);
+ let cause = String::from_utf8(invalid_utf8.clone()).unwrap_err();
+ let err = TupleWrapper::FromUtf8Error(cause.utf8_error().clone(), invalid_utf8);
+ let err_from: TupleWrapper = From::from(cause);
assert_eq!(err_from, err);
}
@@ -1129,7 +1123,7 @@ mod test {
let err: TupleWrapper = From::from("hello");
assert_eq!(format!("{}", err), format!("Discard"));
assert_eq!(format!("{:?}", err), format!("Discard"));
- assert!(err.source().is_none());
+ assert!(err.cause().is_none());
}
#[test]
@@ -1137,7 +1131,7 @@ mod test {
let err: TupleWrapper = TupleWrapper::Singleton;
assert_eq!(format!("{}", err), format!("Just a string"));
assert_eq!(format!("{:?}", err), format!("Singleton"));
- assert!(err.source().is_none());
+ assert!(err.cause().is_none());
}
quick_error! {
@@ -1145,7 +1139,7 @@ mod test {
pub enum StructWrapper {
// Utf8 Error
Utf8Error{ err: Utf8Error, hint: Option<&'static str> } {
- source(err)
+ cause(err)
display(me) -> ("{desc} at index {pos}: {err}", desc="utf8 error", pos=err.valid_up_to(), err=err)
from(err: Utf8Error) -> { err: err, hint: None }
}
@@ -1159,47 +1153,19 @@ mod test {
#[test]
fn struct_wrapper_err() {
let invalid_utf8: Vec<u8> = vec![0, 159, 146, 150];
- let source = String::from_utf8(invalid_utf8.clone())
- .unwrap_err()
- .utf8_error();
- let err: &dyn Error = &StructWrapper::Utf8Error {
- err: source.clone(),
- hint: Some("nonsense"),
- };
- assert_eq!(
- format!("{}", err),
- format!(
- "{desc} at index {pos}: {source}",
- desc = "utf8 error",
- pos = source.valid_up_to(),
- source = source
- )
- );
- assert_eq!(
- format!("{:?}", err),
- format!(
- "Utf8Error {{ err: {:?}, hint: {:?} }}",
- source,
- Some("nonsense")
- )
- );
- assert_eq!(
- format!("{:?}", err.source().unwrap()),
- format!("{:?}", source)
- );
+ let cause = String::from_utf8(invalid_utf8.clone()).unwrap_err().utf8_error();
+ let err: &Error = &StructWrapper::Utf8Error{ err: cause.clone(), hint: Some("nonsense") };
+ assert_eq!(format!("{}", err), format!("{desc} at index {pos}: {cause}", desc="utf8 error", pos=cause.valid_up_to(), cause=cause));
+ assert_eq!(format!("{:?}", err), format!("Utf8Error {{ err: {:?}, hint: {:?} }}", cause, Some("nonsense")));
+ assert_eq!(format!("{:?}", err.cause().unwrap()), format!("{:?}", cause));
}
#[test]
fn struct_wrapper_struct_from() {
let invalid_utf8: Vec<u8> = vec![0, 159, 146, 150];
- let source = String::from_utf8(invalid_utf8.clone())
- .unwrap_err()
- .utf8_error();
- let err = StructWrapper::Utf8Error {
- err: source.clone(),
- hint: None,
- };
- let err_from: StructWrapper = From::from(source);
+ let cause = String::from_utf8(invalid_utf8.clone()).unwrap_err().utf8_error();
+ let err = StructWrapper::Utf8Error{ err: cause.clone(), hint: None };
+ let err_from: StructWrapper = From::from(cause);
assert_eq!(err_from, err);
}
@@ -1208,11 +1174,8 @@ mod test {
let descr = "hello";
let err = StructWrapper::ExcessComma { descr: descr };
assert_eq!(format!("{}", err), format!("Error: {}", descr));
- assert_eq!(
- format!("{:?}", err),
- format!("ExcessComma {{ descr: {:?} }}", descr)
- );
- assert!(err.source().is_none());
+ assert_eq!(format!("{:?}", err), format!("ExcessComma {{ descr: {:?} }}", descr));
+ assert!(err.cause().is_none());
}
quick_error! {
@@ -1243,23 +1206,19 @@ mod test {
#[test]
fn parse_float_error() {
fn parse_float(s: &str) -> Result<f32, ContextErr> {
- Ok(s.parse().context(s)?)
+ Ok(try!(s.parse().context(s)))
}
- assert_eq!(
- format!("{}", parse_float("12ab").unwrap_err()),
- r#"Float error "12ab": invalid float literal"#
- );
+ assert_eq!(format!("{}", parse_float("12ab").unwrap_err()),
+ r#"Float error "12ab": invalid float literal"#);
}
#[test]
fn parse_int_error() {
fn parse_int(s: &str) -> Result<i32, ContextErr> {
- Ok(s.parse().context(s)?)
+ Ok(try!(s.parse().context(s)))
}
- assert_eq!(
- format!("{}", parse_int("12.5").unwrap_err()),
- r#"Int error "12.5": invalid digit found in string"#
- );
+ assert_eq!(format!("{}", parse_int("12.5").unwrap_err()),
+ r#"Int error "12.5": invalid digit found in string"#);
}
#[test]
@@ -1268,24 +1227,25 @@ mod test {
s.parse().context(s).unwrap()
}
assert_eq!(parse_int("12"), 12);
- assert_eq!(
- format!("{:?}", "x".parse::<i32>().context("x")),
- r#"Err(Context("x", ParseIntError { kind: InvalidDigit }))"#
- );
+ assert_eq!(format!("{:?}", "x".parse::<i32>().context("x")),
+ r#"Err(Context("x", ParseIntError { kind: InvalidDigit }))"#);
}
#[test]
fn path_context() {
- fn parse_utf<P: AsRef<Path>>(s: &[u8], p: P) -> Result<(), ContextErr> {
- ::std::str::from_utf8(s).context(p)?;
+ fn parse_utf<P: AsRef<Path>>(s: &[u8], p: P)
+ -> Result<(), ContextErr>
+ {
+ try!(::std::str::from_utf8(s).context(p));
Ok(())
}
let etext = parse_utf(b"a\x80\x80", "/etc").unwrap_err().to_string();
- assert!(etext.starts_with("Path error at \"/etc\": invalid utf-8"));
- let etext = parse_utf(b"\x80\x80", PathBuf::from("/tmp"))
- .unwrap_err()
+ assert!(etext.starts_with(
+ "Path error at \"/etc\": invalid utf-8"));
+ let etext = parse_utf(b"\x80\x80", PathBuf::from("/tmp")).unwrap_err()
.to_string();
- assert!(etext.starts_with("Path error at \"/tmp\": invalid utf-8"));
+ assert!(etext.starts_with(
+ "Path error at \"/tmp\": invalid utf-8"));
}
#[test]
@@ -1299,38 +1259,4 @@ mod test {
}
}
}
-
- #[test]
- #[allow(deprecated)]
- fn cause_struct_wrapper_err() {
- let invalid_utf8: Vec<u8> = vec![0, 159, 146, 150];
- let cause = String::from_utf8(invalid_utf8.clone())
- .unwrap_err()
- .utf8_error();
- let err: &dyn Error = &StructWrapper::Utf8Error {
- err: cause.clone(),
- hint: Some("nonsense"),
- };
- assert_eq!(
- format!("{}", err),
- format!(
- "{desc} at index {pos}: {cause}",
- desc = "utf8 error",
- pos = cause.valid_up_to(),
- cause = cause
- )
- );
- assert_eq!(
- format!("{:?}", err),
- format!(
- "Utf8Error {{ err: {:?}, hint: {:?} }}",
- cause,
- Some("nonsense")
- )
- );
- assert_eq!(
- format!("{:?}", err.cause().unwrap()),
- format!("{:?}", cause)
- );
- }
}
diff --git a/vendor/quick-error/vagga.yaml b/vendor/quick-error/vagga.yaml
index 35eb29675..71b9be44e 100644
--- a/vendor/quick-error/vagga.yaml
+++ b/vendor/quick-error/vagga.yaml
@@ -23,12 +23,12 @@ containers:
- !Install [ca-certificates, build-essential, vim]
- !TarInstall
- url: "https://static.rust-lang.org/dist/rust-1.31.0-x86_64-unknown-linux-gnu.tar.gz"
+ url: "https://static.rust-lang.org/dist/rust-1.16.0-x86_64-unknown-linux-gnu.tar.gz"
script: "./install.sh --prefix=/usr \
--components=rustc,rust-std-x86_64-unknown-linux-gnu,cargo"
- &bulk !Tar
- url: "https://github.com/tailhook/bulk/releases/download/v0.4.10/bulk-v0.4.10.tar.gz"
- sha256: 481513f8a0306a9857d045497fb5b50b50a51e9ff748909ecf7d2bda1de275ab
+ url: "https://github.com/tailhook/bulk/releases/download/v0.4.9/bulk-v0.4.9.tar.gz"
+ sha256: 23471a9986274bb4b7098c03e2eb7e1204171869b72c45385fcee1c64db2d111
path: /
environ:
diff --git a/vendor/quote/.cargo-checksum.json b/vendor/quote/.cargo-checksum.json
index 719c0e74c..dd217b081 100644
--- a/vendor/quote/.cargo-checksum.json
+++ b/vendor/quote/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"a3ccdf97181e3c14c424c9f3a386d7448eb16fc583a3cd0d89d1bb50cf68ec61","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5","README.md":"1aed9e312142718f8e1a37a0a982d8e45398dee835776b0ffa54639efdd75dfb","build.rs":"3733c86ae2733629f873f93c2f45da30164beee8de9ee0833099fac6a05a3e6b","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/ext.rs":"a9fed3a1a4c9d3f2de717ba808af99291b995db2cbf8067f4b6927c39cc62bc6","src/format.rs":"c595015418f35e6992e710441b9999f09b2afe4678b138039d670d100c0bdd86","src/ident_fragment.rs":"3ad27e331af8b54a4b97d19e7ae2bb45e01fb51dc410b24c083345ba6a0b20a8","src/lib.rs":"08555009f5ee3a9f3c81f0bcd08894c9702a993d5bf7c9736e438ed79bc78189","src/runtime.rs":"a7ed70a8f45539ef4be14c535d302ac90668bbe6213c72eb795e5d75fa286191","src/spanned.rs":"43ff919f1d2d27dff6b2db409539b1c697e913eb8c3131cf5de45a845752b7b5","src/to_tokens.rs":"a351a680577d520ebb35905633c77533e8bc4b20642a5c438a51c94b2cc85145","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test.rs":"29221bc5eb9497a2fcda1b44e9535c645f7c7ca84ffc32e6040e57d94dbda2c8","tests/ui/does-not-have-iter-interpolated-dup.rs":"ad13eea21d4cdd2ab6c082f633392e1ff20fb0d1af5f2177041e0bf7f30da695","tests/ui/does-not-have-iter-interpolated-dup.stderr":"833ccb8e0b7f5327eaba20d2f1975c63c8d152a5da9bf7be50e874fd617263dc","tests/ui/does-not-have-iter-interpolated.rs":"83a5b3f240651adcbe4b6e51076d76d653ad439b37442cf4054f1fd3c073f3b7","tests/ui/does-not-have-iter-interpolated.stderr":"4f1dee2aed73362fa761b17430c34d7d050f03cedb49dbe6ef51c456a03c07af","tests/ui/does-not-have-iter-separated.rs":"fe413c48331d5e3a7ae5fef6a5892a90c72f610d54595879eb49d0a94154ba3f","tests/ui/does-not-have-iter-separated.stderr":"a731b784d867ad1503c56511ef4c25f5938a6aab86196df0e7196df5ac08c2d6","tests/ui/does-not-have-iter.rs":"09dc9499d861b63cebb0848b855b78e2dc9497bfde37ba6339f3625ae009a62f","tests/ui/does-not-have-iter.stderr":"ada583e7f9043521e0dbfc013fda9d63853acb982901ee73c4481814bc522610","tests/ui/not-quotable.rs":"5759d0884943417609f28faadc70254a3e2fd3d9bd6ff7297a3fb70a77fafd8a","tests/ui/not-quotable.stderr":"d55354e6a963b5eedce9bc68a1b04bf5b82f966c3c1bb987d1690e74c0c3d69c","tests/ui/not-repeatable.rs":"a4b115c04e4e41049a05f5b69450503fbffeba031218b4189cb931839f7f9a9c","tests/ui/not-repeatable.stderr":"b17b74b25e7fb2e37593a9c11755be033a2d8fd44090f74124c872d91154d7e7","tests/ui/wrong-type-span.rs":"6195e35ea844c0c52ba1cff5d790c3a371af6915d137d377834ad984229ef9ea","tests/ui/wrong-type-span.stderr":"c986de5cb858272636c9e36ae5f57e5ee13589d4f1a73a050b21824010314f8d"},"package":"3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"} \ No newline at end of file
+{"files":{"Cargo.toml":"f4cf791ed3ccb9a3d5840f63af9c8d6b60453d9cd2451bf71c98f413e639b5ac","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"c9a75f18b9ab2927829a208fc6aa2cf4e63b8420887ba29cdb265d6619ae82d5","README.md":"1aed9e312142718f8e1a37a0a982d8e45398dee835776b0ffa54639efdd75dfb","build.rs":"3733c86ae2733629f873f93c2f45da30164beee8de9ee0833099fac6a05a3e6b","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/ext.rs":"9881576cac3e476a4bf04f9b601cf9a53b79399fb0ca9634e8b861ac91709843","src/format.rs":"c595015418f35e6992e710441b9999f09b2afe4678b138039d670d100c0bdd86","src/ident_fragment.rs":"66788c5f57681547d936a9bcf51873b658630c76b2e690df4b3158edf573384a","src/lib.rs":"17db85f0808d31a597ea7f56744b031b5bdba548d9474efd874cacfe6541ff60","src/runtime.rs":"79bbb2fe5b18bc3ec9f8f8143bd120b45680a3027c89f37b0a6a6b97bdaadb21","src/spanned.rs":"43ff919f1d2d27dff6b2db409539b1c697e913eb8c3131cf5de45a845752b7b5","src/to_tokens.rs":"99bb6f467289c32af6c1f7af0d45cc6ac7b31e2436774e616770152a49e6ac0f","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test.rs":"29221bc5eb9497a2fcda1b44e9535c645f7c7ca84ffc32e6040e57d94dbda2c8","tests/ui/does-not-have-iter-interpolated-dup.rs":"ad13eea21d4cdd2ab6c082f633392e1ff20fb0d1af5f2177041e0bf7f30da695","tests/ui/does-not-have-iter-interpolated-dup.stderr":"be67a6c99eed689aa08b46afd0ab3ed4e71fde42e5efed41ab05741710f42fe5","tests/ui/does-not-have-iter-interpolated.rs":"83a5b3f240651adcbe4b6e51076d76d653ad439b37442cf4054f1fd3c073f3b7","tests/ui/does-not-have-iter-interpolated.stderr":"ed05bc229abf5a267ea3d194336a3a845a061bd10c1be7020b9351f81e737946","tests/ui/does-not-have-iter-separated.rs":"fe413c48331d5e3a7ae5fef6a5892a90c72f610d54595879eb49d0a94154ba3f","tests/ui/does-not-have-iter-separated.stderr":"873f4db0ec63606d64d46790f3ee24bdb4dd04379b8e57dc5ac1114cc3775fb3","tests/ui/does-not-have-iter.rs":"09dc9499d861b63cebb0848b855b78e2dc9497bfde37ba6339f3625ae009a62f","tests/ui/does-not-have-iter.stderr":"0e3de2635a79cce9226113fa8cb6bdbdc0ffcd487d7537d4dd0dc8222adf4a8a","tests/ui/not-quotable.rs":"5759d0884943417609f28faadc70254a3e2fd3d9bd6ff7297a3fb70a77fafd8a","tests/ui/not-quotable.stderr":"d55354e6a963b5eedce9bc68a1b04bf5b82f966c3c1bb987d1690e74c0c3d69c","tests/ui/not-repeatable.rs":"a4b115c04e4e41049a05f5b69450503fbffeba031218b4189cb931839f7f9a9c","tests/ui/not-repeatable.stderr":"27149da38cc074953f124e995d76e569e0f718a5431c321cb5d639b0065520b3","tests/ui/wrong-type-span.rs":"6195e35ea844c0c52ba1cff5d790c3a371af6915d137d377834ad984229ef9ea","tests/ui/wrong-type-span.stderr":"c986de5cb858272636c9e36ae5f57e5ee13589d4f1a73a050b21824010314f8d"},"package":"bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179"} \ No newline at end of file
diff --git a/vendor/quote/Cargo.toml b/vendor/quote/Cargo.toml
index f7e56d6e4..b2abe6612 100644
--- a/vendor/quote/Cargo.toml
+++ b/vendor/quote/Cargo.toml
@@ -13,13 +13,16 @@
edition = "2018"
rust-version = "1.31"
name = "quote"
-version = "1.0.20"
+version = "1.0.21"
authors = ["David Tolnay <dtolnay@gmail.com>"]
autobenches = false
description = "Quasi-quoting macro quote!(...)"
documentation = "https://docs.rs/quote/"
readme = "README.md"
-keywords = ["syn"]
+keywords = [
+ "macros",
+ "syn",
+]
categories = ["development-tools::procedural-macro-helpers"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/quote"
diff --git a/vendor/quote/src/ext.rs b/vendor/quote/src/ext.rs
index 9e9b4a505..92c2315b1 100644
--- a/vendor/quote/src/ext.rs
+++ b/vendor/quote/src/ext.rs
@@ -1,7 +1,5 @@
use super::ToTokens;
-
-use std::iter;
-
+use core::iter;
use proc_macro2::{TokenStream, TokenTree};
/// TokenStream extension trait with methods for appending tokens.
diff --git a/vendor/quote/src/ident_fragment.rs b/vendor/quote/src/ident_fragment.rs
index 67e2e3393..cf74024b4 100644
--- a/vendor/quote/src/ident_fragment.rs
+++ b/vendor/quote/src/ident_fragment.rs
@@ -1,6 +1,6 @@
+use core::fmt;
use proc_macro2::{Ident, Span};
use std::borrow::Cow;
-use std::fmt;
/// Specialized formatting trait used by `format_ident!`.
///
diff --git a/vendor/quote/src/lib.rs b/vendor/quote/src/lib.rs
index 2fae3fcfa..35594827f 100644
--- a/vendor/quote/src/lib.rs
+++ b/vendor/quote/src/lib.rs
@@ -81,7 +81,7 @@
//! ```
// Quote types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/quote/1.0.20")]
+#![doc(html_root_url = "https://docs.rs/quote/1.0.21")]
#![allow(
clippy::doc_markdown,
clippy::missing_errors_doc,
diff --git a/vendor/quote/src/runtime.rs b/vendor/quote/src/runtime.rs
index 3f7e6b280..f3cdded3a 100644
--- a/vendor/quote/src/runtime.rs
+++ b/vendor/quote/src/runtime.rs
@@ -1,11 +1,11 @@
use crate::{IdentFragment, ToTokens, TokenStreamExt};
-use std::fmt;
-use std::iter;
-use std::ops::BitOr;
+use core::fmt;
+use core::iter;
+use core::ops::BitOr;
+pub use core::option::Option;
pub use proc_macro2::*;
pub use std::format;
-pub use std::option::Option;
pub struct HasIterator; // True
pub struct ThereIsNoIteratorInRepetition; // False
@@ -48,8 +48,8 @@ pub mod ext {
use super::RepInterp;
use super::{HasIterator as HasIter, ThereIsNoIteratorInRepetition as DoesNotHaveIter};
use crate::ToTokens;
+ use core::slice;
use std::collections::btree_set::{self, BTreeSet};
- use std::slice;
/// Extension trait providing the `quote_into_iter` method on iterators.
pub trait RepIteratorExt: Iterator + Sized {
diff --git a/vendor/quote/src/to_tokens.rs b/vendor/quote/src/to_tokens.rs
index dbb8dfc36..57487217e 100644
--- a/vendor/quote/src/to_tokens.rs
+++ b/vendor/quote/src/to_tokens.rs
@@ -1,11 +1,9 @@
use super::TokenStreamExt;
-
+use core::iter;
+use proc_macro2::{Group, Ident, Literal, Punct, Span, TokenStream, TokenTree};
use std::borrow::Cow;
-use std::iter;
use std::rc::Rc;
-use proc_macro2::{Group, Ident, Literal, Punct, Span, TokenStream, TokenTree};
-
/// Types that can be interpolated inside a `quote!` invocation.
///
/// [`quote!`]: macro.quote.html
diff --git a/vendor/quote/tests/ui/does-not-have-iter-interpolated-dup.stderr b/vendor/quote/tests/ui/does-not-have-iter-interpolated-dup.stderr
index bcd631db1..8087879af 100644
--- a/vendor/quote/tests/ui/does-not-have-iter-interpolated-dup.stderr
+++ b/vendor/quote/tests/ui/does-not-have-iter-interpolated-dup.stderr
@@ -7,4 +7,4 @@ error[E0308]: mismatched types
| expected struct `HasIterator`, found struct `ThereIsNoIteratorInRepetition`
| expected due to this
|
- = note: this error originates in the macro `$crate::quote_token_with_context` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::quote_token_with_context` which comes from the expansion of the macro `quote` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/quote/tests/ui/does-not-have-iter-interpolated.stderr b/vendor/quote/tests/ui/does-not-have-iter-interpolated.stderr
index 799837bcd..2dcf206dd 100644
--- a/vendor/quote/tests/ui/does-not-have-iter-interpolated.stderr
+++ b/vendor/quote/tests/ui/does-not-have-iter-interpolated.stderr
@@ -7,4 +7,4 @@ error[E0308]: mismatched types
| expected struct `HasIterator`, found struct `ThereIsNoIteratorInRepetition`
| expected due to this
|
- = note: this error originates in the macro `$crate::quote_token_with_context` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::quote_token_with_context` which comes from the expansion of the macro `quote` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/quote/tests/ui/does-not-have-iter-separated.stderr b/vendor/quote/tests/ui/does-not-have-iter-separated.stderr
index aa2e6938f..87a19fe07 100644
--- a/vendor/quote/tests/ui/does-not-have-iter-separated.stderr
+++ b/vendor/quote/tests/ui/does-not-have-iter-separated.stderr
@@ -7,4 +7,4 @@ error[E0308]: mismatched types
| expected struct `HasIterator`, found struct `ThereIsNoIteratorInRepetition`
| expected due to this
|
- = note: this error originates in the macro `$crate::quote_token_with_context` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::quote_token_with_context` which comes from the expansion of the macro `quote` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/quote/tests/ui/does-not-have-iter.stderr b/vendor/quote/tests/ui/does-not-have-iter.stderr
index c2692fe5d..32aa62d9b 100644
--- a/vendor/quote/tests/ui/does-not-have-iter.stderr
+++ b/vendor/quote/tests/ui/does-not-have-iter.stderr
@@ -7,4 +7,4 @@ error[E0308]: mismatched types
| expected struct `HasIterator`, found struct `ThereIsNoIteratorInRepetition`
| expected due to this
|
- = note: this error originates in the macro `$crate::quote_token_with_context` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `$crate::quote_token_with_context` which comes from the expansion of the macro `quote` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/quote/tests/ui/not-repeatable.stderr b/vendor/quote/tests/ui/not-repeatable.stderr
index cd5a1e4d1..f75351e33 100644
--- a/vendor/quote/tests/ui/not-repeatable.stderr
+++ b/vendor/quote/tests/ui/not-repeatable.stderr
@@ -1,47 +1,35 @@
error[E0599]: the method `quote_into_iter` exists for struct `Ipv4Addr`, but its trait bounds were not satisfied
- --> tests/ui/not-repeatable.rs:7:13
- |
-3 | struct Ipv4Addr;
- | ----------------
- | |
- | method `quote_into_iter` not found for this
- | doesn't satisfy `Ipv4Addr: Iterator`
- | doesn't satisfy `Ipv4Addr: ToTokens`
- | doesn't satisfy `Ipv4Addr: quote::__private::ext::RepIteratorExt`
- | doesn't satisfy `Ipv4Addr: quote::__private::ext::RepToTokensExt`
+ --> tests/ui/not-repeatable.rs:7:13
+ |
+3 | struct Ipv4Addr;
+ | ---------------
+ | |
+ | method `quote_into_iter` not found for this struct
+ | doesn't satisfy `Ipv4Addr: Iterator`
+ | doesn't satisfy `Ipv4Addr: ToTokens`
+ | doesn't satisfy `Ipv4Addr: ext::RepIteratorExt`
+ | doesn't satisfy `Ipv4Addr: ext::RepToTokensExt`
...
-7 | let _ = quote! { #(#ip)* };
- | ^^^^^^^^^^^^^^^^^^ method cannot be called on `Ipv4Addr` due to unsatisfied trait bounds
- |
- = note: the following trait bounds were not satisfied:
- `Ipv4Addr: Iterator`
- which is required by `Ipv4Addr: quote::__private::ext::RepIteratorExt`
- `&Ipv4Addr: Iterator`
- which is required by `&Ipv4Addr: quote::__private::ext::RepIteratorExt`
- `Ipv4Addr: ToTokens`
- which is required by `Ipv4Addr: quote::__private::ext::RepToTokensExt`
- `&mut Ipv4Addr: Iterator`
- which is required by `&mut Ipv4Addr: quote::__private::ext::RepIteratorExt`
+7 | let _ = quote! { #(#ip)* };
+ | ^^^^^^^^^^^^^^^^^^ method cannot be called on `Ipv4Addr` due to unsatisfied trait bounds
+ |
+ = note: the following trait bounds were not satisfied:
+ `Ipv4Addr: Iterator`
+ which is required by `Ipv4Addr: ext::RepIteratorExt`
+ `&Ipv4Addr: Iterator`
+ which is required by `&Ipv4Addr: ext::RepIteratorExt`
+ `Ipv4Addr: ToTokens`
+ which is required by `Ipv4Addr: ext::RepToTokensExt`
+ `&mut Ipv4Addr: Iterator`
+ which is required by `&mut Ipv4Addr: ext::RepIteratorExt`
note: the following traits must be implemented
- --> $RUST/core/src/iter/traits/iterator.rs
- |
- | / pub trait Iterator {
- | | /// The type of the elements being iterated over.
- | | #[stable(feature = "rust1", since = "1.0.0")]
- | | type Item;
-... |
- | | }
- | | }
- | |__^
- |
- ::: src/to_tokens.rs
- |
- | / pub trait ToTokens {
- | | /// Write `self` to the given `TokenStream`.
- | | ///
- | | /// The token append methods provided by the [`TokenStreamExt`] extension
-... |
- | | }
- | | }
- | |_^
- = note: this error originates in the macro `$crate::quote_bind_into_iter` (in Nightly builds, run with -Z macro-backtrace for more info)
+ --> $RUST/core/src/iter/traits/iterator.rs
+ |
+ | pub trait Iterator {
+ | ^^^^^^^^^^^^^^^^^^
+ |
+ ::: src/to_tokens.rs
+ |
+ | pub trait ToTokens {
+ | ^^^^^^^^^^^^^^^^^^
+ = note: this error originates in the macro `$crate::quote_bind_into_iter` which comes from the expansion of the macro `quote` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/redox_syscall/.cargo-checksum.json b/vendor/redox_syscall/.cargo-checksum.json
index 223c03b3c..9c62b6521 100644
--- a/vendor/redox_syscall/.cargo-checksum.json
+++ b/vendor/redox_syscall/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"69f08bb56c6fc199b61cbe959b6e9f93df554f5d4e87d5e64551116cedf15067","LICENSE":"efcfee7981ff72431fffb06925cad00a23dce079ed4354f61030ad5abdb78829","README.md":"9161f18ba7f69b4ca51e844aee8ffb8237513a468c5c3b1f3a5f989044f895ac","src/arch/aarch64.rs":"61b5811b47a29257c3b5e15e7d9d15e7143bad99fbe29f0cb17ead9cbc17186f","src/arch/nonredox.rs":"9eac0fa2cf9eae07f0cafa2dd63c4a820791897a3de9ad1a933ab4f53458dbd8","src/arch/riscv64.rs":"20bf9a8db779059773b113643d0cb3737fbb5d57f45ee39b8ae9d3396b6ef636","src/arch/x86_64.rs":"f40bad2680fd5e7f100ee1afaa805f33dd0e12ec8786b956d47204f66771801d","src/call.rs":"0d3e32e33ecdf75963e5d244f9e86e94047d155c5de5fa3c0085faf18ed97b33","src/daemon.rs":"11cd633298fe2eb89906a4d8c12ab34e4ee355f759e1216cee536f24c7c679b2","src/data.rs":"bd4545d4c2fcc59ff26ae52ad7f773a697d5ccf639a2ffc253cece6b31e94d51","src/error.rs":"ef20f3817f997a1aeb7114628407f19cb8bc13c555d4e093918f38a5d098f798","src/flag.rs":"f07d6a7aa6766d30d0a303c7b3bda5bb4c473dd9dd51687cf8e0631b1bf3ec9d","src/io/dma.rs":"fbc46e924d5913f5a3fb723751d7a9dd1b079ccf058500fde4957aaf9fa7dd1c","src/io/io.rs":"e1d454ff47efac70fdaa709251a5a9c1c5637f931994ba3bf6a38c6db9145822","src/io/mmio.rs":"12d0fb4d4f45097bf2c14f73cb1ce21325eae193b537e9f18af73ed5281b5e63","src/io/mod.rs":"62438ff452c266692ea8fcfc4b6aad73184a1f67276327a4d5f71c4fbbaeab55","src/io/pio.rs":"9ee6f2229b700d1c45b4c8c6242bd99fe69634e16dcd5843d9e8d1c958047406","src/lib.rs":"d30eec6d2480c6dbc74221a10cc662a649bd24dc3ac640bbcdab9e416aab727f","src/number.rs":"fe7b47b06566aa1f8a75f50b685801259df03a1a5c85b91817b4552583cd7862","src/scheme/generate.sh":"dde4e30f4e0223fb1a24ed486a6c36e624c854dbf890862cb6866f4fa3c7a6eb","src/scheme/mod.rs":"cb622405deb0aef4ab04499ea1adfd338c9c5dd9c31a1fe9989786dbf69b49d8","src/scheme/scheme.rs":"30263996f0b4930edd76dace5f5750e48229066bc888bc13365846688d0a870b","src/scheme/scheme_block.rs":"b7a761e4349eb87d106c8af14894e8c4272769b9eb235cd500b075ac1f823683","src/scheme/scheme_block_mut.rs":"4a4fc03bce14757b64006b9bc3fa2779e95382b2d99579870146ee0c3be3f46c","src/scheme/scheme_mut.rs":"e6f0671b77f1bf5263e497c69dec553352249b75d52af62ac19477ba5127f803","src/scheme/seek.rs":"94e044de47b0f00eb0c2aea3fb21001ac2b9aa1e4b20d73fd54163fe92fa63f7","src/tests.rs":"416a428ba6a9c5f0d8f4c3dbe91d9aa940a04472ec9a2d17bc5a66c455b4416f"},"package":"62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42"} \ No newline at end of file
+{"files":{"Cargo.toml":"0e92420005ca47c7854d02e9b637262cc13f800d48614aeef69be2f1119fc19b","LICENSE":"efcfee7981ff72431fffb06925cad00a23dce079ed4354f61030ad5abdb78829","README.md":"9161f18ba7f69b4ca51e844aee8ffb8237513a468c5c3b1f3a5f989044f895ac","src/arch/aarch64.rs":"61b5811b47a29257c3b5e15e7d9d15e7143bad99fbe29f0cb17ead9cbc17186f","src/arch/nonredox.rs":"9eac0fa2cf9eae07f0cafa2dd63c4a820791897a3de9ad1a933ab4f53458dbd8","src/arch/riscv64.rs":"20bf9a8db779059773b113643d0cb3737fbb5d57f45ee39b8ae9d3396b6ef636","src/arch/x86.rs":"7802186155c06638235e49e11f4c046b68f1d8145b2c849adec84497eb3cb70f","src/arch/x86_64.rs":"f40bad2680fd5e7f100ee1afaa805f33dd0e12ec8786b956d47204f66771801d","src/call.rs":"0d3e32e33ecdf75963e5d244f9e86e94047d155c5de5fa3c0085faf18ed97b33","src/daemon.rs":"11cd633298fe2eb89906a4d8c12ab34e4ee355f759e1216cee536f24c7c679b2","src/data.rs":"bd4545d4c2fcc59ff26ae52ad7f773a697d5ccf639a2ffc253cece6b31e94d51","src/error.rs":"ef20f3817f997a1aeb7114628407f19cb8bc13c555d4e093918f38a5d098f798","src/flag.rs":"f07d6a7aa6766d30d0a303c7b3bda5bb4c473dd9dd51687cf8e0631b1bf3ec9d","src/io/dma.rs":"fbc46e924d5913f5a3fb723751d7a9dd1b079ccf058500fde4957aaf9fa7dd1c","src/io/io.rs":"e1d454ff47efac70fdaa709251a5a9c1c5637f931994ba3bf6a38c6db9145822","src/io/mmio.rs":"12d0fb4d4f45097bf2c14f73cb1ce21325eae193b537e9f18af73ed5281b5e63","src/io/mod.rs":"79c2fce4fd6d75f3b9169df64b7a605feff31fab2e5ed81984ae085a1d07c0c4","src/io/pio.rs":"9ee6f2229b700d1c45b4c8c6242bd99fe69634e16dcd5843d9e8d1c958047406","src/lib.rs":"0bc9c8ca513dc6f0d9ef587bc53587114c31c1217d6b620399fc0fcbc54bf658","src/number.rs":"fe7b47b06566aa1f8a75f50b685801259df03a1a5c85b91817b4552583cd7862","src/scheme/generate.sh":"dde4e30f4e0223fb1a24ed486a6c36e624c854dbf890862cb6866f4fa3c7a6eb","src/scheme/mod.rs":"cb622405deb0aef4ab04499ea1adfd338c9c5dd9c31a1fe9989786dbf69b49d8","src/scheme/scheme.rs":"30263996f0b4930edd76dace5f5750e48229066bc888bc13365846688d0a870b","src/scheme/scheme_block.rs":"b7a761e4349eb87d106c8af14894e8c4272769b9eb235cd500b075ac1f823683","src/scheme/scheme_block_mut.rs":"4a4fc03bce14757b64006b9bc3fa2779e95382b2d99579870146ee0c3be3f46c","src/scheme/scheme_mut.rs":"e6f0671b77f1bf5263e497c69dec553352249b75d52af62ac19477ba5127f803","src/scheme/seek.rs":"94e044de47b0f00eb0c2aea3fb21001ac2b9aa1e4b20d73fd54163fe92fa63f7","src/tests.rs":"416a428ba6a9c5f0d8f4c3dbe91d9aa940a04472ec9a2d17bc5a66c455b4416f"},"package":"fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a"} \ No newline at end of file
diff --git a/vendor/redox_syscall/Cargo.toml b/vendor/redox_syscall/Cargo.toml
index c6a9e03a4..74e23e8c9 100644
--- a/vendor/redox_syscall/Cargo.toml
+++ b/vendor/redox_syscall/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "redox_syscall"
-version = "0.2.13"
+version = "0.2.16"
authors = ["Jeremy Soller <jackpot51@gmail.com>"]
description = "A Rust library to access raw Redox system calls"
documentation = "https://docs.rs/redox_syscall"
diff --git a/vendor/redox_syscall/src/arch/x86.rs b/vendor/redox_syscall/src/arch/x86.rs
new file mode 100644
index 000000000..2f9301e0e
--- /dev/null
+++ b/vendor/redox_syscall/src/arch/x86.rs
@@ -0,0 +1,105 @@
+use core::{mem, slice};
+use core::arch::asm;
+use core::ops::{Deref, DerefMut};
+
+use super::error::{Error, Result};
+
+macro_rules! syscall {
+ ($($name:ident($a:ident, $($b:ident, $($c:ident, $($d:ident, $($e:ident, $($f:ident, )?)?)?)?)?);)+) => {
+ $(
+ pub unsafe fn $name(mut $a: usize, $($b: usize, $($c: usize, $($d: usize, $($e: usize, $($f: usize)?)?)?)?)?) -> Result<usize> {
+ asm!(
+ "int 0x80",
+ inout("eax") $a,
+ $(
+ in("ebx") $b,
+ $(
+ in("ecx") $c,
+ $(
+ in("edx") $d,
+ $(
+ in("esi") $e,
+ $(
+ in("edi") $f,
+ )?
+ )?
+ )?
+ )?
+ )?
+ options(nostack),
+ );
+
+ Error::demux($a)
+ }
+ )+
+ };
+}
+
+syscall! {
+ syscall0(a,);
+ syscall1(a, b,);
+ syscall2(a, b, c,);
+ syscall3(a, b, c, d,);
+ // Must be done custom because LLVM reserves ESI
+ //syscall4(a, b, c, d, e,);
+ //syscall5(a, b, c, d, e, f,);
+}
+
+pub unsafe fn syscall4(mut a: usize, b: usize, c: usize, d: usize, e: usize)
+ -> Result<usize> {
+ asm!(
+ "xchg esi, {e}
+ int 0x80
+ xchg esi, {e}",
+ e = in(reg) e,
+ inout("eax") a,
+ in("ebx") b,
+ in("ecx") c,
+ in("edx") d,
+ options(nostack),
+ );
+
+ Error::demux(a)
+}
+
+pub unsafe fn syscall5(mut a: usize, b: usize, c: usize, d: usize, e: usize, f: usize)
+ -> Result<usize> {
+ asm!(
+ "xchg esi, {e}
+ int 0x80
+ xchg esi, {e}",
+ e = in(reg) e,
+ inout("eax") a,
+ in("ebx") b,
+ in("ecx") c,
+ in("edx") d,
+ in("edi") f,
+ options(nostack),
+ );
+
+ Error::demux(a)
+}
+
+#[derive(Clone, Copy, Debug, Default)]
+#[repr(packed)]
+pub struct EnvRegisters {
+ pub fsbase: u32,
+ pub gsbase: u32,
+}
+
+impl Deref for EnvRegisters {
+ type Target = [u8];
+ fn deref(&self) -> &[u8] {
+ unsafe {
+ slice::from_raw_parts(self as *const EnvRegisters as *const u8, mem::size_of::<EnvRegisters>())
+ }
+ }
+}
+
+impl DerefMut for EnvRegisters {
+ fn deref_mut(&mut self) -> &mut [u8] {
+ unsafe {
+ slice::from_raw_parts_mut(self as *mut EnvRegisters as *mut u8, mem::size_of::<EnvRegisters>())
+ }
+ }
+}
diff --git a/vendor/redox_syscall/src/io/mod.rs b/vendor/redox_syscall/src/io/mod.rs
index a9cd4c86d..a225f0650 100644
--- a/vendor/redox_syscall/src/io/mod.rs
+++ b/vendor/redox_syscall/src/io/mod.rs
@@ -4,12 +4,12 @@ pub use self::dma::*;
pub use self::io::*;
pub use self::mmio::*;
-#[cfg(target_arch = "x86_64")]
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
pub use self::pio::*;
mod dma;
mod io;
mod mmio;
-#[cfg(target_arch = "x86_64")]
+#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
mod pio;
diff --git a/vendor/redox_syscall/src/lib.rs b/vendor/redox_syscall/src/lib.rs
index 050ee8160..9c5939830 100644
--- a/vendor/redox_syscall/src/lib.rs
+++ b/vendor/redox_syscall/src/lib.rs
@@ -26,7 +26,7 @@ mod arch;
mod arch;
#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "x86"))]
-#[path="arch/nonredox.rs"]
+#[path="arch/x86.rs"]
mod arch;
#[cfg(all(any(target_os = "none", target_os = "redox"), target_arch = "x86_64"))]
diff --git a/vendor/regex-syntax/.cargo-checksum.json b/vendor/regex-syntax/.cargo-checksum.json
index 127f562f7..881437810 100644
--- a/vendor/regex-syntax/.cargo-checksum.json
+++ b/vendor/regex-syntax/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"e6d037be81ec5e78c7cce40650b1082f07e43882ce6ad7c360b5d7f804003dbb","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"67a3e673a9da6826fd4db5be6902841c821b52b98dc22c300f6e327872392b0a","benches/bench.rs":"d2b6ae5b939abd6093064f144b981b7739d7f474ec0698a1268052fc92406635","src/ast/mod.rs":"b0fe9af7ae15d9448246c204977634e5827bbae247bd59ab2e61411996fc68d6","src/ast/parse.rs":"ba7b2c46d18ada21fae986e2202d638515c8be3e275657a6b87b4d86d5054cd3","src/ast/print.rs":"d12f2cc75cd62f35623e1eb7a77ab8ac804b971752082700d2c4f550f834b249","src/ast/visitor.rs":"8ffcad13eb2c2a2f745f7bc8d823bd2f0bb728bd150f439455be5a245731f1d2","src/either.rs":"1758e3edd056884eccadd995708d1e374ba9aa65846bd0e13b1aae852607c560","src/error.rs":"cc99a11392b52f7665ff5ee8ea350f7386ed7c6c6bedd46e216b2f396785317f","src/hir/interval.rs":"2ffab258f204fe47bc5fe9ca84376fcd9ecb4929649f683a9412f2e382e908dc","src/hir/literal/mod.rs":"f3e9b291af6a143ab693fe0b63a7c070a2a41935c15b38ecf2cfa8ab0ab2e89c","src/hir/mod.rs":"51f1642b75e298b0847855d7f490eca2e8f445c9039dd3aa91491f533ec83f15","src/hir/print.rs":"651b5d9776532a78612a5f9081372a57bad693890639ac19e3128b4defa96662","src/hir/translate.rs":"de10ee2928001567f80c6ab602de0e280a8e3a1e615cf73def91d2dcc4f9f199","src/hir/visitor.rs":"e5bf7f8c09f6155e59c9d676fe25437f7e3700f9bf5d91101d7e246a64c11d5a","src/lib.rs":"0fc94332a971691862ca17531881302b10ef6fa4aba65c123f0b69ffb14b989a","src/parser.rs":"ce2392d748d909c2eb92f3bf7ad50065c59a615e6c46f81e87f48e9d87817061","src/unicode.rs":"3b486b36e2ffcae306cb6d7387a82069163c7269597ff2b50589a05462464c36","src/unicode_tables/LICENSE-UNICODE":"74db5baf44a41b1000312c673544b3374e4198af5605c7f9080a402cec42cfa3","src/unicode_tables/age.rs":"b0932a020d3386478dd2f4839c59e30c525e8591735052b9e791e1ce3a2e2b72","src/unicode_tables/case_folding_simple.rs":"6d1f3d095132639228faf4806d05308c70ce2baa68cce69dca01ea159c4eaa15","src/unicode_tables/general_category.rs":"d21877600d387b8a0c5fbb0942458d0330c69aad6565e28134b8a1a371d2f4f4","src/unicode_tables/grapheme_cluster_break.rs":"f03a8be4a00265b568ca2a41d99f66a5d0f5fb423cb4113494153423a1123cda","src/unicode_tables/mod.rs":"26c837099cd934c8062e24bc9a0aaecf15fe1de03f9c6da3f3e1e5ac3ca24bee","src/unicode_tables/perl_decimal.rs":"e39a5934b504eb3282ccb26bbf50ecd764e720120eb7cf6c43662a2321665ab5","src/unicode_tables/perl_space.rs":"014e5d92b66730557e408c2d5c9b2f46d3d288aa85400ab9193c218c7b98ad21","src/unicode_tables/perl_word.rs":"ddf126f39171776ef83151d7a0dbc41da8dd09186723211fb966c4b304247a5e","src/unicode_tables/property_bool.rs":"21f72bd9f3955e3443549ef6609418817ae6df3c81fb5be90a0ceee9d7d3002d","src/unicode_tables/property_names.rs":"504ea44604cd15a7e827a89066bb81a847dd5c57cef360d9f4a914cf22afcf36","src/unicode_tables/property_values.rs":"4d793ad1b664c1913db146897c8eb4fa29d181b821f096de90dc889b738edb88","src/unicode_tables/script.rs":"5a7d2a958b93056081b8b2eb87c3a5609579ad791ad5b0c42959362ce6ea5b31","src/unicode_tables/script_extension.rs":"1d5f1985f7dcae833e78c3858231666b535bf60e032cfacc09d014c22bda6690","src/unicode_tables/sentence_break.rs":"cd5f0eb7ab6b0ec1c1fb4d78496dfecd691d0d0b76495538b9f376645a753deb","src/unicode_tables/word_break.rs":"eabeacfde7558cfe7b1556b0221f09c65f049de0b08c7cd464c1669040610a6b","src/utf8.rs":"f145b2cb0324e6a39260db685fdf2d88675dead54c5b808fb1b7f73a4b530d66","test":"8a9bd1bd9fb389e08288f951319a9bbb0d4c5284a2ba63cbdab7f6afa2c2f76e"},"package":"49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"} \ No newline at end of file
+{"files":{"Cargo.toml":"91aed5795d8faeb9a9f43face557622d92417a17bb453b5f12ee87073040fb7d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"67a3e673a9da6826fd4db5be6902841c821b52b98dc22c300f6e327872392b0a","benches/bench.rs":"d2b6ae5b939abd6093064f144b981b7739d7f474ec0698a1268052fc92406635","src/ast/mod.rs":"91b277a9bb979f85a44a67e39f17f77bde033764eea1f1a93aad1b61f1250089","src/ast/parse.rs":"150b42e944f766fdca70d654dbe32f8a17498432729c78b9eb50b73ae7f91f86","src/ast/print.rs":"d12f2cc75cd62f35623e1eb7a77ab8ac804b971752082700d2c4f550f834b249","src/ast/visitor.rs":"1a7b473147e4f6b89623ef1744a9e87f665bcf160fe08a33ce8e35011811ba71","src/either.rs":"1758e3edd056884eccadd995708d1e374ba9aa65846bd0e13b1aae852607c560","src/error.rs":"b3c5903a8937d2aff229a3ec65d4571d01ec4d9874c9a242ed6562c32702bcbd","src/hir/interval.rs":"e767fed363bebe4bbda0d78b8f07e73f321eaf4f837e2d7bd14a1617387e9a89","src/hir/literal/mod.rs":"ffe9a0aff7827f97bffd29eb2f4ba96627b16953161dce6c50a2f760e76bbd98","src/hir/mod.rs":"7f83c828223a54d236d348e48d5cedf015c904812110b6c38e9d52039c2b1572","src/hir/print.rs":"651b5d9776532a78612a5f9081372a57bad693890639ac19e3128b4defa96662","src/hir/translate.rs":"c7cd9693f73760263fd49a968714d27e7985ebe840211b2d83bca6686b0602a8","src/hir/visitor.rs":"e5bf7f8c09f6155e59c9d676fe25437f7e3700f9bf5d91101d7e246a64c11d5a","src/lib.rs":"a004f65196dd5745b3112e4acc8c467b18495cecac64a58d6608b35de67371cb","src/parser.rs":"0dfb553a152e008b2755f115663e553ed99c4b8e6a4dcbcad1662737534de49d","src/unicode.rs":"2b575c75dcb8fd6becb06f2a8faa33d6f54779708bc6b103070b8acb2b3323bb","src/unicode_tables/LICENSE-UNICODE":"74db5baf44a41b1000312c673544b3374e4198af5605c7f9080a402cec42cfa3","src/unicode_tables/age.rs":"9b36dd7d359d2fa21e6ea9734a37415ba0ba9469e27b8536308f5b79139d4191","src/unicode_tables/case_folding_simple.rs":"52b74161fa1e8f2db66737156e081cece82c1f503dee604f901b2df095beb90d","src/unicode_tables/general_category.rs":"c10beb78cdab6ec14846573bfb7965b5b3a4c114d20352c21a666d8de740a049","src/unicode_tables/grapheme_cluster_break.rs":"10ba739e06f880570eaf90bddd78ec468d939c0be7cd6e39f52cfa68371a9885","src/unicode_tables/mod.rs":"26c837099cd934c8062e24bc9a0aaecf15fe1de03f9c6da3f3e1e5ac3ca24bee","src/unicode_tables/perl_decimal.rs":"2084b101c615ff368a47af72df760003a76e869dfc191e0224cd024bb88165ed","src/unicode_tables/perl_space.rs":"75b9f3c9e302fd0994ee6e9ee21ee0ab36efc513cfd083647aed9854b977a33d","src/unicode_tables/perl_word.rs":"c588d6b29b98c1160452b54e9275d43583bc3454e29aee1c07e6a18389011a9c","src/unicode_tables/property_bool.rs":"319740ac6074b2d4e6e22bf4dde7db2feb569f9b71467c893fb2553d149b9f1d","src/unicode_tables/property_names.rs":"f33b186d7d8ee5342d74ef214f7b2cfbb24345233fa49a2abf2578cae61fbdd3","src/unicode_tables/property_values.rs":"716eb87716a9a4b2a9ef2c2242d6831692564875c8e218ffa758266ca33c88b6","src/unicode_tables/script.rs":"f6020589e33bd3a058468a22ce51391f6e512f9eb88c8ac60635fae7cd641ee2","src/unicode_tables/script_extension.rs":"2ba03d13813161a064b11e9f87b87685fbf29699ef553acc6112606b7ca98169","src/unicode_tables/sentence_break.rs":"bf7635623e4dbe0195789ed8b21f83ce3394ed2c445a3005f929f4f75b2a83c3","src/unicode_tables/word_break.rs":"8f7e261a67d1adb32ea627e43cb61d6566c33a4e229113d911e86941e6997a41","src/utf8.rs":"de854b3bfb3f7dbefc422f6a25935aaeef55ead2c35386c712a1fe9bf81a7b6f","test":"8a9bd1bd9fb389e08288f951319a9bbb0d4c5284a2ba63cbdab7f6afa2c2f76e"},"package":"a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"} \ No newline at end of file
diff --git a/vendor/regex-syntax/Cargo.toml b/vendor/regex-syntax/Cargo.toml
index 16ac50e74..10e6bbf53 100644
--- a/vendor/regex-syntax/Cargo.toml
+++ b/vendor/regex-syntax/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "regex-syntax"
-version = "0.6.26"
+version = "0.6.27"
authors = ["The Rust Project Developers"]
description = "A regular expression parser."
homepage = "https://github.com/rust-lang/regex"
diff --git a/vendor/regex-syntax/src/ast/mod.rs b/vendor/regex-syntax/src/ast/mod.rs
index 9b9127b1f..387ea3a69 100644
--- a/vendor/regex-syntax/src/ast/mod.rs
+++ b/vendor/regex-syntax/src/ast/mod.rs
@@ -15,7 +15,7 @@ mod visitor;
/// An error that occurred while parsing a regular expression into an abstract
/// syntax tree.
///
-/// Note that note all ASTs represents a valid regular expression. For example,
+/// Note that not all ASTs represents a valid regular expression. For example,
/// an AST is constructed without error for `\p{Quux}`, but `Quux` is not a
/// valid Unicode property name. That particular error is reported when
/// translating an AST to the high-level intermediate representation (`HIR`).
@@ -385,7 +385,7 @@ impl PartialOrd for Position {
impl Span {
/// Create a new span with the given positions.
pub fn new(start: Position, end: Position) -> Span {
- Span { start: start, end: end }
+ Span { start, end }
}
/// Create a new span using the given position as the start and end.
@@ -427,7 +427,7 @@ impl Position {
///
/// `column` is the approximate column number, starting at `1`.
pub fn new(offset: usize, line: usize, column: usize) -> Position {
- Position { offset: offset, line: line, column: column }
+ Position { offset, line, column }
}
}
diff --git a/vendor/regex-syntax/src/ast/parse.rs b/vendor/regex-syntax/src/ast/parse.rs
index 9824661c9..6e9c9aca0 100644
--- a/vendor/regex-syntax/src/ast/parse.rs
+++ b/vendor/regex-syntax/src/ast/parse.rs
@@ -202,7 +202,7 @@ impl ParserBuilder {
/// Enable verbose mode in the regular expression.
///
- /// When enabled, verbose mode permits insigificant whitespace in many
+ /// When enabled, verbose mode permits insignificant whitespace in many
/// places in the regular expression, as well as comments. Comments are
/// started using `#` and continue until the end of the line.
///
@@ -366,7 +366,7 @@ impl Parser {
impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
/// Build an internal parser from a parser configuration and a pattern.
fn new(parser: P, pattern: &'s str) -> ParserI<'s, P> {
- ParserI { parser: parser, pattern: pattern }
+ ParserI { parser, pattern }
}
/// Return a reference to the parser state.
@@ -381,11 +381,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
/// Create a new error with the given span and error type.
fn error(&self, span: Span, kind: ast::ErrorKind) -> ast::Error {
- ast::Error {
- kind: kind,
- pattern: self.pattern().to_string(),
- span: span,
- }
+ ast::Error { kind, pattern: self.pattern().to_string(), span }
}
/// Return the current offset of the parser.
@@ -481,11 +477,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
column = column.checked_add(1).unwrap();
}
offset += self.char().len_utf8();
- self.parser().pos.set(Position {
- offset: offset,
- line: line,
- column: column,
- });
+ self.parser().pos.set(Position { offset, line, column });
self.pattern()[self.offset()..].chars().next().is_some()
}
@@ -703,8 +695,8 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
.unwrap_or(old_ignore_whitespace);
self.parser().stack_group.borrow_mut().push(
GroupState::Group {
- concat: concat,
- group: group,
+ concat,
+ group,
ignore_whitespace: old_ignore_whitespace,
},
);
@@ -899,12 +891,8 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
#[inline(never)]
fn unclosed_class_error(&self) -> ast::Error {
for state in self.parser().stack_class.borrow().iter().rev() {
- match *state {
- ClassState::Open { ref set, .. } => {
- return self
- .error(set.span, ast::ErrorKind::ClassUnclosed);
- }
- _ => {}
+ if let ClassState::Open { ref set, .. } = *state {
+ return self.error(set.span, ast::ErrorKind::ClassUnclosed);
}
}
// We are guaranteed to have a non-empty stack with at least
@@ -950,8 +938,8 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
};
let span = Span::new(lhs.span().start, rhs.span().end);
ast::ClassSet::BinaryOp(ast::ClassSetBinaryOp {
- span: span,
- kind: kind,
+ span,
+ kind,
lhs: Box::new(lhs),
rhs: Box::new(rhs),
})
@@ -1010,7 +998,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
let ast = self.pop_group_end(concat)?;
NestLimiter::new(self).check(&ast)?;
Ok(ast::WithComments {
- ast: ast,
+ ast,
comments: mem::replace(
&mut *self.parser().comments.borrow_mut(),
vec![],
@@ -1066,9 +1054,9 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
span: ast.span().with_end(self.pos()),
op: ast::RepetitionOp {
span: Span::new(op_start, self.pos()),
- kind: kind,
+ kind,
},
- greedy: greedy,
+ greedy,
ast: Box::new(ast),
}));
Ok(concat)
@@ -1170,7 +1158,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
span: op_span,
kind: ast::RepetitionKind::Range(range),
},
- greedy: greedy,
+ greedy,
ast: Box::new(ast),
}));
Ok(concat)
@@ -1235,7 +1223,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
}
Ok(Either::Left(ast::SetFlags {
span: Span { end: self.pos(), ..open_span },
- flags: flags,
+ flags,
}))
} else {
assert_eq!(char_end, ':');
@@ -1428,7 +1416,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
let ast = Primitive::Literal(ast::Literal {
span: self.span_char(),
kind: ast::LiteralKind::Verbatim,
- c: c,
+ c,
});
self.bump();
Ok(ast)
@@ -1494,16 +1482,16 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
let span = Span::new(start, self.pos());
if is_meta_character(c) {
return Ok(Primitive::Literal(ast::Literal {
- span: span,
+ span,
kind: ast::LiteralKind::Punctuation,
- c: c,
+ c,
}));
}
let special = |kind, c| {
Ok(Primitive::Literal(ast::Literal {
- span: span,
+ span,
kind: ast::LiteralKind::Special(kind),
- c: c,
+ c,
}))
};
match c {
@@ -1517,19 +1505,19 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
special(ast::SpecialLiteralKind::Space, ' ')
}
'A' => Ok(Primitive::Assertion(ast::Assertion {
- span: span,
+ span,
kind: ast::AssertionKind::StartText,
})),
'z' => Ok(Primitive::Assertion(ast::Assertion {
- span: span,
+ span,
kind: ast::AssertionKind::EndText,
})),
'b' => Ok(Primitive::Assertion(ast::Assertion {
- span: span,
+ span,
kind: ast::AssertionKind::WordBoundary,
})),
'B' => Ok(Primitive::Assertion(ast::Assertion {
- span: span,
+ span,
kind: ast::AssertionKind::NotWordBoundary,
})),
_ => Err(self.error(span, ast::ErrorKind::EscapeUnrecognized)),
@@ -1569,7 +1557,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
ast::Literal {
span: Span::new(start, end),
kind: ast::LiteralKind::Octal,
- c: c,
+ c,
}
}
@@ -1645,7 +1633,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
Some(c) => Ok(ast::Literal {
span: Span::new(start, end),
kind: ast::LiteralKind::HexFixed(kind),
- c: c,
+ c,
}),
}
}
@@ -1700,7 +1688,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
Some(c) => Ok(ast::Literal {
span: Span::new(start, self.pos()),
kind: ast::LiteralKind::HexBrace(kind),
- c: c,
+ c,
}),
}
}
@@ -1927,7 +1915,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
}));
if !self.bump_and_bump_space() {
return Err(self.error(
- Span::new(start, self.pos()),
+ Span::new(start, start),
ast::ErrorKind::ClassUnclosed,
));
}
@@ -1949,7 +1937,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
}
let set = ast::ClassBracketed {
span: Span::new(start, self.pos()),
- negated: negated,
+ negated,
kind: ast::ClassSet::union(ast::ClassSetUnion {
span: Span::new(union.span.start, union.span.start),
items: vec![],
@@ -2026,8 +2014,8 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
};
Some(ast::ClassAscii {
span: Span::new(start, self.pos()),
- kind: kind,
- negated: negated,
+ kind,
+ negated,
})
}
@@ -2108,8 +2096,8 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
};
Ok(ast::ClassUnicode {
span: Span::new(start, self.pos()),
- negated: negated,
- kind: kind,
+ negated,
+ kind,
})
}
@@ -2130,7 +2118,7 @@ impl<'s, P: Borrow<Parser>> ParserI<'s, P> {
'W' => (true, ast::ClassPerlKind::Word),
c => panic!("expected valid Perl class but got '{}'", c),
};
- ast::ClassPerl { span: span, kind: kind, negated: negated }
+ ast::ClassPerl { span, kind, negated }
}
}
@@ -2146,7 +2134,7 @@ struct NestLimiter<'p, 's, P> {
impl<'p, 's, P: Borrow<Parser>> NestLimiter<'p, 's, P> {
fn new(p: &'p ParserI<'s, P>) -> NestLimiter<'p, 's, P> {
- NestLimiter { p: p, depth: 0 }
+ NestLimiter { p, depth: 0 }
}
#[inline(never)]
@@ -2429,18 +2417,18 @@ mod tests {
/// Create a punctuation literal starting at the given position.
fn punct_lit(c: char, span: Span) -> Ast {
Ast::Literal(ast::Literal {
- span: span,
+ span,
kind: ast::LiteralKind::Punctuation,
- c: c,
+ c,
})
}
/// Create a verbatim literal with the given span.
fn lit_with(c: char, span: Span) -> Ast {
Ast::Literal(ast::Literal {
- span: span,
+ span,
kind: ast::LiteralKind::Verbatim,
- c: c,
+ c,
})
}
@@ -2451,12 +2439,12 @@ mod tests {
/// Create a concatenation with the given span.
fn concat_with(span: Span, asts: Vec<Ast>) -> Ast {
- Ast::Concat(ast::Concat { span: span, asts: asts })
+ Ast::Concat(ast::Concat { span, asts })
}
/// Create an alternation with the given span.
fn alt(range: Range<usize>, asts: Vec<Ast>) -> Ast {
- Ast::Alternation(ast::Alternation { span: span(range), asts: asts })
+ Ast::Alternation(ast::Alternation { span: span(range), asts })
}
/// Create a capturing group with the given span.
@@ -2498,7 +2486,7 @@ mod tests {
span: span_range(pat, range.clone()),
flags: ast::Flags {
span: span_range(pat, (range.start + 2)..(range.end - 1)),
- items: items,
+ items,
},
})
}
@@ -4208,7 +4196,7 @@ bar
Ok(Primitive::Literal(ast::Literal {
span: span(0..2),
kind: ast::LiteralKind::Special(kind.clone()),
- c: c,
+ c,
}))
);
}
@@ -4402,7 +4390,7 @@ bar
kind: ast::LiteralKind::HexFixed(
ast::HexLiteralKind::UnicodeShort
),
- c: c,
+ c,
}))
);
}
@@ -4466,7 +4454,7 @@ bar
kind: ast::LiteralKind::HexFixed(
ast::HexLiteralKind::UnicodeLong
),
- c: c,
+ c,
}))
);
}
@@ -4667,10 +4655,7 @@ bar
#[test]
fn parse_set_class() {
fn union(span: Span, items: Vec<ast::ClassSetItem>) -> ast::ClassSet {
- ast::ClassSet::union(ast::ClassSetUnion {
- span: span,
- items: items,
- })
+ ast::ClassSet::union(ast::ClassSetUnion { span, items })
}
fn intersection(
@@ -4679,7 +4664,7 @@ bar
rhs: ast::ClassSet,
) -> ast::ClassSet {
ast::ClassSet::BinaryOp(ast::ClassSetBinaryOp {
- span: span,
+ span,
kind: ast::ClassSetBinaryOpKind::Intersection,
lhs: Box::new(lhs),
rhs: Box::new(rhs),
@@ -4692,7 +4677,7 @@ bar
rhs: ast::ClassSet,
) -> ast::ClassSet {
ast::ClassSet::BinaryOp(ast::ClassSetBinaryOp {
- span: span,
+ span,
kind: ast::ClassSetBinaryOpKind::Difference,
lhs: Box::new(lhs),
rhs: Box::new(rhs),
@@ -4705,7 +4690,7 @@ bar
rhs: ast::ClassSet,
) -> ast::ClassSet {
ast::ClassSet::BinaryOp(ast::ClassSetBinaryOp {
- span: span,
+ span,
kind: ast::ClassSetBinaryOpKind::SymmetricDifference,
lhs: Box::new(lhs),
rhs: Box::new(rhs),
@@ -4734,9 +4719,9 @@ bar
fn lit(span: Span, c: char) -> ast::ClassSetItem {
ast::ClassSetItem::Literal(ast::Literal {
- span: span,
+ span,
kind: ast::LiteralKind::Verbatim,
- c: c,
+ c,
})
}
@@ -4756,7 +4741,7 @@ bar
..span.end
};
ast::ClassSetItem::Range(ast::ClassSetRange {
- span: span,
+ span,
start: ast::Literal {
span: Span { end: pos1, ..span },
kind: ast::LiteralKind::Verbatim,
@@ -4771,19 +4756,11 @@ bar
}
fn alnum(span: Span, negated: bool) -> ast::ClassAscii {
- ast::ClassAscii {
- span: span,
- kind: ast::ClassAsciiKind::Alnum,
- negated: negated,
- }
+ ast::ClassAscii { span, kind: ast::ClassAsciiKind::Alnum, negated }
}
fn lower(span: Span, negated: bool) -> ast::ClassAscii {
- ast::ClassAscii {
- span: span,
- kind: ast::ClassAsciiKind::Lower,
- negated: negated,
- }
+ ast::ClassAscii { span, kind: ast::ClassAsciiKind::Lower, negated }
}
assert_eq!(
@@ -5515,14 +5492,23 @@ bar
assert_eq!(
parser("[-").parse_set_class_open().unwrap_err(),
TestError {
- span: span(0..2),
+ span: span(0..0),
kind: ast::ErrorKind::ClassUnclosed,
}
);
assert_eq!(
parser("[--").parse_set_class_open().unwrap_err(),
TestError {
- span: span(0..3),
+ span: span(0..0),
+ kind: ast::ErrorKind::ClassUnclosed,
+ }
+ );
+
+ // See: https://github.com/rust-lang/regex/issues/792
+ assert_eq!(
+ parser("(?x)[-#]").parse_with_comments().unwrap_err(),
+ TestError {
+ span: span(4..4),
kind: ast::ErrorKind::ClassUnclosed,
}
);
diff --git a/vendor/regex-syntax/src/ast/visitor.rs b/vendor/regex-syntax/src/ast/visitor.rs
index a0d1e7dd5..78ee487cf 100644
--- a/vendor/regex-syntax/src/ast/visitor.rs
+++ b/vendor/regex-syntax/src/ast/visitor.rs
@@ -388,7 +388,7 @@ impl<'a> HeapVisitor<'a> {
Some(ClassFrame::Union { head: item, tail: &[] })
}
ast::ClassSet::BinaryOp(ref op) => {
- Some(ClassFrame::Binary { op: op })
+ Some(ClassFrame::Binary { op })
}
}
}
@@ -402,11 +402,9 @@ impl<'a> HeapVisitor<'a> {
})
}
}
- ClassInduct::BinaryOp(op) => Some(ClassFrame::BinaryLHS {
- op: op,
- lhs: &op.lhs,
- rhs: &op.rhs,
- }),
+ ClassInduct::BinaryOp(op) => {
+ Some(ClassFrame::BinaryLHS { op, lhs: &op.lhs, rhs: &op.rhs })
+ }
_ => None,
}
}
@@ -427,7 +425,7 @@ impl<'a> HeapVisitor<'a> {
}
ClassFrame::Binary { .. } => None,
ClassFrame::BinaryLHS { op, rhs, .. } => {
- Some(ClassFrame::BinaryRHS { op: op, rhs: rhs })
+ Some(ClassFrame::BinaryRHS { op, rhs })
}
ClassFrame::BinaryRHS { .. } => None,
}
diff --git a/vendor/regex-syntax/src/error.rs b/vendor/regex-syntax/src/error.rs
index 71cfa426a..1230d2fc5 100644
--- a/vendor/regex-syntax/src/error.rs
+++ b/vendor/regex-syntax/src/error.rs
@@ -182,7 +182,7 @@ impl<'p> Spans<'p> {
if line_count <= 1 { 0 } else { line_count.to_string().len() };
let mut spans = Spans {
pattern: &fmter.pattern,
- line_number_width: line_number_width,
+ line_number_width,
by_line: vec![vec![]; line_count],
multi_line: vec![],
};
@@ -288,7 +288,7 @@ fn repeat_char(c: char, count: usize) -> String {
mod tests {
use crate::ast::parse::Parser;
- fn assert_panic_message(pattern: &str, expected_msg: &str) -> () {
+ fn assert_panic_message(pattern: &str, expected_msg: &str) {
let result = Parser::new().parse(pattern);
match result {
Ok(_) => {
diff --git a/vendor/regex-syntax/src/hir/interval.rs b/vendor/regex-syntax/src/hir/interval.rs
index cfaa2cb45..56698c53a 100644
--- a/vendor/regex-syntax/src/hir/interval.rs
+++ b/vendor/regex-syntax/src/hir/interval.rs
@@ -114,8 +114,8 @@ impl<I: Interval> IntervalSet<I> {
// we're done.
let drain_end = self.ranges.len();
- let mut ita = (0..drain_end).into_iter();
- let mut itb = (0..other.ranges.len()).into_iter();
+ let mut ita = 0..drain_end;
+ let mut itb = 0..other.ranges.len();
let mut a = ita.next().unwrap();
let mut b = itb.next().unwrap();
loop {
diff --git a/vendor/regex-syntax/src/hir/literal/mod.rs b/vendor/regex-syntax/src/hir/literal/mod.rs
index 1e66d2cc3..fbc5d3c97 100644
--- a/vendor/regex-syntax/src/hir/literal/mod.rs
+++ b/vendor/regex-syntax/src/hir/literal/mod.rs
@@ -225,7 +225,7 @@ impl Literals {
if self.lits.is_empty() {
return self.to_empty();
}
- let mut old: Vec<Literal> = self.lits.iter().cloned().collect();
+ let mut old = self.lits.to_vec();
let mut new = self.to_empty();
'OUTER: while let Some(mut candidate) = old.pop() {
if candidate.is_empty() {
@@ -256,15 +256,13 @@ impl Literals {
old.push(lit3);
lit2.clear();
}
- } else {
- if let Some(i) = position(&lit2, &candidate) {
- lit2.cut();
- let mut new_candidate = candidate.clone();
- new_candidate.truncate(i);
- new_candidate.cut();
- old.push(new_candidate);
- candidate.clear();
- }
+ } else if let Some(i) = position(&lit2, &candidate) {
+ lit2.cut();
+ let mut new_candidate = candidate.clone();
+ new_candidate.truncate(i);
+ new_candidate.cut();
+ old.push(new_candidate);
+ candidate.clear();
}
// Oops, the candidate is already represented in the set.
if candidate.is_empty() {
@@ -793,7 +791,7 @@ fn repeat_range_literals<F: FnMut(&Hir, &mut Literals)>(
f(
&Hir::repetition(hir::Repetition {
kind: hir::RepetitionKind::ZeroOrMore,
- greedy: greedy,
+ greedy,
hir: Box::new(e.clone()),
}),
lits,
@@ -932,12 +930,10 @@ fn escape_unicode(bytes: &[u8]) -> String {
if c.is_whitespace() {
let escaped = if c as u32 <= 0x7F {
escape_byte(c as u8)
+ } else if c as u32 <= 0xFFFF {
+ format!(r"\u{{{:04x}}}", c as u32)
} else {
- if c as u32 <= 0xFFFF {
- format!(r"\u{{{:04x}}}", c as u32)
- } else {
- format!(r"\U{{{:08x}}}", c as u32)
- }
+ format!(r"\U{{{:08x}}}", c as u32)
};
space_escaped.push_str(&escaped);
} else {
diff --git a/vendor/regex-syntax/src/hir/mod.rs b/vendor/regex-syntax/src/hir/mod.rs
index f5cf992e5..1096e9f05 100644
--- a/vendor/regex-syntax/src/hir/mod.rs
+++ b/vendor/regex-syntax/src/hir/mod.rs
@@ -243,7 +243,7 @@ impl Hir {
info.set_match_empty(true);
info.set_literal(false);
info.set_alternation_literal(false);
- Hir { kind: HirKind::Empty, info: info }
+ Hir { kind: HirKind::Empty, info }
}
/// Creates a literal HIR expression.
@@ -268,7 +268,7 @@ impl Hir {
info.set_match_empty(false);
info.set_literal(true);
info.set_alternation_literal(true);
- Hir { kind: HirKind::Literal(lit), info: info }
+ Hir { kind: HirKind::Literal(lit), info }
}
/// Creates a class HIR expression.
@@ -285,7 +285,7 @@ impl Hir {
info.set_match_empty(false);
info.set_literal(false);
info.set_alternation_literal(false);
- Hir { kind: HirKind::Class(class), info: info }
+ Hir { kind: HirKind::Class(class), info }
}
/// Creates an anchor assertion HIR expression.
@@ -318,7 +318,7 @@ impl Hir {
if let Anchor::EndLine = anchor {
info.set_line_anchored_end(true);
}
- Hir { kind: HirKind::Anchor(anchor), info: info }
+ Hir { kind: HirKind::Anchor(anchor), info }
}
/// Creates a word boundary assertion HIR expression.
@@ -345,7 +345,7 @@ impl Hir {
if let WordBoundary::AsciiNegate = word_boundary {
info.set_always_utf8(false);
}
- Hir { kind: HirKind::WordBoundary(word_boundary), info: info }
+ Hir { kind: HirKind::WordBoundary(word_boundary), info }
}
/// Creates a repetition HIR expression.
@@ -372,7 +372,7 @@ impl Hir {
info.set_match_empty(rep.is_match_empty() || rep.hir.is_match_empty());
info.set_literal(false);
info.set_alternation_literal(false);
- Hir { kind: HirKind::Repetition(rep), info: info }
+ Hir { kind: HirKind::Repetition(rep), info }
}
/// Creates a group HIR expression.
@@ -389,7 +389,7 @@ impl Hir {
info.set_match_empty(group.hir.is_match_empty());
info.set_literal(false);
info.set_alternation_literal(false);
- Hir { kind: HirKind::Group(group), info: info }
+ Hir { kind: HirKind::Group(group), info }
}
/// Returns the concatenation of the given expressions.
@@ -480,7 +480,7 @@ impl Hir {
})
.any(|e| e.is_line_anchored_end()),
);
- Hir { kind: HirKind::Concat(exprs), info: info }
+ Hir { kind: HirKind::Concat(exprs), info }
}
}
}
@@ -542,7 +542,7 @@ impl Hir {
let x = info.is_alternation_literal() && e.is_literal();
info.set_alternation_literal(x);
}
- Hir { kind: HirKind::Alternation(exprs), info: info }
+ Hir { kind: HirKind::Alternation(exprs), info }
}
}
}
diff --git a/vendor/regex-syntax/src/hir/translate.rs b/vendor/regex-syntax/src/hir/translate.rs
index 56afbbed8..890e1608b 100644
--- a/vendor/regex-syntax/src/hir/translate.rs
+++ b/vendor/regex-syntax/src/hir/translate.rs
@@ -589,7 +589,7 @@ struct TranslatorI<'t, 'p> {
impl<'t, 'p> TranslatorI<'t, 'p> {
/// Build a new internal translator.
fn new(trans: &'t Translator, pattern: &'p str) -> TranslatorI<'t, 'p> {
- TranslatorI { trans: trans, pattern: pattern }
+ TranslatorI { trans, pattern }
}
/// Return a reference to the underlying translator.
@@ -609,7 +609,7 @@ impl<'t, 'p> TranslatorI<'t, 'p> {
/// Create a new error with the given span and error type.
fn error(&self, span: Span, kind: ErrorKind) -> Error {
- Error { kind: kind, pattern: self.pattern.to_string(), span: span }
+ Error { kind, pattern: self.pattern.to_string(), span }
}
/// Return a copy of the active flags.
@@ -779,7 +779,7 @@ impl<'t, 'p> TranslatorI<'t, 'p> {
}
ast::GroupKind::NonCapturing(_) => hir::GroupKind::NonCapturing,
};
- Hir::group(hir::Group { kind: kind, hir: Box::new(expr) })
+ Hir::group(hir::Group { kind, hir: Box::new(expr) })
}
fn hir_repetition(&self, rep: &ast::Repetition, expr: Hir) -> Hir {
@@ -802,11 +802,7 @@ impl<'t, 'p> TranslatorI<'t, 'p> {
};
let greedy =
if self.flags().swap_greed() { !rep.greedy } else { rep.greedy };
- Hir::repetition(hir::Repetition {
- kind: kind,
- greedy: greedy,
- hir: Box::new(expr),
- })
+ Hir::repetition(hir::Repetition { kind, greedy, hir: Box::new(expr) })
}
fn hir_unicode_class(
@@ -1238,7 +1234,7 @@ mod tests {
fn hir_quest(greedy: bool, expr: Hir) -> Hir {
Hir::repetition(hir::Repetition {
kind: hir::RepetitionKind::ZeroOrOne,
- greedy: greedy,
+ greedy,
hir: Box::new(expr),
})
}
@@ -1246,7 +1242,7 @@ mod tests {
fn hir_star(greedy: bool, expr: Hir) -> Hir {
Hir::repetition(hir::Repetition {
kind: hir::RepetitionKind::ZeroOrMore,
- greedy: greedy,
+ greedy,
hir: Box::new(expr),
})
}
@@ -1254,7 +1250,7 @@ mod tests {
fn hir_plus(greedy: bool, expr: Hir) -> Hir {
Hir::repetition(hir::Repetition {
kind: hir::RepetitionKind::OneOrMore,
- greedy: greedy,
+ greedy,
hir: Box::new(expr),
})
}
@@ -1262,7 +1258,7 @@ mod tests {
fn hir_range(greedy: bool, range: hir::RepetitionRange, expr: Hir) -> Hir {
Hir::repetition(hir::Repetition {
kind: hir::RepetitionKind::Range(range),
- greedy: greedy,
+ greedy,
hir: Box::new(expr),
})
}
diff --git a/vendor/regex-syntax/src/lib.rs b/vendor/regex-syntax/src/lib.rs
index 9e9af756a..1dfb38af3 100644
--- a/vendor/regex-syntax/src/lib.rs
+++ b/vendor/regex-syntax/src/lib.rs
@@ -195,7 +195,7 @@ pub fn escape_into(text: &str, buf: &mut String) {
}
}
-/// Returns true if the give character has significance in a regex.
+/// Returns true if the given character has significance in a regex.
///
/// These are the only characters that are allowed to be escaped, with one
/// exception: an ASCII space character may be escaped when extended mode (with
diff --git a/vendor/regex-syntax/src/parser.rs b/vendor/regex-syntax/src/parser.rs
index a5ee524a8..ded95b280 100644
--- a/vendor/regex-syntax/src/parser.rs
+++ b/vendor/regex-syntax/src/parser.rs
@@ -96,7 +96,7 @@ impl ParserBuilder {
/// Enable verbose mode in the regular expression.
///
- /// When enabled, verbose mode permits insigificant whitespace in many
+ /// When enabled, verbose mode permits insignificant whitespace in many
/// places in the regular expression, as well as comments. Comments are
/// started using `#` and continue until the end of the line.
///
diff --git a/vendor/regex-syntax/src/unicode.rs b/vendor/regex-syntax/src/unicode.rs
index b894c7db2..70d5954b7 100644
--- a/vendor/regex-syntax/src/unicode.rs
+++ b/vendor/regex-syntax/src/unicode.rs
@@ -99,7 +99,7 @@ pub fn simple_fold(
Ok(CASE_FOLDING_SIMPLE
.binary_search_by_key(&c, |&(c1, _)| c1)
- .map(|i| CASE_FOLDING_SIMPLE[i].1.iter().map(|&c| c))
+ .map(|i| CASE_FOLDING_SIMPLE[i].1.iter().copied())
.map_err(|i| {
if i >= CASE_FOLDING_SIMPLE.len() {
None
@@ -580,7 +580,7 @@ fn ages(canonical_age: &str) -> Result<impl Iterator<Item = Range>> {
fn imp(canonical_age: &str) -> Result<impl Iterator<Item = Range>> {
use crate::unicode_tables::age;
- const AGES: &'static [(&'static str, Range)] = &[
+ const AGES: &[(&str, Range)] = &[
("V1_1", age::V1_1),
("V2_0", age::V2_0),
("V2_1", age::V2_1),
@@ -604,13 +604,14 @@ fn ages(canonical_age: &str) -> Result<impl Iterator<Item = Range>> {
("V12_0", age::V12_0),
("V12_1", age::V12_1),
("V13_0", age::V13_0),
+ ("V14_0", age::V14_0),
];
assert_eq!(AGES.len(), age::BY_NAME.len(), "ages are out of sync");
let pos = AGES.iter().position(|&(age, _)| canonical_age == age);
match pos {
None => Err(Error::PropertyValueNotFound),
- Some(i) => Ok(AGES[..i + 1].iter().map(|&(_, classes)| classes)),
+ Some(i) => Ok(AGES[..=i].iter().map(|&(_, classes)| classes)),
}
}
diff --git a/vendor/regex-syntax/src/unicode_tables/age.rs b/vendor/regex-syntax/src/unicode_tables/age.rs
index 7772919eb..ffdfef316 100644
--- a/vendor/regex-syntax/src/unicode_tables/age.rs
+++ b/vendor/regex-syntax/src/unicode_tables/age.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate age ucd-13.0.0 --chars
+// ucd-generate age /tmp/ucd --chars
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("V10_0", V10_0),
@@ -12,6 +12,7 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("V12_0", V12_0),
("V12_1", V12_1),
("V13_0", V13_0),
+ ("V14_0", V14_0),
("V1_1", V1_1),
("V2_0", V2_0),
("V2_1", V2_1),
@@ -203,69 +204,150 @@ pub const V12_0: &'static [(char, char)] = &[
pub const V12_1: &'static [(char, char)] = &[('㋿', '㋿')];
pub const V13_0: &'static [(char, char)] = &[
- ('\u{8be}', '\u{8c7}'),
+ ('ࢾ', 'ࣇ'),
('\u{b55}', '\u{b55}'),
- ('\u{d04}', '\u{d04}'),
+ ('ഄ', 'ഄ'),
('\u{d81}', '\u{d81}'),
('\u{1abf}', '\u{1ac0}'),
- ('\u{2b97}', '\u{2b97}'),
- ('\u{2e50}', '\u{2e52}'),
- ('\u{31bb}', '\u{31bf}'),
- ('\u{4db6}', '\u{4dbf}'),
- ('\u{9ff0}', '\u{9ffc}'),
- ('\u{a7c7}', '\u{a7ca}'),
- ('\u{a7f5}', '\u{a7f6}'),
+ ('⮗', '⮗'),
+ ('⹐', '⹒'),
+ ('ㆻ', 'ㆿ'),
+ ('䶶', '䶿'),
+ ('鿰', '鿼'),
+ ('Ꟈ', 'ꟊ'),
+ ('Ꟶ', 'ꟶ'),
('\u{a82c}', '\u{a82c}'),
- ('\u{ab68}', '\u{ab6b}'),
- ('\u{1019c}', '\u{1019c}'),
- ('\u{10e80}', '\u{10ea9}'),
- ('\u{10eab}', '\u{10ead}'),
- ('\u{10eb0}', '\u{10eb1}'),
- ('\u{10fb0}', '\u{10fcb}'),
- ('\u{11147}', '\u{11147}'),
- ('\u{111ce}', '\u{111cf}'),
- ('\u{1145a}', '\u{1145a}'),
- ('\u{11460}', '\u{11461}'),
- ('\u{11900}', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
- ('\u{1193b}', '\u{11946}'),
- ('\u{11950}', '\u{11959}'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('ꭨ', '꭫'),
+ ('𐆜', '𐆜'),
+ ('𐺀', '𐺩'),
+ ('\u{10eab}', '𐺭'),
+ ('𐺰', '𐺱'),
+ ('𐾰', '𐿋'),
+ ('𑅇', '𑅇'),
+ ('𑇎', '\u{111cf}'),
+ ('𑑚', '𑑚'),
+ ('𑑠', '𑑡'),
+ ('𑤀', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤵'),
+ ('𑤷', '𑤸'),
+ ('\u{1193b}', '𑥆'),
+ ('𑥐', '𑥙'),
+ ('𑾰', '𑾰'),
('\u{16fe4}', '\u{16fe4}'),
- ('\u{16ff0}', '\u{16ff1}'),
- ('\u{18af3}', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('\u{1f10d}', '\u{1f10f}'),
- ('\u{1f16d}', '\u{1f16f}'),
- ('\u{1f1ad}', '\u{1f1ad}'),
- ('\u{1f6d6}', '\u{1f6d7}'),
- ('\u{1f6fb}', '\u{1f6fc}'),
- ('\u{1f8b0}', '\u{1f8b1}'),
- ('\u{1f90c}', '\u{1f90c}'),
- ('\u{1f972}', '\u{1f972}'),
- ('\u{1f977}', '\u{1f978}'),
- ('\u{1f9a3}', '\u{1f9a4}'),
- ('\u{1f9ab}', '\u{1f9ad}'),
- ('\u{1f9cb}', '\u{1f9cb}'),
- ('\u{1fa74}', '\u{1fa74}'),
- ('\u{1fa83}', '\u{1fa86}'),
- ('\u{1fa96}', '\u{1faa8}'),
- ('\u{1fab0}', '\u{1fab6}'),
- ('\u{1fac0}', '\u{1fac2}'),
- ('\u{1fad0}', '\u{1fad6}'),
- ('\u{1fb00}', '\u{1fb92}'),
- ('\u{1fb94}', '\u{1fbca}'),
- ('\u{1fbf0}', '\u{1fbf9}'),
- ('\u{2a6d7}', '\u{2a6dd}'),
- ('\u{30000}', '\u{3134a}'),
+ ('𖿰', '𖿱'),
+ ('𘫳', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('🄍', '🄏'),
+ ('🅭', '🅯'),
+ ('🆭', '🆭'),
+ ('🛖', '🛗'),
+ ('🛻', '🛼'),
+ ('🢰', '🢱'),
+ ('🤌', '🤌'),
+ ('🥲', '🥲'),
+ ('🥷', '🥸'),
+ ('🦣', '🦤'),
+ ('🦫', '🦭'),
+ ('🧋', '🧋'),
+ ('🩴', '🩴'),
+ ('🪃', '🪆'),
+ ('🪖', '🪨'),
+ ('🪰', '🪶'),
+ ('🫀', '🫂'),
+ ('🫐', '🫖'),
+ ('🬀', '🮒'),
+ ('🮔', '🯊'),
+ ('🯰', '🯹'),
+ ('𪛗', '𪛝'),
+ ('𰀀', '𱍊'),
+];
+
+pub const V14_0: &'static [(char, char)] = &[
+ ('؝', '؝'),
+ ('ࡰ', 'ࢎ'),
+ ('\u{890}', '\u{891}'),
+ ('\u{898}', '\u{89f}'),
+ ('ࢵ', 'ࢵ'),
+ ('ࣈ', '\u{8d2}'),
+ ('\u{c3c}', '\u{c3c}'),
+ ('ౝ', 'ౝ'),
+ ('ೝ', 'ೝ'),
+ ('ᜍ', 'ᜍ'),
+ ('᜕', '᜕'),
+ ('ᜟ', 'ᜟ'),
+ ('\u{180f}', '\u{180f}'),
+ ('\u{1ac1}', '\u{1ace}'),
+ ('ᭌ', 'ᭌ'),
+ ('᭽', '᭾'),
+ ('\u{1dfa}', '\u{1dfa}'),
+ ('⃀', '⃀'),
+ ('Ⱟ', 'Ⱟ'),
+ ('ⱟ', 'ⱟ'),
+ ('⹓', '⹝'),
+ ('鿽', '鿿'),
+ ('Ꟁ', 'ꟁ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꟴ'),
+ ('﯂', '﯂'),
+ ('﵀', '﵏'),
+ ('﷏', '﷏'),
+ ('﷾', '﷿'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
+ ('𐽰', '𐾉'),
+ ('\u{11070}', '𑁵'),
+ ('\u{110c2}', '\u{110c2}'),
+ ('𑚹', '𑚹'),
+ ('𑝀', '𑝆'),
+ ('𑪰', '𑪿'),
+ ('𒾐', '𒿲'),
+ ('𖩰', '𖪾'),
+ ('𖫀', '𖫉'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('𛄟', '𛄢'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
+ ('𜽐', '𜿃'),
+ ('𝇩', '𝇪'),
+ ('𝼀', '𝼞'),
+ ('𞊐', '\u{1e2ae}'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
+ ('🛝', '🛟'),
+ ('🟰', '🟰'),
+ ('🥹', '🥹'),
+ ('🧌', '🧌'),
+ ('🩻', '🩼'),
+ ('🪩', '🪬'),
+ ('🪷', '🪺'),
+ ('🫃', '🫅'),
+ ('🫗', '🫙'),
+ ('🫠', '🫧'),
+ ('🫰', '🫶'),
+ ('𪛞', '𪛟'),
+ ('𫜵', '𫜸'),
];
pub const V1_1: &'static [(char, char)] = &[
- ('\u{0}', 'ǵ'),
+ ('\0', 'ǵ'),
('Ǻ', 'ȗ'),
('ɐ', 'ʨ'),
('ʰ', '˞'),
diff --git a/vendor/regex-syntax/src/unicode_tables/case_folding_simple.rs b/vendor/regex-syntax/src/unicode_tables/case_folding_simple.rs
index cfb83f363..766d21b48 100644
--- a/vendor/regex-syntax/src/unicode_tables/case_folding_simple.rs
+++ b/vendor/regex-syntax/src/unicode_tables/case_folding_simple.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate case-folding-simple ucd-13.0.0 --chars --all-pairs
+// ucd-generate case-folding-simple /tmp/ucd --chars --all-pairs
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const CASE_FOLDING_SIMPLE: &'static [(char, &'static [char])] = &[
('A', &['a']),
@@ -1781,6 +1781,7 @@ pub const CASE_FOLDING_SIMPLE: &'static [(char, &'static [char])] = &[
('Ⱜ', &['ⱜ']),
('Ⱝ', &['ⱝ']),
('Ⱞ', &['ⱞ']),
+ ('Ⱟ', &['ⱟ']),
('ⰰ', &['Ⰰ']),
('ⰱ', &['Ⰱ']),
('ⰲ', &['Ⰲ']),
@@ -1828,6 +1829,7 @@ pub const CASE_FOLDING_SIMPLE: &'static [(char, &'static [char])] = &[
('ⱜ', &['Ⱜ']),
('ⱝ', &['Ⱝ']),
('ⱞ', &['Ⱞ']),
+ ('ⱟ', &['Ⱟ']),
('Ⱡ', &['ⱡ']),
('ⱡ', &['Ⱡ']),
('Ɫ', &['ɫ']),
@@ -2211,17 +2213,25 @@ pub const CASE_FOLDING_SIMPLE: &'static [(char, &'static [char])] = &[
('ꞽ', &['Ꞽ']),
('Ꞿ', &['ꞿ']),
('ꞿ', &['Ꞿ']),
+ ('Ꟁ', &['ꟁ']),
+ ('ꟁ', &['Ꟁ']),
('Ꟃ', &['ꟃ']),
('ꟃ', &['Ꟃ']),
('Ꞔ', &['ꞔ']),
('Ʂ', &['ʂ']),
('Ᶎ', &['ᶎ']),
- ('\u{a7c7}', &['\u{a7c8}']),
- ('\u{a7c8}', &['\u{a7c7}']),
- ('\u{a7c9}', &['\u{a7ca}']),
- ('\u{a7ca}', &['\u{a7c9}']),
- ('\u{a7f5}', &['\u{a7f6}']),
- ('\u{a7f6}', &['\u{a7f5}']),
+ ('Ꟈ', &['ꟈ']),
+ ('ꟈ', &['Ꟈ']),
+ ('Ꟊ', &['ꟊ']),
+ ('ꟊ', &['Ꟊ']),
+ ('Ꟑ', &['ꟑ']),
+ ('ꟑ', &['Ꟑ']),
+ ('Ꟗ', &['ꟗ']),
+ ('ꟗ', &['Ꟗ']),
+ ('Ꟙ', &['ꟙ']),
+ ('ꟙ', &['Ꟙ']),
+ ('Ꟶ', &['ꟶ']),
+ ('ꟶ', &['Ꟶ']),
('ꭓ', &['Ꭓ']),
('ꭰ', &['Ꭰ']),
('ꭱ', &['Ꭱ']),
@@ -2507,6 +2517,76 @@ pub const CASE_FOLDING_SIMPLE: &'static [(char, &'static [char])] = &[
('𐓹', &['𐓑']),
('𐓺', &['𐓒']),
('𐓻', &['𐓓']),
+ ('𐕰', &['𐖗']),
+ ('𐕱', &['𐖘']),
+ ('𐕲', &['𐖙']),
+ ('𐕳', &['𐖚']),
+ ('𐕴', &['𐖛']),
+ ('𐕵', &['𐖜']),
+ ('𐕶', &['𐖝']),
+ ('𐕷', &['𐖞']),
+ ('𐕸', &['𐖟']),
+ ('𐕹', &['𐖠']),
+ ('𐕺', &['𐖡']),
+ ('𐕼', &['𐖣']),
+ ('𐕽', &['𐖤']),
+ ('𐕾', &['𐖥']),
+ ('𐕿', &['𐖦']),
+ ('𐖀', &['𐖧']),
+ ('𐖁', &['𐖨']),
+ ('𐖂', &['𐖩']),
+ ('𐖃', &['𐖪']),
+ ('𐖄', &['𐖫']),
+ ('𐖅', &['𐖬']),
+ ('𐖆', &['𐖭']),
+ ('𐖇', &['𐖮']),
+ ('𐖈', &['𐖯']),
+ ('𐖉', &['𐖰']),
+ ('𐖊', &['𐖱']),
+ ('𐖌', &['𐖳']),
+ ('𐖍', &['𐖴']),
+ ('𐖎', &['𐖵']),
+ ('𐖏', &['𐖶']),
+ ('𐖐', &['𐖷']),
+ ('𐖑', &['𐖸']),
+ ('𐖒', &['𐖹']),
+ ('𐖔', &['𐖻']),
+ ('𐖕', &['𐖼']),
+ ('𐖗', &['𐕰']),
+ ('𐖘', &['𐕱']),
+ ('𐖙', &['𐕲']),
+ ('𐖚', &['𐕳']),
+ ('𐖛', &['𐕴']),
+ ('𐖜', &['𐕵']),
+ ('𐖝', &['𐕶']),
+ ('𐖞', &['𐕷']),
+ ('𐖟', &['𐕸']),
+ ('𐖠', &['𐕹']),
+ ('𐖡', &['𐕺']),
+ ('𐖣', &['𐕼']),
+ ('𐖤', &['𐕽']),
+ ('𐖥', &['𐕾']),
+ ('𐖦', &['𐕿']),
+ ('𐖧', &['𐖀']),
+ ('𐖨', &['𐖁']),
+ ('𐖩', &['𐖂']),
+ ('𐖪', &['𐖃']),
+ ('𐖫', &['𐖄']),
+ ('𐖬', &['𐖅']),
+ ('𐖭', &['𐖆']),
+ ('𐖮', &['𐖇']),
+ ('𐖯', &['𐖈']),
+ ('𐖰', &['𐖉']),
+ ('𐖱', &['𐖊']),
+ ('𐖳', &['𐖌']),
+ ('𐖴', &['𐖍']),
+ ('𐖵', &['𐖎']),
+ ('𐖶', &['𐖏']),
+ ('𐖷', &['𐖐']),
+ ('𐖸', &['𐖑']),
+ ('𐖹', &['𐖒']),
+ ('𐖻', &['𐖔']),
+ ('𐖼', &['𐖕']),
('𐲀', &['𐳀']),
('𐲁', &['𐳁']),
('𐲂', &['𐳂']),
diff --git a/vendor/regex-syntax/src/unicode_tables/general_category.rs b/vendor/regex-syntax/src/unicode_tables/general_category.rs
index 33b7b7e6e..8aa6b0078 100644
--- a/vendor/regex-syntax/src/unicode_tables/general_category.rs
+++ b/vendor/regex-syntax/src/unicode_tables/general_category.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate general-category ucd-13.0.0 --chars --exclude surrogate
+// ucd-generate general-category /tmp/ucd --chars --exclude surrogate
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Cased_Letter", CASED_LETTER),
@@ -116,9 +116,7 @@ pub const CASED_LETTER: &'static [(char, char)] = &[
('ⅅ', 'ⅉ'),
('ⅎ', 'ⅎ'),
('Ↄ', 'ↄ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⱻ'),
+ ('Ⰰ', 'ⱻ'),
('Ȿ', 'ⳤ'),
('Ⳬ', 'ⳮ'),
('Ⳳ', 'ⳳ'),
@@ -130,12 +128,14 @@ pub const CASED_LETTER: &'static [(char, char)] = &[
('Ꜣ', 'ꝯ'),
('ꝱ', 'ꞇ'),
('Ꞌ', 'ꞎ'),
- ('Ꞑ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', '\u{a7f6}'),
+ ('Ꞑ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('Ꟶ', 'ꟶ'),
('ꟺ', 'ꟺ'),
('ꬰ', 'ꭚ'),
- ('ꭠ', '\u{ab68}'),
+ ('ꭠ', 'ꭨ'),
('ꭰ', 'ꮿ'),
('ff', 'st'),
('ﬓ', 'ﬗ'),
@@ -144,6 +144,14 @@ pub const CASED_LETTER: &'static [(char, char)] = &[
('𐐀', '𐑏'),
('𐒰', '𐓓'),
('𐓘', '𐓻'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐲀', '𐲲'),
('𐳀', '𐳲'),
('𑢠', '𑣟'),
@@ -178,6 +186,8 @@ pub const CASED_LETTER: &'static [(char, char)] = &[
('𝞊', '𝞨'),
('𝞪', '𝟂'),
('𝟄', '𝟋'),
+ ('𝼀', '𝼉'),
+ ('𝼋', '𝼞'),
('𞤀', '𞥃'),
];
@@ -225,6 +235,10 @@ pub const CLOSE_PUNCTUATION: &'static [(char, char)] = &[
('⸥', '⸥'),
('⸧', '⸧'),
('⸩', '⸩'),
+ ('⹖', '⹖'),
+ ('⹘', '⹘'),
+ ('⹚', '⹚'),
+ ('⹜', '⹜'),
('〉', '〉'),
('》', '》'),
('」', '」'),
@@ -266,7 +280,7 @@ pub const CONNECTOR_PUNCTUATION: &'static [(char, char)] = &[
];
pub const CONTROL: &'static [(char, char)] =
- &[('\u{0}', '\u{1f}'), ('\u{7f}', '\u{9f}')];
+ &[('\0', '\u{1f}'), ('\u{7f}', '\u{9f}')];
pub const CURRENCY_SYMBOL: &'static [(char, char)] = &[
('$', '$'),
@@ -280,7 +294,7 @@ pub const CURRENCY_SYMBOL: &'static [(char, char)] = &[
('௹', '௹'),
('฿', '฿'),
('៛', '៛'),
- ('₠', '₿'),
+ ('₠', '⃀'),
('꠸', '꠸'),
('﷼', '﷼'),
('﹩', '﹩'),
@@ -303,6 +317,7 @@ pub const DASH_PUNCTUATION: &'static [(char, char)] = &[
('⸚', '⸚'),
('⸺', '⸻'),
('⹀', '⹀'),
+ ('⹝', '⹝'),
('〜', '〜'),
('〰', '〰'),
('゠', '゠'),
@@ -310,7 +325,7 @@ pub const DASH_PUNCTUATION: &'static [(char, char)] = &[
('﹘', '﹘'),
('﹣', '﹣'),
('-', '-'),
- ('\u{10ead}', '\u{10ead}'),
+ ('𐺭', '𐺭'),
];
pub const DECIMAL_NUMBER: &'static [(char, char)] = &[
@@ -364,17 +379,18 @@ pub const DECIMAL_NUMBER: &'static [(char, char)] = &[
('𑛀', '𑛉'),
('𑜰', '𑜹'),
('𑣠', '𑣩'),
- ('\u{11950}', '\u{11959}'),
+ ('𑥐', '𑥙'),
('𑱐', '𑱙'),
('𑵐', '𑵙'),
('𑶠', '𑶩'),
('𖩠', '𖩩'),
+ ('𖫀', '𖫉'),
('𖭐', '𖭙'),
('𝟎', '𝟿'),
('𞅀', '𞅉'),
('𞋰', '𞋹'),
('𞥐', '𞥙'),
- ('\u{1fbf0}', '\u{1fbf9}'),
+ ('🯰', '🯹'),
];
pub const ENCLOSING_MARK: &'static [(char, char)] = &[
@@ -404,6 +420,7 @@ pub const FORMAT: &'static [(char, char)] = &[
('\u{61c}', '\u{61c}'),
('\u{6dd}', '\u{6dd}'),
('\u{70f}', '\u{70f}'),
+ ('\u{890}', '\u{891}'),
('\u{8e2}', '\u{8e2}'),
('\u{180e}', '\u{180e}'),
('\u{200b}', '\u{200f}'),
@@ -485,8 +502,9 @@ pub const LETTER: &'static [(char, char)] = &[
('ࠨ', 'ࠨ'),
('ࡀ', 'ࡘ'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
+ ('ࡰ', 'ࢇ'),
+ ('ࢉ', 'ࢎ'),
+ ('ࢠ', 'ࣉ'),
('ऄ', 'ह'),
('ऽ', 'ऽ'),
('ॐ', 'ॐ'),
@@ -551,6 +569,7 @@ pub const LETTER: &'static [(char, char)] = &[
('ప', 'హ'),
('ఽ', 'ఽ'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', 'ౡ'),
('ಀ', 'ಀ'),
('ಅ', 'ಌ'),
@@ -559,10 +578,10 @@ pub const LETTER: &'static [(char, char)] = &[
('ಪ', 'ಳ'),
('ವ', 'ಹ'),
('ಽ', 'ಽ'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', 'ೡ'),
('ೱ', 'ೲ'),
- ('\u{d04}', 'ഌ'),
+ ('ഄ', 'ഌ'),
('എ', 'ഐ'),
('ഒ', 'ഺ'),
('ഽ', 'ഽ'),
@@ -630,9 +649,8 @@ pub const LETTER: &'static [(char, char)] = &[
('ᚁ', 'ᚚ'),
('ᚠ', 'ᛪ'),
('ᛱ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', 'ᜑ'),
- ('ᜠ', 'ᜱ'),
+ ('ᜀ', 'ᜑ'),
+ ('ᜟ', 'ᜱ'),
('ᝀ', 'ᝑ'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -653,7 +671,7 @@ pub const LETTER: &'static [(char, char)] = &[
('ᨠ', 'ᩔ'),
('ᪧ', 'ᪧ'),
('ᬅ', 'ᬳ'),
- ('ᭅ', 'ᭋ'),
+ ('ᭅ', 'ᭌ'),
('ᮃ', 'ᮠ'),
('ᮮ', 'ᮯ'),
('ᮺ', 'ᯥ'),
@@ -704,9 +722,7 @@ pub const LETTER: &'static [(char, char)] = &[
('ⅅ', 'ⅉ'),
('ⅎ', 'ⅎ'),
('Ↄ', 'ↄ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⳤ'),
+ ('Ⰰ', 'ⳤ'),
('Ⳬ', 'ⳮ'),
('Ⳳ', 'ⳳ'),
('ⴀ', 'ⴥ'),
@@ -733,11 +749,10 @@ pub const LETTER: &'static [(char, char)] = &[
('ー', 'ヿ'),
('ㄅ', 'ㄯ'),
('ㄱ', 'ㆎ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('ㇰ', 'ㇿ'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
- ('ꀀ', 'ꒌ'),
+ ('㐀', '䶿'),
+ ('一', 'ꒌ'),
('ꓐ', 'ꓽ'),
('ꔀ', 'ꘌ'),
('ꘐ', 'ꘟ'),
@@ -747,9 +762,11 @@ pub const LETTER: &'static [(char, char)] = &[
('ꚠ', 'ꛥ'),
('ꜗ', 'ꜟ'),
('Ꜣ', 'ꞈ'),
- ('Ꞌ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꠁ'),
+ ('Ꞌ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꠁ'),
('ꠃ', 'ꠅ'),
('ꠇ', 'ꠊ'),
('ꠌ', 'ꠢ'),
@@ -786,7 +803,7 @@ pub const LETTER: &'static [(char, char)] = &[
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
('ꬰ', 'ꭚ'),
- ('ꭜ', '\u{ab69}'),
+ ('ꭜ', 'ꭩ'),
('ꭰ', 'ꯢ'),
('가', '힣'),
('ힰ', 'ퟆ'),
@@ -837,9 +854,20 @@ pub const LETTER: &'static [(char, char)] = &[
('𐓘', '𐓻'),
('𐔀', '𐔧'),
('𐔰', '𐕣'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐘀', '𐜶'),
('𐝀', '𐝕'),
('𐝠', '𐝧'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐠀', '𐠅'),
('𐠈', '𐠈'),
('𐠊', '𐠵'),
@@ -870,19 +898,22 @@ pub const LETTER: &'static [(char, char)] = &[
('𐲀', '𐲲'),
('𐳀', '𐳲'),
('𐴀', '𐴣'),
- ('\u{10e80}', '\u{10ea9}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺀', '𐺩'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼜'),
('𐼧', '𐼧'),
('𐼰', '𐽅'),
- ('\u{10fb0}', '\u{10fc4}'),
+ ('𐽰', '𐾁'),
+ ('𐾰', '𐿄'),
('𐿠', '𐿶'),
('𑀃', '𑀷'),
+ ('𑁱', '𑁲'),
+ ('𑁵', '𑁵'),
('𑂃', '𑂯'),
('𑃐', '𑃨'),
('𑄃', '𑄦'),
('𑅄', '𑅄'),
- ('\u{11147}', '\u{11147}'),
+ ('𑅇', '𑅇'),
('𑅐', '𑅲'),
('𑅶', '𑅶'),
('𑆃', '𑆲'),
@@ -908,7 +939,7 @@ pub const LETTER: &'static [(char, char)] = &[
('𑍝', '𑍡'),
('𑐀', '𑐴'),
('𑑇', '𑑊'),
- ('𑑟', '\u{11461}'),
+ ('𑑟', '𑑡'),
('𑒀', '𑒯'),
('𑓄', '𑓅'),
('𑓇', '𑓇'),
@@ -919,15 +950,16 @@ pub const LETTER: &'static [(char, char)] = &[
('𑚀', '𑚪'),
('𑚸', '𑚸'),
('𑜀', '𑜚'),
+ ('𑝀', '𑝆'),
('𑠀', '𑠫'),
('𑢠', '𑣟'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{1192f}'),
- ('\u{1193f}', '\u{1193f}'),
- ('\u{11941}', '\u{11941}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤯'),
+ ('𑤿', '𑤿'),
+ ('𑥁', '𑥁'),
('𑦠', '𑦧'),
('𑦪', '𑧐'),
('𑧡', '𑧡'),
@@ -938,7 +970,7 @@ pub const LETTER: &'static [(char, char)] = &[
('𑩐', '𑩐'),
('𑩜', '𑪉'),
('𑪝', '𑪝'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '𑰮'),
('𑱀', '𑱀'),
@@ -952,13 +984,15 @@ pub const LETTER: &'static [(char, char)] = &[
('𑵪', '𑶉'),
('𑶘', '𑶘'),
('𑻠', '𑻲'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𒀀', '𒎙'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿰'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
+ ('𖩰', '𖪾'),
('𖫐', '𖫭'),
('𖬀', '𖬯'),
('𖭀', '𖭃'),
@@ -971,9 +1005,12 @@ pub const LETTER: &'static [(char, char)] = &[
('𖿠', '𖿡'),
('𖿣', '𖿣'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('𛀀', '𛄞'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('𛀀', '𛄢'),
('𛅐', '𛅒'),
('𛅤', '𛅧'),
('𛅰', '𛋻'),
@@ -1011,10 +1048,16 @@ pub const LETTER: &'static [(char, char)] = &[
('𝞊', '𝞨'),
('𝞪', '𝟂'),
('𝟄', '𝟋'),
+ ('𝼀', '𝼞'),
('𞄀', '𞄬'),
('𞄷', '𞄽'),
('𞅎', '𞅎'),
+ ('𞊐', '𞊭'),
('𞋀', '𞋫'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('𞤀', '𞥃'),
('𞥋', '𞥋'),
@@ -1051,13 +1094,13 @@ pub const LETTER: &'static [(char, char)] = &[
('𞺡', '𞺣'),
('𞺥', '𞺩'),
('𞺫', '𞺻'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
pub const LETTER_NUMBER: &'static [(char, char)] = &[
@@ -1510,7 +1553,7 @@ pub const LOWERCASE_LETTER: &'static [(char, char)] = &[
('ⅆ', 'ⅉ'),
('ⅎ', 'ⅎ'),
('ↄ', 'ↄ'),
- ('ⰰ', 'ⱞ'),
+ ('ⰰ', 'ⱟ'),
('ⱡ', 'ⱡ'),
('ⱥ', 'ⱦ'),
('ⱨ', 'ⱨ'),
@@ -1679,19 +1722,29 @@ pub const LOWERCASE_LETTER: &'static [(char, char)] = &[
('ꞻ', 'ꞻ'),
('ꞽ', 'ꞽ'),
('ꞿ', 'ꞿ'),
+ ('ꟁ', 'ꟁ'),
('ꟃ', 'ꟃ'),
- ('\u{a7c8}', '\u{a7c8}'),
- ('\u{a7ca}', '\u{a7ca}'),
- ('\u{a7f6}', '\u{a7f6}'),
+ ('ꟈ', 'ꟈ'),
+ ('ꟊ', 'ꟊ'),
+ ('ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟕ'),
+ ('ꟗ', 'ꟗ'),
+ ('ꟙ', 'ꟙ'),
+ ('ꟶ', 'ꟶ'),
('ꟺ', 'ꟺ'),
('ꬰ', 'ꭚ'),
- ('ꭠ', '\u{ab68}'),
+ ('ꭠ', 'ꭨ'),
('ꭰ', 'ꮿ'),
('ff', 'st'),
('ﬓ', 'ﬗ'),
('a', 'z'),
('𐐨', '𐑏'),
('𐓘', '𐓻'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐳀', '𐳲'),
('𑣀', '𑣟'),
('𖹠', '𖹿'),
@@ -1723,6 +1776,8 @@ pub const LOWERCASE_LETTER: &'static [(char, char)] = &[
('𝞪', '𝟂'),
('𝟄', '𝟉'),
('𝟋', '𝟋'),
+ ('𝼀', '𝼉'),
+ ('𝼋', '𝼞'),
('𞤢', '𞥃'),
];
@@ -1751,7 +1806,8 @@ pub const MARK: &'static [(char, char)] = &[
('\u{825}', '\u{827}'),
('\u{829}', '\u{82d}'),
('\u{859}', '\u{85b}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('\u{898}', '\u{89f}'),
+ ('\u{8ca}', '\u{8e1}'),
('\u{8e3}', 'ः'),
('\u{93a}', '\u{93c}'),
('ा', 'ॏ'),
@@ -1793,6 +1849,7 @@ pub const MARK: &'static [(char, char)] = &[
('ொ', '\u{bcd}'),
('\u{bd7}', '\u{bd7}'),
('\u{c00}', '\u{c04}'),
+ ('\u{c3c}', '\u{c3c}'),
('\u{c3e}', 'ౄ'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
@@ -1844,13 +1901,14 @@ pub const MARK: &'static [(char, char)] = &[
('ႏ', 'ႏ'),
('ႚ', '\u{109d}'),
('\u{135d}', '\u{135f}'),
- ('\u{1712}', '\u{1714}'),
- ('\u{1732}', '\u{1734}'),
+ ('\u{1712}', '᜕'),
+ ('\u{1732}', '᜴'),
('\u{1752}', '\u{1753}'),
('\u{1772}', '\u{1773}'),
('\u{17b4}', '\u{17d3}'),
('\u{17dd}', '\u{17dd}'),
('\u{180b}', '\u{180d}'),
+ ('\u{180f}', '\u{180f}'),
('\u{1885}', '\u{1886}'),
('\u{18a9}', '\u{18a9}'),
('\u{1920}', 'ᤫ'),
@@ -1859,7 +1917,7 @@ pub const MARK: &'static [(char, char)] = &[
('ᩕ', '\u{1a5e}'),
('\u{1a60}', '\u{1a7c}'),
('\u{1a7f}', '\u{1a7f}'),
- ('\u{1ab0}', '\u{1ac0}'),
+ ('\u{1ab0}', '\u{1ace}'),
('\u{1b00}', 'ᬄ'),
('\u{1b34}', '᭄'),
('\u{1b6b}', '\u{1b73}'),
@@ -1872,8 +1930,7 @@ pub const MARK: &'static [(char, char)] = &[
('\u{1ced}', '\u{1ced}'),
('\u{1cf4}', '\u{1cf4}'),
('᳷', '\u{1cf9}'),
- ('\u{1dc0}', '\u{1df9}'),
- ('\u{1dfb}', '\u{1dff}'),
+ ('\u{1dc0}', '\u{1dff}'),
('\u{20d0}', '\u{20f0}'),
('\u{2cef}', '\u{2cf1}'),
('\u{2d7f}', '\u{2d7f}'),
@@ -1926,10 +1983,14 @@ pub const MARK: &'static [(char, char)] = &[
('\u{10d24}', '\u{10d27}'),
('\u{10eab}', '\u{10eac}'),
('\u{10f46}', '\u{10f50}'),
+ ('\u{10f82}', '\u{10f85}'),
('𑀀', '𑀂'),
('\u{11038}', '\u{11046}'),
+ ('\u{11070}', '\u{11070}'),
+ ('\u{11073}', '\u{11074}'),
('\u{1107f}', '𑂂'),
('𑂰', '\u{110ba}'),
+ ('\u{110c2}', '\u{110c2}'),
('\u{11100}', '\u{11102}'),
('\u{11127}', '\u{11134}'),
('𑅅', '𑅆'),
@@ -1937,7 +1998,7 @@ pub const MARK: &'static [(char, char)] = &[
('\u{11180}', '𑆂'),
('𑆳', '𑇀'),
('\u{111c9}', '\u{111cc}'),
- ('\u{111ce}', '\u{111cf}'),
+ ('𑇎', '\u{111cf}'),
('𑈬', '\u{11237}'),
('\u{1123e}', '\u{1123e}'),
('\u{112df}', '\u{112ea}'),
@@ -1960,11 +2021,11 @@ pub const MARK: &'static [(char, char)] = &[
('\u{116ab}', '\u{116b7}'),
('\u{1171d}', '\u{1172b}'),
('𑠬', '\u{1183a}'),
- ('\u{11930}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
+ ('\u{11930}', '𑤵'),
+ ('𑤷', '𑤸'),
('\u{1193b}', '\u{1193e}'),
- ('\u{11940}', '\u{11940}'),
- ('\u{11942}', '\u{11943}'),
+ ('𑥀', '𑥀'),
+ ('𑥂', '\u{11943}'),
('𑧑', '\u{119d7}'),
('\u{119da}', '\u{119e0}'),
('𑧤', '𑧤'),
@@ -1993,8 +2054,10 @@ pub const MARK: &'static [(char, char)] = &[
('𖽑', '𖾇'),
('\u{16f8f}', '\u{16f92}'),
('\u{16fe4}', '\u{16fe4}'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('\u{1bc9d}', '\u{1bc9e}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d165}', '\u{1d169}'),
('𝅭', '\u{1d172}'),
('\u{1d17b}', '\u{1d182}'),
@@ -2013,6 +2076,7 @@ pub const MARK: &'static [(char, char)] = &[
('\u{1e023}', '\u{1e024}'),
('\u{1e026}', '\u{1e02a}'),
('\u{1e130}', '\u{1e136}'),
+ ('\u{1e2ae}', '\u{1e2ae}'),
('\u{1e2ec}', '\u{1e2ef}'),
('\u{1e8d0}', '\u{1e8d6}'),
('\u{1e944}', '\u{1e94a}'),
@@ -2102,6 +2166,7 @@ pub const MODIFIER_LETTER: &'static [(char, char)] = &[
('ࠚ', 'ࠚ'),
('ࠤ', 'ࠤ'),
('ࠨ', 'ࠨ'),
+ ('ࣉ', 'ࣉ'),
('ॱ', 'ॱ'),
('ๆ', 'ๆ'),
('ໆ', 'ໆ'),
@@ -2132,6 +2197,7 @@ pub const MODIFIER_LETTER: &'static [(char, char)] = &[
('ꜗ', 'ꜟ'),
('ꝰ', 'ꝰ'),
('ꞈ', 'ꞈ'),
+ ('ꟲ', 'ꟴ'),
('ꟸ', 'ꟹ'),
('ꧏ', 'ꧏ'),
('ꧦ', 'ꧦ'),
@@ -2139,13 +2205,19 @@ pub const MODIFIER_LETTER: &'static [(char, char)] = &[
('ꫝ', 'ꫝ'),
('ꫳ', 'ꫴ'),
('ꭜ', 'ꭟ'),
- ('\u{ab69}', '\u{ab69}'),
+ ('ꭩ', 'ꭩ'),
('ー', 'ー'),
('\u{ff9e}', '\u{ff9f}'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𖭀', '𖭃'),
('𖾓', '𖾟'),
('𖿠', '𖿡'),
('𖿣', '𖿣'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
('𞄷', '𞄽'),
('𞥋', '𞥋'),
];
@@ -2164,6 +2236,7 @@ pub const MODIFIER_SYMBOL: &'static [(char, char)] = &[
('˯', '˿'),
('͵', '͵'),
('΄', '΅'),
+ ('࢈', '࢈'),
('᾽', '᾽'),
('᾿', '῁'),
('῍', '῏'),
@@ -2175,8 +2248,8 @@ pub const MODIFIER_SYMBOL: &'static [(char, char)] = &[
('꜠', '꜡'),
('꞉', '꞊'),
('꭛', '꭛'),
- ('\u{ab6a}', '\u{ab6b}'),
- ('﮲', '﯁'),
+ ('꭪', '꭫'),
+ ('﮲', '﯂'),
('^', '^'),
('`', '`'),
(' ̄', ' ̄'),
@@ -2208,7 +2281,8 @@ pub const NONSPACING_MARK: &'static [(char, char)] = &[
('\u{825}', '\u{827}'),
('\u{829}', '\u{82d}'),
('\u{859}', '\u{85b}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('\u{898}', '\u{89f}'),
+ ('\u{8ca}', '\u{8e1}'),
('\u{8e3}', '\u{902}'),
('\u{93a}', '\u{93a}'),
('\u{93c}', '\u{93c}'),
@@ -2249,6 +2323,7 @@ pub const NONSPACING_MARK: &'static [(char, char)] = &[
('\u{bcd}', '\u{bcd}'),
('\u{c00}', '\u{c00}'),
('\u{c04}', '\u{c04}'),
+ ('\u{c3c}', '\u{c3c}'),
('\u{c3e}', '\u{c40}'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
@@ -2298,7 +2373,7 @@ pub const NONSPACING_MARK: &'static [(char, char)] = &[
('\u{109d}', '\u{109d}'),
('\u{135d}', '\u{135f}'),
('\u{1712}', '\u{1714}'),
- ('\u{1732}', '\u{1734}'),
+ ('\u{1732}', '\u{1733}'),
('\u{1752}', '\u{1753}'),
('\u{1772}', '\u{1773}'),
('\u{17b4}', '\u{17b5}'),
@@ -2307,6 +2382,7 @@ pub const NONSPACING_MARK: &'static [(char, char)] = &[
('\u{17c9}', '\u{17d3}'),
('\u{17dd}', '\u{17dd}'),
('\u{180b}', '\u{180d}'),
+ ('\u{180f}', '\u{180f}'),
('\u{1885}', '\u{1886}'),
('\u{18a9}', '\u{18a9}'),
('\u{1920}', '\u{1922}'),
@@ -2323,7 +2399,7 @@ pub const NONSPACING_MARK: &'static [(char, char)] = &[
('\u{1a73}', '\u{1a7c}'),
('\u{1a7f}', '\u{1a7f}'),
('\u{1ab0}', '\u{1abd}'),
- ('\u{1abf}', '\u{1ac0}'),
+ ('\u{1abf}', '\u{1ace}'),
('\u{1b00}', '\u{1b03}'),
('\u{1b34}', '\u{1b34}'),
('\u{1b36}', '\u{1b3a}'),
@@ -2346,8 +2422,7 @@ pub const NONSPACING_MARK: &'static [(char, char)] = &[
('\u{1ced}', '\u{1ced}'),
('\u{1cf4}', '\u{1cf4}'),
('\u{1cf8}', '\u{1cf9}'),
- ('\u{1dc0}', '\u{1df9}'),
- ('\u{1dfb}', '\u{1dff}'),
+ ('\u{1dc0}', '\u{1dff}'),
('\u{20d0}', '\u{20dc}'),
('\u{20e1}', '\u{20e1}'),
('\u{20e5}', '\u{20f0}'),
@@ -2406,11 +2481,15 @@ pub const NONSPACING_MARK: &'static [(char, char)] = &[
('\u{10d24}', '\u{10d27}'),
('\u{10eab}', '\u{10eac}'),
('\u{10f46}', '\u{10f50}'),
+ ('\u{10f82}', '\u{10f85}'),
('\u{11001}', '\u{11001}'),
('\u{11038}', '\u{11046}'),
+ ('\u{11070}', '\u{11070}'),
+ ('\u{11073}', '\u{11074}'),
('\u{1107f}', '\u{11081}'),
('\u{110b3}', '\u{110b6}'),
('\u{110b9}', '\u{110ba}'),
+ ('\u{110c2}', '\u{110c2}'),
('\u{11100}', '\u{11102}'),
('\u{11127}', '\u{1112b}'),
('\u{1112d}', '\u{11134}'),
@@ -2490,6 +2569,8 @@ pub const NONSPACING_MARK: &'static [(char, char)] = &[
('\u{16f8f}', '\u{16f92}'),
('\u{16fe4}', '\u{16fe4}'),
('\u{1bc9d}', '\u{1bc9e}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d167}', '\u{1d169}'),
('\u{1d17b}', '\u{1d182}'),
('\u{1d185}', '\u{1d18b}'),
@@ -2507,6 +2588,7 @@ pub const NONSPACING_MARK: &'static [(char, char)] = &[
('\u{1e023}', '\u{1e024}'),
('\u{1e026}', '\u{1e02a}'),
('\u{1e130}', '\u{1e136}'),
+ ('\u{1e2ae}', '\u{1e2ae}'),
('\u{1e2ec}', '\u{1e2ef}'),
('\u{1e8d0}', '\u{1e8d6}'),
('\u{1e944}', '\u{1e94a}'),
@@ -2610,7 +2692,7 @@ pub const NUMBER: &'static [(char, char)] = &[
('𐹠', '𐹾'),
('𐼝', '𐼦'),
('𐽑', '𐽔'),
- ('\u{10fc5}', '\u{10fcb}'),
+ ('𐿅', '𐿋'),
('𑁒', '𑁯'),
('𑃰', '𑃹'),
('𑄶', '𑄿'),
@@ -2623,13 +2705,14 @@ pub const NUMBER: &'static [(char, char)] = &[
('𑛀', '𑛉'),
('𑜰', '𑜻'),
('𑣠', '𑣲'),
- ('\u{11950}', '\u{11959}'),
+ ('𑥐', '𑥙'),
('𑱐', '𑱬'),
('𑵐', '𑵙'),
('𑶠', '𑶩'),
('𑿀', '𑿔'),
('𒐀', '𒑮'),
('𖩠', '𖩩'),
+ ('𖫀', '𖫉'),
('𖭐', '𖭙'),
('𖭛', '𖭡'),
('𖺀', '𖺖'),
@@ -2646,7 +2729,7 @@ pub const NUMBER: &'static [(char, char)] = &[
('𞴁', '𞴭'),
('𞴯', '𞴽'),
('🄀', '🄌'),
- ('\u{1fbf0}', '\u{1fbf9}'),
+ ('🯰', '🯹'),
];
pub const OPEN_PUNCTUATION: &'static [(char, char)] = &[
@@ -2696,6 +2779,10 @@ pub const OPEN_PUNCTUATION: &'static [(char, char)] = &[
('⸦', '⸦'),
('⸨', '⸨'),
('⹂', '⹂'),
+ ('⹕', '⹕'),
+ ('⹗', '⹗'),
+ ('⹙', '⹙'),
+ ('⹛', '⹛'),
('〈', '〈'),
('《', '《'),
('「', '「'),
@@ -2728,7 +2815,7 @@ pub const OPEN_PUNCTUATION: &'static [(char, char)] = &[
];
pub const OTHER: &'static [(char, char)] = &[
- ('\u{0}', '\u{1f}'),
+ ('\0', '\u{1f}'),
('\u{7f}', '\u{9f}'),
('\u{ad}', '\u{ad}'),
('\u{378}', '\u{379}'),
@@ -2743,7 +2830,7 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{5c8}', '\u{5cf}'),
('\u{5eb}', '\u{5ee}'),
('\u{5f5}', '\u{605}'),
- ('\u{61c}', '\u{61d}'),
+ ('\u{61c}', '\u{61c}'),
('\u{6dd}', '\u{6dd}'),
('\u{70e}', '\u{70f}'),
('\u{74b}', '\u{74c}'),
@@ -2753,9 +2840,8 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{83f}', '\u{83f}'),
('\u{85c}', '\u{85d}'),
('\u{85f}', '\u{85f}'),
- ('\u{86b}', '\u{89f}'),
- ('\u{8b5}', '\u{8b5}'),
- ('\u{8c8}', '\u{8d2}'),
+ ('\u{86b}', '\u{86f}'),
+ ('\u{88f}', '\u{897}'),
('\u{8e2}', '\u{8e2}'),
('\u{984}', '\u{984}'),
('\u{98d}', '\u{98e}'),
@@ -2834,12 +2920,13 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{c0d}', '\u{c0d}'),
('\u{c11}', '\u{c11}'),
('\u{c29}', '\u{c29}'),
- ('\u{c3a}', '\u{c3c}'),
+ ('\u{c3a}', '\u{c3b}'),
('\u{c45}', '\u{c45}'),
('\u{c49}', '\u{c49}'),
('\u{c4e}', '\u{c54}'),
('\u{c57}', '\u{c57}'),
- ('\u{c5b}', '\u{c5f}'),
+ ('\u{c5b}', '\u{c5c}'),
+ ('\u{c5e}', '\u{c5f}'),
('\u{c64}', '\u{c65}'),
('\u{c70}', '\u{c76}'),
('\u{c8d}', '\u{c8d}'),
@@ -2850,7 +2937,7 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{cc5}', '\u{cc5}'),
('\u{cc9}', '\u{cc9}'),
('\u{cce}', '\u{cd4}'),
- ('\u{cd7}', '\u{cdd}'),
+ ('\u{cd7}', '\u{cdc}'),
('\u{cdf}', '\u{cdf}'),
('\u{ce4}', '\u{ce5}'),
('\u{cf0}', '\u{cf0}'),
@@ -2918,8 +3005,7 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{13fe}', '\u{13ff}'),
('\u{169d}', '\u{169f}'),
('\u{16f9}', '\u{16ff}'),
- ('\u{170d}', '\u{170d}'),
- ('\u{1715}', '\u{171f}'),
+ ('\u{1716}', '\u{171e}'),
('\u{1737}', '\u{173f}'),
('\u{1754}', '\u{175f}'),
('\u{176d}', '\u{176d}'),
@@ -2928,7 +3014,7 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{17de}', '\u{17df}'),
('\u{17ea}', '\u{17ef}'),
('\u{17fa}', '\u{17ff}'),
- ('\u{180e}', '\u{180f}'),
+ ('\u{180e}', '\u{180e}'),
('\u{181a}', '\u{181f}'),
('\u{1879}', '\u{187f}'),
('\u{18ab}', '\u{18af}'),
@@ -2948,9 +3034,9 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{1a8a}', '\u{1a8f}'),
('\u{1a9a}', '\u{1a9f}'),
('\u{1aae}', '\u{1aaf}'),
- ('\u{1ac1}', '\u{1aff}'),
- ('\u{1b4c}', '\u{1b4f}'),
- ('\u{1b7d}', '\u{1b7f}'),
+ ('\u{1acf}', '\u{1aff}'),
+ ('\u{1b4d}', '\u{1b4f}'),
+ ('\u{1b7f}', '\u{1b7f}'),
('\u{1bf4}', '\u{1bfb}'),
('\u{1c38}', '\u{1c3a}'),
('\u{1c4a}', '\u{1c4c}'),
@@ -2958,7 +3044,6 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{1cbb}', '\u{1cbc}'),
('\u{1cc8}', '\u{1ccf}'),
('\u{1cfb}', '\u{1cff}'),
- ('\u{1dfa}', '\u{1dfa}'),
('\u{1f16}', '\u{1f17}'),
('\u{1f1e}', '\u{1f1f}'),
('\u{1f46}', '\u{1f47}'),
@@ -2981,15 +3066,13 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{2072}', '\u{2073}'),
('\u{208f}', '\u{208f}'),
('\u{209d}', '\u{209f}'),
- ('\u{20c0}', '\u{20cf}'),
+ ('\u{20c1}', '\u{20cf}'),
('\u{20f1}', '\u{20ff}'),
('\u{218c}', '\u{218f}'),
('\u{2427}', '\u{243f}'),
('\u{244b}', '\u{245f}'),
('\u{2b74}', '\u{2b75}'),
('\u{2b96}', '\u{2b96}'),
- ('\u{2c2f}', '\u{2c2f}'),
- ('\u{2c5f}', '\u{2c5f}'),
('\u{2cf4}', '\u{2cf8}'),
('\u{2d26}', '\u{2d26}'),
('\u{2d28}', '\u{2d2c}'),
@@ -3005,7 +3088,7 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{2dcf}', '\u{2dcf}'),
('\u{2dd7}', '\u{2dd7}'),
('\u{2ddf}', '\u{2ddf}'),
- ('\u{2e53}', '\u{2e7f}'),
+ ('\u{2e5e}', '\u{2e7f}'),
('\u{2e9a}', '\u{2e9a}'),
('\u{2ef4}', '\u{2eff}'),
('\u{2fd6}', '\u{2fef}'),
@@ -3017,13 +3100,14 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{318f}', '\u{318f}'),
('\u{31e4}', '\u{31ef}'),
('\u{321f}', '\u{321f}'),
- ('\u{9ffd}', '\u{9fff}'),
('\u{a48d}', '\u{a48f}'),
('\u{a4c7}', '\u{a4cf}'),
('\u{a62c}', '\u{a63f}'),
('\u{a6f8}', '\u{a6ff}'),
- ('\u{a7c0}', '\u{a7c1}'),
- ('\u{a7cb}', '\u{a7f4}'),
+ ('\u{a7cb}', '\u{a7cf}'),
+ ('\u{a7d2}', '\u{a7d2}'),
+ ('\u{a7d4}', '\u{a7d4}'),
+ ('\u{a7da}', '\u{a7f1}'),
('\u{a82d}', '\u{a82f}'),
('\u{a83a}', '\u{a83f}'),
('\u{a878}', '\u{a87f}'),
@@ -3059,11 +3143,10 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{fb3f}', '\u{fb3f}'),
('\u{fb42}', '\u{fb42}'),
('\u{fb45}', '\u{fb45}'),
- ('\u{fbc2}', '\u{fbd2}'),
- ('\u{fd40}', '\u{fd4f}'),
+ ('\u{fbc3}', '\u{fbd2}'),
('\u{fd90}', '\u{fd91}'),
- ('\u{fdc8}', '\u{fdef}'),
- ('\u{fdfe}', '\u{fdff}'),
+ ('\u{fdc8}', '\u{fdce}'),
+ ('\u{fdd0}', '\u{fdef}'),
('\u{fe1a}', '\u{fe1f}'),
('\u{fe53}', '\u{fe53}'),
('\u{fe67}', '\u{fe67}'),
@@ -3106,10 +3189,20 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{104fc}', '\u{104ff}'),
('\u{10528}', '\u{1052f}'),
('\u{10564}', '\u{1056e}'),
- ('\u{10570}', '\u{105ff}'),
+ ('\u{1057b}', '\u{1057b}'),
+ ('\u{1058b}', '\u{1058b}'),
+ ('\u{10593}', '\u{10593}'),
+ ('\u{10596}', '\u{10596}'),
+ ('\u{105a2}', '\u{105a2}'),
+ ('\u{105b2}', '\u{105b2}'),
+ ('\u{105ba}', '\u{105ba}'),
+ ('\u{105bd}', '\u{105ff}'),
('\u{10737}', '\u{1073f}'),
('\u{10756}', '\u{1075f}'),
- ('\u{10768}', '\u{107ff}'),
+ ('\u{10768}', '\u{1077f}'),
+ ('\u{10786}', '\u{10786}'),
+ ('\u{107b1}', '\u{107b1}'),
+ ('\u{107bb}', '\u{107ff}'),
('\u{10806}', '\u{10807}'),
('\u{10809}', '\u{10809}'),
('\u{10836}', '\u{10836}'),
@@ -3152,13 +3245,14 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{10eae}', '\u{10eaf}'),
('\u{10eb2}', '\u{10eff}'),
('\u{10f28}', '\u{10f2f}'),
- ('\u{10f5a}', '\u{10faf}'),
+ ('\u{10f5a}', '\u{10f6f}'),
+ ('\u{10f8a}', '\u{10faf}'),
('\u{10fcc}', '\u{10fdf}'),
('\u{10ff7}', '\u{10fff}'),
('\u{1104e}', '\u{11051}'),
- ('\u{11070}', '\u{1107e}'),
+ ('\u{11076}', '\u{1107e}'),
('\u{110bd}', '\u{110bd}'),
- ('\u{110c2}', '\u{110cf}'),
+ ('\u{110c3}', '\u{110cf}'),
('\u{110e9}', '\u{110ef}'),
('\u{110fa}', '\u{110ff}'),
('\u{11135}', '\u{11135}'),
@@ -3199,11 +3293,11 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{11645}', '\u{1164f}'),
('\u{1165a}', '\u{1165f}'),
('\u{1166d}', '\u{1167f}'),
- ('\u{116b9}', '\u{116bf}'),
+ ('\u{116ba}', '\u{116bf}'),
('\u{116ca}', '\u{116ff}'),
('\u{1171b}', '\u{1171c}'),
('\u{1172c}', '\u{1172f}'),
- ('\u{11740}', '\u{117ff}'),
+ ('\u{11747}', '\u{117ff}'),
('\u{1183c}', '\u{1189f}'),
('\u{118f3}', '\u{118fe}'),
('\u{11907}', '\u{11908}'),
@@ -3218,7 +3312,7 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{119d8}', '\u{119d9}'),
('\u{119e5}', '\u{119ff}'),
('\u{11a48}', '\u{11a4f}'),
- ('\u{11aa3}', '\u{11abf}'),
+ ('\u{11aa3}', '\u{11aaf}'),
('\u{11af9}', '\u{11bff}'),
('\u{11c09}', '\u{11c09}'),
('\u{11c37}', '\u{11c37}'),
@@ -3246,13 +3340,15 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{1239a}', '\u{123ff}'),
('\u{1246f}', '\u{1246f}'),
('\u{12475}', '\u{1247f}'),
- ('\u{12544}', '\u{12fff}'),
+ ('\u{12544}', '\u{12f8f}'),
+ ('\u{12ff3}', '\u{12fff}'),
('\u{1342f}', '\u{143ff}'),
('\u{14647}', '\u{167ff}'),
('\u{16a39}', '\u{16a3f}'),
('\u{16a5f}', '\u{16a5f}'),
('\u{16a6a}', '\u{16a6d}'),
- ('\u{16a70}', '\u{16acf}'),
+ ('\u{16abf}', '\u{16abf}'),
+ ('\u{16aca}', '\u{16acf}'),
('\u{16aee}', '\u{16aef}'),
('\u{16af6}', '\u{16aff}'),
('\u{16b46}', '\u{16b4f}'),
@@ -3268,8 +3364,11 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{16ff2}', '\u{16fff}'),
('\u{187f8}', '\u{187ff}'),
('\u{18cd6}', '\u{18cff}'),
- ('\u{18d09}', '\u{1afff}'),
- ('\u{1b11f}', '\u{1b14f}'),
+ ('\u{18d09}', '\u{1afef}'),
+ ('\u{1aff4}', '\u{1aff4}'),
+ ('\u{1affc}', '\u{1affc}'),
+ ('\u{1afff}', '\u{1afff}'),
+ ('\u{1b123}', '\u{1b14f}'),
('\u{1b153}', '\u{1b163}'),
('\u{1b168}', '\u{1b16f}'),
('\u{1b2fc}', '\u{1bbff}'),
@@ -3277,11 +3376,14 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{1bc7d}', '\u{1bc7f}'),
('\u{1bc89}', '\u{1bc8f}'),
('\u{1bc9a}', '\u{1bc9b}'),
- ('\u{1bca0}', '\u{1cfff}'),
+ ('\u{1bca0}', '\u{1ceff}'),
+ ('\u{1cf2e}', '\u{1cf2f}'),
+ ('\u{1cf47}', '\u{1cf4f}'),
+ ('\u{1cfc4}', '\u{1cfff}'),
('\u{1d0f6}', '\u{1d0ff}'),
('\u{1d127}', '\u{1d128}'),
('\u{1d173}', '\u{1d17a}'),
- ('\u{1d1e9}', '\u{1d1ff}'),
+ ('\u{1d1eb}', '\u{1d1ff}'),
('\u{1d246}', '\u{1d2df}'),
('\u{1d2f4}', '\u{1d2ff}'),
('\u{1d357}', '\u{1d35f}'),
@@ -3308,7 +3410,8 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{1d7cc}', '\u{1d7cd}'),
('\u{1da8c}', '\u{1da9a}'),
('\u{1daa0}', '\u{1daa0}'),
- ('\u{1dab0}', '\u{1dfff}'),
+ ('\u{1dab0}', '\u{1deff}'),
+ ('\u{1df1f}', '\u{1dfff}'),
('\u{1e007}', '\u{1e007}'),
('\u{1e019}', '\u{1e01a}'),
('\u{1e022}', '\u{1e022}'),
@@ -3317,9 +3420,14 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{1e12d}', '\u{1e12f}'),
('\u{1e13e}', '\u{1e13f}'),
('\u{1e14a}', '\u{1e14d}'),
- ('\u{1e150}', '\u{1e2bf}'),
+ ('\u{1e150}', '\u{1e28f}'),
+ ('\u{1e2af}', '\u{1e2bf}'),
('\u{1e2fa}', '\u{1e2fe}'),
- ('\u{1e300}', '\u{1e7ff}'),
+ ('\u{1e300}', '\u{1e7df}'),
+ ('\u{1e7e7}', '\u{1e7e7}'),
+ ('\u{1e7ec}', '\u{1e7ec}'),
+ ('\u{1e7ef}', '\u{1e7ef}'),
+ ('\u{1e7ff}', '\u{1e7ff}'),
('\u{1e8c5}', '\u{1e8c6}'),
('\u{1e8d7}', '\u{1e8ff}'),
('\u{1e94c}', '\u{1e94f}'),
@@ -3373,34 +3481,35 @@ pub const OTHER: &'static [(char, char)] = &[
('\u{1f249}', '\u{1f24f}'),
('\u{1f252}', '\u{1f25f}'),
('\u{1f266}', '\u{1f2ff}'),
- ('\u{1f6d8}', '\u{1f6df}'),
+ ('\u{1f6d8}', '\u{1f6dc}'),
('\u{1f6ed}', '\u{1f6ef}'),
('\u{1f6fd}', '\u{1f6ff}'),
('\u{1f774}', '\u{1f77f}'),
('\u{1f7d9}', '\u{1f7df}'),
- ('\u{1f7ec}', '\u{1f7ff}'),
+ ('\u{1f7ec}', '\u{1f7ef}'),
+ ('\u{1f7f1}', '\u{1f7ff}'),
('\u{1f80c}', '\u{1f80f}'),
('\u{1f848}', '\u{1f84f}'),
('\u{1f85a}', '\u{1f85f}'),
('\u{1f888}', '\u{1f88f}'),
('\u{1f8ae}', '\u{1f8af}'),
('\u{1f8b2}', '\u{1f8ff}'),
- ('\u{1f979}', '\u{1f979}'),
- ('\u{1f9cc}', '\u{1f9cc}'),
('\u{1fa54}', '\u{1fa5f}'),
('\u{1fa6e}', '\u{1fa6f}'),
('\u{1fa75}', '\u{1fa77}'),
- ('\u{1fa7b}', '\u{1fa7f}'),
+ ('\u{1fa7d}', '\u{1fa7f}'),
('\u{1fa87}', '\u{1fa8f}'),
- ('\u{1faa9}', '\u{1faaf}'),
- ('\u{1fab7}', '\u{1fabf}'),
- ('\u{1fac3}', '\u{1facf}'),
- ('\u{1fad7}', '\u{1faff}'),
+ ('\u{1faad}', '\u{1faaf}'),
+ ('\u{1fabb}', '\u{1fabf}'),
+ ('\u{1fac6}', '\u{1facf}'),
+ ('\u{1fada}', '\u{1fadf}'),
+ ('\u{1fae8}', '\u{1faef}'),
+ ('\u{1faf7}', '\u{1faff}'),
('\u{1fb93}', '\u{1fb93}'),
('\u{1fbcb}', '\u{1fbef}'),
('\u{1fbfa}', '\u{1ffff}'),
- ('\u{2a6de}', '\u{2a6ff}'),
- ('\u{2b735}', '\u{2b73f}'),
+ ('\u{2a6e0}', '\u{2a6ff}'),
+ ('\u{2b739}', '\u{2b73f}'),
('\u{2b81e}', '\u{2b81f}'),
('\u{2cea2}', '\u{2ceaf}'),
('\u{2ebe1}', '\u{2f7ff}'),
@@ -3433,8 +3542,9 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('ࠀ', 'ࠕ'),
('ࡀ', 'ࡘ'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
+ ('ࡰ', 'ࢇ'),
+ ('ࢉ', 'ࢎ'),
+ ('ࢠ', 'ࣈ'),
('ऄ', 'ह'),
('ऽ', 'ऽ'),
('ॐ', 'ॐ'),
@@ -3499,6 +3609,7 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('ప', 'హ'),
('ఽ', 'ఽ'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', 'ౡ'),
('ಀ', 'ಀ'),
('ಅ', 'ಌ'),
@@ -3507,10 +3618,10 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('ಪ', 'ಳ'),
('ವ', 'ಹ'),
('ಽ', 'ಽ'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', 'ೡ'),
('ೱ', 'ೲ'),
- ('\u{d04}', 'ഌ'),
+ ('ഄ', 'ഌ'),
('എ', 'ഐ'),
('ഒ', 'ഺ'),
('ഽ', 'ഽ'),
@@ -3571,9 +3682,8 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('ᚁ', 'ᚚ'),
('ᚠ', 'ᛪ'),
('ᛱ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', 'ᜑ'),
- ('ᜠ', 'ᜱ'),
+ ('ᜀ', 'ᜑ'),
+ ('ᜟ', 'ᜱ'),
('ᝀ', 'ᝑ'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -3593,7 +3703,7 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('ᨀ', 'ᨖ'),
('ᨠ', 'ᩔ'),
('ᬅ', 'ᬳ'),
- ('ᭅ', 'ᭋ'),
+ ('ᭅ', 'ᭌ'),
('ᮃ', 'ᮠ'),
('ᮮ', 'ᮯ'),
('ᮺ', 'ᯥ'),
@@ -3623,11 +3733,10 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('ヿ', 'ヿ'),
('ㄅ', 'ㄯ'),
('ㄱ', 'ㆎ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('ㇰ', 'ㇿ'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
- ('ꀀ', 'ꀔ'),
+ ('㐀', '䶿'),
+ ('一', 'ꀔ'),
('ꀖ', 'ꒌ'),
('ꓐ', 'ꓷ'),
('ꔀ', 'ꘋ'),
@@ -3750,19 +3859,22 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('𐮀', '𐮑'),
('𐰀', '𐱈'),
('𐴀', '𐴣'),
- ('\u{10e80}', '\u{10ea9}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺀', '𐺩'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼜'),
('𐼧', '𐼧'),
('𐼰', '𐽅'),
- ('\u{10fb0}', '\u{10fc4}'),
+ ('𐽰', '𐾁'),
+ ('𐾰', '𐿄'),
('𐿠', '𐿶'),
('𑀃', '𑀷'),
+ ('𑁱', '𑁲'),
+ ('𑁵', '𑁵'),
('𑂃', '𑂯'),
('𑃐', '𑃨'),
('𑄃', '𑄦'),
('𑅄', '𑅄'),
- ('\u{11147}', '\u{11147}'),
+ ('𑅇', '𑅇'),
('𑅐', '𑅲'),
('𑅶', '𑅶'),
('𑆃', '𑆲'),
@@ -3788,7 +3900,7 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('𑍝', '𑍡'),
('𑐀', '𑐴'),
('𑑇', '𑑊'),
- ('𑑟', '\u{11461}'),
+ ('𑑟', '𑑡'),
('𑒀', '𑒯'),
('𑓄', '𑓅'),
('𑓇', '𑓇'),
@@ -3799,14 +3911,15 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('𑚀', '𑚪'),
('𑚸', '𑚸'),
('𑜀', '𑜚'),
+ ('𑝀', '𑝆'),
('𑠀', '𑠫'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{1192f}'),
- ('\u{1193f}', '\u{1193f}'),
- ('\u{11941}', '\u{11941}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤯'),
+ ('𑤿', '𑤿'),
+ ('𑥁', '𑥁'),
('𑦠', '𑦧'),
('𑦪', '𑧐'),
('𑧡', '𑧡'),
@@ -3817,7 +3930,7 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('𑩐', '𑩐'),
('𑩜', '𑪉'),
('𑪝', '𑪝'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '𑰮'),
('𑱀', '𑱀'),
@@ -3831,13 +3944,15 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('𑵪', '𑶉'),
('𑶘', '𑶘'),
('𑻠', '𑻲'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𒀀', '𒎙'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿰'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
+ ('𖩰', '𖪾'),
('𖫐', '𖫭'),
('𖬀', '𖬯'),
('𖭣', '𖭷'),
@@ -3845,9 +3960,9 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('𖼀', '𖽊'),
('𖽐', '𖽐'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('𛀀', '𛄞'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('𛀀', '𛄢'),
('𛅐', '𛅒'),
('𛅤', '𛅧'),
('𛅰', '𛋻'),
@@ -3855,9 +3970,15 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('𛱰', '𛱼'),
('𛲀', '𛲈'),
('𛲐', '𛲙'),
+ ('𝼊', '𝼊'),
('𞄀', '𞄬'),
('𞅎', '𞅎'),
+ ('𞊐', '𞊭'),
('𞋀', '𞋫'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('𞸀', '𞸃'),
('𞸅', '𞸟'),
@@ -3892,13 +4013,13 @@ pub const OTHER_LETTER: &'static [(char, char)] = &[
('𞺡', '𞺣'),
('𞺥', '𞺩'),
('𞺫', '𞺻'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
pub const OTHER_NUMBER: &'static [(char, char)] = &[
@@ -3955,7 +4076,7 @@ pub const OTHER_NUMBER: &'static [(char, char)] = &[
('𐹠', '𐹾'),
('𐼝', '𐼦'),
('𐽑', '𐽔'),
- ('\u{10fc5}', '\u{10fcb}'),
+ ('𐿅', '𐿋'),
('𑁒', '𑁥'),
('𑇡', '𑇴'),
('𑜺', '𑜻'),
@@ -3999,7 +4120,7 @@ pub const OTHER_PUNCTUATION: &'static [(char, char)] = &[
('؉', '؊'),
('،', '؍'),
('؛', '؛'),
- ('؞', '؟'),
+ ('؝', '؟'),
('٪', '٭'),
('۔', '۔'),
('܀', '܍'),
@@ -4036,6 +4157,7 @@ pub const OTHER_PUNCTUATION: &'static [(char, char)] = &[
('᪠', '᪦'),
('᪨', '᪭'),
('᭚', '᭠'),
+ ('᭽', '᭾'),
('᯼', '᯿'),
('᰻', '᰿'),
('᱾', '᱿'),
@@ -4064,7 +4186,7 @@ pub const OTHER_PUNCTUATION: &'static [(char, char)] = &[
('⸼', '⸿'),
('⹁', '⹁'),
('⹃', '⹏'),
- ('\u{2e52}', '\u{2e52}'),
+ ('⹒', '⹔'),
('、', '〃'),
('〽', '〽'),
('・', '・'),
@@ -4118,6 +4240,7 @@ pub const OTHER_PUNCTUATION: &'static [(char, char)] = &[
('𐬹', '𐬿'),
('𐮙', '𐮜'),
('𐽕', '𐽙'),
+ ('𐾆', '𐾉'),
('𑁇', '𑁍'),
('𑂻', '𑂼'),
('𑂾', '𑃁'),
@@ -4130,15 +4253,16 @@ pub const OTHER_PUNCTUATION: &'static [(char, char)] = &[
('𑈸', '𑈽'),
('𑊩', '𑊩'),
('𑑋', '𑑏'),
- ('\u{1145a}', '𑑛'),
+ ('𑑚', '𑑛'),
('𑑝', '𑑝'),
('𑓆', '𑓆'),
('𑗁', '𑗗'),
('𑙁', '𑙃'),
('𑙠', '𑙬'),
+ ('𑚹', '𑚹'),
('𑜼', '𑜾'),
('𑠻', '𑠻'),
- ('\u{11944}', '\u{11946}'),
+ ('𑥄', '𑥆'),
('𑧢', '𑧢'),
('𑨿', '𑩆'),
('𑪚', '𑪜'),
@@ -4148,6 +4272,7 @@ pub const OTHER_PUNCTUATION: &'static [(char, char)] = &[
('𑻷', '𑻸'),
('𑿿', '𑿿'),
('𒑰', '𒑴'),
+ ('𒿱', '𒿲'),
('𖩮', '𖩯'),
('𖫵', '𖫵'),
('𖬷', '𖬻'),
@@ -4240,9 +4365,9 @@ pub const OTHER_SYMBOL: &'static [(char, char)] = &[
('⭅', '⭆'),
('⭍', '⭳'),
('⭶', '⮕'),
- ('\u{2b97}', '⯿'),
+ ('⮗', '⯿'),
('⳥', '⳪'),
- ('\u{2e50}', '\u{2e51}'),
+ ('⹐', '⹑'),
('⺀', '⺙'),
('⺛', '⻳'),
('⼀', '⿕'),
@@ -4267,7 +4392,9 @@ pub const OTHER_SYMBOL: &'static [(char, char)] = &[
('꠶', '꠷'),
('꠹', '꠹'),
('꩷', '꩹'),
- ('﷽', '﷽'),
+ ('﵀', '﵏'),
+ ('﷏', '﷏'),
+ ('﷽', '﷿'),
('¦', '¦'),
('│', '│'),
('■', '○'),
@@ -4275,7 +4402,7 @@ pub const OTHER_SYMBOL: &'static [(char, char)] = &[
('𐄷', '𐄿'),
('𐅹', '𐆉'),
('𐆌', '𐆎'),
- ('𐆐', '\u{1019c}'),
+ ('𐆐', '𐆜'),
('𐆠', '𐆠'),
('𐇐', '𐇼'),
('𐡷', '𐡸'),
@@ -4286,13 +4413,14 @@ pub const OTHER_SYMBOL: &'static [(char, char)] = &[
('𖬼', '𖬿'),
('𖭅', '𖭅'),
('𛲜', '𛲜'),
+ ('𜽐', '𜿃'),
('𝀀', '𝃵'),
('𝄀', '𝄦'),
('𝄩', '𝅘𝅥𝅲'),
('𝅪', '𝅬'),
('𝆃', '𝆄'),
('𝆌', '𝆩'),
- ('𝆮', '𝇨'),
+ ('𝆮', '𝇪'),
('𝈀', '𝉁'),
('𝉅', '𝉅'),
('𝌀', '𝍖'),
@@ -4310,38 +4438,39 @@ pub const OTHER_SYMBOL: &'static [(char, char)] = &[
('🂱', '🂿'),
('🃁', '🃏'),
('🃑', '🃵'),
- ('\u{1f10d}', '\u{1f1ad}'),
+ ('🄍', '🆭'),
('🇦', '🈂'),
('🈐', '🈻'),
('🉀', '🉈'),
('🉐', '🉑'),
('🉠', '🉥'),
('🌀', '🏺'),
- ('🐀', '\u{1f6d7}'),
- ('🛠', '🛬'),
- ('🛰', '\u{1f6fc}'),
+ ('🐀', '🛗'),
+ ('🛝', '🛬'),
+ ('🛰', '🛼'),
('🜀', '🝳'),
('🞀', '🟘'),
('🟠', '🟫'),
+ ('🟰', '🟰'),
('🠀', '🠋'),
('🠐', '🡇'),
('🡐', '🡙'),
('🡠', '🢇'),
('🢐', '🢭'),
- ('\u{1f8b0}', '\u{1f8b1}'),
- ('🤀', '\u{1f978}'),
- ('🥺', '\u{1f9cb}'),
- ('🧍', '🩓'),
+ ('🢰', '🢱'),
+ ('🤀', '🩓'),
('🩠', '🩭'),
- ('🩰', '\u{1fa74}'),
- ('🩸', '🩺'),
- ('🪀', '\u{1fa86}'),
- ('🪐', '\u{1faa8}'),
- ('\u{1fab0}', '\u{1fab6}'),
- ('\u{1fac0}', '\u{1fac2}'),
- ('\u{1fad0}', '\u{1fad6}'),
- ('\u{1fb00}', '\u{1fb92}'),
- ('\u{1fb94}', '\u{1fbca}'),
+ ('🩰', '🩴'),
+ ('🩸', '🩼'),
+ ('🪀', '🪆'),
+ ('🪐', '🪬'),
+ ('🪰', '🪺'),
+ ('🫀', '🫅'),
+ ('🫐', '🫙'),
+ ('🫠', '🫧'),
+ ('🫰', '🫶'),
+ ('🬀', '🮒'),
+ ('🮔', '🯊'),
];
pub const PARAGRAPH_SEPARATOR: &'static [(char, char)] =
@@ -4381,7 +4510,7 @@ pub const PUNCTUATION: &'static [(char, char)] = &[
('؉', '؊'),
('،', '؍'),
('؛', '؛'),
- ('؞', '؟'),
+ ('؝', '؟'),
('٪', '٭'),
('۔', '۔'),
('܀', '܍'),
@@ -4420,6 +4549,7 @@ pub const PUNCTUATION: &'static [(char, char)] = &[
('᪠', '᪦'),
('᪨', '᪭'),
('᭚', '᭠'),
+ ('᭽', '᭾'),
('᯼', '᯿'),
('᰻', '᰿'),
('᱾', '᱿'),
@@ -4444,7 +4574,7 @@ pub const PUNCTUATION: &'static [(char, char)] = &[
('⵰', '⵰'),
('⸀', '⸮'),
('⸰', '⹏'),
- ('\u{2e52}', '\u{2e52}'),
+ ('⹒', '⹝'),
('、', '〃'),
('〈', '】'),
('〔', '〟'),
@@ -4498,8 +4628,9 @@ pub const PUNCTUATION: &'static [(char, char)] = &[
('𐫰', '𐫶'),
('𐬹', '𐬿'),
('𐮙', '𐮜'),
- ('\u{10ead}', '\u{10ead}'),
+ ('𐺭', '𐺭'),
('𐽕', '𐽙'),
+ ('𐾆', '𐾉'),
('𑁇', '𑁍'),
('𑂻', '𑂼'),
('𑂾', '𑃁'),
@@ -4512,15 +4643,16 @@ pub const PUNCTUATION: &'static [(char, char)] = &[
('𑈸', '𑈽'),
('𑊩', '𑊩'),
('𑑋', '𑑏'),
- ('\u{1145a}', '𑑛'),
+ ('𑑚', '𑑛'),
('𑑝', '𑑝'),
('𑓆', '𑓆'),
('𑗁', '𑗗'),
('𑙁', '𑙃'),
('𑙠', '𑙬'),
+ ('𑚹', '𑚹'),
('𑜼', '𑜾'),
('𑠻', '𑠻'),
- ('\u{11944}', '\u{11946}'),
+ ('𑥄', '𑥆'),
('𑧢', '𑧢'),
('𑨿', '𑩆'),
('𑪚', '𑪜'),
@@ -4530,6 +4662,7 @@ pub const PUNCTUATION: &'static [(char, char)] = &[
('𑻷', '𑻸'),
('𑿿', '𑿿'),
('𒑰', '𒑴'),
+ ('𒿱', '𒿲'),
('𖩮', '𖩯'),
('𖫵', '𖫵'),
('𖬷', '𖬻'),
@@ -4620,6 +4753,8 @@ pub const SPACING_MARK: &'static [(char, char)] = &[
('ႇ', 'ႌ'),
('ႏ', 'ႏ'),
('ႚ', 'ႜ'),
+ ('᜕', '᜕'),
+ ('᜴', '᜴'),
('ា', 'ា'),
('ើ', 'ៅ'),
('ះ', 'ៈ'),
@@ -4682,7 +4817,7 @@ pub const SPACING_MARK: &'static [(char, char)] = &[
('𑆂', '𑆂'),
('𑆳', '𑆵'),
('𑆿', '𑇀'),
- ('\u{111ce}', '\u{111ce}'),
+ ('𑇎', '𑇎'),
('𑈬', '𑈮'),
('𑈲', '𑈳'),
('𑈵', '𑈵'),
@@ -4714,11 +4849,11 @@ pub const SPACING_MARK: &'static [(char, char)] = &[
('𑜦', '𑜦'),
('𑠬', '𑠮'),
('𑠸', '𑠸'),
- ('\u{11930}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
- ('\u{1193d}', '\u{1193d}'),
- ('\u{11940}', '\u{11940}'),
- ('\u{11942}', '\u{11942}'),
+ ('\u{11930}', '𑤵'),
+ ('𑤷', '𑤸'),
+ ('𑤽', '𑤽'),
+ ('𑥀', '𑥀'),
+ ('𑥂', '𑥂'),
('𑧑', '𑧓'),
('𑧜', '𑧟'),
('𑧤', '𑧤'),
@@ -4735,7 +4870,7 @@ pub const SPACING_MARK: &'static [(char, char)] = &[
('𑶖', '𑶖'),
('𑻵', '𑻶'),
('𖽑', '𖾇'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('\u{1d165}', '𝅦'),
('𝅭', '\u{1d172}'),
];
@@ -4774,6 +4909,7 @@ pub const SYMBOL: &'static [(char, char)] = &[
('۽', '۾'),
('߶', '߶'),
('߾', '߿'),
+ ('࢈', '࢈'),
('৲', '৳'),
('৺', '৻'),
('૱', '૱'),
@@ -4812,7 +4948,7 @@ pub const SYMBOL: &'static [(char, char)] = &[
('⁒', '⁒'),
('⁺', '⁼'),
('₊', '₌'),
- ('₠', '₿'),
+ ('₠', '⃀'),
('℀', '℁'),
('℃', '℆'),
('℈', '℉'),
@@ -4841,9 +4977,9 @@ pub const SYMBOL: &'static [(char, char)] = &[
('⧜', '⧻'),
('⧾', '⭳'),
('⭶', '⮕'),
- ('\u{2b97}', '⯿'),
+ ('⮗', '⯿'),
('⳥', '⳪'),
- ('\u{2e50}', '\u{2e51}'),
+ ('⹐', '⹑'),
('⺀', '⺙'),
('⺛', '⻳'),
('⼀', '⿕'),
@@ -4872,10 +5008,12 @@ pub const SYMBOL: &'static [(char, char)] = &[
('꠶', '꠹'),
('꩷', '꩹'),
('꭛', '꭛'),
- ('\u{ab6a}', '\u{ab6b}'),
+ ('꭪', '꭫'),
('﬩', '﬩'),
- ('﮲', '﯁'),
- ('﷼', '﷽'),
+ ('﮲', '﯂'),
+ ('﵀', '﵏'),
+ ('﷏', '﷏'),
+ ('﷼', '﷿'),
('﹢', '﹢'),
('﹤', '﹦'),
('﹩', '﹩'),
@@ -4892,7 +5030,7 @@ pub const SYMBOL: &'static [(char, char)] = &[
('𐄷', '𐄿'),
('𐅹', '𐆉'),
('𐆌', '𐆎'),
- ('𐆐', '\u{1019c}'),
+ ('𐆐', '𐆜'),
('𐆠', '𐆠'),
('𐇐', '𐇼'),
('𐡷', '𐡸'),
@@ -4902,13 +5040,14 @@ pub const SYMBOL: &'static [(char, char)] = &[
('𖬼', '𖬿'),
('𖭅', '𖭅'),
('𛲜', '𛲜'),
+ ('𜽐', '𜿃'),
('𝀀', '𝃵'),
('𝄀', '𝄦'),
('𝄩', '𝅘𝅥𝅲'),
('𝅪', '𝅬'),
('𝆃', '𝆄'),
('𝆌', '𝆩'),
- ('𝆮', '𝇨'),
+ ('𝆮', '𝇪'),
('𝈀', '𝉁'),
('𝉅', '𝉅'),
('𝌀', '𝍖'),
@@ -4939,37 +5078,38 @@ pub const SYMBOL: &'static [(char, char)] = &[
('🂱', '🂿'),
('🃁', '🃏'),
('🃑', '🃵'),
- ('\u{1f10d}', '\u{1f1ad}'),
+ ('🄍', '🆭'),
('🇦', '🈂'),
('🈐', '🈻'),
('🉀', '🉈'),
('🉐', '🉑'),
('🉠', '🉥'),
- ('🌀', '\u{1f6d7}'),
- ('🛠', '🛬'),
- ('🛰', '\u{1f6fc}'),
+ ('🌀', '🛗'),
+ ('🛝', '🛬'),
+ ('🛰', '🛼'),
('🜀', '🝳'),
('🞀', '🟘'),
('🟠', '🟫'),
+ ('🟰', '🟰'),
('🠀', '🠋'),
('🠐', '🡇'),
('🡐', '🡙'),
('🡠', '🢇'),
('🢐', '🢭'),
- ('\u{1f8b0}', '\u{1f8b1}'),
- ('🤀', '\u{1f978}'),
- ('🥺', '\u{1f9cb}'),
- ('🧍', '🩓'),
+ ('🢰', '🢱'),
+ ('🤀', '🩓'),
('🩠', '🩭'),
- ('🩰', '\u{1fa74}'),
- ('🩸', '🩺'),
- ('🪀', '\u{1fa86}'),
- ('🪐', '\u{1faa8}'),
- ('\u{1fab0}', '\u{1fab6}'),
- ('\u{1fac0}', '\u{1fac2}'),
- ('\u{1fad0}', '\u{1fad6}'),
- ('\u{1fb00}', '\u{1fb92}'),
- ('\u{1fb94}', '\u{1fbca}'),
+ ('🩰', '🩴'),
+ ('🩸', '🩼'),
+ ('🪀', '🪆'),
+ ('🪐', '🪬'),
+ ('🪰', '🪺'),
+ ('🫀', '🫅'),
+ ('🫐', '🫙'),
+ ('🫠', '🫧'),
+ ('🫰', '🫶'),
+ ('🬀', '🮒'),
+ ('🮔', '🯊'),
];
pub const TITLECASE_LETTER: &'static [(char, char)] = &[
@@ -4998,7 +5138,6 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{5c8}', '\u{5cf}'),
('\u{5eb}', '\u{5ee}'),
('\u{5f5}', '\u{5ff}'),
- ('\u{61d}', '\u{61d}'),
('\u{70e}', '\u{70e}'),
('\u{74b}', '\u{74c}'),
('\u{7b2}', '\u{7bf}'),
@@ -5007,9 +5146,9 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{83f}', '\u{83f}'),
('\u{85c}', '\u{85d}'),
('\u{85f}', '\u{85f}'),
- ('\u{86b}', '\u{89f}'),
- ('\u{8b5}', '\u{8b5}'),
- ('\u{8c8}', '\u{8d2}'),
+ ('\u{86b}', '\u{86f}'),
+ ('\u{88f}', '\u{88f}'),
+ ('\u{892}', '\u{897}'),
('\u{984}', '\u{984}'),
('\u{98d}', '\u{98e}'),
('\u{991}', '\u{992}'),
@@ -5087,12 +5226,13 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{c0d}', '\u{c0d}'),
('\u{c11}', '\u{c11}'),
('\u{c29}', '\u{c29}'),
- ('\u{c3a}', '\u{c3c}'),
+ ('\u{c3a}', '\u{c3b}'),
('\u{c45}', '\u{c45}'),
('\u{c49}', '\u{c49}'),
('\u{c4e}', '\u{c54}'),
('\u{c57}', '\u{c57}'),
- ('\u{c5b}', '\u{c5f}'),
+ ('\u{c5b}', '\u{c5c}'),
+ ('\u{c5e}', '\u{c5f}'),
('\u{c64}', '\u{c65}'),
('\u{c70}', '\u{c76}'),
('\u{c8d}', '\u{c8d}'),
@@ -5103,7 +5243,7 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{cc5}', '\u{cc5}'),
('\u{cc9}', '\u{cc9}'),
('\u{cce}', '\u{cd4}'),
- ('\u{cd7}', '\u{cdd}'),
+ ('\u{cd7}', '\u{cdc}'),
('\u{cdf}', '\u{cdf}'),
('\u{ce4}', '\u{ce5}'),
('\u{cf0}', '\u{cf0}'),
@@ -5171,8 +5311,7 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{13fe}', '\u{13ff}'),
('\u{169d}', '\u{169f}'),
('\u{16f9}', '\u{16ff}'),
- ('\u{170d}', '\u{170d}'),
- ('\u{1715}', '\u{171f}'),
+ ('\u{1716}', '\u{171e}'),
('\u{1737}', '\u{173f}'),
('\u{1754}', '\u{175f}'),
('\u{176d}', '\u{176d}'),
@@ -5181,7 +5320,6 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{17de}', '\u{17df}'),
('\u{17ea}', '\u{17ef}'),
('\u{17fa}', '\u{17ff}'),
- ('\u{180f}', '\u{180f}'),
('\u{181a}', '\u{181f}'),
('\u{1879}', '\u{187f}'),
('\u{18ab}', '\u{18af}'),
@@ -5201,9 +5339,9 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{1a8a}', '\u{1a8f}'),
('\u{1a9a}', '\u{1a9f}'),
('\u{1aae}', '\u{1aaf}'),
- ('\u{1ac1}', '\u{1aff}'),
- ('\u{1b4c}', '\u{1b4f}'),
- ('\u{1b7d}', '\u{1b7f}'),
+ ('\u{1acf}', '\u{1aff}'),
+ ('\u{1b4d}', '\u{1b4f}'),
+ ('\u{1b7f}', '\u{1b7f}'),
('\u{1bf4}', '\u{1bfb}'),
('\u{1c38}', '\u{1c3a}'),
('\u{1c4a}', '\u{1c4c}'),
@@ -5211,7 +5349,6 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{1cbb}', '\u{1cbc}'),
('\u{1cc8}', '\u{1ccf}'),
('\u{1cfb}', '\u{1cff}'),
- ('\u{1dfa}', '\u{1dfa}'),
('\u{1f16}', '\u{1f17}'),
('\u{1f1e}', '\u{1f1f}'),
('\u{1f46}', '\u{1f47}'),
@@ -5232,15 +5369,13 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{2072}', '\u{2073}'),
('\u{208f}', '\u{208f}'),
('\u{209d}', '\u{209f}'),
- ('\u{20c0}', '\u{20cf}'),
+ ('\u{20c1}', '\u{20cf}'),
('\u{20f1}', '\u{20ff}'),
('\u{218c}', '\u{218f}'),
('\u{2427}', '\u{243f}'),
('\u{244b}', '\u{245f}'),
('\u{2b74}', '\u{2b75}'),
('\u{2b96}', '\u{2b96}'),
- ('\u{2c2f}', '\u{2c2f}'),
- ('\u{2c5f}', '\u{2c5f}'),
('\u{2cf4}', '\u{2cf8}'),
('\u{2d26}', '\u{2d26}'),
('\u{2d28}', '\u{2d2c}'),
@@ -5256,7 +5391,7 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{2dcf}', '\u{2dcf}'),
('\u{2dd7}', '\u{2dd7}'),
('\u{2ddf}', '\u{2ddf}'),
- ('\u{2e53}', '\u{2e7f}'),
+ ('\u{2e5e}', '\u{2e7f}'),
('\u{2e9a}', '\u{2e9a}'),
('\u{2ef4}', '\u{2eff}'),
('\u{2fd6}', '\u{2fef}'),
@@ -5268,13 +5403,14 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{318f}', '\u{318f}'),
('\u{31e4}', '\u{31ef}'),
('\u{321f}', '\u{321f}'),
- ('\u{9ffd}', '\u{9fff}'),
('\u{a48d}', '\u{a48f}'),
('\u{a4c7}', '\u{a4cf}'),
('\u{a62c}', '\u{a63f}'),
('\u{a6f8}', '\u{a6ff}'),
- ('\u{a7c0}', '\u{a7c1}'),
- ('\u{a7cb}', '\u{a7f4}'),
+ ('\u{a7cb}', '\u{a7cf}'),
+ ('\u{a7d2}', '\u{a7d2}'),
+ ('\u{a7d4}', '\u{a7d4}'),
+ ('\u{a7da}', '\u{a7f1}'),
('\u{a82d}', '\u{a82f}'),
('\u{a83a}', '\u{a83f}'),
('\u{a878}', '\u{a87f}'),
@@ -5310,11 +5446,10 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{fb3f}', '\u{fb3f}'),
('\u{fb42}', '\u{fb42}'),
('\u{fb45}', '\u{fb45}'),
- ('\u{fbc2}', '\u{fbd2}'),
- ('\u{fd40}', '\u{fd4f}'),
+ ('\u{fbc3}', '\u{fbd2}'),
('\u{fd90}', '\u{fd91}'),
- ('\u{fdc8}', '\u{fdef}'),
- ('\u{fdfe}', '\u{fdff}'),
+ ('\u{fdc8}', '\u{fdce}'),
+ ('\u{fdd0}', '\u{fdef}'),
('\u{fe1a}', '\u{fe1f}'),
('\u{fe53}', '\u{fe53}'),
('\u{fe67}', '\u{fe67}'),
@@ -5358,10 +5493,20 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{104fc}', '\u{104ff}'),
('\u{10528}', '\u{1052f}'),
('\u{10564}', '\u{1056e}'),
- ('\u{10570}', '\u{105ff}'),
+ ('\u{1057b}', '\u{1057b}'),
+ ('\u{1058b}', '\u{1058b}'),
+ ('\u{10593}', '\u{10593}'),
+ ('\u{10596}', '\u{10596}'),
+ ('\u{105a2}', '\u{105a2}'),
+ ('\u{105b2}', '\u{105b2}'),
+ ('\u{105ba}', '\u{105ba}'),
+ ('\u{105bd}', '\u{105ff}'),
('\u{10737}', '\u{1073f}'),
('\u{10756}', '\u{1075f}'),
- ('\u{10768}', '\u{107ff}'),
+ ('\u{10768}', '\u{1077f}'),
+ ('\u{10786}', '\u{10786}'),
+ ('\u{107b1}', '\u{107b1}'),
+ ('\u{107bb}', '\u{107ff}'),
('\u{10806}', '\u{10807}'),
('\u{10809}', '\u{10809}'),
('\u{10836}', '\u{10836}'),
@@ -5404,12 +5549,13 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{10eae}', '\u{10eaf}'),
('\u{10eb2}', '\u{10eff}'),
('\u{10f28}', '\u{10f2f}'),
- ('\u{10f5a}', '\u{10faf}'),
+ ('\u{10f5a}', '\u{10f6f}'),
+ ('\u{10f8a}', '\u{10faf}'),
('\u{10fcc}', '\u{10fdf}'),
('\u{10ff7}', '\u{10fff}'),
('\u{1104e}', '\u{11051}'),
- ('\u{11070}', '\u{1107e}'),
- ('\u{110c2}', '\u{110cc}'),
+ ('\u{11076}', '\u{1107e}'),
+ ('\u{110c3}', '\u{110cc}'),
('\u{110ce}', '\u{110cf}'),
('\u{110e9}', '\u{110ef}'),
('\u{110fa}', '\u{110ff}'),
@@ -5451,11 +5597,11 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{11645}', '\u{1164f}'),
('\u{1165a}', '\u{1165f}'),
('\u{1166d}', '\u{1167f}'),
- ('\u{116b9}', '\u{116bf}'),
+ ('\u{116ba}', '\u{116bf}'),
('\u{116ca}', '\u{116ff}'),
('\u{1171b}', '\u{1171c}'),
('\u{1172c}', '\u{1172f}'),
- ('\u{11740}', '\u{117ff}'),
+ ('\u{11747}', '\u{117ff}'),
('\u{1183c}', '\u{1189f}'),
('\u{118f3}', '\u{118fe}'),
('\u{11907}', '\u{11908}'),
@@ -5470,7 +5616,7 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{119d8}', '\u{119d9}'),
('\u{119e5}', '\u{119ff}'),
('\u{11a48}', '\u{11a4f}'),
- ('\u{11aa3}', '\u{11abf}'),
+ ('\u{11aa3}', '\u{11aaf}'),
('\u{11af9}', '\u{11bff}'),
('\u{11c09}', '\u{11c09}'),
('\u{11c37}', '\u{11c37}'),
@@ -5498,14 +5644,16 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{1239a}', '\u{123ff}'),
('\u{1246f}', '\u{1246f}'),
('\u{12475}', '\u{1247f}'),
- ('\u{12544}', '\u{12fff}'),
+ ('\u{12544}', '\u{12f8f}'),
+ ('\u{12ff3}', '\u{12fff}'),
('\u{1342f}', '\u{1342f}'),
('\u{13439}', '\u{143ff}'),
('\u{14647}', '\u{167ff}'),
('\u{16a39}', '\u{16a3f}'),
('\u{16a5f}', '\u{16a5f}'),
('\u{16a6a}', '\u{16a6d}'),
- ('\u{16a70}', '\u{16acf}'),
+ ('\u{16abf}', '\u{16abf}'),
+ ('\u{16aca}', '\u{16acf}'),
('\u{16aee}', '\u{16aef}'),
('\u{16af6}', '\u{16aff}'),
('\u{16b46}', '\u{16b4f}'),
@@ -5521,8 +5669,11 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{16ff2}', '\u{16fff}'),
('\u{187f8}', '\u{187ff}'),
('\u{18cd6}', '\u{18cff}'),
- ('\u{18d09}', '\u{1afff}'),
- ('\u{1b11f}', '\u{1b14f}'),
+ ('\u{18d09}', '\u{1afef}'),
+ ('\u{1aff4}', '\u{1aff4}'),
+ ('\u{1affc}', '\u{1affc}'),
+ ('\u{1afff}', '\u{1afff}'),
+ ('\u{1b123}', '\u{1b14f}'),
('\u{1b153}', '\u{1b163}'),
('\u{1b168}', '\u{1b16f}'),
('\u{1b2fc}', '\u{1bbff}'),
@@ -5530,10 +5681,13 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{1bc7d}', '\u{1bc7f}'),
('\u{1bc89}', '\u{1bc8f}'),
('\u{1bc9a}', '\u{1bc9b}'),
- ('\u{1bca4}', '\u{1cfff}'),
+ ('\u{1bca4}', '\u{1ceff}'),
+ ('\u{1cf2e}', '\u{1cf2f}'),
+ ('\u{1cf47}', '\u{1cf4f}'),
+ ('\u{1cfc4}', '\u{1cfff}'),
('\u{1d0f6}', '\u{1d0ff}'),
('\u{1d127}', '\u{1d128}'),
- ('\u{1d1e9}', '\u{1d1ff}'),
+ ('\u{1d1eb}', '\u{1d1ff}'),
('\u{1d246}', '\u{1d2df}'),
('\u{1d2f4}', '\u{1d2ff}'),
('\u{1d357}', '\u{1d35f}'),
@@ -5560,7 +5714,8 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{1d7cc}', '\u{1d7cd}'),
('\u{1da8c}', '\u{1da9a}'),
('\u{1daa0}', '\u{1daa0}'),
- ('\u{1dab0}', '\u{1dfff}'),
+ ('\u{1dab0}', '\u{1deff}'),
+ ('\u{1df1f}', '\u{1dfff}'),
('\u{1e007}', '\u{1e007}'),
('\u{1e019}', '\u{1e01a}'),
('\u{1e022}', '\u{1e022}'),
@@ -5569,9 +5724,14 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{1e12d}', '\u{1e12f}'),
('\u{1e13e}', '\u{1e13f}'),
('\u{1e14a}', '\u{1e14d}'),
- ('\u{1e150}', '\u{1e2bf}'),
+ ('\u{1e150}', '\u{1e28f}'),
+ ('\u{1e2af}', '\u{1e2bf}'),
('\u{1e2fa}', '\u{1e2fe}'),
- ('\u{1e300}', '\u{1e7ff}'),
+ ('\u{1e300}', '\u{1e7df}'),
+ ('\u{1e7e7}', '\u{1e7e7}'),
+ ('\u{1e7ec}', '\u{1e7ec}'),
+ ('\u{1e7ef}', '\u{1e7ef}'),
+ ('\u{1e7ff}', '\u{1e7ff}'),
('\u{1e8c5}', '\u{1e8c6}'),
('\u{1e8d7}', '\u{1e8ff}'),
('\u{1e94c}', '\u{1e94f}'),
@@ -5625,34 +5785,35 @@ pub const UNASSIGNED: &'static [(char, char)] = &[
('\u{1f249}', '\u{1f24f}'),
('\u{1f252}', '\u{1f25f}'),
('\u{1f266}', '\u{1f2ff}'),
- ('\u{1f6d8}', '\u{1f6df}'),
+ ('\u{1f6d8}', '\u{1f6dc}'),
('\u{1f6ed}', '\u{1f6ef}'),
('\u{1f6fd}', '\u{1f6ff}'),
('\u{1f774}', '\u{1f77f}'),
('\u{1f7d9}', '\u{1f7df}'),
- ('\u{1f7ec}', '\u{1f7ff}'),
+ ('\u{1f7ec}', '\u{1f7ef}'),
+ ('\u{1f7f1}', '\u{1f7ff}'),
('\u{1f80c}', '\u{1f80f}'),
('\u{1f848}', '\u{1f84f}'),
('\u{1f85a}', '\u{1f85f}'),
('\u{1f888}', '\u{1f88f}'),
('\u{1f8ae}', '\u{1f8af}'),
('\u{1f8b2}', '\u{1f8ff}'),
- ('\u{1f979}', '\u{1f979}'),
- ('\u{1f9cc}', '\u{1f9cc}'),
('\u{1fa54}', '\u{1fa5f}'),
('\u{1fa6e}', '\u{1fa6f}'),
('\u{1fa75}', '\u{1fa77}'),
- ('\u{1fa7b}', '\u{1fa7f}'),
+ ('\u{1fa7d}', '\u{1fa7f}'),
('\u{1fa87}', '\u{1fa8f}'),
- ('\u{1faa9}', '\u{1faaf}'),
- ('\u{1fab7}', '\u{1fabf}'),
- ('\u{1fac3}', '\u{1facf}'),
- ('\u{1fad7}', '\u{1faff}'),
+ ('\u{1faad}', '\u{1faaf}'),
+ ('\u{1fabb}', '\u{1fabf}'),
+ ('\u{1fac6}', '\u{1facf}'),
+ ('\u{1fada}', '\u{1fadf}'),
+ ('\u{1fae8}', '\u{1faef}'),
+ ('\u{1faf7}', '\u{1faff}'),
('\u{1fb93}', '\u{1fb93}'),
('\u{1fbcb}', '\u{1fbef}'),
('\u{1fbfa}', '\u{1ffff}'),
- ('\u{2a6de}', '\u{2a6ff}'),
- ('\u{2b735}', '\u{2b73f}'),
+ ('\u{2a6e0}', '\u{2a6ff}'),
+ ('\u{2b739}', '\u{2b73f}'),
('\u{2b81e}', '\u{2b81f}'),
('\u{2cea2}', '\u{2ceaf}'),
('\u{2ebe1}', '\u{2f7ff}'),
@@ -6097,7 +6258,7 @@ pub const UPPERCASE_LETTER: &'static [(char, char)] = &[
('ℾ', 'ℿ'),
('ⅅ', 'ⅅ'),
('Ↄ', 'Ↄ'),
- ('Ⰰ', 'Ⱞ'),
+ ('Ⰰ', 'Ⱟ'),
('Ⱡ', 'Ⱡ'),
('Ɫ', 'Ɽ'),
('Ⱨ', 'Ⱨ'),
@@ -6262,13 +6423,21 @@ pub const UPPERCASE_LETTER: &'static [(char, char)] = &[
('Ꞻ', 'Ꞻ'),
('Ꞽ', 'Ꞽ'),
('Ꞿ', 'Ꞿ'),
+ ('Ꟁ', 'Ꟁ'),
('Ꟃ', 'Ꟃ'),
- ('Ꞔ', '\u{a7c7}'),
- ('\u{a7c9}', '\u{a7c9}'),
- ('\u{a7f5}', '\u{a7f5}'),
+ ('Ꞔ', 'Ꟈ'),
+ ('Ꟊ', 'Ꟊ'),
+ ('Ꟑ', 'Ꟑ'),
+ ('Ꟗ', 'Ꟗ'),
+ ('Ꟙ', 'Ꟙ'),
+ ('Ꟶ', 'Ꟶ'),
('A', 'Z'),
('𐐀', '𐐧'),
('𐒰', '𐓓'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
('𐲀', '𐲲'),
('𑢠', '𑢿'),
('𖹀', '𖹟'),
diff --git a/vendor/regex-syntax/src/unicode_tables/grapheme_cluster_break.rs b/vendor/regex-syntax/src/unicode_tables/grapheme_cluster_break.rs
index 7df9d2b93..38cfc73af 100644
--- a/vendor/regex-syntax/src/unicode_tables/grapheme_cluster_break.rs
+++ b/vendor/regex-syntax/src/unicode_tables/grapheme_cluster_break.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate grapheme-cluster-break ucd-13.0.0 --chars
+// ucd-generate grapheme-cluster-break /tmp/ucd --chars
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("CR", CR),
@@ -25,7 +25,7 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
pub const CR: &'static [(char, char)] = &[('\r', '\r')];
pub const CONTROL: &'static [(char, char)] = &[
- ('\u{0}', '\t'),
+ ('\0', '\t'),
('\u{b}', '\u{c}'),
('\u{e}', '\u{1f}'),
('\u{7f}', '\u{9f}'),
@@ -71,7 +71,8 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{825}', '\u{827}'),
('\u{829}', '\u{82d}'),
('\u{859}', '\u{85b}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('\u{898}', '\u{89f}'),
+ ('\u{8ca}', '\u{8e1}'),
('\u{8e3}', '\u{902}'),
('\u{93a}', '\u{93a}'),
('\u{93c}', '\u{93c}'),
@@ -116,6 +117,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{bd7}', '\u{bd7}'),
('\u{c00}', '\u{c00}'),
('\u{c04}', '\u{c04}'),
+ ('\u{c3c}', '\u{c3c}'),
('\u{c3e}', '\u{c40}'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
@@ -171,7 +173,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{109d}', '\u{109d}'),
('\u{135d}', '\u{135f}'),
('\u{1712}', '\u{1714}'),
- ('\u{1732}', '\u{1734}'),
+ ('\u{1732}', '\u{1733}'),
('\u{1752}', '\u{1753}'),
('\u{1772}', '\u{1773}'),
('\u{17b4}', '\u{17b5}'),
@@ -180,6 +182,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{17c9}', '\u{17d3}'),
('\u{17dd}', '\u{17dd}'),
('\u{180b}', '\u{180d}'),
+ ('\u{180f}', '\u{180f}'),
('\u{1885}', '\u{1886}'),
('\u{18a9}', '\u{18a9}'),
('\u{1920}', '\u{1922}'),
@@ -195,7 +198,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{1a65}', '\u{1a6c}'),
('\u{1a73}', '\u{1a7c}'),
('\u{1a7f}', '\u{1a7f}'),
- ('\u{1ab0}', '\u{1ac0}'),
+ ('\u{1ab0}', '\u{1ace}'),
('\u{1b00}', '\u{1b03}'),
('\u{1b34}', '\u{1b3a}'),
('\u{1b3c}', '\u{1b3c}'),
@@ -217,8 +220,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{1ced}', '\u{1ced}'),
('\u{1cf4}', '\u{1cf4}'),
('\u{1cf8}', '\u{1cf9}'),
- ('\u{1dc0}', '\u{1df9}'),
- ('\u{1dfb}', '\u{1dff}'),
+ ('\u{1dc0}', '\u{1dff}'),
('\u{200c}', '\u{200c}'),
('\u{20d0}', '\u{20f0}'),
('\u{2cef}', '\u{2cf1}'),
@@ -277,11 +279,15 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{10d24}', '\u{10d27}'),
('\u{10eab}', '\u{10eac}'),
('\u{10f46}', '\u{10f50}'),
+ ('\u{10f82}', '\u{10f85}'),
('\u{11001}', '\u{11001}'),
('\u{11038}', '\u{11046}'),
+ ('\u{11070}', '\u{11070}'),
+ ('\u{11073}', '\u{11074}'),
('\u{1107f}', '\u{11081}'),
('\u{110b3}', '\u{110b6}'),
('\u{110b9}', '\u{110ba}'),
+ ('\u{110c2}', '\u{110c2}'),
('\u{11100}', '\u{11102}'),
('\u{11127}', '\u{1112b}'),
('\u{1112d}', '\u{11134}'),
@@ -367,6 +373,8 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{16f8f}', '\u{16f92}'),
('\u{16fe4}', '\u{16fe4}'),
('\u{1bc9d}', '\u{1bc9e}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d165}', '\u{1d165}'),
('\u{1d167}', '\u{1d169}'),
('\u{1d16e}', '\u{1d172}'),
@@ -386,6 +394,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{1e023}', '\u{1e024}'),
('\u{1e026}', '\u{1e02a}'),
('\u{1e130}', '\u{1e136}'),
+ ('\u{1e2ae}', '\u{1e2ae}'),
('\u{1e2ec}', '\u{1e2ef}'),
('\u{1e8d0}', '\u{1e8d6}'),
('\u{1e944}', '\u{1e94a}'),
@@ -1206,13 +1215,14 @@ pub const PREPEND: &'static [(char, char)] = &[
('\u{600}', '\u{605}'),
('\u{6dd}', '\u{6dd}'),
('\u{70f}', '\u{70f}'),
+ ('\u{890}', '\u{891}'),
('\u{8e2}', '\u{8e2}'),
('ൎ', 'ൎ'),
('\u{110bd}', '\u{110bd}'),
('\u{110cd}', '\u{110cd}'),
('𑇂', '𑇃'),
- ('\u{1193f}', '\u{1193f}'),
- ('\u{11941}', '\u{11941}'),
+ ('𑤿', '𑤿'),
+ ('𑥁', '𑥁'),
('𑨺', '𑨺'),
('𑪄', '𑪉'),
('𑵆', '𑵆'),
@@ -1268,6 +1278,8 @@ pub const SPACINGMARK: &'static [(char, char)] = &[
('ျ', 'ြ'),
('ၖ', 'ၗ'),
('ႄ', 'ႄ'),
+ ('᜕', '᜕'),
+ ('᜴', '᜴'),
('ា', 'ា'),
('ើ', 'ៅ'),
('ះ', 'ៈ'),
@@ -1324,7 +1336,7 @@ pub const SPACINGMARK: &'static [(char, char)] = &[
('𑆂', '𑆂'),
('𑆳', '𑆵'),
('𑆿', '𑇀'),
- ('\u{111ce}', '\u{111ce}'),
+ ('𑇎', '𑇎'),
('𑈬', '𑈮'),
('𑈲', '𑈳'),
('𑈵', '𑈵'),
@@ -1352,15 +1364,14 @@ pub const SPACINGMARK: &'static [(char, char)] = &[
('𑚬', '𑚬'),
('𑚮', '𑚯'),
('𑚶', '𑚶'),
- ('𑜠', '𑜡'),
('𑜦', '𑜦'),
('𑠬', '𑠮'),
('𑠸', '𑠸'),
- ('\u{11931}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
- ('\u{1193d}', '\u{1193d}'),
- ('\u{11940}', '\u{11940}'),
- ('\u{11942}', '\u{11942}'),
+ ('𑤱', '𑤵'),
+ ('𑤷', '𑤸'),
+ ('𑤽', '𑤽'),
+ ('𑥀', '𑥀'),
+ ('𑥂', '𑥂'),
('𑧑', '𑧓'),
('𑧜', '𑧟'),
('𑧤', '𑧤'),
@@ -1377,7 +1388,7 @@ pub const SPACINGMARK: &'static [(char, char)] = &[
('𑶖', '𑶖'),
('𑻵', '𑻶'),
('𖽑', '𖾇'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('𝅦', '𝅦'),
('𝅭', '𝅭'),
];
diff --git a/vendor/regex-syntax/src/unicode_tables/perl_decimal.rs b/vendor/regex-syntax/src/unicode_tables/perl_decimal.rs
index 2a09259fc..9a14e4395 100644
--- a/vendor/regex-syntax/src/unicode_tables/perl_decimal.rs
+++ b/vendor/regex-syntax/src/unicode_tables/perl_decimal.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate general-category ucd-13.0.0 --chars --include decimalnumber
+// ucd-generate general-category /tmp/ucd --chars --include decimalnumber
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] =
&[("Decimal_Number", DECIMAL_NUMBER)];
@@ -60,15 +60,16 @@ pub const DECIMAL_NUMBER: &'static [(char, char)] = &[
('𑛀', '𑛉'),
('𑜰', '𑜹'),
('𑣠', '𑣩'),
- ('\u{11950}', '\u{11959}'),
+ ('𑥐', '𑥙'),
('𑱐', '𑱙'),
('𑵐', '𑵙'),
('𑶠', '𑶩'),
('𖩠', '𖩩'),
+ ('𖫀', '𖫉'),
('𖭐', '𖭙'),
('𝟎', '𝟿'),
('𞅀', '𞅉'),
('𞋰', '𞋹'),
('𞥐', '𞥙'),
- ('\u{1fbf0}', '\u{1fbf9}'),
+ ('🯰', '🯹'),
];
diff --git a/vendor/regex-syntax/src/unicode_tables/perl_space.rs b/vendor/regex-syntax/src/unicode_tables/perl_space.rs
index c112dd126..bb69ce1ba 100644
--- a/vendor/regex-syntax/src/unicode_tables/perl_space.rs
+++ b/vendor/regex-syntax/src/unicode_tables/perl_space.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate property-bool ucd-13.0.0 --chars --include whitespace
+// ucd-generate property-bool /tmp/ucd --chars --include whitespace
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] =
&[("White_Space", WHITE_SPACE)];
diff --git a/vendor/regex-syntax/src/unicode_tables/perl_word.rs b/vendor/regex-syntax/src/unicode_tables/perl_word.rs
index df9eac7d7..2c8171b2b 100644
--- a/vendor/regex-syntax/src/unicode_tables/perl_word.rs
+++ b/vendor/regex-syntax/src/unicode_tables/perl_word.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate perl-word ucd-13.0.0 --chars
+// ucd-generate perl-word /tmp/ucd --chars
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const PERL_WORD: &'static [(char, char)] = &[
('0', '9'),
@@ -57,9 +57,9 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('ࠀ', '\u{82d}'),
('ࡀ', '\u{85b}'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('ࡰ', 'ࢇ'),
+ ('ࢉ', 'ࢎ'),
+ ('\u{898}', '\u{8e1}'),
('\u{8e3}', '\u{963}'),
('०', '९'),
('ॱ', 'ঃ'),
@@ -143,11 +143,12 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('ఎ', 'ఐ'),
('ఒ', 'న'),
('ప', 'హ'),
- ('ఽ', 'ౄ'),
+ ('\u{c3c}', 'ౄ'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
('\u{c55}', '\u{c56}'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', '\u{c63}'),
('౦', '౯'),
('ಀ', 'ಃ'),
@@ -160,7 +161,7 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('\u{cc6}', 'ೈ'),
('ೊ', '\u{ccd}'),
('\u{cd5}', '\u{cd6}'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', '\u{ce3}'),
('೦', '೯'),
('ೱ', 'ೲ'),
@@ -242,9 +243,8 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('ᚁ', 'ᚚ'),
('ᚠ', 'ᛪ'),
('ᛮ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', '\u{1714}'),
- ('ᜠ', '\u{1734}'),
+ ('ᜀ', '᜕'),
+ ('ᜟ', '᜴'),
('ᝀ', '\u{1753}'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -254,7 +254,7 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('ៜ', '\u{17dd}'),
('០', '៩'),
('\u{180b}', '\u{180d}'),
- ('᠐', '᠙'),
+ ('\u{180f}', '᠙'),
('ᠠ', 'ᡸ'),
('ᢀ', 'ᢪ'),
('ᢰ', 'ᣵ'),
@@ -272,8 +272,8 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('\u{1a7f}', '᪉'),
('᪐', '᪙'),
('ᪧ', 'ᪧ'),
- ('\u{1ab0}', '\u{1ac0}'),
- ('\u{1b00}', 'ᭋ'),
+ ('\u{1ab0}', '\u{1ace}'),
+ ('\u{1b00}', 'ᭌ'),
('᭐', '᭙'),
('\u{1b6b}', '\u{1b73}'),
('\u{1b80}', '᯳'),
@@ -285,8 +285,7 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('Ჽ', 'Ჿ'),
('\u{1cd0}', '\u{1cd2}'),
('\u{1cd4}', 'ᳺ'),
- ('ᴀ', '\u{1df9}'),
- ('\u{1dfb}', 'ἕ'),
+ ('ᴀ', 'ἕ'),
('Ἐ', 'Ἕ'),
('ἠ', 'ὅ'),
('Ὀ', 'Ὅ'),
@@ -327,9 +326,7 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('ⅎ', 'ⅎ'),
('Ⅰ', 'ↈ'),
('Ⓐ', 'ⓩ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⳤ'),
+ ('Ⰰ', 'ⳤ'),
('Ⳬ', 'ⳳ'),
('ⴀ', 'ⴥ'),
('ⴧ', 'ⴧ'),
@@ -358,11 +355,10 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('ー', 'ヿ'),
('ㄅ', 'ㄯ'),
('ㄱ', 'ㆎ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('ㇰ', 'ㇿ'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
- ('ꀀ', 'ꒌ'),
+ ('㐀', '䶿'),
+ ('一', 'ꒌ'),
('ꓐ', 'ꓽ'),
('ꔀ', 'ꘌ'),
('ꘐ', 'ꘫ'),
@@ -371,9 +367,11 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('ꙿ', '\u{a6f1}'),
('ꜗ', 'ꜟ'),
('Ꜣ', 'ꞈ'),
- ('Ꞌ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꠧ'),
+ ('Ꞌ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꠧ'),
('\u{a82c}', '\u{a82c}'),
('ꡀ', 'ꡳ'),
('ꢀ', '\u{a8c5}'),
@@ -400,7 +398,7 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
('ꬰ', 'ꭚ'),
- ('ꭜ', '\u{ab69}'),
+ ('ꭜ', 'ꭩ'),
('ꭰ', 'ꯪ'),
('꯬', '\u{abed}'),
('꯰', '꯹'),
@@ -462,9 +460,20 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('𐓘', '𐓻'),
('𐔀', '𐔧'),
('𐔰', '𐕣'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐘀', '𐜶'),
('𐝀', '𐝕'),
('𐝠', '𐝧'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐠀', '𐠅'),
('𐠈', '𐠈'),
('𐠊', '𐠵'),
@@ -499,27 +508,29 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('𐳀', '𐳲'),
('𐴀', '\u{10d27}'),
('𐴰', '𐴹'),
- ('\u{10e80}', '\u{10ea9}'),
+ ('𐺀', '𐺩'),
('\u{10eab}', '\u{10eac}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼜'),
('𐼧', '𐼧'),
('𐼰', '\u{10f50}'),
- ('\u{10fb0}', '\u{10fc4}'),
+ ('𐽰', '\u{10f85}'),
+ ('𐾰', '𐿄'),
('𐿠', '𐿶'),
('𑀀', '\u{11046}'),
- ('𑁦', '𑁯'),
+ ('𑁦', '𑁵'),
('\u{1107f}', '\u{110ba}'),
+ ('\u{110c2}', '\u{110c2}'),
('𑃐', '𑃨'),
('𑃰', '𑃹'),
('\u{11100}', '\u{11134}'),
('𑄶', '𑄿'),
- ('𑅄', '\u{11147}'),
+ ('𑅄', '𑅇'),
('𑅐', '\u{11173}'),
('𑅶', '𑅶'),
('\u{11180}', '𑇄'),
('\u{111c9}', '\u{111cc}'),
- ('\u{111ce}', '𑇚'),
+ ('𑇎', '𑇚'),
('𑇜', '𑇜'),
('𑈀', '𑈑'),
('𑈓', '\u{11237}'),
@@ -548,7 +559,7 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('\u{11370}', '\u{11374}'),
('𑐀', '𑑊'),
('𑑐', '𑑙'),
- ('\u{1145e}', '\u{11461}'),
+ ('\u{1145e}', '𑑡'),
('𑒀', '𑓅'),
('𑓇', '𑓇'),
('𑓐', '𑓙'),
@@ -563,16 +574,17 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('𑜀', '𑜚'),
('\u{1171d}', '\u{1172b}'),
('𑜰', '𑜹'),
+ ('𑝀', '𑝆'),
('𑠀', '\u{1183a}'),
('𑢠', '𑣩'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤵'),
+ ('𑤷', '𑤸'),
('\u{1193b}', '\u{11943}'),
- ('\u{11950}', '\u{11959}'),
+ ('𑥐', '𑥙'),
('𑦠', '𑦧'),
('𑦪', '\u{119d7}'),
('\u{119da}', '𑧡'),
@@ -581,7 +593,7 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('\u{11a47}', '\u{11a47}'),
('𑩐', '\u{11a99}'),
('𑪝', '𑪝'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '\u{11c36}'),
('\u{11c38}', '𑱀'),
@@ -603,15 +615,18 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('𑶓', '𑶘'),
('𑶠', '𑶩'),
('𑻠', '𑻶'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𒀀', '𒎙'),
('𒐀', '𒑮'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿰'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
('𖩠', '𖩩'),
+ ('𖩰', '𖪾'),
+ ('𖫀', '𖫉'),
('𖫐', '𖫭'),
('\u{16af0}', '\u{16af4}'),
('𖬀', '\u{16b36}'),
@@ -625,11 +640,14 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('\u{16f8f}', '𖾟'),
('𖿠', '𖿡'),
('𖿣', '\u{16fe4}'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('𛀀', '𛄞'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('𛀀', '𛄢'),
('𛅐', '𛅒'),
('𛅤', '𛅧'),
('𛅰', '𛋻'),
@@ -638,6 +656,8 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('𛲀', '𛲈'),
('𛲐', '𛲙'),
('\u{1bc9d}', '\u{1bc9e}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d165}', '\u{1d169}'),
('𝅭', '\u{1d172}'),
('\u{1d17b}', '\u{1d182}'),
@@ -681,6 +701,7 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('\u{1da84}', '\u{1da84}'),
('\u{1da9b}', '\u{1da9f}'),
('\u{1daa1}', '\u{1daaf}'),
+ ('𝼀', '𝼞'),
('\u{1e000}', '\u{1e006}'),
('\u{1e008}', '\u{1e018}'),
('\u{1e01b}', '\u{1e021}'),
@@ -690,7 +711,12 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('\u{1e130}', '𞄽'),
('𞅀', '𞅉'),
('𞅎', '𞅎'),
+ ('𞊐', '\u{1e2ae}'),
('𞋀', '𞋹'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('\u{1e8d0}', '\u{1e8d6}'),
('𞤀', '𞥋'),
@@ -731,13 +757,13 @@ pub const PERL_WORD: &'static [(char, char)] = &[
('🄰', '🅉'),
('🅐', '🅩'),
('🅰', '🆉'),
- ('\u{1fbf0}', '\u{1fbf9}'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('🯰', '🯹'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
('\u{e0100}', '\u{e01ef}'),
];
diff --git a/vendor/regex-syntax/src/unicode_tables/property_bool.rs b/vendor/regex-syntax/src/unicode_tables/property_bool.rs
index 21cbaf9ae..8fb211030 100644
--- a/vendor/regex-syntax/src/unicode_tables/property_bool.rs
+++ b/vendor/regex-syntax/src/unicode_tables/property_bool.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate property-bool ucd-13.0.0 --chars
+// ucd-generate property-bool /tmp/ucd --chars
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("ASCII_Hex_Digit", ASCII_HEX_DIGIT),
@@ -125,8 +125,9 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('ࠚ', '\u{82c}'),
('ࡀ', 'ࡘ'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
+ ('ࡰ', 'ࢇ'),
+ ('ࢉ', 'ࢎ'),
+ ('ࢠ', 'ࣉ'),
('\u{8d4}', '\u{8df}'),
('\u{8e3}', '\u{8e9}'),
('\u{8f0}', 'ऻ'),
@@ -216,6 +217,7 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('\u{c4a}', '\u{c4c}'),
('\u{c55}', '\u{c56}'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', '\u{c63}'),
('ಀ', 'ಃ'),
('ಅ', 'ಌ'),
@@ -227,7 +229,7 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('\u{cc6}', 'ೈ'),
('ೊ', '\u{ccc}'),
('\u{cd5}', '\u{cd6}'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', '\u{ce3}'),
('ೱ', 'ೲ'),
('\u{d00}', 'ഌ'),
@@ -303,9 +305,8 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('ᚁ', 'ᚚ'),
('ᚠ', 'ᛪ'),
('ᛮ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', '\u{1713}'),
- ('ᜠ', '\u{1733}'),
+ ('ᜀ', '\u{1713}'),
+ ('ᜟ', '\u{1733}'),
('ᝀ', '\u{1753}'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -329,9 +330,10 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('ᩡ', '\u{1a74}'),
('ᪧ', 'ᪧ'),
('\u{1abf}', '\u{1ac0}'),
+ ('\u{1acc}', '\u{1ace}'),
('\u{1b00}', 'ᬳ'),
('\u{1b35}', 'ᭃ'),
- ('ᭅ', 'ᭋ'),
+ ('ᭅ', 'ᭌ'),
('\u{1b80}', '\u{1ba9}'),
('\u{1bac}', 'ᮯ'),
('ᮺ', 'ᯥ'),
@@ -385,9 +387,7 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('ⅎ', 'ⅎ'),
('Ⅰ', 'ↈ'),
('Ⓐ', 'ⓩ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⳤ'),
+ ('Ⰰ', 'ⳤ'),
('Ⳬ', 'ⳮ'),
('Ⳳ', 'ⳳ'),
('ⴀ', 'ⴥ'),
@@ -416,11 +416,10 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('ー', 'ヿ'),
('ㄅ', 'ㄯ'),
('ㄱ', 'ㆎ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('ㇰ', 'ㇿ'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
- ('ꀀ', 'ꒌ'),
+ ('㐀', '䶿'),
+ ('一', 'ꒌ'),
('ꓐ', 'ꓽ'),
('ꔀ', 'ꘌ'),
('ꘐ', 'ꘟ'),
@@ -430,9 +429,11 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('ꙿ', 'ꛯ'),
('ꜗ', 'ꜟ'),
('Ꜣ', 'ꞈ'),
- ('Ꞌ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꠅ'),
+ ('Ꞌ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꠅ'),
('ꠇ', 'ꠧ'),
('ꡀ', 'ꡳ'),
('ꢀ', 'ꣃ'),
@@ -463,7 +464,7 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
('ꬰ', 'ꭚ'),
- ('ꭜ', '\u{ab69}'),
+ ('ꭜ', 'ꭩ'),
('ꭰ', 'ꯪ'),
('가', '힣'),
('ힰ', 'ퟆ'),
@@ -514,9 +515,20 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('𐓘', '𐓻'),
('𐔀', '𐔧'),
('𐔰', '𐕣'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐘀', '𐜶'),
('𐝀', '𐝕'),
('𐝠', '𐝧'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐠀', '𐠅'),
('𐠈', '𐠈'),
('𐠊', '𐠵'),
@@ -548,24 +560,27 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('𐲀', '𐲲'),
('𐳀', '𐳲'),
('𐴀', '\u{10d27}'),
- ('\u{10e80}', '\u{10ea9}'),
+ ('𐺀', '𐺩'),
('\u{10eab}', '\u{10eac}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼜'),
('𐼧', '𐼧'),
('𐼰', '𐽅'),
- ('\u{10fb0}', '\u{10fc4}'),
+ ('𐽰', '𐾁'),
+ ('𐾰', '𐿄'),
('𐿠', '𐿶'),
('𑀀', '\u{11045}'),
+ ('𑁱', '𑁵'),
('𑂂', '𑂸'),
+ ('\u{110c2}', '\u{110c2}'),
('𑃐', '𑃨'),
('\u{11100}', '\u{11132}'),
- ('𑅄', '\u{11147}'),
+ ('𑅄', '𑅇'),
('𑅐', '𑅲'),
('𑅶', '𑅶'),
('\u{11180}', '𑆿'),
('𑇁', '𑇄'),
- ('\u{111ce}', '\u{111cf}'),
+ ('𑇎', '\u{111cf}'),
('𑇚', '𑇚'),
('𑇜', '𑇜'),
('𑈀', '𑈑'),
@@ -594,7 +609,7 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('𑐀', '𑑁'),
('\u{11443}', '𑑅'),
('𑑇', '𑑊'),
- ('𑑟', '\u{11461}'),
+ ('𑑟', '𑑡'),
('𑒀', '𑓁'),
('𑓄', '𑓅'),
('𑓇', '𑓇'),
@@ -608,16 +623,17 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('𑚸', '𑚸'),
('𑜀', '𑜚'),
('\u{1171d}', '\u{1172a}'),
+ ('𑝀', '𑝆'),
('𑠀', '𑠸'),
('𑢠', '𑣟'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤵'),
+ ('𑤷', '𑤸'),
('\u{1193b}', '\u{1193c}'),
- ('\u{1193f}', '\u{11942}'),
+ ('𑤿', '𑥂'),
('𑦠', '𑦧'),
('𑦪', '\u{119d7}'),
('\u{119da}', '𑧟'),
@@ -627,7 +643,7 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('\u{11a35}', '\u{11a3e}'),
('𑩐', '𑪗'),
('𑪝', '𑪝'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '\u{11c36}'),
('\u{11c38}', '𑰾'),
@@ -650,14 +666,16 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('𑶓', '𑶖'),
('𑶘', '𑶘'),
('𑻠', '𑻶'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𒀀', '𒎙'),
('𒐀', '𒑮'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿰'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
+ ('𖩰', '𖪾'),
('𖫐', '𖫭'),
('𖬀', '𖬯'),
('𖭀', '𖭃'),
@@ -669,11 +687,14 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('\u{16f8f}', '𖾟'),
('𖿠', '𖿡'),
('𖿣', '𖿣'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('𛀀', '𛄞'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('𛀀', '𛄢'),
('𛅐', '𛅒'),
('𛅤', '𛅧'),
('𛅰', '𛋻'),
@@ -712,6 +733,7 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('𝞊', '𝞨'),
('𝞪', '𝟂'),
('𝟄', '𝟋'),
+ ('𝼀', '𝼞'),
('\u{1e000}', '\u{1e006}'),
('\u{1e008}', '\u{1e018}'),
('\u{1e01b}', '\u{1e021}'),
@@ -720,7 +742,12 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('𞄀', '𞄬'),
('𞄷', '𞄽'),
('𞅎', '𞅎'),
+ ('𞊐', '𞊭'),
('𞋀', '𞋫'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('𞤀', '𞥃'),
('\u{1e947}', '\u{1e947}'),
@@ -761,13 +788,13 @@ pub const ALPHABETIC: &'static [(char, char)] = &[
('🄰', '🅉'),
('🅐', '🅩'),
('🅰', '🆉'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
pub const BIDI_CONTROL: &'static [(char, char)] = &[
@@ -873,6 +900,7 @@ pub const BIDI_MIRRORED: &'static [(char, char)] = &[
('⸌', '⸍'),
('⸜', '⸝'),
('⸠', '⸩'),
+ ('⹕', '⹜'),
('〈', '】'),
('〔', '〛'),
('﹙', '﹞'),
@@ -936,7 +964,10 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('\u{7fd}', '\u{7fd}'),
('\u{816}', '\u{82d}'),
('\u{859}', '\u{85b}'),
- ('\u{8d3}', '\u{902}'),
+ ('࢈', '࢈'),
+ ('\u{890}', '\u{891}'),
+ ('\u{898}', '\u{89f}'),
+ ('ࣉ', '\u{902}'),
('\u{93a}', '\u{93a}'),
('\u{93c}', '\u{93c}'),
('\u{941}', '\u{948}'),
@@ -977,6 +1008,7 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('\u{bcd}', '\u{bcd}'),
('\u{c00}', '\u{c00}'),
('\u{c04}', '\u{c04}'),
+ ('\u{c3c}', '\u{c3c}'),
('\u{c3e}', '\u{c40}'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
@@ -1028,7 +1060,7 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('ჼ', 'ჼ'),
('\u{135d}', '\u{135f}'),
('\u{1712}', '\u{1714}'),
- ('\u{1732}', '\u{1734}'),
+ ('\u{1732}', '\u{1733}'),
('\u{1752}', '\u{1753}'),
('\u{1772}', '\u{1773}'),
('\u{17b4}', '\u{17b5}'),
@@ -1037,7 +1069,7 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('\u{17c9}', '\u{17d3}'),
('ៗ', 'ៗ'),
('\u{17dd}', '\u{17dd}'),
- ('\u{180b}', '\u{180e}'),
+ ('\u{180b}', '\u{180f}'),
('ᡃ', 'ᡃ'),
('\u{1885}', '\u{1886}'),
('\u{18a9}', '\u{18a9}'),
@@ -1055,7 +1087,7 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('\u{1a73}', '\u{1a7c}'),
('\u{1a7f}', '\u{1a7f}'),
('ᪧ', 'ᪧ'),
- ('\u{1ab0}', '\u{1ac0}'),
+ ('\u{1ab0}', '\u{1ace}'),
('\u{1b00}', '\u{1b03}'),
('\u{1b34}', '\u{1b34}'),
('\u{1b36}', '\u{1b3a}'),
@@ -1081,8 +1113,7 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('\u{1cf8}', '\u{1cf9}'),
('ᴬ', 'ᵪ'),
('ᵸ', 'ᵸ'),
- ('ᶛ', '\u{1df9}'),
- ('\u{1dfb}', '\u{1dff}'),
+ ('ᶛ', '\u{1dff}'),
('᾽', '᾽'),
('᾿', '῁'),
('῍', '῏'),
@@ -1123,6 +1154,7 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('꜀', '꜡'),
('ꝰ', 'ꝰ'),
('ꞈ', '꞊'),
+ ('ꟲ', 'ꟴ'),
('ꟸ', 'ꟹ'),
('\u{a802}', '\u{a802}'),
('\u{a806}', '\u{a806}'),
@@ -1157,12 +1189,12 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('ꫳ', 'ꫴ'),
('\u{aaf6}', '\u{aaf6}'),
('꭛', 'ꭟ'),
- ('\u{ab69}', '\u{ab6b}'),
+ ('ꭩ', '꭫'),
('\u{abe5}', '\u{abe5}'),
('\u{abe8}', '\u{abe8}'),
('\u{abed}', '\u{abed}'),
('\u{fb1e}', '\u{fb1e}'),
- ('﮲', '﯁'),
+ ('﮲', '﯂'),
('\u{fe00}', '\u{fe0f}'),
('︓', '︓'),
('\u{fe20}', '\u{fe2f}'),
@@ -1181,6 +1213,9 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('\u{101fd}', '\u{101fd}'),
('\u{102e0}', '\u{102e0}'),
('\u{10376}', '\u{1037a}'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('\u{10a01}', '\u{10a03}'),
('\u{10a05}', '\u{10a06}'),
('\u{10a0c}', '\u{10a0f}'),
@@ -1190,12 +1225,16 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('\u{10d24}', '\u{10d27}'),
('\u{10eab}', '\u{10eac}'),
('\u{10f46}', '\u{10f50}'),
+ ('\u{10f82}', '\u{10f85}'),
('\u{11001}', '\u{11001}'),
('\u{11038}', '\u{11046}'),
+ ('\u{11070}', '\u{11070}'),
+ ('\u{11073}', '\u{11074}'),
('\u{1107f}', '\u{11081}'),
('\u{110b3}', '\u{110b6}'),
('\u{110b9}', '\u{110ba}'),
('\u{110bd}', '\u{110bd}'),
+ ('\u{110c2}', '\u{110c2}'),
('\u{110cd}', '\u{110cd}'),
('\u{11100}', '\u{11102}'),
('\u{11127}', '\u{1112b}'),
@@ -1278,8 +1317,13 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('\u{16f8f}', '𖾟'),
('𖿠', '𖿡'),
('𖿣', '\u{16fe4}'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
('\u{1bc9d}', '\u{1bc9e}'),
('\u{1bca0}', '\u{1bca3}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d167}', '\u{1d169}'),
('\u{1d173}', '\u{1d182}'),
('\u{1d185}', '\u{1d18b}'),
@@ -1297,6 +1341,7 @@ pub const CASE_IGNORABLE: &'static [(char, char)] = &[
('\u{1e023}', '\u{1e024}'),
('\u{1e026}', '\u{1e02a}'),
('\u{1e130}', '𞄽'),
+ ('\u{1e2ae}', '\u{1e2ae}'),
('\u{1e2ec}', '\u{1e2ef}'),
('\u{1e8d0}', '\u{1e8d6}'),
('\u{1e944}', '𞥋'),
@@ -1384,9 +1429,7 @@ pub const CASED: &'static [(char, char)] = &[
('Ⅰ', 'ⅿ'),
('Ↄ', 'ↄ'),
('Ⓐ', 'ⓩ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⳤ'),
+ ('Ⰰ', 'ⳤ'),
('Ⳬ', 'ⳮ'),
('Ⳳ', 'ⳳ'),
('ⴀ', 'ⴥ'),
@@ -1396,12 +1439,14 @@ pub const CASED: &'static [(char, char)] = &[
('Ꚁ', 'ꚝ'),
('Ꜣ', 'ꞇ'),
('Ꞌ', 'ꞎ'),
- ('Ꞑ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', '\u{a7f6}'),
+ ('Ꞑ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('Ꟶ', 'ꟶ'),
('ꟸ', 'ꟺ'),
('ꬰ', 'ꭚ'),
- ('ꭜ', '\u{ab68}'),
+ ('ꭜ', 'ꭨ'),
('ꭰ', 'ꮿ'),
('ff', 'st'),
('ﬓ', 'ﬗ'),
@@ -1410,6 +1455,18 @@ pub const CASED: &'static [(char, char)] = &[
('𐐀', '𐑏'),
('𐒰', '𐓓'),
('𐓘', '𐓻'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
+ ('𐞀', '𐞀'),
+ ('𐞃', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐲀', '𐲲'),
('𐳀', '𐳲'),
('𑢠', '𑣟'),
@@ -1444,6 +1501,8 @@ pub const CASED: &'static [(char, char)] = &[
('𝞊', '𝞨'),
('𝞪', '𝟂'),
('𝟄', '𝟋'),
+ ('𝼀', '𝼉'),
+ ('𝼋', '𝼞'),
('𞤀', '𞥃'),
('🄰', '🅉'),
('🅐', '🅩'),
@@ -1886,7 +1945,7 @@ pub const CHANGES_WHEN_CASEFOLDED: &'static [(char, char)] = &[
('Ⅰ', 'Ⅿ'),
('Ↄ', 'Ↄ'),
('Ⓐ', 'Ⓩ'),
- ('Ⰰ', 'Ⱞ'),
+ ('Ⰰ', 'Ⱟ'),
('Ⱡ', 'Ⱡ'),
('Ɫ', 'Ɽ'),
('Ⱨ', 'Ⱨ'),
@@ -2051,16 +2110,24 @@ pub const CHANGES_WHEN_CASEFOLDED: &'static [(char, char)] = &[
('Ꞻ', 'Ꞻ'),
('Ꞽ', 'Ꞽ'),
('Ꞿ', 'Ꞿ'),
+ ('Ꟁ', 'Ꟁ'),
('Ꟃ', 'Ꟃ'),
- ('Ꞔ', '\u{a7c7}'),
- ('\u{a7c9}', '\u{a7c9}'),
- ('\u{a7f5}', '\u{a7f5}'),
+ ('Ꞔ', 'Ꟈ'),
+ ('Ꟊ', 'Ꟊ'),
+ ('Ꟑ', 'Ꟑ'),
+ ('Ꟗ', 'Ꟗ'),
+ ('Ꟙ', 'Ꟙ'),
+ ('Ꟶ', 'Ꟶ'),
('ꭰ', 'ꮿ'),
('ff', 'st'),
('ﬓ', 'ﬗ'),
('A', 'Z'),
('𐐀', '𐐧'),
('𐒰', '𐓓'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
('𐲀', '𐲲'),
('𑢠', '𑢿'),
('𖹀', '𖹟'),
@@ -2156,9 +2223,7 @@ pub const CHANGES_WHEN_CASEMAPPED: &'static [(char, char)] = &[
('Ⅰ', 'ⅿ'),
('Ↄ', 'ↄ'),
('Ⓐ', 'ⓩ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'Ɒ'),
+ ('Ⰰ', 'Ɒ'),
('Ⱳ', 'ⱳ'),
('Ⱶ', 'ⱶ'),
('Ȿ', 'ⳣ'),
@@ -2175,9 +2240,10 @@ pub const CHANGES_WHEN_CASEMAPPED: &'static [(char, char)] = &[
('Ꞌ', 'Ɥ'),
('Ꞑ', 'ꞔ'),
('Ꞗ', 'Ɪ'),
- ('Ʞ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', '\u{a7f6}'),
+ ('Ʞ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('Ꟗ', 'ꟙ'),
+ ('Ꟶ', 'ꟶ'),
('ꭓ', 'ꭓ'),
('ꭰ', 'ꮿ'),
('ff', 'st'),
@@ -2187,6 +2253,14 @@ pub const CHANGES_WHEN_CASEMAPPED: &'static [(char, char)] = &[
('𐐀', '𐑏'),
('𐒰', '𐓓'),
('𐓘', '𐓻'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐲀', '𐲲'),
('𐳀', '𐳲'),
('𑢠', '𑣟'),
@@ -2620,7 +2694,7 @@ pub const CHANGES_WHEN_LOWERCASED: &'static [(char, char)] = &[
('Ⅰ', 'Ⅿ'),
('Ↄ', 'Ↄ'),
('Ⓐ', 'Ⓩ'),
- ('Ⰰ', 'Ⱞ'),
+ ('Ⰰ', 'Ⱟ'),
('Ⱡ', 'Ⱡ'),
('Ɫ', 'Ɽ'),
('Ⱨ', 'Ⱨ'),
@@ -2785,13 +2859,21 @@ pub const CHANGES_WHEN_LOWERCASED: &'static [(char, char)] = &[
('Ꞻ', 'Ꞻ'),
('Ꞽ', 'Ꞽ'),
('Ꞿ', 'Ꞿ'),
+ ('Ꟁ', 'Ꟁ'),
('Ꟃ', 'Ꟃ'),
- ('Ꞔ', '\u{a7c7}'),
- ('\u{a7c9}', '\u{a7c9}'),
- ('\u{a7f5}', '\u{a7f5}'),
+ ('Ꞔ', 'Ꟈ'),
+ ('Ꟊ', 'Ꟊ'),
+ ('Ꟑ', 'Ꟑ'),
+ ('Ꟗ', 'Ꟗ'),
+ ('Ꟙ', 'Ꟙ'),
+ ('Ꟶ', 'Ꟶ'),
('A', 'Z'),
('𐐀', '𐐧'),
('𐒰', '𐓓'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
('𐲀', '𐲲'),
('𑢠', '𑢿'),
('𖹀', '𖹟'),
@@ -3237,7 +3319,7 @@ pub const CHANGES_WHEN_TITLECASED: &'static [(char, char)] = &[
('ⅰ', 'ⅿ'),
('ↄ', 'ↄ'),
('ⓐ', 'ⓩ'),
- ('ⰰ', 'ⱞ'),
+ ('ⰰ', 'ⱟ'),
('ⱡ', 'ⱡ'),
('ⱥ', 'ⱦ'),
('ⱨ', 'ⱨ'),
@@ -3402,10 +3484,14 @@ pub const CHANGES_WHEN_TITLECASED: &'static [(char, char)] = &[
('ꞻ', 'ꞻ'),
('ꞽ', 'ꞽ'),
('ꞿ', 'ꞿ'),
+ ('ꟁ', 'ꟁ'),
('ꟃ', 'ꟃ'),
- ('\u{a7c8}', '\u{a7c8}'),
- ('\u{a7ca}', '\u{a7ca}'),
- ('\u{a7f6}', '\u{a7f6}'),
+ ('ꟈ', 'ꟈ'),
+ ('ꟊ', 'ꟊ'),
+ ('ꟑ', 'ꟑ'),
+ ('ꟗ', 'ꟗ'),
+ ('ꟙ', 'ꟙ'),
+ ('ꟶ', 'ꟶ'),
('ꭓ', 'ꭓ'),
('ꭰ', 'ꮿ'),
('ff', 'st'),
@@ -3413,6 +3499,10 @@ pub const CHANGES_WHEN_TITLECASED: &'static [(char, char)] = &[
('a', 'z'),
('𐐨', '𐑏'),
('𐓘', '𐓻'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐳀', '𐳲'),
('𑣀', '𑣟'),
('𖹠', '𖹿'),
@@ -3859,7 +3949,7 @@ pub const CHANGES_WHEN_UPPERCASED: &'static [(char, char)] = &[
('ⅰ', 'ⅿ'),
('ↄ', 'ↄ'),
('ⓐ', 'ⓩ'),
- ('ⰰ', 'ⱞ'),
+ ('ⰰ', 'ⱟ'),
('ⱡ', 'ⱡ'),
('ⱥ', 'ⱦ'),
('ⱨ', 'ⱨ'),
@@ -4024,10 +4114,14 @@ pub const CHANGES_WHEN_UPPERCASED: &'static [(char, char)] = &[
('ꞻ', 'ꞻ'),
('ꞽ', 'ꞽ'),
('ꞿ', 'ꞿ'),
+ ('ꟁ', 'ꟁ'),
('ꟃ', 'ꟃ'),
- ('\u{a7c8}', '\u{a7c8}'),
- ('\u{a7ca}', '\u{a7ca}'),
- ('\u{a7f6}', '\u{a7f6}'),
+ ('ꟈ', 'ꟈ'),
+ ('ꟊ', 'ꟊ'),
+ ('ꟑ', 'ꟑ'),
+ ('ꟗ', 'ꟗ'),
+ ('ꟙ', 'ꟙ'),
+ ('ꟶ', 'ꟶ'),
('ꭓ', 'ꭓ'),
('ꭰ', 'ꮿ'),
('ff', 'st'),
@@ -4035,6 +4129,10 @@ pub const CHANGES_WHEN_UPPERCASED: &'static [(char, char)] = &[
('a', 'z'),
('𐐨', '𐑏'),
('𐓘', '𐓻'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐳀', '𐳲'),
('𑣀', '𑣟'),
('𖹠', '𖹿'),
@@ -4056,6 +4154,7 @@ pub const DASH: &'static [(char, char)] = &[
('⸚', '⸚'),
('⸺', '⸻'),
('⹀', '⹀'),
+ ('⹝', '⹝'),
('〜', '〜'),
('〰', '〰'),
('゠', '゠'),
@@ -4063,7 +4162,7 @@ pub const DASH: &'static [(char, char)] = &[
('﹘', '﹘'),
('﹣', '﹣'),
('-', '-'),
- ('\u{10ead}', '\u{10ead}'),
+ ('𐺭', '𐺭'),
];
pub const DEFAULT_IGNORABLE_CODE_POINT: &'static [(char, char)] = &[
@@ -4072,7 +4171,7 @@ pub const DEFAULT_IGNORABLE_CODE_POINT: &'static [(char, char)] = &[
('\u{61c}', '\u{61c}'),
('ᅟ', 'ᅠ'),
('\u{17b4}', '\u{17b5}'),
- ('\u{180b}', '\u{180e}'),
+ ('\u{180b}', '\u{180f}'),
('\u{200b}', '\u{200f}'),
('\u{202a}', '\u{202e}'),
('\u{2060}', '\u{206f}'),
@@ -4126,6 +4225,8 @@ pub const DIACRITIC: &'static [(char, char)] = &[
('\u{7a6}', '\u{7b0}'),
('\u{7eb}', 'ߵ'),
('\u{818}', '\u{819}'),
+ ('\u{898}', '\u{89f}'),
+ ('ࣉ', '\u{8d2}'),
('\u{8e3}', '\u{8fe}'),
('\u{93c}', '\u{93c}'),
('\u{94d}', '\u{94d}'),
@@ -4142,6 +4243,7 @@ pub const DIACRITIC: &'static [(char, char)] = &[
('\u{b4d}', '\u{b4d}'),
('\u{b55}', '\u{b55}'),
('\u{bcd}', '\u{bcd}'),
+ ('\u{c3c}', '\u{c3c}'),
('\u{c4d}', '\u{c4d}'),
('\u{cbc}', '\u{cbc}'),
('\u{ccd}', '\u{ccd}'),
@@ -4168,12 +4270,14 @@ pub const DIACRITIC: &'static [(char, char)] = &[
('ႏ', 'ႏ'),
('ႚ', 'ႛ'),
('\u{135d}', '\u{135f}'),
+ ('\u{1714}', '᜕'),
('\u{17c9}', '\u{17d3}'),
('\u{17dd}', '\u{17dd}'),
('\u{1939}', '\u{193b}'),
('\u{1a75}', '\u{1a7c}'),
('\u{1a7f}', '\u{1a7f}'),
- ('\u{1ab0}', '\u{1abd}'),
+ ('\u{1ab0}', '\u{1abe}'),
+ ('\u{1ac1}', '\u{1acb}'),
('\u{1b34}', '\u{1b34}'),
('᭄', '᭄'),
('\u{1b6b}', '\u{1b73}'),
@@ -4186,8 +4290,7 @@ pub const DIACRITIC: &'static [(char, char)] = &[
('᳷', '\u{1cf9}'),
('ᴬ', 'ᵪ'),
('\u{1dc4}', '\u{1dcf}'),
- ('\u{1df5}', '\u{1df9}'),
- ('\u{1dfd}', '\u{1dff}'),
+ ('\u{1df5}', '\u{1dff}'),
('᾽', '᾽'),
('᾿', '῁'),
('῍', '῏'),
@@ -4218,7 +4321,7 @@ pub const DIACRITIC: &'static [(char, char)] = &[
('\u{aabf}', 'ꫂ'),
('\u{aaf6}', '\u{aaf6}'),
('꭛', 'ꭟ'),
- ('\u{ab69}', '\u{ab6b}'),
+ ('ꭩ', '꭫'),
('꯬', '\u{abed}'),
('\u{fb1e}', '\u{fb1e}'),
('\u{fe20}', '\u{fe2f}'),
@@ -4228,9 +4331,15 @@ pub const DIACRITIC: &'static [(char, char)] = &[
('\u{ff9e}', '\u{ff9f}'),
(' ̄', ' ̄'),
('\u{102e0}', '\u{102e0}'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('\u{10ae5}', '\u{10ae6}'),
('𐴢', '\u{10d27}'),
('\u{10f46}', '\u{10f50}'),
+ ('\u{10f82}', '\u{10f85}'),
+ ('\u{11046}', '\u{11046}'),
+ ('\u{11070}', '\u{11070}'),
('\u{110b9}', '\u{110ba}'),
('\u{11133}', '\u{11134}'),
('\u{11173}', '\u{11173}'),
@@ -4250,7 +4359,7 @@ pub const DIACRITIC: &'static [(char, char)] = &[
('𑚶', '\u{116b7}'),
('\u{1172b}', '\u{1172b}'),
('\u{11839}', '\u{1183a}'),
- ('\u{1193d}', '\u{1193e}'),
+ ('𑤽', '\u{1193e}'),
('\u{11943}', '\u{11943}'),
('\u{119e0}', '\u{119e0}'),
('\u{11a34}', '\u{11a34}'),
@@ -4263,13 +4372,19 @@ pub const DIACRITIC: &'static [(char, char)] = &[
('\u{16af0}', '\u{16af4}'),
('\u{16b30}', '\u{16b36}'),
('\u{16f8f}', '𖾟'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d167}', '\u{1d169}'),
('𝅭', '\u{1d172}'),
('\u{1d17b}', '\u{1d182}'),
('\u{1d185}', '\u{1d18b}'),
('\u{1d1aa}', '\u{1d1ad}'),
('\u{1e130}', '\u{1e136}'),
+ ('\u{1e2ae}', '\u{1e2ae}'),
('\u{1e2ec}', '\u{1e2ef}'),
('\u{1e8d0}', '\u{1e8d6}'),
('\u{1e944}', '\u{1e946}'),
@@ -4410,25 +4525,26 @@ pub const EMOJI: &'static [(char, char)] = &[
('🗺', '🙏'),
('🚀', '🛅'),
('🛋', '🛒'),
- ('🛕', '\u{1f6d7}'),
- ('🛠', '🛥'),
+ ('🛕', '🛗'),
+ ('🛝', '🛥'),
('🛩', '🛩'),
('🛫', '🛬'),
('🛰', '🛰'),
- ('🛳', '\u{1f6fc}'),
+ ('🛳', '🛼'),
('🟠', '🟫'),
- ('\u{1f90c}', '🤺'),
+ ('🟰', '🟰'),
+ ('🤌', '🤺'),
('🤼', '🥅'),
- ('🥇', '\u{1f978}'),
- ('🥺', '\u{1f9cb}'),
- ('🧍', '🧿'),
- ('🩰', '\u{1fa74}'),
- ('🩸', '🩺'),
- ('🪀', '\u{1fa86}'),
- ('🪐', '\u{1faa8}'),
- ('\u{1fab0}', '\u{1fab6}'),
- ('\u{1fac0}', '\u{1fac2}'),
- ('\u{1fad0}', '\u{1fad6}'),
+ ('🥇', '🧿'),
+ ('🩰', '🩴'),
+ ('🩸', '🩼'),
+ ('🪀', '🪆'),
+ ('🪐', '🪬'),
+ ('🪰', '🪺'),
+ ('🫀', '🫅'),
+ ('🫐', '🫙'),
+ ('🫠', '🫧'),
+ ('🫰', '🫶'),
];
pub const EMOJI_COMPONENT: &'static [(char, char)] = &[
@@ -4473,18 +4589,20 @@ pub const EMOJI_MODIFIER_BASE: &'static [(char, char)] = &[
('🚴', '🚶'),
('🛀', '🛀'),
('🛌', '🛌'),
- ('\u{1f90c}', '\u{1f90c}'),
+ ('🤌', '🤌'),
('🤏', '🤏'),
('🤘', '🤟'),
('🤦', '🤦'),
('🤰', '🤹'),
('🤼', '🤾'),
- ('\u{1f977}', '\u{1f977}'),
+ ('🥷', '🥷'),
('🦵', '🦶'),
('🦸', '🦹'),
('🦻', '🦻'),
('🧍', '🧏'),
('🧑', '🧝'),
+ ('🫃', '🫅'),
+ ('🫰', '🫶'),
];
pub const EMOJI_PRESENTATION: &'static [(char, char)] = &[
@@ -4553,22 +4671,24 @@ pub const EMOJI_PRESENTATION: &'static [(char, char)] = &[
('🚀', '🛅'),
('🛌', '🛌'),
('🛐', '🛒'),
- ('🛕', '\u{1f6d7}'),
+ ('🛕', '🛗'),
+ ('🛝', '🛟'),
('🛫', '🛬'),
- ('🛴', '\u{1f6fc}'),
+ ('🛴', '🛼'),
('🟠', '🟫'),
- ('\u{1f90c}', '🤺'),
+ ('🟰', '🟰'),
+ ('🤌', '🤺'),
('🤼', '🥅'),
- ('🥇', '\u{1f978}'),
- ('🥺', '\u{1f9cb}'),
- ('🧍', '🧿'),
- ('🩰', '\u{1fa74}'),
- ('🩸', '🩺'),
- ('🪀', '\u{1fa86}'),
- ('🪐', '\u{1faa8}'),
- ('\u{1fab0}', '\u{1fab6}'),
- ('\u{1fac0}', '\u{1fac2}'),
- ('\u{1fad0}', '\u{1fad6}'),
+ ('🥇', '🧿'),
+ ('🩰', '🩴'),
+ ('🩸', '🩼'),
+ ('🪀', '🪆'),
+ ('🪐', '🪬'),
+ ('🪰', '🪺'),
+ ('🫀', '🫅'),
+ ('🫐', '🫙'),
+ ('🫠', '🫧'),
+ ('🫰', '🫶'),
];
pub const EXTENDED_PICTOGRAPHIC: &'static [(char, char)] = &[
@@ -4623,13 +4743,13 @@ pub const EXTENDED_PICTOGRAPHIC: &'static [(char, char)] = &[
('㊗', '㊗'),
('㊙', '㊙'),
('🀀', '\u{1f0ff}'),
- ('\u{1f10d}', '\u{1f10f}'),
+ ('🄍', '🄏'),
('🄯', '🄯'),
('🅬', '🅱'),
('🅾', '🅿'),
('🆎', '🆎'),
('🆑', '🆚'),
- ('\u{1f1ad}', '\u{1f1e5}'),
+ ('🆭', '\u{1f1e5}'),
('🈁', '\u{1f20f}'),
('🈚', '🈚'),
('🈯', '🈯'),
@@ -4646,7 +4766,7 @@ pub const EXTENDED_PICTOGRAPHIC: &'static [(char, char)] = &[
('\u{1f85a}', '\u{1f85f}'),
('\u{1f888}', '\u{1f88f}'),
('\u{1f8ae}', '\u{1f8ff}'),
- ('\u{1f90c}', '🤺'),
+ ('🤌', '🤺'),
('🤼', '🥅'),
('🥇', '\u{1faff}'),
('\u{1fc00}', '\u{1fffd}'),
@@ -4677,6 +4797,7 @@ pub const EXTENDER: &'static [(char, char)] = &[
('ꫝ', 'ꫝ'),
('ꫳ', 'ꫴ'),
('ー', 'ー'),
+ ('𐞁', '𐞂'),
('𑍝', '𑍝'),
('𑗆', '𑗈'),
('\u{11a98}', '\u{11a98}'),
@@ -4709,7 +4830,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('ׯ', '״'),
('؆', '؏'),
('؛', '؛'),
- ('؞', 'ي'),
+ ('؝', 'ي'),
('٠', 'ٯ'),
('ٱ', 'ە'),
('۞', '۞'),
@@ -4730,8 +4851,8 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('ࡀ', 'ࡘ'),
('࡞', '࡞'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
+ ('ࡰ', 'ࢎ'),
+ ('ࢠ', 'ࣉ'),
('ः', 'ह'),
('ऻ', 'ऻ'),
('ऽ', 'ी'),
@@ -4820,6 +4941,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('ఽ', 'ఽ'),
('ు', 'ౄ'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', 'ౡ'),
('౦', '౯'),
('౷', 'ಀ'),
@@ -4833,7 +4955,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('ೃ', 'ೄ'),
('ೇ', 'ೈ'),
('ೊ', 'ೋ'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', 'ೡ'),
('೦', '೯'),
('ೱ', 'ೲ'),
@@ -4922,10 +5044,10 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('ᏸ', 'ᏽ'),
('᐀', '᚜'),
('ᚠ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', 'ᜑ'),
- ('ᜠ', 'ᜱ'),
- ('᜵', '᜶'),
+ ('ᜀ', 'ᜑ'),
+ ('᜕', '᜕'),
+ ('ᜟ', 'ᜱ'),
+ ('᜴', '᜶'),
('ᝀ', 'ᝑ'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -4967,9 +5089,9 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('ᬄ', 'ᬳ'),
('ᬻ', 'ᬻ'),
('ᬽ', 'ᭁ'),
- ('ᭃ', 'ᭋ'),
+ ('ᭃ', 'ᭌ'),
('᭐', '᭪'),
- ('᭴', '᭼'),
+ ('᭴', '᭾'),
('ᮂ', 'ᮡ'),
('ᮦ', 'ᮧ'),
('᮪', '᮪'),
@@ -5013,15 +5135,13 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('⁰', 'ⁱ'),
('⁴', '₎'),
('ₐ', 'ₜ'),
- ('₠', '₿'),
+ ('₠', '⃀'),
('℀', '↋'),
('←', '␦'),
('⑀', '⑊'),
('①', '⭳'),
('⭶', '⮕'),
- ('\u{2b97}', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⳮ'),
+ ('⮗', 'ⳮ'),
('Ⳳ', 'ⳳ'),
('⳹', 'ⴥ'),
('ⴧ', 'ⴧ'),
@@ -5037,7 +5157,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('ⷈ', 'ⷎ'),
('ⷐ', 'ⷖ'),
('ⷘ', 'ⷞ'),
- ('⸀', '\u{2e52}'),
+ ('⸀', '⹝'),
('⺀', '⺙'),
('⺛', '⻳'),
('⼀', '⿕'),
@@ -5050,8 +5170,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('ㄱ', 'ㆎ'),
('㆐', '㇣'),
('ㇰ', '㈞'),
- ('㈠', '\u{9ffc}'),
- ('ꀀ', 'ꒌ'),
+ ('㈠', 'ꒌ'),
('꒐', '꓆'),
('ꓐ', 'ꘫ'),
('Ꙁ', 'ꙮ'),
@@ -5059,9 +5178,11 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('꙾', 'ꚝ'),
('ꚠ', 'ꛯ'),
('꛲', '꛷'),
- ('꜀', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꠁ'),
+ ('꜀', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꠁ'),
('ꠃ', 'ꠅ'),
('ꠇ', 'ꠊ'),
('ꠌ', 'ꠤ'),
@@ -5103,7 +5224,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('ꬑ', 'ꬖ'),
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
- ('ꬰ', '\u{ab6b}'),
+ ('ꬰ', '꭫'),
('ꭰ', 'ꯤ'),
('ꯦ', 'ꯧ'),
('ꯩ', '꯬'),
@@ -5121,11 +5242,11 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('מּ', 'מּ'),
('נּ', 'סּ'),
('ףּ', 'פּ'),
- ('צּ', '﯁'),
- ('ﯓ', '﴿'),
- ('ﵐ', 'ﶏ'),
+ ('צּ', '﯂'),
+ ('ﯓ', 'ﶏ'),
('ﶒ', 'ﷇ'),
- ('ﷰ', '﷽'),
+ ('﷏', '﷏'),
+ ('ﷰ', '﷿'),
('︐', '︙'),
('︰', '﹒'),
('﹔', '﹦'),
@@ -5151,7 +5272,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𐄀', '𐄂'),
('𐄇', '𐄳'),
('𐄷', '𐆎'),
- ('𐆐', '\u{1019c}'),
+ ('𐆐', '𐆜'),
('𐆠', '𐆠'),
('𐇐', '𐇼'),
('𐊀', '𐊜'),
@@ -5169,10 +5290,20 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𐓘', '𐓻'),
('𐔀', '𐔧'),
('𐔰', '𐕣'),
- ('𐕯', '𐕯'),
+ ('𐕯', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐘀', '𐜶'),
('𐝀', '𐝕'),
('𐝠', '𐝧'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐠀', '𐠅'),
('𐠈', '𐠈'),
('𐠊', '𐠵'),
@@ -5209,18 +5340,22 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𐳺', '𐴣'),
('𐴰', '𐴹'),
('𐹠', '𐹾'),
- ('\u{10e80}', '\u{10ea9}'),
- ('\u{10ead}', '\u{10ead}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺀', '𐺩'),
+ ('𐺭', '𐺭'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼧'),
('𐼰', '𐽅'),
('𐽑', '𐽙'),
- ('\u{10fb0}', '\u{10fcb}'),
+ ('𐽰', '𐾁'),
+ ('𐾆', '𐾉'),
+ ('𐾰', '𐿋'),
('𐿠', '𐿶'),
('𑀀', '𑀀'),
('𑀂', '𑀷'),
('𑁇', '𑁍'),
('𑁒', '𑁯'),
+ ('𑁱', '𑁲'),
+ ('𑁵', '𑁵'),
('𑂂', '𑂲'),
('𑂷', '𑂸'),
('𑂻', '𑂼'),
@@ -5229,12 +5364,12 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𑃰', '𑃹'),
('𑄃', '𑄦'),
('𑄬', '𑄬'),
- ('𑄶', '\u{11147}'),
+ ('𑄶', '𑅇'),
('𑅐', '𑅲'),
('𑅴', '𑅶'),
('𑆂', '𑆵'),
('𑆿', '𑇈'),
- ('𑇍', '\u{111ce}'),
+ ('𑇍', '𑇎'),
('𑇐', '𑇟'),
('𑇡', '𑇴'),
('𑈀', '𑈑'),
@@ -5269,7 +5404,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𑑅', '𑑅'),
('𑑇', '𑑛'),
('𑑝', '𑑝'),
- ('𑑟', '\u{11461}'),
+ ('𑑟', '𑑡'),
('𑒀', '𑒯'),
('𑒱', '𑒲'),
('𑒹', '𑒹'),
@@ -5293,27 +5428,27 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𑚬', '𑚬'),
('𑚮', '𑚯'),
('𑚶', '𑚶'),
- ('𑚸', '𑚸'),
+ ('𑚸', '𑚹'),
('𑛀', '𑛉'),
('𑜀', '𑜚'),
('𑜠', '𑜡'),
('𑜦', '𑜦'),
- ('𑜰', '𑜿'),
+ ('𑜰', '𑝆'),
('𑠀', '𑠮'),
('𑠸', '𑠸'),
('𑠻', '𑠻'),
('𑢠', '𑣲'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{1192f}'),
- ('\u{11931}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
- ('\u{1193d}', '\u{1193d}'),
- ('\u{1193f}', '\u{11942}'),
- ('\u{11944}', '\u{11946}'),
- ('\u{11950}', '\u{11959}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤯'),
+ ('𑤱', '𑤵'),
+ ('𑤷', '𑤸'),
+ ('𑤽', '𑤽'),
+ ('𑤿', '𑥂'),
+ ('𑥄', '𑥆'),
+ ('𑥐', '𑥙'),
('𑦠', '𑦧'),
('𑦪', '𑧓'),
('𑧜', '𑧟'),
@@ -5327,7 +5462,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𑩜', '𑪉'),
('𑪗', '𑪗'),
('𑪚', '𑪢'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '𑰯'),
('𑰾', '𑰾'),
@@ -5351,18 +5486,20 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𑶠', '𑶩'),
('𑻠', '𑻲'),
('𑻵', '𑻸'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𑿀', '𑿱'),
('𑿿', '𒎙'),
('𒐀', '𒑮'),
('𒑰', '𒑴'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿲'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
('𖩠', '𖩩'),
- ('𖩮', '𖩯'),
+ ('𖩮', '𖪾'),
+ ('𖫀', '𖫉'),
('𖫐', '𖫭'),
('𖫵', '𖫵'),
('𖬀', '𖬯'),
@@ -5376,11 +5513,14 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𖽐', '𖾇'),
('𖾓', '𖾟'),
('𖿠', '𖿣'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('𛀀', '𛄞'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('𛀀', '𛄢'),
('𛅐', '𛅒'),
('𛅤', '𛅧'),
('𛅰', '𛋻'),
@@ -5390,6 +5530,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𛲐', '𛲙'),
('𛲜', '𛲜'),
('𛲟', '𛲟'),
+ ('𜽐', '𜿃'),
('𝀀', '𝃵'),
('𝄀', '𝄦'),
('𝄩', '𝅘𝅥𝅲'),
@@ -5397,7 +5538,7 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𝅪', '𝅭'),
('𝆃', '𝆄'),
('𝆌', '𝆩'),
- ('𝆮', '𝇨'),
+ ('𝆮', '𝇪'),
('𝈀', '𝉁'),
('𝉅', '𝉅'),
('𝋠', '𝋳'),
@@ -5428,13 +5569,19 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('𝩭', '𝩴'),
('𝩶', '𝪃'),
('𝪅', '𝪋'),
+ ('𝼀', '𝼞'),
('𞄀', '𞄬'),
('𞄷', '𞄽'),
('𞅀', '𞅉'),
('𞅎', '𞅏'),
+ ('𞊐', '𞊭'),
('𞋀', '𞋫'),
('𞋰', '𞋹'),
('𞋿', '𞋿'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('𞣇', '𞣏'),
('𞤀', '𞥃'),
@@ -5483,45 +5630,46 @@ pub const GRAPHEME_BASE: &'static [(char, char)] = &[
('🂱', '🂿'),
('🃁', '🃏'),
('🃑', '🃵'),
- ('🄀', '\u{1f1ad}'),
+ ('🄀', '🆭'),
('🇦', '🈂'),
('🈐', '🈻'),
('🉀', '🉈'),
('🉐', '🉑'),
('🉠', '🉥'),
- ('🌀', '\u{1f6d7}'),
- ('🛠', '🛬'),
- ('🛰', '\u{1f6fc}'),
+ ('🌀', '🛗'),
+ ('🛝', '🛬'),
+ ('🛰', '🛼'),
('🜀', '🝳'),
('🞀', '🟘'),
('🟠', '🟫'),
+ ('🟰', '🟰'),
('🠀', '🠋'),
('🠐', '🡇'),
('🡐', '🡙'),
('🡠', '🢇'),
('🢐', '🢭'),
- ('\u{1f8b0}', '\u{1f8b1}'),
- ('🤀', '\u{1f978}'),
- ('🥺', '\u{1f9cb}'),
- ('🧍', '🩓'),
+ ('🢰', '🢱'),
+ ('🤀', '🩓'),
('🩠', '🩭'),
- ('🩰', '\u{1fa74}'),
- ('🩸', '🩺'),
- ('🪀', '\u{1fa86}'),
- ('🪐', '\u{1faa8}'),
- ('\u{1fab0}', '\u{1fab6}'),
- ('\u{1fac0}', '\u{1fac2}'),
- ('\u{1fad0}', '\u{1fad6}'),
- ('\u{1fb00}', '\u{1fb92}'),
- ('\u{1fb94}', '\u{1fbca}'),
- ('\u{1fbf0}', '\u{1fbf9}'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('🩰', '🩴'),
+ ('🩸', '🩼'),
+ ('🪀', '🪆'),
+ ('🪐', '🪬'),
+ ('🪰', '🪺'),
+ ('🫀', '🫅'),
+ ('🫐', '🫙'),
+ ('🫠', '🫧'),
+ ('🫰', '🫶'),
+ ('🬀', '🮒'),
+ ('🮔', '🯊'),
+ ('🯰', '🯹'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[
@@ -5549,7 +5697,8 @@ pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[
('\u{825}', '\u{827}'),
('\u{829}', '\u{82d}'),
('\u{859}', '\u{85b}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('\u{898}', '\u{89f}'),
+ ('\u{8ca}', '\u{8e1}'),
('\u{8e3}', '\u{902}'),
('\u{93a}', '\u{93a}'),
('\u{93c}', '\u{93c}'),
@@ -5594,6 +5743,7 @@ pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[
('\u{bd7}', '\u{bd7}'),
('\u{c00}', '\u{c00}'),
('\u{c04}', '\u{c04}'),
+ ('\u{c3c}', '\u{c3c}'),
('\u{c3e}', '\u{c40}'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
@@ -5649,7 +5799,7 @@ pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[
('\u{109d}', '\u{109d}'),
('\u{135d}', '\u{135f}'),
('\u{1712}', '\u{1714}'),
- ('\u{1732}', '\u{1734}'),
+ ('\u{1732}', '\u{1733}'),
('\u{1752}', '\u{1753}'),
('\u{1772}', '\u{1773}'),
('\u{17b4}', '\u{17b5}'),
@@ -5658,6 +5808,7 @@ pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[
('\u{17c9}', '\u{17d3}'),
('\u{17dd}', '\u{17dd}'),
('\u{180b}', '\u{180d}'),
+ ('\u{180f}', '\u{180f}'),
('\u{1885}', '\u{1886}'),
('\u{18a9}', '\u{18a9}'),
('\u{1920}', '\u{1922}'),
@@ -5673,7 +5824,7 @@ pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[
('\u{1a65}', '\u{1a6c}'),
('\u{1a73}', '\u{1a7c}'),
('\u{1a7f}', '\u{1a7f}'),
- ('\u{1ab0}', '\u{1ac0}'),
+ ('\u{1ab0}', '\u{1ace}'),
('\u{1b00}', '\u{1b03}'),
('\u{1b34}', '\u{1b3a}'),
('\u{1b3c}', '\u{1b3c}'),
@@ -5695,8 +5846,7 @@ pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[
('\u{1ced}', '\u{1ced}'),
('\u{1cf4}', '\u{1cf4}'),
('\u{1cf8}', '\u{1cf9}'),
- ('\u{1dc0}', '\u{1df9}'),
- ('\u{1dfb}', '\u{1dff}'),
+ ('\u{1dc0}', '\u{1dff}'),
('\u{200c}', '\u{200c}'),
('\u{20d0}', '\u{20f0}'),
('\u{2cef}', '\u{2cf1}'),
@@ -5755,11 +5905,15 @@ pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[
('\u{10d24}', '\u{10d27}'),
('\u{10eab}', '\u{10eac}'),
('\u{10f46}', '\u{10f50}'),
+ ('\u{10f82}', '\u{10f85}'),
('\u{11001}', '\u{11001}'),
('\u{11038}', '\u{11046}'),
+ ('\u{11070}', '\u{11070}'),
+ ('\u{11073}', '\u{11074}'),
('\u{1107f}', '\u{11081}'),
('\u{110b3}', '\u{110b6}'),
('\u{110b9}', '\u{110ba}'),
+ ('\u{110c2}', '\u{110c2}'),
('\u{11100}', '\u{11102}'),
('\u{11127}', '\u{1112b}'),
('\u{1112d}', '\u{11134}'),
@@ -5845,6 +5999,8 @@ pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[
('\u{16f8f}', '\u{16f92}'),
('\u{16fe4}', '\u{16fe4}'),
('\u{1bc9d}', '\u{1bc9e}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d165}', '\u{1d165}'),
('\u{1d167}', '\u{1d169}'),
('\u{1d16e}', '\u{1d172}'),
@@ -5864,6 +6020,7 @@ pub const GRAPHEME_EXTEND: &'static [(char, char)] = &[
('\u{1e023}', '\u{1e024}'),
('\u{1e026}', '\u{1e02a}'),
('\u{1e130}', '\u{1e136}'),
+ ('\u{1e2ae}', '\u{1e2ae}'),
('\u{1e2ec}', '\u{1e2ef}'),
('\u{1e8d0}', '\u{1e8d6}'),
('\u{1e944}', '\u{1e94a}'),
@@ -5887,8 +6044,8 @@ pub const GRAPHEME_LINK: &'static [(char, char)] = &[
('\u{eba}', '\u{eba}'),
('\u{f84}', '\u{f84}'),
('\u{1039}', '\u{103a}'),
- ('\u{1714}', '\u{1714}'),
- ('\u{1734}', '\u{1734}'),
+ ('\u{1714}', '᜕'),
+ ('᜴', '᜴'),
('\u{17d2}', '\u{17d2}'),
('\u{1a60}', '\u{1a60}'),
('᭄', '᭄'),
@@ -5904,6 +6061,7 @@ pub const GRAPHEME_LINK: &'static [(char, char)] = &[
('\u{abed}', '\u{abed}'),
('\u{10a3f}', '\u{10a3f}'),
('\u{11046}', '\u{11046}'),
+ ('\u{11070}', '\u{11070}'),
('\u{1107f}', '\u{1107f}'),
('\u{110b9}', '\u{110b9}'),
('\u{11133}', '\u{11134}'),
@@ -5918,7 +6076,7 @@ pub const GRAPHEME_LINK: &'static [(char, char)] = &[
('𑚶', '𑚶'),
('\u{1172b}', '\u{1172b}'),
('\u{11839}', '\u{11839}'),
- ('\u{1193d}', '\u{1193e}'),
+ ('𑤽', '\u{1193e}'),
('\u{119e0}', '\u{119e0}'),
('\u{11a34}', '\u{11a34}'),
('\u{11a47}', '\u{11a47}'),
@@ -6007,9 +6165,9 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('ࠀ', '\u{82d}'),
('ࡀ', '\u{85b}'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('ࡰ', 'ࢇ'),
+ ('ࢉ', 'ࢎ'),
+ ('\u{898}', '\u{8e1}'),
('\u{8e3}', '\u{963}'),
('०', '९'),
('ॱ', 'ঃ'),
@@ -6093,11 +6251,12 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('ఎ', 'ఐ'),
('ఒ', 'న'),
('ప', 'హ'),
- ('ఽ', 'ౄ'),
+ ('\u{c3c}', 'ౄ'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
('\u{c55}', '\u{c56}'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', '\u{c63}'),
('౦', '౯'),
('ಀ', 'ಃ'),
@@ -6110,7 +6269,7 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('\u{cc6}', 'ೈ'),
('ೊ', '\u{ccd}'),
('\u{cd5}', '\u{cd6}'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', '\u{ce3}'),
('೦', '೯'),
('ೱ', 'ೲ'),
@@ -6193,9 +6352,8 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('ᚁ', 'ᚚ'),
('ᚠ', 'ᛪ'),
('ᛮ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', '\u{1714}'),
- ('ᜠ', '\u{1734}'),
+ ('ᜀ', '᜕'),
+ ('ᜟ', '᜴'),
('ᝀ', '\u{1753}'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -6205,7 +6363,7 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('ៜ', '\u{17dd}'),
('០', '៩'),
('\u{180b}', '\u{180d}'),
- ('᠐', '᠙'),
+ ('\u{180f}', '᠙'),
('ᠠ', 'ᡸ'),
('ᢀ', 'ᢪ'),
('ᢰ', 'ᣵ'),
@@ -6224,8 +6382,8 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('᪐', '᪙'),
('ᪧ', 'ᪧ'),
('\u{1ab0}', '\u{1abd}'),
- ('\u{1abf}', '\u{1ac0}'),
- ('\u{1b00}', 'ᭋ'),
+ ('\u{1abf}', '\u{1ace}'),
+ ('\u{1b00}', 'ᭌ'),
('᭐', '᭙'),
('\u{1b6b}', '\u{1b73}'),
('\u{1b80}', '᯳'),
@@ -6237,8 +6395,7 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('Ჽ', 'Ჿ'),
('\u{1cd0}', '\u{1cd2}'),
('\u{1cd4}', 'ᳺ'),
- ('ᴀ', '\u{1df9}'),
- ('\u{1dfb}', 'ἕ'),
+ ('ᴀ', 'ἕ'),
('Ἐ', 'Ἕ'),
('ἠ', 'ὅ'),
('Ὀ', 'Ὅ'),
@@ -6278,9 +6435,7 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('ⅅ', 'ⅉ'),
('ⅎ', 'ⅎ'),
('Ⅰ', 'ↈ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⳤ'),
+ ('Ⰰ', 'ⳤ'),
('Ⳬ', 'ⳳ'),
('ⴀ', 'ⴥ'),
('ⴧ', 'ⴧ'),
@@ -6307,11 +6462,10 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('ー', 'ヿ'),
('ㄅ', 'ㄯ'),
('ㄱ', 'ㆎ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('ㇰ', 'ㇿ'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
- ('ꀀ', 'ꒌ'),
+ ('㐀', '䶿'),
+ ('一', 'ꒌ'),
('ꓐ', 'ꓽ'),
('ꔀ', 'ꘌ'),
('ꘐ', 'ꘫ'),
@@ -6320,9 +6474,11 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('ꙿ', '\u{a6f1}'),
('ꜗ', 'ꜟ'),
('Ꜣ', 'ꞈ'),
- ('Ꞌ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꠧ'),
+ ('Ꞌ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꠧ'),
('\u{a82c}', '\u{a82c}'),
('ꡀ', 'ꡳ'),
('ꢀ', '\u{a8c5}'),
@@ -6349,7 +6505,7 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
('ꬰ', 'ꭚ'),
- ('ꭜ', '\u{ab69}'),
+ ('ꭜ', 'ꭩ'),
('ꭰ', 'ꯪ'),
('꯬', '\u{abed}'),
('꯰', '꯹'),
@@ -6411,9 +6567,20 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('𐓘', '𐓻'),
('𐔀', '𐔧'),
('𐔰', '𐕣'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐘀', '𐜶'),
('𐝀', '𐝕'),
('𐝠', '𐝧'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐠀', '𐠅'),
('𐠈', '𐠈'),
('𐠊', '𐠵'),
@@ -6448,27 +6615,29 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('𐳀', '𐳲'),
('𐴀', '\u{10d27}'),
('𐴰', '𐴹'),
- ('\u{10e80}', '\u{10ea9}'),
+ ('𐺀', '𐺩'),
('\u{10eab}', '\u{10eac}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼜'),
('𐼧', '𐼧'),
('𐼰', '\u{10f50}'),
- ('\u{10fb0}', '\u{10fc4}'),
+ ('𐽰', '\u{10f85}'),
+ ('𐾰', '𐿄'),
('𐿠', '𐿶'),
('𑀀', '\u{11046}'),
- ('𑁦', '𑁯'),
+ ('𑁦', '𑁵'),
('\u{1107f}', '\u{110ba}'),
+ ('\u{110c2}', '\u{110c2}'),
('𑃐', '𑃨'),
('𑃰', '𑃹'),
('\u{11100}', '\u{11134}'),
('𑄶', '𑄿'),
- ('𑅄', '\u{11147}'),
+ ('𑅄', '𑅇'),
('𑅐', '\u{11173}'),
('𑅶', '𑅶'),
('\u{11180}', '𑇄'),
('\u{111c9}', '\u{111cc}'),
- ('\u{111ce}', '𑇚'),
+ ('𑇎', '𑇚'),
('𑇜', '𑇜'),
('𑈀', '𑈑'),
('𑈓', '\u{11237}'),
@@ -6497,7 +6666,7 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('\u{11370}', '\u{11374}'),
('𑐀', '𑑊'),
('𑑐', '𑑙'),
- ('\u{1145e}', '\u{11461}'),
+ ('\u{1145e}', '𑑡'),
('𑒀', '𑓅'),
('𑓇', '𑓇'),
('𑓐', '𑓙'),
@@ -6512,16 +6681,17 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('𑜀', '𑜚'),
('\u{1171d}', '\u{1172b}'),
('𑜰', '𑜹'),
+ ('𑝀', '𑝆'),
('𑠀', '\u{1183a}'),
('𑢠', '𑣩'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤵'),
+ ('𑤷', '𑤸'),
('\u{1193b}', '\u{11943}'),
- ('\u{11950}', '\u{11959}'),
+ ('𑥐', '𑥙'),
('𑦠', '𑦧'),
('𑦪', '\u{119d7}'),
('\u{119da}', '𑧡'),
@@ -6530,7 +6700,7 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('\u{11a47}', '\u{11a47}'),
('𑩐', '\u{11a99}'),
('𑪝', '𑪝'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '\u{11c36}'),
('\u{11c38}', '𑱀'),
@@ -6552,15 +6722,18 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('𑶓', '𑶘'),
('𑶠', '𑶩'),
('𑻠', '𑻶'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𒀀', '𒎙'),
('𒐀', '𒑮'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿰'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
('𖩠', '𖩩'),
+ ('𖩰', '𖪾'),
+ ('𖫀', '𖫉'),
('𖫐', '𖫭'),
('\u{16af0}', '\u{16af4}'),
('𖬀', '\u{16b36}'),
@@ -6574,11 +6747,14 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('\u{16f8f}', '𖾟'),
('𖿠', '𖿡'),
('𖿣', '\u{16fe4}'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('𛀀', '𛄞'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('𛀀', '𛄢'),
('𛅐', '𛅒'),
('𛅤', '𛅧'),
('𛅰', '𛋻'),
@@ -6587,6 +6763,8 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('𛲀', '𛲈'),
('𛲐', '𛲙'),
('\u{1bc9d}', '\u{1bc9e}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d165}', '\u{1d169}'),
('𝅭', '\u{1d172}'),
('\u{1d17b}', '\u{1d182}'),
@@ -6630,6 +6808,7 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('\u{1da84}', '\u{1da84}'),
('\u{1da9b}', '\u{1da9f}'),
('\u{1daa1}', '\u{1daaf}'),
+ ('𝼀', '𝼞'),
('\u{1e000}', '\u{1e006}'),
('\u{1e008}', '\u{1e018}'),
('\u{1e01b}', '\u{1e021}'),
@@ -6639,7 +6818,12 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('\u{1e130}', '𞄽'),
('𞅀', '𞅉'),
('𞅎', '𞅎'),
+ ('𞊐', '\u{1e2ae}'),
('𞋀', '𞋹'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('\u{1e8d0}', '\u{1e8d6}'),
('𞤀', '𞥋'),
@@ -6677,14 +6861,14 @@ pub const ID_CONTINUE: &'static [(char, char)] = &[
('𞺡', '𞺣'),
('𞺥', '𞺩'),
('𞺫', '𞺻'),
- ('\u{1fbf0}', '\u{1fbf9}'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('🯰', '🯹'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
('\u{e0100}', '\u{e01ef}'),
];
@@ -6738,8 +6922,9 @@ pub const ID_START: &'static [(char, char)] = &[
('ࠨ', 'ࠨ'),
('ࡀ', 'ࡘ'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
+ ('ࡰ', 'ࢇ'),
+ ('ࢉ', 'ࢎ'),
+ ('ࢠ', 'ࣉ'),
('ऄ', 'ह'),
('ऽ', 'ऽ'),
('ॐ', 'ॐ'),
@@ -6804,6 +6989,7 @@ pub const ID_START: &'static [(char, char)] = &[
('ప', 'హ'),
('ఽ', 'ఽ'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', 'ౡ'),
('ಀ', 'ಀ'),
('ಅ', 'ಌ'),
@@ -6812,10 +6998,10 @@ pub const ID_START: &'static [(char, char)] = &[
('ಪ', 'ಳ'),
('ವ', 'ಹ'),
('ಽ', 'ಽ'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', 'ೡ'),
('ೱ', 'ೲ'),
- ('\u{d04}', 'ഌ'),
+ ('ഄ', 'ഌ'),
('എ', 'ഐ'),
('ഒ', 'ഺ'),
('ഽ', 'ഽ'),
@@ -6883,9 +7069,8 @@ pub const ID_START: &'static [(char, char)] = &[
('ᚁ', 'ᚚ'),
('ᚠ', 'ᛪ'),
('ᛮ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', 'ᜑ'),
- ('ᜠ', 'ᜱ'),
+ ('ᜀ', 'ᜑ'),
+ ('ᜟ', 'ᜱ'),
('ᝀ', 'ᝑ'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -6905,7 +7090,7 @@ pub const ID_START: &'static [(char, char)] = &[
('ᨠ', 'ᩔ'),
('ᪧ', 'ᪧ'),
('ᬅ', 'ᬳ'),
- ('ᭅ', 'ᭋ'),
+ ('ᭅ', 'ᭌ'),
('ᮃ', 'ᮠ'),
('ᮮ', 'ᮯ'),
('ᮺ', 'ᯥ'),
@@ -6955,9 +7140,7 @@ pub const ID_START: &'static [(char, char)] = &[
('ⅅ', 'ⅉ'),
('ⅎ', 'ⅎ'),
('Ⅰ', 'ↈ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⳤ'),
+ ('Ⰰ', 'ⳤ'),
('Ⳬ', 'ⳮ'),
('Ⳳ', 'ⳳ'),
('ⴀ', 'ⴥ'),
@@ -6984,11 +7167,10 @@ pub const ID_START: &'static [(char, char)] = &[
('ー', 'ヿ'),
('ㄅ', 'ㄯ'),
('ㄱ', 'ㆎ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('ㇰ', 'ㇿ'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
- ('ꀀ', 'ꒌ'),
+ ('㐀', '䶿'),
+ ('一', 'ꒌ'),
('ꓐ', 'ꓽ'),
('ꔀ', 'ꘌ'),
('ꘐ', 'ꘟ'),
@@ -6998,9 +7180,11 @@ pub const ID_START: &'static [(char, char)] = &[
('ꚠ', 'ꛯ'),
('ꜗ', 'ꜟ'),
('Ꜣ', 'ꞈ'),
- ('Ꞌ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꠁ'),
+ ('Ꞌ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꠁ'),
('ꠃ', 'ꠅ'),
('ꠇ', 'ꠊ'),
('ꠌ', 'ꠢ'),
@@ -7037,7 +7221,7 @@ pub const ID_START: &'static [(char, char)] = &[
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
('ꬰ', 'ꭚ'),
- ('ꭜ', '\u{ab69}'),
+ ('ꭜ', 'ꭩ'),
('ꭰ', 'ꯢ'),
('가', '힣'),
('ힰ', 'ퟆ'),
@@ -7089,9 +7273,20 @@ pub const ID_START: &'static [(char, char)] = &[
('𐓘', '𐓻'),
('𐔀', '𐔧'),
('𐔰', '𐕣'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐘀', '𐜶'),
('𐝀', '𐝕'),
('𐝠', '𐝧'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐠀', '𐠅'),
('𐠈', '𐠈'),
('𐠊', '𐠵'),
@@ -7122,19 +7317,22 @@ pub const ID_START: &'static [(char, char)] = &[
('𐲀', '𐲲'),
('𐳀', '𐳲'),
('𐴀', '𐴣'),
- ('\u{10e80}', '\u{10ea9}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺀', '𐺩'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼜'),
('𐼧', '𐼧'),
('𐼰', '𐽅'),
- ('\u{10fb0}', '\u{10fc4}'),
+ ('𐽰', '𐾁'),
+ ('𐾰', '𐿄'),
('𐿠', '𐿶'),
('𑀃', '𑀷'),
+ ('𑁱', '𑁲'),
+ ('𑁵', '𑁵'),
('𑂃', '𑂯'),
('𑃐', '𑃨'),
('𑄃', '𑄦'),
('𑅄', '𑅄'),
- ('\u{11147}', '\u{11147}'),
+ ('𑅇', '𑅇'),
('𑅐', '𑅲'),
('𑅶', '𑅶'),
('𑆃', '𑆲'),
@@ -7160,7 +7358,7 @@ pub const ID_START: &'static [(char, char)] = &[
('𑍝', '𑍡'),
('𑐀', '𑐴'),
('𑑇', '𑑊'),
- ('𑑟', '\u{11461}'),
+ ('𑑟', '𑑡'),
('𑒀', '𑒯'),
('𑓄', '𑓅'),
('𑓇', '𑓇'),
@@ -7171,15 +7369,16 @@ pub const ID_START: &'static [(char, char)] = &[
('𑚀', '𑚪'),
('𑚸', '𑚸'),
('𑜀', '𑜚'),
+ ('𑝀', '𑝆'),
('𑠀', '𑠫'),
('𑢠', '𑣟'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{1192f}'),
- ('\u{1193f}', '\u{1193f}'),
- ('\u{11941}', '\u{11941}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤯'),
+ ('𑤿', '𑤿'),
+ ('𑥁', '𑥁'),
('𑦠', '𑦧'),
('𑦪', '𑧐'),
('𑧡', '𑧡'),
@@ -7190,7 +7389,7 @@ pub const ID_START: &'static [(char, char)] = &[
('𑩐', '𑩐'),
('𑩜', '𑪉'),
('𑪝', '𑪝'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '𑰮'),
('𑱀', '𑱀'),
@@ -7204,14 +7403,16 @@ pub const ID_START: &'static [(char, char)] = &[
('𑵪', '𑶉'),
('𑶘', '𑶘'),
('𑻠', '𑻲'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𒀀', '𒎙'),
('𒐀', '𒑮'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿰'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
+ ('𖩰', '𖪾'),
('𖫐', '𖫭'),
('𖬀', '𖬯'),
('𖭀', '𖭃'),
@@ -7224,9 +7425,12 @@ pub const ID_START: &'static [(char, char)] = &[
('𖿠', '𖿡'),
('𖿣', '𖿣'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('𛀀', '𛄞'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('𛀀', '𛄢'),
('𛅐', '𛅒'),
('𛅤', '𛅧'),
('𛅰', '𛋻'),
@@ -7264,10 +7468,16 @@ pub const ID_START: &'static [(char, char)] = &[
('𝞊', '𝞨'),
('𝞪', '𝟂'),
('𝟄', '𝟋'),
+ ('𝼀', '𝼞'),
('𞄀', '𞄬'),
('𞄷', '𞄽'),
('𞅎', '𞅎'),
+ ('𞊐', '𞊭'),
('𞋀', '𞋫'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('𞤀', '𞥃'),
('𞥋', '𞥋'),
@@ -7304,35 +7514,35 @@ pub const ID_START: &'static [(char, char)] = &[
('𞺡', '𞺣'),
('𞺥', '𞺩'),
('𞺫', '𞺻'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
pub const IDEOGRAPHIC: &'static [(char, char)] = &[
('〆', '〇'),
('〡', '〩'),
('〸', '〺'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
+ ('㐀', '䶿'),
+ ('一', '鿿'),
('豈', '舘'),
('並', '龎'),
('\u{16fe4}', '\u{16fe4}'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
('𛅰', '𛋻'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
pub const JOIN_CONTROL: &'static [(char, char)] = &[('\u{200c}', '\u{200d}')];
@@ -7787,7 +7997,7 @@ pub const LOWERCASE: &'static [(char, char)] = &[
('ⅰ', 'ⅿ'),
('ↄ', 'ↄ'),
('ⓐ', 'ⓩ'),
- ('ⰰ', 'ⱞ'),
+ ('ⰰ', 'ⱟ'),
('ⱡ', 'ⱡ'),
('ⱥ', 'ⱦ'),
('ⱨ', 'ⱨ'),
@@ -7955,19 +8165,33 @@ pub const LOWERCASE: &'static [(char, char)] = &[
('ꞻ', 'ꞻ'),
('ꞽ', 'ꞽ'),
('ꞿ', 'ꞿ'),
+ ('ꟁ', 'ꟁ'),
('ꟃ', 'ꟃ'),
- ('\u{a7c8}', '\u{a7c8}'),
- ('\u{a7ca}', '\u{a7ca}'),
- ('\u{a7f6}', '\u{a7f6}'),
+ ('ꟈ', 'ꟈ'),
+ ('ꟊ', 'ꟊ'),
+ ('ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟕ'),
+ ('ꟗ', 'ꟗ'),
+ ('ꟙ', 'ꟙ'),
+ ('ꟶ', 'ꟶ'),
('ꟸ', 'ꟺ'),
('ꬰ', 'ꭚ'),
- ('ꭜ', '\u{ab68}'),
+ ('ꭜ', 'ꭨ'),
('ꭰ', 'ꮿ'),
('ff', 'st'),
('ﬓ', 'ﬗ'),
('a', 'z'),
('𐐨', '𐑏'),
('𐓘', '𐓻'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
+ ('𐞀', '𐞀'),
+ ('𐞃', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐳀', '𐳲'),
('𑣀', '𑣟'),
('𖹠', '𖹿'),
@@ -7999,6 +8223,8 @@ pub const LOWERCASE: &'static [(char, char)] = &[
('𝞪', '𝟂'),
('𝟄', '𝟉'),
('𝟋', '𝟋'),
+ ('𝼀', '𝼉'),
+ ('𝼋', '𝼞'),
('𞤢', '𞥃'),
];
@@ -8281,6 +8507,7 @@ pub const OTHER_ALPHABETIC: &'static [(char, char)] = &[
('ᩕ', '\u{1a5e}'),
('ᩡ', '\u{1a74}'),
('\u{1abf}', '\u{1ac0}'),
+ ('\u{1acc}', '\u{1ace}'),
('\u{1b00}', 'ᬄ'),
('\u{1b35}', 'ᭃ'),
('\u{1b80}', 'ᮂ'),
@@ -8325,14 +8552,16 @@ pub const OTHER_ALPHABETIC: &'static [(char, char)] = &[
('\u{10eab}', '\u{10eac}'),
('𑀀', '𑀂'),
('\u{11038}', '\u{11045}'),
+ ('\u{11073}', '\u{11074}'),
('𑂂', '𑂂'),
('𑂰', '𑂸'),
+ ('\u{110c2}', '\u{110c2}'),
('\u{11100}', '\u{11102}'),
('\u{11127}', '\u{11132}'),
('𑅅', '𑅆'),
('\u{11180}', '𑆂'),
('𑆳', '𑆿'),
- ('\u{111ce}', '\u{111cf}'),
+ ('𑇎', '\u{111cf}'),
('𑈬', '\u{11234}'),
('\u{11237}', '\u{11237}'),
('\u{1123e}', '\u{1123e}'),
@@ -8354,11 +8583,11 @@ pub const OTHER_ALPHABETIC: &'static [(char, char)] = &[
('\u{116ab}', '\u{116b5}'),
('\u{1171d}', '\u{1172a}'),
('𑠬', '𑠸'),
- ('\u{11930}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
+ ('\u{11930}', '𑤵'),
+ ('𑤷', '𑤸'),
('\u{1193b}', '\u{1193c}'),
- ('\u{11940}', '\u{11940}'),
- ('\u{11942}', '\u{11942}'),
+ ('𑥀', '𑥀'),
+ ('𑥂', '𑥂'),
('𑧑', '\u{119d7}'),
('\u{119da}', '𑧟'),
('𑧤', '𑧤'),
@@ -8384,7 +8613,7 @@ pub const OTHER_ALPHABETIC: &'static [(char, char)] = &[
('\u{16f4f}', '\u{16f4f}'),
('𖽑', '𖾇'),
('\u{16f8f}', '\u{16f92}'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('\u{1bc9e}', '\u{1bc9e}'),
('\u{1e000}', '\u{1e006}'),
('\u{1e008}', '\u{1e018}'),
@@ -8466,6 +8695,10 @@ pub const OTHER_LOWERCASE: &'static [(char, char)] = &[
('ꝰ', 'ꝰ'),
('ꟸ', 'ꟹ'),
('ꭜ', 'ꭟ'),
+ ('𐞀', '𐞀'),
+ ('𐞃', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
];
pub const OTHER_MATH: &'static [(char, char)] = &[
@@ -8651,13 +8884,14 @@ pub const PREPENDED_CONCATENATION_MARK: &'static [(char, char)] = &[
('\u{600}', '\u{605}'),
('\u{6dd}', '\u{6dd}'),
('\u{70f}', '\u{70f}'),
+ ('\u{890}', '\u{891}'),
('\u{8e2}', '\u{8e2}'),
('\u{110bd}', '\u{110bd}'),
('\u{110cd}', '\u{110cd}'),
];
pub const QUOTATION_MARK: &'static [(char, char)] = &[
- ('\"', '\"'),
+ ('"', '"'),
('\'', '\''),
('«', '«'),
('»', '»'),
@@ -8682,7 +8916,7 @@ pub const SENTENCE_TERMINAL: &'static [(char, char)] = &[
('.', '.'),
('?', '?'),
('։', '։'),
- ('؞', '؟'),
+ ('؝', '؟'),
('۔', '۔'),
('܀', '܂'),
('߹', '߹'),
@@ -8701,12 +8935,14 @@ pub const SENTENCE_TERMINAL: &'static [(char, char)] = &[
('᪨', '᪫'),
('᭚', '᭛'),
('᭞', '᭟'),
+ ('᭽', '᭾'),
('᰻', '᰼'),
('᱾', '᱿'),
('‼', '‽'),
('⁇', '⁉'),
('⸮', '⸮'),
('⸼', '⸼'),
+ ('⹓', '⹔'),
('。', '。'),
('꓿', '꓿'),
('꘎', '꘏'),
@@ -8727,6 +8963,7 @@ pub const SENTENCE_TERMINAL: &'static [(char, char)] = &[
('。', '。'),
('𐩖', '𐩗'),
('𐽕', '𐽙'),
+ ('𐾆', '𐾉'),
('𑁇', '𑁈'),
('𑂾', '𑃁'),
('𑅁', '𑅃'),
@@ -8741,8 +8978,8 @@ pub const SENTENCE_TERMINAL: &'static [(char, char)] = &[
('𑗉', '𑗗'),
('𑙁', '𑙂'),
('𑜼', '𑜾'),
- ('\u{11944}', '\u{11944}'),
- ('\u{11946}', '\u{11946}'),
+ ('𑥄', '𑥄'),
+ ('𑥆', '𑥆'),
('𑩂', '𑩃'),
('𑪛', '𑪜'),
('𑱁', '𑱂'),
@@ -8788,6 +9025,7 @@ pub const SOFT_DOTTED: &'static [(char, char)] = &[
('𝘪', '𝘫'),
('𝙞', '𝙟'),
('𝚒', '𝚓'),
+ ('𝼚', '𝼚'),
];
pub const TERMINAL_PUNCTUATION: &'static [(char, char)] = &[
@@ -8802,7 +9040,7 @@ pub const TERMINAL_PUNCTUATION: &'static [(char, char)] = &[
('׃', '׃'),
('،', '،'),
('؛', '؛'),
- ('؞', '؟'),
+ ('؝', '؟'),
('۔', '۔'),
('܀', '܊'),
('܌', '܌'),
@@ -8826,6 +9064,7 @@ pub const TERMINAL_PUNCTUATION: &'static [(char, char)] = &[
('᪨', '᪫'),
('᭚', '᭛'),
('᭝', '᭟'),
+ ('᭽', '᭾'),
('᰻', '᰿'),
('᱾', '᱿'),
('‼', '‽'),
@@ -8835,6 +9074,7 @@ pub const TERMINAL_PUNCTUATION: &'static [(char, char)] = &[
('⹁', '⹁'),
('⹌', '⹌'),
('⹎', '⹏'),
+ ('⹓', '⹔'),
('、', '。'),
('꓾', '꓿'),
('꘍', '꘏'),
@@ -8865,6 +9105,7 @@ pub const TERMINAL_PUNCTUATION: &'static [(char, char)] = &[
('𐬺', '𐬿'),
('𐮙', '𐮜'),
('𐽕', '𐽙'),
+ ('𐾆', '𐾉'),
('𑁇', '𑁍'),
('𑂾', '𑃁'),
('𑅁', '𑅃'),
@@ -8874,13 +9115,13 @@ pub const TERMINAL_PUNCTUATION: &'static [(char, char)] = &[
('𑈸', '𑈼'),
('𑊩', '𑊩'),
('𑑋', '𑑍'),
- ('\u{1145a}', '𑑛'),
+ ('𑑚', '𑑛'),
('𑗂', '𑗅'),
('𑗉', '𑗗'),
('𑙁', '𑙂'),
('𑜼', '𑜾'),
- ('\u{11944}', '\u{11944}'),
- ('\u{11946}', '\u{11946}'),
+ ('𑥄', '𑥄'),
+ ('𑥆', '𑥆'),
('𑩂', '𑩃'),
('𑪛', '𑪜'),
('𑪡', '𑪢'),
@@ -8898,8 +9139,8 @@ pub const TERMINAL_PUNCTUATION: &'static [(char, char)] = &[
];
pub const UNIFIED_IDEOGRAPH: &'static [(char, char)] = &[
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
+ ('㐀', '䶿'),
+ ('一', '鿿'),
('﨎', '﨏'),
('﨑', '﨑'),
('﨓', '﨔'),
@@ -8907,12 +9148,12 @@ pub const UNIFIED_IDEOGRAPH: &'static [(char, char)] = &[
('﨡', '﨡'),
('﨣', '﨤'),
('﨧', '﨩'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
pub const UPPERCASE: &'static [(char, char)] = &[
@@ -9349,7 +9590,7 @@ pub const UPPERCASE: &'static [(char, char)] = &[
('Ⅰ', 'Ⅿ'),
('Ↄ', 'Ↄ'),
('Ⓐ', 'Ⓩ'),
- ('Ⰰ', 'Ⱞ'),
+ ('Ⰰ', 'Ⱟ'),
('Ⱡ', 'Ⱡ'),
('Ɫ', 'Ɽ'),
('Ⱨ', 'Ⱨ'),
@@ -9514,13 +9755,21 @@ pub const UPPERCASE: &'static [(char, char)] = &[
('Ꞻ', 'Ꞻ'),
('Ꞽ', 'Ꞽ'),
('Ꞿ', 'Ꞿ'),
+ ('Ꟁ', 'Ꟁ'),
('Ꟃ', 'Ꟃ'),
- ('Ꞔ', '\u{a7c7}'),
- ('\u{a7c9}', '\u{a7c9}'),
- ('\u{a7f5}', '\u{a7f5}'),
+ ('Ꞔ', 'Ꟈ'),
+ ('Ꟊ', 'Ꟊ'),
+ ('Ꟑ', 'Ꟑ'),
+ ('Ꟗ', 'Ꟗ'),
+ ('Ꟙ', 'Ꟙ'),
+ ('Ꟶ', 'Ꟶ'),
('A', 'Z'),
('𐐀', '𐐧'),
('𐒰', '𐓓'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
('𐲀', '𐲲'),
('𑢠', '𑢿'),
('𖹀', '𖹟'),
@@ -9563,6 +9812,7 @@ pub const UPPERCASE: &'static [(char, char)] = &[
pub const VARIATION_SELECTOR: &'static [(char, char)] = &[
('\u{180b}', '\u{180d}'),
+ ('\u{180f}', '\u{180f}'),
('\u{fe00}', '\u{fe0f}'),
('\u{e0100}', '\u{e01ef}'),
];
@@ -9632,9 +9882,9 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('ࠀ', '\u{82d}'),
('ࡀ', '\u{85b}'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('ࡰ', 'ࢇ'),
+ ('ࢉ', 'ࢎ'),
+ ('\u{898}', '\u{8e1}'),
('\u{8e3}', '\u{963}'),
('०', '९'),
('ॱ', 'ঃ'),
@@ -9718,11 +9968,12 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('ఎ', 'ఐ'),
('ఒ', 'న'),
('ప', 'హ'),
- ('ఽ', 'ౄ'),
+ ('\u{c3c}', 'ౄ'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
('\u{c55}', '\u{c56}'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', '\u{c63}'),
('౦', '౯'),
('ಀ', 'ಃ'),
@@ -9735,7 +9986,7 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('\u{cc6}', 'ೈ'),
('ೊ', '\u{ccd}'),
('\u{cd5}', '\u{cd6}'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', '\u{ce3}'),
('೦', '೯'),
('ೱ', 'ೲ'),
@@ -9818,9 +10069,8 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('ᚁ', 'ᚚ'),
('ᚠ', 'ᛪ'),
('ᛮ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', '\u{1714}'),
- ('ᜠ', '\u{1734}'),
+ ('ᜀ', '᜕'),
+ ('ᜟ', '᜴'),
('ᝀ', '\u{1753}'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -9830,7 +10080,7 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('ៜ', '\u{17dd}'),
('០', '៩'),
('\u{180b}', '\u{180d}'),
- ('᠐', '᠙'),
+ ('\u{180f}', '᠙'),
('ᠠ', 'ᡸ'),
('ᢀ', 'ᢪ'),
('ᢰ', 'ᣵ'),
@@ -9849,8 +10099,8 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('᪐', '᪙'),
('ᪧ', 'ᪧ'),
('\u{1ab0}', '\u{1abd}'),
- ('\u{1abf}', '\u{1ac0}'),
- ('\u{1b00}', 'ᭋ'),
+ ('\u{1abf}', '\u{1ace}'),
+ ('\u{1b00}', 'ᭌ'),
('᭐', '᭙'),
('\u{1b6b}', '\u{1b73}'),
('\u{1b80}', '᯳'),
@@ -9862,8 +10112,7 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('Ჽ', 'Ჿ'),
('\u{1cd0}', '\u{1cd2}'),
('\u{1cd4}', 'ᳺ'),
- ('ᴀ', '\u{1df9}'),
- ('\u{1dfb}', 'ἕ'),
+ ('ᴀ', 'ἕ'),
('Ἐ', 'Ἕ'),
('ἠ', 'ὅ'),
('Ὀ', 'Ὅ'),
@@ -9903,9 +10152,7 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('ⅅ', 'ⅉ'),
('ⅎ', 'ⅎ'),
('Ⅰ', 'ↈ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⳤ'),
+ ('Ⰰ', 'ⳤ'),
('Ⳬ', 'ⳳ'),
('ⴀ', 'ⴥ'),
('ⴧ', 'ⴧ'),
@@ -9933,11 +10180,10 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('ー', 'ヿ'),
('ㄅ', 'ㄯ'),
('ㄱ', 'ㆎ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('ㇰ', 'ㇿ'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
- ('ꀀ', 'ꒌ'),
+ ('㐀', '䶿'),
+ ('一', 'ꒌ'),
('ꓐ', 'ꓽ'),
('ꔀ', 'ꘌ'),
('ꘐ', 'ꘫ'),
@@ -9946,9 +10192,11 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('ꙿ', '\u{a6f1}'),
('ꜗ', 'ꜟ'),
('Ꜣ', 'ꞈ'),
- ('Ꞌ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꠧ'),
+ ('Ꞌ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꠧ'),
('\u{a82c}', '\u{a82c}'),
('ꡀ', 'ꡳ'),
('ꢀ', '\u{a8c5}'),
@@ -9975,7 +10223,7 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
('ꬰ', 'ꭚ'),
- ('ꭜ', '\u{ab69}'),
+ ('ꭜ', 'ꭩ'),
('ꭰ', 'ꯪ'),
('꯬', '\u{abed}'),
('꯰', '꯹'),
@@ -10043,9 +10291,20 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('𐓘', '𐓻'),
('𐔀', '𐔧'),
('𐔰', '𐕣'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐘀', '𐜶'),
('𐝀', '𐝕'),
('𐝠', '𐝧'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐠀', '𐠅'),
('𐠈', '𐠈'),
('𐠊', '𐠵'),
@@ -10080,27 +10339,29 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('𐳀', '𐳲'),
('𐴀', '\u{10d27}'),
('𐴰', '𐴹'),
- ('\u{10e80}', '\u{10ea9}'),
+ ('𐺀', '𐺩'),
('\u{10eab}', '\u{10eac}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼜'),
('𐼧', '𐼧'),
('𐼰', '\u{10f50}'),
- ('\u{10fb0}', '\u{10fc4}'),
+ ('𐽰', '\u{10f85}'),
+ ('𐾰', '𐿄'),
('𐿠', '𐿶'),
('𑀀', '\u{11046}'),
- ('𑁦', '𑁯'),
+ ('𑁦', '𑁵'),
('\u{1107f}', '\u{110ba}'),
+ ('\u{110c2}', '\u{110c2}'),
('𑃐', '𑃨'),
('𑃰', '𑃹'),
('\u{11100}', '\u{11134}'),
('𑄶', '𑄿'),
- ('𑅄', '\u{11147}'),
+ ('𑅄', '𑅇'),
('𑅐', '\u{11173}'),
('𑅶', '𑅶'),
('\u{11180}', '𑇄'),
('\u{111c9}', '\u{111cc}'),
- ('\u{111ce}', '𑇚'),
+ ('𑇎', '𑇚'),
('𑇜', '𑇜'),
('𑈀', '𑈑'),
('𑈓', '\u{11237}'),
@@ -10129,7 +10390,7 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('\u{11370}', '\u{11374}'),
('𑐀', '𑑊'),
('𑑐', '𑑙'),
- ('\u{1145e}', '\u{11461}'),
+ ('\u{1145e}', '𑑡'),
('𑒀', '𑓅'),
('𑓇', '𑓇'),
('𑓐', '𑓙'),
@@ -10144,16 +10405,17 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('𑜀', '𑜚'),
('\u{1171d}', '\u{1172b}'),
('𑜰', '𑜹'),
+ ('𑝀', '𑝆'),
('𑠀', '\u{1183a}'),
('𑢠', '𑣩'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤵'),
+ ('𑤷', '𑤸'),
('\u{1193b}', '\u{11943}'),
- ('\u{11950}', '\u{11959}'),
+ ('𑥐', '𑥙'),
('𑦠', '𑦧'),
('𑦪', '\u{119d7}'),
('\u{119da}', '𑧡'),
@@ -10162,7 +10424,7 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('\u{11a47}', '\u{11a47}'),
('𑩐', '\u{11a99}'),
('𑪝', '𑪝'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '\u{11c36}'),
('\u{11c38}', '𑱀'),
@@ -10184,15 +10446,18 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('𑶓', '𑶘'),
('𑶠', '𑶩'),
('𑻠', '𑻶'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𒀀', '𒎙'),
('𒐀', '𒑮'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿰'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
('𖩠', '𖩩'),
+ ('𖩰', '𖪾'),
+ ('𖫀', '𖫉'),
('𖫐', '𖫭'),
('\u{16af0}', '\u{16af4}'),
('𖬀', '\u{16b36}'),
@@ -10206,11 +10471,14 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('\u{16f8f}', '𖾟'),
('𖿠', '𖿡'),
('𖿣', '\u{16fe4}'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('𛀀', '𛄞'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('𛀀', '𛄢'),
('𛅐', '𛅒'),
('𛅤', '𛅧'),
('𛅰', '𛋻'),
@@ -10219,6 +10487,8 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('𛲀', '𛲈'),
('𛲐', '𛲙'),
('\u{1bc9d}', '\u{1bc9e}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d165}', '\u{1d169}'),
('𝅭', '\u{1d172}'),
('\u{1d17b}', '\u{1d182}'),
@@ -10262,6 +10532,7 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('\u{1da84}', '\u{1da84}'),
('\u{1da9b}', '\u{1da9f}'),
('\u{1daa1}', '\u{1daaf}'),
+ ('𝼀', '𝼞'),
('\u{1e000}', '\u{1e006}'),
('\u{1e008}', '\u{1e018}'),
('\u{1e01b}', '\u{1e021}'),
@@ -10271,7 +10542,12 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('\u{1e130}', '𞄽'),
('𞅀', '𞅉'),
('𞅎', '𞅎'),
+ ('𞊐', '\u{1e2ae}'),
('𞋀', '𞋹'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('\u{1e8d0}', '\u{1e8d6}'),
('𞤀', '𞥋'),
@@ -10309,14 +10585,14 @@ pub const XID_CONTINUE: &'static [(char, char)] = &[
('𞺡', '𞺣'),
('𞺥', '𞺩'),
('𞺫', '𞺻'),
- ('\u{1fbf0}', '\u{1fbf9}'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('🯰', '🯹'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
('\u{e0100}', '\u{e01ef}'),
];
@@ -10370,8 +10646,9 @@ pub const XID_START: &'static [(char, char)] = &[
('ࠨ', 'ࠨ'),
('ࡀ', 'ࡘ'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
+ ('ࡰ', 'ࢇ'),
+ ('ࢉ', 'ࢎ'),
+ ('ࢠ', 'ࣉ'),
('ऄ', 'ह'),
('ऽ', 'ऽ'),
('ॐ', 'ॐ'),
@@ -10436,6 +10713,7 @@ pub const XID_START: &'static [(char, char)] = &[
('ప', 'హ'),
('ఽ', 'ఽ'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', 'ౡ'),
('ಀ', 'ಀ'),
('ಅ', 'ಌ'),
@@ -10444,10 +10722,10 @@ pub const XID_START: &'static [(char, char)] = &[
('ಪ', 'ಳ'),
('ವ', 'ಹ'),
('ಽ', 'ಽ'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', 'ೡ'),
('ೱ', 'ೲ'),
- ('\u{d04}', 'ഌ'),
+ ('ഄ', 'ഌ'),
('എ', 'ഐ'),
('ഒ', 'ഺ'),
('ഽ', 'ഽ'),
@@ -10515,9 +10793,8 @@ pub const XID_START: &'static [(char, char)] = &[
('ᚁ', 'ᚚ'),
('ᚠ', 'ᛪ'),
('ᛮ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', 'ᜑ'),
- ('ᜠ', 'ᜱ'),
+ ('ᜀ', 'ᜑ'),
+ ('ᜟ', 'ᜱ'),
('ᝀ', 'ᝑ'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -10537,7 +10814,7 @@ pub const XID_START: &'static [(char, char)] = &[
('ᨠ', 'ᩔ'),
('ᪧ', 'ᪧ'),
('ᬅ', 'ᬳ'),
- ('ᭅ', 'ᭋ'),
+ ('ᭅ', 'ᭌ'),
('ᮃ', 'ᮠ'),
('ᮮ', 'ᮯ'),
('ᮺ', 'ᯥ'),
@@ -10587,9 +10864,7 @@ pub const XID_START: &'static [(char, char)] = &[
('ⅅ', 'ⅉ'),
('ⅎ', 'ⅎ'),
('Ⅰ', 'ↈ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⳤ'),
+ ('Ⰰ', 'ⳤ'),
('Ⳬ', 'ⳮ'),
('Ⳳ', 'ⳳ'),
('ⴀ', 'ⴥ'),
@@ -10616,11 +10891,10 @@ pub const XID_START: &'static [(char, char)] = &[
('ー', 'ヿ'),
('ㄅ', 'ㄯ'),
('ㄱ', 'ㆎ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('ㇰ', 'ㇿ'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
- ('ꀀ', 'ꒌ'),
+ ('㐀', '䶿'),
+ ('一', 'ꒌ'),
('ꓐ', 'ꓽ'),
('ꔀ', 'ꘌ'),
('ꘐ', 'ꘟ'),
@@ -10630,9 +10904,11 @@ pub const XID_START: &'static [(char, char)] = &[
('ꚠ', 'ꛯ'),
('ꜗ', 'ꜟ'),
('Ꜣ', 'ꞈ'),
- ('Ꞌ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꠁ'),
+ ('Ꞌ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꠁ'),
('ꠃ', 'ꠅ'),
('ꠇ', 'ꠊ'),
('ꠌ', 'ꠢ'),
@@ -10669,7 +10945,7 @@ pub const XID_START: &'static [(char, char)] = &[
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
('ꬰ', 'ꭚ'),
- ('ꭜ', '\u{ab69}'),
+ ('ꭜ', 'ꭩ'),
('ꭰ', 'ꯢ'),
('가', '힣'),
('ힰ', 'ퟆ'),
@@ -10728,9 +11004,20 @@ pub const XID_START: &'static [(char, char)] = &[
('𐓘', '𐓻'),
('𐔀', '𐔧'),
('𐔰', '𐕣'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐘀', '𐜶'),
('𐝀', '𐝕'),
('𐝠', '𐝧'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐠀', '𐠅'),
('𐠈', '𐠈'),
('𐠊', '𐠵'),
@@ -10761,19 +11048,22 @@ pub const XID_START: &'static [(char, char)] = &[
('𐲀', '𐲲'),
('𐳀', '𐳲'),
('𐴀', '𐴣'),
- ('\u{10e80}', '\u{10ea9}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺀', '𐺩'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼜'),
('𐼧', '𐼧'),
('𐼰', '𐽅'),
- ('\u{10fb0}', '\u{10fc4}'),
+ ('𐽰', '𐾁'),
+ ('𐾰', '𐿄'),
('𐿠', '𐿶'),
('𑀃', '𑀷'),
+ ('𑁱', '𑁲'),
+ ('𑁵', '𑁵'),
('𑂃', '𑂯'),
('𑃐', '𑃨'),
('𑄃', '𑄦'),
('𑅄', '𑅄'),
- ('\u{11147}', '\u{11147}'),
+ ('𑅇', '𑅇'),
('𑅐', '𑅲'),
('𑅶', '𑅶'),
('𑆃', '𑆲'),
@@ -10799,7 +11089,7 @@ pub const XID_START: &'static [(char, char)] = &[
('𑍝', '𑍡'),
('𑐀', '𑐴'),
('𑑇', '𑑊'),
- ('𑑟', '\u{11461}'),
+ ('𑑟', '𑑡'),
('𑒀', '𑒯'),
('𑓄', '𑓅'),
('𑓇', '𑓇'),
@@ -10810,15 +11100,16 @@ pub const XID_START: &'static [(char, char)] = &[
('𑚀', '𑚪'),
('𑚸', '𑚸'),
('𑜀', '𑜚'),
+ ('𑝀', '𑝆'),
('𑠀', '𑠫'),
('𑢠', '𑣟'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{1192f}'),
- ('\u{1193f}', '\u{1193f}'),
- ('\u{11941}', '\u{11941}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤯'),
+ ('𑤿', '𑤿'),
+ ('𑥁', '𑥁'),
('𑦠', '𑦧'),
('𑦪', '𑧐'),
('𑧡', '𑧡'),
@@ -10829,7 +11120,7 @@ pub const XID_START: &'static [(char, char)] = &[
('𑩐', '𑩐'),
('𑩜', '𑪉'),
('𑪝', '𑪝'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '𑰮'),
('𑱀', '𑱀'),
@@ -10843,14 +11134,16 @@ pub const XID_START: &'static [(char, char)] = &[
('𑵪', '𑶉'),
('𑶘', '𑶘'),
('𑻠', '𑻲'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𒀀', '𒎙'),
('𒐀', '𒑮'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿰'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
+ ('𖩰', '𖪾'),
('𖫐', '𖫭'),
('𖬀', '𖬯'),
('𖭀', '𖭃'),
@@ -10863,9 +11156,12 @@ pub const XID_START: &'static [(char, char)] = &[
('𖿠', '𖿡'),
('𖿣', '𖿣'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('𛀀', '𛄞'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('𛀀', '𛄢'),
('𛅐', '𛅒'),
('𛅤', '𛅧'),
('𛅰', '𛋻'),
@@ -10903,10 +11199,16 @@ pub const XID_START: &'static [(char, char)] = &[
('𝞊', '𝞨'),
('𝞪', '𝟂'),
('𝟄', '𝟋'),
+ ('𝼀', '𝼞'),
('𞄀', '𞄬'),
('𞄷', '𞄽'),
('𞅎', '𞅎'),
+ ('𞊐', '𞊭'),
('𞋀', '𞋫'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('𞤀', '𞥃'),
('𞥋', '𞥋'),
@@ -10943,11 +11245,11 @@ pub const XID_START: &'static [(char, char)] = &[
('𞺡', '𞺣'),
('𞺥', '𞺩'),
('𞺫', '𞺻'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
diff --git a/vendor/regex-syntax/src/unicode_tables/property_names.rs b/vendor/regex-syntax/src/unicode_tables/property_names.rs
index 6393df2f8..3fce1bf03 100644
--- a/vendor/regex-syntax/src/unicode_tables/property_names.rs
+++ b/vendor/regex-syntax/src/unicode_tables/property_names.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate property-names ucd-13.0.0
+// ucd-generate property-names /tmp/ucd
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const PROPERTY_NAMES: &'static [(&'static str, &'static str)] = &[
("age", "Age"),
diff --git a/vendor/regex-syntax/src/unicode_tables/property_values.rs b/vendor/regex-syntax/src/unicode_tables/property_values.rs
index c46653a7b..08a91477b 100644
--- a/vendor/regex-syntax/src/unicode_tables/property_values.rs
+++ b/vendor/regex-syntax/src/unicode_tables/property_values.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate property-values ucd-13.0.0 --include gc,script,scx,age,gcb,wb,sb
+// ucd-generate property-values /tmp/ucd --include gc,script,scx,age,gcb,wb,sb
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const PROPERTY_VALUES: &'static [(
&'static str,
@@ -19,6 +19,7 @@ pub const PROPERTY_VALUES: &'static [(
("12.0", "V12_0"),
("12.1", "V12_1"),
("13.0", "V13_0"),
+ ("14.0", "V14_0"),
("2.0", "V2_0"),
("2.1", "V2_1"),
("3.0", "V3_0"),
@@ -44,6 +45,7 @@ pub const PROPERTY_VALUES: &'static [(
("v120", "V12_0"),
("v121", "V12_1"),
("v130", "V13_0"),
+ ("v140", "V14_0"),
("v20", "V2_0"),
("v21", "V2_1"),
("v30", "V3_0"),
@@ -233,9 +235,11 @@ pub const PROPERTY_VALUES: &'static [(
("common", "Common"),
("copt", "Coptic"),
("coptic", "Coptic"),
+ ("cpmn", "Cypro_Minoan"),
("cprt", "Cypriot"),
("cuneiform", "Cuneiform"),
("cypriot", "Cypriot"),
+ ("cyprominoan", "Cypro_Minoan"),
("cyrillic", "Cyrillic"),
("cyrl", "Cyrillic"),
("deseret", "Deseret"),
@@ -391,6 +395,7 @@ pub const PROPERTY_VALUES: &'static [(
("oldsogdian", "Old_Sogdian"),
("oldsoutharabian", "Old_South_Arabian"),
("oldturkic", "Old_Turkic"),
+ ("olduyghur", "Old_Uyghur"),
("oriya", "Oriya"),
("orkh", "Old_Turkic"),
("orya", "Oriya"),
@@ -398,6 +403,7 @@ pub const PROPERTY_VALUES: &'static [(
("osge", "Osage"),
("osma", "Osmanya"),
("osmanya", "Osmanya"),
+ ("ougr", "Old_Uyghur"),
("pahawhhmong", "Pahawh_Hmong"),
("palm", "Palmyrene"),
("palmyrene", "Palmyrene"),
@@ -462,6 +468,7 @@ pub const PROPERTY_VALUES: &'static [(
("tamil", "Tamil"),
("taml", "Tamil"),
("tang", "Tangut"),
+ ("tangsa", "Tangsa"),
("tangut", "Tangut"),
("tavt", "Tai_Viet"),
("telu", "Telugu"),
@@ -476,11 +483,15 @@ pub const PROPERTY_VALUES: &'static [(
("tifinagh", "Tifinagh"),
("tirh", "Tirhuta"),
("tirhuta", "Tirhuta"),
+ ("tnsa", "Tangsa"),
+ ("toto", "Toto"),
("ugar", "Ugaritic"),
("ugaritic", "Ugaritic"),
("unknown", "Unknown"),
("vai", "Vai"),
("vaii", "Vai"),
+ ("vith", "Vithkuqi"),
+ ("vithkuqi", "Vithkuqi"),
("wancho", "Wancho"),
("wara", "Warang_Citi"),
("warangciti", "Warang_Citi"),
@@ -550,9 +561,11 @@ pub const PROPERTY_VALUES: &'static [(
("common", "Common"),
("copt", "Coptic"),
("coptic", "Coptic"),
+ ("cpmn", "Cypro_Minoan"),
("cprt", "Cypriot"),
("cuneiform", "Cuneiform"),
("cypriot", "Cypriot"),
+ ("cyprominoan", "Cypro_Minoan"),
("cyrillic", "Cyrillic"),
("cyrl", "Cyrillic"),
("deseret", "Deseret"),
@@ -708,6 +721,7 @@ pub const PROPERTY_VALUES: &'static [(
("oldsogdian", "Old_Sogdian"),
("oldsoutharabian", "Old_South_Arabian"),
("oldturkic", "Old_Turkic"),
+ ("olduyghur", "Old_Uyghur"),
("oriya", "Oriya"),
("orkh", "Old_Turkic"),
("orya", "Oriya"),
@@ -715,6 +729,7 @@ pub const PROPERTY_VALUES: &'static [(
("osge", "Osage"),
("osma", "Osmanya"),
("osmanya", "Osmanya"),
+ ("ougr", "Old_Uyghur"),
("pahawhhmong", "Pahawh_Hmong"),
("palm", "Palmyrene"),
("palmyrene", "Palmyrene"),
@@ -779,6 +794,7 @@ pub const PROPERTY_VALUES: &'static [(
("tamil", "Tamil"),
("taml", "Tamil"),
("tang", "Tangut"),
+ ("tangsa", "Tangsa"),
("tangut", "Tangut"),
("tavt", "Tai_Viet"),
("telu", "Telugu"),
@@ -793,11 +809,15 @@ pub const PROPERTY_VALUES: &'static [(
("tifinagh", "Tifinagh"),
("tirh", "Tirhuta"),
("tirhuta", "Tirhuta"),
+ ("tnsa", "Tangsa"),
+ ("toto", "Toto"),
("ugar", "Ugaritic"),
("ugaritic", "Ugaritic"),
("unknown", "Unknown"),
("vai", "Vai"),
("vaii", "Vai"),
+ ("vith", "Vithkuqi"),
+ ("vithkuqi", "Vithkuqi"),
("wancho", "Wancho"),
("wara", "Warang_Citi"),
("warangciti", "Warang_Citi"),
diff --git a/vendor/regex-syntax/src/unicode_tables/script.rs b/vendor/regex-syntax/src/unicode_tables/script.rs
index cd86cba0d..3327b76ae 100644
--- a/vendor/regex-syntax/src/unicode_tables/script.rs
+++ b/vendor/regex-syntax/src/unicode_tables/script.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate script ucd-13.0.0 --chars
+// ucd-generate script /tmp/ucd --chars
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Adlam", ADLAM),
@@ -35,6 +35,7 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Coptic", COPTIC),
("Cuneiform", CUNEIFORM),
("Cypriot", CYPRIOT),
+ ("Cypro_Minoan", CYPRO_MINOAN),
("Cyrillic", CYRILLIC),
("Deseret", DESERET),
("Devanagari", DEVANAGARI),
@@ -118,6 +119,7 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Old_Sogdian", OLD_SOGDIAN),
("Old_South_Arabian", OLD_SOUTH_ARABIAN),
("Old_Turkic", OLD_TURKIC),
+ ("Old_Uyghur", OLD_UYGHUR),
("Oriya", ORIYA),
("Osage", OSAGE),
("Osmanya", OSMANYA),
@@ -149,6 +151,7 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Tai_Viet", TAI_VIET),
("Takri", TAKRI),
("Tamil", TAMIL),
+ ("Tangsa", TANGSA),
("Tangut", TANGUT),
("Telugu", TELUGU),
("Thaana", THAANA),
@@ -156,8 +159,10 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Tibetan", TIBETAN),
("Tifinagh", TIFINAGH),
("Tirhuta", TIRHUTA),
+ ("Toto", TOTO),
("Ugaritic", UGARITIC),
("Vai", VAI),
+ ("Vithkuqi", VITHKUQI),
("Wancho", WANCHO),
("Warang_Citi", WARANG_CITI),
("Yezidi", YEZIDI),
@@ -169,7 +174,7 @@ pub const ADLAM: &'static [(char, char)] =
&[('𞤀', '𞥋'), ('𞥐', '𞥙'), ('𞥞', '𞥟')];
pub const AHOM: &'static [(char, char)] =
- &[('𑜀', '𑜚'), ('\u{1171d}', '\u{1172b}'), ('𑜰', '𑜿')];
+ &[('𑜀', '𑜚'), ('\u{1171d}', '\u{1172b}'), ('𑜰', '𑝆')];
pub const ANATOLIAN_HIEROGLYPHS: &'static [(char, char)] = &[('𔐀', '𔙆')];
@@ -177,23 +182,23 @@ pub const ARABIC: &'static [(char, char)] = &[
('\u{600}', '\u{604}'),
('؆', '؋'),
('؍', '\u{61a}'),
- ('\u{61c}', '\u{61c}'),
- ('؞', '؞'),
+ ('\u{61c}', '؞'),
('ؠ', 'ؿ'),
('ف', 'ي'),
('\u{656}', 'ٯ'),
('ٱ', '\u{6dc}'),
('۞', 'ۿ'),
('ݐ', 'ݿ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('ࡰ', 'ࢎ'),
+ ('\u{890}', '\u{891}'),
+ ('\u{898}', '\u{8e1}'),
('\u{8e3}', '\u{8ff}'),
- ('ﭐ', '﯁'),
+ ('ﭐ', '﯂'),
('ﯓ', 'ﴽ'),
- ('ﵐ', 'ﶏ'),
+ ('﵀', 'ﶏ'),
('ﶒ', 'ﷇ'),
- ('ﷰ', '﷽'),
+ ('﷏', '﷏'),
+ ('ﷰ', '﷿'),
('ﹰ', 'ﹴ'),
('ﹶ', 'ﻼ'),
('𐹠', '𐹾'),
@@ -238,7 +243,7 @@ pub const ARMENIAN: &'static [(char, char)] =
pub const AVESTAN: &'static [(char, char)] = &[('𐬀', '𐬵'), ('𐬹', '𐬿')];
-pub const BALINESE: &'static [(char, char)] = &[('\u{1b00}', 'ᭋ'), ('᭐', '᭼')];
+pub const BALINESE: &'static [(char, char)] = &[('\u{1b00}', 'ᭌ'), ('᭐', '᭾')];
pub const BAMUM: &'static [(char, char)] = &[('ꚠ', '꛷'), ('𖠀', '𖨸')];
@@ -268,10 +273,10 @@ pub const BHAIKSUKI: &'static [(char, char)] =
&[('𑰀', '𑰈'), ('𑰊', '\u{11c36}'), ('\u{11c38}', '𑱅'), ('𑱐', '𑱬')];
pub const BOPOMOFO: &'static [(char, char)] =
- &[('˪', '˫'), ('ㄅ', 'ㄯ'), ('ㆠ', '\u{31bf}')];
+ &[('˪', '˫'), ('ㄅ', 'ㄯ'), ('ㆠ', 'ㆿ')];
pub const BRAHMI: &'static [(char, char)] =
- &[('𑀀', '𑁍'), ('𑁒', '𑁯'), ('\u{1107f}', '\u{1107f}')];
+ &[('𑀀', '𑁍'), ('𑁒', '𑁵'), ('\u{1107f}', '\u{1107f}')];
pub const BRAILLE: &'static [(char, char)] = &[('⠀', '⣿')];
@@ -280,7 +285,7 @@ pub const BUGINESE: &'static [(char, char)] = &[('ᨀ', '\u{1a1b}'), ('᨞', '
pub const BUHID: &'static [(char, char)] = &[('ᝀ', '\u{1753}')];
pub const CANADIAN_ABORIGINAL: &'static [(char, char)] =
- &[('᐀', 'ᙿ'), ('ᢰ', 'ᣵ')];
+ &[('᐀', 'ᙿ'), ('ᢰ', 'ᣵ'), ('𑪰', '𑪿')];
pub const CARIAN: &'static [(char, char)] = &[('𐊠', '𐋐')];
@@ -288,7 +293,7 @@ pub const CAUCASIAN_ALBANIAN: &'static [(char, char)] =
&[('𐔰', '𐕣'), ('𐕯', '𐕯')];
pub const CHAKMA: &'static [(char, char)] =
- &[('\u{11100}', '\u{11134}'), ('𑄶', '\u{11147}')];
+ &[('\u{11100}', '\u{11134}'), ('𑄶', '𑅇')];
pub const CHAM: &'static [(char, char)] =
&[('ꨀ', '\u{aa36}'), ('ꩀ', 'ꩍ'), ('꩐', '꩙'), ('꩜', '꩟')];
@@ -296,10 +301,10 @@ pub const CHAM: &'static [(char, char)] =
pub const CHEROKEE: &'static [(char, char)] =
&[('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), ('ꭰ', 'ꮿ')];
-pub const CHORASMIAN: &'static [(char, char)] = &[('\u{10fb0}', '\u{10fcb}')];
+pub const CHORASMIAN: &'static [(char, char)] = &[('𐾰', '𐿋')];
pub const COMMON: &'static [(char, char)] = &[
- ('\u{0}', '@'),
+ ('\0', '@'),
('[', '`'),
('{', '©'),
('«', '¹'),
@@ -339,7 +344,7 @@ pub const COMMON: &'static [(char, char)] = &[
('\u{2066}', '⁰'),
('⁴', '⁾'),
('₀', '₎'),
- ('₠', '₿'),
+ ('₠', '⃀'),
('℀', '℥'),
('℧', '℩'),
('ℬ', 'ℱ'),
@@ -351,8 +356,8 @@ pub const COMMON: &'static [(char, char)] = &[
('①', '⟿'),
('⤀', '⭳'),
('⭶', '⮕'),
- ('\u{2b97}', '⯿'),
- ('⸀', '\u{2e52}'),
+ ('⮗', '⯿'),
+ ('⸀', '⹝'),
('⿰', '⿻'),
('\u{3000}', '〄'),
('〆', '〆'),
@@ -375,7 +380,7 @@ pub const COMMON: &'static [(char, char)] = &[
('꤮', '꤮'),
('ꧏ', 'ꧏ'),
('꭛', '꭛'),
- ('\u{ab6a}', '\u{ab6b}'),
+ ('꭪', '꭫'),
('﴾', '﴿'),
('︐', '︙'),
('︰', '﹒'),
@@ -393,18 +398,18 @@ pub const COMMON: &'static [(char, char)] = &[
('𐄀', '𐄂'),
('𐄇', '𐄳'),
('𐄷', '𐄿'),
- ('𐆐', '\u{1019c}'),
+ ('𐆐', '𐆜'),
('𐇐', '𐇼'),
('𐋡', '𐋻'),
- ('𖿢', '𖿣'),
('\u{1bca0}', '\u{1bca3}'),
+ ('𜽐', '𜿃'),
('𝀀', '𝃵'),
('𝄀', '𝄦'),
('𝄩', '𝅦'),
('𝅪', '\u{1d17a}'),
('𝆃', '𝆄'),
('𝆌', '𝆩'),
- ('𝆮', '𝇨'),
+ ('𝆮', '𝇪'),
('𝋠', '𝋳'),
('𝌀', '𝍖'),
('𝍠', '𝍸'),
@@ -437,39 +442,40 @@ pub const COMMON: &'static [(char, char)] = &[
('🂱', '🂿'),
('🃁', '🃏'),
('🃑', '🃵'),
- ('🄀', '\u{1f1ad}'),
+ ('🄀', '🆭'),
('🇦', '🇿'),
('🈁', '🈂'),
('🈐', '🈻'),
('🉀', '🉈'),
('🉐', '🉑'),
('🉠', '🉥'),
- ('🌀', '\u{1f6d7}'),
- ('🛠', '🛬'),
- ('🛰', '\u{1f6fc}'),
+ ('🌀', '🛗'),
+ ('🛝', '🛬'),
+ ('🛰', '🛼'),
('🜀', '🝳'),
('🞀', '🟘'),
('🟠', '🟫'),
+ ('🟰', '🟰'),
('🠀', '🠋'),
('🠐', '🡇'),
('🡐', '🡙'),
('🡠', '🢇'),
('🢐', '🢭'),
- ('\u{1f8b0}', '\u{1f8b1}'),
- ('🤀', '\u{1f978}'),
- ('🥺', '\u{1f9cb}'),
- ('🧍', '🩓'),
+ ('🢰', '🢱'),
+ ('🤀', '🩓'),
('🩠', '🩭'),
- ('🩰', '\u{1fa74}'),
- ('🩸', '🩺'),
- ('🪀', '\u{1fa86}'),
- ('🪐', '\u{1faa8}'),
- ('\u{1fab0}', '\u{1fab6}'),
- ('\u{1fac0}', '\u{1fac2}'),
- ('\u{1fad0}', '\u{1fad6}'),
- ('\u{1fb00}', '\u{1fb92}'),
- ('\u{1fb94}', '\u{1fbca}'),
- ('\u{1fbf0}', '\u{1fbf9}'),
+ ('🩰', '🩴'),
+ ('🩸', '🩼'),
+ ('🪀', '🪆'),
+ ('🪐', '🪬'),
+ ('🪰', '🪺'),
+ ('🫀', '🫅'),
+ ('🫐', '🫙'),
+ ('🫠', '🫧'),
+ ('🫰', '🫶'),
+ ('🬀', '🮒'),
+ ('🮔', '🯊'),
+ ('🯰', '🯹'),
('\u{e0001}', '\u{e0001}'),
('\u{e0020}', '\u{e007f}'),
];
@@ -483,6 +489,8 @@ pub const CUNEIFORM: &'static [(char, char)] =
pub const CYPRIOT: &'static [(char, char)] =
&[('𐠀', '𐠅'), ('𐠈', '𐠈'), ('𐠊', '𐠵'), ('𐠷', '𐠸'), ('𐠼', '𐠼'), ('𐠿', '𐠿')];
+pub const CYPRO_MINOAN: &'static [(char, char)] = &[('𒾐', '𒿲')];
+
pub const CYRILLIC: &'static [(char, char)] = &[
('Ѐ', '\u{484}'),
('\u{487}', 'ԯ'),
@@ -504,14 +512,14 @@ pub const DEVANAGARI: &'static [(char, char)] = &[
];
pub const DIVES_AKURU: &'static [(char, char)] = &[
- ('\u{11900}', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
- ('\u{1193b}', '\u{11946}'),
- ('\u{11950}', '\u{11959}'),
+ ('𑤀', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤵'),
+ ('𑤷', '𑤸'),
+ ('\u{1193b}', '𑥆'),
+ ('𑥐', '𑥙'),
];
pub const DOGRA: &'static [(char, char)] = &[('𑠀', '𑠻')];
@@ -559,6 +567,10 @@ pub const ETHIOPIC: &'static [(char, char)] = &[
('ꬑ', 'ꬖ'),
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
];
pub const GEORGIAN: &'static [(char, char)] = &[
@@ -575,8 +587,7 @@ pub const GEORGIAN: &'static [(char, char)] = &[
];
pub const GLAGOLITIC: &'static [(char, char)] = &[
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
+ ('Ⰰ', 'ⱟ'),
('\u{1e000}', '\u{1e006}'),
('\u{1e008}', '\u{1e018}'),
('\u{1e01b}', '\u{1e021}'),
@@ -696,18 +707,19 @@ pub const HAN: &'static [(char, char)] = &[
('〇', '〇'),
('〡', '〩'),
('〸', '〻'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
+ ('㐀', '䶿'),
+ ('一', '鿿'),
('豈', '舘'),
('並', '龎'),
- ('\u{16ff0}', '\u{16ff1}'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('𖿢', '𖿣'),
+ ('𖿰', '𖿱'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
pub const HANGUL: &'static [(char, char)] = &[
@@ -730,7 +742,7 @@ pub const HANGUL: &'static [(char, char)] = &[
pub const HANIFI_ROHINGYA: &'static [(char, char)] =
&[('𐴀', '\u{10d27}'), ('𐴰', '𐴹')];
-pub const HANUNOO: &'static [(char, char)] = &[('ᜠ', '\u{1734}')];
+pub const HANUNOO: &'static [(char, char)] = &[('ᜠ', '᜴')];
pub const HATRAN: &'static [(char, char)] =
&[('𐣠', '𐣲'), ('𐣴', '𐣵'), ('𐣻', '𐣿')];
@@ -748,7 +760,7 @@ pub const HEBREW: &'static [(char, char)] = &[
];
pub const HIRAGANA: &'static [(char, char)] =
- &[('ぁ', 'ゖ'), ('ゝ', 'ゟ'), ('𛀁', '𛄞'), ('𛅐', '𛅒'), ('🈀', '🈀')];
+ &[('ぁ', 'ゖ'), ('ゝ', 'ゟ'), ('𛀁', '𛄟'), ('𛅐', '𛅒'), ('🈀', '🈀')];
pub const IMPERIAL_ARAMAIC: &'static [(char, char)] =
&[('𐡀', '𐡕'), ('𐡗', '𐡟')];
@@ -759,15 +771,14 @@ pub const INHERITED: &'static [(char, char)] = &[
('\u{64b}', '\u{655}'),
('\u{670}', '\u{670}'),
('\u{951}', '\u{954}'),
- ('\u{1ab0}', '\u{1ac0}'),
+ ('\u{1ab0}', '\u{1ace}'),
('\u{1cd0}', '\u{1cd2}'),
('\u{1cd4}', '\u{1ce0}'),
('\u{1ce2}', '\u{1ce8}'),
('\u{1ced}', '\u{1ced}'),
('\u{1cf4}', '\u{1cf4}'),
('\u{1cf8}', '\u{1cf9}'),
- ('\u{1dc0}', '\u{1df9}'),
- ('\u{1dfb}', '\u{1dff}'),
+ ('\u{1dc0}', '\u{1dff}'),
('\u{200c}', '\u{200d}'),
('\u{20d0}', '\u{20f0}'),
('\u{302a}', '\u{302d}'),
@@ -777,6 +788,8 @@ pub const INHERITED: &'static [(char, char)] = &[
('\u{101fd}', '\u{101fd}'),
('\u{102e0}', '\u{102e0}'),
('\u{1133b}', '\u{1133b}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d167}', '\u{1d169}'),
('\u{1d17b}', '\u{1d182}'),
('\u{1d185}', '\u{1d18b}'),
@@ -794,7 +807,7 @@ pub const JAVANESE: &'static [(char, char)] =
&[('\u{a980}', '꧍'), ('꧐', '꧙'), ('꧞', '꧟')];
pub const KAITHI: &'static [(char, char)] =
- &[('\u{11080}', '𑃁'), ('\u{110cd}', '\u{110cd}')];
+ &[('\u{11080}', '\u{110c2}'), ('\u{110cd}', '\u{110cd}')];
pub const KANNADA: &'static [(char, char)] = &[
('ಀ', 'ಌ'),
@@ -806,7 +819,7 @@ pub const KANNADA: &'static [(char, char)] = &[
('\u{cc6}', 'ೈ'),
('ೊ', '\u{ccd}'),
('\u{cd5}', '\u{cd6}'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', '\u{ce3}'),
('೦', '೯'),
('ೱ', 'ೲ'),
@@ -820,7 +833,11 @@ pub const KATAKANA: &'static [(char, char)] = &[
('㌀', '㍗'),
('ヲ', 'ッ'),
('ア', 'ン'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
('𛀀', '𛀀'),
+ ('𛄠', '𛄢'),
('𛅤', '𛅧'),
];
@@ -838,7 +855,7 @@ pub const KHAROSHTHI: &'static [(char, char)] = &[
];
pub const KHITAN_SMALL_SCRIPT: &'static [(char, char)] =
- &[('\u{16fe4}', '\u{16fe4}'), ('\u{18b00}', '\u{18cd5}')];
+ &[('\u{16fe4}', '\u{16fe4}'), ('𘬀', '𘳕')];
pub const KHMER: &'static [(char, char)] =
&[('ក', '\u{17dd}'), ('០', '៩'), ('៰', '៹'), ('᧠', '᧿')];
@@ -886,15 +903,21 @@ pub const LATIN: &'static [(char, char)] = &[
('Ⅰ', 'ↈ'),
('Ⱡ', 'Ɀ'),
('Ꜣ', 'ꞇ'),
- ('Ꞌ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꟿ'),
+ ('Ꞌ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꟿ'),
('ꬰ', 'ꭚ'),
('ꭜ', 'ꭤ'),
- ('ꭦ', '\u{ab69}'),
+ ('ꭦ', 'ꭩ'),
('ff', 'st'),
('A', 'Z'),
('a', 'z'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
+ ('𝼀', '𝼞'),
];
pub const LEPCHA: &'static [(char, char)] =
@@ -921,8 +944,7 @@ pub const LINEAR_B: &'static [(char, char)] = &[
('𐂀', '𐃺'),
];
-pub const LISU: &'static [(char, char)] =
- &[('ꓐ', '꓿'), ('\u{11fb0}', '\u{11fb0}')];
+pub const LISU: &'static [(char, char)] = &[('ꓐ', '꓿'), ('𑾰', '𑾰')];
pub const LYCIAN: &'static [(char, char)] = &[('𐊀', '𐊜')];
@@ -978,15 +1000,8 @@ pub const MIAO: &'static [(char, char)] =
pub const MODI: &'static [(char, char)] = &[('𑘀', '𑙄'), ('𑙐', '𑙙')];
-pub const MONGOLIAN: &'static [(char, char)] = &[
- ('᠀', '᠁'),
- ('᠄', '᠄'),
- ('᠆', '\u{180e}'),
- ('᠐', '᠙'),
- ('ᠠ', 'ᡸ'),
- ('ᢀ', 'ᢪ'),
- ('𑙠', '𑙬'),
-];
+pub const MONGOLIAN: &'static [(char, char)] =
+ &[('᠀', '᠁'), ('᠄', '᠄'), ('᠆', '᠙'), ('ᠠ', 'ᡸ'), ('ᢀ', 'ᢪ'), ('𑙠', '𑙬')];
pub const MRO: &'static [(char, char)] = &[('𖩀', '𖩞'), ('𖩠', '𖩩'), ('𖩮', '𖩯')];
@@ -1004,7 +1019,7 @@ pub const NANDINAGARI: &'static [(char, char)] =
pub const NEW_TAI_LUE: &'static [(char, char)] =
&[('ᦀ', 'ᦫ'), ('ᦰ', 'ᧉ'), ('᧐', '᧚'), ('᧞', '᧟')];
-pub const NEWA: &'static [(char, char)] = &[('𑐀', '𑑛'), ('𑑝', '\u{11461}')];
+pub const NEWA: &'static [(char, char)] = &[('𑐀', '𑑛'), ('𑑝', '𑑡')];
pub const NKO: &'static [(char, char)] = &[('߀', 'ߺ'), ('\u{7fd}', '߿')];
@@ -1034,6 +1049,8 @@ pub const OLD_SOUTH_ARABIAN: &'static [(char, char)] = &[('𐩠', '𐩿')];
pub const OLD_TURKIC: &'static [(char, char)] = &[('𐰀', '𐱈')];
+pub const OLD_UYGHUR: &'static [(char, char)] = &[('𐽰', '𐾉')];
+
pub const ORIYA: &'static [(char, char)] = &[
('\u{b01}', 'ଃ'),
('ଅ', 'ଌ'),
@@ -1118,7 +1135,7 @@ pub const SYLOTI_NAGRI: &'static [(char, char)] = &[('ꠀ', '\u{a82c}')];
pub const SYRIAC: &'static [(char, char)] =
&[('܀', '܍'), ('\u{70f}', '\u{74a}'), ('ݍ', 'ݏ'), ('ࡠ', 'ࡪ')];
-pub const TAGALOG: &'static [(char, char)] = &[('ᜀ', 'ᜌ'), ('ᜎ', '\u{1714}')];
+pub const TAGALOG: &'static [(char, char)] = &[('ᜀ', '᜕'), ('ᜟ', 'ᜟ')];
pub const TAGBANWA: &'static [(char, char)] =
&[('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), ('\u{1772}', '\u{1773}')];
@@ -1135,7 +1152,7 @@ pub const TAI_THAM: &'static [(char, char)] = &[
pub const TAI_VIET: &'static [(char, char)] = &[('ꪀ', 'ꫂ'), ('ꫛ', '꫟')];
-pub const TAKRI: &'static [(char, char)] = &[('𑚀', '𑚸'), ('𑛀', '𑛉')];
+pub const TAKRI: &'static [(char, char)] = &[('𑚀', '𑚹'), ('𑛀', '𑛉')];
pub const TAMIL: &'static [(char, char)] = &[
('\u{b82}', 'ஃ'),
@@ -1158,23 +1175,22 @@ pub const TAMIL: &'static [(char, char)] = &[
('𑿿', '𑿿'),
];
-pub const TANGUT: &'static [(char, char)] = &[
- ('𖿠', '𖿠'),
- ('𗀀', '𘟷'),
- ('𘠀', '\u{18aff}'),
- ('\u{18d00}', '\u{18d08}'),
-];
+pub const TANGSA: &'static [(char, char)] = &[('𖩰', '𖪾'), ('𖫀', '𖫉')];
+
+pub const TANGUT: &'static [(char, char)] =
+ &[('𖿠', '𖿠'), ('𗀀', '𘟷'), ('𘠀', '𘫿'), ('𘴀', '𘴈')];
pub const TELUGU: &'static [(char, char)] = &[
('\u{c00}', 'ఌ'),
('ఎ', 'ఐ'),
('ఒ', 'న'),
('ప', 'హ'),
- ('ఽ', 'ౄ'),
+ ('\u{c3c}', 'ౄ'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
('\u{c55}', '\u{c56}'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', '\u{c63}'),
('౦', '౯'),
('౷', '౿'),
@@ -1199,19 +1215,29 @@ pub const TIFINAGH: &'static [(char, char)] =
pub const TIRHUTA: &'static [(char, char)] = &[('𑒀', '𑓇'), ('𑓐', '𑓙')];
+pub const TOTO: &'static [(char, char)] = &[('𞊐', '\u{1e2ae}')];
+
pub const UGARITIC: &'static [(char, char)] = &[('𐎀', '𐎝'), ('𐎟', '𐎟')];
pub const VAI: &'static [(char, char)] = &[('ꔀ', 'ꘫ')];
+pub const VITHKUQI: &'static [(char, char)] = &[
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
+];
+
pub const WANCHO: &'static [(char, char)] = &[('𞋀', '𞋹'), ('𞋿', '𞋿')];
pub const WARANG_CITI: &'static [(char, char)] = &[('𑢠', '𑣲'), ('𑣿', '𑣿')];
-pub const YEZIDI: &'static [(char, char)] = &[
- ('\u{10e80}', '\u{10ea9}'),
- ('\u{10eab}', '\u{10ead}'),
- ('\u{10eb0}', '\u{10eb1}'),
-];
+pub const YEZIDI: &'static [(char, char)] =
+ &[('𐺀', '𐺩'), ('\u{10eab}', '𐺭'), ('𐺰', '𐺱')];
pub const YI: &'static [(char, char)] = &[('ꀀ', 'ꒌ'), ('꒐', '꓆')];
diff --git a/vendor/regex-syntax/src/unicode_tables/script_extension.rs b/vendor/regex-syntax/src/unicode_tables/script_extension.rs
index 7fca2af9d..c970e0104 100644
--- a/vendor/regex-syntax/src/unicode_tables/script_extension.rs
+++ b/vendor/regex-syntax/src/unicode_tables/script_extension.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate script-extension ucd-13.0.0 --chars
+// ucd-generate script-extension /tmp/ucd --chars
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Adlam", ADLAM),
@@ -35,6 +35,7 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Coptic", COPTIC),
("Cuneiform", CUNEIFORM),
("Cypriot", CYPRIOT),
+ ("Cypro_Minoan", CYPRO_MINOAN),
("Cyrillic", CYRILLIC),
("Deseret", DESERET),
("Devanagari", DEVANAGARI),
@@ -118,6 +119,7 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Old_Sogdian", OLD_SOGDIAN),
("Old_South_Arabian", OLD_SOUTH_ARABIAN),
("Old_Turkic", OLD_TURKIC),
+ ("Old_Uyghur", OLD_UYGHUR),
("Oriya", ORIYA),
("Osage", OSAGE),
("Osmanya", OSMANYA),
@@ -149,6 +151,7 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Tai_Viet", TAI_VIET),
("Takri", TAKRI),
("Tamil", TAMIL),
+ ("Tangsa", TANGSA),
("Tangut", TANGUT),
("Telugu", TELUGU),
("Thaana", THAANA),
@@ -156,8 +159,10 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("Tibetan", TIBETAN),
("Tifinagh", TIFINAGH),
("Tirhuta", TIRHUTA),
+ ("Toto", TOTO),
("Ugaritic", UGARITIC),
("Vai", VAI),
+ ("Vithkuqi", VITHKUQI),
("Wancho", WANCHO),
("Warang_Citi", WARANG_CITI),
("Yezidi", YEZIDI),
@@ -166,28 +171,27 @@ pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
];
pub const ADLAM: &'static [(char, char)] =
- &[('ـ', 'ـ'), ('𞤀', '𞥋'), ('𞥐', '𞥙'), ('𞥞', '𞥟')];
+ &[('؟', '؟'), ('ـ', 'ـ'), ('𞤀', '𞥋'), ('𞥐', '𞥙'), ('𞥞', '𞥟')];
pub const AHOM: &'static [(char, char)] =
- &[('𑜀', '𑜚'), ('\u{1171d}', '\u{1172b}'), ('𑜰', '𑜿')];
+ &[('𑜀', '𑜚'), ('\u{1171d}', '\u{1172b}'), ('𑜰', '𑝆')];
pub const ANATOLIAN_HIEROGLYPHS: &'static [(char, char)] = &[('𔐀', '𔙆')];
pub const ARABIC: &'static [(char, char)] = &[
('\u{600}', '\u{604}'),
- ('؆', '\u{61c}'),
- ('؞', '\u{6dc}'),
+ ('؆', '\u{6dc}'),
('۞', 'ۿ'),
('ݐ', 'ݿ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('ࡰ', 'ࢎ'),
+ ('\u{890}', '\u{891}'),
+ ('\u{898}', '\u{8e1}'),
('\u{8e3}', '\u{8ff}'),
- ('ﭐ', '﯁'),
- ('ﯓ', 'ﴽ'),
- ('ﵐ', 'ﶏ'),
+ ('ﭐ', '﯂'),
+ ('ﯓ', 'ﶏ'),
('ﶒ', 'ﷇ'),
- ('ﷰ', '﷽'),
+ ('﷏', '﷏'),
+ ('ﷰ', '﷿'),
('ﹰ', 'ﹴ'),
('ﹶ', 'ﻼ'),
('\u{102e0}', '𐋻'),
@@ -233,7 +237,7 @@ pub const ARMENIAN: &'static [(char, char)] =
pub const AVESTAN: &'static [(char, char)] = &[('𐬀', '𐬵'), ('𐬹', '𐬿')];
-pub const BALINESE: &'static [(char, char)] = &[('\u{1b00}', 'ᭋ'), ('᭐', '᭼')];
+pub const BALINESE: &'static [(char, char)] = &[('\u{1b00}', 'ᭌ'), ('᭐', '᭾')];
pub const BAMUM: &'static [(char, char)] = &[('ꚠ', '꛷'), ('𖠀', '𖨸')];
@@ -284,13 +288,13 @@ pub const BOPOMOFO: &'static [(char, char)] = &[
('〷', '〷'),
('・', '・'),
('ㄅ', 'ㄯ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('﹅', '﹆'),
('。', '・'),
];
pub const BRAHMI: &'static [(char, char)] =
- &[('𑀀', '𑁍'), ('𑁒', '𑁯'), ('\u{1107f}', '\u{1107f}')];
+ &[('𑀀', '𑁍'), ('𑁒', '𑁵'), ('\u{1107f}', '\u{1107f}')];
pub const BRAILLE: &'static [(char, char)] = &[('⠀', '⣿')];
@@ -300,7 +304,7 @@ pub const BUGINESE: &'static [(char, char)] =
pub const BUHID: &'static [(char, char)] = &[('᜵', '᜶'), ('ᝀ', '\u{1753}')];
pub const CANADIAN_ABORIGINAL: &'static [(char, char)] =
- &[('᐀', 'ᙿ'), ('ᢰ', 'ᣵ')];
+ &[('᐀', 'ᙿ'), ('ᢰ', 'ᣵ'), ('𑪰', '𑪿')];
pub const CARIAN: &'static [(char, char)] = &[('𐊠', '𐋐')];
@@ -308,7 +312,7 @@ pub const CAUCASIAN_ALBANIAN: &'static [(char, char)] =
&[('𐔰', '𐕣'), ('𐕯', '𐕯')];
pub const CHAKMA: &'static [(char, char)] =
- &[('০', '৯'), ('၀', '၉'), ('\u{11100}', '\u{11134}'), ('𑄶', '\u{11147}')];
+ &[('০', '৯'), ('၀', '၉'), ('\u{11100}', '\u{11134}'), ('𑄶', '𑅇')];
pub const CHAM: &'static [(char, char)] =
&[('ꨀ', '\u{aa36}'), ('ꩀ', 'ꩍ'), ('꩐', '꩙'), ('꩜', '꩟')];
@@ -316,10 +320,10 @@ pub const CHAM: &'static [(char, char)] =
pub const CHEROKEE: &'static [(char, char)] =
&[('Ꭰ', 'Ᏽ'), ('ᏸ', 'ᏽ'), ('ꭰ', 'ꮿ')];
-pub const CHORASMIAN: &'static [(char, char)] = &[('\u{10fb0}', '\u{10fcb}')];
+pub const CHORASMIAN: &'static [(char, char)] = &[('𐾰', '𐿋')];
pub const COMMON: &'static [(char, char)] = &[
- ('\u{0}', '@'),
+ ('\0', '@'),
('[', '`'),
('{', '©'),
('«', '¹'),
@@ -345,7 +349,7 @@ pub const COMMON: &'static [(char, char)] = &[
('\u{2066}', '⁰'),
('⁴', '⁾'),
('₀', '₎'),
- ('₠', '₿'),
+ ('₠', '⃀'),
('℀', '℥'),
('℧', '℩'),
('ℬ', 'ℱ'),
@@ -357,9 +361,9 @@ pub const COMMON: &'static [(char, char)] = &[
('①', '⟿'),
('⤀', '⭳'),
('⭶', '⮕'),
- ('\u{2b97}', '⯿'),
+ ('⮗', '⯿'),
('⸀', '⹂'),
- ('⹄', '\u{2e52}'),
+ ('⹄', '⹝'),
('⿰', '⿻'),
('\u{3000}', '\u{3000}'),
('〄', '〄'),
@@ -377,8 +381,7 @@ pub const COMMON: &'static [(char, char)] = &[
('꜈', '꜡'),
('ꞈ', '꞊'),
('꭛', '꭛'),
- ('\u{ab6a}', '\u{ab6b}'),
- ('﴾', '﴿'),
+ ('꭪', '꭫'),
('︐', '︙'),
('︰', '﹄'),
('﹇', '﹒'),
@@ -391,16 +394,16 @@ pub const COMMON: &'static [(char, char)] = &[
('¢', '₩'),
('│', '○'),
('\u{fff9}', '�'),
- ('𐆐', '\u{1019c}'),
+ ('𐆐', '𐆜'),
('𐇐', '𐇼'),
- ('𖿢', '𖿣'),
+ ('𜽐', '𜿃'),
('𝀀', '𝃵'),
('𝄀', '𝄦'),
('𝄩', '𝅦'),
('𝅪', '\u{1d17a}'),
('𝆃', '𝆄'),
('𝆌', '𝆩'),
- ('𝆮', '𝇨'),
+ ('𝆮', '𝇪'),
('𝋠', '𝋳'),
('𝌀', '𝍖'),
('𝍲', '𝍸'),
@@ -433,38 +436,39 @@ pub const COMMON: &'static [(char, char)] = &[
('🂱', '🂿'),
('🃁', '🃏'),
('🃑', '🃵'),
- ('🄀', '\u{1f1ad}'),
+ ('🄀', '🆭'),
('🇦', '🇿'),
('🈁', '🈂'),
('🈐', '🈻'),
('🉀', '🉈'),
('🉠', '🉥'),
- ('🌀', '\u{1f6d7}'),
- ('🛠', '🛬'),
- ('🛰', '\u{1f6fc}'),
+ ('🌀', '🛗'),
+ ('🛝', '🛬'),
+ ('🛰', '🛼'),
('🜀', '🝳'),
('🞀', '🟘'),
('🟠', '🟫'),
+ ('🟰', '🟰'),
('🠀', '🠋'),
('🠐', '🡇'),
('🡐', '🡙'),
('🡠', '🢇'),
('🢐', '🢭'),
- ('\u{1f8b0}', '\u{1f8b1}'),
- ('🤀', '\u{1f978}'),
- ('🥺', '\u{1f9cb}'),
- ('🧍', '🩓'),
+ ('🢰', '🢱'),
+ ('🤀', '🩓'),
('🩠', '🩭'),
- ('🩰', '\u{1fa74}'),
- ('🩸', '🩺'),
- ('🪀', '\u{1fa86}'),
- ('🪐', '\u{1faa8}'),
- ('\u{1fab0}', '\u{1fab6}'),
- ('\u{1fac0}', '\u{1fac2}'),
- ('\u{1fad0}', '\u{1fad6}'),
- ('\u{1fb00}', '\u{1fb92}'),
- ('\u{1fb94}', '\u{1fbca}'),
- ('\u{1fbf0}', '\u{1fbf9}'),
+ ('🩰', '🩴'),
+ ('🩸', '🩼'),
+ ('🪀', '🪆'),
+ ('🪐', '🪬'),
+ ('🪰', '🪺'),
+ ('🫀', '🫅'),
+ ('🫐', '🫙'),
+ ('🫠', '🫧'),
+ ('🫰', '🫶'),
+ ('🬀', '🮒'),
+ ('🮔', '🯊'),
+ ('🯰', '🯹'),
('\u{e0001}', '\u{e0001}'),
('\u{e0020}', '\u{e007f}'),
];
@@ -487,6 +491,8 @@ pub const CYPRIOT: &'static [(char, char)] = &[
('𐠿', '𐠿'),
];
+pub const CYPRO_MINOAN: &'static [(char, char)] = &[('𐄀', '𐄁'), ('𒾐', '𒿲')];
+
pub const CYRILLIC: &'static [(char, char)] = &[
('Ѐ', 'ԯ'),
('ᲀ', 'ᲈ'),
@@ -512,14 +518,14 @@ pub const DEVANAGARI: &'static [(char, char)] = &[
];
pub const DIVES_AKURU: &'static [(char, char)] = &[
- ('\u{11900}', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
- ('\u{1193b}', '\u{11946}'),
- ('\u{11950}', '\u{11959}'),
+ ('𑤀', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤵'),
+ ('𑤷', '𑤸'),
+ ('\u{1193b}', '𑥆'),
+ ('𑥐', '𑥙'),
];
pub const DOGRA: &'static [(char, char)] =
@@ -568,6 +574,10 @@ pub const ETHIOPIC: &'static [(char, char)] = &[
('ꬑ', 'ꬖ'),
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
];
pub const GEORGIAN: &'static [(char, char)] = &[
@@ -585,8 +595,7 @@ pub const GEORGIAN: &'static [(char, char)] = &[
pub const GLAGOLITIC: &'static [(char, char)] = &[
('\u{484}', '\u{484}'),
('\u{487}', '\u{487}'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
+ ('Ⰰ', 'ⱟ'),
('⹃', '⹃'),
('\u{a66f}', '\u{a66f}'),
('\u{1e000}', '\u{1e006}'),
@@ -739,23 +748,24 @@ pub const HAN: &'static [(char, char)] = &[
('㍘', '㍰'),
('㍻', '㍿'),
('㏠', '㏾'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
+ ('㐀', '䶿'),
+ ('一', '鿿'),
('꜀', '꜇'),
('豈', '舘'),
('並', '龎'),
('﹅', '﹆'),
('。', '・'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿢', '𖿣'),
+ ('𖿰', '𖿱'),
('𝍠', '𝍱'),
('🉐', '🉑'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
pub const HANGUL: &'static [(char, char)] = &[
@@ -823,7 +833,7 @@ pub const HIRAGANA: &'static [(char, char)] = &[
('。', '・'),
('ー', 'ー'),
('\u{ff9e}', '\u{ff9f}'),
- ('𛀁', '𛄞'),
+ ('𛀁', '𛄟'),
('𛅐', '𛅒'),
('🈀', '🈀'),
];
@@ -836,7 +846,7 @@ pub const INHERITED: &'static [(char, char)] = &[
('\u{343}', '\u{344}'),
('\u{346}', '\u{362}'),
('\u{953}', '\u{954}'),
- ('\u{1ab0}', '\u{1ac0}'),
+ ('\u{1ab0}', '\u{1ace}'),
('\u{1dc2}', '\u{1df7}'),
('\u{1df9}', '\u{1df9}'),
('\u{1dfb}', '\u{1dff}'),
@@ -845,6 +855,8 @@ pub const INHERITED: &'static [(char, char)] = &[
('\u{fe00}', '\u{fe0f}'),
('\u{fe20}', '\u{fe2d}'),
('\u{101fd}', '\u{101fd}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d167}', '\u{1d169}'),
('\u{1d17b}', '\u{1d182}'),
('\u{1d185}', '\u{1d18b}'),
@@ -861,8 +873,12 @@ pub const INSCRIPTIONAL_PARTHIAN: &'static [(char, char)] =
pub const JAVANESE: &'static [(char, char)] =
&[('\u{a980}', '꧍'), ('ꧏ', '꧙'), ('꧞', '꧟')];
-pub const KAITHI: &'static [(char, char)] =
- &[('०', '९'), ('꠰', '꠹'), ('\u{11080}', '𑃁'), ('\u{110cd}', '\u{110cd}')];
+pub const KAITHI: &'static [(char, char)] = &[
+ ('०', '९'),
+ ('꠰', '꠹'),
+ ('\u{11080}', '\u{110c2}'),
+ ('\u{110cd}', '\u{110cd}'),
+];
pub const KANNADA: &'static [(char, char)] = &[
('\u{951}', '\u{952}'),
@@ -876,7 +892,7 @@ pub const KANNADA: &'static [(char, char)] = &[
('\u{cc6}', 'ೈ'),
('ೊ', '\u{ccd}'),
('\u{cd5}', '\u{cd6}'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', '\u{ce3}'),
('೦', '೯'),
('ೱ', 'ೲ'),
@@ -902,7 +918,11 @@ pub const KATAKANA: &'static [(char, char)] = &[
('㌀', '㍗'),
('﹅', '﹆'),
('。', '\u{ff9f}'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
('𛀀', '𛀀'),
+ ('𛄠', '𛄢'),
('𛅤', '𛅧'),
];
@@ -920,7 +940,7 @@ pub const KHAROSHTHI: &'static [(char, char)] = &[
];
pub const KHITAN_SMALL_SCRIPT: &'static [(char, char)] =
- &[('\u{16fe4}', '\u{16fe4}'), ('\u{18b00}', '\u{18cd5}')];
+ &[('\u{16fe4}', '\u{16fe4}'), ('𘬀', '𘳕')];
pub const KHMER: &'static [(char, char)] =
&[('ក', '\u{17dd}'), ('០', '៩'), ('៰', '៹'), ('᧠', '᧿')];
@@ -976,16 +996,22 @@ pub const LATIN: &'static [(char, char)] = &[
('Ⱡ', 'Ɀ'),
('꜀', '꜇'),
('Ꜣ', 'ꞇ'),
- ('Ꞌ', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꟿ'),
+ ('Ꞌ', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꟿ'),
('꤮', '꤮'),
('ꬰ', 'ꭚ'),
('ꭜ', 'ꭤ'),
- ('ꭦ', '\u{ab69}'),
+ ('ꭦ', 'ꭩ'),
('ff', 'st'),
('A', 'Z'),
('a', 'z'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
+ ('𝼀', '𝼞'),
];
pub const LEPCHA: &'static [(char, char)] =
@@ -1016,8 +1042,7 @@ pub const LINEAR_B: &'static [(char, char)] = &[
('𐄷', '𐄿'),
];
-pub const LISU: &'static [(char, char)] =
- &[('ꓐ', '꓿'), ('\u{11fb0}', '\u{11fb0}')];
+pub const LISU: &'static [(char, char)] = &[('ꓐ', '꓿'), ('𑾰', '𑾰')];
pub const LYCIAN: &'static [(char, char)] = &[('𐊀', '𐊜')];
@@ -1082,8 +1107,7 @@ pub const MODI: &'static [(char, char)] =
&[('꠰', '꠹'), ('𑘀', '𑙄'), ('𑙐', '𑙙')];
pub const MONGOLIAN: &'static [(char, char)] = &[
- ('᠀', '\u{180e}'),
- ('᠐', '᠙'),
+ ('᠀', '᠙'),
('ᠠ', 'ᡸ'),
('ᢀ', 'ᢪ'),
('\u{202f}', '\u{202f}'),
@@ -1115,9 +1139,16 @@ pub const NANDINAGARI: &'static [(char, char)] = &[
pub const NEW_TAI_LUE: &'static [(char, char)] =
&[('ᦀ', 'ᦫ'), ('ᦰ', 'ᧉ'), ('᧐', '᧚'), ('᧞', '᧟')];
-pub const NEWA: &'static [(char, char)] = &[('𑐀', '𑑛'), ('𑑝', '\u{11461}')];
+pub const NEWA: &'static [(char, char)] = &[('𑐀', '𑑛'), ('𑑝', '𑑡')];
-pub const NKO: &'static [(char, char)] = &[('߀', 'ߺ'), ('\u{7fd}', '߿')];
+pub const NKO: &'static [(char, char)] = &[
+ ('،', '،'),
+ ('؛', '؛'),
+ ('؟', '؟'),
+ ('߀', 'ߺ'),
+ ('\u{7fd}', '߿'),
+ ('﴾', '﴿'),
+];
pub const NUSHU: &'static [(char, char)] = &[('𖿡', '𖿡'), ('𛅰', '𛋻')];
@@ -1146,6 +1177,9 @@ pub const OLD_SOUTH_ARABIAN: &'static [(char, char)] = &[('𐩠', '𐩿')];
pub const OLD_TURKIC: &'static [(char, char)] = &[('𐰀', '𐱈')];
+pub const OLD_UYGHUR: &'static [(char, char)] =
+ &[('ـ', 'ـ'), ('𐫲', '𐫲'), ('𐽰', '𐾉')];
+
pub const ORIYA: &'static [(char, char)] = &[
('\u{951}', '\u{952}'),
('।', '॥'),
@@ -1253,10 +1287,11 @@ pub const SYRIAC: &'static [(char, char)] = &[
('ݍ', 'ݏ'),
('ࡠ', 'ࡪ'),
('\u{1df8}', '\u{1df8}'),
+ ('\u{1dfa}', '\u{1dfa}'),
];
pub const TAGALOG: &'static [(char, char)] =
- &[('ᜀ', 'ᜌ'), ('ᜎ', '\u{1714}'), ('᜵', '᜶')];
+ &[('ᜀ', '᜕'), ('ᜟ', 'ᜟ'), ('᜵', '᜶')];
pub const TAGBANWA: &'static [(char, char)] =
&[('᜵', '᜶'), ('ᝠ', 'ᝬ'), ('ᝮ', 'ᝰ'), ('\u{1772}', '\u{1773}')];
@@ -1275,7 +1310,7 @@ pub const TAI_THAM: &'static [(char, char)] = &[
pub const TAI_VIET: &'static [(char, char)] = &[('ꪀ', 'ꫂ'), ('ꫛ', '꫟')];
pub const TAKRI: &'static [(char, char)] =
- &[('।', '॥'), ('꠰', '꠹'), ('𑚀', '𑚸'), ('𑛀', '𑛉')];
+ &[('।', '॥'), ('꠰', '꠹'), ('𑚀', '𑚹'), ('𑛀', '𑛉')];
pub const TAMIL: &'static [(char, char)] = &[
('\u{951}', '\u{952}'),
@@ -1305,12 +1340,10 @@ pub const TAMIL: &'static [(char, char)] = &[
('𑿿', '𑿿'),
];
-pub const TANGUT: &'static [(char, char)] = &[
- ('𖿠', '𖿠'),
- ('𗀀', '𘟷'),
- ('𘠀', '\u{18aff}'),
- ('\u{18d00}', '\u{18d08}'),
-];
+pub const TANGSA: &'static [(char, char)] = &[('𖩰', '𖪾'), ('𖫀', '𖫉')];
+
+pub const TANGUT: &'static [(char, char)] =
+ &[('𖿠', '𖿠'), ('𗀀', '𘟷'), ('𘠀', '𘫿'), ('𘴀', '𘴈')];
pub const TELUGU: &'static [(char, char)] = &[
('\u{951}', '\u{952}'),
@@ -1319,11 +1352,12 @@ pub const TELUGU: &'static [(char, char)] = &[
('ఎ', 'ఐ'),
('ఒ', 'న'),
('ప', 'హ'),
- ('ఽ', 'ౄ'),
+ ('\u{c3c}', 'ౄ'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
('\u{c55}', '\u{c56}'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', '\u{c63}'),
('౦', '౯'),
('౷', '౿'),
@@ -1365,10 +1399,23 @@ pub const TIRHUTA: &'static [(char, char)] = &[
('𑓐', '𑓙'),
];
+pub const TOTO: &'static [(char, char)] = &[('𞊐', '\u{1e2ae}')];
+
pub const UGARITIC: &'static [(char, char)] = &[('𐎀', '𐎝'), ('𐎟', '𐎟')];
pub const VAI: &'static [(char, char)] = &[('ꔀ', 'ꘫ')];
+pub const VITHKUQI: &'static [(char, char)] = &[
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
+];
+
pub const WANCHO: &'static [(char, char)] = &[('𞋀', '𞋹'), ('𞋿', '𞋿')];
pub const WARANG_CITI: &'static [(char, char)] = &[('𑢠', '𑣲'), ('𑣿', '𑣿')];
@@ -1378,9 +1425,9 @@ pub const YEZIDI: &'static [(char, char)] = &[
('؛', '؛'),
('؟', '؟'),
('٠', '٩'),
- ('\u{10e80}', '\u{10ea9}'),
- ('\u{10eab}', '\u{10ead}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺀', '𐺩'),
+ ('\u{10eab}', '𐺭'),
+ ('𐺰', '𐺱'),
];
pub const YI: &'static [(char, char)] = &[
diff --git a/vendor/regex-syntax/src/unicode_tables/sentence_break.rs b/vendor/regex-syntax/src/unicode_tables/sentence_break.rs
index 67d830f74..db8ad282b 100644
--- a/vendor/regex-syntax/src/unicode_tables/sentence_break.rs
+++ b/vendor/regex-syntax/src/unicode_tables/sentence_break.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate sentence-break ucd-13.0.0 --chars
+// ucd-generate sentence-break /tmp/ucd --chars
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("ATerm", ATERM),
@@ -29,7 +29,7 @@ pub const ATERM: &'static [(char, char)] =
pub const CR: &'static [(char, char)] = &[('\r', '\r')];
pub const CLOSE: &'static [(char, char)] = &[
- ('\"', '\"'),
+ ('"', '"'),
('\'', ')'),
('[', '['),
(']', ']'),
@@ -57,6 +57,7 @@ pub const CLOSE: &'static [(char, char)] = &[
('⸜', '⸝'),
('⸠', '⸩'),
('⹂', '⹂'),
+ ('⹕', '⹜'),
('〈', '】'),
('〔', '〛'),
('〝', '〟'),
@@ -100,7 +101,8 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{825}', '\u{827}'),
('\u{829}', '\u{82d}'),
('\u{859}', '\u{85b}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('\u{898}', '\u{89f}'),
+ ('\u{8ca}', '\u{8e1}'),
('\u{8e3}', 'ः'),
('\u{93a}', '\u{93c}'),
('ा', 'ॏ'),
@@ -142,6 +144,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('ொ', '\u{bcd}'),
('\u{bd7}', '\u{bd7}'),
('\u{c00}', '\u{c04}'),
+ ('\u{c3c}', '\u{c3c}'),
('\u{c3e}', 'ౄ'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
@@ -193,13 +196,14 @@ pub const EXTEND: &'static [(char, char)] = &[
('ႏ', 'ႏ'),
('ႚ', '\u{109d}'),
('\u{135d}', '\u{135f}'),
- ('\u{1712}', '\u{1714}'),
- ('\u{1732}', '\u{1734}'),
+ ('\u{1712}', '᜕'),
+ ('\u{1732}', '᜴'),
('\u{1752}', '\u{1753}'),
('\u{1772}', '\u{1773}'),
('\u{17b4}', '\u{17d3}'),
('\u{17dd}', '\u{17dd}'),
('\u{180b}', '\u{180d}'),
+ ('\u{180f}', '\u{180f}'),
('\u{1885}', '\u{1886}'),
('\u{18a9}', '\u{18a9}'),
('\u{1920}', 'ᤫ'),
@@ -208,7 +212,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('ᩕ', '\u{1a5e}'),
('\u{1a60}', '\u{1a7c}'),
('\u{1a7f}', '\u{1a7f}'),
- ('\u{1ab0}', '\u{1ac0}'),
+ ('\u{1ab0}', '\u{1ace}'),
('\u{1b00}', 'ᬄ'),
('\u{1b34}', '᭄'),
('\u{1b6b}', '\u{1b73}'),
@@ -221,8 +225,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{1ced}', '\u{1ced}'),
('\u{1cf4}', '\u{1cf4}'),
('᳷', '\u{1cf9}'),
- ('\u{1dc0}', '\u{1df9}'),
- ('\u{1dfb}', '\u{1dff}'),
+ ('\u{1dc0}', '\u{1dff}'),
('\u{200c}', '\u{200d}'),
('\u{20d0}', '\u{20f0}'),
('\u{2cef}', '\u{2cf1}'),
@@ -277,10 +280,14 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{10d24}', '\u{10d27}'),
('\u{10eab}', '\u{10eac}'),
('\u{10f46}', '\u{10f50}'),
+ ('\u{10f82}', '\u{10f85}'),
('𑀀', '𑀂'),
('\u{11038}', '\u{11046}'),
+ ('\u{11070}', '\u{11070}'),
+ ('\u{11073}', '\u{11074}'),
('\u{1107f}', '𑂂'),
('𑂰', '\u{110ba}'),
+ ('\u{110c2}', '\u{110c2}'),
('\u{11100}', '\u{11102}'),
('\u{11127}', '\u{11134}'),
('𑅅', '𑅆'),
@@ -288,7 +295,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{11180}', '𑆂'),
('𑆳', '𑇀'),
('\u{111c9}', '\u{111cc}'),
- ('\u{111ce}', '\u{111cf}'),
+ ('𑇎', '\u{111cf}'),
('𑈬', '\u{11237}'),
('\u{1123e}', '\u{1123e}'),
('\u{112df}', '\u{112ea}'),
@@ -311,11 +318,11 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{116ab}', '\u{116b7}'),
('\u{1171d}', '\u{1172b}'),
('𑠬', '\u{1183a}'),
- ('\u{11930}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
+ ('\u{11930}', '𑤵'),
+ ('𑤷', '𑤸'),
('\u{1193b}', '\u{1193e}'),
- ('\u{11940}', '\u{11940}'),
- ('\u{11942}', '\u{11943}'),
+ ('𑥀', '𑥀'),
+ ('𑥂', '\u{11943}'),
('𑧑', '\u{119d7}'),
('\u{119da}', '\u{119e0}'),
('𑧤', '𑧤'),
@@ -344,8 +351,10 @@ pub const EXTEND: &'static [(char, char)] = &[
('𖽑', '𖾇'),
('\u{16f8f}', '\u{16f92}'),
('\u{16fe4}', '\u{16fe4}'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('\u{1bc9d}', '\u{1bc9e}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d165}', '\u{1d169}'),
('𝅭', '\u{1d172}'),
('\u{1d17b}', '\u{1d182}'),
@@ -364,6 +373,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{1e023}', '\u{1e024}'),
('\u{1e026}', '\u{1e02a}'),
('\u{1e130}', '\u{1e136}'),
+ ('\u{1e2ae}', '\u{1e2ae}'),
('\u{1e2ec}', '\u{1e2ef}'),
('\u{1e8d0}', '\u{1e8d6}'),
('\u{1e944}', '\u{1e94a}'),
@@ -377,6 +387,7 @@ pub const FORMAT: &'static [(char, char)] = &[
('\u{61c}', '\u{61c}'),
('\u{6dd}', '\u{6dd}'),
('\u{70f}', '\u{70f}'),
+ ('\u{890}', '\u{891}'),
('\u{8e2}', '\u{8e2}'),
('\u{180e}', '\u{180e}'),
('\u{200b}', '\u{200b}'),
@@ -833,7 +844,7 @@ pub const LOWER: &'static [(char, char)] = &[
('ⅰ', 'ⅿ'),
('ↄ', 'ↄ'),
('ⓐ', 'ⓩ'),
- ('ⰰ', 'ⱞ'),
+ ('ⰰ', 'ⱟ'),
('ⱡ', 'ⱡ'),
('ⱥ', 'ⱦ'),
('ⱨ', 'ⱨ'),
@@ -1001,19 +1012,33 @@ pub const LOWER: &'static [(char, char)] = &[
('ꞻ', 'ꞻ'),
('ꞽ', 'ꞽ'),
('ꞿ', 'ꞿ'),
+ ('ꟁ', 'ꟁ'),
('ꟃ', 'ꟃ'),
- ('\u{a7c8}', '\u{a7c8}'),
- ('\u{a7ca}', '\u{a7ca}'),
- ('\u{a7f6}', '\u{a7f6}'),
+ ('ꟈ', 'ꟈ'),
+ ('ꟊ', 'ꟊ'),
+ ('ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟕ'),
+ ('ꟗ', 'ꟗ'),
+ ('ꟙ', 'ꟙ'),
+ ('ꟶ', 'ꟶ'),
('ꟸ', 'ꟺ'),
('ꬰ', 'ꭚ'),
- ('ꭜ', '\u{ab68}'),
+ ('ꭜ', 'ꭨ'),
('ꭰ', 'ꮿ'),
('ff', 'st'),
('ﬓ', 'ﬗ'),
('a', 'z'),
('𐐨', '𐑏'),
('𐓘', '𐓻'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
+ ('𐞀', '𐞀'),
+ ('𐞃', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐳀', '𐳲'),
('𑣀', '𑣟'),
('𖹠', '𖹿'),
@@ -1045,6 +1070,8 @@ pub const LOWER: &'static [(char, char)] = &[
('𝞪', '𝟂'),
('𝟄', '𝟉'),
('𝟋', '𝟋'),
+ ('𝼀', '𝼉'),
+ ('𝼋', '𝼞'),
('𞤢', '𞥃'),
];
@@ -1100,17 +1127,18 @@ pub const NUMERIC: &'static [(char, char)] = &[
('𑛀', '𑛉'),
('𑜰', '𑜹'),
('𑣠', '𑣩'),
- ('\u{11950}', '\u{11959}'),
+ ('𑥐', '𑥙'),
('𑱐', '𑱙'),
('𑵐', '𑵙'),
('𑶠', '𑶩'),
('𖩠', '𖩩'),
+ ('𖫀', '𖫉'),
('𖭐', '𖭙'),
('𝟎', '𝟿'),
('𞅀', '𞅉'),
('𞋰', '𞋹'),
('𞥐', '𞥙'),
- ('\u{1fbf0}', '\u{1fbf9}'),
+ ('🯰', '🯹'),
];
pub const OLETTER: &'static [(char, char)] = &[
@@ -1146,8 +1174,9 @@ pub const OLETTER: &'static [(char, char)] = &[
('ࠨ', 'ࠨ'),
('ࡀ', 'ࡘ'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
+ ('ࡰ', 'ࢇ'),
+ ('ࢉ', 'ࢎ'),
+ ('ࢠ', 'ࣉ'),
('ऄ', 'ह'),
('ऽ', 'ऽ'),
('ॐ', 'ॐ'),
@@ -1212,6 +1241,7 @@ pub const OLETTER: &'static [(char, char)] = &[
('ప', 'హ'),
('ఽ', 'ఽ'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', 'ౡ'),
('ಀ', 'ಀ'),
('ಅ', 'ಌ'),
@@ -1220,10 +1250,10 @@ pub const OLETTER: &'static [(char, char)] = &[
('ಪ', 'ಳ'),
('ವ', 'ಹ'),
('ಽ', 'ಽ'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', 'ೡ'),
('ೱ', 'ೲ'),
- ('\u{d04}', 'ഌ'),
+ ('ഄ', 'ഌ'),
('എ', 'ഐ'),
('ഒ', 'ഺ'),
('ഽ', 'ഽ'),
@@ -1286,9 +1316,8 @@ pub const OLETTER: &'static [(char, char)] = &[
('ᚁ', 'ᚚ'),
('ᚠ', 'ᛪ'),
('ᛮ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', 'ᜑ'),
- ('ᜠ', 'ᜱ'),
+ ('ᜀ', 'ᜑ'),
+ ('ᜟ', 'ᜱ'),
('ᝀ', 'ᝑ'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -1309,7 +1338,7 @@ pub const OLETTER: &'static [(char, char)] = &[
('ᨠ', 'ᩔ'),
('ᪧ', 'ᪧ'),
('ᬅ', 'ᬳ'),
- ('ᭅ', 'ᭋ'),
+ ('ᭅ', 'ᭌ'),
('ᮃ', 'ᮠ'),
('ᮮ', 'ᮯ'),
('ᮺ', 'ᯥ'),
@@ -1347,11 +1376,10 @@ pub const OLETTER: &'static [(char, char)] = &[
('ー', 'ヿ'),
('ㄅ', 'ㄯ'),
('ㄱ', 'ㆎ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('ㇰ', 'ㇿ'),
- ('㐀', '\u{4dbf}'),
- ('一', '\u{9ffc}'),
- ('ꀀ', 'ꒌ'),
+ ('㐀', '䶿'),
+ ('一', 'ꒌ'),
('ꓐ', 'ꓽ'),
('ꔀ', 'ꘌ'),
('ꘐ', 'ꘟ'),
@@ -1362,6 +1390,7 @@ pub const OLETTER: &'static [(char, char)] = &[
('ꜗ', 'ꜟ'),
('ꞈ', 'ꞈ'),
('ꞏ', 'ꞏ'),
+ ('ꟲ', 'ꟴ'),
('ꟷ', 'ꟷ'),
('ꟻ', 'ꠁ'),
('ꠃ', 'ꠅ'),
@@ -1399,7 +1428,7 @@ pub const OLETTER: &'static [(char, char)] = &[
('ꬑ', 'ꬖ'),
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
- ('\u{ab69}', '\u{ab69}'),
+ ('ꭩ', 'ꭩ'),
('ꯀ', 'ꯢ'),
('가', '힣'),
('ힰ', 'ퟆ'),
@@ -1449,6 +1478,7 @@ pub const OLETTER: &'static [(char, char)] = &[
('𐘀', '𐜶'),
('𐝀', '𐝕'),
('𐝠', '𐝧'),
+ ('𐞁', '𐞂'),
('𐠀', '𐠅'),
('𐠈', '𐠈'),
('𐠊', '𐠵'),
@@ -1477,19 +1507,22 @@ pub const OLETTER: &'static [(char, char)] = &[
('𐮀', '𐮑'),
('𐰀', '𐱈'),
('𐴀', '𐴣'),
- ('\u{10e80}', '\u{10ea9}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺀', '𐺩'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼜'),
('𐼧', '𐼧'),
('𐼰', '𐽅'),
- ('\u{10fb0}', '\u{10fc4}'),
+ ('𐽰', '𐾁'),
+ ('𐾰', '𐿄'),
('𐿠', '𐿶'),
('𑀃', '𑀷'),
+ ('𑁱', '𑁲'),
+ ('𑁵', '𑁵'),
('𑂃', '𑂯'),
('𑃐', '𑃨'),
('𑄃', '𑄦'),
('𑅄', '𑅄'),
- ('\u{11147}', '\u{11147}'),
+ ('𑅇', '𑅇'),
('𑅐', '𑅲'),
('𑅶', '𑅶'),
('𑆃', '𑆲'),
@@ -1515,7 +1548,7 @@ pub const OLETTER: &'static [(char, char)] = &[
('𑍝', '𑍡'),
('𑐀', '𑐴'),
('𑑇', '𑑊'),
- ('𑑟', '\u{11461}'),
+ ('𑑟', '𑑡'),
('𑒀', '𑒯'),
('𑓄', '𑓅'),
('𑓇', '𑓇'),
@@ -1526,14 +1559,15 @@ pub const OLETTER: &'static [(char, char)] = &[
('𑚀', '𑚪'),
('𑚸', '𑚸'),
('𑜀', '𑜚'),
+ ('𑝀', '𑝆'),
('𑠀', '𑠫'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{1192f}'),
- ('\u{1193f}', '\u{1193f}'),
- ('\u{11941}', '\u{11941}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤯'),
+ ('𑤿', '𑤿'),
+ ('𑥁', '𑥁'),
('𑦠', '𑦧'),
('𑦪', '𑧐'),
('𑧡', '𑧡'),
@@ -1544,7 +1578,7 @@ pub const OLETTER: &'static [(char, char)] = &[
('𑩐', '𑩐'),
('𑩜', '𑪉'),
('𑪝', '𑪝'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '𑰮'),
('𑱀', '𑱀'),
@@ -1558,14 +1592,16 @@ pub const OLETTER: &'static [(char, char)] = &[
('𑵪', '𑶉'),
('𑶘', '𑶘'),
('𑻠', '𑻲'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𒀀', '𒎙'),
('𒐀', '𒑮'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿰'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
+ ('𖩰', '𖪾'),
('𖫐', '𖫭'),
('𖬀', '𖬯'),
('𖭀', '𖭃'),
@@ -1577,9 +1613,12 @@ pub const OLETTER: &'static [(char, char)] = &[
('𖿠', '𖿡'),
('𖿣', '𖿣'),
('𗀀', '𘟷'),
- ('𘠀', '\u{18cd5}'),
- ('\u{18d00}', '\u{18d08}'),
- ('𛀀', '𛄞'),
+ ('𘠀', '𘳕'),
+ ('𘴀', '𘴈'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
+ ('𛀀', '𛄢'),
('𛅐', '𛅒'),
('𛅤', '𛅧'),
('𛅰', '𛋻'),
@@ -1587,10 +1626,16 @@ pub const OLETTER: &'static [(char, char)] = &[
('𛱰', '𛱼'),
('𛲀', '𛲈'),
('𛲐', '𛲙'),
+ ('𝼊', '𝼊'),
('𞄀', '𞄬'),
('𞄷', '𞄽'),
('𞅎', '𞅎'),
+ ('𞊐', '𞊭'),
('𞋀', '𞋫'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('𞥋', '𞥋'),
('𞸀', '𞸃'),
@@ -1626,13 +1671,13 @@ pub const OLETTER: &'static [(char, char)] = &[
('𞺡', '𞺣'),
('𞺥', '𞺩'),
('𞺫', '𞺻'),
- ('𠀀', '\u{2a6dd}'),
- ('𪜀', '𫜴'),
+ ('𠀀', '𪛟'),
+ ('𪜀', '𫜸'),
('𫝀', '𫠝'),
('𫠠', '𬺡'),
('𬺰', '𮯠'),
('丽', '𪘀'),
- ('\u{30000}', '\u{3134a}'),
+ ('𰀀', '𱍊'),
];
pub const SCONTINUE: &'static [(char, char)] = &[
@@ -1661,7 +1706,7 @@ pub const STERM: &'static [(char, char)] = &[
('!', '!'),
('?', '?'),
('։', '։'),
- ('؞', '؟'),
+ ('؝', '؟'),
('۔', '۔'),
('܀', '܂'),
('߹', '߹'),
@@ -1680,12 +1725,14 @@ pub const STERM: &'static [(char, char)] = &[
('᪨', '᪫'),
('᭚', '᭛'),
('᭞', '᭟'),
+ ('᭽', '᭾'),
('᰻', '᰼'),
('᱾', '᱿'),
('‼', '‽'),
('⁇', '⁉'),
('⸮', '⸮'),
('⸼', '⸼'),
+ ('⹓', '⹔'),
('。', '。'),
('꓿', '꓿'),
('꘎', '꘏'),
@@ -1704,6 +1751,7 @@ pub const STERM: &'static [(char, char)] = &[
('。', '。'),
('𐩖', '𐩗'),
('𐽕', '𐽙'),
+ ('𐾆', '𐾉'),
('𑁇', '𑁈'),
('𑂾', '𑃁'),
('𑅁', '𑅃'),
@@ -1718,8 +1766,8 @@ pub const STERM: &'static [(char, char)] = &[
('𑗉', '𑗗'),
('𑙁', '𑙂'),
('𑜼', '𑜾'),
- ('\u{11944}', '\u{11944}'),
- ('\u{11946}', '\u{11946}'),
+ ('𑥄', '𑥄'),
+ ('𑥆', '𑥆'),
('𑩂', '𑩃'),
('𑪛', '𑪜'),
('𑱁', '𑱂'),
@@ -2183,7 +2231,7 @@ pub const UPPER: &'static [(char, char)] = &[
('Ⅰ', 'Ⅿ'),
('Ↄ', 'Ↄ'),
('Ⓐ', 'Ⓩ'),
- ('Ⰰ', 'Ⱞ'),
+ ('Ⰰ', 'Ⱟ'),
('Ⱡ', 'Ⱡ'),
('Ɫ', 'Ɽ'),
('Ⱨ', 'Ⱨ'),
@@ -2348,13 +2396,21 @@ pub const UPPER: &'static [(char, char)] = &[
('Ꞻ', 'Ꞻ'),
('Ꞽ', 'Ꞽ'),
('Ꞿ', 'Ꞿ'),
+ ('Ꟁ', 'Ꟁ'),
('Ꟃ', 'Ꟃ'),
- ('Ꞔ', '\u{a7c7}'),
- ('\u{a7c9}', '\u{a7c9}'),
- ('\u{a7f5}', '\u{a7f5}'),
+ ('Ꞔ', 'Ꟈ'),
+ ('Ꟊ', 'Ꟊ'),
+ ('Ꟑ', 'Ꟑ'),
+ ('Ꟗ', 'Ꟗ'),
+ ('Ꟙ', 'Ꟙ'),
+ ('Ꟶ', 'Ꟶ'),
('A', 'Z'),
('𐐀', '𐐧'),
('𐒰', '𐓓'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
('𐲀', '𐲲'),
('𑢠', '𑢿'),
('𖹀', '𖹟'),
diff --git a/vendor/regex-syntax/src/unicode_tables/word_break.rs b/vendor/regex-syntax/src/unicode_tables/word_break.rs
index bd23e00a8..19b2a1c64 100644
--- a/vendor/regex-syntax/src/unicode_tables/word_break.rs
+++ b/vendor/regex-syntax/src/unicode_tables/word_break.rs
@@ -1,10 +1,10 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
-// ucd-generate word-break ucd-13.0.0 --chars
+// ucd-generate word-break /tmp/ucd --chars
//
-// Unicode version: 13.0.0.
+// Unicode version: 14.0.0.
//
-// ucd-generate 0.2.8 is available on crates.io.
+// ucd-generate 0.2.11 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static [(char, char)])] = &[
("ALetter", ALETTER),
@@ -75,8 +75,9 @@ pub const ALETTER: &'static [(char, char)] = &[
('ࠨ', 'ࠨ'),
('ࡀ', 'ࡘ'),
('ࡠ', 'ࡪ'),
- ('ࢠ', 'ࢴ'),
- ('ࢶ', '\u{8c7}'),
+ ('ࡰ', 'ࢇ'),
+ ('ࢉ', 'ࢎ'),
+ ('ࢠ', 'ࣉ'),
('ऄ', 'ह'),
('ऽ', 'ऽ'),
('ॐ', 'ॐ'),
@@ -141,6 +142,7 @@ pub const ALETTER: &'static [(char, char)] = &[
('ప', 'హ'),
('ఽ', 'ఽ'),
('ౘ', 'ౚ'),
+ ('ౝ', 'ౝ'),
('ౠ', 'ౡ'),
('ಀ', 'ಀ'),
('ಅ', 'ಌ'),
@@ -149,10 +151,10 @@ pub const ALETTER: &'static [(char, char)] = &[
('ಪ', 'ಳ'),
('ವ', 'ಹ'),
('ಽ', 'ಽ'),
- ('ೞ', 'ೞ'),
+ ('ೝ', 'ೞ'),
('ೠ', 'ೡ'),
('ೱ', 'ೲ'),
- ('\u{d04}', 'ഌ'),
+ ('ഄ', 'ഌ'),
('എ', 'ഐ'),
('ഒ', 'ഺ'),
('ഽ', 'ഽ'),
@@ -197,9 +199,8 @@ pub const ALETTER: &'static [(char, char)] = &[
('ᚁ', 'ᚚ'),
('ᚠ', 'ᛪ'),
('ᛮ', 'ᛸ'),
- ('ᜀ', 'ᜌ'),
- ('ᜎ', 'ᜑ'),
- ('ᜠ', 'ᜱ'),
+ ('ᜀ', 'ᜑ'),
+ ('ᜟ', 'ᜱ'),
('ᝀ', 'ᝑ'),
('ᝠ', 'ᝬ'),
('ᝮ', 'ᝰ'),
@@ -211,7 +212,7 @@ pub const ALETTER: &'static [(char, char)] = &[
('ᤀ', 'ᤞ'),
('ᨀ', 'ᨖ'),
('ᬅ', 'ᬳ'),
- ('ᭅ', 'ᭋ'),
+ ('ᭅ', 'ᭌ'),
('ᮃ', 'ᮠ'),
('ᮮ', 'ᮯ'),
('ᮺ', 'ᯥ'),
@@ -263,9 +264,7 @@ pub const ALETTER: &'static [(char, char)] = &[
('ⅎ', 'ⅎ'),
('Ⅰ', 'ↈ'),
('Ⓐ', 'ⓩ'),
- ('Ⰰ', 'Ⱞ'),
- ('ⰰ', 'ⱞ'),
- ('Ⱡ', 'ⳤ'),
+ ('Ⰰ', 'ⳤ'),
('Ⳬ', 'ⳮ'),
('Ⳳ', 'ⳳ'),
('ⴀ', 'ⴥ'),
@@ -287,7 +286,7 @@ pub const ALETTER: &'static [(char, char)] = &[
('〻', '〼'),
('ㄅ', 'ㄯ'),
('ㄱ', 'ㆎ'),
- ('ㆠ', '\u{31bf}'),
+ ('ㆠ', 'ㆿ'),
('ꀀ', 'ꒌ'),
('ꓐ', 'ꓽ'),
('ꔀ', 'ꘌ'),
@@ -296,9 +295,11 @@ pub const ALETTER: &'static [(char, char)] = &[
('Ꙁ', 'ꙮ'),
('ꙿ', 'ꚝ'),
('ꚠ', 'ꛯ'),
- ('꜈', 'ꞿ'),
- ('Ꟃ', '\u{a7ca}'),
- ('\u{a7f5}', 'ꠁ'),
+ ('꜈', 'ꟊ'),
+ ('Ꟑ', 'ꟑ'),
+ ('ꟓ', 'ꟓ'),
+ ('ꟕ', 'ꟙ'),
+ ('ꟲ', 'ꠁ'),
('ꠃ', 'ꠅ'),
('ꠇ', 'ꠊ'),
('ꠌ', 'ꠢ'),
@@ -322,7 +323,7 @@ pub const ALETTER: &'static [(char, char)] = &[
('ꬑ', 'ꬖ'),
('ꬠ', 'ꬦ'),
('ꬨ', 'ꬮ'),
- ('ꬰ', '\u{ab69}'),
+ ('ꬰ', 'ꭩ'),
('ꭰ', 'ꯢ'),
('가', '힣'),
('ힰ', 'ퟆ'),
@@ -365,9 +366,20 @@ pub const ALETTER: &'static [(char, char)] = &[
('𐓘', '𐓻'),
('𐔀', '𐔧'),
('𐔰', '𐕣'),
+ ('𐕰', '𐕺'),
+ ('𐕼', '𐖊'),
+ ('𐖌', '𐖒'),
+ ('𐖔', '𐖕'),
+ ('𐖗', '𐖡'),
+ ('𐖣', '𐖱'),
+ ('𐖳', '𐖹'),
+ ('𐖻', '𐖼'),
('𐘀', '𐜶'),
('𐝀', '𐝕'),
('𐝠', '𐝧'),
+ ('𐞀', '𐞅'),
+ ('𐞇', '𐞰'),
+ ('𐞲', '𐞺'),
('𐠀', '𐠅'),
('𐠈', '𐠈'),
('𐠊', '𐠵'),
@@ -398,19 +410,22 @@ pub const ALETTER: &'static [(char, char)] = &[
('𐲀', '𐲲'),
('𐳀', '𐳲'),
('𐴀', '𐴣'),
- ('\u{10e80}', '\u{10ea9}'),
- ('\u{10eb0}', '\u{10eb1}'),
+ ('𐺀', '𐺩'),
+ ('𐺰', '𐺱'),
('𐼀', '𐼜'),
('𐼧', '𐼧'),
('𐼰', '𐽅'),
- ('\u{10fb0}', '\u{10fc4}'),
+ ('𐽰', '𐾁'),
+ ('𐾰', '𐿄'),
('𐿠', '𐿶'),
('𑀃', '𑀷'),
+ ('𑁱', '𑁲'),
+ ('𑁵', '𑁵'),
('𑂃', '𑂯'),
('𑃐', '𑃨'),
('𑄃', '𑄦'),
('𑅄', '𑅄'),
- ('\u{11147}', '\u{11147}'),
+ ('𑅇', '𑅇'),
('𑅐', '𑅲'),
('𑅶', '𑅶'),
('𑆃', '𑆲'),
@@ -436,7 +451,7 @@ pub const ALETTER: &'static [(char, char)] = &[
('𑍝', '𑍡'),
('𑐀', '𑐴'),
('𑑇', '𑑊'),
- ('𑑟', '\u{11461}'),
+ ('𑑟', '𑑡'),
('𑒀', '𑒯'),
('𑓄', '𑓅'),
('𑓇', '𑓇'),
@@ -448,13 +463,13 @@ pub const ALETTER: &'static [(char, char)] = &[
('𑚸', '𑚸'),
('𑠀', '𑠫'),
('𑢠', '𑣟'),
- ('𑣿', '\u{11906}'),
- ('\u{11909}', '\u{11909}'),
- ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'),
- ('\u{11918}', '\u{1192f}'),
- ('\u{1193f}', '\u{1193f}'),
- ('\u{11941}', '\u{11941}'),
+ ('𑣿', '𑤆'),
+ ('𑤉', '𑤉'),
+ ('𑤌', '𑤓'),
+ ('𑤕', '𑤖'),
+ ('𑤘', '𑤯'),
+ ('𑤿', '𑤿'),
+ ('𑥁', '𑥁'),
('𑦠', '𑦧'),
('𑦪', '𑧐'),
('𑧡', '𑧡'),
@@ -465,7 +480,7 @@ pub const ALETTER: &'static [(char, char)] = &[
('𑩐', '𑩐'),
('𑩜', '𑪉'),
('𑪝', '𑪝'),
- ('𑫀', '𑫸'),
+ ('𑪰', '𑫸'),
('𑰀', '𑰈'),
('𑰊', '𑰮'),
('𑱀', '𑱀'),
@@ -479,14 +494,16 @@ pub const ALETTER: &'static [(char, char)] = &[
('𑵪', '𑶉'),
('𑶘', '𑶘'),
('𑻠', '𑻲'),
- ('\u{11fb0}', '\u{11fb0}'),
+ ('𑾰', '𑾰'),
('𒀀', '𒎙'),
('𒐀', '𒑮'),
('𒒀', '𒕃'),
+ ('𒾐', '𒿰'),
('𓀀', '𓐮'),
('𔐀', '𔙆'),
('𖠀', '𖨸'),
('𖩀', '𖩞'),
+ ('𖩰', '𖪾'),
('𖫐', '𖫭'),
('𖬀', '𖬯'),
('𖭀', '𖭃'),
@@ -532,10 +549,16 @@ pub const ALETTER: &'static [(char, char)] = &[
('𝞊', '𝞨'),
('𝞪', '𝟂'),
('𝟄', '𝟋'),
+ ('𝼀', '𝼞'),
('𞄀', '𞄬'),
('𞄷', '𞄽'),
('𞅎', '𞅎'),
+ ('𞊐', '𞊭'),
('𞋀', '𞋫'),
+ ('𞟠', '𞟦'),
+ ('𞟨', '𞟫'),
+ ('𞟭', '𞟮'),
+ ('𞟰', '𞟾'),
('𞠀', '𞣄'),
('𞤀', '𞥃'),
('𞥋', '𞥋'),
@@ -579,7 +602,7 @@ pub const ALETTER: &'static [(char, char)] = &[
pub const CR: &'static [(char, char)] = &[('\r', '\r')];
-pub const DOUBLE_QUOTE: &'static [(char, char)] = &[('\"', '\"')];
+pub const DOUBLE_QUOTE: &'static [(char, char)] = &[('"', '"')];
pub const EXTEND: &'static [(char, char)] = &[
('\u{300}', '\u{36f}'),
@@ -606,7 +629,8 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{825}', '\u{827}'),
('\u{829}', '\u{82d}'),
('\u{859}', '\u{85b}'),
- ('\u{8d3}', '\u{8e1}'),
+ ('\u{898}', '\u{89f}'),
+ ('\u{8ca}', '\u{8e1}'),
('\u{8e3}', 'ः'),
('\u{93a}', '\u{93c}'),
('ा', 'ॏ'),
@@ -648,6 +672,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('ொ', '\u{bcd}'),
('\u{bd7}', '\u{bd7}'),
('\u{c00}', '\u{c04}'),
+ ('\u{c3c}', '\u{c3c}'),
('\u{c3e}', 'ౄ'),
('\u{c46}', '\u{c48}'),
('\u{c4a}', '\u{c4d}'),
@@ -699,13 +724,14 @@ pub const EXTEND: &'static [(char, char)] = &[
('ႏ', 'ႏ'),
('ႚ', '\u{109d}'),
('\u{135d}', '\u{135f}'),
- ('\u{1712}', '\u{1714}'),
- ('\u{1732}', '\u{1734}'),
+ ('\u{1712}', '᜕'),
+ ('\u{1732}', '᜴'),
('\u{1752}', '\u{1753}'),
('\u{1772}', '\u{1773}'),
('\u{17b4}', '\u{17d3}'),
('\u{17dd}', '\u{17dd}'),
('\u{180b}', '\u{180d}'),
+ ('\u{180f}', '\u{180f}'),
('\u{1885}', '\u{1886}'),
('\u{18a9}', '\u{18a9}'),
('\u{1920}', 'ᤫ'),
@@ -714,7 +740,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('ᩕ', '\u{1a5e}'),
('\u{1a60}', '\u{1a7c}'),
('\u{1a7f}', '\u{1a7f}'),
- ('\u{1ab0}', '\u{1ac0}'),
+ ('\u{1ab0}', '\u{1ace}'),
('\u{1b00}', 'ᬄ'),
('\u{1b34}', '᭄'),
('\u{1b6b}', '\u{1b73}'),
@@ -727,8 +753,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{1ced}', '\u{1ced}'),
('\u{1cf4}', '\u{1cf4}'),
('᳷', '\u{1cf9}'),
- ('\u{1dc0}', '\u{1df9}'),
- ('\u{1dfb}', '\u{1dff}'),
+ ('\u{1dc0}', '\u{1dff}'),
('\u{200c}', '\u{200c}'),
('\u{20d0}', '\u{20f0}'),
('\u{2cef}', '\u{2cf1}'),
@@ -783,10 +808,14 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{10d24}', '\u{10d27}'),
('\u{10eab}', '\u{10eac}'),
('\u{10f46}', '\u{10f50}'),
+ ('\u{10f82}', '\u{10f85}'),
('𑀀', '𑀂'),
('\u{11038}', '\u{11046}'),
+ ('\u{11070}', '\u{11070}'),
+ ('\u{11073}', '\u{11074}'),
('\u{1107f}', '𑂂'),
('𑂰', '\u{110ba}'),
+ ('\u{110c2}', '\u{110c2}'),
('\u{11100}', '\u{11102}'),
('\u{11127}', '\u{11134}'),
('𑅅', '𑅆'),
@@ -794,7 +823,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{11180}', '𑆂'),
('𑆳', '𑇀'),
('\u{111c9}', '\u{111cc}'),
- ('\u{111ce}', '\u{111cf}'),
+ ('𑇎', '\u{111cf}'),
('𑈬', '\u{11237}'),
('\u{1123e}', '\u{1123e}'),
('\u{112df}', '\u{112ea}'),
@@ -817,11 +846,11 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{116ab}', '\u{116b7}'),
('\u{1171d}', '\u{1172b}'),
('𑠬', '\u{1183a}'),
- ('\u{11930}', '\u{11935}'),
- ('\u{11937}', '\u{11938}'),
+ ('\u{11930}', '𑤵'),
+ ('𑤷', '𑤸'),
('\u{1193b}', '\u{1193e}'),
- ('\u{11940}', '\u{11940}'),
- ('\u{11942}', '\u{11943}'),
+ ('𑥀', '𑥀'),
+ ('𑥂', '\u{11943}'),
('𑧑', '\u{119d7}'),
('\u{119da}', '\u{119e0}'),
('𑧤', '𑧤'),
@@ -850,8 +879,10 @@ pub const EXTEND: &'static [(char, char)] = &[
('𖽑', '𖾇'),
('\u{16f8f}', '\u{16f92}'),
('\u{16fe4}', '\u{16fe4}'),
- ('\u{16ff0}', '\u{16ff1}'),
+ ('𖿰', '𖿱'),
('\u{1bc9d}', '\u{1bc9e}'),
+ ('\u{1cf00}', '\u{1cf2d}'),
+ ('\u{1cf30}', '\u{1cf46}'),
('\u{1d165}', '\u{1d169}'),
('𝅭', '\u{1d172}'),
('\u{1d17b}', '\u{1d182}'),
@@ -870,6 +901,7 @@ pub const EXTEND: &'static [(char, char)] = &[
('\u{1e023}', '\u{1e024}'),
('\u{1e026}', '\u{1e02a}'),
('\u{1e130}', '\u{1e136}'),
+ ('\u{1e2ae}', '\u{1e2ae}'),
('\u{1e2ec}', '\u{1e2ef}'),
('\u{1e8d0}', '\u{1e8d6}'),
('\u{1e944}', '\u{1e94a}'),
@@ -894,6 +926,7 @@ pub const FORMAT: &'static [(char, char)] = &[
('\u{61c}', '\u{61c}'),
('\u{6dd}', '\u{6dd}'),
('\u{70f}', '\u{70f}'),
+ ('\u{890}', '\u{891}'),
('\u{8e2}', '\u{8e2}'),
('\u{180e}', '\u{180e}'),
('\u{200e}', '\u{200f}'),
@@ -932,7 +965,11 @@ pub const KATAKANA: &'static [(char, char)] = &[
('㋐', '㋾'),
('㌀', '㍗'),
('ヲ', 'ン'),
+ ('𚿰', '𚿳'),
+ ('𚿵', '𚿻'),
+ ('𚿽', '𚿾'),
('𛀀', '𛀀'),
+ ('𛄠', '𛄢'),
('𛅤', '𛅧'),
];
@@ -1031,17 +1068,18 @@ pub const NUMERIC: &'static [(char, char)] = &[
('𑛀', '𑛉'),
('𑜰', '𑜹'),
('𑣠', '𑣩'),
- ('\u{11950}', '\u{11959}'),
+ ('𑥐', '𑥙'),
('𑱐', '𑱙'),
('𑵐', '𑵙'),
('𑶠', '𑶩'),
('𖩠', '𖩩'),
+ ('𖫀', '𖫉'),
('𖭐', '𖭙'),
('𝟎', '𝟿'),
('𞅀', '𞅉'),
('𞋰', '𞋹'),
('𞥐', '𞥙'),
- ('\u{1fbf0}', '\u{1fbf9}'),
+ ('🯰', '🯹'),
];
pub const REGIONAL_INDICATOR: &'static [(char, char)] = &[('🇦', '🇿')];
diff --git a/vendor/regex-syntax/src/utf8.rs b/vendor/regex-syntax/src/utf8.rs
index dc055033e..b9c865532 100644
--- a/vendor/regex-syntax/src/utf8.rs
+++ b/vendor/regex-syntax/src/utf8.rs
@@ -198,7 +198,7 @@ impl<'a> IntoIterator for &'a Utf8Sequence {
type Item = &'a Utf8Range;
fn into_iter(self) -> Self::IntoIter {
- self.as_slice().into_iter()
+ self.as_slice().iter()
}
}
@@ -448,7 +448,7 @@ fn max_scalar_value(nbytes: usize) -> u32 {
1 => 0x007F,
2 => 0x07FF,
3 => 0xFFFF,
- 4 => 0x10FFFF,
+ 4 => 0x0010_FFFF,
_ => unreachable!("invalid UTF-8 byte sequence size"),
}
}
@@ -492,7 +492,7 @@ mod tests {
fn single_codepoint_one_sequence() {
// Tests that every range of scalar values that contains a single
// scalar value is recognized by one sequence of byte ranges.
- for i in 0x0..(0x10FFFF + 1) {
+ for i in 0x0..=0x0010_FFFF {
let c = match char::from_u32(i) {
None => continue,
Some(c) => c,
diff --git a/vendor/regex/.cargo-checksum.json b/vendor/regex/.cargo-checksum.json
index f05551b4f..463368b15 100644
--- a/vendor/regex/.cargo-checksum.json
+++ b/vendor/regex/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"34a39916f7d2c49f8e779257a906bab6500dda007dbb42188f31ad72c8ba9bef","Cargo.lock":"5cacc641e7eae4988d6f45ad69dee331358bfd7bc7c1180c0e1ff5fae6d4a969","Cargo.toml":"1f360fc3a09b65707c76b5c8409733718abd5e46a970b33e5d0dc09b9078c12a","HACKING.md":"17818f7a17723608f6bdbe6388ad0a913d4f96f76a16649aaf4e274b1fa0ea97","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","PERFORMANCE.md":"0d5ef3866386918dfdefb1aa9a28cfe33cb3c8ceeb79f3f8ba5b88253dd95991","README.md":"6125b1c70b9b560412529c54dc6aacdfd39cc82f69b5ad7776fa86e4cb720347","UNICODE.md":"a8a8399540eed000d19420135a527f400247a04572e44d124c786b870f518776","examples/regexdna-input.txt":"156a49710bb3e1ed4bc2bbb0af0f383b747b3d0281453cfff39c296124c598f8","examples/regexdna-output.txt":"35e85b19b70a893d752fd43e54e1e9da08bac43559191cea85b33387c24c4cc1","examples/shootout-regex-dna-bytes.rs":"fa2daedb4e0a05f64f33f4af62fbb0176db998e3676f8637ab684b725367a7b4","examples/shootout-regex-dna-cheat.rs":"1f871a6eaaf8372299fa3c762051112fa89a14235b03f734fc50ebd51ecaee72","examples/shootout-regex-dna-replace.rs":"32ffdf13ac6c4ce3fc32116a048e9cc682aa34cdb8e5beaf565a22addbdcd9ab","examples/shootout-regex-dna-single-cheat.rs":"809f75bf1e1917a53623eb6f1a3ce3b7d2ed98a6a1dbc0bd4853bec49a0c6f94","examples/shootout-regex-dna-single.rs":"1ab14f5703cd4be2e75a2e792e0ba1d322b9e4b14535d396805a4316d577f5bb","examples/shootout-regex-dna.rs":"20ea46ab63f91e3ac6a64e997eadd436a9cbc2f1bdade28e4512052f0e25bc34","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/backtrack.rs":"9018950f86564184a5dafd869a6c2cb3c4538ff302adbeccac33015f6e88f904","src/compile.rs":"5c834c2125abc10d0de3c377e34b1f2e2c10b837809631b1c688d3b536368cfd","src/dfa.rs":"2dfed56e1bd3506d328a3d2031aaa15dd87a7561f92f1a9fc1946a14cfbb64ae","src/error.rs":"71c85db839514f26ee024a689061743ea94a34eb7a3291e6c2b69b45a9682d09","src/exec.rs":"88b49098761db539e717c2965d2f56908c81aa10d91873d29a08484be7a11218","src/expand.rs":"ccba4798bd48ce40c34e91318f12258f46d8382e178a2c2b31c0d03b1ab51c5b","src/find_byte.rs":"b387247b77e3269f057c3399aefe5a815032c3af918c876f80eb4b282e4eb95e","src/freqs.rs":"255555f3d95b08a5bb3bc2f38d5a06cc100a39c0f0127fe4f50c33afa1cadc65","src/input.rs":"69595d1ea8d35351f5065ffdbf5965427d2e3fb5160a37008fa7e21d0eaa7720","src/lib.rs":"20bc28509e1853faea9581d43b21bc3ab144bb776e47fda4560082c4673854a6","src/literal/imp.rs":"5f73e0bcbee70c11041deca5ae84a8d30995963f452b29dd2fe5ab46d4978c12","src/literal/mod.rs":"533f1d68af088e9485170145e27518368e541a0337fdb44f63249ebf97310300","src/pattern.rs":"6f5909315f4542a989d9b1cee0bb3bc5b6749a665d73e32ec1c8ec4d71b78fac","src/pikevm.rs":"83423e5a94ea36e99dc6f69891ab200c1d0dadd3389ee296a816ec8d68bf556f","src/pool.rs":"942e991ae31ef349bd76efd78b2a712c01166dec965bf93742977ed0870d5a10","src/prog.rs":"78a02dcc1fc7b1d4f37a4a4eeb075eb5cc84aea1736e4de3a2cc7449a9ce5103","src/re_builder.rs":"943344bf6e2fc90902ee04b11b741c32418ac6814b21b7982cc0a3a817713f3e","src/re_bytes.rs":"c19bf2df00024e91f6f2b68be2d8971e847d6f16d7b949a04d2569736b1cdadb","src/re_set.rs":"a0cb76fafe7e33ea8c7b65aae53fa3432fc1651be186218b2284cb3c002ea966","src/re_trait.rs":"1c209fe30392b957f1bdcacdb900f222fc761a2e1634ab1c3f4ee97f315a0c22","src/re_unicode.rs":"122df2eecd8727a4169fe7efb0925a1767fdfa2e290d9b90ca0beaa137b5abfa","src/sparse.rs":"0da3ddb7972109869248a764dbb10254555f4bb51c375e89fb3fab9cafa47320","src/testdata/LICENSE":"58cf078acc03da3e280a938c2bd9943f554fc9b6ced89ad93ba35ca436872899","src/testdata/README":"45f869e37f798905c773bfbe0ef19a5fb7e585cbf0b7c21b5b5a784e8cec3c14","src/testdata/basic.dat":"b5b33aa89d48a61cd67cb1fbfd8f70e62c83e30b86256f9f915a5190dd38ff06","src/testdata/nullsubexpr.dat":"496ac0278eec3b6d9170faace14554569032dd3d909618364d9326156de39ecf","src/testdata/repetition.dat":"1f7959063015b284b18a4a2c1c8b416d438a2d6c4b1a362da43406b865f50e69","src/utf8.rs":"708615a4859110cc9766b342a9c1da6c5c4a8a04ad239046b2725385db977efe","test":"0d62fdca7da12fc19ea5306b5de1d83e68d9365a029c043d524334da138b0304","tests/api.rs":"7b2a0ef75e99b9776094967bd66e9cdeaa8e11359f5f0a12bd08ef0e8d0c11fc","tests/api_str.rs":"2ae38c04e7e8fac008b609a820d0b1561ba75f39b0edc0987d6d3d06132da77f","tests/bytes.rs":"edc50f526c5fee43df89d639ef18b237e4eb91e9d533bfc43f3cbab7417d38ba","tests/consistent.rs":"d69435154c09478076497216e43081a835ac65147181a4fbddad7bff469605b2","tests/crates_regex.rs":"91a59d470e0700b4bcb3ff735d06799f3107b8ef4875a2e9904607b164be0326","tests/crazy.rs":"c0d56380dff19bdd5d7a3eb731d0e2dc564e169a1b73c81e1879b1e87f5f5f77","tests/flags.rs":"05caace2c81a99d2168037f3a38035d4dffe9f85ef3ebd7ef18b1bc6612f1ea8","tests/fowler.rs":"d78cf914de40b1e125cc92b65ccb444d462586bd07b5e05de4e4a1b5de16aa76","tests/macros.rs":"6db70c16fc90df13e6b30d2b606f8b6dd4dc976697967f6ee001b15aab6d0b19","tests/macros_bytes.rs":"a049f528a93173a1bb176cd46932dce1880679f4a1752e099be920f0e4546fd0","tests/macros_str.rs":"e585b1461374c45a2eca44ca045bc3c1fe984b2b4212e432b0c695b420e708b7","tests/misc.rs":"395f52793fa022e4cdda78675b6a6fba1a3106b4b99c834c39f7801574054bd1","tests/multiline.rs":"1b1a3326ed976437c1357f01d81833ece7ea244f38826246eab55cacd5d0862a","tests/noparse.rs":"12b6be0eff3d80779d33c6459396c74c0f6ebf4ddc9f1d33c3e747ea9e3bf268","tests/regression.rs":"1c965fefb8c7a2b1dfdab3e3fdeebaf47846555c50c8005e5537f96a52a3e252","tests/regression_fuzz.rs":"a504ec563e0d23bd2039493b7b1767fe1f831d7d668f6f4b2ecd124fc7899bcd","tests/replace.rs":"0efa042c0d531911e8ac41ce98a6b60236cbf40954102c59f9f6dea78d9d74dd","tests/searcher.rs":"ce35e47b0a276a7e8c9060c6a0b225ffba163aebc61fbc15555a6897fa0e552c","tests/set.rs":"f1e2af6baeeaed3cc99ed347ff516fe7b2eb0027ef64b891502e1486598eaf8a","tests/shortest_match.rs":"a2c94390c0d61bc24796b4c1288c924e90c8c9c6156fdebb858175177a194a42","tests/suffix_reverse.rs":"b95f89397404871227d9efe6df23b9ded147f183db81597e608f693955c668b5","tests/test_backtrack.rs":"b70c5e5f1241efd76dd9f9dd4a4df8a7b38113bd407d1f5f56867f1176177a59","tests/test_backtrack_bytes.rs":"b8a111d4b4109c8bba7e2afb650572c495a14d357fb1f743c1076fb001f704b5","tests/test_backtrack_utf8bytes.rs":"c0c279785d18beac2b4e178e7bf6c14ed235d65f00ca467cfd9c333d79487649","tests/test_crates_regex.rs":"fd9525c2eef0e2f8cb7f787bc2b721bcd0b5d84f3bca49adfe48d657a99c721a","tests/test_default.rs":"c2dfa0298896f86f1be2abf6b0c347a7ca12f95aeac92bf614dc3b86bdfff269","tests/test_default_bytes.rs":"831d3e6bfb882feb15f700e30304bd34328f888fb4c15c7169371e25024ce9a7","tests/test_nfa.rs":"f119fc43a018249c39c813d57096b0654ff69f337345f2bbd9b0e61cc9137285","tests/test_nfa_bytes.rs":"89eae3bef6a1d0bcea6b5de5be35ad72f613f2ceb8b58fe82a6c6ef2ccdc07d0","tests/test_nfa_utf8bytes.rs":"7d830b4aa401887d7cf098b62fed4cd8017ef8b61f625c7c9a2159a6b4cfeb71","tests/unicode.rs":"4bf85f5c3d547fa8b5623194a09b6413067499dfbe7c1d29d8b50bf1cddacf6b","tests/word_boundary.rs":"7081317ddcec1e82dd4a2090a571c6abf2ff4bbfa8cd10395e1eb3f386157fae","tests/word_boundary_ascii.rs":"cd0be5b5b485de0ba7994b42e2864585556c3d2d8bf5eab05b58931d9aaf4b87","tests/word_boundary_unicode.rs":"75dbcc35d3abc0f9795c2ea99e216dc227b0a5b58e9ca5eef767815ff0513921"},"package":"d83f127d94bdbcda4c8cc2e50f6f84f4b611f69c902699ca385a39c3a75f9ff1"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"1034edbdcb6cbd83b9e9a1dc3dfcdfd6c852112ab402a1cc83734191ea7b3a29","Cargo.lock":"27cdf849031e8c491581b3a436b119e2cd0106fcd94e159fc84751d3337b1684","Cargo.toml":"4a10b9986b5b858cb6ff3a8537492f4b6f7394289b991e182bfc10ad29c3323b","HACKING.md":"17818f7a17723608f6bdbe6388ad0a913d4f96f76a16649aaf4e274b1fa0ea97","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","PERFORMANCE.md":"0d5ef3866386918dfdefb1aa9a28cfe33cb3c8ceeb79f3f8ba5b88253dd95991","README.md":"6125b1c70b9b560412529c54dc6aacdfd39cc82f69b5ad7776fa86e4cb720347","UNICODE.md":"a8a8399540eed000d19420135a527f400247a04572e44d124c786b870f518776","examples/regexdna-input.txt":"156a49710bb3e1ed4bc2bbb0af0f383b747b3d0281453cfff39c296124c598f8","examples/regexdna-output.txt":"35e85b19b70a893d752fd43e54e1e9da08bac43559191cea85b33387c24c4cc1","examples/shootout-regex-dna-bytes.rs":"fa2daedb4e0a05f64f33f4af62fbb0176db998e3676f8637ab684b725367a7b4","examples/shootout-regex-dna-cheat.rs":"1f871a6eaaf8372299fa3c762051112fa89a14235b03f734fc50ebd51ecaee72","examples/shootout-regex-dna-replace.rs":"32ffdf13ac6c4ce3fc32116a048e9cc682aa34cdb8e5beaf565a22addbdcd9ab","examples/shootout-regex-dna-single-cheat.rs":"809f75bf1e1917a53623eb6f1a3ce3b7d2ed98a6a1dbc0bd4853bec49a0c6f94","examples/shootout-regex-dna-single.rs":"1ab14f5703cd4be2e75a2e792e0ba1d322b9e4b14535d396805a4316d577f5bb","examples/shootout-regex-dna.rs":"20ea46ab63f91e3ac6a64e997eadd436a9cbc2f1bdade28e4512052f0e25bc34","rustfmt.toml":"1ca600239a27401c4a43f363cf3f38183a212affc1f31bff3ae93234bbaec228","src/backtrack.rs":"52987d80448f3d7f5d4e3545ddfc09f1f30de7602d9b5489961db4b215a377fd","src/compile.rs":"79a59be2d2db650b5a322e15e9bf1d3227944410bc780fc6089da8f4d2609b77","src/dfa.rs":"10273980d1f08aaff495e11efa240249a2b2c08a4db7c49c8d6759bc65a3b174","src/error.rs":"71c85db839514f26ee024a689061743ea94a34eb7a3291e6c2b69b45a9682d09","src/exec.rs":"21495ab6813598204a444aeea3a0121674081389fd0f07fc3443eb8858b1c677","src/expand.rs":"71220309a3bac797f55129f49e79c03e96efec894ea338c735b78695367e04ca","src/find_byte.rs":"b387247b77e3269f057c3399aefe5a815032c3af918c876f80eb4b282e4eb95e","src/freqs.rs":"255555f3d95b08a5bb3bc2f38d5a06cc100a39c0f0127fe4f50c33afa1cadc65","src/input.rs":"13f49c1bce2fadd04a45b421d374cd0f8b72bef83f7e8fda958962aaccbe799a","src/lib.rs":"de28e1ad68d4b35750667c7fbb47915e6c159ef04b148f16c3507a0a7a682f96","src/literal/imp.rs":"b7f63a861c299bea4baaab17353a420ee339c2cf76d3858c95f39342bd4463e7","src/literal/mod.rs":"533f1d68af088e9485170145e27518368e541a0337fdb44f63249ebf97310300","src/pattern.rs":"993d8b6b4bcea5e02bee3c76e17c356a5a47f8fc53c5555edfd1ebb71c0878bf","src/pikevm.rs":"6c0eaa7e878c945ac4c3c545c98f5706ad04846fc432a5086c8ee78eb030dfa7","src/pool.rs":"942e991ae31ef349bd76efd78b2a712c01166dec965bf93742977ed0870d5a10","src/prog.rs":"bebb3e50745bbc05d6c8240d972ba55a1818c51b1161dc1c21f3fe13c11d4884","src/re_builder.rs":"943344bf6e2fc90902ee04b11b741c32418ac6814b21b7982cc0a3a817713f3e","src/re_bytes.rs":"e2eddc896cea1e878716e77798a8146a67d1d8d9bcf4d053155c1caf3b8f5518","src/re_set.rs":"7921ac4a919b7a5deffe82d099a9ccaf5487aebd890dfb7a661e602c6ad3f1a9","src/re_trait.rs":"d237121b6f6b606836c72305cbcb3bbdbc54d1f6827d19a19cd0fbb4372e0145","src/re_unicode.rs":"ba4d793ff194bfd33a3735e3664c7590f5f166c452e7632a25e4558ffba14e5a","src/sparse.rs":"0da3ddb7972109869248a764dbb10254555f4bb51c375e89fb3fab9cafa47320","src/testdata/LICENSE":"58cf078acc03da3e280a938c2bd9943f554fc9b6ced89ad93ba35ca436872899","src/testdata/README":"45f869e37f798905c773bfbe0ef19a5fb7e585cbf0b7c21b5b5a784e8cec3c14","src/testdata/basic.dat":"b5b33aa89d48a61cd67cb1fbfd8f70e62c83e30b86256f9f915a5190dd38ff06","src/testdata/nullsubexpr.dat":"496ac0278eec3b6d9170faace14554569032dd3d909618364d9326156de39ecf","src/testdata/repetition.dat":"1f7959063015b284b18a4a2c1c8b416d438a2d6c4b1a362da43406b865f50e69","src/utf8.rs":"f85a356ff5d5b19e417b73ce1dd84581b21d283f6dddd195547c30af9c60bd1a","test":"0d62fdca7da12fc19ea5306b5de1d83e68d9365a029c043d524334da138b0304","tests/api.rs":"7b2a0ef75e99b9776094967bd66e9cdeaa8e11359f5f0a12bd08ef0e8d0c11fc","tests/api_str.rs":"2ae38c04e7e8fac008b609a820d0b1561ba75f39b0edc0987d6d3d06132da77f","tests/bytes.rs":"edc50f526c5fee43df89d639ef18b237e4eb91e9d533bfc43f3cbab7417d38ba","tests/consistent.rs":"d69435154c09478076497216e43081a835ac65147181a4fbddad7bff469605b2","tests/crates_regex.rs":"91a59d470e0700b4bcb3ff735d06799f3107b8ef4875a2e9904607b164be0326","tests/crazy.rs":"c0d56380dff19bdd5d7a3eb731d0e2dc564e169a1b73c81e1879b1e87f5f5f77","tests/flags.rs":"05caace2c81a99d2168037f3a38035d4dffe9f85ef3ebd7ef18b1bc6612f1ea8","tests/fowler.rs":"d78cf914de40b1e125cc92b65ccb444d462586bd07b5e05de4e4a1b5de16aa76","tests/macros.rs":"6db70c16fc90df13e6b30d2b606f8b6dd4dc976697967f6ee001b15aab6d0b19","tests/macros_bytes.rs":"a049f528a93173a1bb176cd46932dce1880679f4a1752e099be920f0e4546fd0","tests/macros_str.rs":"e585b1461374c45a2eca44ca045bc3c1fe984b2b4212e432b0c695b420e708b7","tests/misc.rs":"395f52793fa022e4cdda78675b6a6fba1a3106b4b99c834c39f7801574054bd1","tests/multiline.rs":"1b1a3326ed976437c1357f01d81833ece7ea244f38826246eab55cacd5d0862a","tests/noparse.rs":"12b6be0eff3d80779d33c6459396c74c0f6ebf4ddc9f1d33c3e747ea9e3bf268","tests/regression.rs":"1c965fefb8c7a2b1dfdab3e3fdeebaf47846555c50c8005e5537f96a52a3e252","tests/regression_fuzz.rs":"a504ec563e0d23bd2039493b7b1767fe1f831d7d668f6f4b2ecd124fc7899bcd","tests/replace.rs":"0efa042c0d531911e8ac41ce98a6b60236cbf40954102c59f9f6dea78d9d74dd","tests/searcher.rs":"ce35e47b0a276a7e8c9060c6a0b225ffba163aebc61fbc15555a6897fa0e552c","tests/set.rs":"f1e2af6baeeaed3cc99ed347ff516fe7b2eb0027ef64b891502e1486598eaf8a","tests/shortest_match.rs":"a2c94390c0d61bc24796b4c1288c924e90c8c9c6156fdebb858175177a194a42","tests/suffix_reverse.rs":"b95f89397404871227d9efe6df23b9ded147f183db81597e608f693955c668b5","tests/test_backtrack.rs":"b70c5e5f1241efd76dd9f9dd4a4df8a7b38113bd407d1f5f56867f1176177a59","tests/test_backtrack_bytes.rs":"b8a111d4b4109c8bba7e2afb650572c495a14d357fb1f743c1076fb001f704b5","tests/test_backtrack_utf8bytes.rs":"c0c279785d18beac2b4e178e7bf6c14ed235d65f00ca467cfd9c333d79487649","tests/test_crates_regex.rs":"fd9525c2eef0e2f8cb7f787bc2b721bcd0b5d84f3bca49adfe48d657a99c721a","tests/test_default.rs":"c2dfa0298896f86f1be2abf6b0c347a7ca12f95aeac92bf614dc3b86bdfff269","tests/test_default_bytes.rs":"831d3e6bfb882feb15f700e30304bd34328f888fb4c15c7169371e25024ce9a7","tests/test_nfa.rs":"f119fc43a018249c39c813d57096b0654ff69f337345f2bbd9b0e61cc9137285","tests/test_nfa_bytes.rs":"89eae3bef6a1d0bcea6b5de5be35ad72f613f2ceb8b58fe82a6c6ef2ccdc07d0","tests/test_nfa_utf8bytes.rs":"7d830b4aa401887d7cf098b62fed4cd8017ef8b61f625c7c9a2159a6b4cfeb71","tests/unicode.rs":"1af9db7f09a6b0113b8a64733e06c8415fef720b2fdef227ae398d94332287cd","tests/word_boundary.rs":"7081317ddcec1e82dd4a2090a571c6abf2ff4bbfa8cd10395e1eb3f386157fae","tests/word_boundary_ascii.rs":"cd0be5b5b485de0ba7994b42e2864585556c3d2d8bf5eab05b58931d9aaf4b87","tests/word_boundary_unicode.rs":"75dbcc35d3abc0f9795c2ea99e216dc227b0a5b58e9ca5eef767815ff0513921"},"package":"4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"} \ No newline at end of file
diff --git a/vendor/regex/CHANGELOG.md b/vendor/regex/CHANGELOG.md
index 26f9955b8..f2d45ed73 100644
--- a/vendor/regex/CHANGELOG.md
+++ b/vendor/regex/CHANGELOG.md
@@ -1,3 +1,24 @@
+1.6.0 (2022-07-05)
+==================
+This release principally includes an upgrade to Unicode 14.
+
+New features:
+
+* [FEATURE #832](https://github.com/rust-lang/regex/pull/832):
+ Clarify that `Captures::len` includes all groups, not just matching groups.
+* [FEATURE #857](https://github.com/rust-lang/regex/pull/857):
+ Add an `ExactSizeIterator` impl for `SubCaptureMatches`.
+* [FEATURE #861](https://github.com/rust-lang/regex/pull/861):
+ Improve `RegexSet` documentation examples.
+* [FEATURE #877](https://github.com/rust-lang/regex/issues/877):
+ Upgrade to Unicode 14.
+
+Bug fixes:
+
+* [BUG #792](https://github.com/rust-lang/regex/issues/792):
+ Fix error message rendering bug.
+
+
1.5.6 (2022-05-20)
==================
This release includes a few bug fixes, including a bug that produced incorrect
diff --git a/vendor/regex/Cargo.lock b/vendor/regex/Cargo.lock
index 897a4a32f..fd2c1101d 100644
--- a/vendor/regex/Cargo.lock
+++ b/vendor/regex/Cargo.lock
@@ -19,9 +19,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "getrandom"
-version = "0.2.6"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
+checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
dependencies = [
"cfg-if",
"libc",
@@ -36,9 +36,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
-version = "0.2.125"
+version = "0.2.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b"
+checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
[[package]]
name = "memchr"
@@ -75,7 +75,7 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.5.6"
+version = "1.6.0"
dependencies = [
"aho-corasick",
"lazy_static",
@@ -87,12 +87,12 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.6.26"
+version = "0.6.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49b3de9ec5dc0a3417da371aab17d729997c15010e7fd24ff707773a33bddb64"
+checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
[[package]]
name = "wasi"
-version = "0.10.2+wasi-snapshot-preview1"
+version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
diff --git a/vendor/regex/Cargo.toml b/vendor/regex/Cargo.toml
index 772bdb372..abe6ac033 100644
--- a/vendor/regex/Cargo.toml
+++ b/vendor/regex/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "regex"
-version = "1.5.6"
+version = "1.6.0"
authors = ["The Rust Project Developers"]
exclude = [
"/scripts/*",
@@ -88,7 +88,7 @@ version = "2.4.0"
optional = true
[dependencies.regex-syntax]
-version = "0.6.26"
+version = "0.6.27"
default-features = false
[dev-dependencies.lazy_static]
diff --git a/vendor/regex/src/backtrack.rs b/vendor/regex/src/backtrack.rs
index a3d25d662..4d83856ca 100644
--- a/vendor/regex/src/backtrack.rs
+++ b/vendor/regex/src/backtrack.rs
@@ -93,13 +93,7 @@ impl<'a, 'm, 'r, 's, I: Input> Bounded<'a, 'm, 'r, 's, I> {
let mut cache = cache.borrow_mut();
let cache = &mut cache.backtrack;
let start = input.at(start);
- let mut b = Bounded {
- prog: prog,
- input: input,
- matches: matches,
- slots: slots,
- m: cache,
- };
+ let mut b = Bounded { prog, input, matches, slots, m: cache };
b.exec_(start, end)
}
@@ -220,14 +214,14 @@ impl<'a, 'm, 'r, 's, I: Input> Bounded<'a, 'm, 'r, 's, I> {
// job is popped and the old capture index is restored.
self.m.jobs.push(Job::SaveRestore {
slot: inst.slot,
- old_pos: old_pos,
+ old_pos,
});
self.slots[inst.slot] = Some(at.pos());
}
ip = inst.goto;
}
Split(ref inst) => {
- self.m.jobs.push(Job::Inst { ip: inst.goto2, at: at });
+ self.m.jobs.push(Job::Inst { ip: inst.goto2, at });
ip = inst.goto1;
}
EmptyLook(ref inst) => {
diff --git a/vendor/regex/src/compile.rs b/vendor/regex/src/compile.rs
index 069f445c8..90ca25015 100644
--- a/vendor/regex/src/compile.rs
+++ b/vendor/regex/src/compile.rs
@@ -149,7 +149,8 @@ impl Compiler {
self.compiled.start = dotstar_patch.entry;
}
self.compiled.captures = vec![None];
- let patch = self.c_capture(0, expr)?.unwrap_or(self.next_inst());
+ let patch =
+ self.c_capture(0, expr)?.unwrap_or_else(|| self.next_inst());
if self.compiled.needs_dotstar() {
self.fill(dotstar_patch.hole, patch.entry);
} else {
@@ -185,7 +186,7 @@ impl Compiler {
self.fill_to_next(prev_hole);
let split = self.push_split_hole();
let Patch { hole, entry } =
- self.c_capture(0, expr)?.unwrap_or(self.next_inst());
+ self.c_capture(0, expr)?.unwrap_or_else(|| self.next_inst());
self.fill_to_next(hole);
self.compiled.matches.push(self.insts.len());
self.push_compiled(Inst::Match(i));
@@ -193,7 +194,7 @@ impl Compiler {
}
let i = exprs.len() - 1;
let Patch { hole, entry } =
- self.c_capture(0, &exprs[i])?.unwrap_or(self.next_inst());
+ self.c_capture(0, &exprs[i])?.unwrap_or_else(|| self.next_inst());
self.fill(prev_hole, entry);
self.fill_to_next(hole);
self.compiled.matches.push(self.insts.len());
@@ -410,11 +411,11 @@ impl Compiler {
} else {
let entry = self.insts.len();
let hole = self.push_hole(InstHole::Save { slot: first_slot });
- let patch = self.c(expr)?.unwrap_or(self.next_inst());
+ let patch = self.c(expr)?.unwrap_or_else(|| self.next_inst());
self.fill(hole, patch.entry);
self.fill_to_next(patch.hole);
let hole = self.push_hole(InstHole::Save { slot: first_slot + 1 });
- Ok(Some(Patch { hole: hole, entry: entry }))
+ Ok(Some(Patch { hole, entry }))
}
}
@@ -448,7 +449,7 @@ impl Compiler {
self.c_class(&[hir::ClassUnicodeRange::new(c, c)])
}
} else {
- let hole = self.push_hole(InstHole::Char { c: c });
+ let hole = self.push_hole(InstHole::Char { c });
Ok(Some(Patch { hole, entry: self.insts.len() - 1 }))
}
}
@@ -458,7 +459,7 @@ impl Compiler {
assert!(!ranges.is_empty());
if self.compiled.uses_bytes() {
- Ok(Some(CompileClass { c: self, ranges: ranges }.compile()?))
+ Ok(Some(CompileClass { c: self, ranges }.compile()?))
} else {
let ranges: Vec<(char, char)> =
ranges.iter().map(|r| (r.start(), r.end())).collect();
@@ -467,9 +468,9 @@ impl Compiler {
} else {
self.extra_inst_bytes +=
ranges.len() * (size_of::<char>() * 2);
- self.push_hole(InstHole::Ranges { ranges: ranges })
+ self.push_hole(InstHole::Ranges { ranges })
};
- Ok(Some(Patch { hole: hole, entry: self.insts.len() - 1 }))
+ Ok(Some(Patch { hole, entry: self.insts.len() - 1 }))
}
}
@@ -508,8 +509,8 @@ impl Compiler {
}
fn c_empty_look(&mut self, look: EmptyLook) -> ResultOrEmpty {
- let hole = self.push_hole(InstHole::EmptyLook { look: look });
- Ok(Some(Patch { hole: hole, entry: self.insts.len() - 1 }))
+ let hole = self.push_hole(InstHole::EmptyLook { look });
+ Ok(Some(Patch { hole, entry: self.insts.len() - 1 }))
}
fn c_concat<'a, I>(&mut self, exprs: I) -> ResultOrEmpty
@@ -533,7 +534,7 @@ impl Compiler {
hole = p.hole;
}
}
- Ok(Some(Patch { hole: hole, entry: entry }))
+ Ok(Some(Patch { hole, entry }))
}
fn c_alternate(&mut self, exprs: &[Hir]) -> ResultOrEmpty {
@@ -676,7 +677,7 @@ impl Compiler {
// None).
let patch_concat = self
.c_concat(iter::repeat(expr).take(min))?
- .unwrap_or(self.next_inst());
+ .unwrap_or_else(|| self.next_inst());
if let Some(patch_rep) = self.c_repeat_zero_or_more(expr, greedy)? {
self.fill(patch_concat.hole, patch_rep.entry);
Ok(Some(Patch { hole: patch_rep.hole, entry: patch_concat.entry }))
@@ -700,7 +701,7 @@ impl Compiler {
}
// Same reasoning as in c_repeat_range_min_or_more (we know that min <
// max at this point).
- let patch_concat = patch_concat.unwrap_or(self.next_inst());
+ let patch_concat = patch_concat.unwrap_or_else(|| self.next_inst());
let initial_entry = patch_concat.entry;
// It is much simpler to compile, e.g., `a{2,5}` as:
//
@@ -879,14 +880,14 @@ impl MaybeInst {
}
MaybeInst::Split1(goto1) => {
MaybeInst::Compiled(Inst::Split(InstSplit {
- goto1: goto1,
+ goto1,
goto2: goto,
}))
}
MaybeInst::Split2(goto2) => {
MaybeInst::Compiled(Inst::Split(InstSplit {
goto1: goto,
- goto2: goto2,
+ goto2,
}))
}
_ => unreachable!(
@@ -900,9 +901,7 @@ impl MaybeInst {
fn fill_split(&mut self, goto1: InstPtr, goto2: InstPtr) {
let filled = match *self {
- MaybeInst::Split => {
- Inst::Split(InstSplit { goto1: goto1, goto2: goto2 })
- }
+ MaybeInst::Split => Inst::Split(InstSplit { goto1, goto2 }),
_ => unreachable!(
"must be called on Split instruction, \
instead it was called on: {:?}",
@@ -960,19 +959,17 @@ enum InstHole {
impl InstHole {
fn fill(&self, goto: InstPtr) -> Inst {
match *self {
- InstHole::Save { slot } => {
- Inst::Save(InstSave { goto: goto, slot: slot })
- }
+ InstHole::Save { slot } => Inst::Save(InstSave { goto, slot }),
InstHole::EmptyLook { look } => {
- Inst::EmptyLook(InstEmptyLook { goto: goto, look: look })
+ Inst::EmptyLook(InstEmptyLook { goto, look })
}
- InstHole::Char { c } => Inst::Char(InstChar { goto: goto, c: c }),
+ InstHole::Char { c } => Inst::Char(InstChar { goto, c }),
InstHole::Ranges { ref ranges } => Inst::Ranges(InstRanges {
- goto: goto,
+ goto,
ranges: ranges.clone().into_boxed_slice(),
}),
InstHole::Bytes { start, end } => {
- Inst::Bytes(InstBytes { goto: goto, start: start, end: end })
+ Inst::Bytes(InstBytes { goto, start, end })
}
}
}
@@ -1042,7 +1039,7 @@ impl<'a, 'b> CompileClass<'a, 'b> {
let mut last_hole = Hole::None;
for byte_range in seq {
let key = SuffixCacheKey {
- from_inst: from_inst,
+ from_inst,
start: byte_range.start,
end: byte_range.end,
};
@@ -1132,7 +1129,7 @@ impl SuffixCache {
}
}
*pos = self.dense.len();
- self.dense.push(SuffixCacheEntry { key: key, pc: pc });
+ self.dense.push(SuffixCacheEntry { key, pc });
None
}
@@ -1143,8 +1140,8 @@ impl SuffixCache {
fn hash(&self, suffix: &SuffixCacheKey) -> usize {
// Basic FNV-1a hash as described:
// https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function
- const FNV_PRIME: u64 = 1099511628211;
- let mut h = 14695981039346656037;
+ const FNV_PRIME: u64 = 1_099_511_628_211;
+ let mut h = 14_695_981_039_346_656_037;
h = (h ^ (suffix.from_inst as u64)).wrapping_mul(FNV_PRIME);
h = (h ^ (suffix.start as u64)).wrapping_mul(FNV_PRIME);
h = (h ^ (suffix.end as u64)).wrapping_mul(FNV_PRIME);
diff --git a/vendor/regex/src/dfa.rs b/vendor/regex/src/dfa.rs
index 4aee8039c..dc9952120 100644
--- a/vendor/regex/src/dfa.rs
+++ b/vendor/regex/src/dfa.rs
@@ -31,7 +31,7 @@ considerably more complex than one might expect out of a DFA. A number of
tricks are employed to make it fast. Tread carefully.
N.B. While this implementation is heavily commented, Russ Cox's series of
-articles on regexes is strongly recommended: https://swtch.com/~rsc/regexp/
+articles on regexes is strongly recommended: <https://swtch.com/~rsc/regexp/>
(As is the DFA implementation in RE2, which heavily influenced this
implementation.)
*/
@@ -454,10 +454,10 @@ impl<'a> Fsm<'a> {
let mut cache = cache.borrow_mut();
let cache = &mut cache.dfa;
let mut dfa = Fsm {
- prog: prog,
+ prog,
start: 0, // filled in below
- at: at,
- quit_after_match: quit_after_match,
+ at,
+ quit_after_match,
last_match_si: STATE_UNKNOWN,
last_cache_flush: at,
cache: &mut cache.inner,
@@ -484,10 +484,10 @@ impl<'a> Fsm<'a> {
let mut cache = cache.borrow_mut();
let cache = &mut cache.dfa_reverse;
let mut dfa = Fsm {
- prog: prog,
+ prog,
start: 0, // filled in below
- at: at,
- quit_after_match: quit_after_match,
+ at,
+ quit_after_match,
last_match_si: STATE_UNKNOWN,
last_cache_flush: at,
cache: &mut cache.inner,
@@ -515,9 +515,9 @@ impl<'a> Fsm<'a> {
let mut cache = cache.borrow_mut();
let cache = &mut cache.dfa;
let mut dfa = Fsm {
- prog: prog,
+ prog,
start: 0, // filled in below
- at: at,
+ at,
quit_after_match: false,
last_match_si: STATE_UNKNOWN,
last_cache_flush: at,
@@ -1606,11 +1606,7 @@ struct StateMap {
impl StateMap {
fn new(num_byte_classes: usize) -> StateMap {
- StateMap {
- map: HashMap::new(),
- states: vec![],
- num_byte_classes: num_byte_classes,
- }
+ StateMap { map: HashMap::new(), states: vec![], num_byte_classes }
}
fn len(&self) -> usize {
@@ -1646,7 +1642,7 @@ impl Transitions {
/// The number of byte classes corresponds to the stride. Every state will
/// have `num_byte_classes` slots for transitions.
fn new(num_byte_classes: usize) -> Transitions {
- Transitions { table: vec![], num_byte_classes: num_byte_classes }
+ Transitions { table: vec![], num_byte_classes }
}
/// Returns the total number of states currently in this table.
@@ -1696,27 +1692,27 @@ impl Transitions {
impl StateFlags {
fn is_match(&self) -> bool {
- self.0 & 0b0000000_1 > 0
+ self.0 & 0b0000_0001 > 0
}
fn set_match(&mut self) {
- self.0 |= 0b0000000_1;
+ self.0 |= 0b0000_0001;
}
fn is_word(&self) -> bool {
- self.0 & 0b000000_1_0 > 0
+ self.0 & 0b0000_0010 > 0
}
fn set_word(&mut self) {
- self.0 |= 0b000000_1_0;
+ self.0 |= 0b0000_0010;
}
fn has_empty(&self) -> bool {
- self.0 & 0b00000_1_00 > 0
+ self.0 & 0b0000_0100 > 0
}
fn set_empty(&mut self) {
- self.0 |= 0b00000_1_00;
+ self.0 |= 0b0000_0100;
}
}
diff --git a/vendor/regex/src/exec.rs b/vendor/regex/src/exec.rs
index d5fad1c0e..e75ca083a 100644
--- a/vendor/regex/src/exec.rs
+++ b/vendor/regex/src/exec.rs
@@ -288,10 +288,10 @@ impl ExecBuilder {
exprs.push(expr);
}
Ok(Parsed {
- exprs: exprs,
+ exprs,
prefixes: prefixes.unwrap_or_else(Literals::empty),
suffixes: suffixes.unwrap_or_else(Literals::empty),
- bytes: bytes,
+ bytes,
})
}
@@ -311,7 +311,7 @@ impl ExecBuilder {
match_type: MatchType::Nothing,
});
let pool = ExecReadOnly::new_pool(&ro);
- return Ok(Exec { ro: ro, pool });
+ return Ok(Exec { ro, pool });
}
let parsed = self.parse()?;
let mut nfa = Compiler::new()
@@ -340,12 +340,12 @@ impl ExecBuilder {
let mut ro = ExecReadOnly {
res: self.options.pats,
- nfa: nfa,
- dfa: dfa,
- dfa_reverse: dfa_reverse,
+ nfa,
+ dfa,
+ dfa_reverse,
suffixes: LiteralSearcher::suffixes(parsed.suffixes),
#[cfg(feature = "perf-literal")]
- ac: ac,
+ ac,
match_type: MatchType::Nothing,
};
ro.match_type = ro.choose_match_type(self.match_type);
diff --git a/vendor/regex/src/expand.rs b/vendor/regex/src/expand.rs
index fd9c2d05d..67b514926 100644
--- a/vendor/regex/src/expand.rs
+++ b/vendor/regex/src/expand.rs
@@ -127,7 +127,7 @@ impl From<usize> for Ref<'static> {
/// If no such valid reference could be found, None is returned.
fn find_cap_ref(replacement: &[u8]) -> Option<CaptureRef<'_>> {
let mut i = 0;
- let rep: &[u8] = replacement.as_ref();
+ let rep: &[u8] = replacement;
if rep.len() <= 1 || rep[0] != b'$' {
return None;
}
@@ -136,7 +136,7 @@ fn find_cap_ref(replacement: &[u8]) -> Option<CaptureRef<'_>> {
return find_cap_ref_braced(rep, i + 1);
}
let mut cap_end = i;
- while rep.get(cap_end).map_or(false, is_valid_cap_letter) {
+ while rep.get(cap_end).copied().map_or(false, is_valid_cap_letter) {
cap_end += 1;
}
if cap_end == i {
@@ -183,8 +183,8 @@ fn find_cap_ref_braced(rep: &[u8], mut i: usize) -> Option<CaptureRef<'_>> {
}
/// Returns true if and only if the given byte is allowed in a capture name.
-fn is_valid_cap_letter(b: &u8) -> bool {
- match *b {
+fn is_valid_cap_letter(b: u8) -> bool {
+ match b {
b'0'..=b'9' | b'a'..=b'z' | b'A'..=b'Z' | b'_' => true,
_ => false,
}
diff --git a/vendor/regex/src/input.rs b/vendor/regex/src/input.rs
index 5d50ee340..df6c3e0c9 100644
--- a/vendor/regex/src/input.rs
+++ b/vendor/regex/src/input.rs
@@ -160,7 +160,7 @@ impl<'t> Input for CharInput<'t> {
InputAt { pos: self.len(), c: None.into(), byte: None, len: 0 }
} else {
let c = decode_utf8(&self[i..]).map(|(c, _)| c).into();
- InputAt { pos: i, c: c, byte: None, len: c.len_utf8() }
+ InputAt { pos: i, c, byte: None, len: c.len_utf8() }
}
}
@@ -231,7 +231,7 @@ pub struct ByteInput<'t> {
impl<'t> ByteInput<'t> {
/// Return a new byte-based input reader for the given string.
pub fn new(text: &'t [u8], only_utf8: bool) -> ByteInput<'t> {
- ByteInput { text: text, only_utf8: only_utf8 }
+ ByteInput { text, only_utf8 }
}
}
diff --git a/vendor/regex/src/lib.rs b/vendor/regex/src/lib.rs
index 7f2dec815..3e3b0a007 100644
--- a/vendor/regex/src/lib.rs
+++ b/vendor/regex/src/lib.rs
@@ -628,7 +628,6 @@ pub use crate::re_builder::unicode::*;
#[cfg(feature = "std")]
pub use crate::re_set::unicode::*;
#[cfg(feature = "std")]
-#[cfg(feature = "std")]
pub use crate::re_unicode::{
escape, CaptureLocations, CaptureMatches, CaptureNames, Captures,
Locations, Match, Matches, NoExpand, Regex, Replacer, ReplacerRef, Split,
diff --git a/vendor/regex/src/literal/imp.rs b/vendor/regex/src/literal/imp.rs
index 82f050a0d..90b2f1160 100644
--- a/vendor/regex/src/literal/imp.rs
+++ b/vendor/regex/src/literal/imp.rs
@@ -57,10 +57,10 @@ impl LiteralSearcher {
fn new(lits: Literals, matcher: Matcher) -> Self {
let complete = lits.all_complete();
LiteralSearcher {
- complete: complete,
+ complete,
lcp: Memmem::new(lits.longest_common_prefix()),
lcs: Memmem::new(lits.longest_common_suffix()),
- matcher: matcher,
+ matcher,
}
}
diff --git a/vendor/regex/src/pattern.rs b/vendor/regex/src/pattern.rs
index b4ffd8e16..00549e510 100644
--- a/vendor/regex/src/pattern.rs
+++ b/vendor/regex/src/pattern.rs
@@ -15,7 +15,7 @@ impl<'r, 't> Pattern<'t> for &'r Regex {
fn into_searcher(self, haystack: &'t str) -> RegexSearcher<'r, 't> {
RegexSearcher {
- haystack: haystack,
+ haystack,
it: self.find_iter(haystack),
last_step_end: 0,
next_match: None,
diff --git a/vendor/regex/src/pikevm.rs b/vendor/regex/src/pikevm.rs
index 9a1424086..8c9eac2d3 100644
--- a/vendor/regex/src/pikevm.rs
+++ b/vendor/regex/src/pikevm.rs
@@ -100,7 +100,7 @@ impl<'r, I: Input> Fsm<'r, I> {
cache.clist.resize(prog.len(), prog.captures.len());
cache.nlist.resize(prog.len(), prog.captures.len());
let at = input.at(start);
- Fsm { prog: prog, stack: &mut cache.stack, input: input }.exec_(
+ Fsm { prog, stack: &mut cache.stack, input }.exec_(
&mut cache.clist,
&mut cache.nlist,
matches,
diff --git a/vendor/regex/src/prog.rs b/vendor/regex/src/prog.rs
index 475a8112a..c211f71d8 100644
--- a/vendor/regex/src/prog.rs
+++ b/vendor/regex/src/prog.rs
@@ -233,7 +233,7 @@ impl fmt::Debug for Program {
if pc == self.start {
write!(f, " (start)")?;
}
- write!(f, "\n")?;
+ writeln!(f)?;
}
Ok(())
}
diff --git a/vendor/regex/src/re_bytes.rs b/vendor/regex/src/re_bytes.rs
index ae55d6d25..d71969257 100644
--- a/vendor/regex/src/re_bytes.rs
+++ b/vendor/regex/src/re_bytes.rs
@@ -53,7 +53,7 @@ impl<'t> Match<'t> {
/// Creates a new match from the given haystack and byte offsets.
#[inline]
fn new(haystack: &'t [u8], start: usize, end: usize) -> Match<'t> {
- Match { text: haystack, start: start, end: end }
+ Match { text: haystack, start, end }
}
}
@@ -255,7 +255,7 @@ impl Regex {
pub fn captures<'t>(&self, text: &'t [u8]) -> Option<Captures<'t>> {
let mut locs = self.capture_locations();
self.captures_read_at(&mut locs, text, 0).map(move |_| Captures {
- text: text,
+ text,
locs: locs.0,
named_groups: self.0.capture_name_idx().clone(),
})
@@ -578,7 +578,7 @@ impl Regex {
/// context into consideration. For example, the `\A` anchor can only
/// match when `start == 0`.
pub fn is_match_at(&self, text: &[u8], start: usize) -> bool {
- self.shortest_match_at(text, start).is_some()
+ self.0.searcher().is_match_at(text, start)
}
/// Returns the same as find, but starts the search at the given
@@ -723,7 +723,7 @@ impl<'r, 't> Iterator for CaptureMatches<'r, 't> {
fn next(&mut self) -> Option<Captures<'t>> {
self.0.next().map(|locs| Captures {
text: self.0.text(),
- locs: locs,
+ locs,
named_groups: self.0.regex().capture_name_idx().clone(),
})
}
@@ -877,7 +877,7 @@ impl CaptureLocations {
self.0.pos(i)
}
- /// Returns the total number of capturing groups.
+ /// Returns the total number of capture groups (even if they didn't match).
///
/// This is always at least `1` since every regex has at least `1`
/// capturing group that corresponds to the entire match.
@@ -979,7 +979,7 @@ impl<'t> Captures<'t> {
expand_bytes(self, replacement, dst)
}
- /// Returns the number of captured groups.
+ /// Returns the total number of capture groups (even if they didn't match).
///
/// This is always at least `1`, since every regex has at least one capture
/// group that corresponds to the full match.
diff --git a/vendor/regex/src/re_set.rs b/vendor/regex/src/re_set.rs
index 73d59532e..a6d886d76 100644
--- a/vendor/regex/src/re_set.rs
+++ b/vendor/regex/src/re_set.rs
@@ -59,13 +59,45 @@ $(#[$doc_regexset_example])*
/// 1. Does any regex in the set match?
/// 2. If so, which regexes in the set match?
///
-/// As with the main `Regex` type, it is cheaper to ask (1) instead of (2)
-/// since the matching engines can stop after the first match is found.
+/// As with the main [`Regex`][crate::Regex] type, it is cheaper to ask (1)
+/// instead of (2) since the matching engines can stop after the first match
+/// is found.
///
-/// Other features like finding the location of successive matches or their
-/// sub-captures aren't supported. If you need this functionality, the
-/// recommended approach is to compile each regex in the set independently and
-/// selectively match them based on which regexes in the set matched.
+/// You cannot directly extract [`Match`][crate::Match] or
+/// [`Captures`][crate::Captures] objects from a regex set. If you need these
+/// operations, the recommended approach is to compile each pattern in the set
+/// independently and scan the exact same input a second time with those
+/// independently compiled patterns:
+///
+/// ```rust
+/// use regex::{Regex, RegexSet};
+///
+/// let patterns = ["foo", "bar"];
+/// // Both patterns will match different ranges of this string.
+/// let text = "barfoo";
+///
+/// // Compile a set matching any of our patterns.
+/// let set = RegexSet::new(&patterns).unwrap();
+/// // Compile each pattern independently.
+/// let regexes: Vec<_> = set.patterns().iter()
+/// .map(|pat| Regex::new(pat).unwrap())
+/// .collect();
+///
+/// // Match against the whole set first and identify the individual
+/// // matching patterns.
+/// let matches: Vec<&str> = set.matches(text).into_iter()
+/// // Dereference the match index to get the corresponding
+/// // compiled pattern.
+/// .map(|match_idx| &regexes[match_idx])
+/// // To get match locations or any other info, we then have to search
+/// // the exact same text again, using our separately-compiled pattern.
+/// .map(|pat| pat.find(text).unwrap().as_str())
+/// .collect();
+///
+/// // Matches arrive in the order the constituent patterns were declared,
+/// // not the order they appear in the input.
+/// assert_eq!(vec!["foo", "bar"], matches);
+/// ```
///
/// # Performance
///
diff --git a/vendor/regex/src/re_trait.rs b/vendor/regex/src/re_trait.rs
index 680aa5459..d0c717df5 100644
--- a/vendor/regex/src/re_trait.rs
+++ b/vendor/regex/src/re_trait.rs
@@ -74,8 +74,19 @@ impl<'c> Iterator for SubCapturesPosIter<'c> {
self.idx += 1;
x
}
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let len = self.locs.len() - self.idx;
+ (len, Some(len))
+ }
+
+ fn count(self) -> usize {
+ self.len()
+ }
}
+impl<'c> ExactSizeIterator for SubCapturesPosIter<'c> {}
+
impl<'c> FusedIterator for SubCapturesPosIter<'c> {}
/// `RegularExpression` describes types that can implement regex searching.
@@ -139,7 +150,7 @@ pub trait RegularExpression: Sized + fmt::Debug {
/// Returns an iterator over all non-overlapping successive leftmost-first
/// matches.
fn find_iter(self, text: &Self::Text) -> Matches<'_, Self> {
- Matches { re: self, text: text, last_end: 0, last_match: None }
+ Matches { re: self, text, last_end: 0, last_match: None }
}
/// Returns an iterator over all non-overlapping successive leftmost-first
diff --git a/vendor/regex/src/re_unicode.rs b/vendor/regex/src/re_unicode.rs
index e4871a621..60d81a7d9 100644
--- a/vendor/regex/src/re_unicode.rs
+++ b/vendor/regex/src/re_unicode.rs
@@ -61,7 +61,7 @@ impl<'t> Match<'t> {
/// Creates a new match from the given haystack and byte offsets.
#[inline]
fn new(haystack: &'t str, start: usize, end: usize) -> Match<'t> {
- Match { text: haystack, start: start, end: end }
+ Match { text: haystack, start, end }
}
}
@@ -129,7 +129,7 @@ impl<'t> From<Match<'t>> for Range<usize> {
/// assert!(haystack.contains(&re));
/// assert_eq!(haystack.find(&re), Some(1));
/// assert_eq!(haystack.match_indices(&re).collect::<Vec<_>>(),
-/// vec![(1, 4), (5, 8)]);
+/// vec![(1, "111"), (5, "222")]);
/// assert_eq!(haystack.split(&re).collect::<Vec<_>>(), vec!["a", "b", "c"]);
/// ```
#[derive(Clone)]
@@ -311,7 +311,7 @@ impl Regex {
pub fn captures<'t>(&self, text: &'t str) -> Option<Captures<'t>> {
let mut locs = self.capture_locations();
self.captures_read_at(&mut locs, text, 0).map(move |_| Captures {
- text: text,
+ text,
locs: locs.0,
named_groups: self.0.capture_name_idx().clone(),
})
@@ -636,7 +636,7 @@ impl Regex {
/// context into consideration. For example, the `\A` anchor can only
/// match when `start == 0`.
pub fn is_match_at(&self, text: &str, start: usize) -> bool {
- self.shortest_match_at(text, start).is_some()
+ self.0.searcher_str().is_match_at(text, start)
}
/// Returns the same as find, but starts the search at the given
@@ -887,7 +887,7 @@ impl CaptureLocations {
self.0.pos(i)
}
- /// Returns the total number of capturing groups.
+ /// Returns the total number of capture groups (even if they didn't match).
///
/// This is always at least `1` since every regex has at least `1`
/// capturing group that corresponds to the entire match.
@@ -989,7 +989,7 @@ impl<'t> Captures<'t> {
expand_str(self, replacement, dst)
}
- /// Returns the number of captured groups.
+ /// Returns the total number of capture groups (even if they didn't match).
///
/// This is always at least `1`, since every regex has at least one capture
/// group that corresponds to the full match.
@@ -1092,8 +1092,18 @@ impl<'c, 't> Iterator for SubCaptureMatches<'c, 't> {
.next()
.map(|cap| cap.map(|(s, e)| Match::new(self.caps.text, s, e)))
}
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.it.size_hint()
+ }
+
+ fn count(self) -> usize {
+ self.it.count()
+ }
}
+impl<'c, 't> ExactSizeIterator for SubCaptureMatches<'c, 't> {}
+
impl<'c, 't> FusedIterator for SubCaptureMatches<'c, 't> {}
/// An iterator that yields all non-overlapping capture groups matching a
@@ -1114,7 +1124,7 @@ impl<'r, 't> Iterator for CaptureMatches<'r, 't> {
fn next(&mut self) -> Option<Captures<'t>> {
self.0.next().map(|locs| Captures {
text: self.0.text(),
- locs: locs,
+ locs,
named_groups: self.0.regex().capture_name_idx().clone(),
})
}
diff --git a/vendor/regex/src/utf8.rs b/vendor/regex/src/utf8.rs
index 6e0608fdb..2dfd2c0d1 100644
--- a/vendor/regex/src/utf8.rs
+++ b/vendor/regex/src/utf8.rs
@@ -108,7 +108,7 @@ pub fn decode_utf8(src: &[u8]) -> Option<(char, usize)> {
| ((b2 & !TAG_CONT) as u32) << 6
| ((b3 & !TAG_CONT) as u32);
match cp {
- 0x10000..=0x10FFFF => char::from_u32(cp).map(|cp| (cp, 4)),
+ 0x10000..=0x0010_FFFF => char::from_u32(cp).map(|cp| (cp, 4)),
_ => None,
}
}
diff --git a/vendor/regex/tests/unicode.rs b/vendor/regex/tests/unicode.rs
index 9f1cd0c01..9b3228624 100644
--- a/vendor/regex/tests/unicode.rs
+++ b/vendor/regex/tests/unicode.rs
@@ -232,3 +232,20 @@ mat!(uni_class_sb2, r"\p{sb=lower}", "\u{0469}", Some((0, 2)));
mat!(uni_class_sb3, r"\p{sb=Close}", "\u{FF60}", Some((0, 3)));
mat!(uni_class_sb4, r"\p{sb=Close}", "\u{1F677}", Some((0, 4)));
mat!(uni_class_sb5, r"\p{sb=SContinue}", "\u{FF64}", Some((0, 3)));
+
+// Test 'Vithkuqi' support, which was added in Unicode 14.
+// See: https://github.com/rust-lang/regex/issues/877
+mat!(
+ uni_vithkuqi_literal_upper,
+ r"(?i)^\u{10570}$",
+ "\u{10570}",
+ Some((0, 4))
+);
+mat!(
+ uni_vithkuqi_literal_lower,
+ r"(?i)^\u{10570}$",
+ "\u{10597}",
+ Some((0, 4))
+);
+mat!(uni_vithkuqi_word_upper, r"^\w$", "\u{10570}", Some((0, 4)));
+mat!(uni_vithkuqi_word_lower, r"^\w$", "\u{10597}", Some((0, 4)));
diff --git a/vendor/rowan/.cargo-checksum.json b/vendor/rowan/.cargo-checksum.json
index f2cbdfc1d..82ca4c645 100644
--- a/vendor/rowan/.cargo-checksum.json
+++ b/vendor/rowan/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"d89194369a60b64062043f52664726c5f114542c20c2fbfaafac9fad682c139b","Cargo.toml":"fbd2ff15249776d6bbc4d3646ed0a7681172aad7c7f7a42b512308b7672b43b4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"69657dd291f7b245820ee01fa7bdbfdc5dc2b47284767641ffb8f94e9f9bc522","examples/math.rs":"e7557914686973cc16c6b2736a9934708465ef996b4f0a54fdb454b524641dc9","examples/s_expressions.rs":"6d963a8c030978e2648a059f2dcd5314d9fef47f0dda45e4134caedae1429eee","src/api.rs":"b5d48c0d401014c09ef9d8ee54c849735b1235e5faa798f7291be3d6a8a335c9","src/arc.rs":"fef1aa58a57d167bf4ba99b186b7e9a9c0df8c6096c2f604fbff86430dbaa6e3","src/ast.rs":"6eeedc3fcfb7b1d3d53aa54fc68a8f3bc6381ba2433e12d82b13f51fb5a82446","src/cow_mut.rs":"c90f47a013ae8cfb00bee089b75bbc2e493424e344fb4aaeff78cb2db8558ec2","src/cursor.rs":"b150f5d016aee8b196f5c02af6e7473b32e62f39fc62242dd7adbfddb21f8b69","src/green.rs":"34d58d497d2af2bbd1533aea6b4aa91496d65275b3b6def8dd6f5b1210ec0ce0","src/green/builder.rs":"517e4f6393f8fe6deaabd288f5e5b6a670dc7deec99e5bd92df34cdb4f02db49","src/green/element.rs":"df199a8b6adefef54398f209e7316525eaf84133e952325d46641b66cb89ada9","src/green/node.rs":"02701fc84ad6fdf44bd2c9b63923b0c919ca77acdb09c40d1d2b949830eab185","src/green/node_cache.rs":"f85ca104edb7d2261fd111a6fa4165f076e802aa9414457bdb028788db8dde9d","src/green/token.rs":"a1440de773044e82686dc9173ca7732a6a415a7ba6272c8bc68b3dd896f0cd7b","src/lib.rs":"e0eb1ba73978636b577094ebb726e2e222f347587928ba3930b196b809f17f86","src/serde_impls.rs":"603a459c1e3ad6edd2915e6ef3d103bae36364e01d781a8521486d618ba7b678","src/sll.rs":"f476ecf40629de8f45f5d952a88ebd91f91c71ac635ddc7cd2eebf5a90ce07bf","src/syntax_text.rs":"e387fa481a53aa9dd220a350acabd150daa8440c07ade49ea8a2f69275c6b366","src/utility_types.rs":"ce0874ae3e2b1eccb77025322c4453ceafef983f5d41b442448fb848259edf06","tests/tidy.rs":"15f655d7022a23cea887c6ac52727811f72c7d6a0fd54cdbb0476521ab4fea7f"},"package":"e88acf7b001007e9e8c989fe7449f6601d909e5dd2c56399fc158977ad6c56e8"} \ No newline at end of file
+{"files":{"Cargo.lock":"c9b42773521ed23cc479fbacab073a4facfff8e75d2142c309503c1d4ad7fab5","Cargo.toml":"30d67cf548adf18e21fe99a8b1fe12ce8d5a78efbd1e470745d6fbab513576aa","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"69657dd291f7b245820ee01fa7bdbfdc5dc2b47284767641ffb8f94e9f9bc522","examples/math.rs":"e7557914686973cc16c6b2736a9934708465ef996b4f0a54fdb454b524641dc9","examples/s_expressions.rs":"6d963a8c030978e2648a059f2dcd5314d9fef47f0dda45e4134caedae1429eee","src/api.rs":"b5d48c0d401014c09ef9d8ee54c849735b1235e5faa798f7291be3d6a8a335c9","src/arc.rs":"fef1aa58a57d167bf4ba99b186b7e9a9c0df8c6096c2f604fbff86430dbaa6e3","src/ast.rs":"6eeedc3fcfb7b1d3d53aa54fc68a8f3bc6381ba2433e12d82b13f51fb5a82446","src/cow_mut.rs":"c90f47a013ae8cfb00bee089b75bbc2e493424e344fb4aaeff78cb2db8558ec2","src/cursor.rs":"025684328fb9138bae300e1dec9a7c016640e583ff3729a7d0a34c17854d74cc","src/green.rs":"34d58d497d2af2bbd1533aea6b4aa91496d65275b3b6def8dd6f5b1210ec0ce0","src/green/builder.rs":"517e4f6393f8fe6deaabd288f5e5b6a670dc7deec99e5bd92df34cdb4f02db49","src/green/element.rs":"df199a8b6adefef54398f209e7316525eaf84133e952325d46641b66cb89ada9","src/green/node.rs":"02701fc84ad6fdf44bd2c9b63923b0c919ca77acdb09c40d1d2b949830eab185","src/green/node_cache.rs":"f85ca104edb7d2261fd111a6fa4165f076e802aa9414457bdb028788db8dde9d","src/green/token.rs":"a1440de773044e82686dc9173ca7732a6a415a7ba6272c8bc68b3dd896f0cd7b","src/lib.rs":"e0eb1ba73978636b577094ebb726e2e222f347587928ba3930b196b809f17f86","src/serde_impls.rs":"603a459c1e3ad6edd2915e6ef3d103bae36364e01d781a8521486d618ba7b678","src/sll.rs":"f476ecf40629de8f45f5d952a88ebd91f91c71ac635ddc7cd2eebf5a90ce07bf","src/syntax_text.rs":"e387fa481a53aa9dd220a350acabd150daa8440c07ade49ea8a2f69275c6b366","src/utility_types.rs":"ce0874ae3e2b1eccb77025322c4453ceafef983f5d41b442448fb848259edf06","tests/tidy.rs":"15f655d7022a23cea887c6ac52727811f72c7d6a0fd54cdbb0476521ab4fea7f"},"package":"5811547e7ba31e903fe48c8ceab10d40d70a101f3d15523c847cce91aa71f332"} \ No newline at end of file
diff --git a/vendor/rowan/Cargo.lock b/vendor/rowan/Cargo.lock
index a53655c96..a492ecc3a 100644
--- a/vendor/rowan/Cargo.lock
+++ b/vendor/rowan/Cargo.lock
@@ -4,9 +4,9 @@ version = 3
[[package]]
name = "aho-corasick"
-version = "0.7.18"
+version = "0.7.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
+checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
dependencies = [
"memchr",
]
@@ -72,7 +72,7 @@ checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
[[package]]
name = "rowan"
-version = "0.15.8"
+version = "0.15.10"
dependencies = [
"countme",
"hashbrown",
@@ -91,9 +91,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
name = "serde"
-version = "1.0.140"
+version = "1.0.145"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03"
+checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b"
[[package]]
name = "text-size"
diff --git a/vendor/rowan/Cargo.toml b/vendor/rowan/Cargo.toml
index c717f55d0..44c527d42 100644
--- a/vendor/rowan/Cargo.toml
+++ b/vendor/rowan/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2021"
name = "rowan"
-version = "0.15.8"
+version = "0.15.10"
authors = ["Aleksey Kladov <aleksey.kladov@gmail.com>"]
exclude = [
".github/",
@@ -23,7 +23,6 @@ description = "Library for generic lossless syntax trees"
readme = "README.md"
license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-analyzer/rowan"
-resolver = "2"
[dependencies.countme]
version = "3.0.0"
diff --git a/vendor/rowan/src/cursor.rs b/vendor/rowan/src/cursor.rs
index 39b0c9624..671be2348 100644
--- a/vendor/rowan/src/cursor.rs
+++ b/vendor/rowan/src/cursor.rs
@@ -390,7 +390,7 @@ impl NodeData {
}
fn prev_sibling(&self) -> Option<SyntaxNode> {
let mut rev_siblings = self.green_siblings().enumerate().rev();
- let index = rev_siblings.len() - (self.index() as usize);
+ let index = rev_siblings.len().checked_sub(self.index() as usize + 1)?;
rev_siblings.nth(index);
rev_siblings.find_map(|(index, child)| {
diff --git a/vendor/rustc_tools_util/.cargo-checksum.json b/vendor/rustc_tools_util/.cargo-checksum.json
index dfdd70670..fa6b5aa1b 100644
--- a/vendor/rustc_tools_util/.cargo-checksum.json
+++ b/vendor/rustc_tools_util/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"0b7a46457c09509e3c8b88aa27cb5988a6f944bc9e5491900220d0db2de88b16","README.md":"2a9e75d2e1fac7c92792fc7cef4a571c8fb86f8c99ba5dbd150ad08304757668","src/lib.rs":"9898dbb5d957bd7b13939db6c1181abcf7b1ae1c2fb9b26f6eaa229c211f6580"},"package":"b725dadae9fabc488df69a287f5a99c5eaf5d10853842a8a3dfac52476f544ee"} \ No newline at end of file
+{"files":{"Cargo.toml":"19638c267dcbea07037fae9353aafa031a81bde979a48d3333d7400cabcb0560","LICENSE-APACHE":"7ce8f5804da3116a112112a3b6ace5f58977fccf878d48dc9b108cc5e26c298c","LICENSE-MIT":"f4acf81886b4abbe3b7938d279536763774b1f061cf25881652300726ada3bda","README.md":"f90d8251e2485a4a0b3ab1b136728e429fbde3b7d6ddb222dc58fd3bae169bd1","src/lib.rs":"d2a621ad6319d586b100f796dd3d2bac9624325df4fead4edf62f6486ac8f26a"},"package":"598f48ce2a421542b3e64828aa742b687cc1b91d2f96591cfdb7ac5988cd6366"} \ No newline at end of file
diff --git a/vendor/rustc_tools_util/Cargo.toml b/vendor/rustc_tools_util/Cargo.toml
index d3ec288f0..44a165131 100644
--- a/vendor/rustc_tools_util/Cargo.toml
+++ b/vendor/rustc_tools_util/Cargo.toml
@@ -3,23 +3,30 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
name = "rustc_tools_util"
-version = "0.2.0"
-authors = ["Matthias Krüger <matthias.krueger@famsik.de>"]
+version = "0.2.1"
description = "small helper to generate version information for git packages"
readme = "README.md"
-keywords = ["rustc", "tool", "git", "version", "hash"]
+keywords = [
+ "rustc",
+ "tool",
+ "git",
+ "version",
+ "hash",
+]
categories = ["development-tools"]
-license = "MIT/Apache-2.0"
+license = "MIT OR Apache-2.0"
repository = "https://github.com/rust-lang/rust-clippy"
[dependencies]
+
+[features]
+deny-warnings = []
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-APACHE b/vendor/rustc_tools_util/LICENSE-APACHE
index 16fe87b06..0d62c3727 100644
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-APACHE
+++ b/vendor/rustc_tools_util/LICENSE-APACHE
@@ -186,7 +186,7 @@ APPENDIX: How to apply the Apache License to your work.
same "printed page" as the copyright notice for easier
identification within third-party archives.
-Copyright [yyyy] [name of copyright owner]
+Copyright 2014-2022 The Rust Project Developers
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/vendor/block-padding/LICENSE-MIT b/vendor/rustc_tools_util/LICENSE-MIT
index 502cee6e8..b724b24aa 100644
--- a/vendor/block-padding/LICENSE-MIT
+++ b/vendor/rustc_tools_util/LICENSE-MIT
@@ -1,4 +1,6 @@
-Copyright (c) 2018-2019 The RustCrypto Project Developers
+MIT License
+
+Copyright (c) 2014-2022 The Rust Project Developers
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
diff --git a/vendor/rustc_tools_util/README.md b/vendor/rustc_tools_util/README.md
index 18341ca2f..e947f9c7e 100644
--- a/vendor/rustc_tools_util/README.md
+++ b/vendor/rustc_tools_util/README.md
@@ -6,17 +6,17 @@ for packages installed from a git repo
## Usage
Add a `build.rs` file to your repo and list it in `Cargo.toml`
-````
+````toml
build = "build.rs"
````
List rustc_tools_util as regular AND build dependency.
-````
+````toml
[dependencies]
-rustc_tools_util = "0.1"
+rustc_tools_util = "0.2.1"
[build-dependencies]
-rustc_tools_util = "0.1"
+rustc_tools_util = "0.2.1"
````
In `build.rs`, generate the data in your `main()`
@@ -53,7 +53,7 @@ This gives the following output in clippy:
## License
-Copyright 2014-2019 The Rust Project Developers
+Copyright 2014-2022 The Rust Project Developers
Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
diff --git a/vendor/rustc_tools_util/src/lib.rs b/vendor/rustc_tools_util/src/lib.rs
index ec3b69219..01d25c531 100644
--- a/vendor/rustc_tools_util/src/lib.rs
+++ b/vendor/rustc_tools_util/src/lib.rs
@@ -1,3 +1,5 @@
+#![cfg_attr(feature = "deny-warnings", deny(warnings))]
+
use std::env;
#[macro_export]
@@ -46,8 +48,8 @@ impl std::fmt::Display for VersionInfo {
if (hash_trimmed.len() + date_trimmed.len()) > 0 {
write!(
f,
- "{} {}.{}.{} ({} {})",
- self.crate_name, self.major, self.minor, self.patch, hash_trimmed, date_trimmed,
+ "{} {}.{}.{} ({hash_trimmed} {date_trimmed})",
+ self.crate_name, self.major, self.minor, self.patch,
)?;
} else {
write!(f, "{} {}.{}.{}", self.crate_name, self.major, self.minor, self.patch)?;
@@ -79,25 +81,28 @@ impl std::fmt::Debug for VersionInfo {
}
}
+#[must_use]
pub fn get_commit_hash() -> Option<String> {
std::process::Command::new("git")
- .args(&["rev-parse", "--short", "HEAD"])
+ .args(["rev-parse", "--short", "HEAD"])
.output()
.ok()
.and_then(|r| String::from_utf8(r.stdout).ok())
}
+#[must_use]
pub fn get_commit_date() -> Option<String> {
std::process::Command::new("git")
- .args(&["log", "-1", "--date=short", "--pretty=format:%cd"])
+ .args(["log", "-1", "--date=short", "--pretty=format:%cd"])
.output()
.ok()
.and_then(|r| String::from_utf8(r.stdout).ok())
}
-pub fn get_channel() -> Option<String> {
+#[must_use]
+pub fn get_channel() -> String {
match env::var("CFG_RELEASE_CHANNEL") {
- Ok(channel) => Some(channel),
+ Ok(channel) => channel,
Err(_) => {
// if that failed, try to ask rustc -V, do some parsing and find out
match std::process::Command::new("rustc")
@@ -108,16 +113,16 @@ pub fn get_channel() -> Option<String> {
{
Some(rustc_output) => {
if rustc_output.contains("beta") {
- Some(String::from("beta"))
+ String::from("beta")
} else if rustc_output.contains("stable") {
- Some(String::from("stable"))
+ String::from("stable")
} else {
// default to nightly if we fail to parse
- Some(String::from("nightly"))
+ String::from("nightly")
}
},
// default to nightly
- None => Some(String::from("nightly")),
+ None => String::from("nightly"),
}
},
}
@@ -132,7 +137,7 @@ mod test {
let vi = get_version_info!();
assert_eq!(vi.major, 0);
assert_eq!(vi.minor, 2);
- assert_eq!(vi.patch, 0);
+ assert_eq!(vi.patch, 1);
assert_eq!(vi.crate_name, "rustc_tools_util");
// hard to make positive tests for these since they will always change
assert!(vi.commit_hash.is_none());
@@ -142,17 +147,16 @@ mod test {
#[test]
fn test_display_local() {
let vi = get_version_info!();
- assert_eq!(vi.to_string(), "rustc_tools_util 0.2.0");
+ assert_eq!(vi.to_string(), "rustc_tools_util 0.2.1");
}
#[test]
fn test_debug_local() {
let vi = get_version_info!();
- let s = format!("{:?}", vi);
+ let s = format!("{vi:?}");
assert_eq!(
s,
- "VersionInfo { crate_name: \"rustc_tools_util\", major: 0, minor: 2, patch: 0 }"
+ "VersionInfo { crate_name: \"rustc_tools_util\", major: 0, minor: 2, patch: 1 }"
);
}
-
}
diff --git a/vendor/ryu/.cargo-checksum.json b/vendor/ryu/.cargo-checksum.json
index 979b4adaa..f0feb1916 100644
--- a/vendor/ryu/.cargo-checksum.json
+++ b/vendor/ryu/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"ce968acd12e9496e6626e7adfc454e9bc090f0d568ce3233964ef4082529fcb3","Cargo.toml":"434c11e0ad8ef085792f18f3535b4c0fed91d20f81241817252fe00e7b619534","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-BOOST":"c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566","README.md":"91f2433b0f7134b35703c316a73e145f23d9a44c6e340eb971a72d0a4a87eea8","benches/bench.rs":"703521c8cb9c6959ee305776a9971d24754b6fff5c1737741be04f956a3692e8","examples/upstream_benchmark.rs":"f702d3598a8fac59134a8058ebf74ba90163b1f23ebbd6c5978a7bd8a888d357","src/buffer/mod.rs":"c5adf9aa037271916e78c61c9fd98e3230a0fed1fca15694d4d57166fa697125","src/common.rs":"cae347e97fc30c50a964f80425e8c3e69ece2b8ab81f9b81b9baa7fcec64a001","src/d2s.rs":"83f821f17fd8d2cf72bcc47cc8c603ab24f2377db6cd0f08638031716f8dc17c","src/d2s_full_table.rs":"9b0186acbc6d65dc55c17e16125be707a2bfb920d22b35d33234b4cc38566a36","src/d2s_intrinsics.rs":"658d00a64ce2aca7f0780a1acc5939167e4a66d836b51c46de1047820992fec1","src/d2s_small_table.rs":"7b25cfbf0793d0662d83f5d92a9f880295652db9979b5acf702b313359996508","src/digit_table.rs":"02351ca54cb8cb3679f635115dd094f32fd91750e9f66103c1ee9ec3db507072","src/f2s.rs":"55320c2301680d8be3a908620cccd9d103b0cd3ad7a7d3378589e274ffc2587b","src/f2s_intrinsics.rs":"97bab98093838e30c60f5135f54f5ccb039ff7d9f35553ac8e74437743ca47e2","src/lib.rs":"2ec3fb787f11a492e5d82c90ada3c2ea89c1880ffd281f4e02f769a30cf6e140","src/parse.rs":"7f8aa7e007caf5dcb03abdc4238157724bb742d0823a3b8a01646fa1f1129154","src/pretty/exponent.rs":"6c9aa1c707c567ae338647056e37557a94e5120781ee9f6f64e9c7071ffb50d0","src/pretty/mantissa.rs":"a3eb97fd8928bfabef4523501f204fc7254e948318d727eff8327b9b06e76242","src/pretty/mod.rs":"169c57b14075295b07fa408963c300cefa94fd0b17e098d524ef46535bd84019","src/s2d.rs":"2f572603eedaa9efbe864105999a1ceac8aa4ff4e1d2fbd96127692460194d16","src/s2f.rs":"411b1e5acdeb3d7a29f4fddfdf9ce77e6395475d1c053a05e31482d49e6bf1ee","tests/common_test.rs":"275184cf366f80c11e5f33c2d53065a073e20d81bf71ca70478c89e47fb8da36","tests/d2s_table_test.rs":"54b3a7d40aa9bec03e9dc555d15fb4512ee16a16398b3098a97819fab50c81f3","tests/d2s_test.rs":"39014777edd6e3231095186174c4ef341fd9c12ecc5510765761713b6cac3bb4","tests/exhaustive.rs":"f475ed9008a2cd86ce95abb577a4b01e9fed23fc16f7e217ccffb3b834005fa0","tests/f2s_test.rs":"10940f005e73a42bb106ff498e7a6cc4665d04d82829fef8dc7d0eb36f574e6f","tests/macros/mod.rs":"8e90a674b3960f9516cb38f4eea0e0981ff902c3b33572ebdb6c5528d3ffa72c","tests/s2d_test.rs":"75c3a1044881718db65e05f25c9f6e1d005392dddb2e8dafb799668bb6a9a5c3","tests/s2f_test.rs":"1ec06646cb65229bfe866ec913901a0d8d736668f30b812fc4b00136a43f5142"},"package":"f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695"} \ No newline at end of file
+{"files":{"Cargo.lock":"2717f9b8d4230094a8c92ce37bb7bf56f5f869da3904b5b8f177b0c44f32389f","Cargo.toml":"a022feb14dc0f3979da30277ecce957cfefe78e6638d27882bf4cd1f8106e15f","LICENSE-APACHE":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4","LICENSE-BOOST":"c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566","README.md":"6f91d4158af93dccaf61aab14ba9db78cce0413a70c8d7e63bf2823c0262be28","benches/bench.rs":"703521c8cb9c6959ee305776a9971d24754b6fff5c1737741be04f956a3692e8","examples/upstream_benchmark.rs":"f702d3598a8fac59134a8058ebf74ba90163b1f23ebbd6c5978a7bd8a888d357","src/buffer/mod.rs":"c5adf9aa037271916e78c61c9fd98e3230a0fed1fca15694d4d57166fa697125","src/common.rs":"cae347e97fc30c50a964f80425e8c3e69ece2b8ab81f9b81b9baa7fcec64a001","src/d2s.rs":"83f821f17fd8d2cf72bcc47cc8c603ab24f2377db6cd0f08638031716f8dc17c","src/d2s_full_table.rs":"9b0186acbc6d65dc55c17e16125be707a2bfb920d22b35d33234b4cc38566a36","src/d2s_intrinsics.rs":"658d00a64ce2aca7f0780a1acc5939167e4a66d836b51c46de1047820992fec1","src/d2s_small_table.rs":"7b25cfbf0793d0662d83f5d92a9f880295652db9979b5acf702b313359996508","src/digit_table.rs":"02351ca54cb8cb3679f635115dd094f32fd91750e9f66103c1ee9ec3db507072","src/f2s.rs":"55320c2301680d8be3a908620cccd9d103b0cd3ad7a7d3378589e274ffc2587b","src/f2s_intrinsics.rs":"97bab98093838e30c60f5135f54f5ccb039ff7d9f35553ac8e74437743ca47e2","src/lib.rs":"b4d5d3d390511b01f81df6321aad564d457cf390e6e2276ad3974564a54527ec","src/parse.rs":"7f8aa7e007caf5dcb03abdc4238157724bb742d0823a3b8a01646fa1f1129154","src/pretty/exponent.rs":"6c9aa1c707c567ae338647056e37557a94e5120781ee9f6f64e9c7071ffb50d0","src/pretty/mantissa.rs":"a3eb97fd8928bfabef4523501f204fc7254e948318d727eff8327b9b06e76242","src/pretty/mod.rs":"169c57b14075295b07fa408963c300cefa94fd0b17e098d524ef46535bd84019","src/s2d.rs":"2f572603eedaa9efbe864105999a1ceac8aa4ff4e1d2fbd96127692460194d16","src/s2f.rs":"411b1e5acdeb3d7a29f4fddfdf9ce77e6395475d1c053a05e31482d49e6bf1ee","tests/common_test.rs":"275184cf366f80c11e5f33c2d53065a073e20d81bf71ca70478c89e47fb8da36","tests/d2s_table_test.rs":"54b3a7d40aa9bec03e9dc555d15fb4512ee16a16398b3098a97819fab50c81f3","tests/d2s_test.rs":"39014777edd6e3231095186174c4ef341fd9c12ecc5510765761713b6cac3bb4","tests/exhaustive.rs":"f475ed9008a2cd86ce95abb577a4b01e9fed23fc16f7e217ccffb3b834005fa0","tests/f2s_test.rs":"10940f005e73a42bb106ff498e7a6cc4665d04d82829fef8dc7d0eb36f574e6f","tests/macros/mod.rs":"8e90a674b3960f9516cb38f4eea0e0981ff902c3b33572ebdb6c5528d3ffa72c","tests/s2d_test.rs":"75c3a1044881718db65e05f25c9f6e1d005392dddb2e8dafb799668bb6a9a5c3","tests/s2f_test.rs":"1ec06646cb65229bfe866ec913901a0d8d736668f30b812fc4b00136a43f5142"},"package":"4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09"} \ No newline at end of file
diff --git a/vendor/ryu/Cargo.lock b/vendor/ryu/Cargo.lock
index 9c2b8d67a..0b0ca716a 100644
--- a/vendor/ryu/Cargo.lock
+++ b/vendor/ryu/Cargo.lock
@@ -10,9 +10,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "getrandom"
-version = "0.2.3"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753"
+checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
dependencies = [
"cfg-if",
"libc",
@@ -30,9 +30,9 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.112"
+version = "0.2.126"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1b03d17f364a3a042d5e5d46b053bbbf82c92c9430c592dd4c064dc6ee997125"
+checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836"
[[package]]
name = "no-panic"
@@ -57,38 +57,37 @@ dependencies = [
[[package]]
name = "ppv-lite86"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ed0cfbc8191465bed66e1718596ee0b0b35d5ee1f41c5df2189d0fe8bde535ba"
+checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872"
[[package]]
name = "proc-macro2"
-version = "1.0.34"
+version = "1.0.42"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2f84e92c0f7c9d58328b85a78557813e4bd845130db68d7184635344399423b1"
+checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b"
dependencies = [
- "unicode-xid",
+ "unicode-ident",
]
[[package]]
name = "quote"
-version = "1.0.10"
+version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05"
+checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
dependencies = [
"proc-macro2",
]
[[package]]
name = "rand"
-version = "0.8.4"
+version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2e7573632e6454cf6b99d7aac4ccca54be06da05aca2ef7423d22d27d4d4bcd8"
+checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
dependencies = [
"libc",
"rand_chacha",
"rand_core",
- "rand_hc",
]
[[package]]
@@ -111,15 +110,6 @@ dependencies = [
]
[[package]]
-name = "rand_hc"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d51e9f596de227fda2ea6c84607f5558e196eeaf43c986b724ba4fb8fdf497e7"
-dependencies = [
- "rand_core",
-]
-
-[[package]]
name = "rand_xorshift"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -130,7 +120,7 @@ dependencies = [
[[package]]
name = "ryu"
-version = "1.0.10"
+version = "1.0.11"
dependencies = [
"no-panic",
"num_cpus",
@@ -140,23 +130,23 @@ dependencies = [
[[package]]
name = "syn"
-version = "1.0.83"
+version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "23a1dfb999630e338648c83e91c59a4e9fb7620f520c3194b6b89e276f2f1959"
+checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
dependencies = [
"proc-macro2",
"quote",
- "unicode-xid",
+ "unicode-ident",
]
[[package]]
-name = "unicode-xid"
-version = "0.2.2"
+name = "unicode-ident"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
+checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7"
[[package]]
name = "wasi"
-version = "0.10.2+wasi-snapshot-preview1"
+version = "0.11.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
+checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
diff --git a/vendor/ryu/Cargo.toml b/vendor/ryu/Cargo.toml
index a191cafc9..77181c0f6 100644
--- a/vendor/ryu/Cargo.toml
+++ b/vendor/ryu/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.36"
name = "ryu"
-version = "1.0.10"
+version = "1.0.11"
authors = ["David Tolnay <dtolnay@gmail.com>"]
exclude = [
"performance.png",
@@ -22,7 +22,11 @@ exclude = [
description = "Fast floating point to string conversion"
documentation = "https://docs.rs/ryu"
readme = "README.md"
-categories = ["value-formatting"]
+keywords = ["float"]
+categories = [
+ "value-formatting",
+ "no-std",
+]
license = "Apache-2.0 OR BSL-1.0"
repository = "https://github.com/dtolnay/ryu"
diff --git a/vendor/ryu/README.md b/vendor/ryu/README.md
index b4149b067..1e2248978 100644
--- a/vendor/ryu/README.md
+++ b/vendor/ryu/README.md
@@ -2,7 +2,7 @@
[<img alt="github" src="https://img.shields.io/badge/github-dtolnay/ryu-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20">](https://github.com/dtolnay/ryu)
[<img alt="crates.io" src="https://img.shields.io/crates/v/ryu.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20">](https://crates.io/crates/ryu)
-[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-ryu-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K" height="20">](https://docs.rs/ryu)
+[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-ryu-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs" height="20">](https://docs.rs/ryu)
[<img alt="build status" src="https://img.shields.io/github/workflow/status/dtolnay/ryu/CI/master?style=for-the-badge" height="20">](https://github.com/dtolnay/ryu/actions?query=branch%3Amaster)
Pure Rust implementation of Ryū, an algorithm to quickly convert floating point
diff --git a/vendor/ryu/src/lib.rs b/vendor/ryu/src/lib.rs
index 814169abe..f69638ef1 100644
--- a/vendor/ryu/src/lib.rs
+++ b/vendor/ryu/src/lib.rs
@@ -2,7 +2,7 @@
//!
//! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github
//! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust
-//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K
+//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs
//!
//! <br>
//!
@@ -81,7 +81,7 @@
//! notation.
#![no_std]
-#![doc(html_root_url = "https://docs.rs/ryu/1.0.10")]
+#![doc(html_root_url = "https://docs.rs/ryu/1.0.11")]
#![allow(
clippy::cast_lossless,
clippy::cast_possible_truncation,
diff --git a/vendor/semver/.cargo-checksum.json b/vendor/semver/.cargo-checksum.json
index 26d255955..afd692226 100644
--- a/vendor/semver/.cargo-checksum.json
+++ b/vendor/semver/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"05fd72553f111426202ab84ba32f5675d7d9ad6584cee93cacef60aafe142ac5","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"83e92a83348171f60d768651091803e69e4cb7ea3190cdfc45918d4637f38e1e","benches/parse.rs":"6531f66f80ce2fc83878f9bf84f94c42e96f1e709466f2b88be8d95a3cec1511","build.rs":"47b42941210d44567c8561107420d7825aa1d01332c2d2f8892d9e20646a1c77","src/backport.rs":"f8866548840434c8974f135528693f25aacc4ad03639c4e3aea3be351e13fdf8","src/display.rs":"9ba42f7a6579aa9c7dd72f2380036f5c9664592f3eacd09ea25cef291a3e64e5","src/error.rs":"3bb489f4a29f38d93370e64ae8d6e4e9b451a055cd7d392b6aeacab7eb3e1953","src/eval.rs":"b7e7ec976051b9f87ddf5cfdbaad64654d98d86ae0763f7d88b14eeaeac6013c","src/identifier.rs":"601231351ac58602b7d193cb0951b5146bd868b62aba938d5cbe52cf2b93414b","src/impls.rs":"79b5a2ac6ca3d4cb46adfb1494756079f53bef780dd81c3a8d3adf86f91395c8","src/lib.rs":"7a10ff49eb30aec519f1a709c6c2e7cd40b92c120f139f26393a226b3490d67c","src/parse.rs":"ffbb84081f0f66ec47b752a1e32f1bea5f206ca84f464b99d0497451305a92f8","src/serde.rs":"e2a9b9dc3cd2cccc250eaffad049de418ef791bf8c4a34111a48f068353e0a37","tests/node/mod.rs":"2710d9b8daace2038b66db0f8f4cc522dee938e7cbc42d7739c31995343c32f4","tests/test_autotrait.rs":"070500c32ceee14a8a0110c04a01f98278b24614a0aec8c382dcea3da0343f58","tests/test_identifier.rs":"6c3da46c73df210527b60f1069131b15e2c65eb7b5d11793940d00cf66812f4d","tests/test_version.rs":"09e37c3df162205acf3683d1c760a6001e34e1c709fd4a1a265d82450e340003","tests/test_version_req.rs":"b6eea0258cc3b6d567a9f6c42693a97316345083495236c47e85374fd45f7cf0","tests/util/mod.rs":"db61c2cd86af864d8be4f2a3d5f25c86d7712201cc6ab47b715facf5f7f275b7"},"package":"a2333e6df6d6598f2b1974829f853c2b4c5f4a6e503c10af918081aa6f8564e1"} \ No newline at end of file
+{"files":{"Cargo.toml":"2ef1bca69e829c310ba591cf769d26b9599343b5e8277607c810fcc27b08b507","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"83e92a83348171f60d768651091803e69e4cb7ea3190cdfc45918d4637f38e1e","benches/parse.rs":"6531f66f80ce2fc83878f9bf84f94c42e96f1e709466f2b88be8d95a3cec1511","build.rs":"eedfc19afa205955347175916974cdad121b55cb940e40c61931e5e7629f0e65","src/backport.rs":"c1335129f4969ac887dcf4cdee7592d0854163ee3023c14649d1fba2ab5f08ba","src/display.rs":"9ba42f7a6579aa9c7dd72f2380036f5c9664592f3eacd09ea25cef291a3e64e5","src/error.rs":"3bb489f4a29f38d93370e64ae8d6e4e9b451a055cd7d392b6aeacab7eb3e1953","src/eval.rs":"b7e7ec976051b9f87ddf5cfdbaad64654d98d86ae0763f7d88b14eeaeac6013c","src/identifier.rs":"2fcc23896070ed0a658282a5c7053f1439a55c9e2ea927703408fea8321bfbee","src/impls.rs":"79b5a2ac6ca3d4cb46adfb1494756079f53bef780dd81c3a8d3adf86f91395c8","src/lib.rs":"4118a9d0aedfdbfb930fac79f6aa03771b7a3348b7fe2b4d3d02530dc8b6f387","src/parse.rs":"ffbb84081f0f66ec47b752a1e32f1bea5f206ca84f464b99d0497451305a92f8","src/serde.rs":"e2a9b9dc3cd2cccc250eaffad049de418ef791bf8c4a34111a48f068353e0a37","tests/node/mod.rs":"2710d9b8daace2038b66db0f8f4cc522dee938e7cbc42d7739c31995343c32f4","tests/test_autotrait.rs":"070500c32ceee14a8a0110c04a01f98278b24614a0aec8c382dcea3da0343f58","tests/test_identifier.rs":"6c3da46c73df210527b60f1069131b15e2c65eb7b5d11793940d00cf66812f4d","tests/test_version.rs":"09e37c3df162205acf3683d1c760a6001e34e1c709fd4a1a265d82450e340003","tests/test_version_req.rs":"b6eea0258cc3b6d567a9f6c42693a97316345083495236c47e85374fd45f7cf0","tests/util/mod.rs":"db61c2cd86af864d8be4f2a3d5f25c86d7712201cc6ab47b715facf5f7f275b7"},"package":"e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4"} \ No newline at end of file
diff --git a/vendor/semver/Cargo.toml b/vendor/semver/Cargo.toml
index 56e1833d2..68aa0b972 100644
--- a/vendor/semver/Cargo.toml
+++ b/vendor/semver/Cargo.toml
@@ -13,11 +13,16 @@
edition = "2018"
rust-version = "1.31"
name = "semver"
-version = "1.0.12"
+version = "1.0.14"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "Parser and evaluator for Cargo's flavor of Semantic Versioning"
documentation = "https://docs.rs/semver"
readme = "README.md"
+keywords = ["cargo"]
+categories = [
+ "data-structures",
+ "no-std",
+]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/semver"
diff --git a/vendor/semver/build.rs b/vendor/semver/build.rs
index b45af7e23..2bf4418c1 100644
--- a/vendor/semver/build.rs
+++ b/vendor/semver/build.rs
@@ -35,7 +35,7 @@ fn main() {
if compiler < 45 {
// String::strip_prefix.
- // https://doc.rust-lang.org/std/primitive.str.html#method.repeat
+ // https://doc.rust-lang.org/std/primitive.str.html#method.strip_prefix
println!("cargo:rustc-cfg=no_str_strip_prefix");
}
diff --git a/vendor/semver/src/backport.rs b/vendor/semver/src/backport.rs
index c7751b29f..4b67f56a5 100644
--- a/vendor/semver/src/backport.rs
+++ b/vendor/semver/src/backport.rs
@@ -22,7 +22,9 @@ pub(crate) mod alloc {
pub mod alloc {
use std::mem;
+ use std::process;
+ #[derive(Copy, Clone)]
pub struct Layout {
size: usize,
}
@@ -47,5 +49,12 @@ pub(crate) mod alloc {
let len_u16 = (layout.size + 1) / 2;
unsafe { Vec::from_raw_parts(ptr as *mut u16, 0, len_u16) };
}
+
+ pub fn handle_alloc_error(_layout: Layout) -> ! {
+ // This is unreachable because the alloc implementation above never
+ // returns null; Vec::reserve_exact would already have called std's
+ // internal handle_alloc_error.
+ process::abort();
+ }
}
}
diff --git a/vendor/semver/src/identifier.rs b/vendor/semver/src/identifier.rs
index 170a4e05e..fbe1df020 100644
--- a/vendor/semver/src/identifier.rs
+++ b/vendor/semver/src/identifier.rs
@@ -66,7 +66,7 @@
// repr, leaving it available as a niche for downstream code. For example this
// allows size_of::<Version>() == size_of::<Option<Version>>().
-use crate::alloc::alloc::{alloc, dealloc, Layout};
+use crate::alloc::alloc::{alloc, dealloc, handle_alloc_error, Layout};
use core::mem;
use core::num::{NonZeroU64, NonZeroUsize};
use core::ptr::{self, NonNull};
@@ -123,6 +123,9 @@ impl Identifier {
let layout = unsafe { Layout::from_size_align_unchecked(size, align) };
// SAFETY: layout's size is nonzero.
let ptr = unsafe { alloc(layout) };
+ if ptr.is_null() {
+ handle_alloc_error(layout);
+ }
let mut write = ptr;
let mut varint_remaining = len;
while varint_remaining > 0 {
@@ -203,6 +206,9 @@ impl Clone for Identifier {
let layout = unsafe { Layout::from_size_align_unchecked(size, align) };
// SAFETY: layout's size is nonzero.
let clone = unsafe { alloc(layout) };
+ if clone.is_null() {
+ handle_alloc_error(layout);
+ }
// SAFETY: new allocation cannot overlap the previous one (this was
// not a realloc). The argument ptrs are readable/writeable
// respectively for size bytes.
diff --git a/vendor/semver/src/lib.rs b/vendor/semver/src/lib.rs
index 5185b752d..ca4d1119c 100644
--- a/vendor/semver/src/lib.rs
+++ b/vendor/semver/src/lib.rs
@@ -60,7 +60,7 @@
//!
//! [Specifying Dependencies]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html
-#![doc(html_root_url = "https://docs.rs/semver/1.0.12")]
+#![doc(html_root_url = "https://docs.rs/semver/1.0.14")]
#![cfg_attr(doc_cfg, feature(doc_cfg))]
#![cfg_attr(all(not(feature = "std"), not(no_alloc_crate)), no_std)]
#![cfg_attr(not(no_unsafe_op_in_unsafe_fn_lint), deny(unsafe_op_in_unsafe_fn))]
diff --git a/vendor/serde/.cargo-checksum.json b/vendor/serde/.cargo-checksum.json
index 16ef2df3d..0aefd0d73 100644
--- a/vendor/serde/.cargo-checksum.json
+++ b/vendor/serde/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"0ed592ec6c003bc496f6fde49b07815cf3b41626bf195c4715f387371e7ddde6","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"7049b88cb7366be0c8e593f3ffffa313803a5b382f35686c542b4a0da3b291f3","build.rs":"89cfc904243b611a8a2fc1c8724d6f1c2b61c166ca81676b903ddf80b8ff1c10","crates-io.md":"5c42406936cf9af6d4cd7fe0ac730c609e82fd3f15a54549518c72d0ded70c29","src/de/format.rs":"4b466a6a7f0070e884d14457759671c6ad7394fe9603708b7151ef6159258146","src/de/ignored_any.rs":"c69d6071191c2075372218442e9e73991335c6b4be18736a7a789f04bb305525","src/de/impls.rs":"b2fea640830a690d09b453fe126034f1f3f77e553b604a7a9ac83b043315248f","src/de/mod.rs":"3f241daf155f4ee93532cd94ee21966bd343850e091ee93fdafae90a60669ec7","src/de/seed.rs":"e8cf0233afe0af5b8fb9e4c94f301c92729c5ba417280af9e2201b732e374a72","src/de/utf8.rs":"f17524ee0af98ec3abcfd7d0b812fbd1033263bd8e2ce2f57c1e1999ce153558","src/de/value.rs":"a511298691a1505955eace480afd19bfa2d5abeb06cba3b7bc92af3d0c99968c","src/integer128.rs":"ca49591abde2d8c4f582174533fee28f0fa9139e5d71bf22b25a6b175f8abccc","src/lib.rs":"0ff39eb187609efe98b5fd1b9981daa097f74e748047cd8410698edb9337b707","src/macros.rs":"3d695a51f0a07f9f719dcb5620012c21a1b084c06a6283349cabf574ceba8123","src/private/de.rs":"ae9fd944944f9c2fb2eb07a622439c7ebdeab5e9d218cdaec9197cb5caa0941c","src/private/doc.rs":"e9801a43c3088fccd5f1fac76416698f948e65b647024aa9da17d673e1e8c217","src/private/mod.rs":"37b204775e572396515477b393ce793b2579de48e5971e6f596ba3723c489fd6","src/private/ser.rs":"3a90dfb5c17e81bf1d959fed60a9477713498e9d0934463627c98709132f066e","src/private/size_hint.rs":"605521227e9ba3100fbb9d5ea7fd5853385097c35015ce6908bd5f1ea20d59ad","src/ser/fmt.rs":"7827ed07fd8897e6324f75625ba0c926a4c4e7ec2914cd067391ce54d942ac7b","src/ser/impls.rs":"8b303e6231ec6d0c0ab8402d348d75229ce91d5e50a065f8209eb7d8a35c4a17","src/ser/impossible.rs":"db17913522c1c27389c5a085113911353b9813c1b116518681362e7c8b692c3a","src/ser/mod.rs":"19a7b66bc2e873213349011e7ae495b28d0bf1438c22ff727c46ee3dcc6e3152","src/std_error.rs":"3aac687856c035517fae44ed2906dd4a1e3184bae4bf613adcdeb73f74126c57"},"package":"fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03"} \ No newline at end of file
+{"files":{"Cargo.toml":"7726b0fc6476d58de05dd5342dd517da6968c3b774cb2443b09f8c1e0926d347","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"7049b88cb7366be0c8e593f3ffffa313803a5b382f35686c542b4a0da3b291f3","build.rs":"89cfc904243b611a8a2fc1c8724d6f1c2b61c166ca81676b903ddf80b8ff1c10","crates-io.md":"5c42406936cf9af6d4cd7fe0ac730c609e82fd3f15a54549518c72d0ded70c29","src/de/format.rs":"4b466a6a7f0070e884d14457759671c6ad7394fe9603708b7151ef6159258146","src/de/ignored_any.rs":"967184c86707c99b77a1cfb218dfc823f560fae227b6635aee6af19ee82962f5","src/de/impls.rs":"363f9f9400dcaf46176ab5c0a3592996abbed0618fddb51b090a7617a78eb5a0","src/de/mod.rs":"1dbddc2870da5cae0a725c7aacca83f0dabba55895f17849f2d5da254b1ebeb6","src/de/seed.rs":"e8cf0233afe0af5b8fb9e4c94f301c92729c5ba417280af9e2201b732e374a72","src/de/utf8.rs":"f17524ee0af98ec3abcfd7d0b812fbd1033263bd8e2ce2f57c1e1999ce153558","src/de/value.rs":"aa5055923e2c3fd1c1f1abdfb380a1d63d07cf4d602ef62d2df2b7da33dd8c81","src/integer128.rs":"ca49591abde2d8c4f582174533fee28f0fa9139e5d71bf22b25a6b175f8abccc","src/lib.rs":"66d086f0da93675b6d467814d593e03521007f5e319bcfdb1eb35eabb5974fa5","src/macros.rs":"3d695a51f0a07f9f719dcb5620012c21a1b084c06a6283349cabf574ceba8123","src/private/de.rs":"cc6f7fa8d0345db5918bcea549cd302a1159a7e4c5fe3e10027fbe57517ceb49","src/private/doc.rs":"e9801a43c3088fccd5f1fac76416698f948e65b647024aa9da17d673e1e8c217","src/private/mod.rs":"37b204775e572396515477b393ce793b2579de48e5971e6f596ba3723c489fd6","src/private/ser.rs":"087cf1141d1053f932f51b362ed08fd1fec43b4dbe5504bedc0c183fc8ce05e6","src/private/size_hint.rs":"605521227e9ba3100fbb9d5ea7fd5853385097c35015ce6908bd5f1ea20d59ad","src/ser/fmt.rs":"7827ed07fd8897e6324f75625ba0c926a4c4e7ec2914cd067391ce54d942ac7b","src/ser/impls.rs":"97288074fb0ff40f4178359a37879a996c7d0e5d5a7f173b9203f885d90d3ba0","src/ser/impossible.rs":"db17913522c1c27389c5a085113911353b9813c1b116518681362e7c8b692c3a","src/ser/mod.rs":"e5008f26bd6100f52c7223184802e63f4d046651c9db56f68602752cea20745c","src/std_error.rs":"3aac687856c035517fae44ed2906dd4a1e3184bae4bf613adcdeb73f74126c57"},"package":"d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965"} \ No newline at end of file
diff --git a/vendor/serde/Cargo.toml b/vendor/serde/Cargo.toml
index 9893bb79d..a319d423d 100644
--- a/vendor/serde/Cargo.toml
+++ b/vendor/serde/Cargo.toml
@@ -12,7 +12,7 @@
[package]
rust-version = "1.13"
name = "serde"
-version = "1.0.140"
+version = "1.0.147"
authors = [
"Erick Tryzelaar <erick.tryzelaar@gmail.com>",
"David Tolnay <dtolnay@gmail.com>",
@@ -35,7 +35,10 @@ keywords = [
"serialization",
"no_std",
]
-categories = ["encoding"]
+categories = [
+ "encoding",
+ "no-std",
+]
license = "MIT OR Apache-2.0"
repository = "https://github.com/serde-rs/serde"
@@ -49,7 +52,7 @@ features = [
targets = ["x86_64-unknown-linux-gnu"]
[dependencies.serde_derive]
-version = "=1.0.140"
+version = "=1.0.147"
optional = true
[dev-dependencies.serde_derive]
diff --git a/vendor/serde/src/de/ignored_any.rs b/vendor/serde/src/de/ignored_any.rs
index 1d50f5ec3..9ed438e79 100644
--- a/vendor/serde/src/de/ignored_any.rs
+++ b/vendor/serde/src/de/ignored_any.rs
@@ -228,7 +228,7 @@ impl<'de> Visitor<'de> for IgnoredAny {
where
A: EnumAccess<'de>,
{
- data.variant::<IgnoredAny>()?.1.newtype_variant()
+ try!(data.variant::<IgnoredAny>()).1.newtype_variant()
}
}
diff --git a/vendor/serde/src/de/impls.rs b/vendor/serde/src/de/impls.rs
index c2a56b4fc..c048f7145 100644
--- a/vendor/serde/src/de/impls.rs
+++ b/vendor/serde/src/de/impls.rs
@@ -2268,14 +2268,14 @@ where
where
D: Deserializer<'de>,
{
- let (start, end) = deserializer.deserialize_struct(
+ let (start, end) = try!(deserializer.deserialize_struct(
"Range",
range::FIELDS,
range::RangeVisitor {
expecting: "struct Range",
phantom: PhantomData,
},
- )?;
+ ));
Ok(start..end)
}
}
@@ -2289,14 +2289,14 @@ where
where
D: Deserializer<'de>,
{
- let (start, end) = deserializer.deserialize_struct(
+ let (start, end) = try!(deserializer.deserialize_struct(
"RangeInclusive",
range::FIELDS,
range::RangeVisitor {
expecting: "struct RangeInclusive",
phantom: PhantomData,
},
- )?;
+ ));
Ok(RangeInclusive::new(start, end))
}
}
diff --git a/vendor/serde/src/de/mod.rs b/vendor/serde/src/de/mod.rs
index 6100815f7..d9dafbe1e 100644
--- a/vendor/serde/src/de/mod.rs
+++ b/vendor/serde/src/de/mod.rs
@@ -30,7 +30,7 @@
//! # The Deserializer trait
//!
//! [`Deserializer`] implementations are provided by third-party crates, for
-//! example [`serde_json`], [`serde_yaml`] and [`bincode`].
+//! example [`serde_json`], [`serde_yaml`] and [`postcard`].
//!
//! A partial list of well-maintained formats is given on the [Serde
//! website][data formats].
@@ -104,7 +104,7 @@
//! [`Deserialize`]: ../trait.Deserialize.html
//! [`Deserializer`]: ../trait.Deserializer.html
//! [`LinkedHashMap<K, V>`]: https://docs.rs/linked-hash-map/*/linked_hash_map/struct.LinkedHashMap.html
-//! [`bincode`]: https://github.com/bincode-org/bincode
+//! [`postcard`]: https://github.com/jamesmunns/postcard
//! [`linked-hash-map`]: https://crates.io/crates/linked-hash-map
//! [`serde_derive`]: https://crates.io/crates/serde_derive
//! [`serde_json`]: https://github.com/serde-rs/json
@@ -565,7 +565,7 @@ pub trait Deserialize<'de>: Sized {
D: Deserializer<'de>,
{
// Default implementation just delegates to `deserialize` impl.
- *place = Deserialize::deserialize(deserializer)?;
+ *place = try!(Deserialize::deserialize(deserializer));
Ok(())
}
}
@@ -862,10 +862,10 @@ where
/// The `Deserializer` trait supports two entry point styles which enables
/// different kinds of deserialization.
///
-/// 1. The `deserialize` method. Self-describing data formats like JSON are able
-/// to look at the serialized data and tell what it represents. For example
-/// the JSON deserializer may see an opening curly brace (`{`) and know that
-/// it is seeing a map. If the data format supports
+/// 1. The `deserialize_any` method. Self-describing data formats like JSON are
+/// able to look at the serialized data and tell what it represents. For
+/// example the JSON deserializer may see an opening curly brace (`{`) and
+/// know that it is seeing a map. If the data format supports
/// `Deserializer::deserialize_any`, it will drive the Visitor using whatever
/// type it sees in the input. JSON uses this approach when deserializing
/// `serde_json::Value` which is an enum that can represent any JSON
@@ -874,7 +874,7 @@ where
/// `Deserializer::deserialize_any`.
///
/// 2. The various `deserialize_*` methods. Non-self-describing formats like
-/// Bincode need to be told what is in the input in order to deserialize it.
+/// Postcard need to be told what is in the input in order to deserialize it.
/// The `deserialize_*` methods are hints to the deserializer for how to
/// interpret the next piece of input. Non-self-describing formats are not
/// able to deserialize something like `serde_json::Value` which relies on
@@ -884,7 +884,7 @@ where
/// `Deserializer::deserialize_any` unless you need to be told by the
/// Deserializer what type is in the input. Know that relying on
/// `Deserializer::deserialize_any` means your data type will be able to
-/// deserialize from self-describing formats only, ruling out Bincode and many
+/// deserialize from self-describing formats only, ruling out Postcard and many
/// others.
///
/// [Serde data model]: https://serde.rs/data-model.html
@@ -915,7 +915,7 @@ pub trait Deserializer<'de>: Sized {
/// `Deserializer::deserialize_any` unless you need to be told by the
/// Deserializer what type is in the input. Know that relying on
/// `Deserializer::deserialize_any` means your data type will be able to
- /// deserialize from self-describing formats only, ruling out Bincode and
+ /// deserialize from self-describing formats only, ruling out Postcard and
/// many others.
fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
where
@@ -1156,7 +1156,7 @@ pub trait Deserializer<'de>: Sized {
/// Some types have a human-readable form that may be somewhat expensive to
/// construct, as well as a binary form that is compact and efficient.
/// Generally text-based formats like JSON and YAML will prefer to use the
- /// human-readable one and binary formats like Bincode will prefer the
+ /// human-readable one and binary formats like Postcard will prefer the
/// compact one.
///
/// ```edition2018
@@ -1560,7 +1560,7 @@ pub trait Visitor<'de>: Sized {
/// `Deserializer`.
///
/// This enables zero-copy deserialization of bytes in some formats. For
- /// example Bincode data containing bytes can be deserialized with zero
+ /// example Postcard data containing bytes can be deserialized with zero
/// copying into a `&'a [u8]` as long as the input data outlives `'a`.
///
/// The default implementation forwards to `visit_bytes`.
diff --git a/vendor/serde/src/de/value.rs b/vendor/serde/src/de/value.rs
index e7afdd8d1..5d8886215 100644
--- a/vendor/serde/src/de/value.rs
+++ b/vendor/serde/src/de/value.rs
@@ -1501,7 +1501,7 @@ where
where
T: de::DeserializeSeed<'de>,
{
- match self.map.next_key_seed(seed)? {
+ match try!(self.map.next_key_seed(seed)) {
Some(key) => Ok((key, private::map_as_enum(self.map))),
None => Err(de::Error::invalid_type(de::Unexpected::Map, &"enum")),
}
@@ -1510,6 +1510,41 @@ where
////////////////////////////////////////////////////////////////////////////////
+/// A deserializer holding an `EnumAccess`.
+#[derive(Clone, Debug)]
+pub struct EnumAccessDeserializer<A> {
+ access: A,
+}
+
+impl<A> EnumAccessDeserializer<A> {
+ /// Construct a new `EnumAccessDeserializer<A>`.
+ pub fn new(access: A) -> Self {
+ EnumAccessDeserializer { access: access }
+ }
+}
+
+impl<'de, A> de::Deserializer<'de> for EnumAccessDeserializer<A>
+where
+ A: de::EnumAccess<'de>,
+{
+ type Error = A::Error;
+
+ fn deserialize_any<V>(self, visitor: V) -> Result<V::Value, Self::Error>
+ where
+ V: de::Visitor<'de>,
+ {
+ visitor.visit_enum(self.access)
+ }
+
+ forward_to_deserialize_any! {
+ bool i8 i16 i32 i64 i128 u8 u16 u32 u64 u128 f32 f64 char str string
+ bytes byte_buf option unit unit_struct newtype_struct seq tuple
+ tuple_struct map struct enum identifier ignored_any
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+
mod private {
use lib::*;
diff --git a/vendor/serde/src/lib.rs b/vendor/serde/src/lib.rs
index f1a17513c..02c57ae9d 100644
--- a/vendor/serde/src/lib.rs
+++ b/vendor/serde/src/lib.rs
@@ -31,8 +31,7 @@
//! for Serde by the community.
//!
//! - [JSON], the ubiquitous JavaScript Object Notation used by many HTTP APIs.
-//! - [Bincode], a compact binary format
-//! used for IPC within the Servo rendering engine.
+//! - [Postcard], a no\_std and embedded-systems friendly compact binary format.
//! - [CBOR], a Concise Binary Object Representation designed for small message
//! size without the need for version negotiation.
//! - [YAML], a self-proclaimed human-friendly configuration language that ain't
@@ -45,7 +44,6 @@
//! - [Avro], a binary format used within Apache Hadoop, with support for schema
//! definition.
//! - [JSON5], a superset of JSON including some productions from ES5.
-//! - [Postcard], a no\_std and embedded-systems friendly compact binary format.
//! - [URL] query strings, in the x-www-form-urlencoded format.
//! - [Envy], a way to deserialize environment variables into Rust structs.
//! *(deserialization only)*
@@ -59,7 +57,7 @@
//! and from DynamoDB.
//!
//! [JSON]: https://github.com/serde-rs/json
-//! [Bincode]: https://github.com/bincode-org/bincode
+//! [Postcard]: https://github.com/jamesmunns/postcard
//! [CBOR]: https://github.com/enarx/ciborium
//! [YAML]: https://github.com/dtolnay/serde-yaml
//! [MessagePack]: https://github.com/3Hren/msgpack-rust
@@ -67,9 +65,8 @@
//! [Pickle]: https://github.com/birkenfeld/serde-pickle
//! [RON]: https://github.com/ron-rs/ron
//! [BSON]: https://github.com/mongodb/bson-rust
-//! [Avro]: https://github.com/flavray/avro-rs
+//! [Avro]: https://docs.rs/apache-avro
//! [JSON5]: https://github.com/callum-oakley/json5-rs
-//! [Postcard]: https://github.com/jamesmunns/postcard
//! [URL]: https://docs.rs/serde_qs
//! [Envy]: https://github.com/softprops/envy
//! [Envy Store]: https://github.com/softprops/envy-store
@@ -84,7 +81,7 @@
////////////////////////////////////////////////////////////////////////////////
// Serde types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/serde/1.0.140")]
+#![doc(html_root_url = "https://docs.rs/serde/1.0.147")]
// Support using Serde without the standard library!
#![cfg_attr(not(feature = "std"), no_std)]
// Unstable functionality only if the user asks for it. For tracking and
@@ -252,6 +249,19 @@ mod lib {
pub use self::core::time::Duration;
}
+// None of this crate's error handling needs the `From::from` error conversion
+// performed implicitly by the `?` operator or the standard library's `try!`
+// macro. This simplified macro gives a 5.5% improvement in compile time
+// compared to standard `try!`, and 9% improvement compared to `?`.
+macro_rules! try {
+ ($expr:expr) => {
+ match $expr {
+ Ok(val) => val,
+ Err(err) => return Err(err),
+ }
+ };
+}
+
////////////////////////////////////////////////////////////////////////////////
#[macro_use]
diff --git a/vendor/serde/src/private/de.rs b/vendor/serde/src/private/de.rs
index f0697d64f..01e5bf787 100644
--- a/vendor/serde/src/private/de.rs
+++ b/vendor/serde/src/private/de.rs
@@ -1262,6 +1262,17 @@ mod content {
{
match self.content {
Content::Unit => visitor.visit_unit(),
+
+ // Allow deserializing newtype variant containing unit.
+ //
+ // #[derive(Deserialize)]
+ // #[serde(tag = "result")]
+ // enum Response<T> {
+ // Success(T),
+ // }
+ //
+ // We want {"result":"Success"} to deserialize into Response<()>.
+ Content::Map(ref v) if v.is_empty() => visitor.visit_unit(),
_ => Err(self.invalid_type(&visitor)),
}
}
diff --git a/vendor/serde/src/private/ser.rs b/vendor/serde/src/private/ser.rs
index 6ee999389..293d8a865 100644
--- a/vendor/serde/src/private/ser.rs
+++ b/vendor/serde/src/private/ser.rs
@@ -51,7 +51,6 @@ enum Unsupported {
String,
ByteArray,
Optional,
- Unit,
#[cfg(any(feature = "std", feature = "alloc"))]
UnitStruct,
Sequence,
@@ -70,7 +69,6 @@ impl Display for Unsupported {
Unsupported::String => formatter.write_str("a string"),
Unsupported::ByteArray => formatter.write_str("a byte array"),
Unsupported::Optional => formatter.write_str("an optional"),
- Unsupported::Unit => formatter.write_str("unit"),
#[cfg(any(feature = "std", feature = "alloc"))]
Unsupported::UnitStruct => formatter.write_str("unit struct"),
Unsupported::Sequence => formatter.write_str("a sequence"),
@@ -184,7 +182,9 @@ where
}
fn serialize_unit(self) -> Result<Self::Ok, Self::Error> {
- Err(self.bad_type(Unsupported::Unit))
+ let mut map = try!(self.delegate.serialize_map(Some(1)));
+ try!(map.serialize_entry(self.tag, self.variant_name));
+ map.end()
}
fn serialize_unit_struct(self, _: &'static str) -> Result<Self::Ok, Self::Error> {
diff --git a/vendor/serde/src/ser/impls.rs b/vendor/serde/src/ser/impls.rs
index 7219f51b7..8e8655582 100644
--- a/vendor/serde/src/ser/impls.rs
+++ b/vendor/serde/src/ser/impls.rs
@@ -522,7 +522,7 @@ where
}
}
-impl<T> Serialize for RefCell<T>
+impl<T: ?Sized> Serialize for RefCell<T>
where
T: Serialize,
{
@@ -538,7 +538,7 @@ where
}
#[cfg(feature = "std")]
-impl<T> Serialize for Mutex<T>
+impl<T: ?Sized> Serialize for Mutex<T>
where
T: Serialize,
{
@@ -554,7 +554,7 @@ where
}
#[cfg(feature = "std")]
-impl<T> Serialize for RwLock<T>
+impl<T: ?Sized> Serialize for RwLock<T>
where
T: Serialize,
{
@@ -614,9 +614,10 @@ impl Serialize for SystemTime {
S: Serializer,
{
use super::SerializeStruct;
- let duration_since_epoch = self
- .duration_since(UNIX_EPOCH)
- .map_err(|_| S::Error::custom("SystemTime must be later than UNIX_EPOCH"))?;
+ let duration_since_epoch = match self.duration_since(UNIX_EPOCH) {
+ Ok(duration_since_epoch) => duration_since_epoch,
+ Err(_) => return Err(S::Error::custom("SystemTime must be later than UNIX_EPOCH")),
+ };
let mut state = try!(serializer.serialize_struct("SystemTime", 2));
try!(state.serialize_field("secs_since_epoch", &duration_since_epoch.as_secs()));
try!(state.serialize_field("nanos_since_epoch", &duration_since_epoch.subsec_nanos()));
@@ -916,7 +917,7 @@ macro_rules! atomic_impl {
S: Serializer,
{
// Matches the atomic ordering used in libcore for the Debug impl
- self.load(Ordering::SeqCst).serialize(serializer)
+ self.load(Ordering::Relaxed).serialize(serializer)
}
}
)*
diff --git a/vendor/serde/src/ser/mod.rs b/vendor/serde/src/ser/mod.rs
index eb226ae96..9a21363d6 100644
--- a/vendor/serde/src/ser/mod.rs
+++ b/vendor/serde/src/ser/mod.rs
@@ -30,7 +30,7 @@
//! # The Serializer trait
//!
//! [`Serializer`] implementations are provided by third-party crates, for
-//! example [`serde_json`], [`serde_yaml`] and [`bincode`].
+//! example [`serde_json`], [`serde_yaml`] and [`postcard`].
//!
//! A partial list of well-maintained formats is given on the [Serde
//! website][data formats].
@@ -99,7 +99,7 @@
//! [`LinkedHashMap<K, V>`]: https://docs.rs/linked-hash-map/*/linked_hash_map/struct.LinkedHashMap.html
//! [`Serialize`]: ../trait.Serialize.html
//! [`Serializer`]: ../trait.Serializer.html
-//! [`bincode`]: https://github.com/bincode-org/bincode
+//! [`postcard`]: https://github.com/jamesmunns/postcard
//! [`linked-hash-map`]: https://crates.io/crates/linked-hash-map
//! [`serde_derive`]: https://crates.io/crates/serde_derive
//! [`serde_json`]: https://github.com/serde-rs/json
@@ -314,7 +314,7 @@ pub trait Serialize {
/// - For example the `E::S` in `enum E { S { r: u8, g: u8, b: u8 } }`.
///
/// Many Serde serializers produce text or binary data as output, for example
-/// JSON or Bincode. This is not a requirement of the `Serializer` trait, and
+/// JSON or Postcard. This is not a requirement of the `Serializer` trait, and
/// there are serializers that do not produce text or binary output. One example
/// is the `serde_json::value::Serializer` (distinct from the main `serde_json`
/// serializer) that produces a `serde_json::Value` data structure in memory as
@@ -1423,7 +1423,7 @@ pub trait Serializer: Sized {
/// Some types have a human-readable form that may be somewhat expensive to
/// construct, as well as a binary form that is compact and efficient.
/// Generally text-based formats like JSON and YAML will prefer to use the
- /// human-readable one and binary formats like Bincode will prefer the
+ /// human-readable one and binary formats like Postcard will prefer the
/// compact one.
///
/// ```edition2018
diff --git a/vendor/serde_derive/.cargo-checksum.json b/vendor/serde_derive/.cargo-checksum.json
index 548b4dd75..55e1585d8 100644
--- a/vendor/serde_derive/.cargo-checksum.json
+++ b/vendor/serde_derive/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"1b02082e05fb23a3d9291d91a1097beef2bddb443575716c4ab0e4d0159b5038","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"7049b88cb7366be0c8e593f3ffffa313803a5b382f35686c542b4a0da3b291f3","build.rs":"c01db20e19c31505b26b9e9a5aff1c5327a7501fc88917f372a9e718edcb50ab","crates-io.md":"5c42406936cf9af6d4cd7fe0ac730c609e82fd3f15a54549518c72d0ded70c29","src/bound.rs":"268b4995a5d0a129dcbd6e32ef11f587bd271df3f6c4f7230ed54bc99f5ce871","src/de.rs":"c5a41016ce15f8176a2d7a8445ba06d2eb8de0863c1fea0dab51c395dd7dccff","src/dummy.rs":"cb154465020973be8ab6079ab8574df46f38fbe028a5561cd6b1a8bfa1a35478","src/fragment.rs":"5548ba65a53d90a296f60c1328a7a7fb040db467f59c2f5210b2fb320457145d","src/internals/ast.rs":"b019865eef92c1ddbb9029423ac22179f132dc655a51c09fb2a42f4aaef172fd","src/internals/attr.rs":"778074380c4e353b77e03aff9edf15fda9e15a0e7ec25cdfc51d79a26636ddef","src/internals/case.rs":"9492f0c5142d7b7e8cd39c86d13a855e5ce4489425adb2b96aed89e1b7851ac0","src/internals/check.rs":"11ea94257d2a2ee2276938a6beb4ae11b74c39225c1e342e6df1e7d2b2924496","src/internals/ctxt.rs":"6fa544ae52914498a62a395818ebdc1b36ac2fb5903c60afb741a864ad559f1c","src/internals/mod.rs":"f32138ff19d57eb00f88ba11f6b015efab2102657804f71ebbf386a3698dad91","src/internals/receiver.rs":"cd125ba4a3dd6250ed4737555c58627bffd630a536cd7223068eed7c10a170d8","src/internals/respan.rs":"899753859c58ce5f532a3ec4584796a52f13ed5a0533191e48c953ba5c1b52ff","src/internals/symbol.rs":"3c9ce461773b7df3bb64d82aa5a0d93052c3bb0e60209db6c0b5c10ee9cfc9cf","src/lib.rs":"230ca4a6867faad035a07bed24dfcaee73dc0ab061e5c78094d97e01bb571efa","src/pretend.rs":"4aa53bf6c1350fbcfc8c4997f720cde61a8eb3aab73bb8c101b0f0a74901892b","src/ser.rs":"0d99c841f6c7bc9751ab225fe42d1f8b7fe56e36903efcb4ff10bf6e35c390ba","src/try.rs":"b171b0088c23ebf4bfa07ba457881b41ac5e547d55dd16f737ea988d34badf61"},"package":"6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da"} \ No newline at end of file
+{"files":{"Cargo.toml":"74849419177cf3d29dc77892c9519708ac38eecd3c2d4e4367de3c171cd2d410","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"7049b88cb7366be0c8e593f3ffffa313803a5b382f35686c542b4a0da3b291f3","build.rs":"c01db20e19c31505b26b9e9a5aff1c5327a7501fc88917f372a9e718edcb50ab","crates-io.md":"5c42406936cf9af6d4cd7fe0ac730c609e82fd3f15a54549518c72d0ded70c29","src/bound.rs":"268b4995a5d0a129dcbd6e32ef11f587bd271df3f6c4f7230ed54bc99f5ce871","src/de.rs":"c5a41016ce15f8176a2d7a8445ba06d2eb8de0863c1fea0dab51c395dd7dccff","src/dummy.rs":"cb154465020973be8ab6079ab8574df46f38fbe028a5561cd6b1a8bfa1a35478","src/fragment.rs":"5548ba65a53d90a296f60c1328a7a7fb040db467f59c2f5210b2fb320457145d","src/internals/ast.rs":"b019865eef92c1ddbb9029423ac22179f132dc655a51c09fb2a42f4aaef172fd","src/internals/attr.rs":"778074380c4e353b77e03aff9edf15fda9e15a0e7ec25cdfc51d79a26636ddef","src/internals/case.rs":"9492f0c5142d7b7e8cd39c86d13a855e5ce4489425adb2b96aed89e1b7851ac0","src/internals/check.rs":"11ea94257d2a2ee2276938a6beb4ae11b74c39225c1e342e6df1e7d2b2924496","src/internals/ctxt.rs":"6fa544ae52914498a62a395818ebdc1b36ac2fb5903c60afb741a864ad559f1c","src/internals/mod.rs":"f32138ff19d57eb00f88ba11f6b015efab2102657804f71ebbf386a3698dad91","src/internals/receiver.rs":"cd125ba4a3dd6250ed4737555c58627bffd630a536cd7223068eed7c10a170d8","src/internals/respan.rs":"899753859c58ce5f532a3ec4584796a52f13ed5a0533191e48c953ba5c1b52ff","src/internals/symbol.rs":"3c9ce461773b7df3bb64d82aa5a0d93052c3bb0e60209db6c0b5c10ee9cfc9cf","src/lib.rs":"82c587dfec75c78b53fc64ab9366f61213f2776cefea256c9eaeb18193c8cbf4","src/pretend.rs":"4aa53bf6c1350fbcfc8c4997f720cde61a8eb3aab73bb8c101b0f0a74901892b","src/ser.rs":"0d99c841f6c7bc9751ab225fe42d1f8b7fe56e36903efcb4ff10bf6e35c390ba","src/try.rs":"b171b0088c23ebf4bfa07ba457881b41ac5e547d55dd16f737ea988d34badf61"},"package":"4f1d362ca8fc9c3e3a7484440752472d68a6caa98f1ab81d99b5dfe517cec852"} \ No newline at end of file
diff --git a/vendor/serde_derive/Cargo.toml b/vendor/serde_derive/Cargo.toml
index 08789fc4b..dc5abf1b4 100644
--- a/vendor/serde_derive/Cargo.toml
+++ b/vendor/serde_derive/Cargo.toml
@@ -12,7 +12,7 @@
[package]
rust-version = "1.31"
name = "serde_derive"
-version = "1.0.140"
+version = "1.0.147"
authors = [
"Erick Tryzelaar <erick.tryzelaar@gmail.com>",
"David Tolnay <dtolnay@gmail.com>",
@@ -33,7 +33,9 @@ keywords = [
"serde",
"serialization",
"no_std",
+ "derive",
]
+categories = ["no-std"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/serde-rs/serde"
diff --git a/vendor/serde_derive/src/lib.rs b/vendor/serde_derive/src/lib.rs
index d82e92560..fc8529e40 100644
--- a/vendor/serde_derive/src/lib.rs
+++ b/vendor/serde_derive/src/lib.rs
@@ -13,7 +13,7 @@
//!
//! [https://serde.rs/derive.html]: https://serde.rs/derive.html
-#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.140")]
+#![doc(html_root_url = "https://docs.rs/serde_derive/1.0.147")]
#![allow(unknown_lints, bare_trait_objects)]
// Ignored clippy lints
#![allow(
diff --git a/vendor/serde_json/.cargo-checksum.json b/vendor/serde_json/.cargo-checksum.json
index 5415825f1..69f778237 100644
--- a/vendor/serde_json/.cargo-checksum.json
+++ b/vendor/serde_json/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CONTRIBUTING.md":"f5270cafba66223a7b51ffc0d286075a17bb7cd88762fc80d333d3102629f4d8","Cargo.toml":"c23c4deff8ae410875679db5224cff1a9e187527a1b061375e0176b3cbbdca80","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"7c6217e41b058880a37e01cf8caf205daa397d33cc2199f9fa1634048bc088c5","build.rs":"20e23e5bfe6fc8155fef0e0da036ebc1f81b34078fe86f929c8247b6f4317b99","src/de.rs":"0048bb57f39c7014a491c044d527598270fe417f1676ec7ba4529fea337746bc","src/error.rs":"abb92a9bf62cb7f47141a733a9fd66ec8c369615d7e6f633d3536fd2a5ac74a2","src/features_check/error.rs":"d7359f864afbfe105a38abea9f563dc423036ebc4c956a5695a4beef144dc7ec","src/features_check/mod.rs":"2209f8d5c46b50c8a3b8dc22338dcaf0135d192e8b05d2f456cbe6a73104e958","src/io/core.rs":"9a4146802391fd202a36bebbf3b14b715ae09d8828cbe8e06a01214c470ebf5c","src/io/mod.rs":"fd1ed5080495cab21117f6f7d3c2c9e3687cad0c69a0cd087b08a145a9e672da","src/iter.rs":"f832c469cd7999d26ba9b76baa69b257a212a7edb3dfdf9b1d1bb35e8da85fa9","src/lexical/algorithm.rs":"4fbeb1994049348d1fc388dd1a29e481f8abb8fe1e28bfebf50f3bbce5fa5fbe","src/lexical/bhcomp.rs":"b7c68d74c0055eb67ec2c1bcf27bbc28bef8f1bbc43db8eb94ba69892230add6","src/lexical/bignum.rs":"4230cde10dc8eae456a713cf90ec4e48dff4b1d0c542621ce7f00f39ade2645e","src/lexical/cached.rs":"0e127398691f8042c19cde209e7f4b0161f0f3150342430145929f711e6fdac8","src/lexical/cached_float80.rs":"0f8f74a22cb7d871322a9893bffd0255ca10bf9dffd13afb2462dd3d7f51805f","src/lexical/digit.rs":"a265b9072194a62a67dfc4df3c86d4213097cf3f82280d025e0012a5a262fd9d","src/lexical/errors.rs":"6bc993febceb7dd96ac1c8c5c53b5f5a30297016c0f813ed8ff8d7938d01534d","src/lexical/exponent.rs":"387e945b97dc7ba48a7091c50d228a0dde3a1c4145703d4ab9c31191a91693b0","src/lexical/float.rs":"fe356213c92a049f4bef2f58bc0e3a26866ca06b8c1d74d0f961c5b883852cad","src/lexical/large_powers.rs":"34537f5c701afce1ec2a1fd3c14950381b2e27c9ad74f002c91f3708e8da9ca5","src/lexical/large_powers32.rs":"d533037c6141e6671102aee490c9cdeaba81e667ddca781b2b99db2c455e4a1a","src/lexical/large_powers64.rs":"745dd7c0cbe499eec027ef586248881011d9df20c7efab7929c1807b59886ba1","src/lexical/math.rs":"27e22b724cdf990cdacd0ccfc3749e6e2eb7529d43ebf6e95b1999560b9e199a","src/lexical/mod.rs":"4b4c5228779c0f135a4cb018700e3bcd495da48b74421a86f6b8b304acdef924","src/lexical/num.rs":"cf705c62612e31d704f43d94a633ea1243c6befad7ef5792e2e881a7fd21e809","src/lexical/parse.rs":"c2bfac4c70a19938ced61e991f4ec606764887cf12bac1a0978b5b5318a56aac","src/lexical/rounding.rs":"697207248ba17b7f4965aedb11d276261ada5b06d9c6265d8fd6246664ff6e3c","src/lexical/shift.rs":"bc1ed053dd63d45ac9c35302f18de9f00d94027f28af4ab749c9248439de832a","src/lexical/small_powers.rs":"4608dd218b8002435db7e1ec79d2d0fef5f47ae257b93353326d52ecc80cccda","src/lib.rs":"40e355c3d7abc85c7716a4c5cc487988e2385c1d6423c7a0f1238967488cbb78","src/macros.rs":"c9f23156faec8d5216d72b6a97eebd768efb3f75870a6e2beed824308587b998","src/map.rs":"54e5e8ba63cf12a24f2c0257b1ace12f1935ca6d862e7b657209ee6634bb771f","src/number.rs":"d154fa969227db17647c9f524d7c0795205cb53c36d17f9aec5582ea18988c6e","src/raw.rs":"ee2b4ed085d8488e72c5a19791aae9de569d6c1381e9e64ff71afa03d5cf902a","src/read.rs":"49b4b1d067b6485cbded28fb961666ab5df82c36661af722dbae756efb6b2891","src/ser.rs":"44a57aa347c2a3b234635622b675fa3b2c30b818212f5a5eef02027cf3406a84","src/value/de.rs":"64a86f6c14c2c04abc4b6f06b90bfcbda097b37b7f3e990576801f170d4af1e4","src/value/from.rs":"1968835c63dcd4058850162e3a8714b5a7e20eeec458fd4c200aa9ef0515f94c","src/value/index.rs":"8a99d8d50f5674181ced22f6e81dc529eaecb01e543e30346e51fe42cb4b8a5f","src/value/mod.rs":"99945c233836d4493dc019ac79b5fa8a57298060d14d20451a57d8f10d03fbd6","src/value/partial_eq.rs":"95de799d57f7f4310b64a9488c0a7286dee76dba4329cb69a96298a887e58586","src/value/ser.rs":"185539665cf3ab2fb5499a8e8e069ec75afbc2f07a2fbed0f8f9bcffd7ab729b","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/debug.rs":"1a6eb048f48708b3b6adc13ca7365cd67057a64e3e44eef300bc025c8d16f7cf","tests/lexical.rs":"383e06283e15e1db7c6b818da3c84a3afa0059f6e9fc994b069919d81346ab91","tests/lexical/algorithm.rs":"da378df9ee24bfa033968d5c94e91b58e52c39bf6c825dec51c3eb7250cc5874","tests/lexical/exponent.rs":"26ea92abc654a6a88a8281552bca2f76ea1fa4c17d66a1dd6defe14f7d89b666","tests/lexical/float.rs":"0440f2d85c993bcccd925096d7f4136bf624ffd66b3c7ee565d158390685eb11","tests/lexical/math.rs":"4874be2103be5fbe8b8015354414df271ffa00fd815546fc077f15fb4d7a5a37","tests/lexical/num.rs":"6e650c40de85ed72ac06b6bf1487ba161f3824e26d827df6cfdf2bbdb8d05a05","tests/lexical/parse.rs":"17c73e0a59d462716d974b8dd23a291eb6efdc3a933248874e5eab7e7209d67f","tests/lexical/rounding.rs":"6c56e39ba534616c1b2146e8efa6eb57aed322e683bf23183cd32a61fae6447e","tests/macros/mod.rs":"93aa1d54af20bc2c55b6ae8db73c1414cda2626eb9fa7bd57b9d613a3c6e6a19","tests/map.rs":"dcc5212242e4e93703c4335d54f5603b0211b33d6fb5ab410bb630cda6d46b09","tests/regression.rs":"86731134bfb9bb693d9a4fc62393027de80a8bf031109ea6c7ea475b1ebdde8d","tests/regression/issue520.rs":"d146be3472db902b48127d65fe83aa9f698143aca9074c83cd1a9d5dd28e3ec3","tests/regression/issue795.rs":"45fadebd9398c289fbf8ddf5aedda19571bf42d0da5217b9229c466d28108e94","tests/regression/issue845.rs":"8bd64588fc344e119d0e9e5e7604236e7c168c574b0692033f15278e216a6b9c","tests/stream.rs":"3d3e819bee483423cc200db5d84c51aefcf462a992e97b6f50b7c1e16f810f2b","tests/test.rs":"6fbda1ceee388ed78e2e388f2fdb28d2bc1bb0e53a1cbf89fc506f3cfa895bd1","tests/ui/missing_colon.rs":"d07e0c34d98eb43465f0a0310f2c0b5d5b0d26d243b352a1c6bbe6ad3b27eda9","tests/ui/missing_colon.stderr":"c06d58acf6890ac6513bd1622178e5e66ba0ea7a06a3841b8351f843e4d9f41b","tests/ui/missing_comma.rs":"b8a9662f99c3e6dd2b6417892c37640578ce91d3a8365bf10c1f686a3227aa87","tests/ui/missing_comma.stderr":"c6acd42b41ee78b197c77ff513fc77a9495423bb912b188ce6ea2963b65dd82c","tests/ui/missing_value.rs":"bca25d67127fb88e7c191c7b03af5a4ce8a9abb630f3d2e6a6c1e77e213dc9a4","tests/ui/missing_value.stderr":"83c85a3846f7832dc9a8b7996165255b3a1937a5f2d2fcbb859db545d1cdf2f7","tests/ui/not_found.rs":"d0a7adb309879ff65aee115b52cc33d36f4bad353cf97c4effc34a6128c2bee3","tests/ui/not_found.stderr":"359b751c0c21fab6d460daef4d5f73a265f7769c9b578f98ea3cb6cbf2387643","tests/ui/parse_expr.rs":"32e6d51f528db3d1ab0ed1e24765b865be393565c26f77413c5aa39d601ac563","tests/ui/parse_expr.stderr":"edfbaa14fa52f6fdb319c1e1aeac4f8870258930850e669d56aa94ef59ce4432","tests/ui/parse_key.rs":"18829b2af320d5cf8a0a5cd3aaf84c7e92cc874651c30e45a3acafb76c2d8b93","tests/ui/parse_key.stderr":"fcb44e060b804a4762b7291e128c41d7010ffa8ab820b8828fd13fbe6d405ca6","tests/ui/unexpected_after_array_element.rs":"a343fc3104431720bdfcf330bcc3cfcd98c8dec3e951133b495242478b0b7eb3","tests/ui/unexpected_after_array_element.stderr":"e0547b280bcc006155c481c66b49fbe2df577e9e741b7f75fcf6ab21e9e20969","tests/ui/unexpected_after_map_entry.rs":"6e3bd2def435ca610e346bbc75cdbaf61963eb2ef1885bb5f76781ba1fac37ef","tests/ui/unexpected_after_map_entry.stderr":"57b7fc4fbff089dd5e5d76f4eba56a3357273c3f4b7ce93eea60891762cc4275","tests/ui/unexpected_colon.rs":"a313cff3fed4be4c33f1eda5d0c5c98147fb835a56d36470d9f367352c1d61ef","tests/ui/unexpected_colon.stderr":"41585758c8764f485e5c98b0cf6f5ad796f5482839f8644189d980ff422316cd","tests/ui/unexpected_comma.rs":"55a8b684bde1ce905837cce719fd457d8898b61cebc27e5b420d05cb6be97256","tests/ui/unexpected_comma.stderr":"847bb88d0db4d8a89b2a339d57eeb2d75af7670f31fcfdc687373a8681cc1653"},"package":"82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7"} \ No newline at end of file
+{"files":{"CONTRIBUTING.md":"f5270cafba66223a7b51ffc0d286075a17bb7cd88762fc80d333d3102629f4d8","Cargo.toml":"6b32727a214b53c295b1c7ae174cee020957e5c7439ef842e94b391797098cba","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"7c6217e41b058880a37e01cf8caf205daa397d33cc2199f9fa1634048bc088c5","build.rs":"20e23e5bfe6fc8155fef0e0da036ebc1f81b34078fe86f929c8247b6f4317b99","src/de.rs":"0048bb57f39c7014a491c044d527598270fe417f1676ec7ba4529fea337746bc","src/error.rs":"abb92a9bf62cb7f47141a733a9fd66ec8c369615d7e6f633d3536fd2a5ac74a2","src/features_check/error.rs":"d7359f864afbfe105a38abea9f563dc423036ebc4c956a5695a4beef144dc7ec","src/features_check/mod.rs":"2209f8d5c46b50c8a3b8dc22338dcaf0135d192e8b05d2f456cbe6a73104e958","src/io/core.rs":"9a4146802391fd202a36bebbf3b14b715ae09d8828cbe8e06a01214c470ebf5c","src/io/mod.rs":"fd1ed5080495cab21117f6f7d3c2c9e3687cad0c69a0cd087b08a145a9e672da","src/iter.rs":"f832c469cd7999d26ba9b76baa69b257a212a7edb3dfdf9b1d1bb35e8da85fa9","src/lexical/algorithm.rs":"4fbeb1994049348d1fc388dd1a29e481f8abb8fe1e28bfebf50f3bbce5fa5fbe","src/lexical/bhcomp.rs":"b7c68d74c0055eb67ec2c1bcf27bbc28bef8f1bbc43db8eb94ba69892230add6","src/lexical/bignum.rs":"4230cde10dc8eae456a713cf90ec4e48dff4b1d0c542621ce7f00f39ade2645e","src/lexical/cached.rs":"0e127398691f8042c19cde209e7f4b0161f0f3150342430145929f711e6fdac8","src/lexical/cached_float80.rs":"0f8f74a22cb7d871322a9893bffd0255ca10bf9dffd13afb2462dd3d7f51805f","src/lexical/digit.rs":"a265b9072194a62a67dfc4df3c86d4213097cf3f82280d025e0012a5a262fd9d","src/lexical/errors.rs":"6bc993febceb7dd96ac1c8c5c53b5f5a30297016c0f813ed8ff8d7938d01534d","src/lexical/exponent.rs":"387e945b97dc7ba48a7091c50d228a0dde3a1c4145703d4ab9c31191a91693b0","src/lexical/float.rs":"fe356213c92a049f4bef2f58bc0e3a26866ca06b8c1d74d0f961c5b883852cad","src/lexical/large_powers.rs":"34537f5c701afce1ec2a1fd3c14950381b2e27c9ad74f002c91f3708e8da9ca5","src/lexical/large_powers32.rs":"d533037c6141e6671102aee490c9cdeaba81e667ddca781b2b99db2c455e4a1a","src/lexical/large_powers64.rs":"745dd7c0cbe499eec027ef586248881011d9df20c7efab7929c1807b59886ba1","src/lexical/math.rs":"27e22b724cdf990cdacd0ccfc3749e6e2eb7529d43ebf6e95b1999560b9e199a","src/lexical/mod.rs":"4b4c5228779c0f135a4cb018700e3bcd495da48b74421a86f6b8b304acdef924","src/lexical/num.rs":"cf705c62612e31d704f43d94a633ea1243c6befad7ef5792e2e881a7fd21e809","src/lexical/parse.rs":"c2bfac4c70a19938ced61e991f4ec606764887cf12bac1a0978b5b5318a56aac","src/lexical/rounding.rs":"697207248ba17b7f4965aedb11d276261ada5b06d9c6265d8fd6246664ff6e3c","src/lexical/shift.rs":"bc1ed053dd63d45ac9c35302f18de9f00d94027f28af4ab749c9248439de832a","src/lexical/small_powers.rs":"4608dd218b8002435db7e1ec79d2d0fef5f47ae257b93353326d52ecc80cccda","src/lib.rs":"3787fa7e66342e654359ae6aa81c0683a1260f819ad0e3a803363407122937cd","src/macros.rs":"c9f23156faec8d5216d72b6a97eebd768efb3f75870a6e2beed824308587b998","src/map.rs":"54e5e8ba63cf12a24f2c0257b1ace12f1935ca6d862e7b657209ee6634bb771f","src/number.rs":"157378ce0c01700b99839b8d5578fa46e4d525e6ec7d49e1920537618f51768f","src/raw.rs":"ee2b4ed085d8488e72c5a19791aae9de569d6c1381e9e64ff71afa03d5cf902a","src/read.rs":"49b4b1d067b6485cbded28fb961666ab5df82c36661af722dbae756efb6b2891","src/ser.rs":"44a57aa347c2a3b234635622b675fa3b2c30b818212f5a5eef02027cf3406a84","src/value/de.rs":"64a86f6c14c2c04abc4b6f06b90bfcbda097b37b7f3e990576801f170d4af1e4","src/value/from.rs":"1968835c63dcd4058850162e3a8714b5a7e20eeec458fd4c200aa9ef0515f94c","src/value/index.rs":"8a99d8d50f5674181ced22f6e81dc529eaecb01e543e30346e51fe42cb4b8a5f","src/value/mod.rs":"47ff472a2426a135c7acdf59c4c83c7b7ce986269f10ec31c809a2b35152beda","src/value/partial_eq.rs":"95de799d57f7f4310b64a9488c0a7286dee76dba4329cb69a96298a887e58586","src/value/ser.rs":"3dafa51d46fa7d742398863c4f3a0251afc6193dac75e6231655c9c1690dcd54","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/debug.rs":"a8451217c1e127ad6e653ef11e0513525ee350e1e37dd575758a8ee9301b28fb","tests/lexical.rs":"383e06283e15e1db7c6b818da3c84a3afa0059f6e9fc994b069919d81346ab91","tests/lexical/algorithm.rs":"da378df9ee24bfa033968d5c94e91b58e52c39bf6c825dec51c3eb7250cc5874","tests/lexical/exponent.rs":"26ea92abc654a6a88a8281552bca2f76ea1fa4c17d66a1dd6defe14f7d89b666","tests/lexical/float.rs":"0440f2d85c993bcccd925096d7f4136bf624ffd66b3c7ee565d158390685eb11","tests/lexical/math.rs":"4874be2103be5fbe8b8015354414df271ffa00fd815546fc077f15fb4d7a5a37","tests/lexical/num.rs":"6e650c40de85ed72ac06b6bf1487ba161f3824e26d827df6cfdf2bbdb8d05a05","tests/lexical/parse.rs":"17c73e0a59d462716d974b8dd23a291eb6efdc3a933248874e5eab7e7209d67f","tests/lexical/rounding.rs":"6c56e39ba534616c1b2146e8efa6eb57aed322e683bf23183cd32a61fae6447e","tests/macros/mod.rs":"93aa1d54af20bc2c55b6ae8db73c1414cda2626eb9fa7bd57b9d613a3c6e6a19","tests/map.rs":"dcc5212242e4e93703c4335d54f5603b0211b33d6fb5ab410bb630cda6d46b09","tests/regression.rs":"86731134bfb9bb693d9a4fc62393027de80a8bf031109ea6c7ea475b1ebdde8d","tests/regression/issue520.rs":"d146be3472db902b48127d65fe83aa9f698143aca9074c83cd1a9d5dd28e3ec3","tests/regression/issue795.rs":"582e2e7c68113f05a4b1d2cb556a2df7cc77f2ce8164a32c5cc58ae68abb60ec","tests/regression/issue845.rs":"8bd64588fc344e119d0e9e5e7604236e7c168c574b0692033f15278e216a6b9c","tests/stream.rs":"c7d91014538ecd8f495b196d40e999ab2745f2e69fa2ff9e52521605dc6ce856","tests/test.rs":"809b07b6990004a389780fc45d7e81539bf95003a3f410873ce924153ae01ae0","tests/ui/missing_colon.rs":"d07e0c34d98eb43465f0a0310f2c0b5d5b0d26d243b352a1c6bbe6ad3b27eda9","tests/ui/missing_colon.stderr":"8dd5c769f36ede610172f69140a3faf603cd4590cb4abc8eaa1b499fe3537ad9","tests/ui/missing_comma.rs":"b8a9662f99c3e6dd2b6417892c37640578ce91d3a8365bf10c1f686a3227aa87","tests/ui/missing_comma.stderr":"c6acd42b41ee78b197c77ff513fc77a9495423bb912b188ce6ea2963b65dd82c","tests/ui/missing_value.rs":"bca25d67127fb88e7c191c7b03af5a4ce8a9abb630f3d2e6a6c1e77e213dc9a4","tests/ui/missing_value.stderr":"15727519f300c64d6968cd99398227f7fbbf660825459a0768f2bf947eadf752","tests/ui/not_found.rs":"d0a7adb309879ff65aee115b52cc33d36f4bad353cf97c4effc34a6128c2bee3","tests/ui/not_found.stderr":"359b751c0c21fab6d460daef4d5f73a265f7769c9b578f98ea3cb6cbf2387643","tests/ui/parse_expr.rs":"32e6d51f528db3d1ab0ed1e24765b865be393565c26f77413c5aa39d601ac563","tests/ui/parse_expr.stderr":"edfbaa14fa52f6fdb319c1e1aeac4f8870258930850e669d56aa94ef59ce4432","tests/ui/parse_key.rs":"18829b2af320d5cf8a0a5cd3aaf84c7e92cc874651c30e45a3acafb76c2d8b93","tests/ui/parse_key.stderr":"fcb44e060b804a4762b7291e128c41d7010ffa8ab820b8828fd13fbe6d405ca6","tests/ui/unexpected_after_array_element.rs":"a343fc3104431720bdfcf330bcc3cfcd98c8dec3e951133b495242478b0b7eb3","tests/ui/unexpected_after_array_element.stderr":"e0547b280bcc006155c481c66b49fbe2df577e9e741b7f75fcf6ab21e9e20969","tests/ui/unexpected_after_map_entry.rs":"6e3bd2def435ca610e346bbc75cdbaf61963eb2ef1885bb5f76781ba1fac37ef","tests/ui/unexpected_after_map_entry.stderr":"57b7fc4fbff089dd5e5d76f4eba56a3357273c3f4b7ce93eea60891762cc4275","tests/ui/unexpected_colon.rs":"a313cff3fed4be4c33f1eda5d0c5c98147fb835a56d36470d9f367352c1d61ef","tests/ui/unexpected_colon.stderr":"41585758c8764f485e5c98b0cf6f5ad796f5482839f8644189d980ff422316cd","tests/ui/unexpected_comma.rs":"55a8b684bde1ce905837cce719fd457d8898b61cebc27e5b420d05cb6be97256","tests/ui/unexpected_comma.stderr":"847bb88d0db4d8a89b2a339d57eeb2d75af7670f31fcfdc687373a8681cc1653"},"package":"41feea4228a6f1cd09ec7a3593a682276702cd67b5273544757dae23c096f074"} \ No newline at end of file
diff --git a/vendor/serde_json/Cargo.toml b/vendor/serde_json/Cargo.toml
index 0fb0d05d8..1e1aebb8e 100644
--- a/vendor/serde_json/Cargo.toml
+++ b/vendor/serde_json/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.36"
name = "serde_json"
-version = "1.0.82"
+version = "1.0.86"
authors = [
"Erick Tryzelaar <erick.tryzelaar@gmail.com>",
"David Tolnay <dtolnay@gmail.com>",
@@ -26,7 +26,11 @@ keywords = [
"serde",
"serialization",
]
-categories = ["encoding"]
+categories = [
+ "encoding",
+ "parser-implementations",
+ "no-std",
+]
license = "MIT OR Apache-2.0"
repository = "https://github.com/serde-rs/json"
@@ -62,6 +66,9 @@ default-features = false
[dev-dependencies.automod]
version = "1.0"
+[dev-dependencies.indoc]
+version = "1.0"
+
[dev-dependencies.ref-cast]
version = "1.0"
diff --git a/vendor/serde_json/src/lib.rs b/vendor/serde_json/src/lib.rs
index 736ab8472..3a1983c3f 100644
--- a/vendor/serde_json/src/lib.rs
+++ b/vendor/serde_json/src/lib.rs
@@ -300,7 +300,7 @@
//! [macro]: https://docs.serde.rs/serde_json/macro.json.html
//! [`serde-json-core`]: https://github.com/rust-embedded-community/serde-json-core
-#![doc(html_root_url = "https://docs.rs/serde_json/1.0.82")]
+#![doc(html_root_url = "https://docs.rs/serde_json/1.0.86")]
// Ignored clippy lints
#![allow(
clippy::collapsible_else_if,
@@ -308,6 +308,7 @@
clippy::deprecated_cfg_attr,
clippy::doc_markdown,
clippy::excessive_precision,
+ clippy::explicit_auto_deref,
clippy::float_cmp,
clippy::manual_range_contains,
clippy::match_like_matches_macro,
diff --git a/vendor/serde_json/src/number.rs b/vendor/serde_json/src/number.rs
index b965271fd..3c8f6f1bf 100644
--- a/vendor/serde_json/src/number.rs
+++ b/vendor/serde_json/src/number.rs
@@ -1,20 +1,23 @@
use crate::de::ParserNumber;
use crate::error::Error;
+#[cfg(feature = "arbitrary_precision")]
+use crate::error::ErrorCode;
+#[cfg(feature = "arbitrary_precision")]
+use alloc::borrow::ToOwned;
+#[cfg(feature = "arbitrary_precision")]
+use alloc::string::{String, ToString};
use core::fmt::{self, Debug, Display};
#[cfg(not(feature = "arbitrary_precision"))]
use core::hash::{Hash, Hasher};
use serde::de::{self, Unexpected, Visitor};
+#[cfg(feature = "arbitrary_precision")]
+use serde::de::{IntoDeserializer, MapAccess};
use serde::{
forward_to_deserialize_any, serde_if_integer128, Deserialize, Deserializer, Serialize,
Serializer,
};
#[cfg(feature = "arbitrary_precision")]
-use crate::error::ErrorCode;
-#[cfg(feature = "arbitrary_precision")]
-use serde::de::{IntoDeserializer, MapAccess};
-
-#[cfg(feature = "arbitrary_precision")]
pub(crate) const TOKEN: &str = "$serde_json::private::Number";
/// Represents a JSON number, whether integer or floating point.
@@ -292,9 +295,9 @@ impl Display for Number {
#[cfg(not(feature = "arbitrary_precision"))]
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
match self.n {
- N::PosInt(u) => Display::fmt(&u, formatter),
- N::NegInt(i) => Display::fmt(&i, formatter),
- N::Float(f) => Display::fmt(&f, formatter),
+ N::PosInt(u) => formatter.write_str(itoa::Buffer::new().format(u)),
+ N::NegInt(i) => formatter.write_str(itoa::Buffer::new().format(i)),
+ N::Float(f) => formatter.write_str(ryu::Buffer::new().format_finite(f)),
}
}
@@ -305,29 +308,8 @@ impl Display for Number {
}
impl Debug for Number {
- #[cfg(not(feature = "arbitrary_precision"))]
- fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
- let mut debug = formatter.debug_tuple("Number");
- match self.n {
- N::PosInt(i) => {
- debug.field(&i);
- }
- N::NegInt(i) => {
- debug.field(&i);
- }
- N::Float(f) => {
- debug.field(&f);
- }
- }
- debug.finish()
- }
-
- #[cfg(feature = "arbitrary_precision")]
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
- formatter
- .debug_tuple("Number")
- .field(&format_args!("{}", self.n))
- .finish()
+ write!(formatter, "Number({})", self)
}
}
@@ -752,13 +734,15 @@ impl_from_signed!(i8, i16, i32, i64, isize);
serde_if_integer128! {
impl From<i128> for Number {
fn from(i: i128) -> Self {
- Number { n: i.to_string() }
+ let n = itoa::Buffer::new().format(i).to_owned();
+ Number { n }
}
}
impl From<u128> for Number {
fn from(u: u128) -> Self {
- Number { n: u.to_string() }
+ let n = itoa::Buffer::new().format(u).to_owned();
+ Number { n }
}
}
}
diff --git a/vendor/serde_json/src/value/mod.rs b/vendor/serde_json/src/value/mod.rs
index 4793e93ec..c467df6cc 100644
--- a/vendor/serde_json/src/value/mod.rs
+++ b/vendor/serde_json/src/value/mod.rs
@@ -177,19 +177,17 @@ pub enum Value {
impl Debug for Value {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
match self {
- Value::Null => formatter.debug_tuple("Null").finish(),
- Value::Bool(v) => formatter.debug_tuple("Bool").field(v).finish(),
- Value::Number(v) => Debug::fmt(v, formatter),
- Value::String(v) => formatter.debug_tuple("String").field(v).finish(),
- Value::Array(v) => {
- formatter.write_str("Array(")?;
- Debug::fmt(v, formatter)?;
- formatter.write_str(")")
+ Value::Null => formatter.write_str("Null"),
+ Value::Bool(boolean) => write!(formatter, "Bool({})", boolean),
+ Value::Number(number) => Debug::fmt(number, formatter),
+ Value::String(string) => write!(formatter, "String({:?})", string),
+ Value::Array(vec) => {
+ formatter.write_str("Array ")?;
+ Debug::fmt(vec, formatter)
}
- Value::Object(v) => {
- formatter.write_str("Object(")?;
- Debug::fmt(v, formatter)?;
- formatter.write_str(")")
+ Value::Object(map) => {
+ formatter.write_str("Object ")?;
+ Debug::fmt(map, formatter)
}
}
}
diff --git a/vendor/serde_json/src/value/ser.rs b/vendor/serde_json/src/value/ser.rs
index c142dacbf..37e495f65 100644
--- a/vendor/serde_json/src/value/ser.rs
+++ b/vendor/serde_json/src/value/ser.rs
@@ -195,7 +195,7 @@ impl serde::Serializer for Serializer {
T: ?Sized + Serialize,
{
let mut values = Map::new();
- values.insert(String::from(variant), tri!(to_value(&value)));
+ values.insert(String::from(variant), tri!(to_value(value)));
Ok(Value::Object(values))
}
@@ -314,7 +314,7 @@ impl serde::ser::SerializeSeq for SerializeVec {
where
T: ?Sized + Serialize,
{
- self.vec.push(tri!(to_value(&value)));
+ self.vec.push(tri!(to_value(value)));
Ok(())
}
@@ -363,7 +363,7 @@ impl serde::ser::SerializeTupleVariant for SerializeTupleVariant {
where
T: ?Sized + Serialize,
{
- self.vec.push(tri!(to_value(&value)));
+ self.vec.push(tri!(to_value(value)));
Ok(())
}
@@ -406,7 +406,7 @@ impl serde::ser::SerializeMap for SerializeMap {
// Panic because this indicates a bug in the program rather than an
// expected failure.
let key = key.expect("serialize_value called before serialize_key");
- map.insert(key, tri!(to_value(&value)));
+ map.insert(key, tri!(to_value(value)));
Ok(())
}
#[cfg(feature = "arbitrary_precision")]
@@ -663,7 +663,7 @@ impl serde::ser::SerializeStructVariant for SerializeStructVariant {
where
T: ?Sized + Serialize,
{
- self.map.insert(String::from(key), tri!(to_value(&value)));
+ self.map.insert(String::from(key), tri!(to_value(value)));
Ok(())
}
diff --git a/vendor/serde_json/tests/debug.rs b/vendor/serde_json/tests/debug.rs
index d2d8448be..8ddcf5a38 100644
--- a/vendor/serde_json/tests/debug.rs
+++ b/vendor/serde_json/tests/debug.rs
@@ -1,3 +1,4 @@
+use indoc::indoc;
use serde_json::{json, Number, Value};
#[test]
@@ -26,6 +27,8 @@ fn value_number() {
assert_eq!(format!("{:?}", json!(1)), "Number(1)");
assert_eq!(format!("{:?}", json!(-1)), "Number(-1)");
assert_eq!(format!("{:?}", json!(1.0)), "Number(1.0)");
+ assert_eq!(Number::from_f64(1.0).unwrap().to_string(), "1.0"); // not just "1"
+ assert_eq!(Number::from_f64(12e40).unwrap().to_string(), "1.2e41");
}
#[test]
@@ -35,12 +38,12 @@ fn value_string() {
#[test]
fn value_array() {
- assert_eq!(format!("{:?}", json!([])), "Array([])");
+ assert_eq!(format!("{:?}", json!([])), "Array []");
}
#[test]
fn value_object() {
- assert_eq!(format!("{:?}", json!({})), "Object({})");
+ assert_eq!(format!("{:?}", json!({})), "Object {}");
}
#[test]
@@ -50,19 +53,29 @@ fn error() {
assert_eq!(format!("{:?}", err), expected);
}
-const INDENTED_EXPECTED: &str = r#"Object({
- "array": Array([
- Number(
- 0,
- ),
- Number(
- 1,
- ),
- ]),
-})"#;
-
#[test]
fn indented() {
- let j = json!({ "array": [0, 1] });
- assert_eq!(format!("{:#?}", j), INDENTED_EXPECTED);
+ let j = json!({
+ "Array": [true],
+ "Bool": true,
+ "EmptyArray": [],
+ "EmptyObject": {},
+ "Null": null,
+ "Number": 1,
+ "String": "...",
+ });
+ let expected = indoc! {r#"
+ Object {
+ "Array": Array [
+ Bool(true),
+ ],
+ "Bool": Bool(true),
+ "EmptyArray": Array [],
+ "EmptyObject": Object {},
+ "Null": Null,
+ "Number": Number(1),
+ "String": String("..."),
+ }"#
+ };
+ assert_eq!(format!("{:#?}", j), expected);
}
diff --git a/vendor/serde_json/tests/regression/issue795.rs b/vendor/serde_json/tests/regression/issue795.rs
index 06b68724e..bb82852c5 100644
--- a/vendor/serde_json/tests/regression/issue795.rs
+++ b/vendor/serde_json/tests/regression/issue795.rs
@@ -1,3 +1,5 @@
+#![allow(clippy::assertions_on_result_states)]
+
use serde::de::{
Deserialize, Deserializer, EnumAccess, IgnoredAny, MapAccess, VariantAccess, Visitor,
};
diff --git a/vendor/serde_json/tests/stream.rs b/vendor/serde_json/tests/stream.rs
index ca54e9a15..ec6b9e3d0 100644
--- a/vendor/serde_json/tests/stream.rs
+++ b/vendor/serde_json/tests/stream.rs
@@ -1,4 +1,5 @@
#![cfg(not(feature = "preserve_order"))]
+#![allow(clippy::assertions_on_result_states)]
use serde_json::{json, Deserializer, Value};
diff --git a/vendor/serde_json/tests/test.rs b/vendor/serde_json/tests/test.rs
index 13d30c490..aa5b5caa0 100644
--- a/vendor/serde_json/tests/test.rs
+++ b/vendor/serde_json/tests/test.rs
@@ -1,5 +1,6 @@
#![cfg(not(feature = "preserve_order"))]
#![allow(
+ clippy::assertions_on_result_states,
clippy::cast_precision_loss,
clippy::derive_partial_eq_without_eq,
clippy::excessive_precision,
@@ -94,7 +95,7 @@ where
let s = to_string(value).unwrap();
assert_eq!(s, out);
- let v = to_value(&value).unwrap();
+ let v = to_value(value).unwrap();
let s = to_string(&v).unwrap();
assert_eq!(s, out);
}
@@ -110,7 +111,7 @@ where
let s = to_string_pretty(value).unwrap();
assert_eq!(s, out);
- let v = to_value(&value).unwrap();
+ let v = to_value(value).unwrap();
let s = to_string_pretty(&v).unwrap();
assert_eq!(s, out);
}
@@ -1106,7 +1107,7 @@ fn test_parse_string() {
]);
test_parse_ok(vec![
- ("\"\"", "".to_string()),
+ ("\"\"", String::new()),
("\"foo\"", "foo".to_string()),
(" \"foo\" ", "foo".to_string()),
("\"\\\"\"", "\"".to_string()),
diff --git a/vendor/serde_json/tests/ui/missing_colon.stderr b/vendor/serde_json/tests/ui/missing_colon.stderr
index 9b83c1777..3cebc4fd3 100644
--- a/vendor/serde_json/tests/ui/missing_colon.stderr
+++ b/vendor/serde_json/tests/ui/missing_colon.stderr
@@ -4,4 +4,4 @@ error: unexpected end of macro invocation
4 | json!({ "a" });
| ^^^^^^^^^^^^^^ missing tokens in macro arguments
|
- = note: this error originates in the macro `json_internal` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `json_internal` which comes from the expansion of the macro `json` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/serde_json/tests/ui/missing_value.stderr b/vendor/serde_json/tests/ui/missing_value.stderr
index d538d9613..a1edbc37b 100644
--- a/vendor/serde_json/tests/ui/missing_value.stderr
+++ b/vendor/serde_json/tests/ui/missing_value.stderr
@@ -4,4 +4,4 @@ error: unexpected end of macro invocation
4 | json!({ "a" : });
| ^^^^^^^^^^^^^^^^ missing tokens in macro arguments
|
- = note: this error originates in the macro `json_internal` (in Nightly builds, run with -Z macro-backtrace for more info)
+ = note: this error originates in the macro `json_internal` which comes from the expansion of the macro `json` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/serde_repr/.cargo-checksum.json b/vendor/serde_repr/.cargo-checksum.json
index 4012e22d8..fb30edebf 100644
--- a/vendor/serde_repr/.cargo-checksum.json
+++ b/vendor/serde_repr/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"99cae9ec2495b733e77b78630bc8cfc312afac866b84c71618d896a7c90e555d","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"18848980d7a8fc120c0c03fbf02a79ea7cd9e6f446f4c76aad48782c76967634","src/lib.rs":"6991484c16826a6b5bf50924448d5b1a858e832f64770c95bd2ac24a757e632a","src/parse.rs":"687cf1436d12c0c26b1c6d06f80e56b4ec0d63a38d71e1f175b981c0fdc10c68","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test.rs":"a5c4df255ded38d91a3abb4b6c59fde6710a17b0832c8a5bba2a04b455a14bfa","tests/ui/empty_enum.rs":"fe1166f2f92ee213d26a23e57572a99c65c163d446fd8d67e1520bab34f4b859","tests/ui/empty_enum.stderr":"2c8907fc146bb4dcdb926b72de4f823dae4c1c0d8de8a636c512539408f26cc7","tests/ui/missing_repr.rs":"b7ba9341111582cad52e761b82f14778c60352014c4265566e4d4d01ccdcb306","tests/ui/missing_repr.stderr":"dfcb65527963fb8962e1442e10d3c71e141f238b1732483e1739b528ae0eca43","tests/ui/multiple_others.rs":"569658516619719f21e5071873a37125d5390edb77558e4381401f03efda0c83","tests/ui/multiple_others.stderr":"a300f94d2a2049d6718866d17b5673201edc275164b9e8eba25a9ffcd71fd30f","tests/ui/non_unit_variant.rs":"0d8295ae08d882fc3ef4164857240038c5b0674ff0811da9b6ea7343e8bb955c","tests/ui/non_unit_variant.stderr":"18f2900e501b8c64b980445758ca1cb59594dc8d24a1a76abb08a48d8beb3f35","tests/ui/not_enum.rs":"ada7637821c924a6b99175363c820375991be60223f96ca553d304fde2721386","tests/ui/not_enum.stderr":"814525f9a1495225511a02ad4149c9371ea622230b8002564fe83cf52300c728"},"package":"a2ad84e47328a31223de7fed7a4f5087f2d6ddfe586cf3ca25b7a165bc0a5aed"} \ No newline at end of file
+{"files":{"Cargo.toml":"9c18626e7651c83a27fd830650fddfba5db26eecfb706efdf49a33b9dbd49376","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"390805207b02b9766faf9df282ab0a6ee03c64c97a5af07ad516d5c6e095a011","src/lib.rs":"7acb4fb05f93dd98a0f2c83de6da38ed68e882c7b7ea244aa607c1c5113f8509","src/parse.rs":"687cf1436d12c0c26b1c6d06f80e56b4ec0d63a38d71e1f175b981c0fdc10c68","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test.rs":"a4ddb956ee9eafc0b50694075497a2712a347f1a682f9038e2dd654c6605af44","tests/ui/empty_enum.rs":"fe1166f2f92ee213d26a23e57572a99c65c163d446fd8d67e1520bab34f4b859","tests/ui/empty_enum.stderr":"2c8907fc146bb4dcdb926b72de4f823dae4c1c0d8de8a636c512539408f26cc7","tests/ui/missing_repr.rs":"b7ba9341111582cad52e761b82f14778c60352014c4265566e4d4d01ccdcb306","tests/ui/missing_repr.stderr":"dfcb65527963fb8962e1442e10d3c71e141f238b1732483e1739b528ae0eca43","tests/ui/multiple_others.rs":"569658516619719f21e5071873a37125d5390edb77558e4381401f03efda0c83","tests/ui/multiple_others.stderr":"a300f94d2a2049d6718866d17b5673201edc275164b9e8eba25a9ffcd71fd30f","tests/ui/non_unit_variant.rs":"0d8295ae08d882fc3ef4164857240038c5b0674ff0811da9b6ea7343e8bb955c","tests/ui/non_unit_variant.stderr":"18f2900e501b8c64b980445758ca1cb59594dc8d24a1a76abb08a48d8beb3f35","tests/ui/not_enum.rs":"ada7637821c924a6b99175363c820375991be60223f96ca553d304fde2721386","tests/ui/not_enum.stderr":"814525f9a1495225511a02ad4149c9371ea622230b8002564fe83cf52300c728"},"package":"1fe39d9fbb0ebf5eb2c7cb7e2a47e4f462fad1379f1166b8ae49ad9eae89a7ca"} \ No newline at end of file
diff --git a/vendor/serde_repr/Cargo.toml b/vendor/serde_repr/Cargo.toml
index 41cb6a15c..6cbdafeae 100644
--- a/vendor/serde_repr/Cargo.toml
+++ b/vendor/serde_repr/Cargo.toml
@@ -13,11 +13,20 @@
edition = "2018"
rust-version = "1.31"
name = "serde_repr"
-version = "0.1.8"
+version = "0.1.9"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "Derive Serialize and Deserialize that delegates to the underlying repr of a C-like enum."
documentation = "https://docs.rs/serde_repr"
readme = "README.md"
+keywords = [
+ "serde",
+ "serialization",
+ "integer",
+]
+categories = [
+ "encoding",
+ "no-std",
+]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/serde-repr"
diff --git a/vendor/serde_repr/README.md b/vendor/serde_repr/README.md
index c87b3cedc..8c8dee1ea 100644
--- a/vendor/serde_repr/README.md
+++ b/vendor/serde_repr/README.md
@@ -3,7 +3,7 @@ Serde repr derive
[<img alt="github" src="https://img.shields.io/badge/github-dtolnay/serde--repr-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20">](https://github.com/dtolnay/serde-repr)
[<img alt="crates.io" src="https://img.shields.io/crates/v/serde_repr.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20">](https://crates.io/crates/serde_repr)
-[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-serde__repr-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K" height="20">](https://docs.rs/serde_repr)
+[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-serde__repr-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs" height="20">](https://docs.rs/serde_repr)
[<img alt="build status" src="https://img.shields.io/github/workflow/status/dtolnay/serde-repr/CI/master?style=for-the-badge" height="20">](https://github.com/dtolnay/serde-repr/actions?query=branch%3Amaster)
This crate provides a derive macro to derive Serde's `Serialize` and
diff --git a/vendor/serde_repr/src/lib.rs b/vendor/serde_repr/src/lib.rs
index 72e2c2bdd..2ad67df06 100644
--- a/vendor/serde_repr/src/lib.rs
+++ b/vendor/serde_repr/src/lib.rs
@@ -2,7 +2,7 @@
//!
//! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github
//! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust
-//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K
+//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs
//!
//! <br>
//!
diff --git a/vendor/serde_repr/tests/test.rs b/vendor/serde_repr/tests/test.rs
index 8c44827dd..d442448dd 100644
--- a/vendor/serde_repr/tests/test.rs
+++ b/vendor/serde_repr/tests/test.rs
@@ -1,4 +1,5 @@
#![allow(
+ clippy::derive_partial_eq_without_eq,
// Clippy bug: https://github.com/rust-lang/rust-clippy/issues/7422
clippy::nonstandard_macro_braces,
clippy::wildcard_imports,
diff --git a/vendor/sha-1-0.8.2/.cargo-checksum.json b/vendor/sha-1-0.8.2/.cargo-checksum.json
deleted file mode 100644
index 4c2a775dd..000000000
--- a/vendor/sha-1-0.8.2/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"Cargo.lock":"cb91ffff371524a65d00a6d075e7d94d01f253393661058750217edc1005b76e","Cargo.toml":"80517f782161bae604f15650e2ef9ddbfd4c25c68a61d023e183483412bce8dd","LICENSE-APACHE":"a9040321c3712d8fd0b09cf52b17445de04a23a10165049ae187cd39e5c86be5","LICENSE-MIT":"b4eb00df6e2a4d22518fcaa6a2b4646f249b3a3c9814509b22bd2091f1392ff1","benches/lib.rs":"a37a0e99c673a3049d4ffa229eb1b3e1a3006f611a76b881f12440fcb075c361","examples/sha1sum.rs":"3b52d8ba4cc4271d3111b5cb578095761eab7ded2fede3c498d11eaf68a120b8","src/aarch64.rs":"150de941565333e50edb5b156e9448ce613621fac0660f6ed114d061ab97be6a","src/consts.rs":"b4346e3e6d28ad3f0a24cc199ebc73784466202a2cab09dfc938c14a41d5b4b2","src/lib.rs":"31e1c136ed0e41bf83fc5b32e8a456b89b556e541c3fe3fd78c9284a78bf7930","src/utils.rs":"a38e6d9df1994357f292c846e9fce3026bc02374fae8cbca18b9884e8a4759c6","tests/data/one_million_a.bin":"e53c99dcb3ee1436b1c01e53799a07891009be5cdb244133e5eda0ec56d7233a","tests/data/sha1.blb":"b620d6ab76fd26fea6b7be1be720652926b6cea9901a294ff8ba855666ddf19a","tests/lib.rs":"adce369751e6faab77582c03436abcd7dae816843501e1c63cbfd72942b76100"},"package":"f7d94d0bede923b3cea61f3f1ff57ff8cdfd77b400fb8f9998949e0cf04163df"} \ No newline at end of file
diff --git a/vendor/sha-1-0.8.2/Cargo.lock b/vendor/sha-1-0.8.2/Cargo.lock
deleted file mode 100644
index cef4543a0..000000000
--- a/vendor/sha-1-0.8.2/Cargo.lock
+++ /dev/null
@@ -1,148 +0,0 @@
-# This file is automatically @generated by Cargo.
-# It is not intended for manual editing.
-[[package]]
-name = "blobby"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6fe5f8c2940b65859ece4b3b2ba02d2b12c87cab455fd42dee2556a187bb2cf6"
-dependencies = [
- "byteorder",
-]
-
-[[package]]
-name = "block-buffer"
-version = "0.7.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b"
-dependencies = [
- "block-padding",
- "byte-tools",
- "byteorder",
- "generic-array",
-]
-
-[[package]]
-name = "block-padding"
-version = "0.1.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5"
-dependencies = [
- "byte-tools",
-]
-
-[[package]]
-name = "byte-tools"
-version = "0.3.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7"
-
-[[package]]
-name = "byteorder"
-version = "1.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
-
-[[package]]
-name = "cc"
-version = "1.0.48"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f52a465a666ca3d838ebbf08b241383421412fe7ebb463527bba275526d89f76"
-
-[[package]]
-name = "digest"
-version = "0.8.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5"
-dependencies = [
- "blobby",
- "generic-array",
-]
-
-[[package]]
-name = "fake-simd"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed"
-
-[[package]]
-name = "generic-array"
-version = "0.12.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec"
-dependencies = [
- "typenum",
-]
-
-[[package]]
-name = "hex-literal"
-version = "0.1.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ddc2928beef125e519d69ae1baa8c37ea2e0d3848545217f6db0179c5eb1d639"
-dependencies = [
- "hex-literal-impl",
- "proc-macro-hack",
-]
-
-[[package]]
-name = "hex-literal-impl"
-version = "0.1.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "520870c3213943eb8d7803e80180d12a6c7ceb4ae74602544529d1643dc4ddda"
-dependencies = [
- "proc-macro-hack",
-]
-
-[[package]]
-name = "libc"
-version = "0.2.66"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d515b1f41455adea1313a4a2ac8a8a477634fbae63cc6100e3aebb207ce61558"
-
-[[package]]
-name = "opaque-debug"
-version = "0.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
-
-[[package]]
-name = "proc-macro-hack"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "463bf29e7f11344e58c9e01f171470ab15c925c6822ad75028cc1c0e1d1eb63b"
-dependencies = [
- "proc-macro-hack-impl",
-]
-
-[[package]]
-name = "proc-macro-hack-impl"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "38c47dcb1594802de8c02f3b899e2018c78291168a22c281be21ea0fb4796842"
-
-[[package]]
-name = "sha-1"
-version = "0.8.2"
-dependencies = [
- "block-buffer",
- "digest",
- "fake-simd",
- "hex-literal",
- "libc",
- "opaque-debug",
- "sha1-asm",
-]
-
-[[package]]
-name = "sha1-asm"
-version = "0.4.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b9dae2289dd5f5dc67fb0f341a5676c5c197415c51ce7345ae1bd0d36a6cbbfc"
-dependencies = [
- "cc",
-]
-
-[[package]]
-name = "typenum"
-version = "1.11.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d2783fe2d6b8c1101136184eb41be8b1ad379e4657050b8aaff0c79ee7575f9"
diff --git a/vendor/sha-1-0.8.2/Cargo.toml b/vendor/sha-1-0.8.2/Cargo.toml
deleted file mode 100644
index a230700c7..000000000
--- a/vendor/sha-1-0.8.2/Cargo.toml
+++ /dev/null
@@ -1,58 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-name = "sha-1"
-version = "0.8.2"
-authors = ["RustCrypto Developers"]
-description = "SHA-1 hash function"
-documentation = "https://docs.rs/sha-1"
-keywords = ["crypto", "sha1", "hash", "digest"]
-categories = ["cryptography", "no-std"]
-license = "MIT OR Apache-2.0"
-repository = "https://github.com/RustCrypto/hashes"
-
-[lib]
-name = "sha1"
-[dependencies.block-buffer]
-version = "0.7"
-
-[dependencies.digest]
-version = "0.8"
-
-[dependencies.fake-simd]
-version = "0.1"
-
-[dependencies.libc]
-version = "0.2"
-optional = true
-
-[dependencies.opaque-debug]
-version = "0.2"
-
-[dependencies.sha1-asm]
-version = "0.4"
-optional = true
-[dev-dependencies.digest]
-version = "0.8"
-features = ["dev"]
-
-[dev-dependencies.hex-literal]
-version = "0.1"
-
-[features]
-asm = ["sha1-asm"]
-asm-aarch64 = ["asm", "libc"]
-default = ["std"]
-std = ["digest/std"]
-[badges.travis-ci]
-repository = "RustCrypto/hashes"
diff --git a/vendor/sha-1-0.8.2/LICENSE-APACHE b/vendor/sha-1-0.8.2/LICENSE-APACHE
deleted file mode 100644
index 78173fa2e..000000000
--- a/vendor/sha-1-0.8.2/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/vendor/sha-1-0.8.2/LICENSE-MIT b/vendor/sha-1-0.8.2/LICENSE-MIT
deleted file mode 100644
index 66cf75563..000000000
--- a/vendor/sha-1-0.8.2/LICENSE-MIT
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright (c) 2006-2009 Graydon Hoare
-Copyright (c) 2009-2013 Mozilla Foundation
-Copyright (c) 2016 Artyom Pavlov
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/vendor/sha-1-0.8.2/benches/lib.rs b/vendor/sha-1-0.8.2/benches/lib.rs
deleted file mode 100644
index e204e565a..000000000
--- a/vendor/sha-1-0.8.2/benches/lib.rs
+++ /dev/null
@@ -1,7 +0,0 @@
-#![no_std]
-#![feature(test)]
-#[macro_use]
-extern crate digest;
-extern crate sha1;
-
-bench!(sha1::Sha1);
diff --git a/vendor/sha-1-0.8.2/examples/sha1sum.rs b/vendor/sha-1-0.8.2/examples/sha1sum.rs
deleted file mode 100644
index bde1ab4f6..000000000
--- a/vendor/sha-1-0.8.2/examples/sha1sum.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-extern crate sha1;
-
-use sha1::{Sha1, Digest};
-use std::env;
-use std::fs;
-use std::io::{self, Read};
-
-const BUFFER_SIZE: usize = 1024;
-
-/// Print digest result as hex string and name pair
-fn print_result(sum: &[u8], name: &str) {
- for byte in sum {
- print!("{:02x}", byte);
- }
- println!("\t{}", name);
-}
-
-/// Compute digest value for given `Reader` and print it
-/// On any error simply return without doing anything
-fn process<D: Digest + Default, R: Read>(reader: &mut R, name: &str) {
- let mut sh = D::default();
- let mut buffer = [0u8; BUFFER_SIZE];
- loop {
- let n = match reader.read(&mut buffer) {
- Ok(n) => n,
- Err(_) => return,
- };
- sh.input(&buffer[..n]);
- if n == 0 || n < BUFFER_SIZE {
- break;
- }
- }
- print_result(&sh.result(), name);
-}
-
-fn main() {
- let args = env::args();
- // Process files listed in command line arguments one by one
- // If no files provided process input from stdin
- if args.len() > 1 {
- for path in args.skip(1) {
- if let Ok(mut file) = fs::File::open(&path) {
- process::<Sha1, _>(&mut file, &path);
- }
- }
- } else {
- process::<Sha1, _>(&mut io::stdin(), "-");
- }
-}
diff --git a/vendor/sha-1-0.8.2/src/aarch64.rs b/vendor/sha-1-0.8.2/src/aarch64.rs
deleted file mode 100644
index d3cffecd7..000000000
--- a/vendor/sha-1-0.8.2/src/aarch64.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-// TODO: Import those from libc, see https://github.com/rust-lang/libc/pull/1638
-const AT_HWCAP: u64 = 16;
-const HWCAP_SHA1: u64 = 32;
-
-#[inline(always)]
-pub fn sha1_supported() -> bool {
- let hwcaps: u64 = unsafe { ::libc::getauxval(AT_HWCAP) };
- (hwcaps & HWCAP_SHA1) != 0
-}
diff --git a/vendor/sha-1-0.8.2/src/consts.rs b/vendor/sha-1-0.8.2/src/consts.rs
deleted file mode 100644
index 628d4d6e0..000000000
--- a/vendor/sha-1-0.8.2/src/consts.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-#![cfg_attr(feature = "cargo-clippy", allow(unreadable_literal))]
-
-pub const STATE_LEN: usize = 5;
-
-#[cfg(any(not(feature = "asm"), feature = "asm-aarch64"))]
-pub const BLOCK_LEN: usize = 16;
-
-#[cfg(any(not(feature = "asm"), feature = "asm-aarch64"))]
-pub const K0: u32 = 0x5A827999u32;
-#[cfg(any(not(feature = "asm"), feature = "asm-aarch64"))]
-pub const K1: u32 = 0x6ED9EBA1u32;
-#[cfg(any(not(feature = "asm"), feature = "asm-aarch64"))]
-pub const K2: u32 = 0x8F1BBCDCu32;
-#[cfg(any(not(feature = "asm"), feature = "asm-aarch64"))]
-pub const K3: u32 = 0xCA62C1D6u32;
-
-pub const H: [u32; STATE_LEN] = [
- 0x67452301, 0xEFCDAB89, 0x98BADCFE, 0x10325476, 0xC3D2E1F0
-];
diff --git a/vendor/sha-1-0.8.2/src/lib.rs b/vendor/sha-1-0.8.2/src/lib.rs
deleted file mode 100644
index 374c234c2..000000000
--- a/vendor/sha-1-0.8.2/src/lib.rs
+++ /dev/null
@@ -1,141 +0,0 @@
-//! An implementation of the [SHA-1][1] cryptographic hash algorithm.
-//!
-//! # Usage
-//!
-//! ```rust
-//! # #[macro_use] extern crate hex_literal;
-//! # extern crate sha1;
-//! # fn main() {
-//! use sha1::{Sha1, Digest};
-//!
-//! // create a Sha1 object
-//! let mut hasher = Sha1::new();
-//!
-//! // process input message
-//! hasher.input(b"hello world");
-//!
-//! // acquire hash digest in the form of GenericArray,
-//! // which in this case is equivalent to [u8; 20]
-//! let result = hasher.result();
-//! assert_eq!(result[..], hex!("2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"));
-//! # }
-//! ```
-//!
-//! Also see [RustCrypto/hashes][2] readme.
-//!
-//! [1]: https://en.wikipedia.org/wiki/SHA-1
-//! [2]: https://github.com/RustCrypto/hashes
-#![no_std]
-#![doc(html_logo_url =
- "https://raw.githubusercontent.com/RustCrypto/meta/master/logo_small.png")]
-
-// Give relevant error messages if the user tries to enable AArch64 asm on unsupported platforms.
-#[cfg(all(feature = "asm-aarch64", target_arch = "aarch64", not(target_os = "linux")))]
-compile_error!("Your OS isn’t yet supported for runtime-checking of AArch64 features.");
-#[cfg(all(feature = "asm-aarch64", target_os = "linux", not(target_arch = "aarch64")))]
-compile_error!("Enable the \"asm\" feature instead of \"asm-aarch64\" on non-AArch64 Linux systems.");
-#[cfg(all(not(feature = "asm-aarch64"), feature = "asm", target_arch = "aarch64", target_os = "linux"))]
-compile_error!("Enable the \"asm-aarch64\" feature on AArch64 if you want to use asm.");
-
-extern crate block_buffer;
-#[macro_use] extern crate opaque_debug;
-#[macro_use] pub extern crate digest;
-#[cfg(feature = "std")]
-extern crate std;
-#[cfg(any(not(feature = "asm"), feature = "asm-aarch64"))]
-extern crate fake_simd as simd;
-#[cfg(feature = "asm-aarch64")]
-extern crate libc;
-
-#[cfg(feature = "asm")]
-extern crate sha1_asm;
-#[cfg(all(feature = "asm", not(feature = "asm-aarch64")))]
-#[inline(always)]
-fn compress(state: &mut [u32; 5], block: &GenericArray<u8, U64>) {
- let block: &[u8; 64] = unsafe { core::mem::transmute(block) };
- sha1_asm::compress(state, block);
-}
-#[cfg(feature = "asm-aarch64")]
-mod aarch64;
-#[cfg(feature = "asm-aarch64")]
-#[inline(always)]
-fn compress(state: &mut [u32; 5], block: &GenericArray<u8, U64>) {
- // TODO: Replace this platform-specific call with is_aarch64_feature_detected!("sha1") once
- // that macro is stabilised and https://github.com/rust-lang/rfcs/pull/2725 is implemented
- // to let us use it on no_std.
- if aarch64::sha1_supported() {
- let block: &[u8; 64] = unsafe { core::mem::transmute(block) };
- sha1_asm::compress(state, block);
- } else {
- utils::compress(state, block);
- }
-}
-
-#[cfg(any(not(feature = "asm"), feature = "asm-aarch64"))]
-mod utils;
-#[cfg(not(feature = "asm"))]
-use utils::compress;
-
-pub use digest::Digest;
-use digest::{Input, BlockInput, FixedOutput, Reset};
-use digest::generic_array::GenericArray;
-use digest::generic_array::typenum::{U20, U64};
-use block_buffer::BlockBuffer;
-use block_buffer::byteorder::{BE, ByteOrder};
-
-mod consts;
-use consts::{STATE_LEN, H};
-
-/// Structure representing the state of a SHA-1 computation
-#[derive(Clone)]
-pub struct Sha1 {
- h: [u32; STATE_LEN],
- len: u64,
- buffer: BlockBuffer<U64>,
-}
-
-impl Default for Sha1 {
- fn default() -> Self {
- Sha1{ h: H, len: 0u64, buffer: Default::default() }
- }
-}
-
-impl BlockInput for Sha1 {
- type BlockSize = U64;
-}
-
-impl Input for Sha1 {
- fn input<B: AsRef<[u8]>>(&mut self, input: B) {
- let input = input.as_ref();
- // Assumes that `length_bits<<3` will not overflow
- self.len += input.len() as u64;
- let state = &mut self.h;
- self.buffer.input(input, |d| compress(state, d));
- }
-}
-
-impl FixedOutput for Sha1 {
- type OutputSize = U20;
-
- fn fixed_result(mut self) -> GenericArray<u8, Self::OutputSize> {
- {
- let state = &mut self.h;
- let l = self.len << 3;
- self.buffer.len64_padding::<BE, _>(l, |d| compress(state, d));
- }
- let mut out = GenericArray::default();
- BE::write_u32_into(&self.h,&mut out);
- out
- }
-}
-
-impl Reset for Sha1 {
- fn reset(&mut self) {
- self.h = H;
- self.len = 0;
- self.buffer.reset();
- }
-}
-
-impl_opaque_debug!(Sha1);
-impl_write!(Sha1);
diff --git a/vendor/sha-1-0.8.2/src/utils.rs b/vendor/sha-1-0.8.2/src/utils.rs
deleted file mode 100644
index e8b941a6e..000000000
--- a/vendor/sha-1-0.8.2/src/utils.rs
+++ /dev/null
@@ -1,300 +0,0 @@
-#![cfg_attr(feature = "cargo-clippy", allow(many_single_char_names))]
-
-use consts::{BLOCK_LEN, K0, K1, K2, K3};
-use block_buffer::byteorder::{BE, ByteOrder};
-use simd::u32x4;
-use digest::generic_array::GenericArray;
-use digest::generic_array::typenum::U64;
-
-type Block = GenericArray<u8, U64>;
-
-/// Not an intrinsic, but gets the first element of a vector.
-#[inline]
-pub fn sha1_first(w0: u32x4) -> u32 {
- w0.0
-}
-
-/// Not an intrinsic, but adds a word to the first element of a vector.
-#[inline]
-pub fn sha1_first_add(e: u32, w0: u32x4) -> u32x4 {
- let u32x4(a, b, c, d) = w0;
- u32x4(e.wrapping_add(a), b, c, d)
-}
-
-/// Emulates `llvm.x86.sha1msg1` intrinsic.
-fn sha1msg1(a: u32x4, b: u32x4) -> u32x4 {
- let u32x4(_, _, w2, w3) = a;
- let u32x4(w4, w5, _, _) = b;
- a ^ u32x4(w2, w3, w4, w5)
-}
-
-/// Emulates `llvm.x86.sha1msg2` intrinsic.
-fn sha1msg2(a: u32x4, b: u32x4) -> u32x4 {
- let u32x4(x0, x1, x2, x3) = a;
- let u32x4(_, w13, w14, w15) = b;
-
- let w16 = (x0 ^ w13).rotate_left(1);
- let w17 = (x1 ^ w14).rotate_left(1);
- let w18 = (x2 ^ w15).rotate_left(1);
- let w19 = (x3 ^ w16).rotate_left(1);
-
- u32x4(w16, w17, w18, w19)
-}
-
-/// Performs 4 rounds of the message schedule update.
-/*
-pub fn sha1_schedule_x4(v0: u32x4, v1: u32x4, v2: u32x4, v3: u32x4) -> u32x4 {
- sha1msg2(sha1msg1(v0, v1) ^ v2, v3)
-}
-*/
-
-/// Emulates `llvm.x86.sha1nexte` intrinsic.
-#[inline]
-fn sha1_first_half(abcd: u32x4, msg: u32x4) -> u32x4 {
- sha1_first_add(sha1_first(abcd).rotate_left(30), msg)
-}
-
-/// Emulates `llvm.x86.sha1rnds4` intrinsic.
-/// Performs 4 rounds of the message block digest.
-fn sha1_digest_round_x4(abcd: u32x4, work: u32x4, i: i8) -> u32x4 {
- const K0V: u32x4 = u32x4(K0, K0, K0, K0);
- const K1V: u32x4 = u32x4(K1, K1, K1, K1);
- const K2V: u32x4 = u32x4(K2, K2, K2, K2);
- const K3V: u32x4 = u32x4(K3, K3, K3, K3);
-
- match i {
- 0 => sha1rnds4c(abcd, work + K0V),
- 1 => sha1rnds4p(abcd, work + K1V),
- 2 => sha1rnds4m(abcd, work + K2V),
- 3 => sha1rnds4p(abcd, work + K3V),
- _ => unreachable!("unknown icosaround index"),
- }
-}
-
-/// Not an intrinsic, but helps emulate `llvm.x86.sha1rnds4` intrinsic.
-fn sha1rnds4c(abcd: u32x4, msg: u32x4) -> u32x4 {
- let u32x4(mut a, mut b, mut c, mut d) = abcd;
- let u32x4(t, u, v, w) = msg;
- let mut e = 0u32;
-
- macro_rules! bool3ary_202 {
- ($a:expr, $b:expr, $c:expr) => ($c ^ ($a & ($b ^ $c)))
- } // Choose, MD5F, SHA1C
-
- e = e.wrapping_add(a.rotate_left(5))
- .wrapping_add(bool3ary_202!(b, c, d))
- .wrapping_add(t);
- b = b.rotate_left(30);
-
- d = d.wrapping_add(e.rotate_left(5))
- .wrapping_add(bool3ary_202!(a, b, c))
- .wrapping_add(u);
- a = a.rotate_left(30);
-
- c = c.wrapping_add(d.rotate_left(5))
- .wrapping_add(bool3ary_202!(e, a, b))
- .wrapping_add(v);
- e = e.rotate_left(30);
-
- b = b.wrapping_add(c.rotate_left(5))
- .wrapping_add(bool3ary_202!(d, e, a))
- .wrapping_add(w);
- d = d.rotate_left(30);
-
- u32x4(b, c, d, e)
-}
-
-/// Not an intrinsic, but helps emulate `llvm.x86.sha1rnds4` intrinsic.
-fn sha1rnds4p(abcd: u32x4, msg: u32x4) -> u32x4 {
- let u32x4(mut a, mut b, mut c, mut d) = abcd;
- let u32x4(t, u, v, w) = msg;
- let mut e = 0u32;
-
- macro_rules! bool3ary_150 {
- ($a:expr, $b:expr, $c:expr) => ($a ^ $b ^ $c)
- } // Parity, XOR, MD5H, SHA1P
-
- e = e.wrapping_add(a.rotate_left(5))
- .wrapping_add(bool3ary_150!(b, c, d))
- .wrapping_add(t);
- b = b.rotate_left(30);
-
- d = d.wrapping_add(e.rotate_left(5))
- .wrapping_add(bool3ary_150!(a, b, c))
- .wrapping_add(u);
- a = a.rotate_left(30);
-
- c = c.wrapping_add(d.rotate_left(5))
- .wrapping_add(bool3ary_150!(e, a, b))
- .wrapping_add(v);
- e = e.rotate_left(30);
-
- b = b.wrapping_add(c.rotate_left(5))
- .wrapping_add(bool3ary_150!(d, e, a))
- .wrapping_add(w);
- d = d.rotate_left(30);
-
- u32x4(b, c, d, e)
-}
-
-/// Not an intrinsic, but helps emulate `llvm.x86.sha1rnds4` intrinsic.
-fn sha1rnds4m(abcd: u32x4, msg: u32x4) -> u32x4 {
- let u32x4(mut a, mut b, mut c, mut d) = abcd;
- let u32x4(t, u, v, w) = msg;
- let mut e = 0u32;
-
- macro_rules! bool3ary_232 {
- ($a:expr, $b:expr, $c:expr) => (($a & $b) ^ ($a & $c) ^ ($b & $c))
- } // Majority, SHA1M
-
- e = e.wrapping_add(a.rotate_left(5))
- .wrapping_add(bool3ary_232!(b, c, d))
- .wrapping_add(t);
- b = b.rotate_left(30);
-
- d = d.wrapping_add(e.rotate_left(5))
- .wrapping_add(bool3ary_232!(a, b, c))
- .wrapping_add(u);
- a = a.rotate_left(30);
-
- c = c.wrapping_add(d.rotate_left(5))
- .wrapping_add(bool3ary_232!(e, a, b))
- .wrapping_add(v);
- e = e.rotate_left(30);
-
- b = b.wrapping_add(c.rotate_left(5))
- .wrapping_add(bool3ary_232!(d, e, a))
- .wrapping_add(w);
- d = d.rotate_left(30);
-
- u32x4(b, c, d, e)
-}
-
-/// Process a block with the SHA-1 algorithm.
-fn sha1_digest_block_u32(state: &mut [u32; 5], block: &[u32; 16]) {
-
- macro_rules! schedule {
- ($v0:expr, $v1:expr, $v2:expr, $v3:expr) => (
- sha1msg2(sha1msg1($v0, $v1) ^ $v2, $v3)
- )
- }
-
- macro_rules! rounds4 {
- ($h0:ident, $h1:ident, $wk:expr, $i:expr) => (
- sha1_digest_round_x4($h0, sha1_first_half($h1, $wk), $i)
- )
- }
-
- // Rounds 0..20
- // TODO: replace with `u32x4::load`
- let mut h0 = u32x4(state[0], state[1], state[2], state[3]);
- let mut w0 = u32x4(block[0], block[1], block[2], block[3]);
- let mut h1 = sha1_digest_round_x4(h0, sha1_first_add(state[4], w0), 0);
- let mut w1 = u32x4(block[4], block[5], block[6], block[7]);
- h0 = rounds4!(h1, h0, w1, 0);
- let mut w2 = u32x4(block[8], block[9], block[10], block[11]);
- h1 = rounds4!(h0, h1, w2, 0);
- let mut w3 = u32x4(block[12], block[13], block[14], block[15]);
- h0 = rounds4!(h1, h0, w3, 0);
- let mut w4 = schedule!(w0, w1, w2, w3);
- h1 = rounds4!(h0, h1, w4, 0);
-
- // Rounds 20..40
- w0 = schedule!(w1, w2, w3, w4);
- h0 = rounds4!(h1, h0, w0, 1);
- w1 = schedule!(w2, w3, w4, w0);
- h1 = rounds4!(h0, h1, w1, 1);
- w2 = schedule!(w3, w4, w0, w1);
- h0 = rounds4!(h1, h0, w2, 1);
- w3 = schedule!(w4, w0, w1, w2);
- h1 = rounds4!(h0, h1, w3, 1);
- w4 = schedule!(w0, w1, w2, w3);
- h0 = rounds4!(h1, h0, w4, 1);
-
- // Rounds 40..60
- w0 = schedule!(w1, w2, w3, w4);
- h1 = rounds4!(h0, h1, w0, 2);
- w1 = schedule!(w2, w3, w4, w0);
- h0 = rounds4!(h1, h0, w1, 2);
- w2 = schedule!(w3, w4, w0, w1);
- h1 = rounds4!(h0, h1, w2, 2);
- w3 = schedule!(w4, w0, w1, w2);
- h0 = rounds4!(h1, h0, w3, 2);
- w4 = schedule!(w0, w1, w2, w3);
- h1 = rounds4!(h0, h1, w4, 2);
-
- // Rounds 60..80
- w0 = schedule!(w1, w2, w3, w4);
- h0 = rounds4!(h1, h0, w0, 3);
- w1 = schedule!(w2, w3, w4, w0);
- h1 = rounds4!(h0, h1, w1, 3);
- w2 = schedule!(w3, w4, w0, w1);
- h0 = rounds4!(h1, h0, w2, 3);
- w3 = schedule!(w4, w0, w1, w2);
- h1 = rounds4!(h0, h1, w3, 3);
- w4 = schedule!(w0, w1, w2, w3);
- h0 = rounds4!(h1, h0, w4, 3);
-
- let e = sha1_first(h1).rotate_left(30);
- let u32x4(a, b, c, d) = h0;
-
- state[0] = state[0].wrapping_add(a);
- state[1] = state[1].wrapping_add(b);
- state[2] = state[2].wrapping_add(c);
- state[3] = state[3].wrapping_add(d);
- state[4] = state[4].wrapping_add(e);
-}
-
-/// Process a block with the SHA-1 algorithm. (See more...)
-///
-/// SHA-1 is a cryptographic hash function, and as such, it operates
-/// on an arbitrary number of bytes. This function operates on a fixed
-/// number of bytes. If you call this function with anything other than
-/// 64 bytes, then it will panic! This function takes two arguments:
-///
-/// * `state` is reference to an **array** of 5 words.
-/// * `block` is reference to a **slice** of 64 bytes.
-///
-/// If you want the function that performs a message digest on an arbitrary
-/// number of bytes, then see also the `Sha1` struct above.
-///
-/// # Implementation
-///
-/// First, some background. Both ARM and Intel are releasing documentation
-/// that they plan to include instruction set extensions for SHA1 and SHA256
-/// sometime in the near future. Second, LLVM won't lower these intrinsics yet,
-/// so these functions were written emulate these instructions. Finally,
-/// the block function implemented with these emulated intrinsics turned out
-/// to be quite fast! What follows is a discussion of this CPU-level view
-/// of the SHA-1 algorithm and how it relates to the mathematical definition.
-///
-/// The SHA instruction set extensions can be divided up into two categories:
-///
-/// * message work schedule update calculation ("schedule" v., "work" n.)
-/// * message block 80-round digest calculation ("digest" v., "block" n.)
-///
-/// The schedule-related functions can be used to easily perform 4 rounds
-/// of the message work schedule update calculation, as shown below:
-///
-/// ```ignore
-/// macro_rules! schedule_x4 {
-/// ($v0:expr, $v1:expr, $v2:expr, $v3:expr) => (
-/// sha1msg2(sha1msg1($v0, $v1) ^ $v2, $v3)
-/// )
-/// }
-///
-/// macro_rules! round_x4 {
-/// ($h0:ident, $h1:ident, $wk:expr, $i:expr) => (
-/// sha1rnds4($h0, sha1_first_half($h1, $wk), $i)
-/// )
-/// }
-/// ```
-///
-/// and also shown above is how the digest-related functions can be used to
-/// perform 4 rounds of the message block digest calculation.
-///
-pub fn compress(state: &mut [u32; 5], block: &Block) {
- let mut block_u32 = [0u32; BLOCK_LEN];
- BE::read_u32_into(block, &mut block_u32[..]);
- sha1_digest_block_u32(state, &block_u32);
-}
diff --git a/vendor/sha-1-0.8.2/tests/data/one_million_a.bin b/vendor/sha-1-0.8.2/tests/data/one_million_a.bin
deleted file mode 100644
index 0c759d80f..000000000
--- a/vendor/sha-1-0.8.2/tests/data/one_million_a.bin
+++ /dev/null
@@ -1 +0,0 @@
-4<ڤ+ۭ'1e4o \ No newline at end of file
diff --git a/vendor/sha-1-0.8.2/tests/data/sha1.blb b/vendor/sha-1-0.8.2/tests/data/sha1.blb
deleted file mode 100644
index 13ae2df26..000000000
--- a/vendor/sha-1-0.8.2/tests/data/sha1.blb
+++ /dev/null
@@ -1 +0,0 @@
-blobby1abc>6Gj>%qxPl؝8abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq>D;nJQ)Fp+The quick brown fox jumps over the lazy dog/z-(턞v9+The quick brown fox jumps over the lazy cogޟ,^:Z } \ No newline at end of file
diff --git a/vendor/sha-1-0.8.2/tests/lib.rs b/vendor/sha-1-0.8.2/tests/lib.rs
deleted file mode 100644
index 348684b1f..000000000
--- a/vendor/sha-1-0.8.2/tests/lib.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-#![no_std]
-#[macro_use]
-extern crate digest;
-extern crate sha1;
-
-use digest::dev::{one_million_a, digest_test};
-
-new_test!(sha1_main, "sha1", sha1::Sha1, digest_test);
-
-#[test]
-fn sha1_1million_a() {
- let output = include_bytes!("data/one_million_a.bin");
- one_million_a::<sha1::Sha1>(output);
-}
diff --git a/vendor/smallvec/.cargo-checksum.json b/vendor/smallvec/.cargo-checksum.json
index 8f4d7bf91..e9fa9e1e6 100644
--- a/vendor/smallvec/.cargo-checksum.json
+++ b/vendor/smallvec/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"03ae7e6a133c5fd1685687aee67bc841642a4fd0deeb0d4d88b9fe27af37ba9e","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0b28172679e0009b655da42797c03fd163a3379d5cfa67ba1f1655e974a2a1a9","README.md":"a01127c37308457e8d396b176fb790846be0978c173be3f13260b62efcef011b","benches/bench.rs":"e2a235d68be20996014c00468b369887d2041ce95486625de3cef35b8f2e4acd","scripts/run_miri.sh":"0d0b8c54c73fa9da1217d29ed0984f8328dd9fb61bb5a02db44458c360cdc3c4","src/arbitrary.rs":"22e55cfbf60374945b30e6d0855129eff67cd8b878cef6fa997e1f4be67b9e3d","src/lib.rs":"264a6e6863aeb21cd779588c2add8421ea1a5861a9bb8ef49e9dc529be8d3b20","src/specialization.rs":"46433586203399251cba496d67b88d34e1be3c2b591986b77463513da1c66471","src/tests.rs":"2bcf69dc0597e4e8a59a92566a3dd5c82ec3a1ea563aa006ea0f4a2722cb2d17","tests/macro.rs":"22ad4f6f104a599fdcba19cad8834105b8656b212fb6c7573a427d447f5db14f"},"package":"2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1"} \ No newline at end of file
+{"files":{"Cargo.toml":"e8b7e22c87fa34e053c12b3751ec0c7b25b37bd1285959710321a7a00861f392","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"0b28172679e0009b655da42797c03fd163a3379d5cfa67ba1f1655e974a2a1a9","README.md":"a01127c37308457e8d396b176fb790846be0978c173be3f13260b62efcef011b","benches/bench.rs":"e2a235d68be20996014c00468b369887d2041ce95486625de3cef35b8f2e4acd","debug_metadata/README.md":"dc8fbf896055359a94f7bfdfae7604e0bcfc8b10998a218d484d9fffdf83637c","debug_metadata/smallvec.natvis":"68aed2322bdc13ed6fa2021dc9625346174d73590929acbc2f95c98785c8dee4","scripts/run_miri.sh":"74a9f9adc43f986e81977b03846f7dd00122a0150bd8ec3fe4842a1a787e0f07","src/arbitrary.rs":"22e55cfbf60374945b30e6d0855129eff67cd8b878cef6fa997e1f4be67b9e3d","src/lib.rs":"35c60a9d9240853e9f6f84b7a44ff6a3197a87ab404f5ab1cd8ebeeeb72e54da","src/specialization.rs":"46433586203399251cba496d67b88d34e1be3c2b591986b77463513da1c66471","src/tests.rs":"2bcf69dc0597e4e8a59a92566a3dd5c82ec3a1ea563aa006ea0f4a2722cb2d17","tests/debugger_visualizer.rs":"87480900add8579e1285741d5a0041063b6d888328e11854ab2cdc2960d7ddb1","tests/macro.rs":"22ad4f6f104a599fdcba19cad8834105b8656b212fb6c7573a427d447f5db14f"},"package":"a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0"} \ No newline at end of file
diff --git a/vendor/smallvec/Cargo.toml b/vendor/smallvec/Cargo.toml
index fd490da15..a365ca18e 100644
--- a/vendor/smallvec/Cargo.toml
+++ b/vendor/smallvec/Cargo.toml
@@ -12,18 +12,35 @@
[package]
edition = "2018"
name = "smallvec"
-version = "1.9.0"
+version = "1.10.0"
authors = ["The Servo Project Developers"]
description = "'Small vector' optimization: store up to a small number of items on the stack"
documentation = "https://docs.rs/smallvec/"
readme = "README.md"
-keywords = ["small", "vec", "vector", "stack", "no_std"]
+keywords = [
+ "small",
+ "vec",
+ "vector",
+ "stack",
+ "no_std",
+]
categories = ["data-structures"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/servo/rust-smallvec"
+
[package.metadata.docs.rs]
all-features = true
-rustdoc-args = ["--cfg", "docsrs"]
+rustdoc-args = [
+ "--cfg",
+ "docsrs",
+]
+
+[[test]]
+name = "debugger_visualizer"
+path = "tests/debugger_visualizer.rs"
+test = false
+required-features = ["debugger_visualizer"]
+
[dependencies.arbitrary]
version = "1"
optional = true
@@ -32,12 +49,20 @@ optional = true
version = "1"
optional = true
default-features = false
+
[dev-dependencies.bincode]
version = "1.0.1"
+[dev-dependencies.debugger_test]
+version = "0.1.0"
+
+[dev-dependencies.debugger_test_parser]
+version = "0.1.0"
+
[features]
const_generics = []
const_new = ["const_generics"]
+debugger_visualizer = []
may_dangle = []
specialization = []
union = []
diff --git a/vendor/smallvec/debug_metadata/README.md b/vendor/smallvec/debug_metadata/README.md
new file mode 100644
index 000000000..137500813
--- /dev/null
+++ b/vendor/smallvec/debug_metadata/README.md
@@ -0,0 +1,111 @@
+## Debugger Visualizers
+
+Many languages and debuggers enable developers to control how a type is
+displayed in a debugger. These are called "debugger visualizations" or "debugger
+views".
+
+The Windows debuggers (WinDbg\CDB) support defining custom debugger visualizations using
+the `Natvis` framework. To use Natvis, developers write XML documents using the natvis
+schema that describe how debugger types should be displayed with the `.natvis` extension.
+(See: https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects?view=vs-2019)
+The Natvis files provide patterns which match type names a description of how to display
+those types.
+
+The Natvis schema can be found either online (See: https://code.visualstudio.com/docs/cpp/natvis#_schema)
+or locally at `<VS Installation Folder>\Xml\Schemas\1033\natvis.xsd`.
+
+The GNU debugger (GDB) supports defining custom debugger views using Pretty Printers.
+Pretty printers are written as python scripts that describe how a type should be displayed
+when loaded up in GDB/LLDB. (See: https://sourceware.org/gdb/onlinedocs/gdb/Pretty-Printing.html#Pretty-Printing)
+The pretty printers provide patterns, which match type names, and for matching
+types, descibe how to display those types. (For writing a pretty printer, see: https://sourceware.org/gdb/onlinedocs/gdb/Writing-a-Pretty_002dPrinter.html#Writing-a-Pretty_002dPrinter).
+
+### Embedding Visualizers
+
+Through the use of the currently unstable `#[debugger_visualizer]` attribute, the `smallvec`
+crate can embed debugger visualizers into the crate metadata.
+
+Currently the two types of visualizers supported are Natvis and Pretty printers.
+
+For Natvis files, when linking an executable with a crate that includes Natvis files,
+the MSVC linker will embed the contents of all Natvis files into the generated `PDB`.
+
+For pretty printers, the compiler will encode the contents of the pretty printer
+in the `.debug_gdb_scripts` section of the `ELF` generated.
+
+### Testing Visualizers
+
+The `smallvec` crate supports testing debugger visualizers defined for this crate. The entry point for
+these tests are `tests/debugger_visualizer.rs`. These tests are defined using the `debugger_test` and
+`debugger_test_parser` crates. The `debugger_test` crate is a proc macro crate which defines a
+single proc macro attribute, `#[debugger_test]`. For more detailed information about this crate,
+see https://crates.io/crates/debugger_test. The CI pipeline for the `smallvec` crate has been updated
+to run the debugger visualizer tests to ensure debugger visualizers do not become broken/stale.
+
+The `#[debugger_test]` proc macro attribute may only be used on test functions and will run the
+function under the debugger specified by the `debugger` meta item.
+
+This proc macro attribute has 3 required values:
+
+1. The first required meta item, `debugger`, takes a string value which specifies the debugger to launch.
+2. The second required meta item, `commands`, takes a string of new line (`\n`) separated list of debugger
+commands to run.
+3. The third required meta item, `expected_statements`, takes a string of new line (`\n`) separated list of
+statements that must exist in the debugger output. Pattern matching through regular expressions is also
+supported by using the `pattern:` prefix for each expected statement.
+
+#### Example:
+
+```rust
+#[debugger_test(
+ debugger = "cdb",
+ commands = "command1\ncommand2\ncommand3",
+ expected_statements = "statement1\nstatement2\nstatement3")]
+fn test() {
+
+}
+```
+
+Using a multiline string is also supported, with a single debugger command/expected statement per line:
+
+```rust
+#[debugger_test(
+ debugger = "cdb",
+ commands = "
+command1
+command2
+command3",
+ expected_statements = "
+statement1
+pattern:statement[0-9]+
+statement3")]
+fn test() {
+
+}
+```
+
+In the example above, the second expected statement uses pattern matching through a regular expression
+by using the `pattern:` prefix.
+
+#### Testing Locally
+
+Currently, only Natvis visualizations have been defined for the `smallvec` crate via `debug_metadata/smallvec.natvis`,
+which means the `tests/debugger_visualizer.rs` tests need to be run on Windows using the `*-pc-windows-msvc` targets.
+To run these tests locally, first ensure the debugging tools for Windows are installed or install them following
+the steps listed here, [Debugging Tools for Windows](https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/).
+Once the debugging tools have been installed, the tests can be run in the same manner as they are in the CI
+pipeline.
+
+#### Note
+
+When running the debugger visualizer tests, `tests/debugger_visualizer.rs`, they need to be run consecutively
+and not in parallel. This can be achieved by passing the flag `--test-threads=1` to rustc. This is due to
+how the debugger tests are run. Each test marked with the `#[debugger_test]` attribute launches a debugger
+and attaches it to the current test process. If tests are running in parallel, the test will try to attach
+a debugger to the current process which may already have a debugger attached causing the test to fail.
+
+For example:
+
+```
+cargo test --test debugger_visualizer --features debugger_visualizer -- --test-threads=1
+```
diff --git a/vendor/smallvec/debug_metadata/smallvec.natvis b/vendor/smallvec/debug_metadata/smallvec.natvis
new file mode 100644
index 000000000..b38d47cb7
--- /dev/null
+++ b/vendor/smallvec/debug_metadata/smallvec.natvis
@@ -0,0 +1,35 @@
+<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+ <Type Name="smallvec::SmallVec&lt;array$&lt;*,*&gt;&gt;" Priority="Medium">
+ <Intrinsic Name="is_inline" Expression="$T2 &gt; capacity" />
+ <Intrinsic Name="len" Expression="is_inline() ? capacity : data.variant1.value.__0.__1" />
+ <Intrinsic Name="data_ptr" Expression="is_inline() ? data.variant0.value.__0.value.value : data.variant1.value.__0.__0" />
+
+ <DisplayString>{{ len={len()} }}</DisplayString>
+ <Expand>
+ <Item Name="[capacity]">is_inline() ? $T2 : capacity</Item>
+ <Item Name="[len]">len()</Item>
+
+ <ArrayItems>
+ <Size>len()</Size>
+ <ValuePointer>data_ptr()</ValuePointer>
+ </ArrayItems>
+ </Expand>
+ </Type>
+
+ <Type Name="smallvec::SmallVec&lt;array$&lt;*,*&gt;&gt;" Priority="MediumLow">
+ <Intrinsic Name="is_inline" Expression="$T2 &gt; capacity" />
+ <Intrinsic Name="len" Expression="is_inline() ? capacity : data.heap.__1" />
+ <Intrinsic Name="data_ptr" Expression="is_inline() ? data.inline.value.value.value : data.heap.__0" />
+
+ <DisplayString>{{ len={len()} }}</DisplayString>
+ <Expand>
+ <Item Name="[capacity]">is_inline() ? $T2 : capacity</Item>
+ <Item Name="[len]">len()</Item>
+
+ <ArrayItems>
+ <Size>len()</Size>
+ <ValuePointer>data_ptr()</ValuePointer>
+ </ArrayItems>
+ </Expand>
+ </Type>
+</AutoVisualizer> \ No newline at end of file
diff --git a/vendor/smallvec/scripts/run_miri.sh b/vendor/smallvec/scripts/run_miri.sh
index 817928a09..010ceb06e 100644
--- a/vendor/smallvec/scripts/run_miri.sh
+++ b/vendor/smallvec/scripts/run_miri.sh
@@ -11,6 +11,7 @@ cargo clean
MIRI_NIGHTLY=nightly-$(curl -s https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu/miri)
echo "Installing latest nightly with Miri: $MIRI_NIGHTLY"
+rustup override unset
rustup default "$MIRI_NIGHTLY"
rustup component add miri
@@ -19,3 +20,5 @@ cargo miri setup
cargo miri test --verbose
cargo miri test --verbose --features union
cargo miri test --verbose --all-features
+
+rustup override set nightly
diff --git a/vendor/smallvec/src/lib.rs b/vendor/smallvec/src/lib.rs
index 921347af8..a335ca46c 100644
--- a/vendor/smallvec/src/lib.rs
+++ b/vendor/smallvec/src/lib.rs
@@ -81,6 +81,11 @@
#![cfg_attr(feature = "specialization", allow(incomplete_features))]
#![cfg_attr(feature = "specialization", feature(specialization))]
#![cfg_attr(feature = "may_dangle", feature(dropck_eyepatch))]
+#![cfg_attr(
+ feature = "debugger_visualizer",
+ feature(debugger_visualizer),
+ debugger_visualizer(natvis_file = "../debug_metadata/smallvec.natvis")
+)]
#![deny(missing_docs)]
#[doc(hidden)]
@@ -2084,6 +2089,7 @@ impl<T, const N: usize> SmallVec<[T; N]> {
#[cfg_attr(docsrs, doc(cfg(feature = "const_generics")))]
unsafe impl<T, const N: usize> Array for [T; N] {
type Item = T;
+ #[inline]
fn size() -> usize {
N
}
@@ -2095,6 +2101,7 @@ macro_rules! impl_array(
$(
unsafe impl<T> Array for [T; $size] {
type Item = T;
+ #[inline]
fn size() -> usize { $size }
}
)+
diff --git a/vendor/smallvec/tests/debugger_visualizer.rs b/vendor/smallvec/tests/debugger_visualizer.rs
new file mode 100644
index 000000000..210f539b6
--- /dev/null
+++ b/vendor/smallvec/tests/debugger_visualizer.rs
@@ -0,0 +1,68 @@
+use debugger_test::debugger_test;
+use smallvec::{smallvec, SmallVec};
+
+#[inline(never)]
+fn __break() {}
+
+#[debugger_test(
+ debugger = "cdb",
+ commands = r#"
+.nvlist
+dx sv
+
+g
+
+dx sv
+
+g
+
+dx sv
+"#,
+ expected_statements = r#"
+sv : { len=0x2 } [Type: smallvec::SmallVec<array$<i32,4> >]
+ [<Raw View>] [Type: smallvec::SmallVec<array$<i32,4> >]
+ [capacity] : 4
+ [len] : 0x2 [Type: unsigned __int64]
+ [0] : 1 [Type: int]
+ [1] : 2 [Type: int]
+
+sv : { len=0x5 } [Type: smallvec::SmallVec<array$<i32,4> >]
+ [<Raw View>] [Type: smallvec::SmallVec<array$<i32,4> >]
+ [capacity] : 0x8 [Type: unsigned __int64]
+ [len] : 0x5 [Type: unsigned __int64]
+ [0] : 5 [Type: int]
+ [1] : 2 [Type: int]
+ [2] : 3 [Type: int]
+ [3] : 4 [Type: int]
+ [4] : 5 [Type: int]
+
+sv : { len=0x5 } [Type: smallvec::SmallVec<array$<i32,4> >]
+ [<Raw View>] [Type: smallvec::SmallVec<array$<i32,4> >]
+ [capacity] : 0x8 [Type: unsigned __int64]
+ [len] : 0x5 [Type: unsigned __int64]
+ [0] : 2 [Type: int]
+ [1] : 3 [Type: int]
+ [2] : 4 [Type: int]
+ [3] : 5 [Type: int]
+ [4] : 5 [Type: int]
+"#
+)]
+#[inline(never)]
+fn test_debugger_visualizer() {
+ // This SmallVec can hold up to 4 items on the stack:
+ let mut sv: SmallVec<[i32; 4]> = smallvec![1, 2];
+ __break();
+
+ // Overfill the SmallVec to move its contents to the heap
+ for i in 3..6 {
+ sv.push(i);
+ }
+
+ // Update the contents of the first value of the SmallVec.
+ sv[0] = sv[1] + sv[2];
+ __break();
+
+ // Sort the SmallVec in place.
+ sv.sort();
+ __break();
+}
diff --git a/vendor/syn/.cargo-checksum.json b/vendor/syn/.cargo-checksum.json
index 8ea280f0f..8b90dae0f 100644
--- a/vendor/syn/.cargo-checksum.json
+++ b/vendor/syn/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"5b13c4f4b16314a07b7c6a3cc3e726579bf0c24b5b45fa2ec48ab966ccaa0e45","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"b1546652aefba564455c1ebbf0f276450d4fdb19755e08bfa03c13c8bab241fc","benches/file.rs":"af4671030b7fbc3a5dbc37b492e80fcae2893ad7a64dd43dac12cf5906c32301","benches/rust.rs":"22dfbffc39f8d091ef74cca849e7e7c69e9a47f2a06f7dec91c0382401055c14","build.rs":"b815649fd2929d3debd93a58f5da2fb8eba506047a6a5ba538347305828a87b0","src/attr.rs":"234d9cebe2c5e92cd0f5e1117bf5755037e2e905788a337000a65d4bd82b63aa","src/await.rs":"8aa22e3c201cb2bdb6b4817fa00901f308ab06817607aa7b884c58c957705969","src/bigint.rs":"efc7f64959980653d73fe4f8bc2a3a2904dc05f45b02c6dc15cd316fa3d7c338","src/buffer.rs":"24a3ba4928a5b2265199c29b84610b6f988bc422076ad07dfa30e91b6d72314f","src/custom_keyword.rs":"5c706fc3611e73d16b8c019d7ecb848a86b1ccfcd9e556f80bb6e6a4abe058a8","src/custom_punctuation.rs":"8a666298e774b0d326642f0f73284f6677d0d0a7c9e4a712c9c98d010b4d8a2c","src/data.rs":"75d2c2b5d6a01bf8a6fa2845e41663d8045a78b4b191f1a1bd7c93619d20017a","src/derive.rs":"ee24a202be2d36ccdff576dd9cd765e94b33ef2286946e6725d75b08e777d462","src/discouraged.rs":"6c6a9298f8d24f578da119557bc588f3bd928f7b79fca27d6bdfe3e786dd005f","src/error.rs":"e548cc5b7c6f742ab6c19788755980594c4cb8086f99e6709f1cbc982961102d","src/export.rs":"0cf50d70c32d5fddba8b1193032df62e560237c113df3e86ba26b565cc82838e","src/expr.rs":"0d441100457567b7b18372fdcbbe833d7516b5a43f17f1cfc4d7f354141b8206","src/ext.rs":"1f648cff1d705a1cea64b32b77482b97a82d2fe0aaf63b40cade91e5c02dc969","src/file.rs":"f86697655222ae294215114f4eae8e6b0b5e2a935d6c479ff8f8f889c4efd2e2","src/gen/clone.rs":"c43199af10b9963476a1ef6b9e0540363a8383c611f8999463235a0939817da8","src/gen/debug.rs":"12e07500a09d1d15b7a148d9155af357c7ac9b65ac100906cf0fac604403274e","src/gen/eq.rs":"e0928a9f4e81a7ede04853d1837abccaf29dd4ffb56d864fad2f4c3a4c76f1b4","src/gen/fold.rs":"43b34e7a951c180b65c6dd97c380f067ea91776f52e70f61555bd8a4120170b1","src/gen/hash.rs":"b66425846386e2168990b3bee2461f5c01695acd8c4b6360619a07108b260f3d","src/gen/visit.rs":"d559f661ab4a4c5b058af91ef244f30f906b6be82d1dd61bf0d058236f8c6a35","src/gen/visit_mut.rs":"fe384074919cdb1a6f54b93f8a9c768da7d3751e5bbfaf8c6c7133a7ebd390ae","src/gen_helper.rs":"ea6c66388365971db6a2fc86cbb208f7eacde77e245bc8623f27a3642a3d7741","src/generics.rs":"46ed41bf116448822ddfefcb62e803fd33264ca8ba672efc0612674d85b6dd11","src/group.rs":"166f0fbb365471ffa3e4f554b72c2b460cbf7e3a1f9bec6c01ef6bbbcd751041","src/ident.rs":"2443e43561abea7eea577b141422258237a663499c839923d8a5ca6fea2470db","src/item.rs":"2745d8bc068f821fc7dc8f480aceac1d10adc578a0b8b7317eb78f5c9048c68c","src/lib.rs":"81f5b18a8474d6a919af2134ea263f940584c347a2592cbc5e7f31987d3c5e15","src/lifetime.rs":"b18862ef1e690037a4f308ea897debad7bc5038584e3b26c6d8809752ea0e3c2","src/lit.rs":"9134ff103d943cfabdbfae56e78881680f91f9902172b890884a05c58131602a","src/lookahead.rs":"e2c2b6d55906421e83dab51463b58bc6dcb582f1bff9303c8b62afefb8d71e5f","src/mac.rs":"004cb89f9697564f6c9ee837e08ead68463ef946fb4c13c6c105adf2ba364b2b","src/macros.rs":"936f503c2fcde602f05220954ecaf87625c6138d0af13d33d56c7b6530110084","src/op.rs":"9d499022902743a6a0a19223b356449a979b90e60552d0446497d72750e646a4","src/parse.rs":"7b2f8caddf25a5734cbcdf7cbf043cbf9afbc07b484966cd59ddfcec9f970fb3","src/parse_macro_input.rs":"88929a1a7e5e72aa2d0b3459e52d8975afea856d159047ba4ab02ecbc5878a9c","src/parse_quote.rs":"d7d996f1382c68b5fbfd4b7327ce1d389cd43c3bb3c4f382a35994d0bb79d8ab","src/pat.rs":"1e0223ca92c160e07b17a593bb93dd5d451fc9b7014012b403377a4f0f21bfce","src/path.rs":"1ad8b8335628f67a013b7ce2f662aa2feab4583ff67bc959a9dea1dcb51be8a3","src/print.rs":"da6529c1d9d21aaf6c835f66b4e67eacb7cf91a10eb5e9a2143b49bf99b3b5e1","src/punctuated.rs":"f687c23bd3ae512e7412c28ac68030d3bc7a384d1ca8b3da6620e364b0cbbb78","src/reserved.rs":"e70e028bd55cfa43e23cab4ba29e4dc53a3d91eff685ef2b6e57efc2b87a3428","src/sealed.rs":"896a495a5340eec898527f18bd4ddca408ea03ea0ee3af30074ff48deace778d","src/span.rs":"748c51c6feb223c26d3b1701f5bb98aee823666c775c98106cfa24fe29d8cec1","src/spanned.rs":"3ca016a943637653ab98e373dfb826a120f3c159867346fa38a844439944eb39","src/stmt.rs":"8115bc96090022baad91660d7e5e986664c3f1fbd2f112d1c5d1d77e5c3f227e","src/thread.rs":"815eca6bd64f4eef7c447f0809e84108f5428ff50225224b373efd8fbb696874","src/token.rs":"5e423a696f80e281c322f37c87577f9fdc28607e9c007e24896a2b12da62d5ad","src/tt.rs":"32402645b6e82ef1e882945721b59b5fb7b0ee337d1972876362ecacef643d0f","src/ty.rs":"5c05b000d4884334bed729c3345732fbbb4136a75df9dd5002c493ebb6cd091b","src/verbatim.rs":"802a97df997432f18cac6e6200ff6ea29fb2474986005e0fcdbc2b65197f87f7","src/whitespace.rs":"e63dd0aa3d34029f17766a8b09c1a6e4479e36c552c8b7023d710a399333aace","tests/.gitignore":"22e782449a3c216db3f7215d5fb8882e316768e40beeec3833aae419ad8941db","tests/common/eq.rs":"fc4b0ced43acb32eedecb1a161bfe12148aacdd7bf57c926da55880b70b529f7","tests/common/mod.rs":"432ad35577f836a20b517d8c26ed994ac25fe73ef2f461c67688b61b99762015","tests/common/parse.rs":"81580f23583723f7a2a337c4d13ebc021057cd825562fb4e474caa7cc641fed9","tests/debug/gen.rs":"4937074a11fe8266431d05177435bad28340763d408d0a4c45bd0c0acc90a86a","tests/debug/mod.rs":"3a6bb799f478101f71c84c6f1a854a58afe2f9db43c39017909346ca20262d94","tests/macros/mod.rs":"aff805b35cfd55aef6a1359ff747e4023afcb08d69d86aff4c19465d29dda088","tests/regression.rs":"f962ebf24007f631f7e702e34e142d07581da7c9a36321ac142cafed1a0afc69","tests/regression/issue1108.rs":"f32db35244a674e22ff824ca9e5bbec2184e287b59f022db68c418b5878a2edc","tests/repo/mod.rs":"947b678f50df8716ef5c946885a3096e91ab2ec4ce2251cea83d6e6d2ab82eb5","tests/repo/progress.rs":"c08d0314a7f3ecf760d471f27da3cd2a500aeb9f1c8331bffb2aa648f9fabf3f","tests/test_asyncness.rs":"cff01db49d28ab23b0b258bc6c0a5cc4071be4fe7248eef344a5d79d2fb649b7","tests/test_attribute.rs":"0ffd99384e1a52ae17d9fed5c4053e411e8f9018decef07ffa621d1faa7329d8","tests/test_derive_input.rs":"63f0b4d56f3f421e0bb523ce2924afe9e349f0ccefda52ccb8e1e5f342e6d525","tests/test_expr.rs":"a639728866a063b590430965a4840c01755e398b89be12d8d09b0aa97837ecac","tests/test_generics.rs":"54b7d2afc19aa6e9049585f4c8f7d3f0c29ac3bd11a2c769e9df76f18a4f5ecb","tests/test_grouping.rs":"6276c3c73bba649dec5c97904ad2492879f918bc887a2c425d095c654ca0d925","tests/test_ident.rs":"9eb53d1e21edf23e7c9e14dc74dcc2b2538e9221e19dbcc0a44e3acc2e90f3f6","tests/test_item.rs":"a3642c80066f1e7787becfd0278af90a6b7968d6c1249e25e81663aa454cfb2a","tests/test_iterators.rs":"53ed6078d37550bd6765d2411e3660be401aef8a31a407350cc064a7d08c7c33","tests/test_lit.rs":"19740ea9cd4a980bcab9b0dcaa4b032bb6ebb137fa5e4237140b97da1d9679fa","tests/test_meta.rs":"65d4586d131f6cac66694ca5e936748ec4e7f7423af6d8da509240e6be14800b","tests/test_parse_buffer.rs":"68d857f776396d064fcc0023c37093c2fbf75ee68e8241d4014d00d1423c18e9","tests/test_parse_stream.rs":"2f449a2c41a3dee6fd14bee24e1666a453cb808eda17332fd91afd127fcdd2a6","tests/test_pat.rs":"d4465f4fc3fd5d6e534ba8efabe1e0ed6da89de4ac7c96effa6bfb880c4287cf","tests/test_path.rs":"71092a5ae2c9143b92a8fe15a92d39958b3c28bd4d4275cfb2d22cbdd53ada07","tests/test_precedence.rs":"1069d979cec0e6c650bebb58be272d23080ce89e83d194dfa2718d22912e481d","tests/test_receiver.rs":"084eca59984b9a18651da52f2c4407355da3de1335916a12477652999e2d01cc","tests/test_round_trip.rs":"b47662e35be2729f28bacdbbea20f1879c111889430e735a7bcb5f2a5c0b9e5c","tests/test_shebang.rs":"f5772cadad5b56e3112cb16308b779f92bce1c3a48091fc9933deb2276a69331","tests/test_should_parse.rs":"1d3535698a446e2755bfc360676bdb161841a1f454cdef6e7556c6d06a95c89d","tests/test_size.rs":"1aa0dd489bd844a4a9cf32a5310abd66dad1dae3ffb24fe1288b62a26bfdd8dc","tests/test_stmt.rs":"1c39e26e262673aee7747338f0dbca01f5fc4f07b198b11414a614f36d3f9587","tests/test_token_trees.rs":"43e56a701817e3c3bfd0cae54a457dd7a38ccb3ca19da41e2b995fdf20e6ed18","tests/test_ty.rs":"f71d7f7f1c038aaabea8dd4c03c0d5752c76d570f8b4885a81659825bbb4d576","tests/test_visibility.rs":"7456fcb3a6634db509748aededff9c2d8b242d511a3e5ee3022e40b232892704","tests/zzz_stable.rs":"2a862e59cb446235ed99aec0e6ada8e16d3ecc30229b29d825b7c0bbc2602989"},"package":"c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"} \ No newline at end of file
+{"files":{"Cargo.toml":"8366f3b0e0c3a589f43424b1837bb43aa8b4dd224184d355ad38a63bac915210","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"b1546652aefba564455c1ebbf0f276450d4fdb19755e08bfa03c13c8bab241fc","benches/file.rs":"3d737ef3878f6e242b003af9bd539e565f98439a12ee44d9548d84e3fdd7af0c","benches/rust.rs":"11ac9fe898a7bf1bd63e8a8cc9c08bd795b01f0248215cff99afaaf28ce87fab","build.rs":"b815649fd2929d3debd93a58f5da2fb8eba506047a6a5ba538347305828a87b0","src/attr.rs":"234d9cebe2c5e92cd0f5e1117bf5755037e2e905788a337000a65d4bd82b63aa","src/await.rs":"8aa22e3c201cb2bdb6b4817fa00901f308ab06817607aa7b884c58c957705969","src/bigint.rs":"efc7f64959980653d73fe4f8bc2a3a2904dc05f45b02c6dc15cd316fa3d7c338","src/buffer.rs":"2b48296087f096c9630e1e4b03a00ae703407d1b352902b3197370b2f56c62ff","src/custom_keyword.rs":"5c706fc3611e73d16b8c019d7ecb848a86b1ccfcd9e556f80bb6e6a4abe058a8","src/custom_punctuation.rs":"8a666298e774b0d326642f0f73284f6677d0d0a7c9e4a712c9c98d010b4d8a2c","src/data.rs":"75d2c2b5d6a01bf8a6fa2845e41663d8045a78b4b191f1a1bd7c93619d20017a","src/derive.rs":"ee24a202be2d36ccdff576dd9cd765e94b33ef2286946e6725d75b08e777d462","src/discouraged.rs":"6c6a9298f8d24f578da119557bc588f3bd928f7b79fca27d6bdfe3e786dd005f","src/error.rs":"e548cc5b7c6f742ab6c19788755980594c4cb8086f99e6709f1cbc982961102d","src/export.rs":"0cf50d70c32d5fddba8b1193032df62e560237c113df3e86ba26b565cc82838e","src/expr.rs":"5eea3828f3291b0ce5463ed5f0c23fc8a39aeceae68a3247ae02ae467dd35a98","src/ext.rs":"1f648cff1d705a1cea64b32b77482b97a82d2fe0aaf63b40cade91e5c02dc969","src/file.rs":"f86697655222ae294215114f4eae8e6b0b5e2a935d6c479ff8f8f889c4efd2e2","src/gen/clone.rs":"76e89fe155fedf43bc4a252af7e35319b82ce455f584bad8698fdc3f9b7f5d4e","src/gen/debug.rs":"4b05e474e864ce6bf1a5a6ab48ee6c0ecdf41a0d750237990cf2e31963bc1208","src/gen/eq.rs":"79f84836fdcd5cfa352f38055dab7c3246c7757650946c1c701234b11021652a","src/gen/fold.rs":"fcd6a05c8c8e0c36e7ede8593002528b553c8b648fbed452106fd6a8a8c9212a","src/gen/hash.rs":"575e8beae303c1eabda12bf76cbd82672268c502a8ebb8517aab18b40fdbc44e","src/gen/visit.rs":"ced9f6c17d2b3eb3553faab710cb2b3d44d6bca7d1862c8c5da09c3d45debecb","src/gen/visit_mut.rs":"966ea340c53461bf8a1c6bed3c882e4ab8b8907fd18ac35531266f7891ae5f46","src/gen_helper.rs":"ea6c66388365971db6a2fc86cbb208f7eacde77e245bc8623f27a3642a3d7741","src/generics.rs":"46ed41bf116448822ddfefcb62e803fd33264ca8ba672efc0612674d85b6dd11","src/group.rs":"166f0fbb365471ffa3e4f554b72c2b460cbf7e3a1f9bec6c01ef6bbbcd751041","src/ident.rs":"2443e43561abea7eea577b141422258237a663499c839923d8a5ca6fea2470db","src/item.rs":"419c4d6135a7ca7b8f94b5ba038b6af8fcb3939ae807153a19e3c82e9b01e0b7","src/lib.rs":"7875551b227d19f083115d48a83e8c35e3e6d31dbd749bdd03556e2762f7d4fd","src/lifetime.rs":"b18862ef1e690037a4f308ea897debad7bc5038584e3b26c6d8809752ea0e3c2","src/lit.rs":"fc06ddd523f7f9971d8abdb4c8d5d51030ffb3d6810615d5575ae210a7800695","src/lookahead.rs":"e2c2b6d55906421e83dab51463b58bc6dcb582f1bff9303c8b62afefb8d71e5f","src/mac.rs":"004cb89f9697564f6c9ee837e08ead68463ef946fb4c13c6c105adf2ba364b2b","src/macros.rs":"936f503c2fcde602f05220954ecaf87625c6138d0af13d33d56c7b6530110084","src/op.rs":"9d499022902743a6a0a19223b356449a979b90e60552d0446497d72750e646a4","src/parse.rs":"7b2f8caddf25a5734cbcdf7cbf043cbf9afbc07b484966cd59ddfcec9f970fb3","src/parse_macro_input.rs":"a5d16859b782bb6a2754c1066468a2f1ea05b57390caa32175bb84064973be7b","src/parse_quote.rs":"d7d996f1382c68b5fbfd4b7327ce1d389cd43c3bb3c4f382a35994d0bb79d8ab","src/pat.rs":"b2de04ae6c01df50eab9d1c3908287aca8424adc2007b926c7bcf74d1f64d40a","src/path.rs":"269d5d8b0c21eaf96e1c49bcb1ec2a03175a8adcc103c142e550b3f5e79825d8","src/print.rs":"da6529c1d9d21aaf6c835f66b4e67eacb7cf91a10eb5e9a2143b49bf99b3b5e1","src/punctuated.rs":"f687c23bd3ae512e7412c28ac68030d3bc7a384d1ca8b3da6620e364b0cbbb78","src/reserved.rs":"e70e028bd55cfa43e23cab4ba29e4dc53a3d91eff685ef2b6e57efc2b87a3428","src/sealed.rs":"896a495a5340eec898527f18bd4ddca408ea03ea0ee3af30074ff48deace778d","src/span.rs":"748c51c6feb223c26d3b1701f5bb98aee823666c775c98106cfa24fe29d8cec1","src/spanned.rs":"3ca016a943637653ab98e373dfb826a120f3c159867346fa38a844439944eb39","src/stmt.rs":"601a6914f1e0bf97ae0d31d474a531d195b8c251a4ded11aa8746ac0018d367b","src/thread.rs":"815eca6bd64f4eef7c447f0809e84108f5428ff50225224b373efd8fbb696874","src/token.rs":"5e423a696f80e281c322f37c87577f9fdc28607e9c007e24896a2b12da62d5ad","src/tt.rs":"32402645b6e82ef1e882945721b59b5fb7b0ee337d1972876362ecacef643d0f","src/ty.rs":"7e678749af18fc84ae9220435e467e520de05eea66adeeed3b5d634cd744561c","src/verbatim.rs":"802a97df997432f18cac6e6200ff6ea29fb2474986005e0fcdbc2b65197f87f7","src/whitespace.rs":"e63dd0aa3d34029f17766a8b09c1a6e4479e36c552c8b7023d710a399333aace","tests/common/eq.rs":"953f5db261a3334eba1d37df4247463e9234c7988da04f43028b5273d24bf2da","tests/common/mod.rs":"432ad35577f836a20b517d8c26ed994ac25fe73ef2f461c67688b61b99762015","tests/common/parse.rs":"81580f23583723f7a2a337c4d13ebc021057cd825562fb4e474caa7cc641fed9","tests/debug/gen.rs":"1b7f875344cb04a7dd3df62deac2f410a9d107c097986e68006d87465f5f5306","tests/debug/mod.rs":"3a6bb799f478101f71c84c6f1a854a58afe2f9db43c39017909346ca20262d94","tests/macros/mod.rs":"aff805b35cfd55aef6a1359ff747e4023afcb08d69d86aff4c19465d29dda088","tests/regression.rs":"f962ebf24007f631f7e702e34e142d07581da7c9a36321ac142cafed1a0afc69","tests/regression/issue1108.rs":"adcc55a42239d344da74216ed85fc14153ddd6ca4dec4872d8339604ba78c185","tests/repo/mod.rs":"1ea18f9430e75cabc4b23b826544c2bf2f950b679a04b237a11e17aabc16e2e9","tests/repo/progress.rs":"c08d0314a7f3ecf760d471f27da3cd2a500aeb9f1c8331bffb2aa648f9fabf3f","tests/test_asyncness.rs":"cff01db49d28ab23b0b258bc6c0a5cc4071be4fe7248eef344a5d79d2fb649b7","tests/test_attribute.rs":"0ffd99384e1a52ae17d9fed5c4053e411e8f9018decef07ffa621d1faa7329d8","tests/test_derive_input.rs":"62bb86aaaaf730187a46ff700a8e3b2d1a163039b109b6a483aa44ed2b6806fe","tests/test_expr.rs":"a639728866a063b590430965a4840c01755e398b89be12d8d09b0aa97837ecac","tests/test_generics.rs":"54b7d2afc19aa6e9049585f4c8f7d3f0c29ac3bd11a2c769e9df76f18a4f5ecb","tests/test_grouping.rs":"6276c3c73bba649dec5c97904ad2492879f918bc887a2c425d095c654ca0d925","tests/test_ident.rs":"9eb53d1e21edf23e7c9e14dc74dcc2b2538e9221e19dbcc0a44e3acc2e90f3f6","tests/test_item.rs":"a3642c80066f1e7787becfd0278af90a6b7968d6c1249e25e81663aa454cfb2a","tests/test_iterators.rs":"53ed6078d37550bd6765d2411e3660be401aef8a31a407350cc064a7d08c7c33","tests/test_lit.rs":"19740ea9cd4a980bcab9b0dcaa4b032bb6ebb137fa5e4237140b97da1d9679fa","tests/test_meta.rs":"65d4586d131f6cac66694ca5e936748ec4e7f7423af6d8da509240e6be14800b","tests/test_parse_buffer.rs":"68d857f776396d064fcc0023c37093c2fbf75ee68e8241d4014d00d1423c18e9","tests/test_parse_stream.rs":"bf1db6fab7ac396fa61012faccbe6ffbc9c3d795ed2900be75e91c5b09b0c62f","tests/test_pat.rs":"d4465f4fc3fd5d6e534ba8efabe1e0ed6da89de4ac7c96effa6bfb880c4287cf","tests/test_path.rs":"71092a5ae2c9143b92a8fe15a92d39958b3c28bd4d4275cfb2d22cbdd53ada07","tests/test_precedence.rs":"736eee861c4c7a3d7d4387d2fb1b5eced1541790d34974f72b0a5532797e73c3","tests/test_receiver.rs":"084eca59984b9a18651da52f2c4407355da3de1335916a12477652999e2d01cc","tests/test_round_trip.rs":"b47662e35be2729f28bacdbbea20f1879c111889430e735a7bcb5f2a5c0b9e5c","tests/test_shebang.rs":"f5772cadad5b56e3112cb16308b779f92bce1c3a48091fc9933deb2276a69331","tests/test_should_parse.rs":"1d3535698a446e2755bfc360676bdb161841a1f454cdef6e7556c6d06a95c89d","tests/test_size.rs":"697906d892ab8186eebdf6bc7696fde7a42376d50bee846ba69f031bdb847e01","tests/test_stmt.rs":"0601fc32131b5501dfcdc4b4248d46bf21e0a98a49eb19439e1a46869dfb30b7","tests/test_token_trees.rs":"43e56a701817e3c3bfd0cae54a457dd7a38ccb3ca19da41e2b995fdf20e6ed18","tests/test_ty.rs":"f71d7f7f1c038aaabea8dd4c03c0d5752c76d570f8b4885a81659825bbb4d576","tests/test_visibility.rs":"7456fcb3a6634db509748aededff9c2d8b242d511a3e5ee3022e40b232892704","tests/zzz_stable.rs":"2a862e59cb446235ed99aec0e6ada8e16d3ecc30229b29d825b7c0bbc2602989"},"package":"3fcd952facd492f9be3ef0d0b7032a6e442ee9b361d4acc2b1d0c4aaa5f613a1"} \ No newline at end of file
diff --git a/vendor/syn/Cargo.toml b/vendor/syn/Cargo.toml
index acd07cc81..7b1412593 100644
--- a/vendor/syn/Cargo.toml
+++ b/vendor/syn/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.31"
name = "syn"
-version = "1.0.98"
+version = "1.0.102"
authors = ["David Tolnay <dtolnay@gmail.com>"]
include = [
"/benches/**",
@@ -28,7 +28,14 @@ include = [
description = "Parser for Rust source code"
documentation = "https://docs.rs/syn"
readme = "README.md"
-categories = ["development-tools::procedural-macro-helpers"]
+keywords = [
+ "macros",
+ "syn",
+]
+categories = [
+ "development-tools::procedural-macro-helpers",
+ "parser-implementations",
+]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/syn"
@@ -65,7 +72,7 @@ required-features = [
]
[dependencies.proc-macro2]
-version = "1.0.39"
+version = "1.0.46"
default-features = false
[dependencies.quote]
diff --git a/vendor/syn/benches/file.rs b/vendor/syn/benches/file.rs
index 86204df2d..bd4a247df 100644
--- a/vendor/syn/benches/file.rs
+++ b/vendor/syn/benches/file.rs
@@ -1,8 +1,12 @@
-// $ cargo bench --features full --bench file
+// $ cargo bench --features full,test --bench file
#![feature(rustc_private, test)]
#![recursion_limit = "1024"]
-#![allow(clippy::missing_panics_doc, clippy::must_use_candidate)]
+#![allow(
+ clippy::items_after_statements,
+ clippy::missing_panics_doc,
+ clippy::must_use_candidate
+)]
extern crate test;
@@ -15,17 +19,37 @@ mod common;
#[path = "../tests/repo/mod.rs"]
pub mod repo;
-use proc_macro2::TokenStream;
+use proc_macro2::{Span, TokenStream};
use std::fs;
use std::str::FromStr;
+use syn::parse::{ParseStream, Parser};
use test::Bencher;
const FILE: &str = "tests/rust/library/core/src/str/mod.rs";
-#[bench]
-fn parse_file(b: &mut Bencher) {
+fn get_tokens() -> TokenStream {
repo::clone_rust();
let content = fs::read_to_string(FILE).unwrap();
- let tokens = TokenStream::from_str(&content).unwrap();
+ TokenStream::from_str(&content).unwrap()
+}
+
+#[bench]
+fn baseline(b: &mut Bencher) {
+ let tokens = get_tokens();
+ b.iter(|| drop(tokens.clone()));
+}
+
+#[bench]
+fn create_token_buffer(b: &mut Bencher) {
+ let tokens = get_tokens();
+ fn immediate_fail(_input: ParseStream) -> syn::Result<()> {
+ Err(syn::Error::new(Span::call_site(), ""))
+ }
+ b.iter(|| immediate_fail.parse2(tokens.clone()));
+}
+
+#[bench]
+fn parse_file(b: &mut Bencher) {
+ let tokens = get_tokens();
b.iter(|| syn::parse2::<syn::File>(tokens.clone()));
}
diff --git a/vendor/syn/benches/rust.rs b/vendor/syn/benches/rust.rs
index 5e4fba182..e3f8f550a 100644
--- a/vendor/syn/benches/rust.rs
+++ b/vendor/syn/benches/rust.rs
@@ -1,7 +1,7 @@
-// $ cargo bench --features full --bench rust
+// $ cargo bench --features full,test --bench rust
//
// Syn only, useful for profiling:
-// $ RUSTFLAGS='--cfg syn_only' cargo build --release --features full --bench rust
+// $ RUSTFLAGS='--cfg syn_only' cargo build --release --features full,test --bench rust
#![cfg_attr(not(syn_only), feature(rustc_private))]
#![recursion_limit = "1024"]
@@ -46,7 +46,7 @@ mod librustc_parse {
use rustc_data_structures::sync::Lrc;
use rustc_error_messages::FluentBundle;
- use rustc_errors::{emitter::Emitter, Diagnostic, Handler};
+ use rustc_errors::{emitter::Emitter, translation::Translate, Diagnostic, Handler};
use rustc_session::parse::ParseSess;
use rustc_span::source_map::{FilePathMapping, SourceMap};
use rustc_span::{edition::Edition, FileName};
@@ -59,6 +59,9 @@ mod librustc_parse {
fn source_map(&self) -> Option<&Lrc<SourceMap>> {
None
}
+ }
+
+ impl Translate for SilentEmitter {
fn fluent_bundle(&self) -> Option<&Lrc<FluentBundle>> {
None
}
@@ -88,7 +91,7 @@ mod librustc_parse {
#[cfg(not(syn_only))]
mod read_from_disk {
pub fn bench(content: &str) -> Result<(), ()> {
- let _ = content;
+ _ = content;
Ok(())
}
}
diff --git a/vendor/syn/src/buffer.rs b/vendor/syn/src/buffer.rs
index 2cb6690f0..161b614c8 100644
--- a/vendor/syn/src/buffer.rs
+++ b/vendor/syn/src/buffer.rs
@@ -15,20 +15,17 @@ use crate::proc_macro as pm;
use crate::Lifetime;
use proc_macro2::{Delimiter, Group, Ident, Literal, Punct, Spacing, Span, TokenStream, TokenTree};
use std::marker::PhantomData;
-use std::ptr;
-use std::slice;
/// Internal type which is used instead of `TokenTree` to represent a token tree
/// within a `TokenBuffer`.
enum Entry {
// Mimicking types from proc-macro.
- Group(Group, TokenBuffer),
+ // Group entries contain the offset to the matching End entry.
+ Group(Group, usize),
Ident(Ident),
Punct(Punct),
Literal(Literal),
- // End entries contain a raw pointer to the entry from the containing
- // token tree, or null if this is the outermost level.
- End(*const Entry),
+ End,
}
/// A buffer that can be efficiently traversed multiple times, unlike
@@ -37,76 +34,29 @@ enum Entry {
///
/// *This type is available only if Syn is built with the `"parsing"` feature.*
pub struct TokenBuffer {
- // NOTE: Do not implement clone on this - there are raw pointers inside
- // these entries which will be messed up. Moving the `TokenBuffer` itself is
- // safe as the data pointed to won't be moved.
- ptr: *const Entry,
- len: usize,
-}
-
-impl Drop for TokenBuffer {
- fn drop(&mut self) {
- unsafe {
- let slice = slice::from_raw_parts_mut(self.ptr as *mut Entry, self.len);
- let _ = Box::from_raw(slice);
- }
- }
+ // NOTE: Do not implement clone on this - while the current design could be
+ // cloned, other designs which could be desirable may not be cloneable.
+ entries: Box<[Entry]>,
}
impl TokenBuffer {
- // NOTE: Do not mutate the Vec returned from this function once it returns;
- // the address of its backing memory must remain stable.
- fn inner_new(stream: TokenStream, up: *const Entry) -> TokenBuffer {
- // Build up the entries list, recording the locations of any Groups
- // in the list to be processed later.
- let mut entries = Vec::new();
- let mut groups = Vec::new();
+ fn recursive_new(entries: &mut Vec<Entry>, stream: TokenStream) {
for tt in stream {
match tt {
- TokenTree::Ident(sym) => {
- entries.push(Entry::Ident(sym));
- }
- TokenTree::Punct(op) => {
- entries.push(Entry::Punct(op));
- }
- TokenTree::Literal(l) => {
- entries.push(Entry::Literal(l));
- }
- TokenTree::Group(g) => {
- // Record the index of the interesting entry, and store an
- // `End(null)` there temporarily.
- groups.push((entries.len(), g));
- entries.push(Entry::End(ptr::null()));
+ TokenTree::Ident(ident) => entries.push(Entry::Ident(ident)),
+ TokenTree::Punct(punct) => entries.push(Entry::Punct(punct)),
+ TokenTree::Literal(literal) => entries.push(Entry::Literal(literal)),
+ TokenTree::Group(group) => {
+ let group_start_index = entries.len();
+ entries.push(Entry::End); // we replace this below
+ Self::recursive_new(entries, group.stream());
+ let group_end_index = entries.len();
+ entries.push(Entry::End);
+ let group_end_offset = group_end_index - group_start_index;
+ entries[group_start_index] = Entry::Group(group, group_end_offset);
}
}
}
- // Add an `End` entry to the end with a reference to the enclosing token
- // stream which was passed in.
- entries.push(Entry::End(up));
-
- // NOTE: This is done to ensure that we don't accidentally modify the
- // length of the backing buffer. The backing buffer must remain at a
- // constant address after this point, as we are going to store a raw
- // pointer into it.
- let entries = entries.into_boxed_slice();
- let len = entries.len();
- // Convert boxed slice into a pointer to the first element early, to
- // avoid invalidating pointers into this slice when we move the Box.
- // See https://github.com/rust-lang/unsafe-code-guidelines/issues/326
- let entries = Box::into_raw(entries) as *mut Entry;
- for (idx, group) in groups {
- // We know that this index refers to one of the temporary
- // `End(null)` entries, and we know that the last entry is
- // `End(up)`, so the next index is also valid.
- let group_up = unsafe { entries.add(idx + 1) };
-
- // The end entry stored at the end of this Entry::Group should
- // point to the Entry which follows the Group in the list.
- let inner = Self::inner_new(group.stream(), group_up);
- unsafe { *entries.add(idx) = Entry::Group(group, inner) };
- }
-
- TokenBuffer { ptr: entries, len }
}
/// Creates a `TokenBuffer` containing all the tokens from the input
@@ -125,13 +75,19 @@ impl TokenBuffer {
/// Creates a `TokenBuffer` containing all the tokens from the input
/// `proc_macro2::TokenStream`.
pub fn new2(stream: TokenStream) -> Self {
- Self::inner_new(stream, ptr::null())
+ let mut entries = Vec::new();
+ Self::recursive_new(&mut entries, stream);
+ entries.push(Entry::End);
+ Self {
+ entries: entries.into_boxed_slice(),
+ }
}
/// Creates a cursor referencing the first token in the buffer and able to
/// traverse until the end of the buffer.
pub fn begin(&self) -> Cursor {
- unsafe { Cursor::create(self.ptr, self.ptr.add(self.len - 1)) }
+ let ptr = self.entries.as_ptr();
+ unsafe { Cursor::create(ptr, ptr.add(self.entries.len() - 1)) }
}
}
@@ -151,7 +107,7 @@ impl TokenBuffer {
pub struct Cursor<'a> {
// The current entry which the `Cursor` is pointing at.
ptr: *const Entry,
- // This is the only `Entry::End(..)` object which this cursor is allowed to
+ // This is the only `Entry::End` object which this cursor is allowed to
// point at. All other `End` objects are skipped over in `Cursor::create`.
scope: *const Entry,
// Cursor is covariant in 'a. This field ensures that our pointers are still
@@ -171,7 +127,7 @@ impl<'a> Cursor<'a> {
// object in global storage.
struct UnsafeSyncEntry(Entry);
unsafe impl Sync for UnsafeSyncEntry {}
- static EMPTY_ENTRY: UnsafeSyncEntry = UnsafeSyncEntry(Entry::End(0 as *const Entry));
+ static EMPTY_ENTRY: UnsafeSyncEntry = UnsafeSyncEntry(Entry::End);
Cursor {
ptr: &EMPTY_ENTRY.0,
@@ -184,15 +140,15 @@ impl<'a> Cursor<'a> {
/// `None`-delimited scopes when the cursor reaches the end of them,
/// allowing for them to be treated transparently.
unsafe fn create(mut ptr: *const Entry, scope: *const Entry) -> Self {
- // NOTE: If we're looking at a `End(..)`, we want to advance the cursor
+ // NOTE: If we're looking at a `End`, we want to advance the cursor
// past it, unless `ptr == scope`, which means that we're at the edge of
// our cursor's scope. We should only have `ptr != scope` at the exit
// from None-delimited groups entered with `ignore_none`.
- while let Entry::End(exit) = *ptr {
+ while let Entry::End = *ptr {
if ptr == scope {
break;
}
- ptr = exit;
+ ptr = ptr.add(1);
}
Cursor {
@@ -210,7 +166,10 @@ impl<'a> Cursor<'a> {
/// Bump the cursor to point at the next token after the current one. This
/// is undefined behavior if the cursor is currently looking at an
/// `Entry::End`.
- unsafe fn bump(self) -> Cursor<'a> {
+ ///
+ /// If the cursor is looking at an `Entry::Group`, the bumped cursor will
+ /// point at the first token in the group (with the same scope end).
+ unsafe fn bump_ignore_group(self) -> Cursor<'a> {
Cursor::create(self.ptr.offset(1), self.scope)
}
@@ -220,14 +179,9 @@ impl<'a> Cursor<'a> {
///
/// WARNING: This mutates its argument.
fn ignore_none(&mut self) {
- while let Entry::Group(group, buf) = self.entry() {
+ while let Entry::Group(group, _) = self.entry() {
if group.delimiter() == Delimiter::None {
- // NOTE: We call `Cursor::create` here to make sure that
- // situations where we should immediately exit the span after
- // entering it are handled correctly.
- unsafe {
- *self = Cursor::create(buf.ptr, self.scope);
- }
+ unsafe { *self = self.bump_ignore_group() };
} else {
break;
}
@@ -251,9 +205,12 @@ impl<'a> Cursor<'a> {
self.ignore_none();
}
- if let Entry::Group(group, buf) = self.entry() {
+ if let Entry::Group(group, end_offset) = self.entry() {
if group.delimiter() == delim {
- return Some((buf.begin(), group.span(), unsafe { self.bump() }));
+ let end_of_group = unsafe { self.ptr.add(*end_offset) };
+ let inside_of_group = unsafe { Cursor::create(self.ptr.add(1), end_of_group) };
+ let after_group = unsafe { Cursor::create(end_of_group, self.scope) };
+ return Some((inside_of_group, group.span(), after_group));
}
}
@@ -265,7 +222,7 @@ impl<'a> Cursor<'a> {
pub fn ident(mut self) -> Option<(Ident, Cursor<'a>)> {
self.ignore_none();
match self.entry() {
- Entry::Ident(ident) => Some((ident.clone(), unsafe { self.bump() })),
+ Entry::Ident(ident) => Some((ident.clone(), unsafe { self.bump_ignore_group() })),
_ => None,
}
}
@@ -275,7 +232,9 @@ impl<'a> Cursor<'a> {
pub fn punct(mut self) -> Option<(Punct, Cursor<'a>)> {
self.ignore_none();
match self.entry() {
- Entry::Punct(op) if op.as_char() != '\'' => Some((op.clone(), unsafe { self.bump() })),
+ Entry::Punct(punct) if punct.as_char() != '\'' => {
+ Some((punct.clone(), unsafe { self.bump_ignore_group() }))
+ }
_ => None,
}
}
@@ -285,7 +244,7 @@ impl<'a> Cursor<'a> {
pub fn literal(mut self) -> Option<(Literal, Cursor<'a>)> {
self.ignore_none();
match self.entry() {
- Entry::Literal(lit) => Some((lit.clone(), unsafe { self.bump() })),
+ Entry::Literal(literal) => Some((literal.clone(), unsafe { self.bump_ignore_group() })),
_ => None,
}
}
@@ -295,18 +254,14 @@ impl<'a> Cursor<'a> {
pub fn lifetime(mut self) -> Option<(Lifetime, Cursor<'a>)> {
self.ignore_none();
match self.entry() {
- Entry::Punct(op) if op.as_char() == '\'' && op.spacing() == Spacing::Joint => {
- let next = unsafe { self.bump() };
- match next.ident() {
- Some((ident, rest)) => {
- let lifetime = Lifetime {
- apostrophe: op.span(),
- ident,
- };
- Some((lifetime, rest))
- }
- None => None,
- }
+ Entry::Punct(punct) if punct.as_char() == '\'' && punct.spacing() == Spacing::Joint => {
+ let next = unsafe { self.bump_ignore_group() };
+ let (ident, rest) = next.ident()?;
+ let lifetime = Lifetime {
+ apostrophe: punct.span(),
+ ident,
+ };
+ Some((lifetime, rest))
}
_ => None,
}
@@ -332,15 +287,16 @@ impl<'a> Cursor<'a> {
/// This method does not treat `None`-delimited groups as transparent, and
/// will return a `Group(None, ..)` if the cursor is looking at one.
pub fn token_tree(self) -> Option<(TokenTree, Cursor<'a>)> {
- let tree = match self.entry() {
- Entry::Group(group, _) => group.clone().into(),
- Entry::Literal(lit) => lit.clone().into(),
- Entry::Ident(ident) => ident.clone().into(),
- Entry::Punct(op) => op.clone().into(),
- Entry::End(..) => return None,
+ let (tree, len) = match self.entry() {
+ Entry::Group(group, end_offset) => (group.clone().into(), *end_offset),
+ Entry::Literal(literal) => (literal.clone().into(), 1),
+ Entry::Ident(ident) => (ident.clone().into(), 1),
+ Entry::Punct(punct) => (punct.clone().into(), 1),
+ Entry::End => return None,
};
- Some((tree, unsafe { self.bump() }))
+ let rest = unsafe { Cursor::create(self.ptr.add(len), self.scope) };
+ Some((tree, rest))
}
/// Returns the `Span` of the current token, or `Span::call_site()` if this
@@ -348,10 +304,10 @@ impl<'a> Cursor<'a> {
pub fn span(self) -> Span {
match self.entry() {
Entry::Group(group, _) => group.span(),
- Entry::Literal(l) => l.span(),
- Entry::Ident(t) => t.span(),
- Entry::Punct(o) => o.span(),
- Entry::End(..) => Span::call_site(),
+ Entry::Literal(literal) => literal.span(),
+ Entry::Ident(ident) => ident.span(),
+ Entry::Punct(punct) => punct.span(),
+ Entry::End => Span::call_site(),
}
}
@@ -360,19 +316,22 @@ impl<'a> Cursor<'a> {
///
/// This method treats `'lifetimes` as a single token.
pub(crate) fn skip(self) -> Option<Cursor<'a>> {
- match self.entry() {
- Entry::End(..) => None,
+ let len = match self.entry() {
+ Entry::End => return None,
// Treat lifetimes as a single tt for the purposes of 'skip'.
- Entry::Punct(op) if op.as_char() == '\'' && op.spacing() == Spacing::Joint => {
- let next = unsafe { self.bump() };
- match next.entry() {
- Entry::Ident(_) => Some(unsafe { next.bump() }),
- _ => Some(next),
+ Entry::Punct(punct) if punct.as_char() == '\'' && punct.spacing() == Spacing::Joint => {
+ match unsafe { &*self.ptr.add(1) } {
+ Entry::Ident(_) => 2,
+ _ => 1,
}
}
- _ => Some(unsafe { self.bump() }),
- }
+
+ Entry::Group(_, end_offset) => *end_offset,
+ _ => 1,
+ };
+
+ Some(unsafe { Cursor::create(self.ptr.add(len), self.scope) })
}
}
diff --git a/vendor/syn/src/expr.rs b/vendor/syn/src/expr.rs
index cf0fa0af9..93a59b0e2 100644
--- a/vendor/syn/src/expr.rs
+++ b/vendor/syn/src/expr.rs
@@ -1371,7 +1371,9 @@ pub(crate) mod parsing {
});
} else if Precedence::Cast >= base && input.peek(Token![as]) {
let as_token: Token![as] = input.parse()?;
- let ty = input.call(Type::without_plus)?;
+ let allow_plus = false;
+ let allow_group_generic = false;
+ let ty = ty::parsing::ambig_ty(input, allow_plus, allow_group_generic)?;
check_cast(input)?;
lhs = Expr::Cast(ExprCast {
attrs: Vec::new(),
@@ -1381,7 +1383,9 @@ pub(crate) mod parsing {
});
} else if Precedence::Cast >= base && input.peek(Token![:]) && !input.peek(Token![::]) {
let colon_token: Token![:] = input.parse()?;
- let ty = input.call(Type::without_plus)?;
+ let allow_plus = false;
+ let allow_group_generic = false;
+ let ty = ty::parsing::ambig_ty(input, allow_plus, allow_group_generic)?;
check_cast(input)?;
lhs = Expr::Type(ExprType {
attrs: Vec::new(),
@@ -1429,7 +1433,9 @@ pub(crate) mod parsing {
});
} else if Precedence::Cast >= base && input.peek(Token![as]) {
let as_token: Token![as] = input.parse()?;
- let ty = input.call(Type::without_plus)?;
+ let allow_plus = false;
+ let allow_group_generic = false;
+ let ty = ty::parsing::ambig_ty(input, allow_plus, allow_group_generic)?;
check_cast(input)?;
lhs = Expr::Cast(ExprCast {
attrs: Vec::new(),
@@ -1727,7 +1733,10 @@ pub(crate) mod parsing {
|| input.peek(Token![move])
{
expr_closure(input, allow_struct).map(Expr::Closure)
- } else if input.peek(Token![for]) && input.peek2(Token![<]) && input.peek3(Lifetime) {
+ } else if input.peek(Token![for])
+ && input.peek2(Token![<])
+ && (input.peek3(Lifetime) || input.peek3(Token![>]))
+ {
let begin = input.fork();
input.parse::<BoundLifetimes>()?;
expr_closure(input, allow_struct)?;
@@ -2010,7 +2019,9 @@ pub(crate) mod parsing {
Expr::If(input.parse()?)
} else if input.peek(Token![while]) {
Expr::While(input.parse()?)
- } else if input.peek(Token![for]) {
+ } else if input.peek(Token![for])
+ && !(input.peek2(Token![<]) && (input.peek3(Lifetime) || input.peek3(Token![>])))
+ {
Expr::ForLoop(input.parse()?)
} else if input.peek(Token![loop]) {
Expr::Loop(input.parse()?)
diff --git a/vendor/syn/src/gen/clone.rs b/vendor/syn/src/gen/clone.rs
index 8de1cd8c9..a413e3ec7 100644
--- a/vendor/syn/src/gen/clone.rs
+++ b/vendor/syn/src/gen/clone.rs
@@ -910,9 +910,9 @@ impl Clone for GenericArgument {
match self {
GenericArgument::Lifetime(v0) => GenericArgument::Lifetime(v0.clone()),
GenericArgument::Type(v0) => GenericArgument::Type(v0.clone()),
+ GenericArgument::Const(v0) => GenericArgument::Const(v0.clone()),
GenericArgument::Binding(v0) => GenericArgument::Binding(v0.clone()),
GenericArgument::Constraint(v0) => GenericArgument::Constraint(v0.clone()),
- GenericArgument::Const(v0) => GenericArgument::Const(v0.clone()),
}
}
}
diff --git a/vendor/syn/src/gen/debug.rs b/vendor/syn/src/gen/debug.rs
index 4adf8c593..a1f0afa79 100644
--- a/vendor/syn/src/gen/debug.rs
+++ b/vendor/syn/src/gen/debug.rs
@@ -1268,6 +1268,11 @@ impl Debug for GenericArgument {
formatter.field(v0);
formatter.finish()
}
+ GenericArgument::Const(v0) => {
+ let mut formatter = formatter.debug_tuple("Const");
+ formatter.field(v0);
+ formatter.finish()
+ }
GenericArgument::Binding(v0) => {
let mut formatter = formatter.debug_tuple("Binding");
formatter.field(v0);
@@ -1278,11 +1283,6 @@ impl Debug for GenericArgument {
formatter.field(v0);
formatter.finish()
}
- GenericArgument::Const(v0) => {
- let mut formatter = formatter.debug_tuple("Const");
- formatter.field(v0);
- formatter.finish()
- }
}
}
}
diff --git a/vendor/syn/src/gen/eq.rs b/vendor/syn/src/gen/eq.rs
index 40fed0b89..20acb809d 100644
--- a/vendor/syn/src/gen/eq.rs
+++ b/vendor/syn/src/gen/eq.rs
@@ -878,13 +878,13 @@ impl PartialEq for GenericArgument {
(GenericArgument::Type(self0), GenericArgument::Type(other0)) => {
self0 == other0
}
- (GenericArgument::Binding(self0), GenericArgument::Binding(other0)) => {
+ (GenericArgument::Const(self0), GenericArgument::Const(other0)) => {
self0 == other0
}
- (GenericArgument::Constraint(self0), GenericArgument::Constraint(other0)) => {
+ (GenericArgument::Binding(self0), GenericArgument::Binding(other0)) => {
self0 == other0
}
- (GenericArgument::Const(self0), GenericArgument::Const(other0)) => {
+ (GenericArgument::Constraint(self0), GenericArgument::Constraint(other0)) => {
self0 == other0
}
_ => false,
diff --git a/vendor/syn/src/gen/fold.rs b/vendor/syn/src/gen/fold.rs
index 6e19e6f3a..98bb5794a 100644
--- a/vendor/syn/src/gen/fold.rs
+++ b/vendor/syn/src/gen/fold.rs
@@ -1787,15 +1787,15 @@ where
GenericArgument::Type(_binding_0) => {
GenericArgument::Type(f.fold_type(_binding_0))
}
+ GenericArgument::Const(_binding_0) => {
+ GenericArgument::Const(f.fold_expr(_binding_0))
+ }
GenericArgument::Binding(_binding_0) => {
GenericArgument::Binding(f.fold_binding(_binding_0))
}
GenericArgument::Constraint(_binding_0) => {
GenericArgument::Constraint(f.fold_constraint(_binding_0))
}
- GenericArgument::Const(_binding_0) => {
- GenericArgument::Const(f.fold_expr(_binding_0))
- }
}
}
#[cfg(feature = "full")]
diff --git a/vendor/syn/src/gen/hash.rs b/vendor/syn/src/gen/hash.rs
index f68a7630e..d0400e19d 100644
--- a/vendor/syn/src/gen/hash.rs
+++ b/vendor/syn/src/gen/hash.rs
@@ -1184,15 +1184,15 @@ impl Hash for GenericArgument {
state.write_u8(1u8);
v0.hash(state);
}
- GenericArgument::Binding(v0) => {
+ GenericArgument::Const(v0) => {
state.write_u8(2u8);
v0.hash(state);
}
- GenericArgument::Constraint(v0) => {
+ GenericArgument::Binding(v0) => {
state.write_u8(3u8);
v0.hash(state);
}
- GenericArgument::Const(v0) => {
+ GenericArgument::Constraint(v0) => {
state.write_u8(4u8);
v0.hash(state);
}
diff --git a/vendor/syn/src/gen/visit.rs b/vendor/syn/src/gen/visit.rs
index 051b65936..19ddd2e72 100644
--- a/vendor/syn/src/gen/visit.rs
+++ b/vendor/syn/src/gen/visit.rs
@@ -1974,15 +1974,15 @@ where
GenericArgument::Type(_binding_0) => {
v.visit_type(_binding_0);
}
+ GenericArgument::Const(_binding_0) => {
+ v.visit_expr(_binding_0);
+ }
GenericArgument::Binding(_binding_0) => {
v.visit_binding(_binding_0);
}
GenericArgument::Constraint(_binding_0) => {
v.visit_constraint(_binding_0);
}
- GenericArgument::Const(_binding_0) => {
- v.visit_expr(_binding_0);
- }
}
}
#[cfg(feature = "full")]
diff --git a/vendor/syn/src/gen/visit_mut.rs b/vendor/syn/src/gen/visit_mut.rs
index 3ddbe9c06..239709d19 100644
--- a/vendor/syn/src/gen/visit_mut.rs
+++ b/vendor/syn/src/gen/visit_mut.rs
@@ -1975,15 +1975,15 @@ where
GenericArgument::Type(_binding_0) => {
v.visit_type_mut(_binding_0);
}
+ GenericArgument::Const(_binding_0) => {
+ v.visit_expr_mut(_binding_0);
+ }
GenericArgument::Binding(_binding_0) => {
v.visit_binding_mut(_binding_0);
}
GenericArgument::Constraint(_binding_0) => {
v.visit_constraint_mut(_binding_0);
}
- GenericArgument::Const(_binding_0) => {
- v.visit_expr_mut(_binding_0);
- }
}
}
#[cfg(feature = "full")]
diff --git a/vendor/syn/src/item.rs b/vendor/syn/src/item.rs
index 1ce970ee2..a1ef7ab43 100644
--- a/vendor/syn/src/item.rs
+++ b/vendor/syn/src/item.rs
@@ -2765,7 +2765,6 @@ mod printing {
use super::*;
use crate::attr::FilterAttrs;
use crate::print::TokensOrDefault;
- use crate::punctuated::Pair;
use proc_macro2::TokenStream;
use quote::{ToTokens, TokenStreamExt};
@@ -3283,16 +3282,9 @@ mod printing {
self.generics.to_tokens(tokens);
self.paren_token.surround(tokens, |tokens| {
let mut last_is_variadic = false;
- for input in self.inputs.pairs() {
- match input {
- Pair::Punctuated(input, comma) => {
- maybe_variadic_to_tokens(input, tokens);
- comma.to_tokens(tokens);
- }
- Pair::End(input) => {
- last_is_variadic = maybe_variadic_to_tokens(input, tokens);
- }
- }
+ for pair in self.inputs.pairs() {
+ last_is_variadic = maybe_variadic_to_tokens(pair.value(), tokens);
+ pair.punct().to_tokens(tokens);
}
if self.variadic.is_some() && !last_is_variadic {
if !self.inputs.empty_or_trailing() {
diff --git a/vendor/syn/src/lib.rs b/vendor/syn/src/lib.rs
index 608c39876..81f03e1b5 100644
--- a/vendor/syn/src/lib.rs
+++ b/vendor/syn/src/lib.rs
@@ -250,15 +250,18 @@
//! dynamic library libproc_macro from rustc toolchain.
// Syn types in rustdoc of other crates get linked to here.
-#![doc(html_root_url = "https://docs.rs/syn/1.0.98")]
+#![doc(html_root_url = "https://docs.rs/syn/1.0.102")]
#![cfg_attr(doc_cfg, feature(doc_cfg))]
#![allow(non_camel_case_types)]
#![allow(
+ clippy::bool_to_int_with_if,
clippy::cast_lossless,
clippy::cast_possible_truncation,
+ clippy::cast_ptr_alignment,
clippy::default_trait_access,
clippy::doc_markdown,
clippy::expl_impl_clone_on_copy,
+ clippy::explicit_auto_deref,
clippy::if_not_else,
clippy::inherent_to_string,
clippy::large_enum_variant,
@@ -810,14 +813,6 @@ mod print;
////////////////////////////////////////////////////////////////////////////////
-// https://github.com/rust-lang/rust/issues/62830
-#[cfg(feature = "parsing")]
-mod rustdoc_workaround {
- pub use crate::parse::{self as parse_module};
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
mod error;
pub use crate::error::{Error, Result};
diff --git a/vendor/syn/src/lit.rs b/vendor/syn/src/lit.rs
index 2600dc801..130b40ed1 100644
--- a/vendor/syn/src/lit.rs
+++ b/vendor/syn/src/lit.rs
@@ -224,7 +224,7 @@ impl LitStr {
// Parse string literal into a token stream with every span equal to the
// original literal's span.
- let mut tokens = crate::parse_str(&self.value())?;
+ let mut tokens = TokenStream::from_str(&self.value())?;
tokens = respan_token_stream(tokens, self.span());
parser.parse2(tokens)
diff --git a/vendor/syn/src/parse_macro_input.rs b/vendor/syn/src/parse_macro_input.rs
index 8e1a5ec6b..6163cd70a 100644
--- a/vendor/syn/src/parse_macro_input.rs
+++ b/vendor/syn/src/parse_macro_input.rs
@@ -4,7 +4,7 @@
/// Refer to the [`parse` module] documentation for more details about parsing
/// in Syn.
///
-/// [`parse` module]: crate::rustdoc_workaround::parse_module
+/// [`parse` module]: mod@crate::parse
///
/// <br>
///
@@ -51,7 +51,7 @@
/// This macro can also be used with the [`Parser` trait] for types that have
/// multiple ways that they can be parsed.
///
-/// [`Parser` trait]: crate::rustdoc_workaround::parse_module::Parser
+/// [`Parser` trait]: crate::parse::Parser
///
/// ```
/// # extern crate proc_macro;
diff --git a/vendor/syn/src/pat.rs b/vendor/syn/src/pat.rs
index fa0818c16..b279186aa 100644
--- a/vendor/syn/src/pat.rs
+++ b/vendor/syn/src/pat.rs
@@ -400,11 +400,11 @@ pub mod parsing {
}
if input.peek(token::Brace) {
- let pat = pat_struct(input, path)?;
+ let pat = pat_struct(begin.fork(), input, path)?;
if qself.is_some() {
Ok(Pat::Verbatim(verbatim::between(begin, input)))
} else {
- Ok(Pat::Struct(pat))
+ Ok(pat)
}
} else if input.peek(token::Paren) {
let pat = pat_tuple_struct(input, path)?;
@@ -465,13 +465,23 @@ pub mod parsing {
})
}
- fn pat_struct(input: ParseStream, path: Path) -> Result<PatStruct> {
+ fn pat_struct(begin: ParseBuffer, input: ParseStream, path: Path) -> Result<Pat> {
let content;
let brace_token = braced!(content in input);
let mut fields = Punctuated::new();
- while !content.is_empty() && !content.peek(Token![..]) {
- let value = content.call(field_pat)?;
+ let mut dot2_token = None;
+ while !content.is_empty() {
+ let attrs = content.call(Attribute::parse_outer)?;
+ if content.peek(Token![..]) {
+ dot2_token = Some(content.parse()?);
+ if !attrs.is_empty() {
+ return Ok(Pat::Verbatim(verbatim::between(begin, input)));
+ }
+ break;
+ }
+ let mut value = content.call(field_pat)?;
+ value.attrs = attrs;
fields.push_value(value);
if content.is_empty() {
break;
@@ -480,19 +490,13 @@ pub mod parsing {
fields.push_punct(punct);
}
- let dot2_token = if fields.empty_or_trailing() && content.peek(Token![..]) {
- Some(content.parse()?)
- } else {
- None
- };
-
- Ok(PatStruct {
+ Ok(Pat::Struct(PatStruct {
attrs: Vec::new(),
path,
brace_token,
fields,
dot2_token,
- })
+ }))
}
impl Member {
@@ -505,7 +509,6 @@ pub mod parsing {
}
fn field_pat(input: ParseStream) -> Result<FieldPat> {
- let attrs = input.call(Attribute::parse_outer)?;
let boxed: Option<Token![box]> = input.parse()?;
let by_ref: Option<Token![ref]> = input.parse()?;
let mutability: Option<Token![mut]> = input.parse()?;
@@ -515,7 +518,7 @@ pub mod parsing {
|| member.is_unnamed()
{
return Ok(FieldPat {
- attrs,
+ attrs: Vec::new(),
member,
colon_token: input.parse()?,
pat: Box::new(multi_pat_with_leading_vert(input)?),
@@ -544,7 +547,7 @@ pub mod parsing {
}
Ok(FieldPat {
- attrs,
+ attrs: Vec::new(),
member: Member::Named(ident),
colon_token: None,
pat: Box::new(pat),
diff --git a/vendor/syn/src/path.rs b/vendor/syn/src/path.rs
index 00be352b1..742273afd 100644
--- a/vendor/syn/src/path.rs
+++ b/vendor/syn/src/path.rs
@@ -109,16 +109,16 @@ ast_enum! {
Lifetime(Lifetime),
/// A type argument.
Type(Type),
- /// A binding (equality constraint) on an associated type: the `Item =
- /// u8` in `Iterator<Item = u8>`.
- Binding(Binding),
- /// An associated type bound: `Iterator<Item: Display>`.
- Constraint(Constraint),
/// A const expression. Must be inside of a block.
///
/// NOTE: Identity expressions are represented as Type arguments, as
/// they are indistinguishable syntactically.
Const(Expr),
+ /// A binding (equality constraint) on an associated type: the `Item =
+ /// u8` in `Iterator<Item = u8>`.
+ Binding(Binding),
+ /// An associated type bound: `Iterator<Item: Display>`.
+ Constraint(Constraint),
}
}
@@ -729,8 +729,6 @@ pub(crate) mod printing {
match self {
GenericArgument::Lifetime(lt) => lt.to_tokens(tokens),
GenericArgument::Type(ty) => ty.to_tokens(tokens),
- GenericArgument::Binding(tb) => tb.to_tokens(tokens),
- GenericArgument::Constraint(tc) => tc.to_tokens(tokens),
GenericArgument::Const(e) => match *e {
Expr::Lit(_) => e.to_tokens(tokens),
@@ -746,6 +744,8 @@ pub(crate) mod printing {
e.to_tokens(tokens);
}),
},
+ GenericArgument::Binding(tb) => tb.to_tokens(tokens),
+ GenericArgument::Constraint(tc) => tc.to_tokens(tokens),
}
}
}
@@ -756,11 +756,8 @@ pub(crate) mod printing {
self.colon2_token.to_tokens(tokens);
self.lt_token.to_tokens(tokens);
- // Print lifetimes before types and consts, all before bindings,
- // regardless of their order in self.args.
- //
- // TODO: ordering rules for const arguments vs type arguments have
- // not been settled yet. https://github.com/rust-lang/rust/issues/44580
+ // Print lifetimes before types/consts/bindings, regardless of their
+ // order in self.args.
let mut trailing_or_empty = true;
for param in self.args.pairs() {
match **param.value() {
@@ -769,37 +766,24 @@ pub(crate) mod printing {
trailing_or_empty = param.punct().is_some();
}
GenericArgument::Type(_)
- | GenericArgument::Binding(_)
- | GenericArgument::Constraint(_)
- | GenericArgument::Const(_) => {}
- }
- }
- for param in self.args.pairs() {
- match **param.value() {
- GenericArgument::Type(_) | GenericArgument::Const(_) => {
- if !trailing_or_empty {
- <Token![,]>::default().to_tokens(tokens);
- }
- param.to_tokens(tokens);
- trailing_or_empty = param.punct().is_some();
- }
- GenericArgument::Lifetime(_)
+ | GenericArgument::Const(_)
| GenericArgument::Binding(_)
| GenericArgument::Constraint(_) => {}
}
}
for param in self.args.pairs() {
match **param.value() {
- GenericArgument::Binding(_) | GenericArgument::Constraint(_) => {
+ GenericArgument::Type(_)
+ | GenericArgument::Const(_)
+ | GenericArgument::Binding(_)
+ | GenericArgument::Constraint(_) => {
if !trailing_or_empty {
<Token![,]>::default().to_tokens(tokens);
}
param.to_tokens(tokens);
trailing_or_empty = param.punct().is_some();
}
- GenericArgument::Lifetime(_)
- | GenericArgument::Type(_)
- | GenericArgument::Const(_) => {}
+ GenericArgument::Lifetime(_) => {}
}
}
diff --git a/vendor/syn/src/stmt.rs b/vendor/syn/src/stmt.rs
index 3e2c71bdd..58bd013ec 100644
--- a/vendor/syn/src/stmt.rs
+++ b/vendor/syn/src/stmt.rs
@@ -175,7 +175,11 @@ pub mod parsing {
|| input.peek(Token![crate]) && !input.peek2(Token![::])
|| input.peek(Token![extern])
|| input.peek(Token![use])
- || input.peek(Token![static]) && (input.peek2(Token![mut]) || input.peek2(Ident))
+ || input.peek(Token![static])
+ && (input.peek2(Token![mut])
+ || input.peek2(Ident)
+ && !(input.peek2(Token![async])
+ && (input.peek3(Token![move]) || input.peek3(Token![|]))))
|| input.peek(Token![const]) && !input.peek2(token::Brace)
|| input.peek(Token![unsafe]) && !input.peek2(token::Brace)
|| input.peek(Token![async])
diff --git a/vendor/syn/src/ty.rs b/vendor/syn/src/ty.rs
index 0f1341fdd..4068be3c7 100644
--- a/vendor/syn/src/ty.rs
+++ b/vendor/syn/src/ty.rs
@@ -343,7 +343,8 @@ pub mod parsing {
impl Parse for Type {
fn parse(input: ParseStream) -> Result<Self> {
let allow_plus = true;
- ambig_ty(input, allow_plus)
+ let allow_group_generic = true;
+ ambig_ty(input, allow_plus, allow_group_generic)
}
}
@@ -356,11 +357,16 @@ pub mod parsing {
#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
pub fn without_plus(input: ParseStream) -> Result<Self> {
let allow_plus = false;
- ambig_ty(input, allow_plus)
+ let allow_group_generic = true;
+ ambig_ty(input, allow_plus, allow_group_generic)
}
}
- fn ambig_ty(input: ParseStream, allow_plus: bool) -> Result<Type> {
+ pub(crate) fn ambig_ty(
+ input: ParseStream,
+ allow_plus: bool,
+ allow_group_generic: bool,
+ ) -> Result<Type> {
let begin = input.fork();
if input.peek(token::Group) {
@@ -381,7 +387,9 @@ pub mod parsing {
path: Path::parse_helper(input, false)?,
}));
}
- } else if input.peek(Token![<]) || input.peek(Token![::]) && input.peek3(Token![<]) {
+ } else if input.peek(Token![<]) && allow_group_generic
+ || input.peek(Token![::]) && input.peek3(Token![<])
+ {
if let Type::Path(mut ty) = *group.elem {
let arguments = &mut ty.path.segments.last_mut().unwrap().arguments;
if let PathArguments::None = arguments {
@@ -537,9 +545,15 @@ pub mod parsing {
|| lookahead.peek(Token![::])
|| lookahead.peek(Token![<])
{
- if input.peek(Token![dyn]) {
- let trait_object = TypeTraitObject::parse(input, allow_plus)?;
- return Ok(Type::TraitObject(trait_object));
+ let dyn_token: Option<Token![dyn]> = input.parse()?;
+ if dyn_token.is_some() {
+ let star_token: Option<Token![*]> = input.parse()?;
+ let bounds = TypeTraitObject::parse_bounds(input, allow_plus)?;
+ return Ok(if star_token.is_some() {
+ Type::Verbatim(verbatim::between(begin, input))
+ } else {
+ Type::TraitObject(TypeTraitObject { dyn_token, bounds })
+ });
}
let ty: TypePath = input.parse()?;
@@ -819,15 +833,28 @@ pub mod parsing {
#[cfg_attr(doc_cfg, doc(cfg(feature = "parsing")))]
impl Parse for TypePath {
fn parse(input: ParseStream) -> Result<Self> {
- let (qself, mut path) = path::parsing::qpath(input, false)?;
+ let expr_style = false;
+ let (qself, mut path) = path::parsing::qpath(input, expr_style)?;
- if path.segments.last().unwrap().arguments.is_empty()
+ while path.segments.last().unwrap().arguments.is_empty()
&& (input.peek(token::Paren) || input.peek(Token![::]) && input.peek3(token::Paren))
{
input.parse::<Option<Token![::]>>()?;
let args: ParenthesizedGenericArguments = input.parse()?;
+ let allow_associated_type = cfg!(feature = "full")
+ && match &args.output {
+ ReturnType::Default => true,
+ ReturnType::Type(_, ty) => match **ty {
+ // TODO: probably some of the other kinds allow this too.
+ Type::Paren(_) => true,
+ _ => false,
+ },
+ };
let parenthesized = PathArguments::Parenthesized(args);
path.segments.last_mut().unwrap().arguments = parenthesized;
+ if allow_associated_type {
+ Path::parse_rest(input, &mut path, expr_style)?;
+ }
}
Ok(TypePath { qself, path })
@@ -844,7 +871,8 @@ pub mod parsing {
pub(crate) fn parse(input: ParseStream, allow_plus: bool) -> Result<Self> {
if input.peek(Token![->]) {
let arrow = input.parse()?;
- let ty = ambig_ty(input, allow_plus)?;
+ let allow_group_generic = true;
+ let ty = ambig_ty(input, allow_plus, allow_group_generic)?;
Ok(ReturnType::Type(arrow, Box::new(ty)))
} else {
Ok(ReturnType::Default)
@@ -967,7 +995,10 @@ pub mod parsing {
let content;
Ok(TypeParen {
paren_token: parenthesized!(content in input),
- elem: Box::new(ambig_ty(&content, allow_plus)?),
+ elem: Box::new({
+ let allow_group_generic = true;
+ ambig_ty(&content, allow_plus, allow_group_generic)?
+ }),
})
}
}
diff --git a/vendor/syn/tests/.gitignore b/vendor/syn/tests/.gitignore
deleted file mode 100644
index 291ed43a2..000000000
--- a/vendor/syn/tests/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/*.pending-snap
diff --git a/vendor/syn/tests/common/eq.rs b/vendor/syn/tests/common/eq.rs
index a6c379165..a53146241 100644
--- a/vendor/syn/tests/common/eq.rs
+++ b/vendor/syn/tests/common/eq.rs
@@ -3,6 +3,7 @@
extern crate rustc_ast;
extern crate rustc_data_structures;
extern crate rustc_span;
+extern crate thin_vec;
use rustc_ast::ast::AngleBracketedArg;
use rustc_ast::ast::AngleBracketedArgs;
@@ -19,11 +20,13 @@ use rustc_ast::ast::AttrStyle;
use rustc_ast::ast::Attribute;
use rustc_ast::ast::BareFnTy;
use rustc_ast::ast::BinOpKind;
-use rustc_ast::ast::BindingMode;
+use rustc_ast::ast::BindingAnnotation;
use rustc_ast::ast::Block;
use rustc_ast::ast::BlockCheckMode;
use rustc_ast::ast::BorrowKind;
+use rustc_ast::ast::ByRef;
use rustc_ast::ast::CaptureBy;
+use rustc_ast::ast::ClosureBinder;
use rustc_ast::ast::Const;
use rustc_ast::ast::Crate;
use rustc_ast::ast::Defaultness;
@@ -81,6 +84,7 @@ use rustc_ast::ast::Movability;
use rustc_ast::ast::MutTy;
use rustc_ast::ast::Mutability;
use rustc_ast::ast::NodeId;
+use rustc_ast::ast::NormalAttr;
use rustc_ast::ast::Param;
use rustc_ast::ast::ParenthesizedArgs;
use rustc_ast::ast::Pat;
@@ -126,14 +130,14 @@ use rustc_ast::ast::WhereRegionPredicate;
use rustc_ast::ptr::P;
use rustc_ast::token::{self, CommentKind, Delimiter, Nonterminal, Token, TokenKind};
use rustc_ast::tokenstream::{
- AttrAnnotatedTokenStream, AttrAnnotatedTokenTree, AttributesData, DelimSpan, LazyTokenStream,
- Spacing, TokenStream, TokenTree,
+ AttrTokenStream, AttrTokenTree, AttributesData, DelimSpan, LazyAttrTokenStream, Spacing,
+ TokenStream, TokenTree,
};
use rustc_data_structures::sync::Lrc;
-use rustc_data_structures::thin_vec::ThinVec;
use rustc_span::source_map::Spanned;
use rustc_span::symbol::{sym, Ident};
use rustc_span::{Span, Symbol, SyntaxContext, DUMMY_SP};
+use thin_vec::ThinVec;
pub trait SpanlessEq {
fn eq(&self, other: &Self) -> bool;
@@ -145,7 +149,7 @@ impl<T: ?Sized + SpanlessEq> SpanlessEq for Box<T> {
}
}
-impl<T: SpanlessEq> SpanlessEq for P<T> {
+impl<T: ?Sized + SpanlessEq> SpanlessEq for P<T> {
fn eq(&self, other: &Self) -> bool {
SpanlessEq::eq(&**self, &**other)
}
@@ -400,11 +404,12 @@ spanless_eq_struct!(AngleBracketedArgs; span args);
spanless_eq_struct!(AnonConst; id value);
spanless_eq_struct!(Arm; attrs pat guard body span id is_placeholder);
spanless_eq_struct!(AssocConstraint; id ident gen_args kind span);
-spanless_eq_struct!(AttrAnnotatedTokenStream; 0);
spanless_eq_struct!(AttrItem; path args tokens);
+spanless_eq_struct!(AttrTokenStream; 0);
spanless_eq_struct!(Attribute; kind id style span);
spanless_eq_struct!(AttributesData; attrs tokens);
spanless_eq_struct!(BareFnTy; unsafety ext generic_params decl decl_span);
+spanless_eq_struct!(BindingAnnotation; 0 1);
spanless_eq_struct!(Block; stmts id rules span tokens could_be_bare_literal);
spanless_eq_struct!(Crate; attrs items spans id is_placeholder);
spanless_eq_struct!(EnumDef; variants);
@@ -424,13 +429,14 @@ spanless_eq_struct!(InlineAsmSym; id qself path);
spanless_eq_struct!(Item<K>; attrs id span vis ident kind !tokens);
spanless_eq_struct!(Label; ident);
spanless_eq_struct!(Lifetime; id ident);
-spanless_eq_struct!(Lit; token kind span);
+spanless_eq_struct!(Lit; token_lit kind span);
spanless_eq_struct!(Local; pat ty kind id span attrs !tokens);
spanless_eq_struct!(MacCall; path args prior_type_ascription);
spanless_eq_struct!(MacCallStmt; mac style attrs tokens);
spanless_eq_struct!(MacroDef; body macro_rules);
spanless_eq_struct!(ModSpans; !inner_span !inject_use_span);
spanless_eq_struct!(MutTy; ty mutbl);
+spanless_eq_struct!(NormalAttr; item tokens);
spanless_eq_struct!(ParenthesizedArgs; span inputs inputs_span output);
spanless_eq_struct!(Pat; id kind span tokens);
spanless_eq_struct!(PatField; ident pat is_shorthand attrs id span is_placeholder);
@@ -452,23 +458,24 @@ spanless_eq_struct!(Variant; attrs id span !vis ident data disr_expr is_placehol
spanless_eq_struct!(Visibility; kind span tokens);
spanless_eq_struct!(WhereBoundPredicate; span bound_generic_params bounded_ty bounds);
spanless_eq_struct!(WhereClause; has_where_token predicates span);
-spanless_eq_struct!(WhereEqPredicate; id span lhs_ty rhs_ty);
+spanless_eq_struct!(WhereEqPredicate; span lhs_ty rhs_ty);
spanless_eq_struct!(WhereRegionPredicate; span lifetime bounds);
spanless_eq_struct!(token::Lit; kind symbol suffix);
spanless_eq_enum!(AngleBracketedArg; Arg(0) Constraint(0));
spanless_eq_enum!(AssocItemKind; Const(0 1 2) Fn(0) TyAlias(0) MacCall(0));
spanless_eq_enum!(AssocConstraintKind; Equality(term) Bound(bounds));
spanless_eq_enum!(Async; Yes(span closure_id return_impl_trait_id) No);
-spanless_eq_enum!(AttrAnnotatedTokenTree; Token(0) Delimited(0 1 2) Attributes(0));
spanless_eq_enum!(AttrStyle; Outer Inner);
+spanless_eq_enum!(AttrTokenTree; Token(0 1) Delimited(0 1 2) Attributes(0));
spanless_eq_enum!(BinOpKind; Add Sub Mul Div Rem And Or BitXor BitAnd BitOr Shl Shr Eq Lt Le Ne Ge Gt);
-spanless_eq_enum!(BindingMode; ByRef(0) ByValue(0));
spanless_eq_enum!(BlockCheckMode; Default Unsafe(0));
spanless_eq_enum!(BorrowKind; Ref Raw);
+spanless_eq_enum!(ByRef; Yes No);
spanless_eq_enum!(CaptureBy; Value Ref);
+spanless_eq_enum!(ClosureBinder; NotPresent For(span generic_params));
spanless_eq_enum!(Const; Yes(0) No);
spanless_eq_enum!(Defaultness; Default(0) Final);
-spanless_eq_enum!(Extern; None Implicit Explicit(0));
+spanless_eq_enum!(Extern; None Implicit(0) Explicit(0 1));
spanless_eq_enum!(FloatTy; F32 F64);
spanless_eq_enum!(FnRetTy; Default(0) Ty(0));
spanless_eq_enum!(ForeignItemKind; Static(0 1 2) Fn(0) TyAlias(0) MacCall(0));
@@ -498,24 +505,25 @@ spanless_eq_enum!(StmtKind; Local(0) Item(0) Expr(0) Semi(0) Empty MacCall(0));
spanless_eq_enum!(StrStyle; Cooked Raw(0));
spanless_eq_enum!(StructRest; Base(0) Rest(0) None);
spanless_eq_enum!(Term; Ty(0) Const(0));
-spanless_eq_enum!(TokenTree; Token(0) Delimited(0 1 2));
+spanless_eq_enum!(TokenTree; Token(0 1) Delimited(0 1 2));
spanless_eq_enum!(TraitBoundModifier; None Maybe MaybeConst MaybeConstMaybe);
-spanless_eq_enum!(TraitObjectSyntax; Dyn None);
+spanless_eq_enum!(TraitObjectSyntax; Dyn DynStar None);
spanless_eq_enum!(UintTy; Usize U8 U16 U32 U64 U128);
spanless_eq_enum!(UnOp; Deref Not Neg);
spanless_eq_enum!(Unsafe; Yes(0) No);
spanless_eq_enum!(UnsafeSource; CompilerGenerated UserProvided);
spanless_eq_enum!(UseTreeKind; Simple(0 1 2) Nested(0) Glob);
spanless_eq_enum!(VariantData; Struct(0 1) Tuple(0 1) Unit(0));
-spanless_eq_enum!(VisibilityKind; Public Restricted(path id) Inherited);
+spanless_eq_enum!(VisibilityKind; Public Restricted(path id shorthand) Inherited);
spanless_eq_enum!(WherePredicate; BoundPredicate(0) RegionPredicate(0) EqPredicate(0));
spanless_eq_enum!(ExprKind; Box(0) Array(0) ConstBlock(0) Call(0 1)
- MethodCall(0 1 2) Tup(0) Binary(0 1 2) Unary(0 1) Lit(0) Cast(0 1) Type(0 1)
- Let(0 1 2) If(0 1 2) While(0 1 2) ForLoop(0 1 2 3) Loop(0 1) Match(0 1)
- Closure(0 1 2 3 4 5) Block(0 1) Async(0 1 2) Await(0) TryBlock(0)
- Assign(0 1 2) AssignOp(0 1 2) Field(0 1) Index(0 1) Underscore Range(0 1 2)
- Path(0 1) AddrOf(0 1 2) Break(0 1) Continue(0) Ret(0) InlineAsm(0)
- MacCall(0) Struct(0) Repeat(0 1) Paren(0) Try(0) Yield(0) Yeet(0) Err);
+ MethodCall(0 1 2 3) Tup(0) Binary(0 1 2) Unary(0 1) Lit(0) Cast(0 1)
+ Type(0 1) Let(0 1 2) If(0 1 2) While(0 1 2) ForLoop(0 1 2 3) Loop(0 1)
+ Match(0 1) Closure(0 1 2 3 4 5 6) Block(0 1) Async(0 1 2) Await(0)
+ TryBlock(0) Assign(0 1 2) AssignOp(0 1 2) Field(0 1) Index(0 1) Underscore
+ Range(0 1 2) Path(0 1) AddrOf(0 1 2) Break(0 1) Continue(0) Ret(0)
+ InlineAsm(0) MacCall(0) Struct(0) Repeat(0 1) Paren(0) Try(0) Yield(0)
+ Yeet(0) Err);
spanless_eq_enum!(InlineAsmOperand; In(reg expr) Out(reg late expr)
InOut(reg late expr) SplitInOut(reg late in_expr out_expr) Const(anon_const)
Sym(sym));
@@ -523,7 +531,7 @@ spanless_eq_enum!(ItemKind; ExternCrate(0) Use(0) Static(0 1 2) Const(0 1 2)
Fn(0) Mod(0 1) ForeignMod(0) GlobalAsm(0) TyAlias(0) Enum(0 1) Struct(0 1)
Union(0 1) Trait(0) TraitAlias(0 1) Impl(0) MacCall(0) MacroDef(0));
spanless_eq_enum!(LitKind; Str(0 1) ByteStr(0) Byte(0) Char(0) Int(0 1)
- Float(0 1) Bool(0) Err(0));
+ Float(0 1) Bool(0) Err);
spanless_eq_enum!(PatKind; Wild Ident(0 1 2) Struct(0 1 2 3) TupleStruct(0 1 2)
Or(0) Path(0 1) Tuple(0) Box(0) Ref(0 1) Lit(0) Range(0 1 2) Slice(0) Rest
Paren(0) MacCall(0));
@@ -610,7 +618,7 @@ impl SpanlessEq for TokenStream {
if SpanlessEq::eq(this, other) {
continue;
}
- if let (TokenTree::Token(this), TokenTree::Token(other)) = (this, other) {
+ if let (TokenTree::Token(this, _), TokenTree::Token(other, _)) = (this, other) {
if match (&this.kind, &other.kind) {
(TokenKind::Literal(this), TokenKind::Literal(other)) => {
SpanlessEq::eq(this, other)
@@ -641,10 +649,13 @@ fn doc_comment<'a>(
AttrStyle::Inner => true,
} {
match trees.next() {
- Some(TokenTree::Token(Token {
- kind: TokenKind::Not,
- span: _,
- })) => {}
+ Some(TokenTree::Token(
+ Token {
+ kind: TokenKind::Not,
+ span: _,
+ },
+ _spacing,
+ )) => {}
_ => return false,
}
}
@@ -654,21 +665,27 @@ fn doc_comment<'a>(
};
let mut trees = stream.trees();
match trees.next() {
- Some(TokenTree::Token(Token {
- kind: TokenKind::Ident(symbol, false),
- span: _,
- })) if *symbol == sym::doc => {}
+ Some(TokenTree::Token(
+ Token {
+ kind: TokenKind::Ident(symbol, false),
+ span: _,
+ },
+ _spacing,
+ )) if *symbol == sym::doc => {}
_ => return false,
}
match trees.next() {
- Some(TokenTree::Token(Token {
- kind: TokenKind::Eq,
- span: _,
- })) => {}
+ Some(TokenTree::Token(
+ Token {
+ kind: TokenKind::Eq,
+ span: _,
+ },
+ _spacing,
+ )) => {}
_ => return false,
}
match trees.next() {
- Some(TokenTree::Token(token)) => {
+ Some(TokenTree::Token(token, _spacing)) => {
is_escaped_literal_token(token, unescaped) && trees.next().is_none()
}
_ => false,
@@ -680,7 +697,7 @@ fn is_escaped_literal_token(token: &Token, unescaped: Symbol) -> bool {
Token {
kind: TokenKind::Literal(lit),
span: _,
- } => match Lit::from_lit_token(*lit, DUMMY_SP) {
+ } => match Lit::from_token_lit(*lit, DUMMY_SP) {
Ok(lit) => is_escaped_literal(&lit, unescaped),
Err(_) => false,
},
@@ -711,7 +728,7 @@ fn is_escaped_literal_macro_arg(arg: &MacArgsEq, unescaped: Symbol) -> bool {
fn is_escaped_literal(lit: &Lit, unescaped: Symbol) -> bool {
match lit {
Lit {
- token:
+ token_lit:
token::Lit {
kind: token::LitKind::Str,
symbol: _,
@@ -724,10 +741,10 @@ fn is_escaped_literal(lit: &Lit, unescaped: Symbol) -> bool {
}
}
-impl SpanlessEq for LazyTokenStream {
+impl SpanlessEq for LazyAttrTokenStream {
fn eq(&self, other: &Self) -> bool {
- let this = self.create_token_stream();
- let other = other.create_token_stream();
+ let this = self.to_attr_token_stream();
+ let other = other.to_attr_token_stream();
SpanlessEq::eq(&this, &other)
}
}
@@ -735,26 +752,26 @@ impl SpanlessEq for LazyTokenStream {
impl SpanlessEq for AttrKind {
fn eq(&self, other: &Self) -> bool {
match (self, other) {
- (AttrKind::Normal(item, tokens), AttrKind::Normal(item2, tokens2)) => {
- SpanlessEq::eq(item, item2) && SpanlessEq::eq(tokens, tokens2)
+ (AttrKind::Normal(normal), AttrKind::Normal(normal2)) => {
+ SpanlessEq::eq(normal, normal2)
}
(AttrKind::DocComment(kind, symbol), AttrKind::DocComment(kind2, symbol2)) => {
SpanlessEq::eq(kind, kind2) && SpanlessEq::eq(symbol, symbol2)
}
- (AttrKind::DocComment(kind, unescaped), AttrKind::Normal(item2, _tokens)) => {
+ (AttrKind::DocComment(kind, unescaped), AttrKind::Normal(normal2)) => {
match kind {
CommentKind::Line | CommentKind::Block => {}
}
let path = Path::from_ident(Ident::with_dummy_span(sym::doc));
- SpanlessEq::eq(&path, &item2.path)
- && match &item2.args {
+ SpanlessEq::eq(&path, &normal2.item.path)
+ && match &normal2.item.args {
MacArgs::Empty | MacArgs::Delimited(..) => false,
MacArgs::Eq(_span, token) => {
is_escaped_literal_macro_arg(token, *unescaped)
}
}
}
- (AttrKind::Normal(..), AttrKind::DocComment(..)) => SpanlessEq::eq(other, self),
+ (AttrKind::Normal(_), AttrKind::DocComment(..)) => SpanlessEq::eq(other, self),
}
}
}
diff --git a/vendor/syn/tests/debug/gen.rs b/vendor/syn/tests/debug/gen.rs
index a49ee6c92..cfd63d117 100644
--- a/vendor/syn/tests/debug/gen.rs
+++ b/vendor/syn/tests/debug/gen.rs
@@ -2215,22 +2215,22 @@ impl Debug for Lite<syn::GenericArgument> {
formatter.write_str(")")?;
Ok(())
}
- syn::GenericArgument::Binding(_val) => {
- formatter.write_str("Binding")?;
+ syn::GenericArgument::Const(_val) => {
+ formatter.write_str("Const")?;
formatter.write_str("(")?;
Debug::fmt(Lite(_val), formatter)?;
formatter.write_str(")")?;
Ok(())
}
- syn::GenericArgument::Constraint(_val) => {
- formatter.write_str("Constraint")?;
+ syn::GenericArgument::Binding(_val) => {
+ formatter.write_str("Binding")?;
formatter.write_str("(")?;
Debug::fmt(Lite(_val), formatter)?;
formatter.write_str(")")?;
Ok(())
}
- syn::GenericArgument::Const(_val) => {
- formatter.write_str("Const")?;
+ syn::GenericArgument::Constraint(_val) => {
+ formatter.write_str("Constraint")?;
formatter.write_str("(")?;
Debug::fmt(Lite(_val), formatter)?;
formatter.write_str(")")?;
diff --git a/vendor/syn/tests/regression/issue1108.rs b/vendor/syn/tests/regression/issue1108.rs
index 11a82adaa..4fd30c0c7 100644
--- a/vendor/syn/tests/regression/issue1108.rs
+++ b/vendor/syn/tests/regression/issue1108.rs
@@ -1,5 +1,5 @@
#[test]
fn issue1108() {
let data = "impl<x<>>::x for";
- let _ = syn::parse_file(data);
+ _ = syn::parse_file(data);
}
diff --git a/vendor/syn/tests/repo/mod.rs b/vendor/syn/tests/repo/mod.rs
index 0bafe6714..4c7be853b 100644
--- a/vendor/syn/tests/repo/mod.rs
+++ b/vendor/syn/tests/repo/mod.rs
@@ -10,10 +10,10 @@ use std::path::Path;
use tar::Archive;
use walkdir::DirEntry;
-const REVISION: &str = "ee160f2f5e73b6f5954bc33f059c316d9e8582c4";
+const REVISION: &str = "98ad6a5519651af36e246c0335c964dd52c554ba";
#[rustfmt::skip]
-static EXCLUDE: &[&str] = &[
+static EXCLUDE_FILES: &[&str] = &[
// TODO: impl ~const T {}
// https://github.com/dtolnay/syn/issues/1051
"src/test/ui/rfc-2632-const-trait-impl/syntax.rs",
@@ -33,6 +33,21 @@ static EXCLUDE: &[&str] = &[
"src/tools/rustfmt/tests/source/trait.rs",
"src/tools/rustfmt/tests/target/trait.rs",
+ // Various extensions to Rust syntax made up by rust-analyzer
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0012_type_item_where_clause.rs",
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0040_crate_keyword_vis.rs",
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0131_existential_type.rs",
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0179_use_tree_abs_star.rs",
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/inline/ok/0188_const_param_default_path.rs",
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/ok/0015_use_tree.rs",
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/ok/0029_range_forms.rs",
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/ok/0051_parameter_attrs.rs",
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/ok/0055_dot_dot_dot.rs",
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/ok/0068_item_modifiers.rs",
+ "src/tools/rust-analyzer/crates/syntax/test_data/parser/validation/0031_block_inner_attrs.rs",
+ "src/tools/rust-analyzer/crates/syntax/test_data/parser/validation/0045_ambiguous_trait_object.rs",
+ "src/tools/rust-analyzer/crates/syntax/test_data/parser/validation/0046_mutable_const_item.rs",
+
// Placeholder syntax for "throw expressions"
"src/test/pretty/yeet-expr.rs",
"src/test/ui/try-trait/yeet-for-option.rs",
@@ -41,7 +56,9 @@ static EXCLUDE: &[&str] = &[
// Excessive nesting
"src/test/ui/issues/issue-74564-if-expr-stack-overflow.rs",
- // Testing rustfmt on invalid syntax
+ // Testing tools on invalid syntax
+ "src/test/run-make/translation/test.rs",
+ "src/test/ui/generics/issue-94432-garbage-ice.rs",
"src/tools/rustfmt/tests/coverage/target/comments.rs",
"src/tools/rustfmt/tests/parser/issue-4126/invalid.rs",
"src/tools/rustfmt/tests/parser/issue_4418.rs",
@@ -54,8 +71,8 @@ static EXCLUDE: &[&str] = &[
"src/tools/rustfmt/tests/target/configs/spaces_around_ranges/true.rs",
"src/tools/rustfmt/tests/target/type.rs",
- // Testing compiler diagnostic localization on invalid syntax
- "src/test/run-make/translation/basic-translation.rs",
+ // Generated file containing a top-level expression, used with `include!`
+ "compiler/rustc_codegen_gcc/src/intrinsic/archs.rs",
// Clippy lint lists represented as expressions
"src/tools/clippy/clippy_lints/src/lib.deprecated.rs",
@@ -73,9 +90,6 @@ static EXCLUDE: &[&str] = &[
"src/tools/clippy/clippy_lints/src/lib.register_suspicious.rs",
// Not actually test cases
- "src/test/rustdoc-ui/test-compile-fail2.rs",
- "src/test/rustdoc-ui/test-compile-fail3.rs",
- "src/test/ui/json-bom-plus-crlf-multifile-aux.rs",
"src/test/ui/lint/expansion-time-include.rs",
"src/test/ui/macros/auxiliary/macro-comma-support.rs",
"src/test/ui/macros/auxiliary/macro-include-items-expr.rs",
@@ -84,38 +98,52 @@ static EXCLUDE: &[&str] = &[
"src/test/ui/parser/issues/auxiliary/issue-21146-inc.rs",
];
+#[rustfmt::skip]
+static EXCLUDE_DIRS: &[&str] = &[
+ // Inputs that intentionally do not parse
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/err",
+ "src/tools/rust-analyzer/crates/parser/test_data/parser/inline/err",
+
+ // Inputs that lex but do not necessarily parse
+ "src/tools/rust-analyzer/crates/parser/test_data/lexer",
+
+ // Inputs that used to crash rust-analyzer, but aren't necessarily supposed to parse
+ "src/tools/rust-analyzer/crates/syntax/test_data/parser/fuzz-failures",
+ "src/tools/rust-analyzer/crates/syntax/test_data/reparse/fuzz-failures",
+];
+
pub fn base_dir_filter(entry: &DirEntry) -> bool {
let path = entry.path();
- if path.is_dir() {
- return true; // otherwise walkdir does not visit the files
- }
- if path.extension().map_or(true, |e| e != "rs") {
- return false;
- }
let mut path_string = path.to_string_lossy();
if cfg!(windows) {
path_string = path_string.replace('\\', "/").into();
}
- let path = if let Some(path) = path_string.strip_prefix("tests/rust/") {
+ let path_string = if path_string == "tests/rust" {
+ return true;
+ } else if let Some(path) = path_string.strip_prefix("tests/rust/") {
path
} else {
panic!("unexpected path in Rust dist: {}", path_string);
};
- if path.starts_with("src/test/compile-fail") || path.starts_with("src/test/rustfix") {
+ if path.is_dir() {
+ return !EXCLUDE_DIRS.contains(&path_string);
+ }
+
+ if path.extension().map_or(true, |e| e != "rs") {
return false;
}
- if path.starts_with("src/test/ui") {
- let stderr_path = entry.path().with_extension("stderr");
+ if path_string.starts_with("src/test/ui") || path_string.starts_with("src/test/rustdoc-ui") {
+ let stderr_path = path.with_extension("stderr");
if stderr_path.exists() {
// Expected to fail in some way
return false;
}
}
- !EXCLUDE.contains(&path)
+ !EXCLUDE_FILES.contains(&path_string)
}
#[allow(dead_code)]
@@ -137,10 +165,17 @@ pub fn clone_rust() {
}
let mut missing = String::new();
let test_src = Path::new("tests/rust");
- for exclude in EXCLUDE {
- if !test_src.join(exclude).exists() {
+ for exclude in EXCLUDE_FILES {
+ if !test_src.join(exclude).is_file() {
+ missing += "\ntests/rust/";
+ missing += exclude;
+ }
+ }
+ for exclude in EXCLUDE_DIRS {
+ if !test_src.join(exclude).is_dir() {
missing += "\ntests/rust/";
missing += exclude;
+ missing += "/";
}
}
if !missing.is_empty() {
diff --git a/vendor/syn/tests/test_derive_input.rs b/vendor/syn/tests/test_derive_input.rs
index 93634e577..1eff01186 100644
--- a/vendor/syn/tests/test_derive_input.rs
+++ b/vendor/syn/tests/test_derive_input.rs
@@ -1,4 +1,4 @@
-#![allow(clippy::too_many_lines)]
+#![allow(clippy::assertions_on_result_states, clippy::too_many_lines)]
#[macro_use]
mod macros;
diff --git a/vendor/syn/tests/test_parse_stream.rs b/vendor/syn/tests/test_parse_stream.rs
index 76bd06577..cc14fa032 100644
--- a/vendor/syn/tests/test_parse_stream.rs
+++ b/vendor/syn/tests/test_parse_stream.rs
@@ -4,9 +4,9 @@ use syn::{Ident, Token};
#[test]
fn test_peek() {
- let _ = |input: ParseStream| {
- let _ = input.peek(Ident);
- let _ = input.peek(Ident::peek_any);
- let _ = input.peek(Token![::]);
+ _ = |input: ParseStream| {
+ _ = input.peek(Ident);
+ _ = input.peek(Ident::peek_any);
+ _ = input.peek(Token![::]);
};
}
diff --git a/vendor/syn/tests/test_precedence.rs b/vendor/syn/tests/test_precedence.rs
index bd273a565..dbcd74f16 100644
--- a/vendor/syn/tests/test_precedence.rs
+++ b/vendor/syn/tests/test_precedence.rs
@@ -24,6 +24,7 @@
extern crate rustc_ast;
extern crate rustc_data_structures;
extern crate rustc_span;
+extern crate thin_vec;
use crate::common::eq::SpanlessEq;
use crate::common::parse;
@@ -207,10 +208,10 @@ fn librustc_brackets(mut librustc_expr: P<ast::Expr>) -> Option<P<ast::Expr>> {
};
use rustc_ast::mut_visit::{noop_visit_generic_arg, noop_visit_local, MutVisitor};
use rustc_data_structures::map_in_place::MapInPlace;
- use rustc_data_structures::thin_vec::ThinVec;
use rustc_span::DUMMY_SP;
use std::mem;
use std::ops::DerefMut;
+ use thin_vec::ThinVec;
struct BracketsVisitor {
failed: bool,
@@ -243,7 +244,7 @@ fn librustc_brackets(mut librustc_expr: P<ast::Expr>) -> Option<P<ast::Expr>> {
}
fn noop_visit_expr<T: MutVisitor>(e: &mut Expr, vis: &mut T) {
- use rustc_ast::mut_visit::{noop_visit_expr, visit_thin_attrs};
+ use rustc_ast::mut_visit::{noop_visit_expr, visit_attrs};
match &mut e.kind {
ExprKind::AddrOf(BorrowKind::Raw, ..) => {}
ExprKind::Struct(expr) => {
@@ -261,7 +262,7 @@ fn librustc_brackets(mut librustc_expr: P<ast::Expr>) -> Option<P<ast::Expr>> {
}
vis.visit_id(&mut e.id);
vis.visit_span(&mut e.span);
- visit_thin_attrs(&mut e.attrs, vis);
+ visit_attrs(&mut e.attrs, vis);
}
_ => noop_visit_expr(e, vis),
}
@@ -322,15 +323,15 @@ fn librustc_brackets(mut librustc_expr: P<ast::Expr>) -> Option<P<ast::Expr>> {
// types yet. We'll look into comparing those in the future. For now
// focus on expressions appearing in other places.
fn visit_pat(&mut self, pat: &mut P<Pat>) {
- let _ = pat;
+ _ = pat;
}
fn visit_ty(&mut self, ty: &mut P<Ty>) {
- let _ = ty;
+ _ = ty;
}
fn visit_attribute(&mut self, attr: &mut Attribute) {
- let _ = attr;
+ _ = attr;
}
}
@@ -426,7 +427,7 @@ fn syn_brackets(syn_expr: syn::Expr) -> syn::Expr {
fn collect_exprs(file: syn::File) -> Vec<syn::Expr> {
use syn::fold::Fold;
use syn::punctuated::Punctuated;
- use syn::{token, Expr, ExprTuple, Path};
+ use syn::{token, ConstParam, Expr, ExprTuple, Path};
struct CollectExprs(Vec<Expr>);
impl Fold for CollectExprs {
@@ -447,6 +448,10 @@ fn collect_exprs(file: syn::File) -> Vec<syn::Expr> {
// Skip traversing into const generic path arguments
path
}
+
+ fn fold_const_param(&mut self, const_param: ConstParam) -> ConstParam {
+ const_param
+ }
}
let mut folder = CollectExprs(vec![]);
diff --git a/vendor/syn/tests/test_size.rs b/vendor/syn/tests/test_size.rs
index e172df2bc..02b0700f0 100644
--- a/vendor/syn/tests/test_size.rs
+++ b/vendor/syn/tests/test_size.rs
@@ -5,17 +5,17 @@ use syn::{Expr, Item, Lit, Pat, Type};
#[test]
fn test_expr_size() {
- assert_eq!(mem::size_of::<Expr>(), 280);
+ assert_eq!(mem::size_of::<Expr>(), 264);
}
#[test]
fn test_item_size() {
- assert_eq!(mem::size_of::<Item>(), 344);
+ assert_eq!(mem::size_of::<Item>(), 320);
}
#[test]
fn test_type_size() {
- assert_eq!(mem::size_of::<Type>(), 304);
+ assert_eq!(mem::size_of::<Type>(), 280);
}
#[test]
@@ -25,5 +25,5 @@ fn test_pat_size() {
#[test]
fn test_lit_size() {
- assert_eq!(mem::size_of::<Lit>(), 40);
+ assert_eq!(mem::size_of::<Lit>(), 32);
}
diff --git a/vendor/syn/tests/test_stmt.rs b/vendor/syn/tests/test_stmt.rs
index 0bca62b04..f444e5b49 100644
--- a/vendor/syn/tests/test_stmt.rs
+++ b/vendor/syn/tests/test_stmt.rs
@@ -1,4 +1,4 @@
-#![allow(clippy::non_ascii_literal)]
+#![allow(clippy::assertions_on_result_states, clippy::non_ascii_literal)]
#[macro_use]
mod macros;
diff --git a/vendor/thin-vec/.cargo-checksum.json b/vendor/thin-vec/.cargo-checksum.json
new file mode 100644
index 000000000..fc4888d7f
--- /dev/null
+++ b/vendor/thin-vec/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"Cargo.toml":"596cca0e2a5b1abe635e3fcdd3fa1f5f7256a5f2abf63b9c6bba0cce32258b02","README.md":"9f102f13ccbabe9cdec7a206aa298d65e33dea84da9f08dd17b358ff44fe0286","src/lib.rs":"d6300952a66dc289328a464b466f4b281272b133e42e20e1e2cd0e6f8690087d"},"package":"104c2cb3180b6fb6d5b2278768e9b88b578d32ba751ea6e8d026688a40d7ed87"} \ No newline at end of file
diff --git a/vendor/thin-vec/Cargo.toml b/vendor/thin-vec/Cargo.toml
new file mode 100644
index 000000000..38908830d
--- /dev/null
+++ b/vendor/thin-vec/Cargo.toml
@@ -0,0 +1,33 @@
+# 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 = "2018"
+name = "thin-vec"
+version = "0.2.8"
+authors = ["Aria Beingessner <a.beingessner@gmail.com>"]
+description = "A vec that takes up less space on the stack"
+homepage = "https://github.com/gankra/thin-vec"
+readme = "README.md"
+license = "MIT/Apache-2.0"
+repository = "https://github.com/gankra/thin-vec"
+
+[dependencies.serde]
+version = "1.0"
+optional = true
+
+[dev-dependencies.serde_test]
+version = "1.0"
+
+[features]
+default = []
+gecko-ffi = []
+unstable = []
diff --git a/vendor/thin-vec/README.md b/vendor/thin-vec/README.md
new file mode 100644
index 000000000..e8a8c90a2
--- /dev/null
+++ b/vendor/thin-vec/README.md
@@ -0,0 +1,9 @@
+![Rust CI](https://github.com/Gankra/thin-vec/workflows/Rust/badge.svg?branch=master) [![crates.io](https://img.shields.io/crates/v/thin-vec.svg)](https://crates.io/crates/thin-vec) [![](https://docs.rs/thin-vec/badge.svg)](https://docs.rs/thin-vec)
+
+# thin-vec
+
+ThinVec is a Vec that stores its length and capacity inline, making it take up
+less space.
+
+Currently this crate mostly exists to facilitate Gecko (Firefox) FFI, but it
+works perfectly fine as a native rust library as well.
diff --git a/vendor/thin-vec/src/lib.rs b/vendor/thin-vec/src/lib.rs
new file mode 100644
index 000000000..60785150e
--- /dev/null
+++ b/vendor/thin-vec/src/lib.rs
@@ -0,0 +1,3117 @@
+//! ThinVec is exactly the same as Vec, except that it stores its `len` and `capacity` in the buffer
+//! it allocates.
+//!
+//! This makes the memory footprint of ThinVecs lower; notably in cases where space is reserved for
+//! a non-existence ThinVec<T>. So `Vec<ThinVec<T>>` and `Option<ThinVec<T>>::None` will waste less
+//! space. Being pointer-sized also means it can be passed/stored in registers.
+//!
+//! Of course, any actually constructed ThinVec will theoretically have a bigger allocation, but
+//! the fuzzy nature of allocators means that might not actually be the case.
+//!
+//! Properties of Vec that are preserved:
+//! * `ThinVec::new()` doesn't allocate (it points to a statically allocated singleton)
+//! * reallocation can be done in place
+//! * `size_of::<ThinVec<T>>()` == `size_of::<Option<ThinVec<T>>>()`
+//!
+//! Properties of Vec that aren't preserved:
+//! * `ThinVec<T>` can't ever be zero-cost roundtripped to a `Box<[T]>`, `String`, or `*mut T`
+//! * `from_raw_parts` doesn't exist
+//! * ThinVec currently doesn't bother to not-allocate for Zero Sized Types (e.g. `ThinVec<()>`),
+//! but it could be done if someone cared enough to implement it.
+//!
+//!
+//!
+//! # Gecko FFI
+//!
+//! If you enable the gecko-ffi feature, ThinVec will verbatim bridge with the nsTArray type in
+//! Gecko (Firefox). That is, ThinVec and nsTArray have identical layouts *but not ABIs*,
+//! so nsTArrays/ThinVecs an be natively manipulated by C++ and Rust, and ownership can be
+//! transferred across the FFI boundary (**IF YOU ARE CAREFUL, SEE BELOW!!**).
+//!
+//! While this feature is handy, it is also inherently dangerous to use because Rust and C++ do not
+//! know about each other. Specifically, this can be an issue with non-POD types (types which
+//! have destructors, move constructors, or are `!Copy`).
+//!
+//! ## Do Not Pass By Value
+//!
+//! The biggest thing to keep in mind is that **FFI functions cannot pass ThinVec/nsTArray
+//! by-value**. That is, these are busted APIs:
+//!
+//! ```rust,ignore
+//! // BAD WRONG
+//! extern fn process_data(data: ThinVec<u32>) { ... }
+//! // BAD WRONG
+//! extern fn get_data() -> ThinVec<u32> { ... }
+//! ```
+//!
+//! You must instead pass by-reference:
+//!
+//! ```rust
+//! # use thin_vec::*;
+//! # use std::mem;
+//!
+//! // Read-only access, ok!
+//! extern fn process_data(data: &ThinVec<u32>) {
+//! for val in data {
+//! println!("{}", val);
+//! }
+//! }
+//!
+//! // Replace with empty instance to take ownership, ok!
+//! extern fn consume_data(data: &mut ThinVec<u32>) {
+//! let owned = mem::replace(data, ThinVec::new());
+//! mem::drop(owned);
+//! }
+//!
+//! // Mutate input, ok!
+//! extern fn add_data(dataset: &mut ThinVec<u32>) {
+//! dataset.push(37);
+//! dataset.push(12);
+//! }
+//!
+//! // Return via out-param, usually ok!
+//! //
+//! // WARNING: output must be initialized! (Empty nsTArrays are free, so just do it!)
+//! extern fn get_data(output: &mut ThinVec<u32>) {
+//! *output = thin_vec![1, 2, 3, 4, 5];
+//! }
+//! ```
+//!
+//! Ignorable Explanation For Those Who Really Want To Know Why:
+//!
+//! > The fundamental issue is that Rust and C++ can't currently communicate about destructors, and
+//! > the semantics of C++ require destructors of function arguments to be run when the function
+//! > returns. Whether the callee or caller is responsible for this is also platform-specific, so
+//! > trying to hack around it manually would be messy.
+//! >
+//! > Also a type having a destructor changes its C++ ABI, because that type must actually exist
+//! > in memory (unlike a trivial struct, which is often passed in registers). We don't currently
+//! > have a way to communicate to Rust that this is happening, so even if we worked out the
+//! > destructor issue with say, MaybeUninit, it would still be a non-starter without some RFCs
+//! > to add explicit rustc support.
+//! >
+//! > Realistically, the best answer here is to have a "heavier" bindgen that can secretly
+//! > generate FFI glue so we can pass things "by value" and have it generate by-reference code
+//! > behind our back (like the cxx crate does). This would muddy up debugging/searchfox though.
+//!
+//! ## Types Should Be Trivially Relocatable
+//!
+//! Types in Rust are always trivially relocatable (unless suitably borrowed/[pinned][]/hidden).
+//! This means all Rust types are legal to relocate with a bitwise copy, you cannot provide
+//! copy or move constructors to execute when this happens, and the old location won't have its
+//! destructor run. This will cause problems for types which have a significant location
+//! (types that intrusively point into themselves or have their location registered with a service).
+//!
+//! While relocations are generally predictable if you're very careful, **you should avoid using
+//! types with significant locations with Rust FFI**.
+//!
+//! Specifically, ThinVec will trivially relocate its contents whenever it needs to reallocate its
+//! buffer to change its capacity. This is the default reallocation strategy for nsTArray, and is
+//! suitable for the vast majority of types. Just be aware of this limitation!
+//!
+//! ## Auto Arrays Are Dangerous
+//!
+//! ThinVec has *some* support for handling auto arrays which store their buffer on the stack,
+//! but this isn't well tested.
+//!
+//! Regardless of how much support we provide, Rust won't be aware of the buffer's limited lifetime,
+//! so standard auto array safety caveats apply about returning/storing them! ThinVec won't ever
+//! produce an auto array on its own, so this is only an issue for transferring an nsTArray into
+//! Rust.
+//!
+//! ## Other Issues
+//!
+//! Standard FFI caveats also apply:
+//!
+//! * Rust is more strict about POD types being initialized (use MaybeUninit if you must)
+//! * `ThinVec<T>` has no idea if the C++ version of `T` has move/copy/assign/delete overloads
+//! * `nsTArray<T>` has no idea if the Rust version of `T` has a Drop/Clone impl
+//! * C++ can do all sorts of unsound things that Rust can't catch
+//! * C++ and Rust don't agree on how zero-sized/empty types should be handled
+//!
+//! The gecko-ffi feature will not work if you aren't linking with code that has nsTArray
+//! defined. Specifically, we must share the symbol for nsTArray's empty singleton. You will get
+//! linking errors if that isn't defined.
+//!
+//! The gecko-ffi feature also limits ThinVec to the legacy behaviors of nsTArray. Most notably,
+//! nsTArray has a maximum capacity of i32::MAX (~2.1 billion items). Probably not an issue.
+//! Probably.
+//!
+//! [pinned]: https://doc.rust-lang.org/std/pin/index.html
+
+#![allow(clippy::comparison_chain, clippy::missing_safety_doc)]
+
+use std::alloc::*;
+use std::borrow::*;
+use std::cmp::*;
+use std::hash::*;
+use std::iter::FromIterator;
+use std::marker::PhantomData;
+use std::ops::Bound;
+use std::ops::{Deref, DerefMut, RangeBounds};
+use std::ptr::NonNull;
+use std::slice::IterMut;
+use std::{fmt, io, mem, ptr, slice};
+
+use impl_details::*;
+
+// modules: a simple way to cfg a whole bunch of impl details at once
+
+#[cfg(not(feature = "gecko-ffi"))]
+mod impl_details {
+ pub type SizeType = usize;
+ pub const MAX_CAP: usize = !0;
+
+ #[inline(always)]
+ pub fn assert_size(x: usize) -> SizeType {
+ x
+ }
+}
+
+#[cfg(feature = "gecko-ffi")]
+mod impl_details {
+ // Support for briding a gecko nsTArray verbatim into a ThinVec.
+ //
+ // ThinVec can't see copy/move/delete implementations
+ // from C++
+ //
+ // The actual layout of an nsTArray is:
+ //
+ // ```cpp
+ // struct {
+ // uint32_t mLength;
+ // uint32_t mCapacity: 31;
+ // uint32_t mIsAutoArray: 1;
+ // }
+ // ```
+ //
+ // Rust doesn't natively support bit-fields, so we manually mask
+ // and shift the bit. When the "auto" bit is set, the header and buffer
+ // are actually on the stack, meaning the ThinVec pointer-to-header
+ // is essentially an "owned borrow", and therefore dangerous to handle.
+ // There are no safety guards for this situation.
+ //
+ // On little-endian platforms, the auto bit will be the high-bit of
+ // our capacity u32. On big-endian platforms, it will be the low bit.
+ // Hence we need some platform-specific CFGs for the necessary masking/shifting.
+ //
+ // ThinVec won't ever construct an auto array. They only happen when
+ // bridging from C++. This means we don't need to ever set/preserve the bit.
+ // We just need to be able to read and handle it if it happens to be there.
+ //
+ // Handling the auto bit mostly just means not freeing/reallocating the buffer.
+
+ pub type SizeType = u32;
+
+ pub const MAX_CAP: usize = i32::max_value() as usize;
+
+ // Little endian: the auto bit is the high bit, and the capacity is
+ // verbatim. So we just need to mask off the high bit. Note that
+ // this masking is unnecessary when packing, because assert_size
+ // guards against the high bit being set.
+ #[cfg(target_endian = "little")]
+ pub fn pack_capacity(cap: SizeType) -> SizeType {
+ cap as SizeType
+ }
+ #[cfg(target_endian = "little")]
+ pub fn unpack_capacity(cap: SizeType) -> usize {
+ (cap as usize) & !(1 << 31)
+ }
+ #[cfg(target_endian = "little")]
+ pub fn is_auto(cap: SizeType) -> bool {
+ (cap & (1 << 31)) != 0
+ }
+
+ // Big endian: the auto bit is the low bit, and the capacity is
+ // shifted up one bit. Masking out the auto bit is unnecessary,
+ // as rust shifts always shift in 0's for unsigned integers.
+ #[cfg(target_endian = "big")]
+ pub fn pack_capacity(cap: SizeType) -> SizeType {
+ (cap as SizeType) << 1
+ }
+ #[cfg(target_endian = "big")]
+ pub fn unpack_capacity(cap: SizeType) -> usize {
+ (cap >> 1) as usize
+ }
+ #[cfg(target_endian = "big")]
+ pub fn is_auto(cap: SizeType) -> bool {
+ (cap & 1) != 0
+ }
+
+ #[inline]
+ pub fn assert_size(x: usize) -> SizeType {
+ if x > MAX_CAP as usize {
+ panic!("nsTArray size may not exceed the capacity of a 32-bit sized int");
+ }
+ x as SizeType
+ }
+}
+
+// The header of a ThinVec.
+//
+// The _cap can be a bitfield, so use accessors to avoid trouble.
+//
+// In "real" gecko-ffi mode, the empty singleton will be aligned
+// to 8 by gecko. But in tests we have to provide the singleton
+// ourselves, and Rust makes it hard to "just" align a static.
+// To avoid messing around with a wrapper type around the
+// singleton *just* for tests, we just force all headers to be
+// aligned to 8 in this weird "zombie" gecko mode.
+//
+// This shouldn't affect runtime layout (padding), but it will
+// result in us asking the allocator to needlessly overalign
+// non-empty ThinVecs containing align < 8 types in
+// zombie-mode, but not in "real" geck-ffi mode. Minor.
+#[cfg_attr(all(feature = "gecko-ffi", any(test, miri)), repr(align(8)))]
+#[repr(C)]
+struct Header {
+ _len: SizeType,
+ _cap: SizeType,
+}
+
+impl Header {
+ fn len(&self) -> usize {
+ self._len as usize
+ }
+
+ fn set_len(&mut self, len: usize) {
+ self._len = assert_size(len);
+ }
+}
+
+#[cfg(feature = "gecko-ffi")]
+impl Header {
+ fn cap(&self) -> usize {
+ unpack_capacity(self._cap)
+ }
+
+ fn set_cap(&mut self, cap: usize) {
+ // debug check that our packing is working
+ debug_assert_eq!(unpack_capacity(pack_capacity(cap as SizeType)), cap);
+ // FIXME: this assert is busted because it reads uninit memory
+ // debug_assert!(!self.uses_stack_allocated_buffer());
+
+ // NOTE: this always stores a cleared auto bit, because set_cap
+ // is only invoked by Rust, and Rust doesn't create auto arrays.
+ self._cap = pack_capacity(assert_size(cap));
+ }
+
+ fn uses_stack_allocated_buffer(&self) -> bool {
+ is_auto(self._cap)
+ }
+}
+
+#[cfg(not(feature = "gecko-ffi"))]
+impl Header {
+ fn cap(&self) -> usize {
+ self._cap as usize
+ }
+
+ fn set_cap(&mut self, cap: usize) {
+ self._cap = assert_size(cap);
+ }
+}
+
+/// Singleton that all empty collections share.
+/// Note: can't store non-zero ZSTs, we allocate in that case. We could
+/// optimize everything to not do that (basically, make ptr == len and branch
+/// on size == 0 in every method), but it's a bunch of work for something that
+/// doesn't matter much.
+#[cfg(any(not(feature = "gecko-ffi"), test, miri))]
+static EMPTY_HEADER: Header = Header { _len: 0, _cap: 0 };
+
+#[cfg(all(feature = "gecko-ffi", not(test), not(miri)))]
+extern "C" {
+ #[link_name = "sEmptyTArrayHeader"]
+ static EMPTY_HEADER: Header;
+}
+
+// TODO: overflow checks everywhere
+
+// Utils for computing layouts of allocations
+
+fn alloc_size<T>(cap: usize) -> usize {
+ // Compute "real" header size with pointer math
+ let header_size = mem::size_of::<Header>();
+ let elem_size = mem::size_of::<T>();
+ let padding = padding::<T>();
+
+ // TODO: care about isize::MAX overflow?
+ let data_size = elem_size.checked_mul(cap).expect("capacity overflow");
+
+ data_size
+ .checked_add(header_size + padding)
+ .expect("capacity overflow")
+}
+
+fn padding<T>() -> usize {
+ let alloc_align = alloc_align::<T>();
+ let header_size = mem::size_of::<Header>();
+
+ if alloc_align > header_size {
+ if cfg!(feature = "gecko-ffi") {
+ panic!(
+ "nsTArray does not handle alignment above > {} correctly",
+ header_size
+ );
+ }
+ alloc_align - header_size
+ } else {
+ 0
+ }
+}
+
+fn alloc_align<T>() -> usize {
+ max(mem::align_of::<T>(), mem::align_of::<Header>())
+}
+
+fn layout<T>(cap: usize) -> Layout {
+ unsafe { Layout::from_size_align_unchecked(alloc_size::<T>(cap), alloc_align::<T>()) }
+}
+
+fn header_with_capacity<T>(cap: usize) -> NonNull<Header> {
+ debug_assert!(cap > 0);
+ unsafe {
+ let layout = layout::<T>(cap);
+ let header = alloc(layout) as *mut Header;
+
+ if header.is_null() {
+ handle_alloc_error(layout)
+ }
+
+ // "Infinite" capacity for zero-sized types:
+ (*header).set_cap(if mem::size_of::<T>() == 0 {
+ MAX_CAP
+ } else {
+ cap
+ });
+ (*header).set_len(0);
+
+ NonNull::new_unchecked(header)
+ }
+}
+
+/// See the crate's top level documentation for a description of this type.
+#[repr(C)]
+pub struct ThinVec<T> {
+ ptr: NonNull<Header>,
+ boo: PhantomData<T>,
+}
+
+unsafe impl<T: Sync> Sync for ThinVec<T> {}
+unsafe impl<T: Send> Send for ThinVec<T> {}
+
+/// Creates a `ThinVec` containing the arguments.
+///
+/// ```
+/// #[macro_use] extern crate thin_vec;
+///
+/// fn main() {
+/// let v = thin_vec![1, 2, 3];
+/// assert_eq!(v.len(), 3);
+/// assert_eq!(v[0], 1);
+/// assert_eq!(v[1], 2);
+/// assert_eq!(v[2], 3);
+///
+/// let v = thin_vec![1; 3];
+/// assert_eq!(v, [1, 1, 1]);
+/// }
+/// ```
+#[macro_export]
+macro_rules! thin_vec {
+ (@UNIT $($t:tt)*) => (());
+
+ ($elem:expr; $n:expr) => ({
+ let mut vec = $crate::ThinVec::new();
+ vec.resize($n, $elem);
+ vec
+ });
+ () => {$crate::ThinVec::new()};
+ ($($x:expr),*) => ({
+ let len = [$(thin_vec!(@UNIT $x)),*].len();
+ let mut vec = $crate::ThinVec::with_capacity(len);
+ $(vec.push($x);)*
+ vec
+ });
+ ($($x:expr,)*) => (thin_vec![$($x),*]);
+}
+
+impl<T> ThinVec<T> {
+ pub fn new() -> ThinVec<T> {
+ ThinVec::with_capacity(0)
+ }
+
+ pub fn with_capacity(cap: usize) -> ThinVec<T> {
+ // `padding` contains ~static assertions against types that are
+ // incompatible with the current feature flags. We also call it to
+ // invoke these assertions when getting a pointer to the `ThinVec`
+ // contents, but since we also get a pointer to the contents in the
+ // `Drop` impl, trippng an assertion along that code path causes a
+ // double panic. We duplicate the assertion here so that it is
+ // testable,
+ let _ = padding::<T>();
+
+ if cap == 0 {
+ unsafe {
+ ThinVec {
+ ptr: NonNull::new_unchecked(&EMPTY_HEADER as *const Header as *mut Header),
+ boo: PhantomData,
+ }
+ }
+ } else {
+ ThinVec {
+ ptr: header_with_capacity::<T>(cap),
+ boo: PhantomData,
+ }
+ }
+ }
+
+ // Accessor conveniences
+
+ fn ptr(&self) -> *mut Header {
+ self.ptr.as_ptr()
+ }
+ fn header(&self) -> &Header {
+ unsafe { self.ptr.as_ref() }
+ }
+ fn data_raw(&self) -> *mut T {
+ // `padding` contains ~static assertions against types that are
+ // incompatible with the current feature flags. Even if we don't
+ // care about its result, we should always call it before getting
+ // a data pointer to guard against invalid types!
+ let padding = padding::<T>();
+
+ // Although we ensure the data array is aligned when we allocate,
+ // we can't do that with the empty singleton. So when it might not
+ // be properly aligned, we substitute in the NonNull::dangling
+ // which *is* aligned.
+ //
+ // To minimize dynamic branches on `cap` for all accesses
+ // to the data, we include this guard which should only involve
+ // compile-time constants. Ideally this should result in the branch
+ // only be included for types with excessive alignment.
+ let empty_header_is_aligned = if cfg!(feature = "gecko-ffi") {
+ // in gecko-ffi mode `padding` will ensure this under
+ // the assumption that the header has size 8 and the
+ // static empty singleton is aligned to 8.
+ true
+ } else {
+ // In non-gecko-ffi mode, the empty singleton is just
+ // naturally aligned to the Header. If the Header is at
+ // least as aligned as T *and* the padding would have
+ // been 0, then one-past-the-end of the empty singleton
+ // *is* a valid data pointer and we can remove the
+ // `dangling` special case.
+ mem::align_of::<Header>() >= mem::align_of::<T>() && padding == 0
+ };
+
+ unsafe {
+ if !empty_header_is_aligned && self.header().cap() == 0 {
+ NonNull::dangling().as_ptr()
+ } else {
+ // This could technically result in overflow, but padding
+ // would have to be absurdly large for this to occur.
+ let header_size = mem::size_of::<Header>();
+ let ptr = self.ptr.as_ptr() as *mut u8;
+ ptr.add(header_size + padding) as *mut T
+ }
+ }
+ }
+
+ // This is unsafe when the header is EMPTY_HEADER.
+ unsafe fn header_mut(&mut self) -> &mut Header {
+ &mut *self.ptr()
+ }
+
+ pub fn len(&self) -> usize {
+ self.header().len()
+ }
+ pub fn is_empty(&self) -> bool {
+ self.len() == 0
+ }
+ pub fn capacity(&self) -> usize {
+ self.header().cap()
+ }
+
+ pub unsafe fn set_len(&mut self, len: usize) {
+ if self.is_singleton() {
+ // A prerequisite of `Vec::set_len` is that `new_len` must be
+ // less than or equal to capacity(). The same applies here.
+ assert!(len == 0, "invalid set_len({}) on empty ThinVec", len);
+ } else {
+ self.header_mut().set_len(len)
+ }
+ }
+
+ // For internal use only, when setting the length and it's known to be the non-singleton.
+ unsafe fn set_len_non_singleton(&mut self, len: usize) {
+ self.header_mut().set_len(len)
+ }
+
+ pub fn push(&mut self, val: T) {
+ let old_len = self.len();
+ if old_len == self.capacity() {
+ self.reserve(1);
+ }
+ unsafe {
+ ptr::write(self.data_raw().add(old_len), val);
+ self.set_len_non_singleton(old_len + 1);
+ }
+ }
+
+ pub fn pop(&mut self) -> Option<T> {
+ let old_len = self.len();
+ if old_len == 0 {
+ return None;
+ }
+
+ unsafe {
+ self.set_len_non_singleton(old_len - 1);
+ Some(ptr::read(self.data_raw().add(old_len - 1)))
+ }
+ }
+
+ pub fn insert(&mut self, idx: usize, elem: T) {
+ let old_len = self.len();
+
+ assert!(idx <= old_len, "Index out of bounds");
+ if old_len == self.capacity() {
+ self.reserve(1);
+ }
+ unsafe {
+ let ptr = self.data_raw();
+ ptr::copy(ptr.add(idx), ptr.add(idx + 1), old_len - idx);
+ ptr::write(ptr.add(idx), elem);
+ self.set_len_non_singleton(old_len + 1);
+ }
+ }
+
+ pub fn remove(&mut self, idx: usize) -> T {
+ let old_len = self.len();
+
+ assert!(idx < old_len, "Index out of bounds");
+
+ unsafe {
+ self.set_len_non_singleton(old_len - 1);
+ let ptr = self.data_raw();
+ let val = ptr::read(self.data_raw().add(idx));
+ ptr::copy(ptr.add(idx + 1), ptr.add(idx), old_len - idx - 1);
+ val
+ }
+ }
+
+ pub fn swap_remove(&mut self, idx: usize) -> T {
+ let old_len = self.len();
+
+ assert!(idx < old_len, "Index out of bounds");
+
+ unsafe {
+ let ptr = self.data_raw();
+ ptr::swap(ptr.add(idx), ptr.add(old_len - 1));
+ self.set_len_non_singleton(old_len - 1);
+ ptr::read(ptr.add(old_len - 1))
+ }
+ }
+
+ pub fn truncate(&mut self, len: usize) {
+ unsafe {
+ // drop any extra elements
+ while len < self.len() {
+ // decrement len before the drop_in_place(), so a panic on Drop
+ // doesn't re-drop the just-failed value.
+ let new_len = self.len() - 1;
+ self.set_len_non_singleton(new_len);
+ ptr::drop_in_place(self.data_raw().add(new_len));
+ }
+ }
+ }
+
+ pub fn clear(&mut self) {
+ unsafe {
+ ptr::drop_in_place(&mut self[..]);
+ self.set_len(0); // could be the singleton
+ }
+ }
+
+ pub fn as_slice(&self) -> &[T] {
+ unsafe { slice::from_raw_parts(self.data_raw(), self.len()) }
+ }
+
+ pub fn as_mut_slice(&mut self) -> &mut [T] {
+ unsafe { slice::from_raw_parts_mut(self.data_raw(), self.len()) }
+ }
+
+ /// Reserve capacity for at least `additional` more elements to be inserted.
+ ///
+ /// May reserve more space than requested, to avoid frequent reallocations.
+ ///
+ /// Panics if the new capacity overflows `usize`.
+ ///
+ /// Re-allocates only if `self.capacity() < self.len() + additional`.
+ #[cfg(not(feature = "gecko-ffi"))]
+ pub fn reserve(&mut self, additional: usize) {
+ let len = self.len();
+ let old_cap = self.capacity();
+ let min_cap = len.checked_add(additional).expect("capacity overflow");
+ if min_cap <= old_cap {
+ return;
+ }
+ // Ensure the new capacity is at least double, to guarantee exponential growth.
+ let double_cap = if old_cap == 0 {
+ // skip to 4 because tiny ThinVecs are dumb; but not if that would cause overflow
+ if mem::size_of::<T>() > (!0) / 8 {
+ 1
+ } else {
+ 4
+ }
+ } else {
+ old_cap.saturating_mul(2)
+ };
+ let new_cap = max(min_cap, double_cap);
+ unsafe {
+ self.reallocate(new_cap);
+ }
+ }
+
+ /// Reserve capacity for at least `additional` more elements to be inserted.
+ ///
+ /// This method mimics the growth algorithm used by the C++ implementation
+ /// of nsTArray.
+ #[cfg(feature = "gecko-ffi")]
+ pub fn reserve(&mut self, additional: usize) {
+ let elem_size = mem::size_of::<T>();
+
+ let len = self.len();
+ let old_cap = self.capacity();
+ let min_cap = len.checked_add(additional).expect("capacity overflow");
+ if min_cap <= old_cap {
+ return;
+ }
+
+ // The growth logic can't handle zero-sized types, so we have to exit
+ // early here.
+ if elem_size == 0 {
+ unsafe {
+ self.reallocate(min_cap);
+ }
+ return;
+ }
+
+ let min_cap_bytes = assert_size(min_cap)
+ .checked_mul(assert_size(elem_size))
+ .and_then(|x| x.checked_add(assert_size(mem::size_of::<Header>())))
+ .unwrap();
+
+ // Perform some checked arithmetic to ensure all of the numbers we
+ // compute will end up in range.
+ let will_fit = min_cap_bytes.checked_mul(2).is_some();
+ if !will_fit {
+ panic!("Exceeded maximum nsTArray size");
+ }
+
+ const SLOW_GROWTH_THRESHOLD: usize = 8 * 1024 * 1024;
+
+ let bytes = if min_cap > SLOW_GROWTH_THRESHOLD {
+ // Grow by a minimum of 1.125x
+ let old_cap_bytes = old_cap * elem_size + mem::size_of::<Header>();
+ let min_growth = old_cap_bytes + (old_cap_bytes >> 3);
+ let growth = max(min_growth, min_cap_bytes as usize);
+
+ // Round up to the next megabyte.
+ const MB: usize = 1 << 20;
+ MB * ((growth + MB - 1) / MB)
+ } else {
+ // Try to allocate backing buffers in powers of two.
+ min_cap_bytes.next_power_of_two() as usize
+ };
+
+ let cap = (bytes - std::mem::size_of::<Header>()) / elem_size;
+ unsafe {
+ self.reallocate(cap);
+ }
+ }
+
+ /// Reserves the minimum capacity for `additional` more elements to be inserted.
+ ///
+ /// Panics if the new capacity overflows `usize`.
+ ///
+ /// Re-allocates only if `self.capacity() < self.len() + additional`.
+ pub fn reserve_exact(&mut self, additional: usize) {
+ let new_cap = self
+ .len()
+ .checked_add(additional)
+ .expect("capacity overflow");
+ let old_cap = self.capacity();
+ if new_cap > old_cap {
+ unsafe {
+ self.reallocate(new_cap);
+ }
+ }
+ }
+
+ pub fn shrink_to_fit(&mut self) {
+ let old_cap = self.capacity();
+ let new_cap = self.len();
+ if new_cap < old_cap {
+ if new_cap == 0 {
+ *self = ThinVec::new();
+ } else {
+ unsafe {
+ self.reallocate(new_cap);
+ }
+ }
+ }
+ }
+
+ /// Retains only the elements specified by the predicate.
+ ///
+ /// In other words, remove all elements `e` such that `f(&e)` returns `false`.
+ /// This method operates in place and preserves the order of the retained
+ /// elements.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[macro_use] extern crate thin_vec;
+ /// # fn main() {
+ /// let mut vec = thin_vec![1, 2, 3, 4];
+ /// vec.retain(|&x| x%2 == 0);
+ /// assert_eq!(vec, [2, 4]);
+ /// # }
+ /// ```
+ pub fn retain<F>(&mut self, mut f: F)
+ where
+ F: FnMut(&T) -> bool,
+ {
+ let len = self.len();
+ let mut del = 0;
+ {
+ let v = &mut self[..];
+
+ for i in 0..len {
+ if !f(&v[i]) {
+ del += 1;
+ } else if del > 0 {
+ v.swap(i - del, i);
+ }
+ }
+ }
+ if del > 0 {
+ self.truncate(len - del);
+ }
+ }
+
+ /// Removes consecutive elements in the vector that resolve to the same key.
+ ///
+ /// If the vector is sorted, this removes all duplicates.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[macro_use] extern crate thin_vec;
+ /// # fn main() {
+ /// let mut vec = thin_vec![10, 20, 21, 30, 20];
+ ///
+ /// vec.dedup_by_key(|i| *i / 10);
+ ///
+ /// assert_eq!(vec, [10, 20, 30, 20]);
+ /// # }
+ /// ```
+ pub fn dedup_by_key<F, K>(&mut self, mut key: F)
+ where
+ F: FnMut(&mut T) -> K,
+ K: PartialEq<K>,
+ {
+ self.dedup_by(|a, b| key(a) == key(b))
+ }
+
+ /// Removes consecutive elements in the vector according to a predicate.
+ ///
+ /// The `same_bucket` function is passed references to two elements from the vector, and
+ /// returns `true` if the elements compare equal, or `false` if they do not. Only the first
+ /// of adjacent equal items is kept.
+ ///
+ /// If the vector is sorted, this removes all duplicates.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[macro_use] extern crate thin_vec;
+ /// # fn main() {
+ /// let mut vec = thin_vec!["foo", "bar", "Bar", "baz", "bar"];
+ ///
+ /// vec.dedup_by(|a, b| a.eq_ignore_ascii_case(b));
+ ///
+ /// assert_eq!(vec, ["foo", "bar", "baz", "bar"]);
+ /// # }
+ /// ```
+ #[allow(clippy::swap_ptr_to_ref)]
+ pub fn dedup_by<F>(&mut self, mut same_bucket: F)
+ where
+ F: FnMut(&mut T, &mut T) -> bool,
+ {
+ // See the comments in `Vec::dedup` for a detailed explanation of this code.
+ unsafe {
+ let ln = self.len();
+ if ln <= 1 {
+ return;
+ }
+
+ // Avoid bounds checks by using raw pointers.
+ let p = self.as_mut_ptr();
+ let mut r: usize = 1;
+ let mut w: usize = 1;
+
+ while r < ln {
+ let p_r = p.add(r);
+ let p_wm1 = p.add(w - 1);
+ if !same_bucket(&mut *p_r, &mut *p_wm1) {
+ if r != w {
+ let p_w = p_wm1.add(1);
+ mem::swap(&mut *p_r, &mut *p_w);
+ }
+ w += 1;
+ }
+ r += 1;
+ }
+
+ self.truncate(w);
+ }
+ }
+
+ pub fn split_off(&mut self, at: usize) -> ThinVec<T> {
+ let old_len = self.len();
+ let new_vec_len = old_len - at;
+
+ assert!(at <= old_len, "Index out of bounds");
+
+ unsafe {
+ let mut new_vec = ThinVec::with_capacity(new_vec_len);
+
+ ptr::copy_nonoverlapping(self.data_raw().add(at), new_vec.data_raw(), new_vec_len);
+
+ new_vec.set_len(new_vec_len); // could be the singleton
+ self.set_len(at); // could be the singleton
+
+ new_vec
+ }
+ }
+
+ pub fn append(&mut self, other: &mut ThinVec<T>) {
+ self.extend(other.drain(..))
+ }
+
+ pub fn drain<R>(&mut self, range: R) -> Drain<'_, T>
+ where
+ R: RangeBounds<usize>,
+ {
+ let len = self.len();
+ let start = match range.start_bound() {
+ Bound::Included(&n) => n,
+ Bound::Excluded(&n) => n + 1,
+ Bound::Unbounded => 0,
+ };
+ let end = match range.end_bound() {
+ Bound::Included(&n) => n + 1,
+ Bound::Excluded(&n) => n,
+ Bound::Unbounded => len,
+ };
+ assert!(start <= end);
+ assert!(end <= len);
+
+ unsafe {
+ // Set our length to the start bound
+ self.set_len(start); // could be the singleton
+
+ let iter =
+ slice::from_raw_parts_mut(self.data_raw().add(start), end - start).iter_mut();
+
+ Drain {
+ iter,
+ vec: self,
+ end,
+ tail: len - end,
+ }
+ }
+ }
+
+ /// Resize the buffer and update its capacity, without changing the length.
+ /// Unsafe because it can cause length to be greater than capacity.
+ unsafe fn reallocate(&mut self, new_cap: usize) {
+ debug_assert!(new_cap > 0);
+ if self.has_allocation() {
+ let old_cap = self.capacity();
+ let ptr = realloc(
+ self.ptr() as *mut u8,
+ layout::<T>(old_cap),
+ alloc_size::<T>(new_cap),
+ ) as *mut Header;
+
+ if ptr.is_null() {
+ handle_alloc_error(layout::<T>(new_cap))
+ }
+ (*ptr).set_cap(new_cap);
+ self.ptr = NonNull::new_unchecked(ptr);
+ } else {
+ let new_header = header_with_capacity::<T>(new_cap);
+
+ // If we get here and have a non-zero len, then we must be handling
+ // a gecko auto array, and we have items in a stack buffer. We shouldn't
+ // free it, but we should memcopy the contents out of it and mark it as empty.
+ //
+ // T is assumed to be trivially relocatable, as this is ~required
+ // for Rust compatibility anyway. Furthermore, we assume C++ won't try
+ // to unconditionally destroy the contents of the stack allocated buffer
+ // (i.e. it's obfuscated behind a union).
+ //
+ // In effect, we are partially reimplementing the auto array move constructor
+ // by leaving behind a valid empty instance.
+ let len = self.len();
+ if cfg!(feature = "gecko-ffi") && len > 0 {
+ new_header
+ .as_ptr()
+ .add(1)
+ .cast::<T>()
+ .copy_from_nonoverlapping(self.data_raw(), len);
+ self.set_len_non_singleton(0);
+ }
+
+ self.ptr = new_header;
+ }
+ }
+
+ #[cfg(feature = "gecko-ffi")]
+ #[inline]
+ fn is_singleton(&self) -> bool {
+ unsafe { self.ptr.as_ptr() as *const Header == &EMPTY_HEADER }
+ }
+
+ #[cfg(not(feature = "gecko-ffi"))]
+ #[inline]
+ fn is_singleton(&self) -> bool {
+ self.ptr.as_ptr() as *const Header == &EMPTY_HEADER
+ }
+
+ #[cfg(feature = "gecko-ffi")]
+ #[inline]
+ fn has_allocation(&self) -> bool {
+ unsafe { !self.is_singleton() && !self.ptr.as_ref().uses_stack_allocated_buffer() }
+ }
+
+ #[cfg(not(feature = "gecko-ffi"))]
+ #[inline]
+ fn has_allocation(&self) -> bool {
+ !self.is_singleton()
+ }
+}
+
+impl<T: Clone> ThinVec<T> {
+ /// Resizes the `Vec` in-place so that `len()` is equal to `new_len`.
+ ///
+ /// If `new_len` is greater than `len()`, the `Vec` is extended by the
+ /// difference, with each additional slot filled with `value`.
+ /// If `new_len` is less than `len()`, the `Vec` is simply truncated.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[macro_use] extern crate thin_vec;
+ /// # fn main() {
+ /// let mut vec = thin_vec!["hello"];
+ /// vec.resize(3, "world");
+ /// assert_eq!(vec, ["hello", "world", "world"]);
+ ///
+ /// let mut vec = thin_vec![1, 2, 3, 4];
+ /// vec.resize(2, 0);
+ /// assert_eq!(vec, [1, 2]);
+ /// # }
+ /// ```
+ pub fn resize(&mut self, new_len: usize, value: T) {
+ let old_len = self.len();
+
+ if new_len > old_len {
+ let additional = new_len - old_len;
+ self.reserve(additional);
+ for _ in 1..additional {
+ self.push(value.clone());
+ }
+ // We can write the last element directly without cloning needlessly
+ if additional > 0 {
+ self.push(value);
+ }
+ } else if new_len < old_len {
+ self.truncate(new_len);
+ }
+ }
+
+ pub fn extend_from_slice(&mut self, other: &[T]) {
+ self.extend(other.iter().cloned())
+ }
+}
+
+impl<T: PartialEq> ThinVec<T> {
+ /// Removes consecutive repeated elements in the vector.
+ ///
+ /// If the vector is sorted, this removes all duplicates.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// # #[macro_use] extern crate thin_vec;
+ /// # fn main() {
+ /// let mut vec = thin_vec![1, 2, 2, 3, 2];
+ ///
+ /// vec.dedup();
+ ///
+ /// assert_eq!(vec, [1, 2, 3, 2]);
+ /// # }
+ /// ```
+ pub fn dedup(&mut self) {
+ self.dedup_by(|a, b| a == b)
+ }
+}
+
+impl<T> Drop for ThinVec<T> {
+ #[inline]
+ fn drop(&mut self) {
+ #[cold]
+ #[inline(never)]
+ fn drop_non_singleton<T>(this: &mut ThinVec<T>) {
+ unsafe {
+ ptr::drop_in_place(&mut this[..]);
+
+ #[cfg(feature = "gecko-ffi")]
+ if this.ptr.as_ref().uses_stack_allocated_buffer() {
+ return;
+ }
+
+ dealloc(this.ptr() as *mut u8, layout::<T>(this.capacity()))
+ }
+ }
+
+ if !self.is_singleton() {
+ drop_non_singleton(self);
+ }
+ }
+}
+
+impl<T> Deref for ThinVec<T> {
+ type Target = [T];
+
+ fn deref(&self) -> &[T] {
+ self.as_slice()
+ }
+}
+
+impl<T> DerefMut for ThinVec<T> {
+ fn deref_mut(&mut self) -> &mut [T] {
+ self.as_mut_slice()
+ }
+}
+
+impl<T> Borrow<[T]> for ThinVec<T> {
+ fn borrow(&self) -> &[T] {
+ self.as_slice()
+ }
+}
+
+impl<T> BorrowMut<[T]> for ThinVec<T> {
+ fn borrow_mut(&mut self) -> &mut [T] {
+ self.as_mut_slice()
+ }
+}
+
+impl<T> AsRef<[T]> for ThinVec<T> {
+ fn as_ref(&self) -> &[T] {
+ self.as_slice()
+ }
+}
+
+impl<T> Extend<T> for ThinVec<T> {
+ #[inline]
+ fn extend<I>(&mut self, iter: I)
+ where
+ I: IntoIterator<Item = T>,
+ {
+ let iter = iter.into_iter();
+ let hint = iter.size_hint().0;
+ if hint > 0 {
+ self.reserve(hint);
+ }
+ for x in iter {
+ self.push(x);
+ }
+ }
+}
+
+impl<T: fmt::Debug> fmt::Debug for ThinVec<T> {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Debug::fmt(&**self, f)
+ }
+}
+
+impl<T> Hash for ThinVec<T>
+where
+ T: Hash,
+{
+ fn hash<H>(&self, state: &mut H)
+ where
+ H: Hasher,
+ {
+ self[..].hash(state);
+ }
+}
+
+impl<T> PartialOrd for ThinVec<T>
+where
+ T: PartialOrd,
+{
+ #[inline]
+ fn partial_cmp(&self, other: &ThinVec<T>) -> Option<Ordering> {
+ self[..].partial_cmp(&other[..])
+ }
+}
+
+impl<T> Ord for ThinVec<T>
+where
+ T: Ord,
+{
+ #[inline]
+ fn cmp(&self, other: &ThinVec<T>) -> Ordering {
+ self[..].cmp(&other[..])
+ }
+}
+
+impl<A, B> PartialEq<ThinVec<B>> for ThinVec<A>
+where
+ A: PartialEq<B>,
+{
+ #[inline]
+ fn eq(&self, other: &ThinVec<B>) -> bool {
+ self[..] == other[..]
+ }
+}
+
+impl<A, B> PartialEq<Vec<B>> for ThinVec<A>
+where
+ A: PartialEq<B>,
+{
+ #[inline]
+ fn eq(&self, other: &Vec<B>) -> bool {
+ self[..] == other[..]
+ }
+}
+
+impl<A, B> PartialEq<[B]> for ThinVec<A>
+where
+ A: PartialEq<B>,
+{
+ #[inline]
+ fn eq(&self, other: &[B]) -> bool {
+ self[..] == other[..]
+ }
+}
+
+impl<'a, A, B> PartialEq<&'a [B]> for ThinVec<A>
+where
+ A: PartialEq<B>,
+{
+ #[inline]
+ fn eq(&self, other: &&'a [B]) -> bool {
+ self[..] == other[..]
+ }
+}
+
+// Serde impls based on
+// https://github.com/bluss/arrayvec/blob/67ec907a98c0f40c4b76066fed3c1af59d35cf6a/src/arrayvec.rs#L1222-L1267
+#[cfg(feature = "serde")]
+impl<T: serde::Serialize> serde::Serialize for ThinVec<T> {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where
+ S: serde::Serializer,
+ {
+ serializer.collect_seq(self.as_slice())
+ }
+}
+
+#[cfg(feature = "serde")]
+impl<'de, T: serde::Deserialize<'de>> serde::Deserialize<'de> for ThinVec<T> {
+ fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
+ where
+ D: serde::Deserializer<'de>,
+ {
+ use serde::de::{SeqAccess, Visitor};
+ use serde::Deserialize;
+
+ struct ThinVecVisitor<T>(PhantomData<T>);
+
+ impl<'de, T: Deserialize<'de>> Visitor<'de> for ThinVecVisitor<T> {
+ type Value = ThinVec<T>;
+
+ fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
+ write!(formatter, "a sequence")
+ }
+
+ fn visit_seq<SA>(self, mut seq: SA) -> Result<Self::Value, SA::Error>
+ where
+ SA: SeqAccess<'de>,
+ {
+ // Same policy as
+ // https://github.com/serde-rs/serde/blob/ce0844b9ecc32377b5e4545d759d385a8c46bc6a/serde/src/private/size_hint.rs#L13
+ let initial_capacity = seq.size_hint().unwrap_or_default().min(4096);
+ let mut values = ThinVec::<T>::with_capacity(initial_capacity);
+
+ while let Some(value) = seq.next_element()? {
+ values.push(value);
+ }
+
+ Ok(values)
+ }
+ }
+
+ deserializer.deserialize_seq(ThinVecVisitor::<T>(PhantomData))
+ }
+}
+
+macro_rules! array_impls {
+ ($($N:expr)*) => {$(
+ impl<A, B> PartialEq<[B; $N]> for ThinVec<A> where A: PartialEq<B> {
+ #[inline]
+ fn eq(&self, other: &[B; $N]) -> bool { self[..] == other[..] }
+ }
+
+ impl<'a, A, B> PartialEq<&'a [B; $N]> for ThinVec<A> where A: PartialEq<B> {
+ #[inline]
+ fn eq(&self, other: &&'a [B; $N]) -> bool { self[..] == other[..] }
+ }
+ )*}
+}
+
+array_impls! {
+ 0 1 2 3 4 5 6 7 8 9
+ 10 11 12 13 14 15 16 17 18 19
+ 20 21 22 23 24 25 26 27 28 29
+ 30 31 32
+}
+
+impl<T> Eq for ThinVec<T> where T: Eq {}
+
+impl<T> IntoIterator for ThinVec<T> {
+ type Item = T;
+ type IntoIter = IntoIter<T>;
+
+ fn into_iter(self) -> IntoIter<T> {
+ IntoIter {
+ vec: self,
+ start: 0,
+ }
+ }
+}
+
+impl<'a, T> IntoIterator for &'a ThinVec<T> {
+ type Item = &'a T;
+ type IntoIter = slice::Iter<'a, T>;
+
+ fn into_iter(self) -> slice::Iter<'a, T> {
+ self.iter()
+ }
+}
+
+impl<'a, T> IntoIterator for &'a mut ThinVec<T> {
+ type Item = &'a mut T;
+ type IntoIter = slice::IterMut<'a, T>;
+
+ fn into_iter(self) -> slice::IterMut<'a, T> {
+ self.iter_mut()
+ }
+}
+
+impl<T> Clone for ThinVec<T>
+where
+ T: Clone,
+{
+ #[inline]
+ fn clone(&self) -> ThinVec<T> {
+ #[cold]
+ #[inline(never)]
+ fn clone_non_singleton<T: Clone>(this: &ThinVec<T>) -> ThinVec<T> {
+ let len = this.len();
+ let mut new_vec = ThinVec::<T>::with_capacity(len);
+ let mut data_raw = new_vec.data_raw();
+ for x in this.iter() {
+ unsafe {
+ ptr::write(data_raw, x.clone());
+ data_raw = data_raw.add(1);
+ }
+ }
+ unsafe {
+ // `this` is not the singleton, but `new_vec` will be if
+ // `this` is empty.
+ new_vec.set_len(len); // could be the singleton
+ }
+ new_vec
+ }
+
+ if self.is_singleton() {
+ ThinVec::new()
+ } else {
+ clone_non_singleton(self)
+ }
+ }
+}
+
+impl<T> Default for ThinVec<T> {
+ fn default() -> ThinVec<T> {
+ ThinVec::new()
+ }
+}
+
+impl<T> FromIterator<T> for ThinVec<T> {
+ #[inline]
+ fn from_iter<I: IntoIterator<Item = T>>(iter: I) -> ThinVec<T> {
+ let mut vec = ThinVec::new();
+ vec.extend(iter.into_iter());
+ vec
+ }
+}
+
+pub struct IntoIter<T> {
+ vec: ThinVec<T>,
+ start: usize,
+}
+
+pub struct Drain<'a, T> {
+ iter: IterMut<'a, T>,
+ vec: *mut ThinVec<T>,
+ end: usize,
+ tail: usize,
+}
+
+impl<T> Iterator for IntoIter<T> {
+ type Item = T;
+ fn next(&mut self) -> Option<T> {
+ if self.start == self.vec.len() {
+ None
+ } else {
+ unsafe {
+ let old_start = self.start;
+ self.start += 1;
+ Some(ptr::read(self.vec.data_raw().add(old_start)))
+ }
+ }
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ let len = self.vec.len() - self.start;
+ (len, Some(len))
+ }
+}
+
+impl<T> DoubleEndedIterator for IntoIter<T> {
+ fn next_back(&mut self) -> Option<T> {
+ if self.start == self.vec.len() {
+ None
+ } else {
+ // FIXME?: extra bounds check
+ self.vec.pop()
+ }
+ }
+}
+
+impl<T> Drop for IntoIter<T> {
+ #[inline]
+ fn drop(&mut self) {
+ #[cold]
+ #[inline(never)]
+ fn drop_non_singleton<T>(this: &mut IntoIter<T>) {
+ unsafe {
+ let mut vec = mem::replace(&mut this.vec, ThinVec::new());
+ ptr::drop_in_place(&mut vec[this.start..]);
+ vec.set_len_non_singleton(0)
+ }
+ }
+
+ if !self.vec.is_singleton() {
+ drop_non_singleton(self);
+ }
+ }
+}
+
+impl<'a, T> Iterator for Drain<'a, T> {
+ type Item = T;
+ fn next(&mut self) -> Option<T> {
+ self.iter.next().map(|x| unsafe { ptr::read(x) })
+ }
+
+ fn size_hint(&self) -> (usize, Option<usize>) {
+ self.iter.size_hint()
+ }
+}
+
+impl<'a, T> DoubleEndedIterator for Drain<'a, T> {
+ fn next_back(&mut self) -> Option<T> {
+ self.iter.next_back().map(|x| unsafe { ptr::read(x) })
+ }
+}
+
+impl<'a, T> ExactSizeIterator for Drain<'a, T> {}
+
+impl<'a, T> Drop for Drain<'a, T> {
+ fn drop(&mut self) {
+ // Consume the rest of the iterator.
+ for _ in self.by_ref() {}
+
+ // Move the tail over the drained items, and update the length.
+ unsafe {
+ let vec = &mut *self.vec;
+
+ // Don't mutate the empty singleton!
+ if !vec.is_singleton() {
+ let old_len = vec.len();
+ let start = vec.data_raw().add(old_len);
+ let end = vec.data_raw().add(self.end);
+ ptr::copy(end, start, self.tail);
+ vec.set_len_non_singleton(old_len + self.tail);
+ }
+ }
+ }
+}
+
+/// Write is implemented for `ThinVec<u8>` by appending to the vector.
+/// The vector will grow as needed.
+/// This implementation is identical to the one for `Vec<u8>`.
+impl io::Write for ThinVec<u8> {
+ #[inline]
+ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
+ self.extend_from_slice(buf);
+ Ok(buf.len())
+ }
+
+ #[inline]
+ fn write_all(&mut self, buf: &[u8]) -> io::Result<()> {
+ self.extend_from_slice(buf);
+ Ok(())
+ }
+
+ #[inline]
+ fn flush(&mut self) -> io::Result<()> {
+ Ok(())
+ }
+}
+
+// TODO: a million Index impls
+
+#[cfg(test)]
+mod tests {
+ use super::{ThinVec, MAX_CAP};
+
+ #[test]
+ fn test_size_of() {
+ use std::mem::size_of;
+ assert_eq!(size_of::<ThinVec<u8>>(), size_of::<&u8>());
+
+ assert_eq!(size_of::<Option<ThinVec<u8>>>(), size_of::<&u8>());
+ }
+
+ #[test]
+ fn test_drop_empty() {
+ ThinVec::<u8>::new();
+ }
+
+ #[test]
+ fn test_data_ptr_alignment() {
+ let v = ThinVec::<u16>::new();
+ assert!(v.data_raw() as usize % 2 == 0);
+
+ let v = ThinVec::<u32>::new();
+ assert!(v.data_raw() as usize % 4 == 0);
+
+ let v = ThinVec::<u64>::new();
+ assert!(v.data_raw() as usize % 8 == 0);
+ }
+
+ #[test]
+ #[cfg_attr(feature = "gecko-ffi", should_panic)]
+ fn test_overaligned_type_is_rejected_for_gecko_ffi_mode() {
+ #[repr(align(16))]
+ struct Align16(u8);
+
+ let v = ThinVec::<Align16>::new();
+ assert!(v.data_raw() as usize % 16 == 0);
+ }
+
+ #[test]
+ fn test_partial_eq() {
+ assert_eq!(thin_vec![0], thin_vec![0]);
+ assert_ne!(thin_vec![0], thin_vec![1]);
+ assert_eq!(thin_vec![1, 2, 3], vec![1, 2, 3]);
+ }
+
+ #[test]
+ fn test_alloc() {
+ let mut v = ThinVec::new();
+ assert!(!v.has_allocation());
+ v.push(1);
+ assert!(v.has_allocation());
+ v.pop();
+ assert!(v.has_allocation());
+ v.shrink_to_fit();
+ assert!(!v.has_allocation());
+ v.reserve(64);
+ assert!(v.has_allocation());
+ v = ThinVec::with_capacity(64);
+ assert!(v.has_allocation());
+ v = ThinVec::with_capacity(0);
+ assert!(!v.has_allocation());
+ }
+
+ #[test]
+ fn test_drain_items() {
+ let mut vec = thin_vec![1, 2, 3];
+ let mut vec2 = thin_vec![];
+ for i in vec.drain(..) {
+ vec2.push(i);
+ }
+ assert_eq!(vec, []);
+ assert_eq!(vec2, [1, 2, 3]);
+ }
+
+ #[test]
+ fn test_drain_items_reverse() {
+ let mut vec = thin_vec![1, 2, 3];
+ let mut vec2 = thin_vec![];
+ for i in vec.drain(..).rev() {
+ vec2.push(i);
+ }
+ assert_eq!(vec, []);
+ assert_eq!(vec2, [3, 2, 1]);
+ }
+
+ #[test]
+ fn test_drain_items_zero_sized() {
+ let mut vec = thin_vec![(), (), ()];
+ let mut vec2 = thin_vec![];
+ for i in vec.drain(..) {
+ vec2.push(i);
+ }
+ assert_eq!(vec, []);
+ assert_eq!(vec2, [(), (), ()]);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_drain_out_of_bounds() {
+ let mut v = thin_vec![1, 2, 3, 4, 5];
+ v.drain(5..6);
+ }
+
+ #[test]
+ fn test_drain_range() {
+ let mut v = thin_vec![1, 2, 3, 4, 5];
+ for _ in v.drain(4..) {}
+ assert_eq!(v, &[1, 2, 3, 4]);
+
+ let mut v: ThinVec<_> = (1..6).map(|x| x.to_string()).collect();
+ for _ in v.drain(1..4) {}
+ assert_eq!(v, &[1.to_string(), 5.to_string()]);
+
+ let mut v: ThinVec<_> = (1..6).map(|x| x.to_string()).collect();
+ for _ in v.drain(1..4).rev() {}
+ assert_eq!(v, &[1.to_string(), 5.to_string()]);
+
+ let mut v: ThinVec<_> = thin_vec![(); 5];
+ for _ in v.drain(1..4).rev() {}
+ assert_eq!(v, &[(), ()]);
+ }
+
+ #[test]
+ fn test_drain_max_vec_size() {
+ let mut v = ThinVec::<()>::with_capacity(MAX_CAP);
+ unsafe {
+ v.set_len(MAX_CAP);
+ }
+ for _ in v.drain(MAX_CAP - 1..) {}
+ assert_eq!(v.len(), MAX_CAP - 1);
+ }
+
+ #[test]
+ fn test_clear() {
+ let mut v = ThinVec::<i32>::new();
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+
+ v.clear();
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+
+ v.push(1);
+ v.push(2);
+ assert_eq!(v.len(), 2);
+ assert!(v.capacity() >= 2);
+ assert_eq!(&v[..], &[1, 2]);
+
+ v.clear();
+ assert_eq!(v.len(), 0);
+ assert!(v.capacity() >= 2);
+ assert_eq!(&v[..], &[]);
+
+ v.push(3);
+ v.push(4);
+ assert_eq!(v.len(), 2);
+ assert!(v.capacity() >= 2);
+ assert_eq!(&v[..], &[3, 4]);
+
+ v.clear();
+ assert_eq!(v.len(), 0);
+ assert!(v.capacity() >= 2);
+ assert_eq!(&v[..], &[]);
+
+ v.clear();
+ assert_eq!(v.len(), 0);
+ assert!(v.capacity() >= 2);
+ assert_eq!(&v[..], &[]);
+ }
+
+ #[test]
+ fn test_empty_singleton_torture() {
+ {
+ let mut v = ThinVec::<i32>::new();
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert!(v.is_empty());
+ assert_eq!(&v[..], &[]);
+ assert_eq!(&mut v[..], &mut []);
+
+ assert_eq!(v.pop(), None);
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let v = ThinVec::<i32>::new();
+ assert_eq!(v.into_iter().count(), 0);
+
+ let v = ThinVec::<i32>::new();
+ for _ in v.into_iter() {
+ unreachable!();
+ }
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ assert_eq!(v.drain(..).len(), 0);
+
+ for _ in v.drain(..) {
+ unreachable!()
+ }
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ v.truncate(1);
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+
+ v.truncate(0);
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ v.shrink_to_fit();
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ let new = v.split_off(0);
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+
+ assert_eq!(new.len(), 0);
+ assert_eq!(new.capacity(), 0);
+ assert_eq!(&new[..], &[]);
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ let mut other = ThinVec::<i32>::new();
+ v.append(&mut other);
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+
+ assert_eq!(other.len(), 0);
+ assert_eq!(other.capacity(), 0);
+ assert_eq!(&other[..], &[]);
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ v.reserve(0);
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ v.reserve_exact(0);
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ v.reserve(0);
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let v = ThinVec::<i32>::with_capacity(0);
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let v = ThinVec::<i32>::default();
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ v.retain(|_| unreachable!());
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ v.dedup_by_key(|x| *x);
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let mut v = ThinVec::<i32>::new();
+ v.dedup_by(|_, _| unreachable!());
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+
+ {
+ let v = ThinVec::<i32>::new();
+ let v = v.clone();
+
+ assert_eq!(v.len(), 0);
+ assert_eq!(v.capacity(), 0);
+ assert_eq!(&v[..], &[]);
+ }
+ }
+
+ #[test]
+ fn test_clone() {
+ let mut v = ThinVec::<i32>::new();
+ assert!(v.is_singleton());
+ v.push(0);
+ v.pop();
+ assert!(!v.is_singleton());
+
+ let v2 = v.clone();
+ assert!(v2.is_singleton());
+ }
+}
+
+#[cfg(test)]
+mod std_tests {
+ #![allow(clippy::reversed_empty_ranges)]
+
+ use super::*;
+ use std::mem::size_of;
+ use std::usize;
+
+ struct DropCounter<'a> {
+ count: &'a mut u32,
+ }
+
+ impl<'a> Drop for DropCounter<'a> {
+ fn drop(&mut self) {
+ *self.count += 1;
+ }
+ }
+
+ #[test]
+ fn test_small_vec_struct() {
+ assert!(size_of::<ThinVec<u8>>() == size_of::<usize>());
+ }
+
+ #[test]
+ fn test_double_drop() {
+ struct TwoVec<T> {
+ x: ThinVec<T>,
+ y: ThinVec<T>,
+ }
+
+ let (mut count_x, mut count_y) = (0, 0);
+ {
+ let mut tv = TwoVec {
+ x: ThinVec::new(),
+ y: ThinVec::new(),
+ };
+ tv.x.push(DropCounter {
+ count: &mut count_x,
+ });
+ tv.y.push(DropCounter {
+ count: &mut count_y,
+ });
+
+ // If ThinVec had a drop flag, here is where it would be zeroed.
+ // Instead, it should rely on its internal state to prevent
+ // doing anything significant when dropped multiple times.
+ drop(tv.x);
+
+ // Here tv goes out of scope, tv.y should be dropped, but not tv.x.
+ }
+
+ assert_eq!(count_x, 1);
+ assert_eq!(count_y, 1);
+ }
+
+ #[test]
+ fn test_reserve() {
+ let mut v = ThinVec::new();
+ assert_eq!(v.capacity(), 0);
+
+ v.reserve(2);
+ assert!(v.capacity() >= 2);
+
+ for i in 0..16 {
+ v.push(i);
+ }
+
+ assert!(v.capacity() >= 16);
+ v.reserve(16);
+ assert!(v.capacity() >= 32);
+
+ v.push(16);
+
+ v.reserve(16);
+ assert!(v.capacity() >= 33)
+ }
+
+ #[test]
+ fn test_extend() {
+ let mut v = ThinVec::<usize>::new();
+ let mut w = ThinVec::new();
+ v.extend(w.clone());
+ assert_eq!(v, &[]);
+
+ v.extend(0..3);
+ for i in 0..3 {
+ w.push(i)
+ }
+
+ assert_eq!(v, w);
+
+ v.extend(3..10);
+ for i in 3..10 {
+ w.push(i)
+ }
+
+ assert_eq!(v, w);
+
+ v.extend(w.clone()); // specializes to `append`
+ assert!(v.iter().eq(w.iter().chain(w.iter())));
+
+ // Zero sized types
+ #[derive(PartialEq, Debug)]
+ struct Foo;
+
+ let mut a = ThinVec::new();
+ let b = thin_vec![Foo, Foo];
+
+ a.extend(b);
+ assert_eq!(a, &[Foo, Foo]);
+
+ // Double drop
+ let mut count_x = 0;
+ {
+ let mut x = ThinVec::new();
+ let y = thin_vec![DropCounter {
+ count: &mut count_x
+ }];
+ x.extend(y);
+ }
+
+ assert_eq!(count_x, 1);
+ }
+
+ /* TODO: implement extend for Iter<&Copy>
+ #[test]
+ fn test_extend_ref() {
+ let mut v = thin_vec![1, 2];
+ v.extend(&[3, 4, 5]);
+
+ assert_eq!(v.len(), 5);
+ assert_eq!(v, [1, 2, 3, 4, 5]);
+
+ let w = thin_vec![6, 7];
+ v.extend(&w);
+
+ assert_eq!(v.len(), 7);
+ assert_eq!(v, [1, 2, 3, 4, 5, 6, 7]);
+ }
+ */
+
+ #[test]
+ fn test_slice_from_mut() {
+ let mut values = thin_vec![1, 2, 3, 4, 5];
+ {
+ let slice = &mut values[2..];
+ assert!(slice == [3, 4, 5]);
+ for p in slice {
+ *p += 2;
+ }
+ }
+
+ assert!(values == [1, 2, 5, 6, 7]);
+ }
+
+ #[test]
+ fn test_slice_to_mut() {
+ let mut values = thin_vec![1, 2, 3, 4, 5];
+ {
+ let slice = &mut values[..2];
+ assert!(slice == [1, 2]);
+ for p in slice {
+ *p += 1;
+ }
+ }
+
+ assert!(values == [2, 3, 3, 4, 5]);
+ }
+
+ #[test]
+ fn test_split_at_mut() {
+ let mut values = thin_vec![1, 2, 3, 4, 5];
+ {
+ let (left, right) = values.split_at_mut(2);
+ {
+ let left: &[_] = left;
+ assert!(left[..left.len()] == [1, 2]);
+ }
+ for p in left {
+ *p += 1;
+ }
+
+ {
+ let right: &[_] = right;
+ assert!(right[..right.len()] == [3, 4, 5]);
+ }
+ for p in right {
+ *p += 2;
+ }
+ }
+
+ assert_eq!(values, [2, 3, 5, 6, 7]);
+ }
+
+ #[test]
+ fn test_clone() {
+ let v: ThinVec<i32> = thin_vec![];
+ let w = thin_vec![1, 2, 3];
+
+ assert_eq!(v, v.clone());
+
+ let z = w.clone();
+ assert_eq!(w, z);
+ // they should be disjoint in memory.
+ assert!(w.as_ptr() != z.as_ptr())
+ }
+
+ #[test]
+ fn test_clone_from() {
+ let mut v = thin_vec![];
+ let three: ThinVec<Box<_>> = thin_vec![Box::new(1), Box::new(2), Box::new(3)];
+ let two: ThinVec<Box<_>> = thin_vec![Box::new(4), Box::new(5)];
+ // zero, long
+ v.clone_from(&three);
+ assert_eq!(v, three);
+
+ // equal
+ v.clone_from(&three);
+ assert_eq!(v, three);
+
+ // long, short
+ v.clone_from(&two);
+ assert_eq!(v, two);
+
+ // short, long
+ v.clone_from(&three);
+ assert_eq!(v, three)
+ }
+
+ #[test]
+ fn test_retain() {
+ let mut vec = thin_vec![1, 2, 3, 4];
+ vec.retain(|&x| x % 2 == 0);
+ assert_eq!(vec, [2, 4]);
+ }
+
+ #[test]
+ fn test_dedup() {
+ fn case(a: ThinVec<i32>, b: ThinVec<i32>) {
+ let mut v = a;
+ v.dedup();
+ assert_eq!(v, b);
+ }
+ case(thin_vec![], thin_vec![]);
+ case(thin_vec![1], thin_vec![1]);
+ case(thin_vec![1, 1], thin_vec![1]);
+ case(thin_vec![1, 2, 3], thin_vec![1, 2, 3]);
+ case(thin_vec![1, 1, 2, 3], thin_vec![1, 2, 3]);
+ case(thin_vec![1, 2, 2, 3], thin_vec![1, 2, 3]);
+ case(thin_vec![1, 2, 3, 3], thin_vec![1, 2, 3]);
+ case(thin_vec![1, 1, 2, 2, 2, 3, 3], thin_vec![1, 2, 3]);
+ }
+
+ #[test]
+ fn test_dedup_by_key() {
+ fn case(a: ThinVec<i32>, b: ThinVec<i32>) {
+ let mut v = a;
+ v.dedup_by_key(|i| *i / 10);
+ assert_eq!(v, b);
+ }
+ case(thin_vec![], thin_vec![]);
+ case(thin_vec![10], thin_vec![10]);
+ case(thin_vec![10, 11], thin_vec![10]);
+ case(thin_vec![10, 20, 30], thin_vec![10, 20, 30]);
+ case(thin_vec![10, 11, 20, 30], thin_vec![10, 20, 30]);
+ case(thin_vec![10, 20, 21, 30], thin_vec![10, 20, 30]);
+ case(thin_vec![10, 20, 30, 31], thin_vec![10, 20, 30]);
+ case(thin_vec![10, 11, 20, 21, 22, 30, 31], thin_vec![10, 20, 30]);
+ }
+
+ #[test]
+ fn test_dedup_by() {
+ let mut vec = thin_vec!["foo", "bar", "Bar", "baz", "bar"];
+ vec.dedup_by(|a, b| a.eq_ignore_ascii_case(b));
+
+ assert_eq!(vec, ["foo", "bar", "baz", "bar"]);
+
+ let mut vec = thin_vec![("foo", 1), ("foo", 2), ("bar", 3), ("bar", 4), ("bar", 5)];
+ vec.dedup_by(|a, b| {
+ a.0 == b.0 && {
+ b.1 += a.1;
+ true
+ }
+ });
+
+ assert_eq!(vec, [("foo", 3), ("bar", 12)]);
+ }
+
+ #[test]
+ fn test_dedup_unique() {
+ let mut v0: ThinVec<Box<_>> = thin_vec![Box::new(1), Box::new(1), Box::new(2), Box::new(3)];
+ v0.dedup();
+ let mut v1: ThinVec<Box<_>> = thin_vec![Box::new(1), Box::new(2), Box::new(2), Box::new(3)];
+ v1.dedup();
+ let mut v2: ThinVec<Box<_>> = thin_vec![Box::new(1), Box::new(2), Box::new(3), Box::new(3)];
+ v2.dedup();
+ // If the boxed pointers were leaked or otherwise misused, valgrind
+ // and/or rt should raise errors.
+ }
+
+ #[test]
+ fn zero_sized_values() {
+ let mut v = ThinVec::new();
+ assert_eq!(v.len(), 0);
+ v.push(());
+ assert_eq!(v.len(), 1);
+ v.push(());
+ assert_eq!(v.len(), 2);
+ assert_eq!(v.pop(), Some(()));
+ assert_eq!(v.pop(), Some(()));
+ assert_eq!(v.pop(), None);
+
+ assert_eq!(v.iter().count(), 0);
+ v.push(());
+ assert_eq!(v.iter().count(), 1);
+ v.push(());
+ assert_eq!(v.iter().count(), 2);
+
+ for &() in &v {}
+
+ assert_eq!(v.iter_mut().count(), 2);
+ v.push(());
+ assert_eq!(v.iter_mut().count(), 3);
+ v.push(());
+ assert_eq!(v.iter_mut().count(), 4);
+
+ for &mut () in &mut v {}
+ unsafe {
+ v.set_len(0);
+ }
+ assert_eq!(v.iter_mut().count(), 0);
+ }
+
+ #[test]
+ fn test_partition() {
+ assert_eq!(
+ thin_vec![].into_iter().partition(|x: &i32| *x < 3),
+ (thin_vec![], thin_vec![])
+ );
+ assert_eq!(
+ thin_vec![1, 2, 3].into_iter().partition(|x| *x < 4),
+ (thin_vec![1, 2, 3], thin_vec![])
+ );
+ assert_eq!(
+ thin_vec![1, 2, 3].into_iter().partition(|x| *x < 2),
+ (thin_vec![1], thin_vec![2, 3])
+ );
+ assert_eq!(
+ thin_vec![1, 2, 3].into_iter().partition(|x| *x < 0),
+ (thin_vec![], thin_vec![1, 2, 3])
+ );
+ }
+
+ #[test]
+ fn test_zip_unzip() {
+ let z1 = thin_vec![(1, 4), (2, 5), (3, 6)];
+
+ let (left, right): (ThinVec<_>, ThinVec<_>) = z1.iter().cloned().unzip();
+
+ assert_eq!((1, 4), (left[0], right[0]));
+ assert_eq!((2, 5), (left[1], right[1]));
+ assert_eq!((3, 6), (left[2], right[2]));
+ }
+
+ #[test]
+ fn test_vec_truncate_drop() {
+ static mut DROPS: u32 = 0;
+ struct Elem(i32);
+ impl Drop for Elem {
+ fn drop(&mut self) {
+ unsafe {
+ DROPS += 1;
+ }
+ }
+ }
+
+ let mut v = thin_vec![Elem(1), Elem(2), Elem(3), Elem(4), Elem(5)];
+ assert_eq!(unsafe { DROPS }, 0);
+ v.truncate(3);
+ assert_eq!(unsafe { DROPS }, 2);
+ v.truncate(0);
+ assert_eq!(unsafe { DROPS }, 5);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_vec_truncate_fail() {
+ struct BadElem(i32);
+ impl Drop for BadElem {
+ fn drop(&mut self) {
+ let BadElem(ref mut x) = *self;
+ if *x == 0xbadbeef {
+ panic!("BadElem panic: 0xbadbeef")
+ }
+ }
+ }
+
+ let mut v = thin_vec![BadElem(1), BadElem(2), BadElem(0xbadbeef), BadElem(4)];
+ v.truncate(0);
+ }
+
+ #[test]
+ fn test_index() {
+ let vec = thin_vec![1, 2, 3];
+ assert!(vec[1] == 2);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_index_out_of_bounds() {
+ let vec = thin_vec![1, 2, 3];
+ let _ = vec[3];
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_slice_out_of_bounds_1() {
+ let x = thin_vec![1, 2, 3, 4, 5];
+ let _ = &x[!0..];
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_slice_out_of_bounds_2() {
+ let x = thin_vec![1, 2, 3, 4, 5];
+ let _ = &x[..6];
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_slice_out_of_bounds_3() {
+ let x = thin_vec![1, 2, 3, 4, 5];
+ let _ = &x[!0..4];
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_slice_out_of_bounds_4() {
+ let x = thin_vec![1, 2, 3, 4, 5];
+ let _ = &x[1..6];
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_slice_out_of_bounds_5() {
+ let x = thin_vec![1, 2, 3, 4, 5];
+ let _ = &x[3..2];
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_swap_remove_empty() {
+ let mut vec = ThinVec::<i32>::new();
+ vec.swap_remove(0);
+ }
+
+ #[test]
+ fn test_move_items() {
+ let vec = thin_vec![1, 2, 3];
+ let mut vec2 = thin_vec![];
+ for i in vec {
+ vec2.push(i);
+ }
+ assert_eq!(vec2, [1, 2, 3]);
+ }
+
+ #[test]
+ fn test_move_items_reverse() {
+ let vec = thin_vec![1, 2, 3];
+ let mut vec2 = thin_vec![];
+ for i in vec.into_iter().rev() {
+ vec2.push(i);
+ }
+ assert_eq!(vec2, [3, 2, 1]);
+ }
+
+ #[test]
+ fn test_move_items_zero_sized() {
+ let vec = thin_vec![(), (), ()];
+ let mut vec2 = thin_vec![];
+ for i in vec {
+ vec2.push(i);
+ }
+ assert_eq!(vec2, [(), (), ()]);
+ }
+
+ #[test]
+ fn test_drain_items() {
+ let mut vec = thin_vec![1, 2, 3];
+ let mut vec2 = thin_vec![];
+ for i in vec.drain(..) {
+ vec2.push(i);
+ }
+ assert_eq!(vec, []);
+ assert_eq!(vec2, [1, 2, 3]);
+ }
+
+ #[test]
+ fn test_drain_items_reverse() {
+ let mut vec = thin_vec![1, 2, 3];
+ let mut vec2 = thin_vec![];
+ for i in vec.drain(..).rev() {
+ vec2.push(i);
+ }
+ assert_eq!(vec, []);
+ assert_eq!(vec2, [3, 2, 1]);
+ }
+
+ #[test]
+ fn test_drain_items_zero_sized() {
+ let mut vec = thin_vec![(), (), ()];
+ let mut vec2 = thin_vec![];
+ for i in vec.drain(..) {
+ vec2.push(i);
+ }
+ assert_eq!(vec, []);
+ assert_eq!(vec2, [(), (), ()]);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_drain_out_of_bounds() {
+ let mut v = thin_vec![1, 2, 3, 4, 5];
+ v.drain(5..6);
+ }
+
+ #[test]
+ fn test_drain_range() {
+ let mut v = thin_vec![1, 2, 3, 4, 5];
+ for _ in v.drain(4..) {}
+ assert_eq!(v, &[1, 2, 3, 4]);
+
+ let mut v: ThinVec<_> = (1..6).map(|x| x.to_string()).collect();
+ for _ in v.drain(1..4) {}
+ assert_eq!(v, &[1.to_string(), 5.to_string()]);
+
+ let mut v: ThinVec<_> = (1..6).map(|x| x.to_string()).collect();
+ for _ in v.drain(1..4).rev() {}
+ assert_eq!(v, &[1.to_string(), 5.to_string()]);
+
+ let mut v: ThinVec<_> = thin_vec![(); 5];
+ for _ in v.drain(1..4).rev() {}
+ assert_eq!(v, &[(), ()]);
+ }
+
+ #[test]
+ fn test_drain_inclusive_range() {
+ let mut v = thin_vec!['a', 'b', 'c', 'd', 'e'];
+ for _ in v.drain(1..=3) {}
+ assert_eq!(v, &['a', 'e']);
+
+ let mut v: ThinVec<_> = (0..=5).map(|x| x.to_string()).collect();
+ for _ in v.drain(1..=5) {}
+ assert_eq!(v, &["0".to_string()]);
+
+ let mut v: ThinVec<String> = (0..=5).map(|x| x.to_string()).collect();
+ for _ in v.drain(0..=5) {}
+ assert_eq!(v, ThinVec::<String>::new());
+
+ let mut v: ThinVec<_> = (0..=5).map(|x| x.to_string()).collect();
+ for _ in v.drain(0..=3) {}
+ assert_eq!(v, &["4".to_string(), "5".to_string()]);
+
+ let mut v: ThinVec<_> = (0..=1).map(|x| x.to_string()).collect();
+ for _ in v.drain(..=0) {}
+ assert_eq!(v, &["1".to_string()]);
+ }
+
+ #[test]
+ #[cfg(not(feature = "gecko-ffi"))]
+ fn test_drain_max_vec_size() {
+ let mut v = ThinVec::<()>::with_capacity(usize::max_value());
+ unsafe {
+ v.set_len(usize::max_value());
+ }
+ for _ in v.drain(usize::max_value() - 1..) {}
+ assert_eq!(v.len(), usize::max_value() - 1);
+
+ let mut v = ThinVec::<()>::with_capacity(usize::max_value());
+ unsafe {
+ v.set_len(usize::max_value());
+ }
+ for _ in v.drain(usize::max_value() - 1..=usize::max_value() - 1) {}
+ assert_eq!(v.len(), usize::max_value() - 1);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_drain_inclusive_out_of_bounds() {
+ let mut v = thin_vec![1, 2, 3, 4, 5];
+ v.drain(5..=5);
+ }
+
+ /* TODO: implement splice?
+ #[test]
+ fn test_splice() {
+ let mut v = thin_vec![1, 2, 3, 4, 5];
+ let a = [10, 11, 12];
+ v.splice(2..4, a.iter().cloned());
+ assert_eq!(v, &[1, 2, 10, 11, 12, 5]);
+ v.splice(1..3, Some(20));
+ assert_eq!(v, &[1, 20, 11, 12, 5]);
+ }
+
+ #[test]
+ fn test_splice_inclusive_range() {
+ let mut v = thin_vec![1, 2, 3, 4, 5];
+ let a = [10, 11, 12];
+ let t1: ThinVec<_> = v.splice(2..=3, a.iter().cloned()).collect();
+ assert_eq!(v, &[1, 2, 10, 11, 12, 5]);
+ assert_eq!(t1, &[3, 4]);
+ let t2: ThinVec<_> = v.splice(1..=2, Some(20)).collect();
+ assert_eq!(v, &[1, 20, 11, 12, 5]);
+ assert_eq!(t2, &[2, 10]);
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_splice_out_of_bounds() {
+ let mut v = thin_vec![1, 2, 3, 4, 5];
+ let a = [10, 11, 12];
+ v.splice(5..6, a.iter().cloned());
+ }
+
+ #[test]
+ #[should_panic]
+ fn test_splice_inclusive_out_of_bounds() {
+ let mut v = thin_vec![1, 2, 3, 4, 5];
+ let a = [10, 11, 12];
+ v.splice(5..=5, a.iter().cloned());
+ }
+
+ #[test]
+ fn test_splice_items_zero_sized() {
+ let mut vec = thin_vec![(), (), ()];
+ let vec2 = thin_vec![];
+ let t: ThinVec<_> = vec.splice(1..2, vec2.iter().cloned()).collect();
+ assert_eq!(vec, &[(), ()]);
+ assert_eq!(t, &[()]);
+ }
+
+ #[test]
+ fn test_splice_unbounded() {
+ let mut vec = thin_vec![1, 2, 3, 4, 5];
+ let t: ThinVec<_> = vec.splice(.., None).collect();
+ assert_eq!(vec, &[]);
+ assert_eq!(t, &[1, 2, 3, 4, 5]);
+ }
+
+ #[test]
+ fn test_splice_forget() {
+ let mut v = thin_vec![1, 2, 3, 4, 5];
+ let a = [10, 11, 12];
+ ::std::mem::forget(v.splice(2..4, a.iter().cloned()));
+ assert_eq!(v, &[1, 2]);
+ }
+ */
+
+ /* probs won't ever impl this
+ #[test]
+ fn test_into_boxed_slice() {
+ let xs = thin_vec![1, 2, 3];
+ let ys = xs.into_boxed_slice();
+ assert_eq!(&*ys, [1, 2, 3]);
+ }
+ */
+
+ #[test]
+ fn test_append() {
+ let mut vec = thin_vec![1, 2, 3];
+ let mut vec2 = thin_vec![4, 5, 6];
+ vec.append(&mut vec2);
+ assert_eq!(vec, [1, 2, 3, 4, 5, 6]);
+ assert_eq!(vec2, []);
+ }
+
+ #[test]
+ fn test_split_off() {
+ let mut vec = thin_vec![1, 2, 3, 4, 5, 6];
+ let vec2 = vec.split_off(4);
+ assert_eq!(vec, [1, 2, 3, 4]);
+ assert_eq!(vec2, [5, 6]);
+ }
+
+ /* TODO: implement into_iter methods?
+ #[test]
+ fn test_into_iter_as_slice() {
+ let vec = thin_vec!['a', 'b', 'c'];
+ let mut into_iter = vec.into_iter();
+ assert_eq!(into_iter.as_slice(), &['a', 'b', 'c']);
+ let _ = into_iter.next().unwrap();
+ assert_eq!(into_iter.as_slice(), &['b', 'c']);
+ let _ = into_iter.next().unwrap();
+ let _ = into_iter.next().unwrap();
+ assert_eq!(into_iter.as_slice(), &[]);
+ }
+
+ #[test]
+ fn test_into_iter_as_mut_slice() {
+ let vec = thin_vec!['a', 'b', 'c'];
+ let mut into_iter = vec.into_iter();
+ assert_eq!(into_iter.as_slice(), &['a', 'b', 'c']);
+ into_iter.as_mut_slice()[0] = 'x';
+ into_iter.as_mut_slice()[1] = 'y';
+ assert_eq!(into_iter.next().unwrap(), 'x');
+ assert_eq!(into_iter.as_slice(), &['y', 'c']);
+ }
+
+ #[test]
+ fn test_into_iter_debug() {
+ let vec = thin_vec!['a', 'b', 'c'];
+ let into_iter = vec.into_iter();
+ let debug = format!("{:?}", into_iter);
+ assert_eq!(debug, "IntoIter(['a', 'b', 'c'])");
+ }
+
+ #[test]
+ fn test_into_iter_count() {
+ assert_eq!(thin_vec![1, 2, 3].into_iter().count(), 3);
+ }
+
+ #[test]
+ fn test_into_iter_clone() {
+ fn iter_equal<I: Iterator<Item = i32>>(it: I, slice: &[i32]) {
+ let v: ThinVec<i32> = it.collect();
+ assert_eq!(&v[..], slice);
+ }
+ let mut it = thin_vec![1, 2, 3].into_iter();
+ iter_equal(it.clone(), &[1, 2, 3]);
+ assert_eq!(it.next(), Some(1));
+ let mut it = it.rev();
+ iter_equal(it.clone(), &[3, 2]);
+ assert_eq!(it.next(), Some(3));
+ iter_equal(it.clone(), &[2]);
+ assert_eq!(it.next(), Some(2));
+ iter_equal(it.clone(), &[]);
+ assert_eq!(it.next(), None);
+ }
+ */
+
+ /* TODO: implement CoW interop?
+ #[test]
+ fn test_cow_from() {
+ let borrowed: &[_] = &["borrowed", "(slice)"];
+ let owned = thin_vec!["owned", "(vec)"];
+ match (Cow::from(owned.clone()), Cow::from(borrowed)) {
+ (Cow::Owned(o), Cow::Borrowed(b)) => assert!(o == owned && b == borrowed),
+ _ => panic!("invalid `Cow::from`"),
+ }
+ }
+
+ #[test]
+ fn test_from_cow() {
+ let borrowed: &[_] = &["borrowed", "(slice)"];
+ let owned = thin_vec!["owned", "(vec)"];
+ assert_eq!(ThinVec::from(Cow::Borrowed(borrowed)), thin_vec!["borrowed", "(slice)"]);
+ assert_eq!(ThinVec::from(Cow::Owned(owned)), thin_vec!["owned", "(vec)"]);
+ }
+ */
+
+ /* TODO: make drain covariant
+ #[allow(dead_code)]
+ fn assert_covariance() {
+ fn drain<'new>(d: Drain<'static, &'static str>) -> Drain<'new, &'new str> {
+ d
+ }
+ fn into_iter<'new>(i: IntoIter<&'static str>) -> IntoIter<&'new str> {
+ i
+ }
+ }
+ */
+
+ /* TODO: specialize vec.into_iter().collect::<ThinVec<_>>();
+ #[test]
+ fn from_into_inner() {
+ let vec = thin_vec![1, 2, 3];
+ let ptr = vec.as_ptr();
+ let vec = vec.into_iter().collect::<ThinVec<_>>();
+ assert_eq!(vec, [1, 2, 3]);
+ assert_eq!(vec.as_ptr(), ptr);
+
+ let ptr = &vec[1] as *const _;
+ let mut it = vec.into_iter();
+ it.next().unwrap();
+ let vec = it.collect::<ThinVec<_>>();
+ assert_eq!(vec, [2, 3]);
+ assert!(ptr != vec.as_ptr());
+ }
+ */
+
+ /* TODO: implement higher than 16 alignment
+ #[test]
+ fn overaligned_allocations() {
+ #[repr(align(256))]
+ struct Foo(usize);
+ let mut v = thin_vec![Foo(273)];
+ for i in 0..0x1000 {
+ v.reserve_exact(i);
+ assert!(v[0].0 == 273);
+ assert!(v.as_ptr() as usize & 0xff == 0);
+ v.shrink_to_fit();
+ assert!(v[0].0 == 273);
+ assert!(v.as_ptr() as usize & 0xff == 0);
+ }
+ }
+ */
+
+ /* TODO: implement drain_filter?
+ #[test]
+ fn drain_filter_empty() {
+ let mut vec: ThinVec<i32> = thin_vec![];
+
+ {
+ let mut iter = vec.drain_filter(|_| true);
+ assert_eq!(iter.size_hint(), (0, Some(0)));
+ assert_eq!(iter.next(), None);
+ assert_eq!(iter.size_hint(), (0, Some(0)));
+ assert_eq!(iter.next(), None);
+ assert_eq!(iter.size_hint(), (0, Some(0)));
+ }
+ assert_eq!(vec.len(), 0);
+ assert_eq!(vec, thin_vec![]);
+ }
+
+ #[test]
+ fn drain_filter_zst() {
+ let mut vec = thin_vec![(), (), (), (), ()];
+ let initial_len = vec.len();
+ let mut count = 0;
+ {
+ let mut iter = vec.drain_filter(|_| true);
+ assert_eq!(iter.size_hint(), (0, Some(initial_len)));
+ while let Some(_) = iter.next() {
+ count += 1;
+ assert_eq!(iter.size_hint(), (0, Some(initial_len - count)));
+ }
+ assert_eq!(iter.size_hint(), (0, Some(0)));
+ assert_eq!(iter.next(), None);
+ assert_eq!(iter.size_hint(), (0, Some(0)));
+ }
+
+ assert_eq!(count, initial_len);
+ assert_eq!(vec.len(), 0);
+ assert_eq!(vec, thin_vec![]);
+ }
+
+ #[test]
+ fn drain_filter_false() {
+ let mut vec = thin_vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+
+ let initial_len = vec.len();
+ let mut count = 0;
+ {
+ let mut iter = vec.drain_filter(|_| false);
+ assert_eq!(iter.size_hint(), (0, Some(initial_len)));
+ for _ in iter.by_ref() {
+ count += 1;
+ }
+ assert_eq!(iter.size_hint(), (0, Some(0)));
+ assert_eq!(iter.next(), None);
+ assert_eq!(iter.size_hint(), (0, Some(0)));
+ }
+
+ assert_eq!(count, 0);
+ assert_eq!(vec.len(), initial_len);
+ assert_eq!(vec, thin_vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
+ }
+
+ #[test]
+ fn drain_filter_true() {
+ let mut vec = thin_vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+
+ let initial_len = vec.len();
+ let mut count = 0;
+ {
+ let mut iter = vec.drain_filter(|_| true);
+ assert_eq!(iter.size_hint(), (0, Some(initial_len)));
+ while let Some(_) = iter.next() {
+ count += 1;
+ assert_eq!(iter.size_hint(), (0, Some(initial_len - count)));
+ }
+ assert_eq!(iter.size_hint(), (0, Some(0)));
+ assert_eq!(iter.next(), None);
+ assert_eq!(iter.size_hint(), (0, Some(0)));
+ }
+
+ assert_eq!(count, initial_len);
+ assert_eq!(vec.len(), 0);
+ assert_eq!(vec, thin_vec![]);
+ }
+
+ #[test]
+ fn drain_filter_complex() {
+
+ { // [+xxx++++++xxxxx++++x+x++]
+ let mut vec = thin_vec![1,
+ 2, 4, 6,
+ 7, 9, 11, 13, 15, 17,
+ 18, 20, 22, 24, 26,
+ 27, 29, 31, 33,
+ 34,
+ 35,
+ 36,
+ 37, 39];
+
+ let removed = vec.drain_filter(|x| *x % 2 == 0).collect::<ThinVec<_>>();
+ assert_eq!(removed.len(), 10);
+ assert_eq!(removed, thin_vec![2, 4, 6, 18, 20, 22, 24, 26, 34, 36]);
+
+ assert_eq!(vec.len(), 14);
+ assert_eq!(vec, thin_vec![1, 7, 9, 11, 13, 15, 17, 27, 29, 31, 33, 35, 37, 39]);
+ }
+
+ { // [xxx++++++xxxxx++++x+x++]
+ let mut vec = thin_vec![2, 4, 6,
+ 7, 9, 11, 13, 15, 17,
+ 18, 20, 22, 24, 26,
+ 27, 29, 31, 33,
+ 34,
+ 35,
+ 36,
+ 37, 39];
+
+ let removed = vec.drain_filter(|x| *x % 2 == 0).collect::<ThinVec<_>>();
+ assert_eq!(removed.len(), 10);
+ assert_eq!(removed, thin_vec![2, 4, 6, 18, 20, 22, 24, 26, 34, 36]);
+
+ assert_eq!(vec.len(), 13);
+ assert_eq!(vec, thin_vec![7, 9, 11, 13, 15, 17, 27, 29, 31, 33, 35, 37, 39]);
+ }
+
+ { // [xxx++++++xxxxx++++x+x]
+ let mut vec = thin_vec![2, 4, 6,
+ 7, 9, 11, 13, 15, 17,
+ 18, 20, 22, 24, 26,
+ 27, 29, 31, 33,
+ 34,
+ 35,
+ 36];
+
+ let removed = vec.drain_filter(|x| *x % 2 == 0).collect::<ThinVec<_>>();
+ assert_eq!(removed.len(), 10);
+ assert_eq!(removed, thin_vec![2, 4, 6, 18, 20, 22, 24, 26, 34, 36]);
+
+ assert_eq!(vec.len(), 11);
+ assert_eq!(vec, thin_vec![7, 9, 11, 13, 15, 17, 27, 29, 31, 33, 35]);
+ }
+
+ { // [xxxxxxxxxx+++++++++++]
+ let mut vec = thin_vec![2, 4, 6, 8, 10, 12, 14, 16, 18, 20,
+ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
+
+ let removed = vec.drain_filter(|x| *x % 2 == 0).collect::<ThinVec<_>>();
+ assert_eq!(removed.len(), 10);
+ assert_eq!(removed, thin_vec![2, 4, 6, 8, 10, 12, 14, 16, 18, 20]);
+
+ assert_eq!(vec.len(), 10);
+ assert_eq!(vec, thin_vec![1, 3, 5, 7, 9, 11, 13, 15, 17, 19]);
+ }
+
+ { // [+++++++++++xxxxxxxxxx]
+ let mut vec = thin_vec![1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
+ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
+
+ let removed = vec.drain_filter(|x| *x % 2 == 0).collect::<ThinVec<_>>();
+ assert_eq!(removed.len(), 10);
+ assert_eq!(removed, thin_vec![2, 4, 6, 8, 10, 12, 14, 16, 18, 20]);
+
+ assert_eq!(vec.len(), 10);
+ assert_eq!(vec, thin_vec![1, 3, 5, 7, 9, 11, 13, 15, 17, 19]);
+ }
+ }
+ */
+ #[test]
+ fn test_reserve_exact() {
+ // This is all the same as test_reserve
+
+ let mut v = ThinVec::new();
+ assert_eq!(v.capacity(), 0);
+
+ v.reserve_exact(2);
+ assert!(v.capacity() >= 2);
+
+ for i in 0..16 {
+ v.push(i);
+ }
+
+ assert!(v.capacity() >= 16);
+ v.reserve_exact(16);
+ assert!(v.capacity() >= 32);
+
+ v.push(16);
+
+ v.reserve_exact(16);
+ assert!(v.capacity() >= 33)
+ }
+
+ /* TODO: implement try_reserve
+ #[test]
+ fn test_try_reserve() {
+
+ // These are the interesting cases:
+ // * exactly isize::MAX should never trigger a CapacityOverflow (can be OOM)
+ // * > isize::MAX should always fail
+ // * On 16/32-bit should CapacityOverflow
+ // * On 64-bit should OOM
+ // * overflow may trigger when adding `len` to `cap` (in number of elements)
+ // * overflow may trigger when multiplying `new_cap` by size_of::<T> (to get bytes)
+
+ const MAX_CAP: usize = isize::MAX as usize;
+ const MAX_USIZE: usize = usize::MAX;
+
+ // On 16/32-bit, we check that allocations don't exceed isize::MAX,
+ // on 64-bit, we assume the OS will give an OOM for such a ridiculous size.
+ // Any platform that succeeds for these requests is technically broken with
+ // ptr::offset because LLVM is the worst.
+ let guards_against_isize = size_of::<usize>() < 8;
+
+ {
+ // Note: basic stuff is checked by test_reserve
+ let mut empty_bytes: ThinVec<u8> = ThinVec::new();
+
+ // Check isize::MAX doesn't count as an overflow
+ if let Err(CapacityOverflow) = empty_bytes.try_reserve(MAX_CAP) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+ // Play it again, frank! (just to be sure)
+ if let Err(CapacityOverflow) = empty_bytes.try_reserve(MAX_CAP) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+
+ if guards_against_isize {
+ // Check isize::MAX + 1 does count as overflow
+ if let Err(CapacityOverflow) = empty_bytes.try_reserve(MAX_CAP + 1) {
+ } else { panic!("isize::MAX + 1 should trigger an overflow!") }
+
+ // Check usize::MAX does count as overflow
+ if let Err(CapacityOverflow) = empty_bytes.try_reserve(MAX_USIZE) {
+ } else { panic!("usize::MAX should trigger an overflow!") }
+ } else {
+ // Check isize::MAX + 1 is an OOM
+ if let Err(AllocErr) = empty_bytes.try_reserve(MAX_CAP + 1) {
+ } else { panic!("isize::MAX + 1 should trigger an OOM!") }
+
+ // Check usize::MAX is an OOM
+ if let Err(AllocErr) = empty_bytes.try_reserve(MAX_USIZE) {
+ } else { panic!("usize::MAX should trigger an OOM!") }
+ }
+ }
+
+
+ {
+ // Same basic idea, but with non-zero len
+ let mut ten_bytes: ThinVec<u8> = thin_vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+
+ if let Err(CapacityOverflow) = ten_bytes.try_reserve(MAX_CAP - 10) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+ if let Err(CapacityOverflow) = ten_bytes.try_reserve(MAX_CAP - 10) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+ if guards_against_isize {
+ if let Err(CapacityOverflow) = ten_bytes.try_reserve(MAX_CAP - 9) {
+ } else { panic!("isize::MAX + 1 should trigger an overflow!"); }
+ } else {
+ if let Err(AllocErr) = ten_bytes.try_reserve(MAX_CAP - 9) {
+ } else { panic!("isize::MAX + 1 should trigger an OOM!") }
+ }
+ // Should always overflow in the add-to-len
+ if let Err(CapacityOverflow) = ten_bytes.try_reserve(MAX_USIZE) {
+ } else { panic!("usize::MAX should trigger an overflow!") }
+ }
+
+
+ {
+ // Same basic idea, but with interesting type size
+ let mut ten_u32s: ThinVec<u32> = thin_vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+
+ if let Err(CapacityOverflow) = ten_u32s.try_reserve(MAX_CAP/4 - 10) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+ if let Err(CapacityOverflow) = ten_u32s.try_reserve(MAX_CAP/4 - 10) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+ if guards_against_isize {
+ if let Err(CapacityOverflow) = ten_u32s.try_reserve(MAX_CAP/4 - 9) {
+ } else { panic!("isize::MAX + 1 should trigger an overflow!"); }
+ } else {
+ if let Err(AllocErr) = ten_u32s.try_reserve(MAX_CAP/4 - 9) {
+ } else { panic!("isize::MAX + 1 should trigger an OOM!") }
+ }
+ // Should fail in the mul-by-size
+ if let Err(CapacityOverflow) = ten_u32s.try_reserve(MAX_USIZE - 20) {
+ } else {
+ panic!("usize::MAX should trigger an overflow!");
+ }
+ }
+
+ }
+
+ #[test]
+ fn test_try_reserve_exact() {
+
+ // This is exactly the same as test_try_reserve with the method changed.
+ // See that test for comments.
+
+ const MAX_CAP: usize = isize::MAX as usize;
+ const MAX_USIZE: usize = usize::MAX;
+
+ let guards_against_isize = size_of::<usize>() < 8;
+
+ {
+ let mut empty_bytes: ThinVec<u8> = ThinVec::new();
+
+ if let Err(CapacityOverflow) = empty_bytes.try_reserve_exact(MAX_CAP) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+ if let Err(CapacityOverflow) = empty_bytes.try_reserve_exact(MAX_CAP) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+
+ if guards_against_isize {
+ if let Err(CapacityOverflow) = empty_bytes.try_reserve_exact(MAX_CAP + 1) {
+ } else { panic!("isize::MAX + 1 should trigger an overflow!") }
+
+ if let Err(CapacityOverflow) = empty_bytes.try_reserve_exact(MAX_USIZE) {
+ } else { panic!("usize::MAX should trigger an overflow!") }
+ } else {
+ if let Err(AllocErr) = empty_bytes.try_reserve_exact(MAX_CAP + 1) {
+ } else { panic!("isize::MAX + 1 should trigger an OOM!") }
+
+ if let Err(AllocErr) = empty_bytes.try_reserve_exact(MAX_USIZE) {
+ } else { panic!("usize::MAX should trigger an OOM!") }
+ }
+ }
+
+
+ {
+ let mut ten_bytes: ThinVec<u8> = thin_vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+
+ if let Err(CapacityOverflow) = ten_bytes.try_reserve_exact(MAX_CAP - 10) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+ if let Err(CapacityOverflow) = ten_bytes.try_reserve_exact(MAX_CAP - 10) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+ if guards_against_isize {
+ if let Err(CapacityOverflow) = ten_bytes.try_reserve_exact(MAX_CAP - 9) {
+ } else { panic!("isize::MAX + 1 should trigger an overflow!"); }
+ } else {
+ if let Err(AllocErr) = ten_bytes.try_reserve_exact(MAX_CAP - 9) {
+ } else { panic!("isize::MAX + 1 should trigger an OOM!") }
+ }
+ if let Err(CapacityOverflow) = ten_bytes.try_reserve_exact(MAX_USIZE) {
+ } else { panic!("usize::MAX should trigger an overflow!") }
+ }
+
+
+ {
+ let mut ten_u32s: ThinVec<u32> = thin_vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+
+ if let Err(CapacityOverflow) = ten_u32s.try_reserve_exact(MAX_CAP/4 - 10) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+ if let Err(CapacityOverflow) = ten_u32s.try_reserve_exact(MAX_CAP/4 - 10) {
+ panic!("isize::MAX shouldn't trigger an overflow!");
+ }
+ if guards_against_isize {
+ if let Err(CapacityOverflow) = ten_u32s.try_reserve_exact(MAX_CAP/4 - 9) {
+ } else { panic!("isize::MAX + 1 should trigger an overflow!"); }
+ } else {
+ if let Err(AllocErr) = ten_u32s.try_reserve_exact(MAX_CAP/4 - 9) {
+ } else { panic!("isize::MAX + 1 should trigger an OOM!") }
+ }
+ if let Err(CapacityOverflow) = ten_u32s.try_reserve_exact(MAX_USIZE - 20) {
+ } else { panic!("usize::MAX should trigger an overflow!") }
+ }
+ }
+ */
+
+ #[test]
+ #[cfg_attr(feature = "gecko-ffi", ignore)]
+ fn test_header_data() {
+ macro_rules! assert_aligned_head_ptr {
+ ($typename:ty) => {{
+ let v: ThinVec<$typename> = ThinVec::with_capacity(1 /* ensure allocation */);
+ let head_ptr: *mut $typename = v.data_raw();
+ assert_eq!(
+ head_ptr as usize % std::mem::align_of::<$typename>(),
+ 0,
+ "expected Header::data<{}> to be aligned",
+ stringify!($typename)
+ );
+ }};
+ }
+
+ const HEADER_SIZE: usize = std::mem::size_of::<Header>();
+ assert_eq!(2 * std::mem::size_of::<usize>(), HEADER_SIZE);
+
+ #[repr(C, align(128))]
+ struct Funky<T>(T);
+ assert_eq!(padding::<Funky<()>>(), 128 - HEADER_SIZE);
+ assert_aligned_head_ptr!(Funky<()>);
+
+ assert_eq!(padding::<Funky<u8>>(), 128 - HEADER_SIZE);
+ assert_aligned_head_ptr!(Funky<u8>);
+
+ assert_eq!(padding::<Funky<[(); 1024]>>(), 128 - HEADER_SIZE);
+ assert_aligned_head_ptr!(Funky<[(); 1024]>);
+
+ assert_eq!(padding::<Funky<[*mut usize; 1024]>>(), 128 - HEADER_SIZE);
+ assert_aligned_head_ptr!(Funky<[*mut usize; 1024]>);
+ }
+
+ #[cfg(feature = "serde")]
+ use serde_test::{assert_tokens, Token};
+
+ #[test]
+ #[cfg(feature = "serde")]
+ fn test_ser_de_empty() {
+ let vec = ThinVec::<u32>::new();
+
+ assert_tokens(&vec, &[Token::Seq { len: Some(0) }, Token::SeqEnd]);
+ }
+
+ #[test]
+ #[cfg(feature = "serde")]
+ fn test_ser_de() {
+ let mut vec = ThinVec::<u32>::new();
+ vec.push(20);
+ vec.push(55);
+ vec.push(123);
+
+ assert_tokens(
+ &vec,
+ &[
+ Token::Seq { len: Some(3) },
+ Token::U32(20),
+ Token::U32(55),
+ Token::U32(123),
+ Token::SeqEnd,
+ ],
+ );
+ }
+
+ #[test]
+ fn test_set_len() {
+ let mut vec: ThinVec<u32> = thin_vec![];
+ unsafe {
+ vec.set_len(0); // at one point this caused a crash
+ }
+ }
+
+ #[test]
+ #[should_panic(expected = "invalid set_len(1) on empty ThinVec")]
+ fn test_set_len_invalid() {
+ let mut vec: ThinVec<u32> = thin_vec![];
+ unsafe {
+ vec.set_len(1);
+ }
+ }
+}
diff --git a/vendor/thiserror-impl/.cargo-checksum.json b/vendor/thiserror-impl/.cargo-checksum.json
index a1c0ef900..e398ffbb5 100644
--- a/vendor/thiserror-impl/.cargo-checksum.json
+++ b/vendor/thiserror-impl/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"4089f6b56d562de455fa1c98d3122512e8289085508d055366059f00f14060e9","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","src/ast.rs":"c7601e8394f5ee304365c520181f0dbeaa807ddaa71ce4a8618ea1a70f81b3b2","src/attr.rs":"d1fe75dde04cb8df6da4e1aaec5b38c2b0f634fa3432877993b3fec4cc08b6b5","src/expand.rs":"cf6b969e8ecaaf3a6b31ffebce395e1882a9f263985970041c6e687f0ce5a6cd","src/fmt.rs":"d63d39120c18712596f9f2a1715821148c2becd4d8bad5bc1b307210a84dbe98","src/generics.rs":"ac493703c9955400d4fab22cbbdbbc4bf4f6f72c112b34be8b784142142ff74f","src/lib.rs":"57dce312458895d25c6fd0ef3111362b053edd2f5e0ee04d19edb33bd3c1afbd","src/prop.rs":"6709932aee8f9d217f40cd644629c0ecb2f46d333ae8a1398e8d745534f4e028","src/valid.rs":"93317a8342891dc4569cfdd5f64a8c64cdec8fff49911428427b0621974eec32"},"package":"aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b"} \ No newline at end of file
+{"files":{"Cargo.toml":"af63bbe7a8ec50e29f44aa648a65afd05486852589b467030d28bbd7e0c878f4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","src/ast.rs":"c7601e8394f5ee304365c520181f0dbeaa807ddaa71ce4a8618ea1a70f81b3b2","src/attr.rs":"d1fe75dde04cb8df6da4e1aaec5b38c2b0f634fa3432877993b3fec4cc08b6b5","src/expand.rs":"8e2bc7ca24e8f8d9b179b792e772d3699154b750a08dcb942be298b7cc032563","src/fmt.rs":"d63d39120c18712596f9f2a1715821148c2becd4d8bad5bc1b307210a84dbe98","src/generics.rs":"2076cde22271be355a8131a77add4b93f83ab0af4317cd2df5471fffa4f95c66","src/lib.rs":"7d023310cd3db670554ce108a6afd94e1ae3c55c83661d4b9fcebdf1865b9e4b","src/prop.rs":"6709932aee8f9d217f40cd644629c0ecb2f46d333ae8a1398e8d745534f4e028","src/valid.rs":"ac95253944fd360d3578d0643a7baabb2cfa6bf9fbced7a6ce1f7b0529a3bb98"},"package":"982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb"} \ No newline at end of file
diff --git a/vendor/thiserror-impl/Cargo.toml b/vendor/thiserror-impl/Cargo.toml
index 97e0042c1..9f832394e 100644
--- a/vendor/thiserror-impl/Cargo.toml
+++ b/vendor/thiserror-impl/Cargo.toml
@@ -13,16 +13,18 @@
edition = "2018"
rust-version = "1.31"
name = "thiserror-impl"
-version = "1.0.30"
+version = "1.0.37"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "Implementation detail of the `thiserror` crate"
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/thiserror"
+
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]
[lib]
proc-macro = true
+
[dependencies.proc-macro2]
version = "1.0"
diff --git a/vendor/thiserror-impl/src/expand.rs b/vendor/thiserror-impl/src/expand.rs
index 435ad4847..43522096a 100644
--- a/vendor/thiserror-impl/src/expand.rs
+++ b/vendor/thiserror-impl/src/expand.rs
@@ -53,51 +53,59 @@ fn impl_struct(input: Struct) -> TokenStream {
let source_method = source_body.map(|body| {
quote! {
fn source(&self) -> std::option::Option<&(dyn std::error::Error + 'static)> {
- use thiserror::private::AsDynError;
+ use thiserror::__private::AsDynError;
#body
}
}
});
- let backtrace_method = input.backtrace_field().map(|backtrace_field| {
+ let provide_method = input.backtrace_field().map(|backtrace_field| {
+ let demand = quote!(demand);
let backtrace = &backtrace_field.member;
let body = if let Some(source_field) = input.source_field() {
let source = &source_field.member;
- let source_backtrace = if type_is_option(source_field.ty) {
+ let source_provide = if type_is_option(source_field.ty) {
quote_spanned! {source.span()=>
- self.#source.as_ref().and_then(|source| source.as_dyn_error().backtrace())
+ if let std::option::Option::Some(source) = &self.#source {
+ source.thiserror_provide(#demand);
+ }
}
} else {
quote_spanned! {source.span()=>
- self.#source.as_dyn_error().backtrace()
+ self.#source.thiserror_provide(#demand);
}
};
- let combinator = if source == backtrace {
- source_backtrace
+ let self_provide = if source == backtrace {
+ None
} else if type_is_option(backtrace_field.ty) {
- quote! {
- #source_backtrace.or(self.#backtrace.as_ref())
- }
+ Some(quote! {
+ if let std::option::Option::Some(backtrace) = &self.#backtrace {
+ #demand.provide_ref::<std::backtrace::Backtrace>(backtrace);
+ }
+ })
} else {
- quote! {
- std::option::Option::Some(#source_backtrace.unwrap_or(&self.#backtrace))
- }
+ Some(quote! {
+ #demand.provide_ref::<std::backtrace::Backtrace>(&self.#backtrace);
+ })
};
quote! {
- use thiserror::private::AsDynError;
- #combinator
+ use thiserror::__private::ThiserrorProvide;
+ #source_provide
+ #self_provide
}
} else if type_is_option(backtrace_field.ty) {
quote! {
- self.#backtrace.as_ref()
+ if let std::option::Option::Some(backtrace) = &self.#backtrace {
+ #demand.provide_ref::<std::backtrace::Backtrace>(backtrace);
+ }
}
} else {
quote! {
- std::option::Option::Some(&self.#backtrace)
+ #demand.provide_ref::<std::backtrace::Backtrace>(&self.#backtrace);
}
};
quote! {
- fn backtrace(&self) -> std::option::Option<&std::backtrace::Backtrace> {
+ fn provide<'_demand>(&'_demand self, #demand: &mut std::any::Demand<'_demand>) {
#body
}
}
@@ -115,7 +123,7 @@ fn impl_struct(input: Struct) -> TokenStream {
let use_as_display = if display.has_bonus_display {
Some(quote! {
#[allow(unused_imports)]
- use thiserror::private::{DisplayAsDisplay, PathAsDisplay};
+ use thiserror::__private::{DisplayAsDisplay, PathAsDisplay};
})
} else {
None
@@ -177,7 +185,7 @@ fn impl_struct(input: Struct) -> TokenStream {
#[allow(unused_qualifications)]
impl #impl_generics #error_trait for #ty #ty_generics #error_where_clause {
#source_method
- #backtrace_method
+ #provide_method
}
#display_impl
#from_impl
@@ -226,7 +234,7 @@ fn impl_enum(input: Enum) -> TokenStream {
});
Some(quote! {
fn source(&self) -> std::option::Option<&(dyn std::error::Error + 'static)> {
- use thiserror::private::AsDynError;
+ use thiserror::__private::AsDynError;
#[allow(deprecated)]
match self {
#(#arms)*
@@ -237,7 +245,8 @@ fn impl_enum(input: Enum) -> TokenStream {
None
};
- let backtrace_method = if input.has_backtrace() {
+ let provide_method = if input.has_backtrace() {
+ let demand = quote!(demand);
let arms = input.variants.iter().map(|variant| {
let ident = &variant.ident;
match (variant.backtrace_field(), variant.source_field()) {
@@ -247,22 +256,26 @@ fn impl_enum(input: Enum) -> TokenStream {
let backtrace = &backtrace_field.member;
let source = &source_field.member;
let varsource = quote!(source);
- let source_backtrace = if type_is_option(source_field.ty) {
+ let source_provide = if type_is_option(source_field.ty) {
quote_spanned! {source.span()=>
- #varsource.as_ref().and_then(|source| source.as_dyn_error().backtrace())
+ if let std::option::Option::Some(source) = #varsource {
+ source.thiserror_provide(#demand);
+ }
}
} else {
quote_spanned! {source.span()=>
- #varsource.as_dyn_error().backtrace()
+ #varsource.thiserror_provide(#demand);
}
};
- let combinator = if type_is_option(backtrace_field.ty) {
+ let self_provide = if type_is_option(backtrace_field.ty) {
quote! {
- #source_backtrace.or(backtrace.as_ref())
+ if let std::option::Option::Some(backtrace) = backtrace {
+ #demand.provide_ref::<std::backtrace::Backtrace>(backtrace);
+ }
}
} else {
quote! {
- std::option::Option::Some(#source_backtrace.unwrap_or(backtrace))
+ #demand.provide_ref::<std::backtrace::Backtrace>(backtrace);
}
};
quote! {
@@ -271,8 +284,9 @@ fn impl_enum(input: Enum) -> TokenStream {
#source: #varsource,
..
} => {
- use thiserror::private::AsDynError;
- #combinator
+ use thiserror::__private::ThiserrorProvide;
+ #source_provide
+ #self_provide
}
}
}
@@ -281,40 +295,50 @@ fn impl_enum(input: Enum) -> TokenStream {
{
let backtrace = &backtrace_field.member;
let varsource = quote!(source);
- let source_backtrace = if type_is_option(source_field.ty) {
+ let source_provide = if type_is_option(source_field.ty) {
quote_spanned! {backtrace.span()=>
- #varsource.as_ref().and_then(|source| source.as_dyn_error().backtrace())
+ if let std::option::Option::Some(source) = #varsource {
+ source.thiserror_provide(#demand);
+ }
}
} else {
quote_spanned! {backtrace.span()=>
- #varsource.as_dyn_error().backtrace()
+ #varsource.thiserror_provide(#demand);
}
};
quote! {
#ty::#ident {#backtrace: #varsource, ..} => {
- use thiserror::private::AsDynError;
- #source_backtrace
+ use thiserror::__private::ThiserrorProvide;
+ #source_provide
}
}
}
(Some(backtrace_field), _) => {
let backtrace = &backtrace_field.member;
let body = if type_is_option(backtrace_field.ty) {
- quote!(backtrace.as_ref())
+ quote! {
+ if let std::option::Option::Some(backtrace) = backtrace {
+ #demand.provide_ref::<std::backtrace::Backtrace>(backtrace);
+ }
+ }
} else {
- quote!(std::option::Option::Some(backtrace))
+ quote! {
+ #demand.provide_ref::<std::backtrace::Backtrace>(backtrace);
+ }
};
quote! {
- #ty::#ident {#backtrace: backtrace, ..} => #body,
+ #ty::#ident {#backtrace: backtrace, ..} => {
+ #body
+ }
}
}
(None, _) => quote! {
- #ty::#ident {..} => std::option::Option::None,
+ #ty::#ident {..} => {}
},
}
});
Some(quote! {
- fn backtrace(&self) -> std::option::Option<&std::backtrace::Backtrace> {
+ fn provide<'_demand>(&'_demand self, #demand: &mut std::any::Demand<'_demand>) {
#[allow(deprecated)]
match self {
#(#arms)*
@@ -335,7 +359,7 @@ fn impl_enum(input: Enum) -> TokenStream {
}) {
Some(quote! {
#[allow(unused_imports)]
- use thiserror::private::{DisplayAsDisplay, PathAsDisplay};
+ use thiserror::__private::{DisplayAsDisplay, PathAsDisplay};
})
} else {
None
@@ -420,7 +444,7 @@ fn impl_enum(input: Enum) -> TokenStream {
#[allow(unused_qualifications)]
impl #impl_generics #error_trait for #ty #ty_generics #error_where_clause {
#source_method
- #backtrace_method
+ #provide_method
}
#display_impl
#(#from_impls)*
diff --git a/vendor/thiserror-impl/src/generics.rs b/vendor/thiserror-impl/src/generics.rs
index 254c2ed35..95592a737 100644
--- a/vendor/thiserror-impl/src/generics.rs
+++ b/vendor/thiserror-impl/src/generics.rs
@@ -57,6 +57,7 @@ impl InferredBounds {
}
}
+ #[allow(clippy::type_repetition_in_bounds, clippy::trait_duplication_in_bounds)] // clippy bug: https://github.com/rust-lang/rust-clippy/issues/8771
pub fn insert(&mut self, ty: impl ToTokens, bound: impl ToTokens) {
let ty = ty.to_token_stream();
let bound = bound.to_token_stream();
diff --git a/vendor/thiserror-impl/src/lib.rs b/vendor/thiserror-impl/src/lib.rs
index a4d5ae7d5..f0fc96917 100644
--- a/vendor/thiserror-impl/src/lib.rs
+++ b/vendor/thiserror-impl/src/lib.rs
@@ -1,13 +1,16 @@
#![allow(
clippy::blocks_in_if_conditions,
+ clippy::cast_lossless,
clippy::cast_possible_truncation,
+ clippy::manual_find,
clippy::manual_map,
clippy::map_unwrap_or,
clippy::needless_pass_by_value,
clippy::option_if_let_else,
clippy::range_plus_one,
clippy::single_match_else,
- clippy::too_many_lines
+ clippy::too_many_lines,
+ clippy::wrong_self_convention
)]
extern crate proc_macro;
diff --git a/vendor/thiserror-impl/src/valid.rs b/vendor/thiserror-impl/src/valid.rs
index 7657265ef..cf5b8592c 100644
--- a/vendor/thiserror-impl/src/valid.rs
+++ b/vendor/thiserror-impl/src/valid.rs
@@ -180,7 +180,11 @@ fn check_field_attrs(fields: &[Field]) -> Result<()> {
}
}
if let Some(from_field) = from_field {
- if fields.len() > 1 + has_backtrace as usize {
+ let max_expected_fields = match backtrace_field {
+ Some(backtrace_field) => 1 + !same_member(from_field, backtrace_field) as usize,
+ None => 1 + has_backtrace as usize,
+ };
+ if fields.len() > max_expected_fields {
return Err(Error::new_spanned(
from_field.attrs.from,
"deriving From requires no fields other than source and backtrace",
diff --git a/vendor/thiserror/.cargo-checksum.json b/vendor/thiserror/.cargo-checksum.json
index 0b30f4e65..b82148e8f 100644
--- a/vendor/thiserror/.cargo-checksum.json
+++ b/vendor/thiserror/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"4e67c7ab97838c17f0db6b027bbddfb59f549bf5b965f2e9e11863c522d6a80a","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"a9f0f8261b1cb4b7a5e6e32242f511339e74452e44a92b6e6158c665108acb9f","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/aserror.rs":"3dd14cfcfe4a0ab8b1dd774e4ea0a0197989afe84e0687e73873b61cfa4347fa","src/display.rs":"63c492bfa8b8e9180ad5abcbe63c1173b4ad490c47ec33cac9a338f96c8f8e42","src/lib.rs":"7e740a989ed7fe4f851a0a3ea3143b655a907a81a755034a84171466ab44f94b","tests/compiletest.rs":"c61425723ca4eeb4a9079495c0e9640a9d210780b47e183fdb09ee2ad6887ce6","tests/test_backtrace.rs":"32175af055514c4d8ee20923bdf26bf64b060e8642d8be3c50b77187d81c3acf","tests/test_display.rs":"dde5540dd4b47613ae9e3a1360ced832131a86c83ccc7da2bb89042062aa5d5e","tests/test_error.rs":"994f35bba245cbdc08c094094b9c1440a0a2b48333663c73c6a96e772ae5d3d8","tests/test_expr.rs":"cd42633c0b0a0f595a5c498e576ca50b3a1c555c54b4652bdd296a4073771a61","tests/test_from.rs":"41f2fbc391d95be68aefea3e4ae59bb71074bb020b0a1e109acbdea1f45e7666","tests/test_generics.rs":"4ca6a1a47bfc0095783133b7db9f626d176f65ca077cc15847f6ef5caff2d881","tests/test_lints.rs":"c17d79d77edfcdd4b8f6dcdcd1c70ad065cfbc747e1a618ac6343315d0b59ea4","tests/test_option.rs":"a3510dc1aef5a2dc995188506a560d7597d38717408606dece0b50a30d39bc26","tests/test_path.rs":"8f25b9be8940b9c41b254ae1bd265851e593734488fb0dbf94444bb583b95944","tests/test_source.rs":"6c352c520ead863601043f9c4a23751e235e710790f5c11f56f817a8811eb94f","tests/test_transparent.rs":"410a1328202e70bf64301737d4dda700bd9f073faacd3e50bdc4a7ddeddc8aa1","tests/ui/bad-field-attr.rs":"c5b567e3091969a01061843fb2d95c5e1aa3fa81edfeecdf416a84a6fba40aa8","tests/ui/bad-field-attr.stderr":"78f576d5ec66464a77f1cdf0f5bb7dcdf18f7f04f1165983a6239ec59d908ea3","tests/ui/concat-display.rs":"3995bd6b3bdd67df7bb16499775d89600c0dd20895633fe807396a64c117078d","tests/ui/concat-display.stderr":"f8ee9f2003def1b60b482e0fe01a61a2b77fd82508454a843dc6df60b8c92051","tests/ui/duplicate-enum-source.rs":"bfe28ce18042d446a76c7411aa233598211ce1157fdd3cb87bff3b3fa7c33131","tests/ui/duplicate-enum-source.stderr":"3d32fead420b27b4497be49080bc3b78f7f0ba339ead3de6c94e5dc20302c18f","tests/ui/duplicate-fmt.rs":"af53b66445bcce076a114376747f176b42c060a156563a41ccb638ae14c451fd","tests/ui/duplicate-fmt.stderr":"998bb121ce6f1595fd99529a7a1b06451b6bf476924337dce5524a83a7a5f1a1","tests/ui/duplicate-struct-source.rs":"f3d5f8e3d6fccfcdbb630db291353709583a920c6bf46f9f9de9966b67ea4c0f","tests/ui/duplicate-struct-source.stderr":"fb761d76668ac42357cf37b03c0abdbae5de0a828034990850291c9cb6ab766d","tests/ui/duplicate-transparent.rs":"41a9447e85f1a47027023442acde55c3d8610ec46d91b39bd43a42d7a004d747","tests/ui/duplicate-transparent.stderr":"4975abad43e973df158f18098d9bcb9dc39f8e75d3e733ed5d6620d1ee065c11","tests/ui/from-not-source.rs":"744a55aeffe11066830159ac023c33aaa5576e313b341fa24440ee13dfe3ac98","tests/ui/from-not-source.stderr":"525038e8b841707b927434cca4549168f73bd305faca17552a0d1fffa542ccc4","tests/ui/lifetime.rs":"e72e0391695e47fcd07edbf3819f114e468e2097086ec687781c7c8d6b4b7da7","tests/ui/lifetime.stderr":"d889a23f71324afe95dafc5f9d15337fbdbc9977cb8924f0cafe3a3becf4ced7","tests/ui/missing-fmt.rs":"bc9e2830e54c2474ff6c27a766ed3dee88d29e40f93f30e8d64d63233866c17d","tests/ui/missing-fmt.stderr":"9a20ccee9b660fe31a5b3199307b48580bb8305cb9ce33d97d3fc767a0cfc614","tests/ui/no-display.rs":"962245372272d23e9833311c15e73221b3c7da822a2ff90189613af56ffb5c2e","tests/ui/no-display.stderr":"d1d9e24b4689cd09e784ab9b62721f77a6fa5f4372ba45300997d2569ff7aa9a","tests/ui/source-enum-not-error.rs":"7c57c63b3ec37bc456738acea2e1038de5b0f32fe7e83984037d7ad1ed921737","tests/ui/source-enum-not-error.stderr":"897d610f1114bd108fa607f038f93438d57a1cc711db26ccb4e20ef31248386a","tests/ui/source-struct-not-error.rs":"09fb7713637242dca9192585a6daeb8d732dc1c1d0fa522b74f1c98618e6d949","tests/ui/source-struct-not-error.stderr":"a310d33021a1a1ed0a61090e7d60236a3c4da478a14ae7635c124779348ce831","tests/ui/transparent-display.rs":"b3c59583eb64b0b5a246444456d03cf52d51bcdc08885023600dbb44fd87e5f2","tests/ui/transparent-display.stderr":"16d538914e0d92026bde4b4bec75660217da9ecc6b621d12d2eb81d33ed1d1da","tests/ui/transparent-enum-many.rs":"2a40a764fb4683bff57973eec61507a6c00f7d4d7a32da6e7bd0190c2e445434","tests/ui/transparent-enum-many.stderr":"f1d78c1d6d8edbef153420db4fb9ca3dc6076fa043b5b1bc0cd291daa417a3ea","tests/ui/transparent-enum-source.rs":"18f606a98ac0a53f08dc56f5f923b9cbe75d25ed34479c777b48dac305d5968c","tests/ui/transparent-enum-source.stderr":"1b2e0ac53951034575d43ec0396c4e2b3cfb272db2aef8d6baa13a7e1632cc84","tests/ui/transparent-struct-many.rs":"72c6b6c1a44c203d3bc68989b2f1ec092531ef75b745432824c3776c290326f6","tests/ui/transparent-struct-many.stderr":"7bd0536dbb54a0ce7d4a8e66ca7624a1b132d8a1d1e4fecca642ec77494ac01c","tests/ui/transparent-struct-source.rs":"863fa691ed7d27e8767da58d9ee11fd40d6642274b36338ca1074c07964ea2b3","tests/ui/transparent-struct-source.stderr":"267dab65929e67d32347fb467a00b43af931f8205d727d7671938580217fc70e","tests/ui/unexpected-field-fmt.rs":"29fba7b4d81c642ec8e47cfe053aa515acf9080a86d65e685363a48993becfe3","tests/ui/unexpected-field-fmt.stderr":"20731c4a08af04bed3ff513903adadd690b6bc532b15604557e7f25575a8338f","tests/ui/unexpected-struct-source.rs":"c6cbe882d622635c216feb8290b1bd536ce0ec4feee16bc087667a21b3641d5c","tests/ui/unexpected-struct-source.stderr":"7c8227513478f6cc09e8a28be337c8a0e758a06ca5978d774c91bd43c4a54043","tests/ui/union.rs":"331adff27cebd8b95b03b6742cc8247331fda1f961e1590ed39c8d39f50cf1d8","tests/ui/union.stderr":"5f67ad29753d6fb14bc03aef7d4a1f660ee7796e469c037efbf8b13456934ad3"},"package":"854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417"} \ No newline at end of file
+{"files":{"Cargo.toml":"1d01528e44c86dd86ee07557c6cd89bd3cf37a2456e6f3430af299d84f304035","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"959ac4d4dc43ce39235613d853db8df4a0cfd79e262fc38aba43a98331643952","build.rs":"8b8d9cbf84b9a2fd108b49ecb4bae327da688d80b818acda9ee17170c788e193","rust-toolchain.toml":"6bbb61302978c736b2da03e4fb40e3beab908f85d533ab46fd541e637b5f3e0f","src/aserror.rs":"c93bd9191f26a7599043b397e26822564d9bafaa339a19861182a9909e8a3811","src/display.rs":"63c492bfa8b8e9180ad5abcbe63c1173b4ad490c47ec33cac9a338f96c8f8e42","src/lib.rs":"3fcc3c1ab31a64215978b92e68c1421ec8c5fcb942e57eb35adb9cc07a865730","src/provide.rs":"b2f7a33f44f44a03e94f54cc4b79ba2dcc5fcf0fdf64b07cdd9588a6544c8d8e","tests/compiletest.rs":"022a8e400ef813d7ea1875b944549cee5125f6a995dc33e93b48cba3e1b57bd1","tests/test_backtrace.rs":"fd1f326bc23e6c1611a51bc43c1d5092b32ee18a1613abe20da0818e5729c0ed","tests/test_deprecated.rs":"7b80a10f090a3982da017556d3d71398abcead59afd8278c7b9d9b1f7b66c7b3","tests/test_display.rs":"20fdc8903f06da3a698ef4377cccca26a71138ca6de67310c5bdb8a9fcb39d83","tests/test_error.rs":"d06dca3c38f22d7ce4e27dadd6c0f78e5cefe3a2ebbc5fe44abc9ddd5ee1985f","tests/test_expr.rs":"388402702a3be4ffcd0574d66733e8932bf7d5de37544a00ecb0e4f8d8246da4","tests/test_from.rs":"de1347e62069f826d8616b9e45ce6cccc3a8a8049cb51bd22d6763efe6118b0c","tests/test_generics.rs":"4f33747e3f62550d5af94687679af230ef92fbb3247ae4b41df46792a040e4dc","tests/test_lints.rs":"c17d79d77edfcdd4b8f6dcdcd1c70ad065cfbc747e1a618ac6343315d0b59ea4","tests/test_option.rs":"3a82af1ad206444b9955e3f2fda508d70f887ad0b7f7986bafc17496f63b07ab","tests/test_path.rs":"ef5452c7e828a0179f5ace7e19f95b9762aa887caf10244adbfe36ded712c090","tests/test_source.rs":"f2f04f11bf8a709eddb1c68f113cda0c2be87e56800d6b9d991bedd545b4642f","tests/test_transparent.rs":"cd8d5be14d00d610a1782104bea6c013618501dab5c3625178ecfcf66e31f939","tests/ui/bad-field-attr.rs":"c5b567e3091969a01061843fb2d95c5e1aa3fa81edfeecdf416a84a6fba40aa8","tests/ui/bad-field-attr.stderr":"78f576d5ec66464a77f1cdf0f5bb7dcdf18f7f04f1165983a6239ec59d908ea3","tests/ui/concat-display.rs":"3995bd6b3bdd67df7bb16499775d89600c0dd20895633fe807396a64c117078d","tests/ui/concat-display.stderr":"256dfde61ee689ebe51588b135e2e030bdf95ba5adef1cb59f588c797bbdeef2","tests/ui/duplicate-enum-source.rs":"bfe28ce18042d446a76c7411aa233598211ce1157fdd3cb87bff3b3fa7c33131","tests/ui/duplicate-enum-source.stderr":"3d32fead420b27b4497be49080bc3b78f7f0ba339ead3de6c94e5dc20302c18f","tests/ui/duplicate-fmt.rs":"af53b66445bcce076a114376747f176b42c060a156563a41ccb638ae14c451fd","tests/ui/duplicate-fmt.stderr":"998bb121ce6f1595fd99529a7a1b06451b6bf476924337dce5524a83a7a5f1a1","tests/ui/duplicate-struct-source.rs":"f3d5f8e3d6fccfcdbb630db291353709583a920c6bf46f9f9de9966b67ea4c0f","tests/ui/duplicate-struct-source.stderr":"fb761d76668ac42357cf37b03c0abdbae5de0a828034990850291c9cb6ab766d","tests/ui/duplicate-transparent.rs":"41a9447e85f1a47027023442acde55c3d8610ec46d91b39bd43a42d7a004d747","tests/ui/duplicate-transparent.stderr":"4975abad43e973df158f18098d9bcb9dc39f8e75d3e733ed5d6620d1ee065c11","tests/ui/from-backtrace-backtrace.rs":"1fd51c5a1f7f6b6ee676d9fc798b6276ef2ce75def33d07f0e4b7bbde3291859","tests/ui/from-backtrace-backtrace.stderr":"f9774e9dad51374501ef4a55fa2dacece4d1c70e29ca18761394bdb80a9a74da","tests/ui/from-not-source.rs":"744a55aeffe11066830159ac023c33aaa5576e313b341fa24440ee13dfe3ac98","tests/ui/from-not-source.stderr":"525038e8b841707b927434cca4549168f73bd305faca17552a0d1fffa542ccc4","tests/ui/lifetime.rs":"e72e0391695e47fcd07edbf3819f114e468e2097086ec687781c7c8d6b4b7da7","tests/ui/lifetime.stderr":"d889a23f71324afe95dafc5f9d15337fbdbc9977cb8924f0cafe3a3becf4ced7","tests/ui/missing-fmt.rs":"bc9e2830e54c2474ff6c27a766ed3dee88d29e40f93f30e8d64d63233866c17d","tests/ui/missing-fmt.stderr":"9a20ccee9b660fe31a5b3199307b48580bb8305cb9ce33d97d3fc767a0cfc614","tests/ui/no-display.rs":"962245372272d23e9833311c15e73221b3c7da822a2ff90189613af56ffb5c2e","tests/ui/no-display.stderr":"40f47b286b770808a7dc5ec7970bc5cd501c9400f2e50049cf3258174929a9c1","tests/ui/source-enum-not-error.rs":"7c57c63b3ec37bc456738acea2e1038de5b0f32fe7e83984037d7ad1ed921737","tests/ui/source-enum-not-error.stderr":"1bb601243ff11d5de08c70edf3fd89d52b4a89fcd2a5c7775d1bc11d056ced1e","tests/ui/source-struct-not-error.rs":"09fb7713637242dca9192585a6daeb8d732dc1c1d0fa522b74f1c98618e6d949","tests/ui/source-struct-not-error.stderr":"9a1a04d606309c82eea59d1745c833189f0b4f237f0741a17dd62c11ce16642d","tests/ui/transparent-display.rs":"b3c59583eb64b0b5a246444456d03cf52d51bcdc08885023600dbb44fd87e5f2","tests/ui/transparent-display.stderr":"16d538914e0d92026bde4b4bec75660217da9ecc6b621d12d2eb81d33ed1d1da","tests/ui/transparent-enum-many.rs":"2a40a764fb4683bff57973eec61507a6c00f7d4d7a32da6e7bd0190c2e445434","tests/ui/transparent-enum-many.stderr":"f1d78c1d6d8edbef153420db4fb9ca3dc6076fa043b5b1bc0cd291daa417a3ea","tests/ui/transparent-enum-source.rs":"18f606a98ac0a53f08dc56f5f923b9cbe75d25ed34479c777b48dac305d5968c","tests/ui/transparent-enum-source.stderr":"1b2e0ac53951034575d43ec0396c4e2b3cfb272db2aef8d6baa13a7e1632cc84","tests/ui/transparent-struct-many.rs":"72c6b6c1a44c203d3bc68989b2f1ec092531ef75b745432824c3776c290326f6","tests/ui/transparent-struct-many.stderr":"7bd0536dbb54a0ce7d4a8e66ca7624a1b132d8a1d1e4fecca642ec77494ac01c","tests/ui/transparent-struct-source.rs":"863fa691ed7d27e8767da58d9ee11fd40d6642274b36338ca1074c07964ea2b3","tests/ui/transparent-struct-source.stderr":"267dab65929e67d32347fb467a00b43af931f8205d727d7671938580217fc70e","tests/ui/unexpected-field-fmt.rs":"29fba7b4d81c642ec8e47cfe053aa515acf9080a86d65e685363a48993becfe3","tests/ui/unexpected-field-fmt.stderr":"20731c4a08af04bed3ff513903adadd690b6bc532b15604557e7f25575a8338f","tests/ui/unexpected-struct-source.rs":"c6cbe882d622635c216feb8290b1bd536ce0ec4feee16bc087667a21b3641d5c","tests/ui/unexpected-struct-source.stderr":"7c8227513478f6cc09e8a28be337c8a0e758a06ca5978d774c91bd43c4a54043","tests/ui/union.rs":"331adff27cebd8b95b03b6742cc8247331fda1f961e1590ed39c8d39f50cf1d8","tests/ui/union.stderr":"5f67ad29753d6fb14bc03aef7d4a1f660ee7796e469c037efbf8b13456934ad3"},"package":"10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e"} \ No newline at end of file
diff --git a/vendor/thiserror/Cargo.toml b/vendor/thiserror/Cargo.toml
index 78c99d623..2f060d6d8 100644
--- a/vendor/thiserror/Cargo.toml
+++ b/vendor/thiserror/Cargo.toml
@@ -13,20 +13,28 @@
edition = "2018"
rust-version = "1.31"
name = "thiserror"
-version = "1.0.30"
+version = "1.0.37"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "derive(Error)"
documentation = "https://docs.rs/thiserror"
readme = "README.md"
+keywords = [
+ "error",
+ "error-handling",
+ "derive",
+]
categories = ["rust-patterns"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/dtolnay/thiserror"
+
[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]
+
[dependencies.thiserror-impl]
-version = "=1.0.30"
+version = "=1.0.37"
+
[dev-dependencies.anyhow]
-version = "1.0"
+version = "1.0.65"
[dev-dependencies.ref-cast]
version = "1.0"
diff --git a/vendor/thiserror/README.md b/vendor/thiserror/README.md
index e12b693ef..8f6b896de 100644
--- a/vendor/thiserror/README.md
+++ b/vendor/thiserror/README.md
@@ -3,7 +3,7 @@ derive(Error)
[<img alt="github" src="https://img.shields.io/badge/github-dtolnay/thiserror-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20">](https://github.com/dtolnay/thiserror)
[<img alt="crates.io" src="https://img.shields.io/crates/v/thiserror.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20">](https://crates.io/crates/thiserror)
-[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-thiserror-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K" height="20">](https://docs.rs/thiserror)
+[<img alt="docs.rs" src="https://img.shields.io/badge/docs.rs-thiserror-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs" height="20">](https://docs.rs/thiserror)
[<img alt="build status" src="https://img.shields.io/github/workflow/status/dtolnay/thiserror/CI/master?style=for-the-badge" height="20">](https://github.com/dtolnay/thiserror/actions?query=branch%3Amaster)
This library provides a convenient derive macro for the standard library's
@@ -124,8 +124,8 @@ pub enum DataStoreError {
}
```
-- The Error trait's `backtrace()` method is implemented to return whichever
- field has a type named `Backtrace`, if any.
+- The Error trait's `provide()` method is implemented to provide whichever field
+ has a type named `Backtrace`, if any, as a `std::backtrace::Backtrace`.
```rust
use std::backtrace::Backtrace;
@@ -138,8 +138,9 @@ pub enum DataStoreError {
```
- If a field is both a source (named `source`, or has `#[source]` or `#[from]`
- attribute) *and* is marked `#[backtrace]`, then the Error trait's
- `backtrace()` method is forwarded to the source's backtrace.
+ attribute) *and* is marked `#[backtrace]`, then the Error trait's `provide()`
+ method is forwarded to the source's `provide` so that both layers of the error
+ share the same backtrace.
```rust
#[derive(Error, Debug)]
@@ -165,6 +166,27 @@ pub enum DataStoreError {
}
```
+ Another use case is hiding implementation details of an error representation
+ behind an opaque error type, so that the representation is able to evolve
+ without breaking the crate's public API.
+
+ ```rust
+ // PublicError is public, but opaque and easy to keep compatible.
+ #[derive(Error, Debug)]
+ #[error(transparent)]
+ pub struct PublicError(#[from] ErrorRepr);
+
+ impl PublicError {
+ // Accessors for anything we do want to expose publicly.
+ }
+
+ // Private and free to change across minor version of the crate.
+ #[derive(Error, Debug)]
+ enum ErrorRepr {
+ ...
+ }
+ ```
+
- See also the [`anyhow`] library for a convenient single error type to use in
application code.
diff --git a/vendor/thiserror/build.rs b/vendor/thiserror/build.rs
new file mode 100644
index 000000000..004dfb015
--- /dev/null
+++ b/vendor/thiserror/build.rs
@@ -0,0 +1,66 @@
+use std::env;
+use std::fs;
+use std::path::Path;
+use std::process::{Command, ExitStatus, Stdio};
+use std::str;
+
+// This code exercises the surface area that we expect of the Provider API. If
+// the current toolchain is able to compile it, then thiserror is able to use
+// providers for backtrace support.
+const PROBE: &str = r#"
+ #![feature(provide_any)]
+
+ use std::any::{Demand, Provider};
+
+ fn _f<'a, P: Provider>(p: &'a P, demand: &mut Demand<'a>) {
+ p.provide(demand);
+ }
+"#;
+
+fn main() {
+ match compile_probe() {
+ Some(status) if status.success() => println!("cargo:rustc-cfg=provide_any"),
+ _ => {}
+ }
+}
+
+fn compile_probe() -> Option<ExitStatus> {
+ let rustc = env::var_os("RUSTC")?;
+ let out_dir = env::var_os("OUT_DIR")?;
+ let probefile = Path::new(&out_dir).join("probe.rs");
+ fs::write(&probefile, PROBE).ok()?;
+
+ // Make sure to pick up Cargo rustc configuration.
+ let mut cmd = if let Some(wrapper) = env::var_os("RUSTC_WRAPPER") {
+ let mut cmd = Command::new(wrapper);
+ // The wrapper's first argument is supposed to be the path to rustc.
+ cmd.arg(rustc);
+ cmd
+ } else {
+ Command::new(rustc)
+ };
+
+ cmd.stderr(Stdio::null())
+ .arg("--edition=2018")
+ .arg("--crate-name=thiserror_build")
+ .arg("--crate-type=lib")
+ .arg("--emit=metadata")
+ .arg("--out-dir")
+ .arg(out_dir)
+ .arg(probefile);
+
+ if let Some(target) = env::var_os("TARGET") {
+ cmd.arg("--target").arg(target);
+ }
+
+ // If Cargo wants to set RUSTFLAGS, use that.
+ if let Ok(rustflags) = env::var("CARGO_ENCODED_RUSTFLAGS") {
+ if !rustflags.is_empty() {
+ for arg in rustflags.split('\x1f') {
+ cmd.arg(arg);
+ }
+ }
+ }
+
+ cmd.status().ok()
+}
diff --git a/vendor/thiserror/src/aserror.rs b/vendor/thiserror/src/aserror.rs
index c036b7b09..5fea84ef8 100644
--- a/vendor/thiserror/src/aserror.rs
+++ b/vendor/thiserror/src/aserror.rs
@@ -1,7 +1,7 @@
use std::error::Error;
use std::panic::UnwindSafe;
-pub trait AsDynError<'a> {
+pub trait AsDynError<'a>: Sealed {
fn as_dyn_error(&self) -> &(dyn Error + 'a);
}
@@ -39,3 +39,10 @@ impl<'a> AsDynError<'a> for dyn Error + Send + Sync + UnwindSafe + 'a {
self
}
}
+
+pub trait Sealed {}
+impl<'a, T: Error + 'a> Sealed for T {}
+impl<'a> Sealed for dyn Error + 'a {}
+impl<'a> Sealed for dyn Error + Send + 'a {}
+impl<'a> Sealed for dyn Error + Send + Sync + 'a {}
+impl<'a> Sealed for dyn Error + Send + Sync + UnwindSafe + 'a {}
diff --git a/vendor/thiserror/src/lib.rs b/vendor/thiserror/src/lib.rs
index 2fae25c54..aae6552d0 100644
--- a/vendor/thiserror/src/lib.rs
+++ b/vendor/thiserror/src/lib.rs
@@ -2,7 +2,7 @@
//!
//! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github
//! [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust
-//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K
+//! [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs
//!
//! <br>
//!
@@ -146,8 +146,9 @@
//! # }
//! ```
//!
-//! - The Error trait's `backtrace()` method is implemented to return whichever
-//! field has a type named `Backtrace`, if any.
+//! - The Error trait's `provide()` method is implemented to provide whichever
+//! field has a type named `Backtrace`, if any, as a
+//! `std::backtrace::Backtrace`.
//!
//! ```rust
//! # const IGNORE: &str = stringify! {
@@ -163,7 +164,8 @@
//!
//! - If a field is both a source (named `source`, or has `#[source]` or
//! `#[from]` attribute) *and* is marked `#[backtrace]`, then the Error
-//! trait's `backtrace()` method is forwarded to the source's backtrace.
+//! trait's `provide()` method is forwarded to the source's `provide` so that
+//! both layers of the error share the same backtrace.
//!
//! ```rust
//! # const IGNORE: &str = stringify! {
@@ -196,6 +198,31 @@
//! }
//! ```
//!
+//! Another use case is hiding implementation details of an error
+//! representation behind an opaque error type, so that the representation is
+//! able to evolve without breaking the crate's public API.
+//!
+//! ```
+//! # use thiserror::Error;
+//! #
+//! // PublicError is public, but opaque and easy to keep compatible.
+//! #[derive(Error, Debug)]
+//! #[error(transparent)]
+//! pub struct PublicError(#[from] ErrorRepr);
+//!
+//! impl PublicError {
+//! // Accessors for anything we do want to expose publicly.
+//! }
+//!
+//! // Private and free to change across minor version of the crate.
+//! #[derive(Error, Debug)]
+//! enum ErrorRepr {
+//! # /*
+//! ...
+//! # */
+//! }
+//! ```
+//!
//! - See also the [`anyhow`] library for a convenient single error type to use
//! in application code.
//!
@@ -205,16 +232,23 @@
// Clippy bug: https://github.com/rust-lang/rust-clippy/issues/7421
clippy::doc_markdown,
clippy::module_name_repetitions,
+ clippy::return_self_not_must_use,
+ clippy::wildcard_imports,
)]
+#![cfg_attr(provide_any, feature(provide_any))]
mod aserror;
mod display;
+#[cfg(provide_any)]
+mod provide;
pub use thiserror_impl::*;
// Not public API.
#[doc(hidden)]
-pub mod private {
+pub mod __private {
pub use crate::aserror::AsDynError;
pub use crate::display::{DisplayAsDisplay, PathAsDisplay};
+ #[cfg(provide_any)]
+ pub use crate::provide::ThiserrorProvide;
}
diff --git a/vendor/thiserror/src/provide.rs b/vendor/thiserror/src/provide.rs
new file mode 100644
index 000000000..524e7435d
--- /dev/null
+++ b/vendor/thiserror/src/provide.rs
@@ -0,0 +1,15 @@
+use std::any::{Demand, Provider};
+
+pub trait ThiserrorProvide: Sealed {
+ fn thiserror_provide<'a>(&'a self, demand: &mut Demand<'a>);
+}
+
+impl<T: Provider + ?Sized> ThiserrorProvide for T {
+ #[inline]
+ fn thiserror_provide<'a>(&'a self, demand: &mut Demand<'a>) {
+ self.provide(demand);
+ }
+}
+
+pub trait Sealed {}
+impl<T: Provider + ?Sized> Sealed for T {}
diff --git a/vendor/thiserror/tests/compiletest.rs b/vendor/thiserror/tests/compiletest.rs
index 641d03cbf..7974a6249 100644
--- a/vendor/thiserror/tests/compiletest.rs
+++ b/vendor/thiserror/tests/compiletest.rs
@@ -1,6 +1,5 @@
-#![deny(clippy::all, clippy::pedantic)]
-
#[rustversion::attr(not(nightly), ignore)]
+#[cfg_attr(miri, ignore)]
#[test]
fn ui() {
let t = trybuild::TestCases::new();
diff --git a/vendor/thiserror/tests/test_backtrace.rs b/vendor/thiserror/tests/test_backtrace.rs
index 42e37ca16..43f68b8b7 100644
--- a/vendor/thiserror/tests/test_backtrace.rs
+++ b/vendor/thiserror/tests/test_backtrace.rs
@@ -1,4 +1,7 @@
-#![cfg_attr(thiserror_nightly_testing, feature(backtrace))]
+#![cfg_attr(
+ thiserror_nightly_testing,
+ feature(error_generic_member_access, provide_any)
+)]
use thiserror::Error;
@@ -16,6 +19,7 @@ pub struct InnerBacktrace {
#[cfg(thiserror_nightly_testing)]
pub mod structs {
use super::{Inner, InnerBacktrace};
+ use std::any;
use std::backtrace::Backtrace;
use std::error::Error;
use std::sync::Arc;
@@ -83,49 +87,94 @@ pub mod structs {
backtrace: Arc<Backtrace>,
}
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct AnyhowBacktrace {
+ #[backtrace]
+ source: anyhow::Error,
+ }
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ pub struct BoxDynErrorBacktrace {
+ #[backtrace]
+ source: Box<dyn Error>,
+ }
+
#[test]
fn test_backtrace() {
let error = PlainBacktrace {
backtrace: Backtrace::capture(),
};
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = ExplicitBacktrace {
backtrace: Backtrace::capture(),
};
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = OptBacktrace {
backtrace: Some(Backtrace::capture()),
};
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = ArcBacktrace {
backtrace: Arc::new(Backtrace::capture()),
};
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = BacktraceFrom::from(Inner);
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = CombinedBacktraceFrom::from(InnerBacktrace {
backtrace: Backtrace::capture(),
});
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = OptBacktraceFrom::from(Inner);
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = ArcBacktraceFrom::from(Inner);
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
+
+ let error = AnyhowBacktrace {
+ source: anyhow::Error::msg("..."),
+ };
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
+
+ let error = BoxDynErrorBacktrace {
+ source: Box::new(PlainBacktrace {
+ backtrace: Backtrace::capture(),
+ }),
+ };
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
+ }
+
+ // https://github.com/dtolnay/thiserror/issues/185 -- std::error::Error and
+ // std::any::Provide both have a method called 'provide', so directly
+ // calling it from generated code could be ambiguous.
+ #[test]
+ fn test_provide_name_collision() {
+ use std::any::Provider;
+
+ #[derive(Error, Debug)]
+ #[error("...")]
+ struct MyError {
+ #[source]
+ #[backtrace]
+ x: std::io::Error,
+ }
+
+ let _: dyn Error;
+ let _: dyn Provider;
}
}
#[cfg(thiserror_nightly_testing)]
pub mod enums {
use super::{Inner, InnerBacktrace};
+ use std::any;
use std::backtrace::Backtrace;
- use std::error::Error;
use std::sync::Arc;
use thiserror::Error;
@@ -210,36 +259,36 @@ pub mod enums {
let error = PlainBacktrace::Test {
backtrace: Backtrace::capture(),
};
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = ExplicitBacktrace::Test {
backtrace: Backtrace::capture(),
};
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = OptBacktrace::Test {
backtrace: Some(Backtrace::capture()),
};
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = ArcBacktrace::Test {
backtrace: Arc::new(Backtrace::capture()),
};
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = BacktraceFrom::from(Inner);
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = CombinedBacktraceFrom::from(InnerBacktrace {
backtrace: Backtrace::capture(),
});
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = OptBacktraceFrom::from(Inner);
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
let error = ArcBacktraceFrom::from(Inner);
- assert!(error.backtrace().is_some());
+ assert!(any::request_ref::<Backtrace>(&error).is_some());
}
}
diff --git a/vendor/thiserror/tests/test_deprecated.rs b/vendor/thiserror/tests/test_deprecated.rs
new file mode 100644
index 000000000..5524666ab
--- /dev/null
+++ b/vendor/thiserror/tests/test_deprecated.rs
@@ -0,0 +1,10 @@
+#![deny(deprecated, clippy::all, clippy::pedantic)]
+
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+pub enum Error {
+ #[deprecated]
+ #[error("...")]
+ Deprecated,
+}
diff --git a/vendor/thiserror/tests/test_display.rs b/vendor/thiserror/tests/test_display.rs
index 949d9eda7..8917bb054 100644
--- a/vendor/thiserror/tests/test_display.rs
+++ b/vendor/thiserror/tests/test_display.rs
@@ -1,5 +1,3 @@
-#![deny(clippy::all, clippy::pedantic)]
-
use std::fmt::Display;
use thiserror::Error;
diff --git a/vendor/thiserror/tests/test_error.rs b/vendor/thiserror/tests/test_error.rs
index ece7f91a9..fab934d78 100644
--- a/vendor/thiserror/tests/test_error.rs
+++ b/vendor/thiserror/tests/test_error.rs
@@ -1,4 +1,3 @@
-#![deny(clippy::all, clippy::pedantic)]
#![allow(dead_code)]
use std::fmt::{self, Display};
diff --git a/vendor/thiserror/tests/test_expr.rs b/vendor/thiserror/tests/test_expr.rs
index 87a56cf58..34de56087 100644
--- a/vendor/thiserror/tests/test_expr.rs
+++ b/vendor/thiserror/tests/test_expr.rs
@@ -1,5 +1,4 @@
-#![deny(clippy::all, clippy::pedantic)]
-#![allow(clippy::option_if_let_else)]
+#![allow(clippy::iter_cloned_collect, clippy::option_if_let_else)]
use std::fmt::Display;
use thiserror::Error;
diff --git a/vendor/thiserror/tests/test_from.rs b/vendor/thiserror/tests/test_from.rs
index a25ce353d..1f387055f 100644
--- a/vendor/thiserror/tests/test_from.rs
+++ b/vendor/thiserror/tests/test_from.rs
@@ -1,5 +1,3 @@
-#![deny(clippy::all, clippy::pedantic)]
-
use std::io;
use thiserror::Error;
diff --git a/vendor/thiserror/tests/test_generics.rs b/vendor/thiserror/tests/test_generics.rs
index f5e1de243..4ab9f3778 100644
--- a/vendor/thiserror/tests/test_generics.rs
+++ b/vendor/thiserror/tests/test_generics.rs
@@ -1,4 +1,4 @@
-#![deny(clippy::all, clippy::pedantic)]
+#![allow(clippy::needless_late_init)]
use std::fmt::{self, Debug, Display};
use thiserror::Error;
diff --git a/vendor/thiserror/tests/test_option.rs b/vendor/thiserror/tests/test_option.rs
index ca2171385..ed5287dc9 100644
--- a/vendor/thiserror/tests/test_option.rs
+++ b/vendor/thiserror/tests/test_option.rs
@@ -1,5 +1,7 @@
-#![cfg_attr(thiserror_nightly_testing, feature(backtrace))]
-#![deny(clippy::all, clippy::pedantic)]
+#![cfg_attr(
+ thiserror_nightly_testing,
+ feature(error_generic_member_access, provide_any)
+)]
#[cfg(thiserror_nightly_testing)]
pub mod structs {
diff --git a/vendor/thiserror/tests/test_path.rs b/vendor/thiserror/tests/test_path.rs
index a10b1f342..a34a3d74e 100644
--- a/vendor/thiserror/tests/test_path.rs
+++ b/vendor/thiserror/tests/test_path.rs
@@ -1,5 +1,3 @@
-#![deny(clippy::all, clippy::pedantic)]
-
use ref_cast::RefCast;
use std::fmt::Display;
use std::path::{Path, PathBuf};
diff --git a/vendor/thiserror/tests/test_source.rs b/vendor/thiserror/tests/test_source.rs
index ab16097b2..637f4ac0a 100644
--- a/vendor/thiserror/tests/test_source.rs
+++ b/vendor/thiserror/tests/test_source.rs
@@ -1,5 +1,3 @@
-#![deny(clippy::all, clippy::pedantic)]
-
use std::error::Error as StdError;
use std::io;
use thiserror::Error;
diff --git a/vendor/thiserror/tests/test_transparent.rs b/vendor/thiserror/tests/test_transparent.rs
index 84d7c9189..6f3c03ec7 100644
--- a/vendor/thiserror/tests/test_transparent.rs
+++ b/vendor/thiserror/tests/test_transparent.rs
@@ -1,5 +1,3 @@
-#![deny(clippy::all, clippy::pedantic)]
-
use anyhow::anyhow;
use std::error::Error as _;
use std::io;
diff --git a/vendor/thiserror/tests/ui/concat-display.stderr b/vendor/thiserror/tests/ui/concat-display.stderr
index 6ab40481f..dbecd69f2 100644
--- a/vendor/thiserror/tests/ui/concat-display.stderr
+++ b/vendor/thiserror/tests/ui/concat-display.stderr
@@ -5,6 +5,6 @@ error: expected string literal
| ^^^^^^
...
13 | error_type!(Error, "foo");
- | -------------------------- in this macro invocation
+ | ------------------------- in this macro invocation
|
= note: this error originates in the macro `error_type` (in Nightly builds, run with -Z macro-backtrace for more info)
diff --git a/vendor/thiserror/tests/ui/from-backtrace-backtrace.rs b/vendor/thiserror/tests/ui/from-backtrace-backtrace.rs
new file mode 100644
index 000000000..8f411bf5d
--- /dev/null
+++ b/vendor/thiserror/tests/ui/from-backtrace-backtrace.rs
@@ -0,0 +1,10 @@
+// https://github.com/dtolnay/thiserror/issues/163
+
+use std::backtrace::Backtrace;
+use thiserror::Error;
+
+#[derive(Error, Debug)]
+#[error("...")]
+pub struct Error(#[from] #[backtrace] std::io::Error, Backtrace);
+
+fn main() {}
diff --git a/vendor/thiserror/tests/ui/from-backtrace-backtrace.stderr b/vendor/thiserror/tests/ui/from-backtrace-backtrace.stderr
new file mode 100644
index 000000000..55d647b42
--- /dev/null
+++ b/vendor/thiserror/tests/ui/from-backtrace-backtrace.stderr
@@ -0,0 +1,5 @@
+error: deriving From requires no fields other than source and backtrace
+ --> tests/ui/from-backtrace-backtrace.rs:8:18
+ |
+8 | pub struct Error(#[from] #[backtrace] std::io::Error, Backtrace);
+ | ^^^^^^^
diff --git a/vendor/thiserror/tests/ui/no-display.stderr b/vendor/thiserror/tests/ui/no-display.stderr
index e6a52f5e7..82c3eea1c 100644
--- a/vendor/thiserror/tests/ui/no-display.stderr
+++ b/vendor/thiserror/tests/ui/no-display.stderr
@@ -2,7 +2,7 @@ error[E0599]: the method `as_display` exists for reference `&NoDisplay`, but its
--> tests/ui/no-display.rs:7:9
|
4 | struct NoDisplay;
- | ----------------- doesn't satisfy `NoDisplay: std::fmt::Display`
+ | ---------------- doesn't satisfy `NoDisplay: std::fmt::Display`
...
7 | #[error("thread: {thread}")]
| ^^^^^^^^^^^^^^^^^^ method cannot be called on `&NoDisplay` due to unsatisfied trait bounds
@@ -13,11 +13,5 @@ error[E0599]: the method `as_display` exists for reference `&NoDisplay`, but its
note: the following trait must be implemented
--> $RUST/core/src/fmt/mod.rs
|
- | / pub trait Display {
- | | /// Formats the value using the given formatter.
- | | ///
- | | /// # Examples
-... |
- | | fn fmt(&self, f: &mut Formatter<'_>) -> Result;
- | | }
- | |_^
+ | pub trait Display {
+ | ^^^^^^^^^^^^^^^^^
diff --git a/vendor/thiserror/tests/ui/source-enum-not-error.stderr b/vendor/thiserror/tests/ui/source-enum-not-error.stderr
index d01cba5b0..29ee54600 100644
--- a/vendor/thiserror/tests/ui/source-enum-not-error.stderr
+++ b/vendor/thiserror/tests/ui/source-enum-not-error.stderr
@@ -1,28 +1,22 @@
error[E0599]: the method `as_dyn_error` exists for reference `&NotError`, but its trait bounds were not satisfied
- --> tests/ui/source-enum-not-error.rs:10:9
- |
-4 | pub struct NotError;
- | --------------------
- | |
- | doesn't satisfy `NotError: AsDynError`
- | doesn't satisfy `NotError: std::error::Error`
+ --> tests/ui/source-enum-not-error.rs:10:9
+ |
+4 | pub struct NotError;
+ | -------------------
+ | |
+ | doesn't satisfy `NotError: AsDynError<'_>`
+ | doesn't satisfy `NotError: std::error::Error`
...
-10 | source: NotError,
- | ^^^^^^ method cannot be called on `&NotError` due to unsatisfied trait bounds
- |
- = note: the following trait bounds were not satisfied:
- `NotError: std::error::Error`
- which is required by `NotError: AsDynError`
- `&NotError: std::error::Error`
- which is required by `&NotError: AsDynError`
+10 | source: NotError,
+ | ^^^^^^ method cannot be called on `&NotError` due to unsatisfied trait bounds
+ |
+ = note: the following trait bounds were not satisfied:
+ `NotError: std::error::Error`
+ which is required by `NotError: AsDynError<'_>`
+ `&NotError: std::error::Error`
+ which is required by `&NotError: AsDynError<'_>`
note: the following trait must be implemented
- --> $RUST/std/src/error.rs
- |
- | / pub trait Error: Debug + Display {
- | | /// The lower-level source of this error, if any.
- | | ///
- | | /// # Examples
-... |
- | | }
- | | }
- | |_^
+ --> $RUST/core/src/error.rs
+ |
+ | pub trait Error: Debug + Display {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/vendor/thiserror/tests/ui/source-struct-not-error.stderr b/vendor/thiserror/tests/ui/source-struct-not-error.stderr
index be1331a50..efa40281d 100644
--- a/vendor/thiserror/tests/ui/source-struct-not-error.stderr
+++ b/vendor/thiserror/tests/ui/source-struct-not-error.stderr
@@ -1,27 +1,21 @@
error[E0599]: the method `as_dyn_error` exists for struct `NotError`, but its trait bounds were not satisfied
- --> tests/ui/source-struct-not-error.rs:9:5
- |
-4 | struct NotError;
- | ----------------
- | |
- | method `as_dyn_error` not found for this
- | doesn't satisfy `NotError: AsDynError`
- | doesn't satisfy `NotError: std::error::Error`
+ --> tests/ui/source-struct-not-error.rs:9:5
+ |
+4 | struct NotError;
+ | ---------------
+ | |
+ | method `as_dyn_error` not found for this struct
+ | doesn't satisfy `NotError: AsDynError<'_>`
+ | doesn't satisfy `NotError: std::error::Error`
...
-9 | source: NotError,
- | ^^^^^^ method cannot be called on `NotError` due to unsatisfied trait bounds
- |
- = note: the following trait bounds were not satisfied:
- `NotError: std::error::Error`
- which is required by `NotError: AsDynError`
+9 | source: NotError,
+ | ^^^^^^ method cannot be called on `NotError` due to unsatisfied trait bounds
+ |
+ = note: the following trait bounds were not satisfied:
+ `NotError: std::error::Error`
+ which is required by `NotError: AsDynError<'_>`
note: the following trait must be implemented
- --> $RUST/std/src/error.rs
- |
- | / pub trait Error: Debug + Display {
- | | /// The lower-level source of this error, if any.
- | | ///
- | | /// # Examples
-... |
- | | }
- | | }
- | |_^
+ --> $RUST/core/src/error.rs
+ |
+ | pub trait Error: Debug + Display {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/vendor/tracing-attributes/.cargo-checksum.json b/vendor/tracing-attributes/.cargo-checksum.json
index 995155f68..e29c0854b 100644
--- a/vendor/tracing-attributes/.cargo-checksum.json
+++ b/vendor/tracing-attributes/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"daa6621db253ddaaa095d297d0de2be41b03831a3992f2f9a5107749a689983e","Cargo.toml":"70c8c7dba6890f42c7830651ec9847c0e22b4c0987024d076d4abb3801f26bc8","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"7484033338a94e5ce23f1b281e1bdef1bae590c2329bd9b4d192ce66702e3a31","src/attr.rs":"4d26dad70c765fff3d4677ebe8e71b63599d67ceba5c48dbcb204d247b5394ce","src/expand.rs":"e6b81defa4ed98d71466ede6eb5a8f613cd0d33750b2e1274265467b85756362","src/lib.rs":"4400f3c00b7b4daf9cd61bec3e1f5d794c3d4b131667252a43c95a40041b6711","tests/async_fn.rs":"74126e6027bc9cb6e5e3d5d0e3b2debd5c808c737d25b90303b8e3ca878a3667","tests/destructuring.rs":"26b9800678bad09e06512a113a54556e2fac3ecb15a18dcccefe105fb8911c26","tests/err.rs":"3beb5f065e57a578825c383a56b9d64fb89794a508018bf36e16f113557909b8","tests/fields.rs":"3882bd4e744d6b492f59beac7475e8bf4ff4ca8ad85c6951c305a22c78e75fae","tests/follows_from.rs":"5bc856923e87b34e0558959149118238fe668ac621f1748cc444c21c90a86647","tests/instrument.rs":"9118eb6971d19a6b8d301bb4512b0fda909404a21e14edbef6b01db094cd8aaf","tests/levels.rs":"80ffb684163a4d28c69c40e31a82609ac02daf922086bab8247bca125aec3c69","tests/names.rs":"5afd6c4d526588bcea3141c130a45a21872956495b6868a01b44ddff57749827","tests/parents.rs":"673d3f81eed6ba433f685ec53fd007c5dd957b97d32499d7ea1537e1f289cb2e","tests/ret.rs":"083b4ca456d766c469b2fff7608b59524b422941e5c5e84f07c1ce0d7b345c7a","tests/targets.rs":"95ce1ce1e2d29794062c5b3429d91c1bfaba5813251d5d8440c12cb2db6e11bf"},"package":"11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"7c292985e41b0fd9c89d32bd15594b76bb3109ff96177af7461d1a0d3ea48574","Cargo.toml":"1c272401b940ef2fd88638a6228af02c14e3d47d4b592ee5c445f7470a0d1763","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"aae710a2c0c4ade929a84f8f3d9f98fcb9ad1c1e9e52ae0b0393db9f353f6248","src/attr.rs":"4d26dad70c765fff3d4677ebe8e71b63599d67ceba5c48dbcb204d247b5394ce","src/expand.rs":"f070e38eb3526c4c50e98cfafb2c26e50c7170f27d0bd716838a29777c1174cd","src/lib.rs":"14803c868525f6ae95b846ce2f369a47d50b2befba336335354867cf2a1b2455","tests/async_fn.rs":"6ae845ab6c508f9f2d1ea7ec3855971e8cff85afdae326593089d0a53c9c6dcf","tests/destructuring.rs":"26b9800678bad09e06512a113a54556e2fac3ecb15a18dcccefe105fb8911c26","tests/err.rs":"3beb5f065e57a578825c383a56b9d64fb89794a508018bf36e16f113557909b8","tests/fields.rs":"3882bd4e744d6b492f59beac7475e8bf4ff4ca8ad85c6951c305a22c78e75fae","tests/follows_from.rs":"5bc856923e87b34e0558959149118238fe668ac621f1748cc444c21c90a86647","tests/instrument.rs":"e3a90f2aef0d2f56c2c25018e2fbacf518e90ef6810930941f86740279252d03","tests/levels.rs":"80ffb684163a4d28c69c40e31a82609ac02daf922086bab8247bca125aec3c69","tests/names.rs":"5afd6c4d526588bcea3141c130a45a21872956495b6868a01b44ddff57749827","tests/parents.rs":"673d3f81eed6ba433f685ec53fd007c5dd957b97d32499d7ea1537e1f289cb2e","tests/ret.rs":"083b4ca456d766c469b2fff7608b59524b422941e5c5e84f07c1ce0d7b345c7a","tests/targets.rs":"95ce1ce1e2d29794062c5b3429d91c1bfaba5813251d5d8440c12cb2db6e11bf","tests/ui.rs":"c73c70fe7371998df077862092f40df7210b13496e119ab4e657a1848e42ab30","tests/ui/async_instrument.rs":"00fcde05841e8f9f6cc6f9434f8cc4baed5cf6e3ca73e8faddccbdace14e9485","tests/ui/async_instrument.stderr":"6f0457b5cd035a9bc82f5e98fb6d3a74177336ec6a19ba2e7cb9dbf3e67c3aff"},"package":"4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a"} \ No newline at end of file
diff --git a/vendor/tracing-attributes/CHANGELOG.md b/vendor/tracing-attributes/CHANGELOG.md
index 4fcc81f29..42cb09b6a 100644
--- a/vendor/tracing-attributes/CHANGELOG.md
+++ b/vendor/tracing-attributes/CHANGELOG.md
@@ -1,3 +1,24 @@
+# 0.1.23 (October 6, 2022)
+
+This release of `tracing-attributes` fixes a bug where compiler diagnostic spans
+for type errors in `#[instrument]`ed `async fn`s have the location of the
+`#[instrument]` attribute rather than the location of the actual error, and a
+bug where inner attributes in `#[instrument]`ed functions would cause a compiler
+error.
+### Fixed
+
+- Fix incorrect handling of inner attributes in `#[instrument]`ed functions ([#2307])
+- Add fake return to improve spans generated for type errors in `async fn`s ([#2270])
+- Updated `syn` dependency to fix compilation with `-Z minimal-versions`
+ ([#2246])
+
+Thanks to new contributors @compiler-errors and @e-nomem, as well as @CAD97, for
+contributing to this release!
+
+[#2307]: https://github.com/tokio-rs/tracing/pull/2307
+[#2270]: https://github.com/tokio-rs/tracing/pull/2270
+[#2246]: https://github.com/tokio-rs/tracing/pull/2246
+
# 0.1.22 (July 1, 2022)
This release fixes an issue where using the `err` or `ret` arguments to
diff --git a/vendor/tracing-attributes/Cargo.toml b/vendor/tracing-attributes/Cargo.toml
index 3ecaba6fc..5639de0b3 100644
--- a/vendor/tracing-attributes/Cargo.toml
+++ b/vendor/tracing-attributes/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.49.0"
name = "tracing-attributes"
-version = "0.1.22"
+version = "0.1.23"
authors = [
"Tokio Contributors <team@tokio.rs>",
"Eliza Weisman <eliza@buoyant.io>",
@@ -49,7 +49,7 @@ version = "1"
version = "1"
[dependencies.syn]
-version = "1.0.43"
+version = "1.0.98"
features = [
"full",
"parsing",
@@ -63,21 +63,27 @@ features = [
default-features = false
[dev-dependencies.async-trait]
-version = "0.1.44"
+version = "0.1.56"
+
+[dev-dependencies.rustversion]
+version = "1.0.9"
[dev-dependencies.tokio-test]
version = "0.3.0"
[dev-dependencies.tracing]
-version = "0.1"
+version = "0.1.35"
[dev-dependencies.tracing-core]
-version = "0.1"
+version = "0.1.28"
[dev-dependencies.tracing-subscriber]
-version = "0.3"
+version = "0.3.0"
features = ["env-filter"]
+[dev-dependencies.trybuild]
+version = "1.0.64"
+
[features]
async-await = []
diff --git a/vendor/tracing-attributes/README.md b/vendor/tracing-attributes/README.md
index 636179468..356b511f2 100644
--- a/vendor/tracing-attributes/README.md
+++ b/vendor/tracing-attributes/README.md
@@ -18,7 +18,7 @@ Macro attributes for application-level tracing.
[crates-badge]: https://img.shields.io/crates/v/tracing-attributes.svg
[crates-url]: https://crates.io/crates/tracing-attributes
[docs-badge]: https://docs.rs/tracing-attributes/badge.svg
-[docs-url]: https://docs.rs/tracing-attributes/0.1.22
+[docs-url]: https://docs.rs/tracing-attributes/0.1.23
[docs-master-badge]: https://img.shields.io/badge/docs-master-blue
[docs-master-url]: https://tracing-rs.netlify.com/tracing_attributes
[mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg
@@ -47,7 +47,7 @@ First, add this to your `Cargo.toml`:
```toml
[dependencies]
-tracing-attributes = "0.1.22"
+tracing-attributes = "0.1.23"
```
diff --git a/vendor/tracing-attributes/src/expand.rs b/vendor/tracing-attributes/src/expand.rs
index 81ee6ed90..7005b4423 100644
--- a/vendor/tracing-attributes/src/expand.rs
+++ b/vendor/tracing-attributes/src/expand.rs
@@ -2,15 +2,16 @@ use std::iter;
use proc_macro2::TokenStream;
use quote::{quote, quote_spanned, ToTokens};
+use syn::visit_mut::VisitMut;
use syn::{
punctuated::Punctuated, spanned::Spanned, Block, Expr, ExprAsync, ExprCall, FieldPat, FnArg,
Ident, Item, ItemFn, Pat, PatIdent, PatReference, PatStruct, PatTuple, PatTupleStruct, PatType,
- Path, Signature, Stmt, Token, TypePath,
+ Path, ReturnType, Signature, Stmt, Token, Type, TypePath,
};
use crate::{
attr::{Field, Fields, FormatMode, InstrumentArgs},
- MaybeItemFnRef,
+ MaybeItemFn, MaybeItemFnRef,
};
/// Given an existing function, generate an instrumented version of that function
@@ -18,20 +19,21 @@ pub(crate) fn gen_function<'a, B: ToTokens + 'a>(
input: MaybeItemFnRef<'a, B>,
args: InstrumentArgs,
instrumented_function_name: &str,
- self_type: Option<&syn::TypePath>,
+ self_type: Option<&TypePath>,
) -> proc_macro2::TokenStream {
// these are needed ahead of time, as ItemFn contains the function body _and_
// isn't representable inside a quote!/quote_spanned! macro
// (Syn's ToTokens isn't implemented for ItemFn)
let MaybeItemFnRef {
- attrs,
+ outer_attrs,
+ inner_attrs,
vis,
sig,
block,
} = input;
let Signature {
- output: return_type,
+ output,
inputs: params,
unsafety,
asyncness,
@@ -49,8 +51,35 @@ pub(crate) fn gen_function<'a, B: ToTokens + 'a>(
let warnings = args.warnings();
+ let (return_type, return_span) = if let ReturnType::Type(_, return_type) = &output {
+ (erase_impl_trait(return_type), return_type.span())
+ } else {
+ // Point at function name if we don't have an explicit return type
+ (syn::parse_quote! { () }, ident.span())
+ };
+ // Install a fake return statement as the first thing in the function
+ // body, so that we eagerly infer that the return type is what we
+ // declared in the async fn signature.
+ // The `#[allow(..)]` is given because the return statement is
+ // unreachable, but does affect inference, so it needs to be written
+ // exactly that way for it to do its magic.
+ let fake_return_edge = quote_spanned! {return_span=>
+ #[allow(unreachable_code, clippy::diverging_sub_expression, clippy::let_unit_value)]
+ if false {
+ let __tracing_attr_fake_return: #return_type =
+ unreachable!("this is just for type inference, and is unreachable code");
+ return __tracing_attr_fake_return;
+ }
+ };
+ let block = quote! {
+ {
+ #fake_return_edge
+ #block
+ }
+ };
+
let body = gen_block(
- block,
+ &block,
params,
asyncness.is_some(),
args,
@@ -59,10 +88,11 @@ pub(crate) fn gen_function<'a, B: ToTokens + 'a>(
);
quote!(
- #(#attrs) *
- #vis #constness #unsafety #asyncness #abi fn #ident<#gen_params>(#params) #return_type
+ #(#outer_attrs) *
+ #vis #constness #unsafety #asyncness #abi fn #ident<#gen_params>(#params) #output
#where_clause
{
+ #(#inner_attrs) *
#warnings
#body
}
@@ -76,7 +106,7 @@ fn gen_block<B: ToTokens>(
async_context: bool,
mut args: InstrumentArgs,
instrumented_function_name: &str,
- self_type: Option<&syn::TypePath>,
+ self_type: Option<&TypePath>,
) -> proc_macro2::TokenStream {
// generate the span's name
let span_name = args
@@ -393,11 +423,11 @@ impl RecordType {
"Wrapping",
];
- /// Parse `RecordType` from [syn::Type] by looking up
+ /// Parse `RecordType` from [Type] by looking up
/// the [RecordType::TYPES_FOR_VALUE] array.
- fn parse_from_ty(ty: &syn::Type) -> Self {
+ fn parse_from_ty(ty: &Type) -> Self {
match ty {
- syn::Type::Path(syn::TypePath { path, .. })
+ Type::Path(TypePath { path, .. })
if path
.segments
.iter()
@@ -410,9 +440,7 @@ impl RecordType {
{
RecordType::Value
}
- syn::Type::Reference(syn::TypeReference { elem, .. }) => {
- RecordType::parse_from_ty(&*elem)
- }
+ Type::Reference(syn::TypeReference { elem, .. }) => RecordType::parse_from_ty(elem),
_ => RecordType::Debug,
}
}
@@ -471,7 +499,7 @@ pub(crate) struct AsyncInfo<'block> {
// statement that must be patched
source_stmt: &'block Stmt,
kind: AsyncKind<'block>,
- self_type: Option<syn::TypePath>,
+ self_type: Option<TypePath>,
input: &'block ItemFn,
}
@@ -606,11 +634,11 @@ impl<'block> AsyncInfo<'block> {
if ident == "_self" {
let mut ty = *ty.ty.clone();
// extract the inner type if the argument is "&self" or "&mut self"
- if let syn::Type::Reference(syn::TypeReference { elem, .. }) = ty {
+ if let Type::Reference(syn::TypeReference { elem, .. }) = ty {
ty = *elem;
}
- if let syn::Type::Path(tp) = ty {
+ if let Type::Path(tp) = ty {
self_type = Some(tp);
break;
}
@@ -631,7 +659,7 @@ impl<'block> AsyncInfo<'block> {
self,
args: InstrumentArgs,
instrumented_function_name: &str,
- ) -> proc_macro::TokenStream {
+ ) -> Result<proc_macro::TokenStream, syn::Error> {
// let's rewrite some statements!
let mut out_stmts: Vec<TokenStream> = self
.input
@@ -652,12 +680,15 @@ impl<'block> AsyncInfo<'block> {
// instrument the future by rewriting the corresponding statement
out_stmts[iter] = match self.kind {
// `Box::pin(immediately_invoked_async_fn())`
- AsyncKind::Function(fun) => gen_function(
- fun.into(),
- args,
- instrumented_function_name,
- self.self_type.as_ref(),
- ),
+ AsyncKind::Function(fun) => {
+ let fun = MaybeItemFn::from(fun.clone());
+ gen_function(
+ fun.as_ref(),
+ args,
+ instrumented_function_name,
+ self.self_type.as_ref(),
+ )
+ }
// `async move { ... }`, optionally pinned
AsyncKind::Async {
async_expr,
@@ -688,13 +719,13 @@ impl<'block> AsyncInfo<'block> {
let vis = &self.input.vis;
let sig = &self.input.sig;
let attrs = &self.input.attrs;
- quote!(
+ Ok(quote!(
#(#attrs) *
#vis #sig {
#(#out_stmts) *
}
)
- .into()
+ .into())
}
}
@@ -722,7 +753,7 @@ struct IdentAndTypesRenamer<'a> {
idents: Vec<(Ident, Ident)>,
}
-impl<'a> syn::visit_mut::VisitMut for IdentAndTypesRenamer<'a> {
+impl<'a> VisitMut for IdentAndTypesRenamer<'a> {
// we deliberately compare strings because we want to ignore the spans
// If we apply clippy's lint, the behavior changes
#[allow(clippy::cmp_owned)]
@@ -734,11 +765,11 @@ impl<'a> syn::visit_mut::VisitMut for IdentAndTypesRenamer<'a> {
}
}
- fn visit_type_mut(&mut self, ty: &mut syn::Type) {
+ fn visit_type_mut(&mut self, ty: &mut Type) {
for (type_name, new_type) in &self.types {
- if let syn::Type::Path(TypePath { path, .. }) = ty {
+ if let Type::Path(TypePath { path, .. }) = ty {
if path_to_string(path) == *type_name {
- *ty = syn::Type::Path(new_type.clone());
+ *ty = Type::Path(new_type.clone());
}
}
}
@@ -751,10 +782,33 @@ struct AsyncTraitBlockReplacer<'a> {
patched_block: Block,
}
-impl<'a> syn::visit_mut::VisitMut for AsyncTraitBlockReplacer<'a> {
+impl<'a> VisitMut for AsyncTraitBlockReplacer<'a> {
fn visit_block_mut(&mut self, i: &mut Block) {
if i == self.block {
*i = self.patched_block.clone();
}
}
}
+
+// Replaces any `impl Trait` with `_` so it can be used as the type in
+// a `let` statement's LHS.
+struct ImplTraitEraser;
+
+impl VisitMut for ImplTraitEraser {
+ fn visit_type_mut(&mut self, t: &mut Type) {
+ if let Type::ImplTrait(..) = t {
+ *t = syn::TypeInfer {
+ underscore_token: Token![_](t.span()),
+ }
+ .into();
+ } else {
+ syn::visit_mut::visit_type_mut(self, t);
+ }
+ }
+}
+
+fn erase_impl_trait(ty: &Type) -> Type {
+ let mut ty = ty.clone();
+ ImplTraitEraser.visit_type_mut(&mut ty);
+ ty
+}
diff --git a/vendor/tracing-attributes/src/lib.rs b/vendor/tracing-attributes/src/lib.rs
index 49b3c794a..f5974e4e5 100644
--- a/vendor/tracing-attributes/src/lib.rs
+++ b/vendor/tracing-attributes/src/lib.rs
@@ -16,7 +16,7 @@
//!
//! ```toml
//! [dependencies]
-//! tracing-attributes = "0.1.22"
+//! tracing-attributes = "0.1.23"
//! ```
//!
//! The [`#[instrument]`][instrument] attribute can now be added to a function
@@ -52,7 +52,7 @@
//! supported compiler version is not considered a semver breaking change as
//! long as doing so complies with this policy.
//!
-#![doc(html_root_url = "https://docs.rs/tracing-attributes/0.1.22")]
+#![doc(html_root_url = "https://docs.rs/tracing-attributes/0.1.23")]
#![doc(
html_logo_url = "https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png",
issue_tracker_base_url = "https://github.com/tokio-rs/tracing/issues/"
@@ -86,7 +86,7 @@ extern crate proc_macro;
use proc_macro2::TokenStream;
use quote::ToTokens;
use syn::parse::{Parse, ParseStream};
-use syn::{Attribute, Block, ItemFn, Signature, Visibility};
+use syn::{Attribute, ItemFn, Signature, Visibility};
mod attr;
mod expand;
@@ -587,11 +587,13 @@ fn instrument_precise(
// check for async_trait-like patterns in the block, and instrument
// the future instead of the wrapper
if let Some(async_like) = expand::AsyncInfo::from_fn(&input) {
- return Ok(async_like.gen_async(args, instrumented_function_name.as_str()));
+ return async_like.gen_async(args, instrumented_function_name.as_str());
}
+ let input = MaybeItemFn::from(input);
+
Ok(expand::gen_function(
- (&input).into(),
+ input.as_ref(),
args,
instrumented_function_name.as_str(),
None,
@@ -603,7 +605,8 @@ fn instrument_precise(
/// which's block is just a `TokenStream` (it may contain invalid code).
#[derive(Debug, Clone)]
struct MaybeItemFn {
- attrs: Vec<Attribute>,
+ outer_attrs: Vec<Attribute>,
+ inner_attrs: Vec<Attribute>,
vis: Visibility,
sig: Signature,
block: TokenStream,
@@ -612,7 +615,8 @@ struct MaybeItemFn {
impl MaybeItemFn {
fn as_ref(&self) -> MaybeItemFnRef<'_, TokenStream> {
MaybeItemFnRef {
- attrs: &self.attrs,
+ outer_attrs: &self.outer_attrs,
+ inner_attrs: &self.inner_attrs,
vis: &self.vis,
sig: &self.sig,
block: &self.block,
@@ -624,12 +628,14 @@ impl MaybeItemFn {
/// (just like `ItemFn`, but skips parsing the body).
impl Parse for MaybeItemFn {
fn parse(input: ParseStream<'_>) -> syn::Result<Self> {
- let attrs = input.call(syn::Attribute::parse_outer)?;
+ let outer_attrs = input.call(Attribute::parse_outer)?;
let vis: Visibility = input.parse()?;
let sig: Signature = input.parse()?;
+ let inner_attrs = input.call(Attribute::parse_inner)?;
let block: TokenStream = input.parse()?;
Ok(Self {
- attrs,
+ outer_attrs,
+ inner_attrs,
vis,
sig,
block,
@@ -637,23 +643,35 @@ impl Parse for MaybeItemFn {
}
}
+impl From<ItemFn> for MaybeItemFn {
+ fn from(
+ ItemFn {
+ attrs,
+ vis,
+ sig,
+ block,
+ }: ItemFn,
+ ) -> Self {
+ let (outer_attrs, inner_attrs) = attrs
+ .into_iter()
+ .partition(|attr| attr.style == syn::AttrStyle::Outer);
+ Self {
+ outer_attrs,
+ inner_attrs,
+ vis,
+ sig,
+ block: block.to_token_stream(),
+ }
+ }
+}
+
/// A generic reference type for `MaybeItemFn`,
/// that takes a generic block type `B` that implements `ToTokens` (eg. `TokenStream`, `Block`).
#[derive(Debug, Clone)]
struct MaybeItemFnRef<'a, B: ToTokens> {
- attrs: &'a Vec<Attribute>,
+ outer_attrs: &'a Vec<Attribute>,
+ inner_attrs: &'a Vec<Attribute>,
vis: &'a Visibility,
sig: &'a Signature,
block: &'a B,
}
-
-impl<'a> From<&'a ItemFn> for MaybeItemFnRef<'a, Box<Block>> {
- fn from(val: &'a ItemFn) -> Self {
- MaybeItemFnRef {
- attrs: &val.attrs,
- vis: &val.vis,
- sig: &val.sig,
- block: &val.block,
- }
- }
-}
diff --git a/vendor/tracing-attributes/tests/async_fn.rs b/vendor/tracing-attributes/tests/async_fn.rs
index 7e27fb5ce..c89963672 100644
--- a/vendor/tracing-attributes/tests/async_fn.rs
+++ b/vendor/tracing-attributes/tests/async_fn.rs
@@ -14,6 +14,7 @@ async fn test_async_fn(polls: usize) -> Result<(), ()> {
// Reproduces a compile error when returning an `impl Trait` from an
// instrumented async fn (see https://github.com/tokio-rs/tracing/issues/1615)
+#[allow(dead_code)] // this is just here to test whether it compiles.
#[instrument]
async fn test_ret_impl_trait(n: i32) -> Result<impl Iterator<Item = i32>, ()> {
let n = n;
@@ -22,6 +23,7 @@ async fn test_ret_impl_trait(n: i32) -> Result<impl Iterator<Item = i32>, ()> {
// Reproduces a compile error when returning an `impl Trait` from an
// instrumented async fn (see https://github.com/tokio-rs/tracing/issues/1615)
+#[allow(dead_code)] // this is just here to test whether it compiles.
#[instrument(err)]
async fn test_ret_impl_trait_err(n: i32) -> Result<impl Iterator<Item = i32>, &'static str> {
Ok((0..10).filter(move |x| *x < n))
@@ -30,6 +32,15 @@ async fn test_ret_impl_trait_err(n: i32) -> Result<impl Iterator<Item = i32>, &'
#[instrument]
async fn test_async_fn_empty() {}
+// Reproduces a compile error when an instrumented function body contains inner
+// attributes (https://github.com/tokio-rs/tracing/issues/2294).
+#[deny(unused_variables)]
+#[instrument]
+async fn repro_async_2294() {
+ #![allow(unused_variables)]
+ let i = 42;
+}
+
// Reproduces https://github.com/tokio-rs/tracing/issues/1613
#[instrument]
// LOAD-BEARING `#[rustfmt::skip]`! This is necessary to reproduce the bug;
@@ -53,6 +64,7 @@ async fn repro_1613_2() {
}
// Reproduces https://github.com/tokio-rs/tracing/issues/1831
+#[allow(dead_code)] // this is just here to test whether it compiles.
#[instrument]
#[deny(unused_braces)]
fn repro_1831() -> Pin<Box<dyn Future<Output = ()>>> {
@@ -61,6 +73,7 @@ fn repro_1831() -> Pin<Box<dyn Future<Output = ()>>> {
// This replicates the pattern used to implement async trait methods on nightly using the
// `type_alias_impl_trait` feature
+#[allow(dead_code)] // this is just here to test whether it compiles.
#[instrument(ret, err)]
#[deny(unused_braces)]
#[allow(clippy::manual_async_fn)]
diff --git a/vendor/tracing-attributes/tests/instrument.rs b/vendor/tracing-attributes/tests/instrument.rs
index 2b2fee71e..768692748 100644
--- a/vendor/tracing-attributes/tests/instrument.rs
+++ b/vendor/tracing-attributes/tests/instrument.rs
@@ -3,6 +3,15 @@ use tracing::Level;
use tracing_attributes::instrument;
use tracing_mock::*;
+// Reproduces a compile error when an instrumented function body contains inner
+// attributes (https://github.com/tokio-rs/tracing/issues/2294).
+#[deny(unused_variables)]
+#[instrument]
+fn repro_2294() {
+ #![allow(unused_variables)]
+ let i = 42;
+}
+
#[test]
fn override_everything() {
#[instrument(target = "my_target", level = "debug")]
diff --git a/vendor/tracing-attributes/tests/ui.rs b/vendor/tracing-attributes/tests/ui.rs
new file mode 100644
index 000000000..f11cc019e
--- /dev/null
+++ b/vendor/tracing-attributes/tests/ui.rs
@@ -0,0 +1,7 @@
+// Only test on nightly, since UI tests are bound to change over time
+#[rustversion::stable]
+#[test]
+fn async_instrument() {
+ let t = trybuild::TestCases::new();
+ t.compile_fail("tests/ui/async_instrument.rs");
+}
diff --git a/vendor/tracing-attributes/tests/ui/async_instrument.rs b/vendor/tracing-attributes/tests/ui/async_instrument.rs
new file mode 100644
index 000000000..5b245746a
--- /dev/null
+++ b/vendor/tracing-attributes/tests/ui/async_instrument.rs
@@ -0,0 +1,46 @@
+#![allow(unreachable_code)]
+
+#[tracing::instrument]
+async fn unit() {
+ ""
+}
+
+#[tracing::instrument]
+async fn simple_mismatch() -> String {
+ ""
+}
+
+// FIXME: this span is still pretty poor
+#[tracing::instrument]
+async fn opaque_unsatisfied() -> impl std::fmt::Display {
+ ("",)
+}
+
+struct Wrapper<T>(T);
+
+#[tracing::instrument]
+async fn mismatch_with_opaque() -> Wrapper<impl std::fmt::Display> {
+ ""
+}
+
+#[tracing::instrument]
+async fn early_return_unit() {
+ if true {
+ return "";
+ }
+}
+
+#[tracing::instrument]
+async fn early_return() -> String {
+ if true {
+ return "";
+ }
+ String::new()
+}
+
+#[tracing::instrument]
+async fn extra_semicolon() -> i32 {
+ 1;
+}
+
+fn main() {}
diff --git a/vendor/tracing-attributes/tests/ui/async_instrument.stderr b/vendor/tracing-attributes/tests/ui/async_instrument.stderr
new file mode 100644
index 000000000..db6f6b434
--- /dev/null
+++ b/vendor/tracing-attributes/tests/ui/async_instrument.stderr
@@ -0,0 +1,98 @@
+error[E0308]: mismatched types
+ --> tests/ui/async_instrument.rs:5:5
+ |
+5 | ""
+ | ^^ expected `()`, found `&str`
+ |
+note: return type inferred to be `()` here
+ --> tests/ui/async_instrument.rs:4:10
+ |
+4 | async fn unit() {
+ | ^^^^
+
+error[E0308]: mismatched types
+ --> tests/ui/async_instrument.rs:10:5
+ |
+10 | ""
+ | ^^- help: try using a conversion method: `.to_string()`
+ | |
+ | expected struct `String`, found `&str`
+ |
+note: return type inferred to be `String` here
+ --> tests/ui/async_instrument.rs:9:31
+ |
+9 | async fn simple_mismatch() -> String {
+ | ^^^^^^
+
+error[E0277]: `(&str,)` doesn't implement `std::fmt::Display`
+ --> tests/ui/async_instrument.rs:14:1
+ |
+14 | #[tracing::instrument]
+ | ^^^^^^^^^^^^^^^^^^^^^^ `(&str,)` cannot be formatted with the default formatter
+ |
+ = help: the trait `std::fmt::Display` is not implemented for `(&str,)`
+ = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
+ = note: this error originates in the attribute macro `tracing::instrument` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0277]: `(&str,)` doesn't implement `std::fmt::Display`
+ --> tests/ui/async_instrument.rs:15:34
+ |
+15 | async fn opaque_unsatisfied() -> impl std::fmt::Display {
+ | ^^^^^^^^^^^^^^^^^^^^^^ `(&str,)` cannot be formatted with the default formatter
+ |
+ = help: the trait `std::fmt::Display` is not implemented for `(&str,)`
+ = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
+
+error[E0308]: mismatched types
+ --> tests/ui/async_instrument.rs:23:5
+ |
+23 | ""
+ | ^^ expected struct `Wrapper`, found `&str`
+ |
+ = note: expected struct `Wrapper<_>`
+ found reference `&'static str`
+note: return type inferred to be `Wrapper<_>` here
+ --> tests/ui/async_instrument.rs:22:36
+ |
+22 | async fn mismatch_with_opaque() -> Wrapper<impl std::fmt::Display> {
+ | ^^^^^^^
+help: try wrapping the expression in `Wrapper`
+ |
+23 | Wrapper("")
+ | ++++++++ +
+
+error[E0308]: mismatched types
+ --> tests/ui/async_instrument.rs:29:16
+ |
+29 | return "";
+ | ^^ expected `()`, found `&str`
+ |
+note: return type inferred to be `()` here
+ --> tests/ui/async_instrument.rs:27:10
+ |
+27 | async fn early_return_unit() {
+ | ^^^^^^^^^^^^^^^^^
+
+error[E0308]: mismatched types
+ --> tests/ui/async_instrument.rs:36:16
+ |
+36 | return "";
+ | ^^- help: try using a conversion method: `.to_string()`
+ | |
+ | expected struct `String`, found `&str`
+ |
+note: return type inferred to be `String` here
+ --> tests/ui/async_instrument.rs:34:28
+ |
+34 | async fn early_return() -> String {
+ | ^^^^^^
+
+error[E0308]: mismatched types
+ --> tests/ui/async_instrument.rs:42:35
+ |
+42 | async fn extra_semicolon() -> i32 {
+ | ___________________________________^
+43 | | 1;
+ | | - help: remove this semicolon
+44 | | }
+ | |_^ expected `i32`, found `()`
diff --git a/vendor/tracing-core/.cargo-checksum.json b/vendor/tracing-core/.cargo-checksum.json
index 157a61ad4..6a9cec13f 100644
--- a/vendor/tracing-core/.cargo-checksum.json
+++ b/vendor/tracing-core/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"291325b2d5ae0101a9cb9dadfa64810c1c98d04f43c7c1fcee4dc585cb34cf37","Cargo.toml":"d4029f638b3bbb553470ab93080fe78a155db13780e8e52d073d6ca10939614d","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"31f1a3504716da08f771f2fd10e06298a1fd6ecfdc2c78fd1cd66cce693d4e1c","src/callsite.rs":"6a69e08ba8e70234f4ca2a5c6215cdb5ce8d1b0e637102501787169448cbf2a1","src/dispatcher.rs":"5ffade623f3f19a7c497bc72da2d15fcdbd1ab65b1f393c9a9271dd742d99867","src/event.rs":"f2673bf5d266972e567e521c9cd92fb33f28b0c7e010937e3bc2bf9eb483087f","src/field.rs":"ec7f20bdb7a9d79b900777fc444ce82282bdfc4be4afe6223e2b7617da63964d","src/lazy.rs":"318e3558e4446abf26294287167c0788e343044a28072f9217bd985929809087","src/lib.rs":"088b29ecce4bdb5b68df9cbe3984f4b22d7124988866d5aace0e7029ea033d58","src/metadata.rs":"1019ffecd3d8a3636708c6654f34074c041af88b6221c4950037c6bbf09af835","src/parent.rs":"5d5ad733343280a64a1feb6a008e186c39305ec554f14279012b8d7915821471","src/span.rs":"dcf2135e4ca158c1be45007f0be25426c375a4081f8f3c5a4d7f7382d8a950a4","src/spin/LICENSE":"58545fed1565e42d687aecec6897d35c6d37ccb71479a137c0deb2203e125c79","src/spin/mod.rs":"c458ce5e875acb7fbfb279f23254f4924d7c6d6fee419b740800d2e8087d1524","src/spin/mutex.rs":"4d30ff2b59b18fd7909f016e1abdf9aa0c04aa11d047a46e98cffe1319e32dad","src/spin/once.rs":"3781fd4eae0db04d80c03a039906c99b1e01d1583b29ac0144e6fbbd5a0fef0b","src/stdlib.rs":"698693062b8109cace3ffea02e9c2372b7d5b5d43c0b11cb4800b0e7b1a69971","src/subscriber.rs":"916d315ca324a752f70fc3cc557089418a63779ceda54955f55f0ab3c1f3fc7b","tests/common/mod.rs":"0bbb217baa17df0f96cc1ff57dfa74ccc5a959e7f66b15bb7d25d5f43358a278","tests/dispatch.rs":"d3f000fab43734a854c82a7783142910c5e79f806cbd3f8ec5eded598c59ddb1","tests/global_dispatch.rs":"cdc05d77e448ee8b50bfb930abafa3f19b4c6f922b7bebc7797fa1dbdaa1d398","tests/macros.rs":"b1603d888b349c8d103794deceec3b1ae4538b8d3eba805f3f561899e8ad0dd2"},"package":"7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"93400b6ed3661b8f238549f19e55b0482da163a4504080785fefdcdc8b719198","Cargo.toml":"798de58e851a5cc16f76850f08ab381628c3858a438c31a3fa3e35c06e60992c","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"5f5e27d08d3c5ae5f8cc304fcd71ecc61f0c61b27e4bd983c89558805353479d","src/callsite.rs":"479f3b3809afff20ac2a4652f11ec1adc8dd59bd90c608e4e248de4a43c5a43c","src/dispatcher.rs":"16c0ceb3e9de5b7c1365d1c8cc010d12048569d3e9b1146b99b3ea3f0f582ba8","src/event.rs":"f2673bf5d266972e567e521c9cd92fb33f28b0c7e010937e3bc2bf9eb483087f","src/field.rs":"4ec913012ffcf05d3feba2a5ea2ba99c35e2072dabfa2db75614c0e122961b7e","src/lazy.rs":"318e3558e4446abf26294287167c0788e343044a28072f9217bd985929809087","src/lib.rs":"088b29ecce4bdb5b68df9cbe3984f4b22d7124988866d5aace0e7029ea033d58","src/metadata.rs":"1a79326aee210b9e20eb08d5baa22133390f2b1e868cf4dc72a3e9bc9a37d17f","src/parent.rs":"5d5ad733343280a64a1feb6a008e186c39305ec554f14279012b8d7915821471","src/span.rs":"dcf2135e4ca158c1be45007f0be25426c375a4081f8f3c5a4d7f7382d8a950a4","src/spin/LICENSE":"58545fed1565e42d687aecec6897d35c6d37ccb71479a137c0deb2203e125c79","src/spin/mod.rs":"c458ce5e875acb7fbfb279f23254f4924d7c6d6fee419b740800d2e8087d1524","src/spin/mutex.rs":"4d30ff2b59b18fd7909f016e1abdf9aa0c04aa11d047a46e98cffe1319e32dad","src/spin/once.rs":"3781fd4eae0db04d80c03a039906c99b1e01d1583b29ac0144e6fbbd5a0fef0b","src/stdlib.rs":"698693062b8109cace3ffea02e9c2372b7d5b5d43c0b11cb4800b0e7b1a69971","src/subscriber.rs":"baef1454ccf5f552b0a7ba6840eeeca19f7edf21e0303607b86e9e5ffc989a38","tests/common/mod.rs":"0bbb217baa17df0f96cc1ff57dfa74ccc5a959e7f66b15bb7d25d5f43358a278","tests/dispatch.rs":"d3f000fab43734a854c82a7783142910c5e79f806cbd3f8ec5eded598c59ddb1","tests/global_dispatch.rs":"cdc05d77e448ee8b50bfb930abafa3f19b4c6f922b7bebc7797fa1dbdaa1d398","tests/macros.rs":"b1603d888b349c8d103794deceec3b1ae4538b8d3eba805f3f561899e8ad0dd2"},"package":"24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"} \ No newline at end of file
diff --git a/vendor/tracing-core/CHANGELOG.md b/vendor/tracing-core/CHANGELOG.md
index c6afcb077..cf0d8e3b9 100644
--- a/vendor/tracing-core/CHANGELOG.md
+++ b/vendor/tracing-core/CHANGELOG.md
@@ -1,3 +1,44 @@
+# 0.1.30 (October 6, 2022)
+
+This release of `tracing-core` adds a new `on_register_dispatch` method to the
+`Subscriber` trait to allow the `Subscriber` to perform initialization after
+being registered as a `Dispatch`, and a `WeakDispatch` type to allow a
+`Subscriber` to store its own `Dispatch` without creating reference count
+cycles.
+
+### Added
+
+- `Subscriber::on_register_dispatch` method ([#2269])
+- `WeakDispatch` type and `Dispatch::downgrade()` function ([#2293])
+
+Thanks to @jswrenn for contributing to this release!
+
+[#2269]: https://github.com/tokio-rs/tracing/pull/2269
+[#2293]: https://github.com/tokio-rs/tracing/pull/2293
+
+# 0.1.29 (July 29, 2022)
+
+This release of `tracing-core` adds `PartialEq` and `Eq` implementations for
+metadata types, and improves error messages when setting the global default
+subscriber fails.
+
+### Added
+
+- `PartialEq` and `Eq` implementations for `Metadata` ([#2229])
+- `PartialEq` and `Eq` implementations for `FieldSet` ([#2229])
+
+### Fixed
+
+- Fixed unhelpful `fmt::Debug` output for `dispatcher::SetGlobalDefaultError`
+ ([#2250])
+- Fixed compilation with `-Z minimal-versions` ([#2246])
+
+Thanks to @jswrenn and @CAD97 for contributing to this release!
+
+[#2229]: https://github.com/tokio-rs/tracing/pull/2229
+[#2246]: https://github.com/tokio-rs/tracing/pull/2246
+[#2250]: https://github.com/tokio-rs/tracing/pull/2250
+
# 0.1.28 (June 23, 2022)
This release of `tracing-core` adds new `Value` implementations, including one
diff --git a/vendor/tracing-core/Cargo.toml b/vendor/tracing-core/Cargo.toml
index 40d797d54..806006141 100644
--- a/vendor/tracing-core/Cargo.toml
+++ b/vendor/tracing-core/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.49.0"
name = "tracing-core"
-version = "0.1.28"
+version = "0.1.30"
authors = ["Tokio Contributors <team@tokio.rs>"]
description = """
Core primitives for application-level tracing.
@@ -47,7 +47,7 @@ rustc-args = [
]
[dependencies.once_cell]
-version = "1.12"
+version = "1.13.0"
optional = true
[features]
@@ -60,7 +60,7 @@ std = ["once_cell"]
[target."cfg(tracing_unstable)".dependencies.valuable]
version = "0.1.0"
optional = true
-default_features = false
+default-features = false
[badges.maintenance]
status = "actively-developed"
diff --git a/vendor/tracing-core/README.md b/vendor/tracing-core/README.md
index f3afec07e..f06c76059 100644
--- a/vendor/tracing-core/README.md
+++ b/vendor/tracing-core/README.md
@@ -16,9 +16,9 @@ Core primitives for application-level tracing.
[Documentation][docs-url] | [Chat][discord-url]
[crates-badge]: https://img.shields.io/crates/v/tracing-core.svg
-[crates-url]: https://crates.io/crates/tracing-core/0.1.28
+[crates-url]: https://crates.io/crates/tracing-core/0.1.30
[docs-badge]: https://docs.rs/tracing-core/badge.svg
-[docs-url]: https://docs.rs/tracing-core/0.1.28
+[docs-url]: https://docs.rs/tracing-core/0.1.30
[docs-master-badge]: https://img.shields.io/badge/docs-master-blue
[docs-master-url]: https://tracing-rs.netlify.com/tracing_core
[mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg
@@ -79,22 +79,22 @@ The following crate feature flags are available:
```toml
[dependencies]
- tracing-core = { version = "0.1.28", default-features = false }
+ tracing-core = { version = "0.1.30", default-features = false }
```
**Note**:`tracing-core`'s `no_std` support requires `liballoc`.
[`tracing`]: ../tracing
-[`span::Id`]: https://docs.rs/tracing-core/0.1.28/tracing_core/span/struct.Id.html
-[`Event`]: https://docs.rs/tracing-core/0.1.28/tracing_core/event/struct.Event.html
-[`Subscriber`]: https://docs.rs/tracing-core/0.1.28/tracing_core/subscriber/trait.Subscriber.html
-[`Metadata`]: https://docs.rs/tracing-core/0.1.28/tracing_core/metadata/struct.Metadata.html
-[`Callsite`]: https://docs.rs/tracing-core/0.1.28/tracing_core/callsite/trait.Callsite.html
-[`Field`]: https://docs.rs/tracing-core/0.1.28/tracing_core/field/struct.Field.html
-[`FieldSet`]: https://docs.rs/tracing-core/0.1.28/tracing_core/field/struct.FieldSet.html
-[`Value`]: https://docs.rs/tracing-core/0.1.28/tracing_core/field/trait.Value.html
-[`ValueSet`]: https://docs.rs/tracing-core/0.1.28/tracing_core/field/struct.ValueSet.html
-[`Dispatch`]: https://docs.rs/tracing-core/0.1.28/tracing_core/dispatcher/struct.Dispatch.html
+[`span::Id`]: https://docs.rs/tracing-core/0.1.30/tracing_core/span/struct.Id.html
+[`Event`]: https://docs.rs/tracing-core/0.1.30/tracing_core/event/struct.Event.html
+[`Subscriber`]: https://docs.rs/tracing-core/0.1.30/tracing_core/subscriber/trait.Subscriber.html
+[`Metadata`]: https://docs.rs/tracing-core/0.1.30/tracing_core/metadata/struct.Metadata.html
+[`Callsite`]: https://docs.rs/tracing-core/0.1.30/tracing_core/callsite/trait.Callsite.html
+[`Field`]: https://docs.rs/tracing-core/0.1.30/tracing_core/field/struct.Field.html
+[`FieldSet`]: https://docs.rs/tracing-core/0.1.30/tracing_core/field/struct.FieldSet.html
+[`Value`]: https://docs.rs/tracing-core/0.1.30/tracing_core/field/trait.Value.html
+[`ValueSet`]: https://docs.rs/tracing-core/0.1.30/tracing_core/field/struct.ValueSet.html
+[`Dispatch`]: https://docs.rs/tracing-core/0.1.30/tracing_core/dispatcher/struct.Dispatch.html
## Supported Rust Versions
diff --git a/vendor/tracing-core/src/callsite.rs b/vendor/tracing-core/src/callsite.rs
index d0fe1a3d6..f88713236 100644
--- a/vendor/tracing-core/src/callsite.rs
+++ b/vendor/tracing-core/src/callsite.rs
@@ -137,6 +137,15 @@ pub trait Callsite: Sync {
/// Returns the [metadata] associated with the callsite.
///
+ /// <div class="example-wrap" style="display:inline-block">
+ /// <pre class="ignore" style="white-space:normal;font:inherit;">
+ ///
+ /// **Note:** Implementations of this method should not produce [`Metadata`]
+ /// that share the same callsite [`Identifier`] but otherwise differ in any
+ /// way (e.g., have different `name`s).
+ ///
+ /// </pre></div>
+ ///
/// [metadata]: super::metadata::Metadata
fn metadata(&self) -> &Metadata<'_>;
@@ -478,6 +487,7 @@ impl Callsites {
pub(crate) fn register_dispatch(dispatch: &Dispatch) {
let dispatchers = DISPATCHERS.register_dispatch(dispatch);
+ dispatch.subscriber().on_register_dispatch(dispatch);
CALLSITES.rebuild_interest(dispatchers);
}
diff --git a/vendor/tracing-core/src/dispatcher.rs b/vendor/tracing-core/src/dispatcher.rs
index 041722c36..36b3cfd85 100644
--- a/vendor/tracing-core/src/dispatcher.rs
+++ b/vendor/tracing-core/src/dispatcher.rs
@@ -134,7 +134,7 @@ use crate::stdlib::{
fmt,
sync::{
atomic::{AtomicBool, AtomicUsize, Ordering},
- Arc,
+ Arc, Weak,
},
};
@@ -142,16 +142,50 @@ use crate::stdlib::{
use crate::stdlib::{
cell::{Cell, RefCell, RefMut},
error,
- sync::Weak,
};
+#[cfg(feature = "alloc")]
+use alloc::sync::{Arc, Weak};
+
+#[cfg(feature = "alloc")]
+use core::ops::Deref;
+
/// `Dispatch` trace data to a [`Subscriber`].
-///
#[derive(Clone)]
pub struct Dispatch {
subscriber: Arc<dyn Subscriber + Send + Sync>,
}
+/// `WeakDispatch` is a version of [`Dispatch`] that holds a non-owning reference
+/// to a [`Subscriber`].
+///
+/// The Subscriber` may be accessed by calling [`WeakDispatch::upgrade`],
+/// which returns an `Option<Dispatch>`. If all [`Dispatch`] clones that point
+/// at the `Subscriber` have been dropped, [`WeakDispatch::upgrade`] will return
+/// `None`. Otherwise, it will return `Some(Dispatch)`.
+///
+/// A `WeakDispatch` may be created from a [`Dispatch`] by calling the
+/// [`Dispatch::downgrade`] method. The primary use for creating a
+/// [`WeakDispatch`] is to allow a Subscriber` to hold a cyclical reference to
+/// itself without creating a memory leak. See [here] for details.
+///
+/// This type is analogous to the [`std::sync::Weak`] type, but for a
+/// [`Dispatch`] rather than an [`Arc`].
+///
+/// [`Arc`]: std::sync::Arc
+/// [here]: Subscriber#avoiding-memory-leaks
+#[derive(Clone)]
+pub struct WeakDispatch {
+ subscriber: Weak<dyn Subscriber + Send + Sync>,
+}
+
+#[cfg(feature = "alloc")]
+#[derive(Clone)]
+enum Kind<T> {
+ Global(&'static (dyn Collect + Send + Sync)),
+ Scoped(T),
+}
+
#[cfg(feature = "std")]
thread_local! {
static CURRENT_STATE: State = State {
@@ -293,14 +327,21 @@ pub fn has_been_set() -> bool {
}
/// Returned if setting the global dispatcher fails.
-#[derive(Debug)]
pub struct SetGlobalDefaultError {
_no_construct: (),
}
+impl fmt::Debug for SetGlobalDefaultError {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ f.debug_tuple("SetGlobalDefaultError")
+ .field(&Self::MESSAGE)
+ .finish()
+ }
+}
+
impl fmt::Display for SetGlobalDefaultError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.pad("a global default trace dispatcher has already been set")
+ f.pad(Self::MESSAGE)
}
}
@@ -308,6 +349,10 @@ impl fmt::Display for SetGlobalDefaultError {
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
impl error::Error for SetGlobalDefaultError {}
+impl SetGlobalDefaultError {
+ const MESSAGE: &'static str = "a global default trace dispatcher has already been set";
+}
+
/// Executes a closure with a reference to this thread's current [dispatcher].
///
/// Note that calls to `get_default` should not be nested; if this function is
@@ -419,8 +464,34 @@ impl Dispatch {
Registrar(Arc::downgrade(&self.subscriber))
}
- /// Registers a new callsite with this subscriber, returning whether or not
- /// the subscriber is interested in being notified about the callsite.
+ /// Creates a [`WeakDispatch`] from this `Dispatch`.
+ ///
+ /// A [`WeakDispatch`] is similar to a [`Dispatch`], but it does not prevent
+ /// the underlying [`Subscriber`] from being dropped. Instead, it only permits
+ /// access while other references to the `Subscriber` exist. This is equivalent
+ /// to the standard library's [`Arc::downgrade`] method, but for `Dispatch`
+ /// rather than `Arc`.
+ ///
+ /// The primary use for creating a [`WeakDispatch`] is to allow a `Subscriber`
+ /// to hold a cyclical reference to itself without creating a memory leak.
+ /// See [here] for details.
+ ///
+ /// [`Arc::downgrade`]: std::sync::Arc::downgrade
+ /// [here]: Subscriber#avoiding-memory-leaks
+ pub fn downgrade(&self) -> WeakDispatch {
+ WeakDispatch {
+ subscriber: Arc::downgrade(&self.subscriber),
+ }
+ }
+
+ #[inline(always)]
+ #[cfg(not(feature = "alloc"))]
+ pub(crate) fn subscriber(&self) -> &(dyn Subscriber + Send + Sync) {
+ &self.subscriber
+ }
+
+ /// Registers a new callsite with this collector, returning whether or not
+ /// the collector is interested in being notified about the callsite.
///
/// This calls the [`register_callsite`] function on the [`Subscriber`]
/// that this `Dispatch` forwards to.
@@ -620,14 +691,14 @@ impl Dispatch {
/// `T`.
#[inline]
pub fn is<T: Any>(&self) -> bool {
- <dyn Subscriber>::is::<T>(&*self.subscriber)
+ <dyn Subscriber>::is::<T>(&self.subscriber)
}
/// Returns some reference to the `Subscriber` this `Dispatch` forwards to
/// if it is of type `T`, or `None` if it isn't.
#[inline]
pub fn downcast_ref<T: Any>(&self) -> Option<&T> {
- <dyn Subscriber>::downcast_ref(&*self.subscriber)
+ <dyn Subscriber>::downcast_ref(&self.subscriber)
}
}
@@ -656,6 +727,45 @@ where
}
}
+// === impl WeakDispatch ===
+
+impl WeakDispatch {
+ /// Attempts to upgrade this `WeakDispatch` to a [`Dispatch`].
+ ///
+ /// Returns `None` if the referenced `Dispatch` has already been dropped.
+ ///
+ /// ## Examples
+ ///
+ /// ```
+ /// # use tracing_core::subscriber::NoSubscriber;
+ /// # use tracing_core::dispatcher::Dispatch;
+ /// let strong = Dispatch::new(NoSubscriber::default());
+ /// let weak = strong.downgrade();
+ ///
+ /// // The strong here keeps it alive, so we can still access the object.
+ /// assert!(weak.upgrade().is_some());
+ ///
+ /// drop(strong); // But not any more.
+ /// assert!(weak.upgrade().is_none());
+ /// ```
+ pub fn upgrade(&self) -> Option<Dispatch> {
+ self.subscriber
+ .upgrade()
+ .map(|subscriber| Dispatch { subscriber })
+ }
+}
+
+impl fmt::Debug for WeakDispatch {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ let mut tuple = f.debug_tuple("WeakDispatch");
+ match self.subscriber.upgrade() {
+ Some(subscriber) => tuple.field(&format_args!("Some({:p})", subscriber)),
+ None => tuple.field(&format_args!("None")),
+ };
+ tuple.finish()
+ }
+}
+
#[cfg(feature = "std")]
impl Registrar {
pub(crate) fn upgrade(&self) -> Option<Dispatch> {
diff --git a/vendor/tracing-core/src/field.rs b/vendor/tracing-core/src/field.rs
index c9869ce2c..e103c75a9 100644
--- a/vendor/tracing-core/src/field.rs
+++ b/vendor/tracing-core/src/field.rs
@@ -145,6 +145,16 @@ pub struct Field {
pub struct Empty;
/// Describes the fields present on a span.
+///
+/// ## Equality
+///
+/// In well-behaved applications, two `FieldSet`s [initialized] with equal
+/// [callsite identifiers] will have identical fields. Consequently, in release
+/// builds, [`FieldSet::eq`] *only* checks that its arguments have equal
+/// callsites. However, the equality of field names is checked in debug builds.
+///
+/// [initialized]: Self::new
+/// [callsite identifiers]: callsite::Identifier
pub struct FieldSet {
/// The names of each field on the described span.
names: &'static [&'static str],
@@ -911,6 +921,40 @@ impl fmt::Display for FieldSet {
}
}
+impl Eq for FieldSet {}
+
+impl PartialEq for FieldSet {
+ fn eq(&self, other: &Self) -> bool {
+ if core::ptr::eq(&self, &other) {
+ true
+ } else if cfg!(not(debug_assertions)) {
+ // In a well-behaving application, two `FieldSet`s can be assumed to
+ // be totally equal so long as they share the same callsite.
+ self.callsite == other.callsite
+ } else {
+ // However, when debug-assertions are enabled, do NOT assume that
+ // the application is well-behaving; check every the field names of
+ // each `FieldSet` for equality.
+
+ // `FieldSet` is destructured here to ensure a compile-error if the
+ // fields of `FieldSet` change.
+ let Self {
+ names: lhs_names,
+ callsite: lhs_callsite,
+ } = self;
+
+ let Self {
+ names: rhs_names,
+ callsite: rhs_callsite,
+ } = &other;
+
+ // Check callsite equality first, as it is probably cheaper to do
+ // than str equality.
+ lhs_callsite == rhs_callsite && lhs_names == rhs_names
+ }
+ }
+}
+
// ===== impl Iter =====
impl Iterator for Iter {
diff --git a/vendor/tracing-core/src/metadata.rs b/vendor/tracing-core/src/metadata.rs
index 47b9388a4..a154419a7 100644
--- a/vendor/tracing-core/src/metadata.rs
+++ b/vendor/tracing-core/src/metadata.rs
@@ -35,28 +35,25 @@ use crate::stdlib::{
/// _significantly_ lower than that of creating the actual span. Therefore,
/// filtering is based on metadata, rather than on the constructed span.
///
-/// <pre class="ignore" style="white-space:normal;font:inherit;">
-/// <strong>Note</strong>: Although instances of <code>Metadata</code>
-/// cannot be compared directly, they provide a method
-/// <a href="struct.Metadata.html#method.id"><code>id</code></a>, returning
-/// an opaque <a href="../callsite/struct.Identifier.html">callsite
-/// identifier</a>which uniquely identifies the callsite where the metadata
-/// originated. This can be used to determine if two <code>Metadata</code>
-/// correspond to the same callsite.
-/// </pre>
+/// ## Equality
+///
+/// In well-behaved applications, two `Metadata` with equal
+/// [callsite identifiers] will be equal in all other ways (i.e., have the same
+/// `name`, `target`, etc.). Consequently, in release builds, [`Metadata::eq`]
+/// *only* checks that its arguments have equal callsites. However, the equality
+/// of `Metadata`'s other fields is checked in debug builds.
///
/// [span]: super::span
/// [event]: super::event
-/// [name]: Metadata::name()
-/// [target]: Metadata::target()
-/// [fields]: Metadata::fields()
-/// [verbosity level]: Metadata::level()
-/// [file name]: Metadata::file()
-/// [line number]: Metadata::line()
-/// [module path]: Metadata::module_path()
+/// [name]: Self::name
+/// [target]: Self::target
+/// [fields]: Self::fields
+/// [verbosity level]: Self::level
+/// [file name]: Self::file
+/// [line number]: Self::line
+/// [module path]: Self::module_path
/// [`Subscriber`]: super::subscriber::Subscriber
-/// [`id`]: Metadata::id
-/// [callsite identifier]: super::callsite::Identifier
+/// [callsite identifiers]: Self::callsite
pub struct Metadata<'a> {
/// The name of the span described by this metadata.
name: &'static str,
@@ -443,6 +440,62 @@ impl fmt::Debug for Kind {
}
}
+impl<'a> Eq for Metadata<'a> {}
+
+impl<'a> PartialEq for Metadata<'a> {
+ #[inline]
+ fn eq(&self, other: &Self) -> bool {
+ if core::ptr::eq(&self, &other) {
+ true
+ } else if cfg!(not(debug_assertions)) {
+ // In a well-behaving application, two `Metadata` can be assumed to
+ // be totally equal so long as they share the same callsite.
+ self.callsite() == other.callsite()
+ } else {
+ // However, when debug-assertions are enabled, do not assume that
+ // the application is well-behaving; check every field of `Metadata`
+ // for equality.
+
+ // `Metadata` is destructured here to ensure a compile-error if the
+ // fields of `Metadata` change.
+ let Metadata {
+ name: lhs_name,
+ target: lhs_target,
+ level: lhs_level,
+ module_path: lhs_module_path,
+ file: lhs_file,
+ line: lhs_line,
+ fields: lhs_fields,
+ kind: lhs_kind,
+ } = self;
+
+ let Metadata {
+ name: rhs_name,
+ target: rhs_target,
+ level: rhs_level,
+ module_path: rhs_module_path,
+ file: rhs_file,
+ line: rhs_line,
+ fields: rhs_fields,
+ kind: rhs_kind,
+ } = &other;
+
+ // The initial comparison of callsites is purely an optimization;
+ // it can be removed without affecting the overall semantics of the
+ // expression.
+ self.callsite() == other.callsite()
+ && lhs_name == rhs_name
+ && lhs_target == rhs_target
+ && lhs_level == rhs_level
+ && lhs_module_path == rhs_module_path
+ && lhs_file == rhs_file
+ && lhs_line == rhs_line
+ && lhs_fields == rhs_fields
+ && lhs_kind == rhs_kind
+ }
+ }
+}
+
// ===== impl Level =====
impl Level {
diff --git a/vendor/tracing-core/src/subscriber.rs b/vendor/tracing-core/src/subscriber.rs
index a6f0834e2..e8f444119 100644
--- a/vendor/tracing-core/src/subscriber.rs
+++ b/vendor/tracing-core/src/subscriber.rs
@@ -1,5 +1,5 @@
-//! Subscribers collect and record trace data.
-use crate::{span, Event, LevelFilter, Metadata};
+//! Collectors collect and record trace data.
+use crate::{span, Dispatch, Event, LevelFilter, Metadata};
use crate::stdlib::{
any::{Any, TypeId},
@@ -81,7 +81,28 @@ use crate::stdlib::{
/// [`event`]: Subscriber::event
/// [`event_enabled`]: Subscriber::event_enabled
pub trait Subscriber: 'static {
- // === Span registry methods ==============================================
+ /// Invoked when this subscriber becomes a [`Dispatch`].
+ ///
+ /// ## Avoiding Memory Leaks
+ ///
+ /// `Subscriber`s should not store their own [`Dispatch`]. Because the
+ /// `Dispatch` owns the `Subscriber`, storing the `Dispatch` within the
+ /// `Subscriber` will create a reference count cycle, preventing the `Dispatch`
+ /// from ever being dropped.
+ ///
+ /// Instead, when it is necessary to store a cyclical reference to the
+ /// `Dispatch` within a `Subscriber`, use [`Dispatch::downgrade`] to convert a
+ /// `Dispatch` into a [`WeakDispatch`]. This type is analogous to
+ /// [`std::sync::Weak`], and does not create a reference count cycle. A
+ /// [`WeakDispatch`] can be stored within a `Subscriber` without causing a
+ /// memory leak, and can be [upgraded] into a `Dispatch` temporarily when
+ /// the `Dispatch` must be accessed by the `Subscriber`.
+ ///
+ /// [`WeakDispatch`]: crate::dispatcher::WeakDispatch
+ /// [upgraded]: crate::dispatcher::WeakDispatch::upgrade
+ fn on_register_dispatch(&self, subscriber: &Dispatch) {
+ let _ = subscriber;
+ }
/// Registers a new [callsite] with this subscriber, returning whether or not
/// the subscriber is interested in being notified about the callsite.
diff --git a/vendor/tracing-subscriber-0.3.3/.cargo-checksum.json b/vendor/tracing-subscriber-0.3.3/.cargo-checksum.json
new file mode 100644
index 000000000..3fd14355e
--- /dev/null
+++ b/vendor/tracing-subscriber-0.3.3/.cargo-checksum.json
@@ -0,0 +1 @@
+{"files":{"CHANGELOG.md":"fd7a732ca8d5997cf09a6ffbde0dda0667873031884aa3549d6044971dc00a66","Cargo.toml":"4908f04be83f94bc75fbcf4244fa57b8a52c984928a3320550b692c1038d5448","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"803714740b5ad75ac31a0f9dafd10e0d4d62f7c27c2c0e182d2076a313b0649b","benches/enter.rs":"4a94a04e2abd07950ef2f0b646f4dcdf4ff00abf6396edb5a53c8b41b7691b1a","benches/filter.rs":"6374005ffa47fa19880bb95e3e37406f40ea72a02c5136f4d5eb4c663d452b18","benches/filter_log.rs":"612716bdf9a188093e84d014a4847f18157f148f7d64e54150cd5c91ac709a8a","benches/fmt.rs":"5a0ff37967ffef3a221eebb78855d031e2e883a8a67528c8e794cc6f16cbee8a","benches/support/mod.rs":"72bef51154da9c9b3d81300195c1929a818858fa4b4fc2aa07b49ca586f4cd39","src/field/debug.rs":"4ab50198a0b042d92fefa77b5cac0aef7ba6936149fa555f4b6e2036dcd7f2d7","src/field/delimited.rs":"e6b2dcbf9cb1e9b5e862b462f91190adaf8e14f9c2c5d2048ad651f49cfa2007","src/field/display.rs":"9c06a52919dbe9bfd4cf7eec39293240c9facebe052a2fecc2f21184beb5195f","src/field/mod.rs":"35e3dd4ad7b49c99a24e80c6a40a00b3189a114488793657d6d733a90d2e10f6","src/filter/directive.rs":"7ecf87b17afbddadbc385764c2d9c1fda4b020a08d75f741f8e34c7dc475bd74","src/filter/env/directive.rs":"628f9f566ccee924d43d79b287c569abfc32c2fb74e078958aed6cb8285cfb4f","src/filter/env/field.rs":"9f2ceaedf2e2ecefaff863347ef8dfa85cd5f64a0fd09a0f77f64f412c9bb548","src/filter/env/mod.rs":"7f864a5ef0c008c7fe9a21d0a94bb87dd72746e628ff3e68c18b0fd173763918","src/filter/filter_fn.rs":"0debbc4a4b4d2a57b2a06905017ac908bf34b0a64aaf961535fbf6f4d5a700a9","src/filter/layer_filters.rs":"16ff19fed003b913de4f85a03b31864d71ee73c7ce86b07c80da07fe633f682e","src/filter/level.rs":"cc449757aac47caaf19dd5ba4d74c8efbcd7531fcd6c13da0c5f6fdda12cc9ca","src/filter/mod.rs":"8ebfd0dc92415ff27ec552f20919e598842a87186f13f120449053a96e1e3307","src/filter/targets.rs":"5cec882366d7f12de0a88f7daaac8499785ce9e3832619f251876a02ae19a6bf","src/fmt/fmt_layer.rs":"486264d810ab6b28428bd48e00774fc822762fc9f991332a2d94a42b3168f2e6","src/fmt/format/json.rs":"1a38c049e1bf99efaf7db1f1fd26d3a5bb1e768fc1524c95816708e5d39fca35","src/fmt/format/mod.rs":"ff92f7910bed4f3c0c2ce798333d273d6b5b5fc09cc78031f52d13e043986227","src/fmt/format/pretty.rs":"eecf278b15cc60b35c3f6aa5d05452401c7a4a29195357e92318d684fcfe3072","src/fmt/mod.rs":"270ffa0a9e6543a602247fccef276a3012daa558181f24cd9032292edbc8dc2c","src/fmt/time/datetime.rs":"778d4604d800e46b940087394e7b72750738b554e02aea523fa9820ab0768c08","src/fmt/time/mod.rs":"304c9383e5cfc0c42d79f47a10323ed5a98585e018b127924b0925ec067f0739","src/fmt/time/time_crate.rs":"bacec2c8bb31175b85f2fb3ae40155a08b2aab7a04adaf4c88679147dc651c58","src/fmt/writer.rs":"1d7a4e2dddddff1bfd1344f2cecdb6b2b69b015c9869d95987d26e177dffa793","src/layer/context.rs":"2478693e2faffdf2e519b6d37e1c3aa3dd75088185accc2b68ffa8612bf73195","src/layer/layered.rs":"ba918a9b944f2c083cbb75d6d7f99f90083aa0a29cf3f4f1dd78aa034e09ade6","src/layer/mod.rs":"e1804cfe91051020cac63fb1067d196552ebb844b6c6d1d2279b97dbec1c64df","src/layer/tests.rs":"3e974d627c4bc4269cfa10c82c890e596c9d46af8e6bc03c6c117bde1237e948","src/lib.rs":"cb362279b3c6d23645cda6d768707576f460e275d332d5350a036437cd5404e0","src/macros.rs":"e184bffc6b5999c48e365ad08343dca764a5fb711b789beb26bd1d5f1d767726","src/prelude.rs":"088635def33be9a4c4b6ed934dc22540c555e27d62f7625a43aa9c0e525ca467","src/registry/extensions.rs":"7333aefd69c767212a7924c57283442430edccb17092c91e02a7d13b2d312b11","src/registry/mod.rs":"4f0108e75e0f6e239b8eb69fcad052f25e3b887e412e951e0cbec02cf13f05d5","src/registry/sharded.rs":"972bdd94f43a33ef1f2ebf96ea69ebe4c1d4b0215e69315a3b525783c2025696","src/registry/stack.rs":"9ef333d6a8a28a064e80ff1e376dbb07bc597009010ec332b2dc3ab435d737c2","src/reload.rs":"41fa9a1a28fef626e302a80a68d665492e73ef6d1a2a3c2a7aac5d6c9a0bb496","src/sync.rs":"7f78f3de5b618a999be0e61f936a233975e7769f1ebb55a0e48c3d199e9c45e3","src/util.rs":"55b4e9d63112f9d5a12a287273a9b1212741058384332d3edc024168cacfd627","tests/cached_layer_filters_dont_break_other_layers.rs":"b2084542a014abeff821b30b2b8c21e32bfdcffae53ce5335fb588f557fa4244","tests/duplicate_spans.rs":"48f596bbfabcc6618244afddcf3c3f2e915b9d79284f17bdd0e0616ad29929be","tests/field_filter.rs":"c44d88ab711164a2b1b3a09377284b469f79ddf4651416515a035782c7c64b79","tests/filter.rs":"a43d23e867af779031b6245047092aca57ee26980a8f3faa19036542bcd37f06","tests/filter_log.rs":"e0cd9d394dbfeeb80570a7686bc7f588c5489657980436810711ed8852f86169","tests/fmt_max_level_hint.rs":"d4c6d6f976ae41ab8052fa610a7337ad7150802cbd5634cb30fc45c1f215cfcd","tests/hinted_layer_filters_dont_break_other_layers.rs":"d5ba9cfb6784cf59f007e673ad549dc722d109f6b3d4a69f6aa11b25ca10b469","tests/layer_filter_interests_are_cached.rs":"d036d1c4bc3754e94ebfdda9c841f4858ccec40aba0720f3fbf26c817bfe5a83","tests/layer_filters/boxed.rs":"04db459721a26d6502a2b3fbe42154c5a451021a9374a18c017d10971f44e0c0","tests/layer_filters/downcast_raw.rs":"9b90ead571543cbe14e89b4fe637360d9baf3069f6f656ed3bdf65e7318648f1","tests/layer_filters/filter_scopes.rs":"02611bc58d0d8a67a127eca8cab1b2d9a9901bd2c8a8daad41adf6089b28aee0","tests/layer_filters/main.rs":"0316d611c740e234b78ed9a9dae392fe80472c1e8b004a007ad2dd87d068c67b","tests/layer_filters/targets.rs":"138e3f9ddd68571d94c5aff9d54ee2fbc5f44724c6ee42477a411740ccb79ee6","tests/layer_filters/trees.rs":"4df7b5cf12da44a9255c56e5b80e2b0cf84820230ba916f324c67bc3ee4e4605","tests/multiple_layer_filter_interests_cached.rs":"1ea195f03e58d715228ec1b604f85bda2fc82812d05b2f6370d5edd34a035f32","tests/registry_max_level_hint.rs":"ba386d32b8d13832d7009163241c3d0723488c0393d85647eb9368776251e4fc","tests/registry_with_subscriber.rs":"13b92ed68d9013aefefbc4c73e695c690630e4460634206d214db4c19abb7c0f","tests/reload.rs":"4566386b1b26e6609f5a4bf0e6bef1c2245a591d12417cee189b26dfa14f7f95","tests/same_len_filters.rs":"50c8f5fa1494773410a9f52a56b303534a01a023b186cf2f3131e5e7706eb156","tests/support.rs":"75559505af8018012739d24b3c8743dd079b4d3a8ae28f08b4586a961720aa7b","tests/unhinted_layer_filters_dont_break_other_layers.rs":"519cfef4977e511af938546d4208c645a28248c8ed8666daf180f0ad32f0a261","tests/utils.rs":"2b04ce2d8b56a9062a025900104853e081eae8e3f113f990a915d5f9dea6577b"},"package":"245da694cc7fc4729f3f418b304cb57789f1bed2a78c575407ab8a23f53cb4d3"} \ No newline at end of file
diff --git a/vendor/tracing-subscriber/CHANGELOG.md b/vendor/tracing-subscriber-0.3.3/CHANGELOG.md
index 35747566e..c380ff3b1 100644
--- a/vendor/tracing-subscriber/CHANGELOG.md
+++ b/vendor/tracing-subscriber-0.3.3/CHANGELOG.md
@@ -1,313 +1,3 @@
-# 0.3.14 (Jul 1, 2022)
-
-This release fixes multiple filtering bugs in the `Layer` implementations for
-`Option<impl Layer>` and `Vec<impl Layer>`.
-
-### Fixed
-
-- **layer**: `Layer::event_enabled` implementation for `Option<impl Layer<S>>`
- returning `false` when the `Option` is `None`, disabling all events globally
- ([#2193])
-- **layer**: `Layer::max_level_hint` implementation for `Option<impl Layer<S>>`
- incorrectly disabling max level filtering when the option is `None` ([#2195])
-- **layer**: `Layer::max_level_hint` implementation for `Vec<impl Layer<S>>`
- returning `LevelFilter::ERROR` rather than `LevelFilter::OFF` when the `Vec`
- is empty ([#2195])
-
-Thanks to @CAD97 and @guswynn for contributing to this release!
-
-[#2193]: https://github.com/tokio-rs/tracing/pull/2193
-[#2195]: https://github.com/tokio-rs/tracing/pull/2195
-
-# 0.3.13 (Jun 30, 2022) (YANKED)
-
-This release of `tracing-subscriber` fixes a compilation failure due to an
-incorrect `tracing-core` dependency that was introduced in v0.3.12.
-
-### Changed
-
-- **tracing_core**: Updated minimum dependency version to 0.1.28 ([#2190])
-
-[#2190]: https://github.com/tokio-rs/tracing/pull/2190
-
-# 0.3.12 (Jun 29, 2022) (YANKED)
-
-This release of `tracing-subscriber` adds a new `Layer::event_enabled` method,
-which allows `Layer`s to filter events *after* their field values are recorded;
-a `Filter` implementation for `reload::Layer`, to make using `reload` with
-per-layer filtering more ergonomic, and additional inherent method downcasting
-APIs for the `Layered` type. In addition, it includes dependency updates, and
-minor fixes for documentation and feature flagging.
-
-### Added
-
-- **layer**: `Layer::event_enabled` method, which can be implemented to filter
- events based on their field values ([#2008])
-- **reload**: `Filter` implementation for `reload::Layer` ([#2159])
-- **layer**: `Layered::downcast_ref` and `Layered::is` inherent methods
- ([#2160])
-
-### Changed
-
-- **parking_lot**: Updated dependency on `parking_lot` to 0.13.0 ([#2143])
-- Replaced `lazy_static` dependency with `once_cell` ([#2147])
-
-### Fixed
-
-- Don't enable `tracing-core` features by default ([#2107])
-- Several documentation link and typo fixes ([#2064], [#2068], #[2077], [#2161],
- [#1088])
-
-Thanks to @ben0x539, @jamesmunns, @georgemp, @james7132, @jswrenn, @CAD97, and
-@guswynn for contributing to this release!
-
-[#2008]: https://github.com/tokio-rs/tracing/pull/2008
-[#2159]: https://github.com/tokio-rs/tracing/pull/2159
-[#2160]: https://github.com/tokio-rs/tracing/pull/2160
-[#2143]: https://github.com/tokio-rs/tracing/pull/2143
-[#2107]: https://github.com/tokio-rs/tracing/pull/2107
-[#2064]: https://github.com/tokio-rs/tracing/pull/2064
-[#2068]: https://github.com/tokio-rs/tracing/pull/2068
-[#2077]: https://github.com/tokio-rs/tracing/pull/2077
-[#2161]: https://github.com/tokio-rs/tracing/pull/2161
-[#1088]: https://github.com/tokio-rs/tracing/pull/1088
-
-# 0.3.11 (Apr 9, 2022)
-
-This is a bugfix release for the `Filter` implementation for `EnvFilter` added
-in [v0.3.10].
-
-### Fixed
-
-- **env-filter**: Added missing `Filter::on_record` callback to `EnvFilter`'s
- `Filter` impl ([#2058])
-- **env-filter**: Fixed method resolution issues when calling `EnvFilter`
- methods with both the `Filter` and `Layer` traits in scope ([#2057])
-- **env-filter**: Fixed `EnvFilter::builder().parse()` and other parsing methods
- returning an error when parsing an empty string ([#2052])
-
-Thanks to new contributor @Ma124 for contributing to this release!
-
-[v0.3.10]: https://github.com/tokio-rs/tracing/releases/tag/tracing-subscriber-0.3.10
-[#2058]: https://github.com/tokio-rs/tracing/pull/2058
-[#2057]: https://github.com/tokio-rs/tracing/pull/2057
-[#2052]: https://github.com/tokio-rs/tracing/pull/2052
-
-# 0.3.10 (Apr 1, 2022)
-
-This release adds several new features, including a `Filter` implementation and
-new builder API for `EnvFilter`, support for using a `Vec<L> where L: Layer` as
-a `Layer`, and a number of smaller API improvements to make working with dynamic
-and reloadable layers easier.
-
-### Added
-
-- **registry**: Implement `Filter` for `EnvFilter`, allowing it to be used with
- per-layer filtering ([#1983])
-- **registry**: `Filter::on_new_span`, `Filter::on_enter`,
- `Filter::on_exit`, `Filter::on_close` and `Filter::on_record` callbacks to
- allow `Filter`s to track span states internally ([#1973], [#2017], [#2031])
-- **registry**: `Filtered::filter` and `Filtered::filter_mut` accessors
- ([#1959])
-- **registry**: `Filtered::inner` and `Filtered::inner_mut` accessors to borrow
- the wrapped `Layer` ([#2034])
-- **layer**: Implement `Layer` for `Vec<L: Layer>`, to allow composing together
- a dynamically sized list of `Layer`s ([#2027])
-- **layer**: `Layer::boxed` method to make type-erasing `Layer`s easier
- ([#2026])
-- **fmt**: `fmt::Layer::writer` and `fmt::Layer::writer_mut` accessors ([#2034])
-- **fmt**: `fmt::Layer::set_ansi` method to allow changing the ANSI formatting
- configuration at runtime ([#2034])
-- **env-filter**: `EnvFilter::builder` to configure a new `EnvFilter` prior to
- parsing it ([#2035])
-- Several documentation fixes and improvements ([#1972], [#1971], [#2023],
- [#2023])
-
-### Fixed
-
-- **fmt**: `fmt::Layer`'s auto traits no longer depend on the `Subscriber` type
- parameter's auto traits ([#2025])
-- **env-filter**: Fixed missing help text when the `ansi` feature is disabled
- ([#2029])
-
-Thanks to new contributors @TimoFreiberg and @wagenet, as well as @CAD97 for
-contributing to this release!
-
-[#1983]: https://github.com/tokio-rs/tracing/pull/1983
-[#1973]: https://github.com/tokio-rs/tracing/pull/1973
-[#2017]: https://github.com/tokio-rs/tracing/pull/2017
-[#2031]: https://github.com/tokio-rs/tracing/pull/2031
-[#1959]: https://github.com/tokio-rs/tracing/pull/1959
-[#2034]: https://github.com/tokio-rs/tracing/pull/2034
-[#2027]: https://github.com/tokio-rs/tracing/pull/2027
-[#2026]: https://github.com/tokio-rs/tracing/pull/2026
-[#2035]: https://github.com/tokio-rs/tracing/pull/2035
-[#1972]: https://github.com/tokio-rs/tracing/pull/1972
-[#1971]: https://github.com/tokio-rs/tracing/pull/1971
-[#2023]: https://github.com/tokio-rs/tracing/pull/2023
-[#2025]: https://github.com/tokio-rs/tracing/pull/2025
-[#2029]: https://github.com/tokio-rs/tracing/pull/2029
-
-# 0.3.9 (Feb 17, 2022)
-
-This release updates the minimum supported Rust version (MSRV) to 1.49.0, and
-updates the (optional) dependency on `parking_lot` to v0.12.
-
-### Changed
-
-- Updated minimum supported Rust version (MSRV) to 1.49.0 ([#1913])
-- `parking_lot`: updated to v0.12 ([008339d])
-
-### Added
-
-- **fmt**: Documentation improvements ([#1926], [#1927])
-
-[#1913]: https://github.com/tokio-rs/tracing/pull/1913
-[#1926]: https://github.com/tokio-rs/tracing/pull/1926
-[#1927]: https://github.com/tokio-rs/tracing/pull/1927
-[008339d]: https://github.com/tokio-rs/tracing/commit/008339d1e8750ffe7b4634fc7789bda0c522424f
-
-# 0.3.8 (Feb 4, 2022)
-
-This release adds *experimental* support for recording structured field
-values using the [`valuable`] crate to the `format::Json` formatter. In
-particular, user-defined types which are recorded using their
-[`valuable::Valuable`] implementations will be serialized as JSON objects,
-rather than using their `fmt::Debug` representation. See [this blog post][post]
-for details on `valuable`.
-
-Note that `valuable` support currently requires `--cfg tracing_unstable`. See
-the documentation for details.
-
-Additionally, this release includes a number of other smaller API improvements.
-
-### Added
-
-- **json**: Experimental support for recording [`valuable`] values as structured
- JSON ([#1862], [#1901])
-- **filter**: `Targets::would_enable` method for testing if a `Targets` filter
- would enable a given target ([#1903])
-- **fmt**: `map_event_format`, `map_fmt_fields`, and `map_writer` methods to
- `fmt::Layer` and `fmt::SubscriberBuilder` ([#1871])
-
-### Changed
-
-- `tracing-core`: updated to [0.1.22][core-0.1.22]
-
-### Fixed
-
-- Set `smallvec` minimal version to 1.2.0, to fix compilation errors with `-Z
- minimal-versions` ([#1890])
-- Minor documentation fixes ([#1902], [#1893])
-
-Thanks to @guswynn, @glts, and @lilyball for contributing to this release!
-
-[`valuable`]: https://crates.io/crates/valuable
-[`valuable::Valuable`]: https://docs.rs/valuable/latest/valuable/trait.Valuable.html
-[post]: https://tokio.rs/blog/2021-05-valuable
-[core-0.1.22]: https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.22
-[#1862]: https://github.com/tokio-rs/tracing/pull/1862
-[#1901]: https://github.com/tokio-rs/tracing/pull/1901
-[#1903]: https://github.com/tokio-rs/tracing/pull/1903
-[#1871]: https://github.com/tokio-rs/tracing/pull/1871
-[#1890]: https://github.com/tokio-rs/tracing/pull/1890
-[#1902]: https://github.com/tokio-rs/tracing/pull/1902
-[#1893]: https://github.com/tokio-rs/tracing/pull/1893
-
-# 0.3.7 (Jan 25, 2022)
-
-This release adds combinators for combining filters.
-
-Additionally, this release also updates the `thread-local` crate to v1.1.4,
-fixing warnings for the security advisory [RUSTSEC-2022-0006]. Note that
-previous versions of `tracing-subscriber` did not use any of the `thread-local`
-crate's APIs effected by the vulnerability. However, updating the version fixes
-warnings emitted by `cargo audit` and similar tools.
-
-### Added
-
-- **filter**: Added combinators for combining filters ([#1578])
-
-### Fixed
-
-- **registry**: Updated `thread-local` to v1.1.4 ([#1858])
-
-Thanks to new contributor @matze for contributing to this release!
-
-[RUSTSEC-2022-0006]: https://rustsec.org/advisories/RUSTSEC-2022-0006
-[#1578]: https://github.com/tokio-rs/tracing/pull/1578
-[#1858]: https://github.com/tokio-rs/tracing/pull/1858
-
-# 0.3.6 (Jan 14, 2022)
-
-This release adds configuration options to `tracing_subscriber::fmt` to log
-source code locations for events.
-### Added
-
-- **fmt**: Added `with_file` and `with_line_number`
- configuration methods to `fmt::Format`, `fmt::SubscriberBuilder`, and
- `fmt::Layer` ([#1773])
-
-### Fixed
-
-- **fmt**: Removed incorrect leading comma from span fields with the `Pretty`
- formatter ([#1833])
-
-### Deprecated
-
-- **fmt**: Deprecated `Pretty::with_source_location`, as it can now be replaced
- by the more general `Format`, `SubscriberBuilder`, and `Layer` methods
- ([#1773])
-
-Thanks to new contributor @renecouto for contributing to this release!
-
-[#1773]: https://github.com/tokio-rs/tracing/pull/1773
-[#1833]: https://github.com/tokio-rs/tracing/pull/1833
-
-# 0.3.5 (Dec 29, 2021)
-
-This release re-enables `RUST_LOG` filtering in `tracing_subscriber::fmt`'s
-default initialization methods, and adds an `OffsetLocalTime` formatter for
-using local timestamps with the `time` crate.
-
-### Added
-
-- **fmt**: Added `OffsetLocalTime` formatter to `fmt::time` for formatting local
- timestamps with a fixed offset ([#1772])
-
-### Fixed
-
-- **fmt**: Added a `Targets` filter to `fmt::init()` and `fmt::try_init()` when
- the "env-filter" feature is disabled, so that `RUST_LOG` is still honored
- ([#1781])
-
-Thanks to @marienz and @ishitatsuyuki for contributing to this release!
-
-[#1772]: https://github.com/tokio-rs/tracing/pull/1772
-[#1781]: https://github.com/tokio-rs/tracing/pull/1781
-
-# 0.3.4 (Dec 23, 2021)
-
-This release contains bugfixes for the `fmt` module, as well as documentation
-improvements.
-
-### Fixed
-
-- **fmt**: Fixed `fmt` not emitting log lines when timestamp formatting fails
- ([#1689])
-- **fmt**: Fixed double space before thread IDs with `Pretty` formatter
- ([#1778])
-- Several documentation improvements ([#1608], [#1699], [#1701])
-
-[#1689]: https://github.com/tokio-rs/tracing/pull/1689
-[#1778]: https://github.com/tokio-rs/tracing/pull/1778
-[#1608]: https://github.com/tokio-rs/tracing/pull/1608
-[#1699]: https://github.com/tokio-rs/tracing/pull/1699
-[#1701]: https://github.com/tokio-rs/tracing/pull/1701
-
-Thanks to new contributors @Swatinem and @rukai for contributing to this
-release!
-
# 0.3.3 (Nov 29, 2021)
This release fixes a pair of regressions in `tracing-subscriber`'s `fmt` module.
diff --git a/vendor/tracing-subscriber/Cargo.toml b/vendor/tracing-subscriber-0.3.3/Cargo.toml
index 1d15642a2..b5e7ba7db 100644
--- a/vendor/tracing-subscriber/Cargo.toml
+++ b/vendor/tracing-subscriber-0.3.3/Cargo.toml
@@ -11,39 +11,20 @@
[package]
edition = "2018"
-rust-version = "1.49.0"
+rust-version = "1.42.0"
name = "tracing-subscriber"
-version = "0.3.14"
-authors = [
- "Eliza Weisman <eliza@buoyant.io>",
- "David Barsky <me@davidbarsky.com>",
- "Tokio Contributors <team@tokio.rs>",
-]
-description = """
-Utilities for implementing and composing `tracing` subscribers.
-"""
+version = "0.3.3"
+authors = ["Eliza Weisman <eliza@buoyant.io>", "David Barsky <me@davidbarsky.com>", "Tokio Contributors <team@tokio.rs>"]
+description = "Utilities for implementing and composing `tracing` subscribers.\n"
homepage = "https://tokio.rs"
readme = "README.md"
-keywords = [
- "logging",
- "tracing",
- "metrics",
- "subscriber",
-]
-categories = [
- "development-tools::debugging",
- "development-tools::profiling",
- "asynchronous",
-]
+keywords = ["logging", "tracing", "metrics", "subscriber"]
+categories = ["development-tools::debugging", "development-tools::profiling", "asynchronous"]
license = "MIT"
repository = "https://github.com/tokio-rs/tracing"
-
[package.metadata.docs.rs]
all-features = true
-rustdoc-args = [
- "--cfg",
- "docsrs",
-]
+rustdoc-args = ["--cfg", "docsrs"]
[[bench]]
name = "filter"
@@ -60,21 +41,20 @@ harness = false
[[bench]]
name = "enter"
harness = false
-
[dependencies.ansi_term]
version = "0.12"
optional = true
-[dependencies.matchers]
-version = "0.1.0"
+[dependencies.lazy_static]
+version = "1"
optional = true
-[dependencies.once_cell]
-version = "1.12"
+[dependencies.matchers]
+version = "0.1.0"
optional = true
[dependencies.parking_lot]
-version = "0.12"
+version = ">= 0.7, <= 0.11"
optional = true
[dependencies.regex]
@@ -96,11 +76,11 @@ version = "0.1.0"
optional = true
[dependencies.smallvec]
-version = "1.2.0"
+version = "1"
optional = true
[dependencies.thread_local]
-version = "1.1.4"
+version = "1.0.1"
optional = true
[dependencies.time]
@@ -114,22 +94,17 @@ optional = true
default-features = false
[dependencies.tracing-core]
-version = "0.1.28"
-default-features = false
+version = "0.1.20"
[dependencies.tracing-log]
version = "0.1.2"
-features = [
- "log-tracer",
- "std",
-]
+features = ["log-tracer", "std"]
optional = true
default-features = false
[dependencies.tracing-serde]
-version = "0.1.3"
+version = "0.1.2"
optional = true
-
[dev-dependencies.criterion]
version = "0.3"
default_features = false
@@ -144,27 +119,18 @@ default-features = false
[dev-dependencies.time]
version = "0.3"
-features = [
- "formatting",
- "macros",
-]
+features = ["formatting", "macros"]
[dev-dependencies.tokio]
-version = "1"
-features = [
- "rt",
- "macros",
-]
+version = "0.2"
+features = ["rt-core", "macros"]
[dev-dependencies.tracing]
version = "0.1"
[dev-dependencies.tracing-futures]
version = "0.2"
-features = [
- "std-future",
- "std",
-]
+features = ["std-future", "std"]
default-features = false
[dev-dependencies.tracing-log]
@@ -172,61 +138,13 @@ version = "0.1.2"
[features]
alloc = []
-ansi = [
- "fmt",
- "ansi_term",
-]
-default = [
- "smallvec",
- "fmt",
- "ansi",
- "tracing-log",
- "std",
-]
-env-filter = [
- "matchers",
- "regex",
- "once_cell",
- "tracing",
- "std",
- "thread_local",
-]
-fmt = [
- "registry",
- "std",
-]
-json = [
- "tracing-serde",
- "serde",
- "serde_json",
-]
+ansi = ["fmt", "ansi_term"]
+default = ["smallvec", "fmt", "ansi", "tracing-log", "std"]
+env-filter = ["matchers", "regex", "lazy_static", "tracing", "std"]
+fmt = ["registry", "std"]
+json = ["tracing-serde", "serde", "serde_json"]
local-time = ["time/local-offset"]
-registry = [
- "sharded-slab",
- "thread_local",
- "std",
-]
-std = [
- "alloc",
- "tracing-core/std",
-]
-valuable = [
- "tracing-core/valuable",
- "valuable_crate",
- "valuable-serde",
- "tracing-serde/valuable",
-]
-
-[target."cfg(tracing_unstable)".dependencies.valuable-serde]
-version = "0.1.0"
-optional = true
-default_features = false
-
-[target."cfg(tracing_unstable)".dependencies.valuable_crate]
-version = "0.1.0"
-optional = true
-default_features = false
-package = "valuable"
-
+registry = ["sharded-slab", "thread_local", "std"]
+std = ["alloc", "tracing-core/std"]
[badges.maintenance]
status = "experimental"
diff --git a/vendor/tracing-subscriber/LICENSE b/vendor/tracing-subscriber-0.3.3/LICENSE
index cdb28b4b5..cdb28b4b5 100644
--- a/vendor/tracing-subscriber/LICENSE
+++ b/vendor/tracing-subscriber-0.3.3/LICENSE
diff --git a/vendor/tracing-subscriber/README.md b/vendor/tracing-subscriber-0.3.3/README.md
index 95242b37e..75c62e8ca 100644
--- a/vendor/tracing-subscriber/README.md
+++ b/vendor/tracing-subscriber-0.3.3/README.md
@@ -21,7 +21,7 @@ Utilities for implementing and composing [`tracing`][tracing] subscribers.
[crates-badge]: https://img.shields.io/crates/v/tracing-subscriber.svg
[crates-url]: https://crates.io/crates/tracing-subscriber
[docs-badge]: https://docs.rs/tracing-subscriber/badge.svg
-[docs-url]: https://docs.rs/tracing-subscriber/0.3.14
+[docs-url]: https://docs.rs/tracing-subscriber/0.3.1
[docs-master-badge]: https://img.shields.io/badge/docs-master-blue
[docs-master-url]: https://tracing-rs.netlify.com/tracing_subscriber
[mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg
@@ -32,14 +32,14 @@ Utilities for implementing and composing [`tracing`][tracing] subscribers.
[discord-url]: https://discord.gg/EeF3cQw
[maint-badge]: https://img.shields.io/badge/maintenance-experimental-blue.svg
-*Compiler support: [requires `rustc` 1.49+][msrv]*
+*Compiler support: [requires `rustc` 1.42+][msrv]*
[msrv]: #supported-rust-versions
## Supported Rust Versions
Tracing is built against the latest stable release. The minimum supported
-version is 1.49. The current Tracing version is not guaranteed to build on Rust
+version is 1.42. The current Tracing version is not guaranteed to build on Rust
versions earlier than the minimum supported version.
Tracing follows the same compiler support policies as the rest of the Tokio
diff --git a/vendor/tracing-subscriber/benches/enter.rs b/vendor/tracing-subscriber-0.3.3/benches/enter.rs
index 49c6e730a..49c6e730a 100644
--- a/vendor/tracing-subscriber/benches/enter.rs
+++ b/vendor/tracing-subscriber-0.3.3/benches/enter.rs
diff --git a/vendor/tracing-subscriber/benches/filter.rs b/vendor/tracing-subscriber-0.3.3/benches/filter.rs
index 91ab9c91d..91ab9c91d 100644
--- a/vendor/tracing-subscriber/benches/filter.rs
+++ b/vendor/tracing-subscriber-0.3.3/benches/filter.rs
diff --git a/vendor/tracing-subscriber/benches/filter_log.rs b/vendor/tracing-subscriber-0.3.3/benches/filter_log.rs
index 4dcf3b4ec..4dcf3b4ec 100644
--- a/vendor/tracing-subscriber/benches/filter_log.rs
+++ b/vendor/tracing-subscriber-0.3.3/benches/filter_log.rs
diff --git a/vendor/tracing-subscriber/benches/fmt.rs b/vendor/tracing-subscriber-0.3.3/benches/fmt.rs
index a039e66d4..a039e66d4 100644
--- a/vendor/tracing-subscriber/benches/fmt.rs
+++ b/vendor/tracing-subscriber-0.3.3/benches/fmt.rs
diff --git a/vendor/tracing-subscriber/benches/support/mod.rs b/vendor/tracing-subscriber-0.3.3/benches/support/mod.rs
index 25e9e7e22..25e9e7e22 100644
--- a/vendor/tracing-subscriber/benches/support/mod.rs
+++ b/vendor/tracing-subscriber-0.3.3/benches/support/mod.rs
diff --git a/vendor/tracing-subscriber/src/field/debug.rs b/vendor/tracing-subscriber-0.3.3/src/field/debug.rs
index cc67d29fe..cc67d29fe 100644
--- a/vendor/tracing-subscriber/src/field/debug.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/field/debug.rs
diff --git a/vendor/tracing-subscriber/src/field/delimited.rs b/vendor/tracing-subscriber-0.3.3/src/field/delimited.rs
index 98634cea9..8c78c4b20 100644
--- a/vendor/tracing-subscriber/src/field/delimited.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/field/delimited.rs
@@ -41,7 +41,7 @@ impl<D, V> Delimited<D, V> {
/// Returns a new [`MakeVisitor`] implementation that wraps `inner` so that
/// it will format each visited field separated by the provided `delimiter`.
///
- /// [`MakeVisitor`]: super::MakeVisitor
+ /// [`MakeVisitor`]: ../trait.MakeVisitor.html
pub fn new(delimiter: D, inner: V) -> Self {
Self { delimiter, inner }
}
@@ -53,7 +53,7 @@ impl<D, V> VisitDelimited<D, V> {
/// Returns a new [`Visit`] implementation that wraps `inner` so that
/// each formatted field is separated by the provided `delimiter`.
///
- /// [`Visit`]: tracing_core::field::Visit
+ /// [`Visit`]: https://docs.rs/tracing-core/0.1.6/tracing_core/field/trait.Visit.html
pub fn new(delimiter: D, inner: V) -> Self {
Self {
delimiter,
diff --git a/vendor/tracing-subscriber/src/field/display.rs b/vendor/tracing-subscriber-0.3.3/src/field/display.rs
index 78a039ce1..e0bbc55ed 100644
--- a/vendor/tracing-subscriber/src/field/display.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/field/display.rs
@@ -18,7 +18,7 @@ impl<V> Messages<V> {
/// Returns a new [`MakeVisitor`] implementation that will wrap `inner` so
/// that any strings named `message` are formatted using `fmt::Display`.
///
- /// [`MakeVisitor`]: super::MakeVisitor
+ /// [`MakeVisitor`]: ../trait.MakeVisitor.html
pub fn new(inner: V) -> Self {
Messages(inner)
}
diff --git a/vendor/tracing-subscriber/src/field/mod.rs b/vendor/tracing-subscriber-0.3.3/src/field/mod.rs
index 5dfddb362..f7d03f2cc 100644
--- a/vendor/tracing-subscriber/src/field/mod.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/field/mod.rs
@@ -22,7 +22,7 @@ pub mod display;
/// data to, configuration variables that determine the visitor's behavior, or
/// `()` when no input is required to produce a visitor.
///
-/// [visitors]: tracing_core::field::Visit
+/// [visitors]: https://docs.rs/tracing-core/latest/tracing_core/field/trait.Visit.html
pub trait MakeVisitor<T> {
/// The visitor type produced by this `MakeVisitor`.
type Visitor: Visit;
@@ -33,7 +33,7 @@ pub trait MakeVisitor<T> {
/// A [visitor] that produces output once it has visited a set of fields.
///
-/// [visitor]: tracing_core::field::Visit
+/// [visitor]: https://docs.rs/tracing-core/latest/tracing_core/field/trait.Visit.html
pub trait VisitOutput<Out>: Visit {
/// Completes the visitor, returning any output.
///
@@ -82,10 +82,10 @@ pub trait VisitOutput<Out>: Visit {
/// r.record(&mut visitor);
/// }
/// ```
-/// [visitor]: tracing_core::field::Visit
-/// [attr]: tracing_core::span::Attributes
-/// [rec]: tracing_core::span::Record
-/// [event]: tracing_core::event::Event
+/// [visitor]: https://docs.rs/tracing-core/latest/tracing_core/field/trait.Visit.html
+/// [attr]: https://docs.rs/tracing-core/latest/tracing_core/span/struct.Attributes.html
+/// [rec]: https://docs.rs/tracing-core/latest/tracing_core/span/struct.Record.html
+/// [event]: https://docs.rs/tracing-core/latest/tracing_core/event/struct.Event.html
pub trait RecordFields: crate::sealed::Sealed<RecordFieldsMarker> {
/// Record all the fields in `self` with the provided `visitor`.
fn record(&self, visitor: &mut dyn Visit);
@@ -341,7 +341,7 @@ pub(in crate::field) mod test_util {
impl<'a> Visit for DebugVisitor<'a> {
fn record_debug(&mut self, field: &Field, value: &dyn fmt::Debug) {
- write!(self.writer, "{}={:?}", field, value).unwrap();
+ write!(&mut self.writer, "{}={:?}", field, value).unwrap();
}
}
diff --git a/vendor/tracing-subscriber/src/filter/directive.rs b/vendor/tracing-subscriber-0.3.3/src/filter/directive.rs
index 2ae3f0f24..dd6b063c4 100644
--- a/vendor/tracing-subscriber/src/filter/directive.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/filter/directive.rs
@@ -5,7 +5,7 @@ use alloc::vec;
use alloc::{string::String, vec::Vec};
use core::{cmp::Ordering, fmt, iter::FromIterator, slice, str::FromStr};
-use tracing_core::{Level, Metadata};
+use tracing_core::Metadata;
/// Indicates that a string could not be parsed as a filtering directive.
#[derive(Debug)]
pub struct ParseError {
@@ -142,22 +142,6 @@ impl DirectiveSet<StaticDirective> {
None => false,
}
}
-
- /// Same as `enabled` above, but skips `Directive`'s with fields.
- pub(crate) fn target_enabled(&self, target: &str, level: &Level) -> bool {
- match self.directives_for_target(target).next() {
- Some(d) => d.level >= *level,
- None => false,
- }
- }
-
- pub(crate) fn directives_for_target<'a>(
- &'a self,
- target: &'a str,
- ) -> impl Iterator<Item = &'a StaticDirective> + 'a {
- self.directives()
- .filter(move |d| d.cares_about_target(target))
- }
}
// === impl StaticDirective ===
@@ -174,22 +158,6 @@ impl StaticDirective {
level,
}
}
-
- pub(in crate::filter) fn cares_about_target(&self, to_check: &str) -> bool {
- // Does this directive have a target filter, and does it match the
- // metadata's target?
- if let Some(ref target) = self.target {
- if !to_check.starts_with(&target[..]) {
- return false;
- }
- }
-
- if !self.field_names.is_empty() {
- return false;
- }
-
- true
- }
}
impl Ord for StaticDirective {
diff --git a/vendor/tracing-subscriber/src/filter/env/directive.rs b/vendor/tracing-subscriber-0.3.3/src/filter/env/directive.rs
index f062e6ef9..66ca23dc4 100644
--- a/vendor/tracing-subscriber/src/filter/env/directive.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/filter/env/directive.rs
@@ -4,14 +4,14 @@ use crate::filter::{
env::{field, FieldMap},
level::LevelFilter,
};
-use once_cell::sync::Lazy;
+use lazy_static::lazy_static;
use regex::Regex;
use std::{cmp::Ordering, fmt, iter::FromIterator, str::FromStr};
use tracing_core::{span, Level, Metadata};
/// A single filtering directive.
// TODO(eliza): add a builder for programmatically constructing directives?
-#[derive(Clone, Debug, Eq, PartialEq)]
+#[derive(Debug, Eq, PartialEq)]
#[cfg_attr(docsrs, doc(cfg(feature = "env-filter")))]
pub struct Directive {
in_span: Option<String>,
@@ -107,52 +107,80 @@ impl Directive {
.collect();
(Dynamics::from_iter(dyns), statics)
}
+}
- pub(super) fn deregexify(&mut self) {
- for field in &mut self.fields {
- field.value = match field.value.take() {
- Some(field::ValueMatch::Pat(pat)) => {
- Some(field::ValueMatch::Debug(pat.into_debug_match()))
- }
- x => x,
+impl Match for Directive {
+ fn cares_about(&self, meta: &Metadata<'_>) -> bool {
+ // Does this directive have a target filter, and does it match the
+ // metadata's target?
+ if let Some(ref target) = self.target {
+ if !meta.target().starts_with(&target[..]) {
+ return false;
}
}
+
+ // Do we have a name filter, and does it match the metadata's name?
+ // TODO(eliza): put name globbing here?
+ if let Some(ref name) = self.in_span {
+ if name != meta.name() {
+ return false;
+ }
+ }
+
+ // Does the metadata define all the fields that this directive cares about?
+ let fields = meta.fields();
+ for field in &self.fields {
+ if fields.field(&field.name).is_none() {
+ return false;
+ }
+ }
+
+ true
}
- pub(super) fn parse(from: &str, regex: bool) -> Result<Self, ParseError> {
- static DIRECTIVE_RE: Lazy<Regex> = Lazy::new(|| Regex::new(
- r"(?x)
- ^(?P<global_level>(?i:trace|debug|info|warn|error|off|[0-5]))$ |
- # ^^^.
- # `note: we match log level names case-insensitively
- ^
- (?: # target name or span name
- (?P<target>[\w:-]+)|(?P<span>\[[^\]]*\])
- ){1,2}
- (?: # level or nothing
- =(?P<level>(?i:trace|debug|info|warn|error|off|[0-5]))?
- # ^^^.
- # `note: we match log level names case-insensitively
- )?
- $
- "
- )
- .unwrap());
- static SPAN_PART_RE: Lazy<Regex> =
- Lazy::new(|| Regex::new(r#"(?P<name>[^\]\{]+)?(?:\{(?P<fields>[^\}]*)\})?"#).unwrap());
- static FIELD_FILTER_RE: Lazy<Regex> =
- // TODO(eliza): this doesn't _currently_ handle value matchers that include comma
- // characters. We should fix that.
- Lazy::new(|| Regex::new(r#"(?x)
- (
- # field name
- [[:word:]][[[:word:]]\.]*
- # value part (optional)
- (?:=[^,]+)?
- )
- # trailing comma or EOS
- (?:,\s?|$)
- "#).unwrap());
+ fn level(&self) -> &LevelFilter {
+ &self.level
+ }
+}
+
+impl FromStr for Directive {
+ type Err = ParseError;
+ fn from_str(from: &str) -> Result<Self, Self::Err> {
+ lazy_static! {
+ static ref DIRECTIVE_RE: Regex = Regex::new(
+ r"(?x)
+ ^(?P<global_level>(?i:trace|debug|info|warn|error|off|[0-5]))$ |
+ # ^^^.
+ # `note: we match log level names case-insensitively
+ ^
+ (?: # target name or span name
+ (?P<target>[\w:-]+)|(?P<span>\[[^\]]*\])
+ ){1,2}
+ (?: # level or nothing
+ =(?P<level>(?i:trace|debug|info|warn|error|off|[0-5]))?
+ # ^^^.
+ # `note: we match log level names case-insensitively
+ )?
+ $
+ "
+ )
+ .unwrap();
+ static ref SPAN_PART_RE: Regex =
+ Regex::new(r#"(?P<name>[^\]\{]+)?(?:\{(?P<fields>[^\}]*)\})?"#).unwrap();
+ static ref FIELD_FILTER_RE: Regex =
+ // TODO(eliza): this doesn't _currently_ handle value matchers that include comma
+ // characters. We should fix that.
+ Regex::new(r#"(?x)
+ (
+ # field name
+ [[:word:]][[[:word:]]\.]*
+ # value part (optional)
+ (?:=[^,]+)?
+ )
+ # trailing comma or EOS
+ (?:,\s?|$)
+ "#).unwrap();
+ }
let caps = DIRECTIVE_RE.captures(from).ok_or_else(ParseError::new)?;
@@ -186,7 +214,7 @@ impl Directive {
.map(|c| {
FIELD_FILTER_RE
.find_iter(c.as_str())
- .map(|c| field::Match::parse(c.as_str(), regex))
+ .map(|c| c.as_str().parse())
.collect::<Result<Vec<_>, _>>()
})
.unwrap_or_else(|| Ok(Vec::new()));
@@ -200,7 +228,7 @@ impl Directive {
// Setting the target without the level enables every level for that target
.unwrap_or(LevelFilter::TRACE);
- Ok(Self {
+ Ok(Directive {
level,
target,
in_span,
@@ -209,48 +237,6 @@ impl Directive {
}
}
-impl Match for Directive {
- fn cares_about(&self, meta: &Metadata<'_>) -> bool {
- // Does this directive have a target filter, and does it match the
- // metadata's target?
- if let Some(ref target) = self.target {
- if !meta.target().starts_with(&target[..]) {
- return false;
- }
- }
-
- // Do we have a name filter, and does it match the metadata's name?
- // TODO(eliza): put name globbing here?
- if let Some(ref name) = self.in_span {
- if name != meta.name() {
- return false;
- }
- }
-
- // Does the metadata define all the fields that this directive cares about?
- let actual_fields = meta.fields();
- for expected_field in &self.fields {
- // Does the actual field set (from the metadata) contain this field?
- if actual_fields.field(&expected_field.name).is_none() {
- return false;
- }
- }
-
- true
- }
-
- fn level(&self) -> &LevelFilter {
- &self.level
- }
-}
-
-impl FromStr for Directive {
- type Err = ParseError;
- fn from_str(from: &str) -> Result<Self, Self::Err> {
- Directive::parse(from, true)
- }
-}
-
impl Default for Directive {
fn default() -> Self {
Directive {
diff --git a/vendor/tracing-subscriber/src/filter/env/field.rs b/vendor/tracing-subscriber-0.3.3/src/filter/env/field.rs
index 1394fd04a..970850f92 100644
--- a/vendor/tracing-subscriber/src/filter/env/field.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/filter/env/field.rs
@@ -2,7 +2,7 @@ use matchers::Pattern;
use std::{
cmp::Ordering,
error::Error,
- fmt::{self, Write},
+ fmt,
str::FromStr,
sync::{
atomic::{AtomicBool, Ordering::*},
@@ -13,7 +13,7 @@ use std::{
use super::{FieldMap, LevelFilter};
use tracing_core::field::{Field, Visit};
-#[derive(Clone, Debug, Eq, PartialEq)]
+#[derive(Debug, Eq, PartialEq)]
pub(crate) struct Match {
pub(crate) name: String, // TODO: allow match patterns for names?
pub(crate) value: Option<ValueMatch>,
@@ -38,20 +38,11 @@ pub(crate) struct MatchVisitor<'a> {
#[derive(Debug, Clone)]
pub(crate) enum ValueMatch {
- /// Matches a specific `bool` value.
Bool(bool),
- /// Matches a specific `f64` value.
F64(f64),
- /// Matches a specific `u64` value.
U64(u64),
- /// Matches a specific `i64` value.
I64(i64),
- /// Matches any `NaN` `f64` value.
NaN,
- /// Matches any field whose `fmt::Debug` output is equal to a fixed string.
- Debug(MatchDebug),
- /// Matches any field whose `fmt::Debug` output matches a regular expression
- /// pattern.
Pat(Box<MatchPattern>),
}
@@ -106,9 +97,6 @@ impl Ord for ValueMatch {
(Pat(this), Pat(that)) => this.cmp(that),
(Pat(_), _) => Ordering::Greater,
-
- (Debug(this), Debug(that)) => this.cmp(that),
- (Debug(_), _) => Ordering::Greater,
}
}
}
@@ -119,25 +107,12 @@ impl PartialOrd for ValueMatch {
}
}
-/// Matches a field's `fmt::Debug` output against a regular expression pattern.
-///
-/// This is used for matching all non-literal field value filters when regular
-/// expressions are enabled.
#[derive(Debug, Clone)]
pub(crate) struct MatchPattern {
pub(crate) matcher: Pattern,
pattern: Arc<str>,
}
-/// Matches a field's `fmt::Debug` output against a fixed string pattern.
-///
-/// This is used for matching all non-literal field value filters when regular
-/// expressions are disabled.
-#[derive(Debug, Clone)]
-pub(crate) struct MatchDebug {
- pattern: Arc<str>,
-}
-
/// Indicates that a field name specified in a filter directive was invalid.
#[derive(Clone, Debug)]
#[cfg_attr(docsrs, doc(cfg(feature = "env-filter")))]
@@ -147,17 +122,9 @@ pub struct BadName {
// === impl Match ===
-impl Match {
- pub(crate) fn has_value(&self) -> bool {
- self.value.is_some()
- }
-
- // TODO: reference count these strings?
- pub(crate) fn name(&self) -> String {
- self.name.clone()
- }
-
- pub(crate) fn parse(s: &str, regex: bool) -> Result<Self, Box<dyn Error + Send + Sync>> {
+impl FromStr for Match {
+ type Err = Box<dyn Error + Send + Sync>;
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
let mut parts = s.split('=');
let name = parts
.next()
@@ -166,17 +133,22 @@ impl Match {
})?
// TODO: validate field name
.to_string();
- let value = parts
- .next()
- .map(|part| match regex {
- true => ValueMatch::parse_regex(part),
- false => Ok(ValueMatch::parse_non_regex(part)),
- })
- .transpose()?;
+ let value = parts.next().map(ValueMatch::from_str).transpose()?;
Ok(Match { name, value })
}
}
+impl Match {
+ pub(crate) fn has_value(&self) -> bool {
+ self.value.is_some()
+ }
+
+ // TODO: reference count these strings?
+ pub(crate) fn name(&self) -> String {
+ self.name.clone()
+ }
+}
+
impl fmt::Display for Match {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Display::fmt(&self.name, f)?;
@@ -227,14 +199,9 @@ fn value_match_f64(v: f64) -> ValueMatch {
}
}
-impl ValueMatch {
- /// Parse a `ValueMatch` that will match `fmt::Debug` fields using regular
- /// expressions.
- ///
- /// This returns an error if the string didn't contain a valid `bool`,
- /// `u64`, `i64`, or `f64` literal, and couldn't be parsed as a regular
- /// expression.
- fn parse_regex(s: &str) -> Result<Self, matchers::Error> {
+impl FromStr for ValueMatch {
+ type Err = matchers::Error;
+ fn from_str(s: &str) -> Result<Self, Self::Err> {
s.parse::<bool>()
.map(ValueMatch::Bool)
.or_else(|_| s.parse::<u64>().map(ValueMatch::U64))
@@ -245,21 +212,6 @@ impl ValueMatch {
.map(|p| ValueMatch::Pat(Box::new(p)))
})
}
-
- /// Parse a `ValueMatch` that will match `fmt::Debug` against a fixed
- /// string.
- ///
- /// This does *not* return an error, because any string that isn't a valid
- /// `bool`, `u64`, `i64`, or `f64` literal is treated as expected
- /// `fmt::Debug` output.
- fn parse_non_regex(s: &str) -> Self {
- s.parse::<bool>()
- .map(ValueMatch::Bool)
- .or_else(|_| s.parse::<u64>().map(ValueMatch::U64))
- .or_else(|_| s.parse::<i64>().map(ValueMatch::I64))
- .or_else(|_| s.parse::<f64>().map(value_match_f64))
- .unwrap_or_else(|_| ValueMatch::Debug(MatchDebug::new(s)))
- }
}
impl fmt::Display for ValueMatch {
@@ -270,7 +222,6 @@ impl fmt::Display for ValueMatch {
ValueMatch::NaN => fmt::Display::fmt(&std::f64::NAN, f),
ValueMatch::I64(ref inner) => fmt::Display::fmt(inner, f),
ValueMatch::U64(ref inner) => fmt::Display::fmt(inner, f),
- ValueMatch::Debug(ref inner) => fmt::Display::fmt(inner, f),
ValueMatch::Pat(ref inner) => fmt::Display::fmt(inner, f),
}
}
@@ -313,12 +264,6 @@ impl MatchPattern {
fn debug_matches(&self, d: &impl fmt::Debug) -> bool {
self.matcher.debug_matches(d)
}
-
- pub(super) fn into_debug_match(self) -> MatchDebug {
- MatchDebug {
- pattern: self.pattern,
- }
- }
}
impl PartialEq for MatchPattern {
@@ -344,102 +289,6 @@ impl Ord for MatchPattern {
}
}
-// === impl MatchDebug ===
-
-impl MatchDebug {
- fn new(s: &str) -> Self {
- Self {
- pattern: s.to_owned().into(),
- }
- }
-
- #[inline]
- fn debug_matches(&self, d: &impl fmt::Debug) -> bool {
- // Naively, we would probably match a value's `fmt::Debug` output by
- // formatting it to a string, and then checking if the string is equal
- // to the expected pattern. However, this would require allocating every
- // time we want to match a field value against a `Debug` matcher, which
- // can be avoided.
- //
- // Instead, we implement `fmt::Write` for a type that, rather than
- // actually _writing_ the strings to something, matches them against the
- // expected pattern, and returns an error if the pattern does not match.
- struct Matcher<'a> {
- pattern: &'a str,
- }
-
- impl fmt::Write for Matcher<'_> {
- fn write_str(&mut self, s: &str) -> fmt::Result {
- // If the string is longer than the remaining expected string,
- // we know it won't match, so bail.
- if s.len() > self.pattern.len() {
- return Err(fmt::Error);
- }
-
- // If the expected string begins with the string that was
- // written, we are still potentially a match. Advance the
- // position in the expected pattern to chop off the matched
- // output, and continue.
- if self.pattern.starts_with(s) {
- self.pattern = &self.pattern[s.len()..];
- return Ok(());
- }
-
- // Otherwise, the expected string doesn't include the string
- // that was written at the current position, so the `fmt::Debug`
- // output doesn't match! Return an error signalling that this
- // doesn't match.
- Err(fmt::Error)
- }
- }
- let mut matcher = Matcher {
- pattern: &self.pattern,
- };
-
- // Try to "write" the value's `fmt::Debug` output to a `Matcher`. This
- // returns an error if the `fmt::Debug` implementation wrote any
- // characters that did not match the expected pattern.
- write!(matcher, "{:?}", d).is_ok()
- }
-}
-
-impl fmt::Display for MatchDebug {
- #[inline]
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- fmt::Display::fmt(&*self.pattern, f)
- }
-}
-
-impl AsRef<str> for MatchDebug {
- #[inline]
- fn as_ref(&self) -> &str {
- self.pattern.as_ref()
- }
-}
-
-impl PartialEq for MatchDebug {
- #[inline]
- fn eq(&self, other: &Self) -> bool {
- self.pattern == other.pattern
- }
-}
-
-impl Eq for MatchDebug {}
-
-impl PartialOrd for MatchDebug {
- #[inline]
- fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
- Some(self.pattern.cmp(&other.pattern))
- }
-}
-
-impl Ord for MatchDebug {
- #[inline]
- fn cmp(&self, other: &Self) -> Ordering {
- self.pattern.cmp(&other.pattern)
- }
-}
-
// === impl BadName ===
impl Error for BadName {}
@@ -552,9 +401,6 @@ impl<'a> Visit for MatchVisitor<'a> {
Some((ValueMatch::Pat(ref e), ref matched)) if e.str_matches(&value) => {
matched.store(true, Release);
}
- Some((ValueMatch::Debug(ref e), ref matched)) if e.debug_matches(&value) => {
- matched.store(true, Release)
- }
_ => {}
}
}
@@ -564,63 +410,7 @@ impl<'a> Visit for MatchVisitor<'a> {
Some((ValueMatch::Pat(ref e), ref matched)) if e.debug_matches(&value) => {
matched.store(true, Release);
}
- Some((ValueMatch::Debug(ref e), ref matched)) if e.debug_matches(&value) => {
- matched.store(true, Release)
- }
_ => {}
}
}
}
-
-#[cfg(test)]
-mod tests {
- use super::*;
- #[derive(Debug)]
- #[allow(dead_code)]
- struct MyStruct {
- answer: usize,
- question: &'static str,
- }
-
- #[test]
- fn debug_struct_match() {
- let my_struct = MyStruct {
- answer: 42,
- question: "life, the universe, and everything",
- };
-
- let pattern = "MyStruct { answer: 42, question: \"life, the universe, and everything\" }";
-
- assert_eq!(
- format!("{:?}", my_struct),
- pattern,
- "`MyStruct`'s `Debug` impl doesn't output the expected string"
- );
-
- let matcher = MatchDebug {
- pattern: pattern.into(),
- };
- assert!(matcher.debug_matches(&my_struct))
- }
-
- #[test]
- fn debug_struct_not_match() {
- let my_struct = MyStruct {
- answer: 42,
- question: "what shall we have for lunch?",
- };
-
- let pattern = "MyStruct { answer: 42, question: \"life, the universe, and everything\" }";
-
- assert_eq!(
- format!("{:?}", my_struct),
- "MyStruct { answer: 42, question: \"what shall we have for lunch?\" }",
- "`MyStruct`'s `Debug` impl doesn't output the expected string"
- );
-
- let matcher = MatchDebug {
- pattern: pattern.into(),
- };
- assert!(!matcher.debug_matches(&my_struct))
- }
-}
diff --git a/vendor/tracing-subscriber/src/filter/env/mod.rs b/vendor/tracing-subscriber-0.3.3/src/filter/env/mod.rs
index 81a9ae2bd..81fe0e62d 100644
--- a/vendor/tracing-subscriber/src/filter/env/mod.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/filter/env/mod.rs
@@ -4,8 +4,7 @@
// these are publicly re-exported, but the compiler doesn't realize
// that for some reason.
#[allow(unreachable_pub)]
-pub use self::{builder::Builder, directive::Directive, field::BadName as BadFieldName};
-mod builder;
+pub use self::{directive::Directive, field::BadName as BadFieldName};
mod directive;
mod field;
@@ -16,7 +15,6 @@ use crate::{
};
use directive::ParseError;
use std::{cell::RefCell, collections::HashMap, env, error::Error, fmt, str::FromStr};
-use thread_local::ThreadLocal;
use tracing_core::{
callsite,
field::Field,
@@ -28,16 +26,6 @@ use tracing_core::{
/// A [`Layer`] which filters spans and events based on a set of filter
/// directives.
///
-/// `EnvFilter` implements both the [`Layer`](#impl-Layer<S>) and [`Filter`] traits, so it may
-/// be used for both [global filtering][global] and [per-layer filtering][plf],
-/// respectively. See [the documentation on filtering with `Layer`s][filtering]
-/// for details.
-///
-/// The [`Targets`] type implements a similar form of filtering, but without the
-/// ability to dynamically enable events based on the current span context, and
-/// without filtering on field values. When these features are not required,
-/// [`Targets`] provides a lighter-weight alternative to [`EnvFilter`].
-///
/// # Directives
///
/// A filter consists of one or more comma-separated directives which match on [`Span`]s and [`Event`]s.
@@ -64,27 +52,10 @@ use tracing_core::{
/// and will match on any [`Span`] or [`Event`] that has a field with that name.
/// For example: `[span{field=\"value\"}]=debug`, `[{field}]=trace`.
/// - `value` matches on the value of a span's field. If a value is a numeric literal or a bool,
-/// it will match _only_ on that value. Otherwise, this filter matches the
-/// [`std::fmt::Debug`] output from the value.
+/// it will match _only_ on that value. Otherwise, this filter acts as a regex on
+/// the `std::fmt::Debug` output from the value.
/// - `level` sets a maximum verbosity level accepted by this directive.
///
-/// When a field value directive (`[{<FIELD NAME>=<FIELD_VALUE>}]=...`) matches a
-/// value's [`std::fmt::Debug`] output (i.e., the field value in the directive
-/// is not a `bool`, `i64`, `u64`, or `f64` literal), the matched pattern may be
-/// interpreted as either a regular expression or as the precise expected
-/// output of the field's [`std::fmt::Debug`] implementation. By default, these
-/// filters are interpreted as regular expressions, but this can be disabled
-/// using the [`Builder::with_regex`] builder method to use precise matching
-/// instead.
-///
-/// When field value filters are interpreted as regular expressions, the
-/// [`regex-automata` crate's regular expression syntax][re-syntax] is
-/// supported.
-///
-/// **Note**: When filters are constructed from potentially untrusted inputs,
-/// [disabling regular expression matching](Builder::with_regex) is strongly
-/// recommended.
-///
/// ## Usage Notes
///
/// - The portion of the directive which is included within the square brackets is `tracing`-specific.
@@ -101,7 +72,7 @@ use tracing_core::{
/// - A dash in a target will only appear when being specified explicitly:
/// `tracing::info!(target: "target-name", ...);`
///
-/// ## Example Syntax
+/// ## Examples
///
/// - `tokio::net=info` will enable all spans or events that:
/// - have the `tokio::net` target,
@@ -118,68 +89,10 @@ use tracing_core::{
/// - which has a field named `name` with value `bob`,
/// - at _any_ level.
///
-/// # Examples
-///
-/// Parsing an `EnvFilter` from the [default environment
-/// variable](EnvFilter::from_default_env) (`RUST_LOG`):
-///
-/// ```
-/// use tracing_subscriber::{EnvFilter, fmt, prelude::*};
-///
-/// tracing_subscriber::registry()
-/// .with(fmt::layer())
-/// .with(EnvFilter::from_default_env())
-/// .init();
-/// ```
-///
-/// Parsing an `EnvFilter` [from a user-provided environment
-/// variable](EnvFilter::from_env):
-///
-/// ```
-/// use tracing_subscriber::{EnvFilter, fmt, prelude::*};
-///
-/// tracing_subscriber::registry()
-/// .with(fmt::layer())
-/// .with(EnvFilter::from_env("MYAPP_LOG"))
-/// .init();
-/// ```
-///
-/// Using `EnvFilter` as a [per-layer filter][plf] to filter only a single
-/// [`Layer`]:
-///
-/// ```
-/// use tracing_subscriber::{EnvFilter, fmt, prelude::*};
-///
-/// // Parse an `EnvFilter` configuration from the `RUST_LOG`
-/// // environment variable.
-/// let filter = EnvFilter::from_default_env();
-///
-/// // Apply the filter to this layer *only*.
-/// let filtered_layer = fmt::layer().with_filter(filter);
-///
-/// // Some other layer, whose output we don't want to filter.
-/// let unfiltered_layer = // ...
-/// # fmt::layer();
-///
-/// tracing_subscriber::registry()
-/// .with(filtered_layer)
-/// .with(unfiltered_layer)
-/// .init();
-/// ```
-/// # Constructing `EnvFilter`s
-///
-/// An `EnvFilter` is be constructed by parsing a string containing one or more
-/// directives. The [`EnvFilter::new`] constructor parses an `EnvFilter` from a
-/// string, ignoring any invalid directives, while [`EnvFilter::try_new`]
-/// returns an error if invalid directives are encountered. Similarly, the
-/// [`EnvFilter::from_env`] and [`EnvFilter::try_from_env`] constructors parse
-/// an `EnvFilter` from the value of the provided environment variable, with
-/// lossy and strict validation, respectively.
-///
-/// A [builder](EnvFilter::builder) interface is available to set additional
-/// configuration options prior to parsing an `EnvFilter`. See the [`Builder`
-/// type's documentation](Builder) for details on the options that can be
-/// configured using the builder.
+/// The [`Targets`] type implements a similar form of filtering, but without the
+/// ability to dynamically enable events based on the current span context, and
+/// without filtering on field values. When these features are not required,
+/// [`Targets`] provides a lighter-weight alternative to [`EnvFilter`].
///
/// [`Span`]: tracing_core::span
/// [fields]: tracing_core::Field
@@ -187,11 +100,6 @@ use tracing_core::{
/// [`level`]: tracing_core::Level
/// [`Metadata`]: tracing_core::Metadata
/// [`Targets`]: crate::filter::Targets
-/// [`env_logger`]: https://crates.io/crates/env_logger
-/// [`Filter`]: #impl-Filter<S>
-/// [global]: crate::layer#global-filtering
-/// [plf]: crate::layer#per-layer-filtering
-/// [filtering]: crate::layer#filtering-with-layers
#[cfg_attr(docsrs, doc(cfg(all(feature = "env-filter", feature = "std"))))]
#[derive(Debug)]
pub struct EnvFilter {
@@ -200,8 +108,10 @@ pub struct EnvFilter {
has_dynamics: bool,
by_id: RwLock<HashMap<span::Id, directive::SpanMatcher>>,
by_cs: RwLock<HashMap<callsite::Identifier, directive::CallsiteMatcher>>,
- scope: ThreadLocal<RefCell<Vec<LevelFilter>>>,
- regex: bool,
+}
+
+thread_local! {
+ static SCOPE: RefCell<Vec<LevelFilter>> = RefCell::new(Vec::new());
}
type FieldMap<T> = HashMap<Field, T>;
@@ -224,181 +134,58 @@ impl EnvFilter {
/// `RUST_LOG` is the default environment variable used by
/// [`EnvFilter::from_default_env`] and [`EnvFilter::try_from_default_env`].
///
- /// [`EnvFilter::from_default_env`]: EnvFilter::from_default_env()
- /// [`EnvFilter::try_from_default_env`]: EnvFilter::try_from_default_env()
+ /// [`EnvFilter::from_default_env`]: #method.from_default_env
+ /// [`EnvFilter::try_from_default_env`]: #method.try_from_default_env
pub const DEFAULT_ENV: &'static str = "RUST_LOG";
- // === constructors, etc ===
-
- /// Returns a [builder] that can be used to configure a new [`EnvFilter`]
- /// instance.
- ///
- /// The [`Builder`] type is used to set additional configurations, such as
- /// [whether regular expressions are enabled](Builder::with_regex) or [the
- /// default directive](Builder::with_default_directive) before parsing an
- /// [`EnvFilter`] from a string or environment variable.
- ///
- /// [builder]: https://rust-unofficial.github.io/patterns/patterns/creational/builder.html
- pub fn builder() -> Builder {
- Builder::default()
- }
-
/// Returns a new `EnvFilter` from the value of the `RUST_LOG` environment
/// variable, ignoring any invalid filter directives.
- ///
- /// If the environment variable is empty or not set, or if it contains only
- /// invalid directives, a default directive enabling the [`ERROR`] level is
- /// added.
- ///
- /// To set additional configuration options prior to parsing the filter, use
- /// the [`Builder`] type instead.
- ///
- /// This function is equivalent to the following:
- ///
- /// ```rust
- /// use tracing_subscriber::filter::{EnvFilter, LevelFilter};
- ///
- /// # fn docs() -> EnvFilter {
- /// EnvFilter::builder()
- /// .with_default_directive(LevelFilter::ERROR.into())
- /// .from_env_lossy()
- /// # }
- /// ```
- ///
- /// [`ERROR`]: tracing::Level::ERROR
pub fn from_default_env() -> Self {
- Self::builder()
- .with_default_directive(LevelFilter::ERROR.into())
- .from_env_lossy()
+ Self::from_env(Self::DEFAULT_ENV)
}
/// Returns a new `EnvFilter` from the value of the given environment
/// variable, ignoring any invalid filter directives.
- ///
- /// If the environment variable is empty or not set, or if it contains only
- /// invalid directives, a default directive enabling the [`ERROR`] level is
- /// added.
- ///
- /// To set additional configuration options prior to parsing the filter, use
- /// the [`Builder`] type instead.
- ///
- /// This function is equivalent to the following:
- ///
- /// ```rust
- /// use tracing_subscriber::filter::{EnvFilter, LevelFilter};
- ///
- /// # fn docs() -> EnvFilter {
- /// # let env = "";
- /// EnvFilter::builder()
- /// .with_default_directive(LevelFilter::ERROR.into())
- /// .with_env_var(env)
- /// .from_env_lossy()
- /// # }
- /// ```
- ///
- /// [`ERROR`]: tracing::Level::ERROR
pub fn from_env<A: AsRef<str>>(env: A) -> Self {
- Self::builder()
- .with_default_directive(LevelFilter::ERROR.into())
- .with_env_var(env.as_ref())
- .from_env_lossy()
+ env::var(env.as_ref()).map(Self::new).unwrap_or_default()
}
/// Returns a new `EnvFilter` from the directives in the given string,
/// ignoring any that are invalid.
- ///
- /// If the string is empty or contains only invalid directives, a default
- /// directive enabling the [`ERROR`] level is added.
- ///
- /// To set additional configuration options prior to parsing the filter, use
- /// the [`Builder`] type instead.
- ///
- /// This function is equivalent to the following:
- ///
- /// ```rust
- /// use tracing_subscriber::filter::{EnvFilter, LevelFilter};
- ///
- /// # fn docs() -> EnvFilter {
- /// # let directives = "";
- /// EnvFilter::builder()
- /// .with_default_directive(LevelFilter::ERROR.into())
- /// .parse_lossy(directives)
- /// # }
- /// ```
- ///
- /// [`ERROR`]: tracing::Level::ERROR
- pub fn new<S: AsRef<str>>(directives: S) -> Self {
- Self::builder()
- .with_default_directive(LevelFilter::ERROR.into())
- .parse_lossy(directives)
+ pub fn new<S: AsRef<str>>(dirs: S) -> Self {
+ let directives = dirs.as_ref().split(',').filter_map(|s| match s.parse() {
+ Ok(d) => Some(d),
+ Err(err) => {
+ eprintln!("ignoring `{}`: {}", s, err);
+ None
+ }
+ });
+ Self::from_directives(directives)
}
/// Returns a new `EnvFilter` from the directives in the given string,
/// or an error if any are invalid.
- ///
- /// If the string is empty, a default directive enabling the [`ERROR`] level
- /// is added.
- ///
- /// To set additional configuration options prior to parsing the filter, use
- /// the [`Builder`] type instead.
- ///
- /// This function is equivalent to the following:
- ///
- /// ```rust
- /// use tracing_subscriber::filter::{EnvFilter, LevelFilter};
- ///
- /// # fn docs() -> Result<EnvFilter, tracing_subscriber::filter::ParseError> {
- /// # let directives = "";
- /// EnvFilter::builder()
- /// .with_default_directive(LevelFilter::ERROR.into())
- /// .parse(directives)
- /// # }
- /// ```
- ///
- /// [`ERROR`]: tracing::Level::ERROR
pub fn try_new<S: AsRef<str>>(dirs: S) -> Result<Self, directive::ParseError> {
- Self::builder().parse(dirs)
+ let directives = dirs
+ .as_ref()
+ .split(',')
+ .map(|s| s.parse())
+ .collect::<Result<Vec<_>, _>>()?;
+ Ok(Self::from_directives(directives))
}
/// Returns a new `EnvFilter` from the value of the `RUST_LOG` environment
- /// variable, or an error if the environment variable is unset or contains
- /// any invalid filter directives.
- ///
- /// To set additional configuration options prior to parsing the filter, use
- /// the [`Builder`] type instead.
- ///
- /// This function is equivalent to the following:
- ///
- /// ```rust
- /// use tracing_subscriber::EnvFilter;
- ///
- /// # fn docs() -> Result<EnvFilter, tracing_subscriber::filter::FromEnvError> {
- /// EnvFilter::builder().try_from_env()
- /// # }
- /// ```
+ /// variable, or an error if the environment variable contains any invalid
+ /// filter directives.
pub fn try_from_default_env() -> Result<Self, FromEnvError> {
- Self::builder().try_from_env()
+ Self::try_from_env(Self::DEFAULT_ENV)
}
/// Returns a new `EnvFilter` from the value of the given environment
/// variable, or an error if the environment variable is unset or contains
/// any invalid filter directives.
- ///
- /// To set additional configuration options prior to parsing the filter, use
- /// the [`Builder`] type instead.
- ///
- /// This function is equivalent to the following:
- ///
- /// ```rust
- /// use tracing_subscriber::EnvFilter;
- ///
- /// # fn docs() -> Result<EnvFilter, tracing_subscriber::filter::FromEnvError> {
- /// # let env = "";
- /// EnvFilter::builder().with_env_var(env).try_from_env()
- /// # }
- /// ```
pub fn try_from_env<A: AsRef<str>>(env: A) -> Result<Self, FromEnvError> {
- Self::builder().with_env_var(env.as_ref()).try_from_env()
+ env::var(env.as_ref())?.parse().map_err(Into::into)
}
/// Add a filtering directive to this `EnvFilter`.
@@ -415,13 +202,13 @@ impl EnvFilter {
/// and events as a previous filter, but sets a different level for those
/// spans and events, the previous directive is overwritten.
///
- /// [`LevelFilter`]: super::LevelFilter
- /// [`Level`]: tracing_core::Level
+ /// [`LevelFilter`]: ../filter/struct.LevelFilter.html
+ /// [`Level`]: https://docs.rs/tracing-core/latest/tracing_core/struct.Level.html
///
/// # Examples
///
/// From [`LevelFilter`]:
- ///
+ ////
/// ```rust
/// use tracing_subscriber::filter::{EnvFilter, LevelFilter};
/// let mut filter = EnvFilter::from_default_env()
@@ -436,9 +223,9 @@ impl EnvFilter {
/// let mut filter = EnvFilter::from_default_env()
/// .add_directive(Level::INFO.into());
/// ```
- ///
+ ////
/// Parsed from a string:
- ///
+ ////
/// ```rust
/// use tracing_subscriber::filter::{EnvFilter, Directive};
///
@@ -449,15 +236,7 @@ impl EnvFilter {
/// # Ok(())
/// # }
/// ```
- /// In the above example, substitute `my_crate`, `module`, etc. with the
- /// name your target crate/module is imported with. This might be
- /// different from the package name in Cargo.toml (`-` is replaced by `_`).
- /// Example, if the package name in your Cargo.toml is `MY-FANCY-LIB`, then
- /// the corresponding Rust identifier would be `MY_FANCY_LIB`:
- pub fn add_directive(mut self, mut directive: Directive) -> Self {
- if !self.regex {
- directive.deregexify();
- }
+ pub fn add_directive(mut self, directive: Directive) -> Self {
if let Some(stat) = directive.to_static() {
self.statics.add(stat)
} else {
@@ -467,19 +246,165 @@ impl EnvFilter {
self
}
- // === filtering methods ===
+ fn from_directives(directives: impl IntoIterator<Item = Directive>) -> Self {
+ use tracing::level_filters::STATIC_MAX_LEVEL;
+ use tracing::Level;
+
+ let directives: Vec<_> = directives.into_iter().collect();
+
+ let disabled: Vec<_> = directives
+ .iter()
+ .filter(|directive| directive.level > STATIC_MAX_LEVEL)
+ .collect();
+
+ if !disabled.is_empty() {
+ #[cfg(feature = "ansi_term")]
+ use ansi_term::{Color, Style};
+ // NOTE: We can't use a configured `MakeWriter` because the EnvFilter
+ // has no knowledge of any underlying subscriber or subscriber, which
+ // may or may not use a `MakeWriter`.
+ let warn = |msg: &str| {
+ #[cfg(not(feature = "ansi_term"))]
+ let msg = format!("warning: {}", msg);
+ #[cfg(feature = "ansi_term")]
+ let msg = {
+ let bold = Style::new().bold();
+ let mut warning = Color::Yellow.paint("warning");
+ warning.style_ref_mut().is_bold = true;
+ format!("{}{} {}", warning, bold.paint(":"), bold.paint(msg))
+ };
+ eprintln!("{}", msg);
+ };
+ let ctx_prefixed = |prefix: &str, msg: &str| {
+ #[cfg(not(feature = "ansi_term"))]
+ let msg = format!("note: {}", msg);
+ #[cfg(feature = "ansi_term")]
+ let msg = {
+ let mut equal = Color::Fixed(21).paint("="); // dark blue
+ equal.style_ref_mut().is_bold = true;
+ format!(" {} {} {}", equal, Style::new().bold().paint(prefix), msg)
+ };
+ eprintln!("{}", msg);
+ };
+ let ctx_help = |msg| ctx_prefixed("help:", msg);
+ let ctx_note = |msg| ctx_prefixed("note:", msg);
+ let ctx = |msg: &str| {
+ #[cfg(not(feature = "ansi_term"))]
+ let msg = format!("note: {}", msg);
+ #[cfg(feature = "ansi_term")]
+ let msg = {
+ let mut pipe = Color::Fixed(21).paint("|");
+ pipe.style_ref_mut().is_bold = true;
+ format!(" {} {}", pipe, msg)
+ };
+ eprintln!("{}", msg);
+ };
+ warn("some trace filter directives would enable traces that are disabled statically");
+ for directive in disabled {
+ let target = if let Some(target) = &directive.target {
+ format!("the `{}` target", target)
+ } else {
+ "all targets".into()
+ };
+ let level = directive
+ .level
+ .into_level()
+ .expect("=off would not have enabled any filters");
+ ctx(&format!(
+ "`{}` would enable the {} level for {}",
+ directive, level, target
+ ));
+ }
+ ctx_note(&format!("the static max level is `{}`", STATIC_MAX_LEVEL));
+ let help_msg = || {
+ let (feature, filter) = match STATIC_MAX_LEVEL.into_level() {
+ Some(Level::TRACE) => unreachable!(
+ "if the max level is trace, no static filtering features are enabled"
+ ),
+ Some(Level::DEBUG) => ("max_level_debug", Level::TRACE),
+ Some(Level::INFO) => ("max_level_info", Level::DEBUG),
+ Some(Level::WARN) => ("max_level_warn", Level::INFO),
+ Some(Level::ERROR) => ("max_level_error", Level::WARN),
+ None => return ("max_level_off", String::new()),
+ };
+ (feature, format!("{} ", filter))
+ };
+ let (feature, earlier_level) = help_msg();
+ ctx_help(&format!(
+ "to enable {}logging, remove the `{}` feature",
+ earlier_level, feature
+ ));
+ }
- /// Returns `true` if this `EnvFilter` would enable the provided `metadata`
- /// in the current context.
- ///
- /// This is equivalent to calling the [`Layer::enabled`] or
- /// [`Filter::enabled`] methods on `EnvFilter`'s implementations of those
- /// traits, but it does not require the trait to be in scope.
- pub fn enabled<S>(&self, metadata: &Metadata<'_>, _: Context<'_, S>) -> bool {
+ let (dynamics, mut statics) = Directive::make_tables(directives);
+ let has_dynamics = !dynamics.is_empty();
+
+ if statics.is_empty() && !has_dynamics {
+ statics.add(directive::StaticDirective::default());
+ }
+
+ Self {
+ statics,
+ dynamics,
+ has_dynamics,
+ by_id: RwLock::new(HashMap::new()),
+ by_cs: RwLock::new(HashMap::new()),
+ }
+ }
+
+ fn cares_about_span(&self, span: &span::Id) -> bool {
+ let spans = try_lock!(self.by_id.read(), else return false);
+ spans.contains_key(span)
+ }
+
+ fn base_interest(&self) -> Interest {
+ if self.has_dynamics {
+ Interest::sometimes()
+ } else {
+ Interest::never()
+ }
+ }
+}
+
+impl<S: Subscriber> Layer<S> for EnvFilter {
+ fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest {
+ if self.has_dynamics && metadata.is_span() {
+ // If this metadata describes a span, first, check if there is a
+ // dynamic filter that should be constructed for it. If so, it
+ // should always be enabled, since it influences filtering.
+ if let Some(matcher) = self.dynamics.matcher(metadata) {
+ let mut by_cs = try_lock!(self.by_cs.write(), else return self.base_interest());
+ by_cs.insert(metadata.callsite(), matcher);
+ return Interest::always();
+ }
+ }
+
+ // Otherwise, check if any of our static filters enable this metadata.
+ if self.statics.enabled(metadata) {
+ Interest::always()
+ } else {
+ self.base_interest()
+ }
+ }
+
+ fn max_level_hint(&self) -> Option<LevelFilter> {
+ if self.dynamics.has_value_filters() {
+ // If we perform any filtering on span field *values*, we will
+ // enable *all* spans, because their field values are not known
+ // until recording.
+ return Some(LevelFilter::TRACE);
+ }
+ std::cmp::max(
+ self.statics.max_level.into(),
+ self.dynamics.max_level.into(),
+ )
+ }
+
+ fn enabled(&self, metadata: &Metadata<'_>, _: Context<'_, S>) -> bool {
let level = metadata.level();
// is it possible for a dynamic filter directive to enable this event?
- // if not, we can avoid the thread loca'l access + iterating over the
+ // if not, we can avoid the thread local access + iterating over the
// spans in the current scope.
if self.has_dynamics && self.dynamics.max_level >= *level {
if metadata.is_span() {
@@ -495,15 +420,14 @@ impl EnvFilter {
}
}
- let enabled_by_scope = {
- let scope = self.scope.get_or_default().borrow();
- for filter in &*scope {
+ let enabled_by_scope = SCOPE.with(|scope| {
+ for filter in scope.borrow().iter() {
if filter >= level {
return true;
}
}
false
- };
+ });
if enabled_by_scope {
return true;
}
@@ -519,33 +443,7 @@ impl EnvFilter {
false
}
- /// Returns an optional hint of the highest [verbosity level][level] that
- /// this `EnvFilter` will enable.
- ///
- /// This is equivalent to calling the [`Layer::max_level_hint`] or
- /// [`Filter::max_level_hint`] methods on `EnvFilter`'s implementations of those
- /// traits, but it does not require the trait to be in scope.
- ///
- /// [level]: tracing_core::metadata::Level
- pub fn max_level_hint(&self) -> Option<LevelFilter> {
- if self.dynamics.has_value_filters() {
- // If we perform any filtering on span field *values*, we will
- // enable *all* spans, because their field values are not known
- // until recording.
- return Some(LevelFilter::TRACE);
- }
- std::cmp::max(
- self.statics.max_level.into(),
- self.dynamics.max_level.into(),
- )
- }
-
- /// Informs the filter that a new span was created.
- ///
- /// This is equivalent to calling the [`Layer::on_new_span`] or
- /// [`Filter::on_new_span`] methods on `EnvFilter`'s implementations of those
- /// traits, but it does not require the trait to be in scope.
- pub fn on_new_span<S>(&self, attrs: &span::Attributes<'_>, id: &span::Id, _: Context<'_, S>) {
+ fn on_new_span(&self, attrs: &span::Attributes<'_>, id: &span::Id, _: Context<'_, S>) {
let by_cs = try_lock!(self.by_cs.read());
if let Some(cs) = by_cs.get(&attrs.metadata().callsite()) {
let span = cs.to_span_match(attrs);
@@ -553,37 +451,28 @@ impl EnvFilter {
}
}
- /// Informs the filter that the span with the provided `id` was entered.
- ///
- /// This is equivalent to calling the [`Layer::on_enter`] or
- /// [`Filter::on_enter`] methods on `EnvFilter`'s implementations of those
- /// traits, but it does not require the trait to be in scope.
- pub fn on_enter<S>(&self, id: &span::Id, _: Context<'_, S>) {
+ fn on_record(&self, id: &span::Id, values: &span::Record<'_>, _: Context<'_, S>) {
+ if let Some(span) = try_lock!(self.by_id.read()).get(id) {
+ span.record_update(values);
+ }
+ }
+
+ fn on_enter(&self, id: &span::Id, _: Context<'_, S>) {
// XXX: This is where _we_ could push IDs to the stack instead, and use
// that to allow changing the filter while a span is already entered.
// But that might be much less efficient...
if let Some(span) = try_lock!(self.by_id.read()).get(id) {
- self.scope.get_or_default().borrow_mut().push(span.level());
+ SCOPE.with(|scope| scope.borrow_mut().push(span.level()));
}
}
- /// Informs the filter that the span with the provided `id` was exited.
- ///
- /// This is equivalent to calling the [`Layer::on_exit`] or
- /// [`Filter::on_exit`] methods on `EnvFilter`'s implementations of those
- /// traits, but it does not require the trait to be in scope.
- pub fn on_exit<S>(&self, id: &span::Id, _: Context<'_, S>) {
+ fn on_exit(&self, id: &span::Id, _: Context<'_, S>) {
if self.cares_about_span(id) {
- self.scope.get_or_default().borrow_mut().pop();
+ SCOPE.with(|scope| scope.borrow_mut().pop());
}
}
- /// Informs the filter that the span with the provided `id` was closed.
- ///
- /// This is equivalent to calling the [`Layer::on_close`] or
- /// [`Filter::on_close`] methods on `EnvFilter`'s implementations of those
- /// traits, but it does not require the trait to be in scope.
- pub fn on_close<S>(&self, id: span::Id, _: Context<'_, S>) {
+ fn on_close(&self, id: span::Id, _: Context<'_, S>) {
// If we don't need to acquire a write lock, avoid doing so.
if !self.cares_about_span(&id) {
return;
@@ -592,140 +481,6 @@ impl EnvFilter {
let mut spans = try_lock!(self.by_id.write());
spans.remove(&id);
}
-
- /// Informs the filter that the span with the provided `id` recorded the
- /// provided field `values`.
- ///
- /// This is equivalent to calling the [`Layer::on_record`] or
- /// [`Filter::on_record`] methods on `EnvFilter`'s implementations of those
- /// traits, but it does not require the trait to be in scope
- pub fn on_record<S>(&self, id: &span::Id, values: &span::Record<'_>, _: Context<'_, S>) {
- if let Some(span) = try_lock!(self.by_id.read()).get(id) {
- span.record_update(values);
- }
- }
-
- fn cares_about_span(&self, span: &span::Id) -> bool {
- let spans = try_lock!(self.by_id.read(), else return false);
- spans.contains_key(span)
- }
-
- fn base_interest(&self) -> Interest {
- if self.has_dynamics {
- Interest::sometimes()
- } else {
- Interest::never()
- }
- }
-
- fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest {
- if self.has_dynamics && metadata.is_span() {
- // If this metadata describes a span, first, check if there is a
- // dynamic filter that should be constructed for it. If so, it
- // should always be enabled, since it influences filtering.
- if let Some(matcher) = self.dynamics.matcher(metadata) {
- let mut by_cs = try_lock!(self.by_cs.write(), else return self.base_interest());
- by_cs.insert(metadata.callsite(), matcher);
- return Interest::always();
- }
- }
-
- // Otherwise, check if any of our static filters enable this metadata.
- if self.statics.enabled(metadata) {
- Interest::always()
- } else {
- self.base_interest()
- }
- }
-}
-
-impl<S: Subscriber> Layer<S> for EnvFilter {
- #[inline]
- fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest {
- EnvFilter::register_callsite(self, metadata)
- }
-
- #[inline]
- fn max_level_hint(&self) -> Option<LevelFilter> {
- EnvFilter::max_level_hint(self)
- }
-
- #[inline]
- fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool {
- self.enabled(metadata, ctx)
- }
-
- #[inline]
- fn on_new_span(&self, attrs: &span::Attributes<'_>, id: &span::Id, ctx: Context<'_, S>) {
- self.on_new_span(attrs, id, ctx)
- }
-
- #[inline]
- fn on_record(&self, id: &span::Id, values: &span::Record<'_>, ctx: Context<'_, S>) {
- self.on_record(id, values, ctx);
- }
-
- #[inline]
- fn on_enter(&self, id: &span::Id, ctx: Context<'_, S>) {
- self.on_enter(id, ctx);
- }
-
- #[inline]
- fn on_exit(&self, id: &span::Id, ctx: Context<'_, S>) {
- self.on_exit(id, ctx);
- }
-
- #[inline]
- fn on_close(&self, id: span::Id, ctx: Context<'_, S>) {
- self.on_close(id, ctx);
- }
-}
-
-feature! {
- #![all(feature = "registry", feature = "std")]
- use crate::layer::Filter;
-
- impl<S> Filter<S> for EnvFilter {
- #[inline]
- fn enabled(&self, meta: &Metadata<'_>, ctx: &Context<'_, S>) -> bool {
- self.enabled(meta, ctx.clone())
- }
-
- #[inline]
- fn callsite_enabled(&self, meta: &'static Metadata<'static>) -> Interest {
- self.register_callsite(meta)
- }
-
- #[inline]
- fn max_level_hint(&self) -> Option<LevelFilter> {
- EnvFilter::max_level_hint(self)
- }
-
- #[inline]
- fn on_new_span(&self, attrs: &span::Attributes<'_>, id: &span::Id, ctx: Context<'_, S>) {
- self.on_new_span(attrs, id, ctx)
- }
-
- #[inline]
- fn on_record(&self, id: &span::Id, values: &span::Record<'_>, ctx: Context<'_, S>) {
- self.on_record(id, values, ctx);
- }
-
- #[inline]
- fn on_enter(&self, id: &span::Id, ctx: Context<'_, S>) {
- self.on_enter(id, ctx);
- }
-
- #[inline]
- fn on_exit(&self, id: &span::Id, ctx: Context<'_, S>) {
- self.on_exit(id, ctx);
- }
-
- #[inline]
- fn on_close(&self, id: span::Id, ctx: Context<'_, S>) {
- self.on_close(id, ctx);
- }
- }
}
impl FromStr for EnvFilter {
@@ -747,7 +502,7 @@ where
impl Default for EnvFilter {
fn default() -> Self {
- Builder::default().from_directives(std::iter::empty())
+ Self::from_directives(std::iter::empty())
}
}
@@ -980,12 +735,4 @@ mod tests {
[span2{bar=2 baz=false}],crate2[{quux=\"quuux\"}]=debug",
);
}
-
- #[test]
- fn parse_empty_string() {
- // There is no corresponding test for [`Builder::parse_lossy`] as failed
- // parsing does not produce any observable side effects. If this test fails
- // check that [`Builder::parse_lossy`] is behaving correctly as well.
- assert!(EnvFilter::builder().parse("").is_ok());
- }
}
diff --git a/vendor/tracing-subscriber/src/filter/filter_fn.rs b/vendor/tracing-subscriber-0.3.3/src/filter/filter_fn.rs
index 332bf860a..332bf860a 100644
--- a/vendor/tracing-subscriber/src/filter/filter_fn.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/filter/filter_fn.rs
diff --git a/vendor/tracing-subscriber/src/filter/layer_filters/mod.rs b/vendor/tracing-subscriber-0.3.3/src/filter/layer_filters.rs
index 8949cfb5a..e77fd3751 100644
--- a/vendor/tracing-subscriber/src/filter/layer_filters/mod.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/filter/layer_filters.rs
@@ -37,7 +37,6 @@ use std::{
cell::{Cell, RefCell},
fmt,
marker::PhantomData,
- ops::Deref,
sync::Arc,
thread_local,
};
@@ -46,7 +45,6 @@ use tracing_core::{
subscriber::{Interest, Subscriber},
Event, Metadata,
};
-pub mod combinator;
/// A [`Layer`] that wraps an inner [`Layer`] and adds a [`Filter`] which
/// controls what spans and events are enabled for that layer.
@@ -160,231 +158,7 @@ thread_local! {
pub(crate) static FILTERING: FilterState = FilterState::new();
}
-/// Extension trait adding [combinators] for combining [`Filter`].
-///
-/// [combinators]: crate::filter::combinator
-/// [`Filter`]: crate::layer::Filter
-pub trait FilterExt<S>: layer::Filter<S> {
- /// Combines this [`Filter`] with another [`Filter`] s so that spans and
- /// events are enabled if and only if *both* filters return `true`.
- ///
- /// # Examples
- ///
- /// Enabling spans or events if they have both a particular target *and* are
- /// above a certain level:
- ///
- /// ```
- /// use tracing_subscriber::{
- /// filter::{filter_fn, LevelFilter, FilterExt},
- /// prelude::*,
- /// };
- ///
- /// // Enables spans and events with targets starting with `interesting_target`:
- /// let target_filter = filter_fn(|meta| {
- /// meta.target().starts_with("interesting_target")
- /// });
- ///
- /// // Enables spans and events with levels `INFO` and below:
- /// let level_filter = LevelFilter::INFO;
- ///
- /// // Combine the two filters together, returning a filter that only enables
- /// // spans and events that *both* filters will enable:
- /// let filter = target_filter.and(level_filter);
- ///
- /// tracing_subscriber::registry()
- /// .with(tracing_subscriber::fmt::layer().with_filter(filter))
- /// .init();
- ///
- /// // This event will *not* be enabled:
- /// tracing::info!("an event with an uninteresting target");
- ///
- /// // This event *will* be enabled:
- /// tracing::info!(target: "interesting_target", "a very interesting event");
- ///
- /// // This event will *not* be enabled:
- /// tracing::debug!(target: "interesting_target", "interesting debug event...");
- /// ```
- ///
- /// [`Filter`]: crate::layer::Filter
- fn and<B>(self, other: B) -> combinator::And<Self, B, S>
- where
- Self: Sized,
- B: layer::Filter<S>,
- {
- combinator::And::new(self, other)
- }
-
- /// Combines two [`Filter`]s so that spans and events are enabled if *either* filter
- /// returns `true`.
- ///
- /// # Examples
- ///
- /// Enabling spans and events at the `INFO` level and above, and all spans
- /// and events with a particular target:
- /// ```
- /// use tracing_subscriber::{
- /// filter::{filter_fn, LevelFilter, FilterExt},
- /// prelude::*,
- /// };
- ///
- /// // Enables spans and events with targets starting with `interesting_target`:
- /// let target_filter = filter_fn(|meta| {
- /// meta.target().starts_with("interesting_target")
- /// });
- ///
- /// // Enables spans and events with levels `INFO` and below:
- /// let level_filter = LevelFilter::INFO;
- ///
- /// // Combine the two filters together so that a span or event is enabled
- /// // if it is at INFO or lower, or if it has a target starting with
- /// // `interesting_target`.
- /// let filter = level_filter.or(target_filter);
- ///
- /// tracing_subscriber::registry()
- /// .with(tracing_subscriber::fmt::layer().with_filter(filter))
- /// .init();
- ///
- /// // This event will *not* be enabled:
- /// tracing::debug!("an uninteresting event");
- ///
- /// // This event *will* be enabled:
- /// tracing::info!("an uninteresting INFO event");
- ///
- /// // This event *will* be enabled:
- /// tracing::info!(target: "interesting_target", "a very interesting event");
- ///
- /// // This event *will* be enabled:
- /// tracing::debug!(target: "interesting_target", "interesting debug event...");
- /// ```
- ///
- /// Enabling a higher level for a particular target by using `or` in
- /// conjunction with the [`and`] combinator:
- ///
- /// ```
- /// use tracing_subscriber::{
- /// filter::{filter_fn, LevelFilter, FilterExt},
- /// prelude::*,
- /// };
- ///
- /// // This filter will enable spans and events with targets beginning with
- /// // `my_crate`:
- /// let my_crate = filter_fn(|meta| {
- /// meta.target().starts_with("my_crate")
- /// });
- ///
- /// let filter = my_crate
- /// // Combine the `my_crate` filter with a `LevelFilter` to produce a
- /// // filter that will enable the `INFO` level and lower for spans and
- /// // events with `my_crate` targets:
- /// .and(LevelFilter::INFO)
- /// // If a span or event *doesn't* have a target beginning with
- /// // `my_crate`, enable it if it has the `WARN` level or lower:
- /// .or(LevelFilter::WARN);
- ///
- /// tracing_subscriber::registry()
- /// .with(tracing_subscriber::fmt::layer().with_filter(filter))
- /// .init();
- /// ```
- ///
- /// [`Filter`]: crate::layer::Filter
- /// [`and`]: FilterExt::and
- fn or<B>(self, other: B) -> combinator::Or<Self, B, S>
- where
- Self: Sized,
- B: layer::Filter<S>,
- {
- combinator::Or::new(self, other)
- }
-
- /// Inverts `self`, returning a filter that enables spans and events only if
- /// `self` would *not* enable them.
- fn not(self) -> combinator::Not<Self, S>
- where
- Self: Sized,
- {
- combinator::Not::new(self)
- }
-
- /// [Boxes] `self`, erasing its concrete type.
- ///
- /// This is equivalent to calling [`Box::new`], but in method form, so that
- /// it can be used when chaining combinator methods.
- ///
- /// # Examples
- ///
- /// When different combinations of filters are used conditionally, they may
- /// have different types. For example, the following code won't compile,
- /// since the `if` and `else` clause produce filters of different types:
- ///
- /// ```compile_fail
- /// use tracing_subscriber::{
- /// filter::{filter_fn, LevelFilter, FilterExt},
- /// prelude::*,
- /// };
- ///
- /// let enable_bar_target: bool = // ...
- /// # false;
- ///
- /// let filter = if enable_bar_target {
- /// filter_fn(|meta| meta.target().starts_with("foo"))
- /// // If `enable_bar_target` is true, add a `filter_fn` enabling
- /// // spans and events with the target `bar`:
- /// .or(filter_fn(|meta| meta.target().starts_with("bar")))
- /// .and(LevelFilter::INFO)
- /// } else {
- /// filter_fn(|meta| meta.target().starts_with("foo"))
- /// .and(LevelFilter::INFO)
- /// };
- ///
- /// tracing_subscriber::registry()
- /// .with(tracing_subscriber::fmt::layer().with_filter(filter))
- /// .init();
- /// ```
- ///
- /// By using `boxed`, the types of the two different branches can be erased,
- /// so the assignment to the `filter` variable is valid (as both branches
- /// have the type `Box<dyn Filter<S> + Send + Sync + 'static>`). The
- /// following code *does* compile:
- ///
- /// ```
- /// use tracing_subscriber::{
- /// filter::{filter_fn, LevelFilter, FilterExt},
- /// prelude::*,
- /// };
- ///
- /// let enable_bar_target: bool = // ...
- /// # false;
- ///
- /// let filter = if enable_bar_target {
- /// filter_fn(|meta| meta.target().starts_with("foo"))
- /// .or(filter_fn(|meta| meta.target().starts_with("bar")))
- /// .and(LevelFilter::INFO)
- /// // Boxing the filter erases its type, so both branches now
- /// // have the same type.
- /// .boxed()
- /// } else {
- /// filter_fn(|meta| meta.target().starts_with("foo"))
- /// .and(LevelFilter::INFO)
- /// .boxed()
- /// };
- ///
- /// tracing_subscriber::registry()
- /// .with(tracing_subscriber::fmt::layer().with_filter(filter))
- /// .init();
- /// ```
- ///
- /// [Boxes]: std::boxed
- /// [`Box::new`]: std::boxed::Box::new
- fn boxed(self) -> Box<dyn layer::Filter<S> + Send + Sync + 'static>
- where
- Self: Sized + Send + Sync + 'static,
- {
- Box::new(self)
- }
-}
-
// === impl Filter ===
-
#[cfg(feature = "registry")]
#[cfg_attr(docsrs, doc(cfg(feature = "registry")))]
impl<S> layer::Filter<S> for LevelFilter {
@@ -405,35 +179,38 @@ impl<S> layer::Filter<S> for LevelFilter {
}
}
-macro_rules! filter_impl_body {
- () => {
- #[inline]
- fn enabled(&self, meta: &Metadata<'_>, cx: &Context<'_, S>) -> bool {
- self.deref().enabled(meta, cx)
- }
-
- #[inline]
- fn callsite_enabled(&self, meta: &'static Metadata<'static>) -> Interest {
- self.deref().callsite_enabled(meta)
- }
+impl<S> layer::Filter<S> for Arc<dyn layer::Filter<S> + Send + Sync + 'static> {
+ #[inline]
+ fn enabled(&self, meta: &Metadata<'_>, cx: &Context<'_, S>) -> bool {
+ (**self).enabled(meta, cx)
+ }
- #[inline]
- fn max_level_hint(&self) -> Option<LevelFilter> {
- self.deref().max_level_hint()
- }
- };
-}
+ #[inline]
+ fn callsite_enabled(&self, meta: &'static Metadata<'static>) -> Interest {
+ (**self).callsite_enabled(meta)
+ }
-#[cfg(feature = "registry")]
-#[cfg_attr(docsrs, doc(cfg(feature = "registry")))]
-impl<S> layer::Filter<S> for Arc<dyn layer::Filter<S> + Send + Sync + 'static> {
- filter_impl_body!();
+ #[inline]
+ fn max_level_hint(&self) -> Option<LevelFilter> {
+ (**self).max_level_hint()
+ }
}
-#[cfg(feature = "registry")]
-#[cfg_attr(docsrs, doc(cfg(feature = "registry")))]
impl<S> layer::Filter<S> for Box<dyn layer::Filter<S> + Send + Sync + 'static> {
- filter_impl_body!();
+ #[inline]
+ fn enabled(&self, meta: &Metadata<'_>, cx: &Context<'_, S>) -> bool {
+ (**self).enabled(meta, cx)
+ }
+
+ #[inline]
+ fn callsite_enabled(&self, meta: &'static Metadata<'static>) -> Interest {
+ (**self).callsite_enabled(meta)
+ }
+
+ #[inline]
+ fn max_level_hint(&self) -> Option<LevelFilter> {
+ (**self).max_level_hint()
+ }
}
// === impl Filtered ===
@@ -470,78 +247,6 @@ impl<L, F, S> Filtered<L, F, S> {
fn did_enable(&self, f: impl FnOnce()) {
FILTERING.with(|filtering| filtering.did_enable(self.id(), f))
}
-
- /// Borrows the [`Filter`](crate::layer::Filter) used by this layer.
- pub fn filter(&self) -> &F {
- &self.filter
- }
-
- /// Mutably borrows the [`Filter`](crate::layer::Filter) used by this layer.
- ///
- /// When this layer can be mutably borrowed, this may be used to mutate the filter.
- /// Generally, this will primarily be used with the
- /// [`reload::Handle::modify`](crate::reload::Handle::modify) method.
- ///
- /// # Examples
- ///
- /// ```
- /// # use tracing::info;
- /// # use tracing_subscriber::{filter,fmt,reload,Registry,prelude::*};
- /// # fn main() {
- /// let filtered_layer = fmt::Layer::default().with_filter(filter::LevelFilter::WARN);
- /// let (filtered_layer, reload_handle) = reload::Layer::new(filtered_layer);
- /// #
- /// # // specifying the Registry type is required
- /// # let _: &reload::Handle<filter::Filtered<fmt::Layer<Registry>,
- /// # filter::LevelFilter, Registry>,Registry>
- /// # = &reload_handle;
- /// #
- /// info!("This will be ignored");
- /// reload_handle.modify(|layer| *layer.filter_mut() = filter::LevelFilter::INFO);
- /// info!("This will be logged");
- /// # }
- /// ```
- pub fn filter_mut(&mut self) -> &mut F {
- &mut self.filter
- }
-
- /// Borrows the inner [`Layer`] wrapped by this `Filtered` layer.
- pub fn inner(&self) -> &L {
- &self.layer
- }
-
- /// Mutably borrows the inner [`Layer`] wrapped by this `Filtered` layer.
- ///
- /// This method is primarily expected to be used with the
- /// [`reload::Handle::modify`](crate::reload::Handle::modify) method.
- ///
- /// # Examples
- ///
- /// ```
- /// # use tracing::info;
- /// # use tracing_subscriber::{filter,fmt,reload,Registry,prelude::*};
- /// # fn non_blocking<T: std::io::Write>(writer: T) -> (fn() -> std::io::Stdout) {
- /// # std::io::stdout
- /// # }
- /// # fn main() {
- /// let filtered_layer = fmt::layer().with_writer(non_blocking(std::io::stderr())).with_filter(filter::LevelFilter::INFO);
- /// let (filtered_layer, reload_handle) = reload::Layer::new(filtered_layer);
- /// #
- /// # // specifying the Registry type is required
- /// # let _: &reload::Handle<filter::Filtered<fmt::Layer<Registry, _, _, fn() -> std::io::Stdout>,
- /// # filter::LevelFilter, Registry>, Registry>
- /// # = &reload_handle;
- /// #
- /// info!("This will be logged to stderr");
- /// reload_handle.modify(|layer| *layer.inner_mut().writer_mut() = non_blocking(std::io::stdout()));
- /// info!("This will be logged to stdout");
- /// # }
- /// ```
- ///
- /// [subscriber]: Subscribe
- pub fn inner_mut(&mut self) -> &mut L {
- &mut self.layer
- }
}
impl<S, L, F> Layer<S> for Filtered<L, F, S>
@@ -617,9 +322,7 @@ where
fn on_new_span(&self, attrs: &span::Attributes<'_>, id: &span::Id, cx: Context<'_, S>) {
self.did_enable(|| {
- let cx = cx.with_filter(self.id());
- self.filter.on_new_span(attrs, id, cx.clone());
- self.layer.on_new_span(attrs, id, cx);
+ self.layer.on_new_span(attrs, id, cx.with_filter(self.id()));
})
}
@@ -630,7 +333,6 @@ where
fn on_record(&self, span: &span::Id, values: &span::Record<'_>, cx: Context<'_, S>) {
if let Some(cx) = cx.if_enabled_for(span, self.id()) {
- self.filter.on_record(span, values, cx.clone());
self.layer.on_record(span, values, cx)
}
}
@@ -651,22 +353,19 @@ where
fn on_enter(&self, id: &span::Id, cx: Context<'_, S>) {
if let Some(cx) = cx.if_enabled_for(id, self.id()) {
- self.filter.on_enter(id, cx.clone());
- self.layer.on_enter(id, cx);
+ self.layer.on_enter(id, cx)
}
}
fn on_exit(&self, id: &span::Id, cx: Context<'_, S>) {
if let Some(cx) = cx.if_enabled_for(id, self.id()) {
- self.filter.on_exit(id, cx.clone());
- self.layer.on_exit(id, cx);
+ self.layer.on_exit(id, cx)
}
}
fn on_close(&self, id: span::Id, cx: Context<'_, S>) {
if let Some(cx) = cx.if_enabled_for(&id, self.id()) {
- self.filter.on_close(id.clone(), cx.clone());
- self.layer.on_close(id, cx);
+ self.layer.on_close(id, cx)
}
}
@@ -845,10 +544,6 @@ impl fmt::Binary for FilterId {
}
}
-// === impl FilterExt ===
-
-impl<F, S> FilterExt<S> for F where F: layer::Filter<S> {}
-
// === impl FilterMap ===
impl FilterMap {
diff --git a/vendor/tracing-subscriber/src/filter/level.rs b/vendor/tracing-subscriber-0.3.3/src/filter/level.rs
index 0fa601260..0fa601260 100644
--- a/vendor/tracing-subscriber/src/filter/level.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/filter/level.rs
diff --git a/vendor/tracing-subscriber/src/filter/mod.rs b/vendor/tracing-subscriber-0.3.3/src/filter/mod.rs
index 000a27195..000a27195 100644
--- a/vendor/tracing-subscriber/src/filter/mod.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/filter/mod.rs
diff --git a/vendor/tracing-subscriber/src/filter/targets.rs b/vendor/tracing-subscriber-0.3.3/src/filter/targets.rs
index 2a30d2db6..e0c7fcf82 100644
--- a/vendor/tracing-subscriber/src/filter/targets.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/filter/targets.rs
@@ -20,7 +20,7 @@ use core::{
slice,
str::FromStr,
};
-use tracing_core::{Interest, Level, Metadata, Subscriber};
+use tracing_core::{Interest, Metadata, Subscriber};
/// A filter that enables or disables spans and events based on their [target]
/// and [level].
@@ -111,7 +111,7 @@ use tracing_core::{Interest, Level, Metadata, Subscriber};
/// by the user at runtime.
///
/// The `Targets` filter can be used as a [per-layer filter][plf] *and* as a
-/// [global filter][global]:
+/// [global filter]:
///
/// ```rust
/// use tracing_subscriber::{
@@ -313,35 +313,6 @@ impl Targets {
Interest::never()
}
}
-
- /// Returns whether a [target]-[`Level`] pair would be enabled
- /// by this `Targets`.
- ///
- /// This method can be used with [`module_path!`] from `std` as the target
- /// in order to emulate the behavior of the [`tracing::event!`] and [`tracing::span!`]
- /// macros.
- ///
- /// # Examples
- ///
- /// ```
- /// use tracing_subscriber::filter::{Targets, LevelFilter};
- /// use tracing_core::Level;
- ///
- /// let filter = Targets::new()
- /// .with_target("my_crate", Level::INFO)
- /// .with_target("my_crate::interesting_module", Level::DEBUG);
- ///
- /// assert!(filter.would_enable("my_crate", &Level::INFO));
- /// assert!(!filter.would_enable("my_crate::interesting_module", &Level::TRACE));
- /// ```
- ///
- /// [target]: tracing_core::Metadata::target
- /// [`module_path!`]: std::module_path!
- pub fn would_enable(&self, target: &str, level: &Level) -> bool {
- // "Correct" to call because `Targets` only produces `StaticDirective`'s with NO
- // fields
- self.0.target_enabled(target, level)
- }
}
impl<T, L> Extend<(T, L)> for Targets
diff --git a/vendor/tracing-subscriber/src/fmt/fmt_layer.rs b/vendor/tracing-subscriber-0.3.3/src/fmt/fmt_layer.rs
index 21992e780..0e0d5e0eb 100644
--- a/vendor/tracing-subscriber/src/fmt/fmt_layer.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/fmt/fmt_layer.rs
@@ -56,7 +56,7 @@ use tracing_core::{
/// # tracing::subscriber::set_global_default(subscriber).unwrap();
/// ```
///
-/// [`Layer`]: super::layer::Layer
+/// [`Layer`]: ../layer/trait.Layer.html
#[cfg_attr(docsrs, doc(cfg(all(feature = "fmt", feature = "std"))))]
#[derive(Debug)]
pub struct Layer<
@@ -70,11 +70,11 @@ pub struct Layer<
fmt_event: E,
fmt_span: format::FmtSpanConfig,
is_ansi: bool,
- _inner: PhantomData<fn(S)>,
+ _inner: PhantomData<S>,
}
impl<S> Layer<S> {
- /// Returns a new [`Layer`][self::Layer] with the default configuration.
+ /// Returns a new [`Layer`](struct.Layer.html) with the default configuration.
pub fn new() -> Self {
Self::default()
}
@@ -87,8 +87,8 @@ where
N: for<'writer> FormatFields<'writer> + 'static,
W: for<'writer> MakeWriter<'writer> + 'static,
{
- /// Sets the [event formatter][`FormatEvent`] that the layer being built will
- /// use to format events.
+ /// Sets the [event formatter][`FormatEvent`] that the layer will use to
+ /// format events.
///
/// The event formatter may be any type implementing the [`FormatEvent`]
/// trait, which is implemented for all functions taking a [`FmtContext`], a
@@ -108,7 +108,7 @@ where
/// ```
/// [`FormatEvent`]: format::FormatEvent
/// [`Event`]: tracing::Event
- /// [`Writer`]: format::Writer
+ /// [`Writer`]: crate::format::Writer
pub fn event_format<E2>(self, e: E2) -> Layer<S, N, E2, W>
where
E2: FormatEvent<S, N> + 'static,
@@ -122,40 +122,11 @@ where
_inner: self._inner,
}
}
-
- /// Updates the event formatter by applying a function to the existing event formatter.
- ///
- /// This sets the event formatter that the layer being built will use to record fields.
- ///
- /// # Examples
- ///
- /// Updating an event formatter:
- ///
- /// ```rust
- /// let layer = tracing_subscriber::fmt::layer()
- /// .map_event_format(|e| e.compact());
- /// # // this is necessary for type inference.
- /// # use tracing_subscriber::Layer as _;
- /// # let _ = layer.with_subscriber(tracing_subscriber::registry::Registry::default());
- /// ```
- pub fn map_event_format<E2>(self, f: impl FnOnce(E) -> E2) -> Layer<S, N, E2, W>
- where
- E2: FormatEvent<S, N> + 'static,
- {
- Layer {
- fmt_fields: self.fmt_fields,
- fmt_event: f(self.fmt_event),
- fmt_span: self.fmt_span,
- make_writer: self.make_writer,
- is_ansi: self.is_ansi,
- _inner: self._inner,
- }
- }
}
// This needs to be a seperate impl block because they place different bounds on the type parameters.
impl<S, N, E, W> Layer<S, N, E, W> {
- /// Sets the [`MakeWriter`] that the layer being built will use to write events.
+ /// Sets the [`MakeWriter`] that the [`Layer`] being built will use to write events.
///
/// # Examples
///
@@ -171,6 +142,9 @@ impl<S, N, E, W> Layer<S, N, E, W> {
/// # use tracing_subscriber::Layer as _;
/// # let _ = layer.with_subscriber(tracing_subscriber::registry::Registry::default());
/// ```
+ ///
+ /// [`MakeWriter`]: ../fmt/trait.MakeWriter.html
+ /// [`Layer`]: ../layer/trait.Layer.html
pub fn with_writer<W2>(self, make_writer: W2) -> Layer<S, N, E, W2>
where
W2: for<'writer> MakeWriter<'writer> + 'static,
@@ -185,57 +159,7 @@ impl<S, N, E, W> Layer<S, N, E, W> {
}
}
- /// Borrows the [writer] for this [`Layer`].
- ///
- /// [writer]: MakeWriter
- pub fn writer(&self) -> &W {
- &self.make_writer
- }
-
- /// Mutably borrows the [writer] for this [`Layer`].
- ///
- /// This method is primarily expected to be used with the
- /// [`reload::Handle::modify`](crate::reload::Handle::modify) method.
- ///
- /// # Examples
- ///
- /// ```
- /// # use tracing::info;
- /// # use tracing_subscriber::{fmt,reload,Registry,prelude::*};
- /// # fn non_blocking<T: std::io::Write>(writer: T) -> (fn() -> std::io::Stdout) {
- /// # std::io::stdout
- /// # }
- /// # fn main() {
- /// let layer = fmt::layer().with_writer(non_blocking(std::io::stderr()));
- /// let (layer, reload_handle) = reload::Layer::new(layer);
- /// #
- /// # // specifying the Registry type is required
- /// # let _: &reload::Handle<fmt::Layer<Registry, _, _, _>, Registry> = &reload_handle;
- /// #
- /// info!("This will be logged to stderr");
- /// reload_handle.modify(|layer| *layer.writer_mut() = non_blocking(std::io::stdout()));
- /// info!("This will be logged to stdout");
- /// # }
- /// ```
- ///
- /// [writer]: MakeWriter
- pub fn writer_mut(&mut self) -> &mut W {
- &mut self.make_writer
- }
-
- /// Sets whether this layer should use ANSI terminal formatting
- /// escape codes (such as colors).
- ///
- /// This method is primarily expected to be used with the
- /// [`reload::Handle::modify`](crate::reload::Handle::modify) method when changing
- /// the writer.
- #[cfg(feature = "ansi")]
- #[cfg_attr(docsrs, doc(cfg(feature = "ansi")))]
- pub fn set_ansi(&mut self, ansi: bool) {
- self.is_ansi = ansi;
- }
-
- /// Configures the layer to support [`libtest`'s output capturing][capturing] when used in
+ /// Configures the subscriber to support [`libtest`'s output capturing][capturing] when used in
/// unit tests.
///
/// See [`TestWriter`] for additional details.
@@ -256,7 +180,7 @@ impl<S, N, E, W> Layer<S, N, E, W> {
/// ```
/// [capturing]:
/// https://doc.rust-lang.org/book/ch11-02-running-tests.html#showing-function-output
- /// [`TestWriter`]: super::writer::TestWriter
+ /// [`TestWriter`]: writer/struct.TestWriter.html
pub fn with_test_writer(self) -> Layer<S, N, E, TestWriter> {
Layer {
fmt_fields: self.fmt_fields,
@@ -277,39 +201,6 @@ impl<S, N, E, W> Layer<S, N, E, W> {
..self
}
}
-
- /// Updates the [`MakeWriter`] by applying a function to the existing [`MakeWriter`].
- ///
- /// This sets the [`MakeWriter`] that the layer being built will use to write events.
- ///
- /// # Examples
- ///
- /// Redirect output to stderr if level is <= WARN:
- ///
- /// ```rust
- /// use tracing::Level;
- /// use tracing_subscriber::fmt::{self, writer::MakeWriterExt};
- ///
- /// let stderr = std::io::stderr.with_max_level(Level::WARN);
- /// let layer = fmt::layer()
- /// .map_writer(move |w| stderr.or_else(w));
- /// # // this is necessary for type inference.
- /// # use tracing_subscriber::Layer as _;
- /// # let _ = layer.with_subscriber(tracing_subscriber::registry::Registry::default());
- /// ```
- pub fn map_writer<W2>(self, f: impl FnOnce(W) -> W2) -> Layer<S, N, E, W2>
- where
- W2: for<'writer> MakeWriter<'writer> + 'static,
- {
- Layer {
- fmt_fields: self.fmt_fields,
- fmt_event: self.fmt_event,
- fmt_span: self.fmt_span,
- is_ansi: self.is_ansi,
- make_writer: f(self.make_writer),
- _inner: self._inner,
- }
- }
}
impl<S, N, L, T, W> Layer<S, N, format::Format<L, T>, W>
@@ -393,7 +284,7 @@ where
/// `Layer`s added to this subscriber.
///
/// [lifecycle]: https://docs.rs/tracing/latest/tracing/span/index.html#the-span-lifecycle
- /// [time]: Layer::without_time()
+ /// [time]: #method.without_time
pub fn with_span_events(self, kind: FmtSpan) -> Self {
Layer {
fmt_span: self.fmt_span.with_kind(kind),
@@ -408,30 +299,6 @@ where
..self
}
}
- /// Sets whether or not an event's [source code file path][file] is
- /// displayed.
- ///
- /// [file]: tracing_core::Metadata::file
- pub fn with_file(self, display_filename: bool) -> Layer<S, N, format::Format<L, T>, W> {
- Layer {
- fmt_event: self.fmt_event.with_file(display_filename),
- ..self
- }
- }
-
- /// Sets whether or not an event's [source code line number][line] is
- /// displayed.
- ///
- /// [line]: tracing_core::Metadata::line
- pub fn with_line_number(
- self,
- display_line_number: bool,
- ) -> Layer<S, N, format::Format<L, T>, W> {
- Layer {
- fmt_event: self.fmt_event.with_line_number(display_line_number),
- ..self
- }
- }
/// Sets whether or not an event's level is displayed.
pub fn with_level(self, display_level: bool) -> Layer<S, N, format::Format<L, T>, W> {
@@ -442,9 +309,9 @@ where
}
/// Sets whether or not the [thread ID] of the current thread is displayed
- /// when formatting events.
+ /// when formatting events
///
- /// [thread ID]: std::thread::ThreadId
+ /// [thread ID]: https://doc.rust-lang.org/stable/std/thread/struct.ThreadId.html
pub fn with_thread_ids(self, display_thread_ids: bool) -> Layer<S, N, format::Format<L, T>, W> {
Layer {
fmt_event: self.fmt_event.with_thread_ids(display_thread_ids),
@@ -453,9 +320,9 @@ where
}
/// Sets whether or not the [name] of the current thread is displayed
- /// when formatting events.
+ /// when formatting events
///
- /// [name]: std::thread#naming-threads
+ /// [name]: https://doc.rust-lang.org/stable/std/thread/index.html#naming-threads
pub fn with_thread_names(
self,
display_thread_names: bool,
@@ -466,7 +333,7 @@ where
}
}
- /// Sets the layer being built to use a [less verbose formatter][super::format::Compact].
+ /// Sets the layer being built to use a [less verbose formatter](../fmt/format/struct.Compact.html).
pub fn compact(self) -> Layer<S, N, format::Format<format::Compact, T>, W>
where
N: for<'writer> FormatFields<'writer> + 'static,
@@ -495,7 +362,7 @@ where
}
}
- /// Sets the layer being built to use a [JSON formatter][super::format::Json].
+ /// Sets the layer being built to use a [JSON formatter](../fmt/format/struct.Json.html).
///
/// The full format includes fields from all entered spans.
///
@@ -510,7 +377,7 @@ where
/// - [`Layer::flatten_event`] can be used to enable flattening event fields into the root
/// object.
///
- /// [`Layer::flatten_event`]: Layer::flatten_event()
+ /// [`Layer::flatten_event`]: #method.flatten_event
#[cfg(feature = "json")]
#[cfg_attr(docsrs, doc(cfg(feature = "json")))]
pub fn json(self) -> Layer<S, format::JsonFields, format::Format<format::Json, T>, W> {
@@ -531,7 +398,7 @@ where
impl<S, T, W> Layer<S, format::JsonFields, format::Format<format::Json, T>, W> {
/// Sets the JSON layer being built to flatten event metadata.
///
- /// See [`format::Json`][super::format::Json]
+ /// See [`format::Json`](../fmt/format/struct.Json.html)
pub fn flatten_event(
self,
flatten_event: bool,
@@ -546,7 +413,7 @@ impl<S, T, W> Layer<S, format::JsonFields, format::Format<format::Json, T>, W> {
/// Sets whether or not the formatter will include the current span in
/// formatted events.
///
- /// See [`format::Json`][super::format::Json]
+ /// See [`format::Json`](../fmt/format/struct.Json.html)
pub fn with_current_span(
self,
display_current_span: bool,
@@ -561,7 +428,7 @@ impl<S, T, W> Layer<S, format::JsonFields, format::Format<format::Json, T>, W> {
/// Sets whether or not the formatter will include a list (from root to leaf)
/// of all currently entered spans in formatted events.
///
- /// See [`format::Json`][super::format::Json]
+ /// See [`format::Json`](../fmt/format/struct.Json.html)
pub fn with_span_list(
self,
display_span_list: bool,
@@ -590,36 +457,6 @@ impl<S, N, E, W> Layer<S, N, E, W> {
_inner: self._inner,
}
}
-
- /// Updates the field formatter by applying a function to the existing field formatter.
- ///
- /// This sets the field formatter that the layer being built will use to record fields.
- ///
- /// # Examples
- ///
- /// Updating a field formatter:
- ///
- /// ```rust
- /// use tracing_subscriber::field::MakeExt;
- /// let layer = tracing_subscriber::fmt::layer()
- /// .map_fmt_fields(|f| f.debug_alt());
- /// # // this is necessary for type inference.
- /// # use tracing_subscriber::Layer as _;
- /// # let _ = layer.with_subscriber(tracing_subscriber::registry::Registry::default());
- /// ```
- pub fn map_fmt_fields<N2>(self, f: impl FnOnce(N) -> N2) -> Layer<S, N2, E, W>
- where
- N2: for<'writer> FormatFields<'writer> + 'static,
- {
- Layer {
- fmt_event: self.fmt_event,
- fmt_fields: f(self.fmt_fields),
- fmt_span: self.fmt_span,
- make_writer: self.make_writer,
- is_ansi: self.is_ansi,
- _inner: self._inner,
- }
- }
}
impl<S> Default for Layer<S> {
@@ -660,7 +497,7 @@ where
/// formatters are in use, each can store its own formatted representation
/// without conflicting.
///
-/// [extensions]: crate::registry::Extensions
+/// [extensions]: ../registry/struct.Extensions.html
#[derive(Default)]
pub struct FormattedFields<E: ?Sized> {
_format_fields: PhantomData<fn(E)>,
@@ -984,7 +821,7 @@ where
/// If this returns `None`, then no span exists for that ID (either it has
/// closed or the ID is invalid).
///
- /// [stored data]: crate::registry::SpanRef
+ /// [stored data]: ../registry/struct.SpanRef.html
#[inline]
pub fn span(&self, id: &Id) -> Option<SpanRef<'_, S>>
where
@@ -1007,7 +844,7 @@ where
///
/// If this returns `None`, then we are not currently within a span.
///
- /// [stored data]: crate::registry::SpanRef
+ /// [stored data]: ../registry/struct.SpanRef.html
#[inline]
pub fn lookup_current(&self) -> Option<SpanRef<'_, S>>
where
diff --git a/vendor/tracing-subscriber/src/fmt/format/json.rs b/vendor/tracing-subscriber-0.3.3/src/fmt/format/json.rs
index c2f4d3755..cc86f03c7 100644
--- a/vendor/tracing-subscriber/src/fmt/format/json.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/fmt/format/json.rs
@@ -23,42 +23,25 @@ use tracing_serde::AsSerde;
#[cfg(feature = "tracing-log")]
use tracing_log::NormalizeEvent;
-/// Marker for [`Format`] that indicates that the newline-delimited JSON log
-/// format should be used.
+/// Marker for `Format` that indicates that the verbose JSON log format should be used.
///
-/// This formatter is intended for production use with systems where structured
-/// logs are consumed as JSON by analysis and viewing tools. The JSON output is
-/// not optimized for human readability; instead, it should be pretty-printed
-/// using external JSON tools such as `jq`, or using a JSON log viewer.
+/// The full format includes fields from all entered spans.
///
/// # Example Output
///
-/// <pre><font color="#4E9A06"><b>:;</b></font> <font color="#4E9A06">cargo</font> run --example fmt-json
-/// <font color="#4E9A06"><b> Finished</b></font> dev [unoptimized + debuginfo] target(s) in 0.08s
-/// <font color="#4E9A06"><b> Running</b></font> `target/debug/examples/fmt-json`
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821315Z&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;preparing to shave yaks&quot;,&quot;number_of_yaks&quot;:3},&quot;target&quot;:&quot;fmt_json&quot;}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821422Z&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;shaving yaks&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821495Z&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;hello! I&apos;m gonna shave a yak&quot;,&quot;excitement&quot;:&quot;yay!&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:1,&quot;name&quot;:&quot;shave&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821546Z&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;yak shaved successfully&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:1,&quot;name&quot;:&quot;shave&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821598Z&quot;,&quot;level&quot;:&quot;DEBUG&quot;,&quot;fields&quot;:{&quot;yak&quot;:1,&quot;shaved&quot;:true},&quot;target&quot;:&quot;yak_events&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821637Z&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;yaks_shaved&quot;:1},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821684Z&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;hello! I&apos;m gonna shave a yak&quot;,&quot;excitement&quot;:&quot;yay!&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:2,&quot;name&quot;:&quot;shave&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821727Z&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;yak shaved successfully&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:2,&quot;name&quot;:&quot;shave&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821773Z&quot;,&quot;level&quot;:&quot;DEBUG&quot;,&quot;fields&quot;:{&quot;yak&quot;:2,&quot;shaved&quot;:true},&quot;target&quot;:&quot;yak_events&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821806Z&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;yaks_shaved&quot;:2},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821909Z&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;hello! I&apos;m gonna shave a yak&quot;,&quot;excitement&quot;:&quot;yay!&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:3,&quot;name&quot;:&quot;shave&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.821956Z&quot;,&quot;level&quot;:&quot;WARN&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;could not locate yak&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:3,&quot;name&quot;:&quot;shave&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.822006Z&quot;,&quot;level&quot;:&quot;DEBUG&quot;,&quot;fields&quot;:{&quot;yak&quot;:3,&quot;shaved&quot;:false},&quot;target&quot;:&quot;yak_events&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.822041Z&quot;,&quot;level&quot;:&quot;ERROR&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;failed to shave yak&quot;,&quot;yak&quot;:3,&quot;error&quot;:&quot;missing yak&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.822079Z&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;yaks_shaved&quot;:2},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
-/// {&quot;timestamp&quot;:&quot;2022-02-15T18:47:10.822117Z&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;yak shaving completed&quot;,&quot;all_yaks_shaved&quot;:false},&quot;target&quot;:&quot;fmt_json&quot;}
-/// </pre>
+/// ```json
+/// {
+/// "timestamp":"Feb 20 11:28:15.096",
+/// "level":"INFO",
+/// "fields":{"message":"some message","key":"value"}
+/// "target":"mycrate",
+/// "span":{name":"leaf"},
+/// "spans":[{"name":"root"},{"name":"leaf"}],
+/// }
+/// ```
///
/// # Options
///
-/// This formatter exposes additional options to configure the structure of the
-/// output JSON objects:
-///
/// - [`Json::flatten_event`] can be used to enable flattening event fields into
/// the root
/// - [`Json::with_current_span`] can be used to control logging of the current
@@ -69,23 +52,9 @@ use tracing_log::NormalizeEvent;
/// By default, event fields are not flattened, and both current span and span
/// list are logged.
///
-/// # Valuable Support
-///
-/// Experimental support is available for using the [`valuable`] crate to record
-/// user-defined values as structured JSON. When the ["valuable" unstable
-/// feature][unstable] is enabled, types implementing [`valuable::Valuable`] will
-/// be recorded as structured JSON, rather than
-/// using their [`std::fmt::Debug`] implementations.
-///
-/// **Note**: This is an experimental feature. [Unstable features][unstable]
-/// must be enabled in order to use `valuable` support.
-///
-/// [`Json::flatten_event`]: Json::flatten_event()
-/// [`Json::with_current_span`]: Json::with_current_span()
-/// [`Json::with_span_list`]: Json::with_span_list()
-/// [`valuable`]: https://crates.io/crates/valuable
-/// [unstable]: crate#unstable-features
-/// [`valuable::Valuable`]: https://docs.rs/valuable/latest/valuable/trait.Valuable.html
+/// [`Json::flatten_event`]: #method.flatten_event
+/// [`Json::with_current_span`]: #method.with_current_span
+/// [`Json::with_span_list`]: #method.with_span_list
#[derive(Debug, Copy, Clone, Eq, PartialEq)]
pub struct Json {
pub(crate) flatten_event: bool,
@@ -274,18 +243,6 @@ where
serializer.serialize_entry("target", meta.target())?;
}
- if self.display_filename {
- if let Some(filename) = meta.file() {
- serializer.serialize_entry("filename", filename)?;
- }
- }
-
- if self.display_line_number {
- if let Some(line_number) = meta.line() {
- serializer.serialize_entry("line_number", &line_number)?;
- }
- }
-
if self.format.display_current_span {
if let Some(ref span) = current_span {
serializer
@@ -341,6 +298,7 @@ impl Default for Json {
/// The JSON [`FormatFields`] implementation.
///
+/// [`FormatFields`]: trait.FormatFields.html
#[derive(Debug)]
pub struct JsonFields {
// reserve the ability to add fields to this without causing a breaking
@@ -351,6 +309,7 @@ pub struct JsonFields {
impl JsonFields {
/// Returns a new JSON [`FormatFields`] implementation.
///
+ /// [`FormatFields`]: trait.FormatFields.html
pub fn new() -> Self {
Self { _private: () }
}
@@ -419,8 +378,9 @@ impl<'a> FormatFields<'a> for JsonFields {
/// The [visitor] produced by [`JsonFields`]'s [`MakeVisitor`] implementation.
///
-/// [visitor]: crate::field::Visit
-/// [`MakeVisitor`]: crate::field::MakeVisitor
+/// [visitor]: ../../field/trait.Visit.html
+/// [`JsonFields`]: struct.JsonFields.html
+/// [`MakeVisitor`]: ../../field/trait.MakeVisitor.html
pub struct JsonVisitor<'a> {
values: BTreeMap<&'a str, serde_json::Value>,
writer: &'a mut dyn Write,
@@ -475,26 +435,6 @@ impl<'a> crate::field::VisitOutput<fmt::Result> for JsonVisitor<'a> {
}
impl<'a> field::Visit for JsonVisitor<'a> {
- #[cfg(all(tracing_unstable, feature = "valuable"))]
- fn record_value(&mut self, field: &Field, value: valuable_crate::Value<'_>) {
- let value = match serde_json::to_value(valuable_serde::Serializable::new(value)) {
- Ok(value) => value,
- Err(_e) => {
- #[cfg(debug_assertions)]
- unreachable!(
- "`valuable::Valuable` implementations should always serialize \
- successfully, but an error occurred: {}",
- _e,
- );
-
- #[cfg(not(debug_assertions))]
- return;
- }
- };
-
- self.values.insert(field.name(), value);
- }
-
/// Visit a double precision floating point value.
fn record_f64(&mut self, field: &Field, value: f64) {
self.values
@@ -548,7 +488,6 @@ mod test {
use tracing::{self, subscriber::with_default};
use std::fmt;
- use std::path::Path;
struct MockTime;
impl FormatTime for MockTime {
@@ -577,50 +516,6 @@ mod test {
}
#[test]
- fn json_filename() {
- let current_path = Path::new("tracing-subscriber")
- .join("src")
- .join("fmt")
- .join("format")
- .join("json.rs")
- .to_str()
- .expect("path must be valid unicode")
- // escape windows backslashes
- .replace('\\', "\\\\");
- let expected =
- &format!("{}{}{}",
- "{\"timestamp\":\"fake time\",\"level\":\"INFO\",\"span\":{\"answer\":42,\"name\":\"json_span\",\"number\":3},\"spans\":[{\"answer\":42,\"name\":\"json_span\",\"number\":3}],\"target\":\"tracing_subscriber::fmt::format::json::test\",\"filename\":\"",
- current_path,
- "\",\"fields\":{\"message\":\"some json test\"}}\n");
- let subscriber = subscriber()
- .flatten_event(false)
- .with_current_span(true)
- .with_file(true)
- .with_span_list(true);
- test_json(expected, subscriber, || {
- let span = tracing::span!(tracing::Level::INFO, "json_span", answer = 42, number = 3);
- let _guard = span.enter();
- tracing::info!("some json test");
- });
- }
-
- #[test]
- fn json_line_number() {
- let expected =
- "{\"timestamp\":\"fake time\",\"level\":\"INFO\",\"span\":{\"answer\":42,\"name\":\"json_span\",\"number\":3},\"spans\":[{\"answer\":42,\"name\":\"json_span\",\"number\":3}],\"target\":\"tracing_subscriber::fmt::format::json::test\",\"line_number\":42,\"fields\":{\"message\":\"some json test\"}}\n";
- let subscriber = subscriber()
- .flatten_event(false)
- .with_current_span(true)
- .with_line_number(true)
- .with_span_list(true);
- test_json_with_line_number(expected, subscriber, || {
- let span = tracing::span!(tracing::Level::INFO, "json_span", answer = 42, number = 3);
- let _guard = span.enter();
- tracing::info!("some json test");
- });
- }
-
- #[test]
fn json_flattened_event() {
let expected =
"{\"timestamp\":\"fake time\",\"level\":\"INFO\",\"span\":{\"answer\":42,\"name\":\"json_span\",\"number\":3},\"spans\":[{\"answer\":42,\"name\":\"json_span\",\"number\":3}],\"target\":\"tracing_subscriber::fmt::format::json::test\",\"message\":\"some json test\"}\n";
@@ -852,34 +747,4 @@ mod test {
serde_json::from_str(actual).unwrap()
);
}
-
- fn test_json_with_line_number<T>(
- expected: &str,
- builder: crate::fmt::SubscriberBuilder<JsonFields, Format<Json>>,
- producer: impl FnOnce() -> T,
- ) {
- let make_writer = MockMakeWriter::default();
- let subscriber = builder
- .with_writer(make_writer.clone())
- .with_timer(MockTime)
- .finish();
-
- with_default(subscriber, producer);
-
- let buf = make_writer.buf();
- let actual = std::str::from_utf8(&buf[..]).unwrap();
- let mut expected =
- serde_json::from_str::<std::collections::HashMap<&str, serde_json::Value>>(expected)
- .unwrap();
- let expect_line_number = expected.remove("line_number").is_some();
- let mut actual: std::collections::HashMap<&str, serde_json::Value> =
- serde_json::from_str(actual).unwrap();
- let line_number = actual.remove("line_number");
- if expect_line_number {
- assert_eq!(line_number.map(|x| x.is_number()), Some(true));
- } else {
- assert!(line_number.is_none());
- }
- assert_eq!(actual, expected);
- }
}
diff --git a/vendor/tracing-subscriber/src/fmt/format/mod.rs b/vendor/tracing-subscriber-0.3.3/src/fmt/format/mod.rs
index ec79ac140..9001e102e 100644
--- a/vendor/tracing-subscriber/src/fmt/format/mod.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/fmt/format/mod.rs
@@ -1,33 +1,4 @@
//! Formatters for logging `tracing` events.
-//!
-//! This module provides several formatter implementations, as well as utilities
-//! for implementing custom formatters.
-//!
-//! # Formatters
-//! This module provides a number of formatter implementations:
-//!
-//! * [`Full`]: The default formatter. This emits human-readable,
-//! single-line logs for each event that occurs, with the current span context
-//! displayed before the formatted representation of the event. See
-//! [here](Full#example-output) for sample output.
-//!
-//! * [`Compact`]: A variant of the default formatter, optimized for
-//! short line lengths. Fields from the current span context are appended to
-//! the fields of the formatted event, and span names are not shown; the
-//! verbosity level is abbreviated to a single character. See
-//! [here](Compact#example-output) for sample output.
-//!
-//! * [`Pretty`]: Emits excessively pretty, multi-line logs, optimized
-//! for human readability. This is primarily intended to be used in local
-//! development and debugging, or for command-line applications, where
-//! automated analysis and compact storage of logs is less of a priority than
-//! readability and visual appeal. See [here](Pretty#example-output)
-//! for sample output.
-//!
-//! * [`Json`]: Outputs newline-delimited JSON logs. This is intended
-//! for production use with systems where structured logs are consumed as JSON
-//! by analysis and viewing tools. The JSON output is not optimized for human
-//! readability. See [here](Json#example-output) for sample output.
use super::time::{FormatTime, SystemTime};
use crate::{
field::{MakeOutput, MakeVisitor, RecordFields, VisitFmt, VisitOutput},
@@ -182,7 +153,6 @@ pub use pretty::*;
/// DEBUG yak_shaving::shaver: some-span{field-on-span=foo}: started shaving yak
/// ```
///
-/// [`layer::Context`]: crate::layer::Context
/// [`fmt::Layer`]: super::Layer
/// [`fmt::Subscriber`]: super::Subscriber
/// [`Event`]: tracing::Event
@@ -227,8 +197,8 @@ where
/// time a span or event with fields is recorded, the subscriber will format
/// those fields with its associated `FormatFields` implementation.
///
-/// [set of fields]: crate::field::RecordFields
-/// [`FmtSubscriber`]: super::Subscriber
+/// [set of fields]: ../field/trait.RecordFields.html
+/// [`FmtSubscriber`]: ../fmt/struct.Subscriber.html
pub trait FormatFields<'writer> {
/// Format the provided `fields` to the provided [`Writer`], returning a result.
fn format_fields<R: RecordFields>(&self, writer: Writer<'writer>, fields: R) -> fmt::Result;
@@ -281,6 +251,7 @@ pub fn json() -> Format<Json> {
/// Returns a [`FormatFields`] implementation that formats fields using the
/// provided function or closure.
///
+/// [`FormatFields`]: trait.FormatFields.html
pub fn debug_fn<F>(f: F) -> FieldFn<F>
where
F: Fn(&mut Writer<'_>, &Field, &dyn fmt::Debug) -> fmt::Result + Clone,
@@ -301,8 +272,6 @@ where
///
/// Additionally, a `Writer` may expose additional `tracing`-specific
/// information to the formatter implementation.
-///
-/// [fields]: tracing_core::field
pub struct Writer<'writer> {
writer: &'writer mut dyn fmt::Write,
// TODO(eliza): add ANSI support
@@ -312,76 +281,28 @@ pub struct Writer<'writer> {
/// A [`FormatFields`] implementation that formats fields by calling a function
/// or closure.
///
+/// [`FormatFields`]: trait.FormatFields.html
#[derive(Debug, Clone)]
pub struct FieldFn<F>(F);
/// The [visitor] produced by [`FieldFn`]'s [`MakeVisitor`] implementation.
///
-/// [visitor]: super::super::field::Visit
-/// [`MakeVisitor`]: super::super::field::MakeVisitor
+/// [visitor]: ../../field/trait.Visit.html
+/// [`FieldFn`]: struct.FieldFn.html
+/// [`MakeVisitor`]: ../../field/trait.MakeVisitor.html
pub struct FieldFnVisitor<'a, F> {
f: F,
writer: Writer<'a>,
result: fmt::Result,
}
-/// Marker for [`Format`] that indicates that the compact log format should be used.
-///
-/// The compact format includes fields from all currently entered spans, after
-/// the event's fields. Span names are listed in order before fields are
-/// displayed.
-///
-/// # Example Output
+/// Marker for `Format` that indicates that the compact log format should be used.
///
-/// <pre><font color="#4E9A06"><b>:;</b></font> <font color="#4E9A06">cargo</font> run --example fmt-compact
-/// <font color="#4E9A06"><b> Finished</b></font> dev [unoptimized + debuginfo] target(s) in 0.08s
-/// <font color="#4E9A06"><b> Running</b></font> `target/debug/examples/fmt-compact`
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809287Z </font><font color="#4E9A06"> INFO</font> <b>fmt_compact</b><font color="#AAAAAA">: preparing to shave yaks </font><i>number_of_yaks</i><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809367Z </font><font color="#4E9A06"> INFO</font> <b>shaving_yaks</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: shaving yaks </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809414Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks</b>:<b>shave</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: hello! I&apos;m gonna shave a yak </font><i>excitement</i><font color="#AAAAAA">=&quot;yay!&quot; </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3 </font><font color="#AAAAAA"><i>yak</i></font><font color="#AAAAAA">=1</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809443Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks</b>:<b>shave</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: yak shaved successfully </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3 </font><font color="#AAAAAA"><i>yak</i></font><font color="#AAAAAA">=1</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809477Z </font><font color="#3465A4">DEBUG</font> <b>shaving_yaks</b>: <b>yak_events</b><font color="#AAAAAA">: </font><i>yak</i><font color="#AAAAAA">=1 </font><i>shaved</i><font color="#AAAAAA">=true </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809500Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: </font><i>yaks_shaved</i><font color="#AAAAAA">=1 </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809531Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks</b>:<b>shave</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: hello! I&apos;m gonna shave a yak </font><i>excitement</i><font color="#AAAAAA">=&quot;yay!&quot; </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3 </font><font color="#AAAAAA"><i>yak</i></font><font color="#AAAAAA">=2</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809554Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks</b>:<b>shave</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: yak shaved successfully </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3 </font><font color="#AAAAAA"><i>yak</i></font><font color="#AAAAAA">=2</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809581Z </font><font color="#3465A4">DEBUG</font> <b>shaving_yaks</b>: <b>yak_events</b><font color="#AAAAAA">: </font><i>yak</i><font color="#AAAAAA">=2 </font><i>shaved</i><font color="#AAAAAA">=true </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809606Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: </font><i>yaks_shaved</i><font color="#AAAAAA">=2 </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809635Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks</b>:<b>shave</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: hello! I&apos;m gonna shave a yak </font><i>excitement</i><font color="#AAAAAA">=&quot;yay!&quot; </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3 </font><font color="#AAAAAA"><i>yak</i></font><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809664Z </font><font color="#C4A000"> WARN</font> <b>shaving_yaks</b>:<b>shave</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: could not locate yak </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3 </font><font color="#AAAAAA"><i>yak</i></font><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809693Z </font><font color="#3465A4">DEBUG</font> <b>shaving_yaks</b>: <b>yak_events</b><font color="#AAAAAA">: </font><i>yak</i><font color="#AAAAAA">=3 </font><i>shaved</i><font color="#AAAAAA">=false </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809717Z </font><font color="#CC0000">ERROR</font> <b>shaving_yaks</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: failed to shave yak </font><i>yak</i><font color="#AAAAAA">=3 </font><i>error</i><font color="#AAAAAA">=missing yak </font><i>error.sources</i><font color="#AAAAAA">=[out of space, out of cash] </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809743Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks</b>: <b>fmt_compact::yak_shave</b><font color="#AAAAAA">: </font><i>yaks_shaved</i><font color="#AAAAAA">=2 </font><font color="#AAAAAA"><i>yaks</i></font><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-17T19:51:05.809768Z </font><font color="#4E9A06"> INFO</font> <b>fmt_compact</b><font color="#AAAAAA">: yak shaving completed </font><i>all_yaks_shaved</i><font color="#AAAAAA">=false</font>
-///
-/// </pre>
+/// The compact format only includes the fields from the most recently entered span.
#[derive(Default, Debug, Copy, Clone, Eq, PartialEq)]
pub struct Compact;
-/// Marker for [`Format`] that indicates that the default log format should be used.
-///
-/// This formatter shows the span context before printing event data. Spans are
-/// displayed including their names and fields.
+/// Marker for `Format` that indicates that the verbose log format should be used.
///
-/// # Example Output
-///
-/// <pre><font color="#4E9A06"><b>:;</b></font> <font color="#4E9A06">cargo</font> run --example fmt
-/// <font color="#4E9A06"><b> Finished</b></font> dev [unoptimized + debuginfo] target(s) in 0.08s
-/// <font color="#4E9A06"><b> Running</b></font> `target/debug/examples/fmt`
-/// <font color="#AAAAAA">2022-02-15T18:40:14.289898Z </font><font color="#4E9A06"> INFO</font> fmt: preparing to shave yaks <i>number_of_yaks</i><font color="#AAAAAA">=3</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.289974Z </font><font color="#4E9A06"> INFO</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: shaving yaks</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290011Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">:</font><b>shave{</b><i>yak</i><font color="#AAAAAA">=1</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: hello! I&apos;m gonna shave a yak </font><i>excitement</i><font color="#AAAAAA">=&quot;yay!&quot;</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290038Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">:</font><b>shave{</b><i>yak</i><font color="#AAAAAA">=1</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: yak shaved successfully</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290070Z </font><font color="#3465A4">DEBUG</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">: yak_events: </font><i>yak</i><font color="#AAAAAA">=1 </font><i>shaved</i><font color="#AAAAAA">=true</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290089Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: </font><i>yaks_shaved</i><font color="#AAAAAA">=1</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290114Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">:</font><b>shave{</b><i>yak</i><font color="#AAAAAA">=2</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: hello! I&apos;m gonna shave a yak </font><i>excitement</i><font color="#AAAAAA">=&quot;yay!&quot;</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290134Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">:</font><b>shave{</b><i>yak</i><font color="#AAAAAA">=2</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: yak shaved successfully</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290157Z </font><font color="#3465A4">DEBUG</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">: yak_events: </font><i>yak</i><font color="#AAAAAA">=2 </font><i>shaved</i><font color="#AAAAAA">=true</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290174Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: </font><i>yaks_shaved</i><font color="#AAAAAA">=2</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290198Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">:</font><b>shave{</b><i>yak</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: hello! I&apos;m gonna shave a yak </font><i>excitement</i><font color="#AAAAAA">=&quot;yay!&quot;</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290222Z </font><font color="#C4A000"> WARN</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">:</font><b>shave{</b><i>yak</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: could not locate yak</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290247Z </font><font color="#3465A4">DEBUG</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">: yak_events: </font><i>yak</i><font color="#AAAAAA">=3 </font><i>shaved</i><font color="#AAAAAA">=false</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290268Z </font><font color="#CC0000">ERROR</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: failed to shave yak </font><i>yak</i><font color="#AAAAAA">=3 </font><i>error</i><font color="#AAAAAA">=missing yak </font><i>error.sources</i><font color="#AAAAAA">=[out of space, out of cash]</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290287Z </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b><i>yaks</i><font color="#AAAAAA">=3</font><b>}</b><font color="#AAAAAA">: fmt::yak_shave: </font><i>yaks_shaved</i><font color="#AAAAAA">=2</font>
-/// <font color="#AAAAAA">2022-02-15T18:40:14.290309Z </font><font color="#4E9A06"> INFO</font> fmt: yak shaving completed. <i>all_yaks_shaved</i><font color="#AAAAAA">=false</font>
-/// </pre>
+/// The full format includes fields from all entered spans.
#[derive(Default, Debug, Copy, Clone, Eq, PartialEq)]
pub struct Full;
@@ -390,11 +311,8 @@ pub struct Full;
/// You will usually want to use this as the `FormatEvent` for a `FmtSubscriber`.
///
/// The default logging format, [`Full`] includes all fields in each event and its containing
-/// spans. The [`Compact`] logging format is intended to produce shorter log
-/// lines; it displays each event's fields, along with fields from the current
-/// span context, but other information is abbreviated. The [`Pretty`] logging
-/// format is an extra-verbose, multi-line human-readable logging format
-/// intended for use in development.
+/// spans. The [`Compact`] logging format includes only the fields from the most-recently-entered
+/// span.
#[derive(Debug, Clone)]
pub struct Format<F = Full, T = SystemTime> {
format: F,
@@ -405,8 +323,6 @@ pub struct Format<F = Full, T = SystemTime> {
pub(crate) display_level: bool,
pub(crate) display_thread_id: bool,
pub(crate) display_thread_name: bool,
- pub(crate) display_filename: bool,
- pub(crate) display_line_number: bool,
}
// === impl Writer ===
@@ -583,8 +499,6 @@ impl Default for Format<Full, SystemTime> {
display_level: true,
display_thread_id: false,
display_thread_name: false,
- display_filename: false,
- display_line_number: false,
}
}
}
@@ -603,8 +517,6 @@ impl<F, T> Format<F, T> {
display_level: self.display_level,
display_thread_id: self.display_thread_id,
display_thread_name: self.display_thread_name,
- display_filename: self.display_filename,
- display_line_number: self.display_line_number,
}
}
@@ -642,8 +554,6 @@ impl<F, T> Format<F, T> {
display_level: self.display_level,
display_thread_id: self.display_thread_id,
display_thread_name: self.display_thread_name,
- display_filename: true,
- display_line_number: true,
}
}
@@ -661,6 +571,8 @@ impl<F, T> Format<F, T> {
///
/// - [`Format::flatten_event`] can be used to enable flattening event fields into the root
/// object.
+ ///
+ /// [`Format::flatten_event`]: #method.flatten_event
#[cfg(feature = "json")]
#[cfg_attr(docsrs, doc(cfg(feature = "json")))]
pub fn json(self) -> Format<Json, T> {
@@ -673,8 +585,6 @@ impl<F, T> Format<F, T> {
display_level: self.display_level,
display_thread_id: self.display_thread_id,
display_thread_name: self.display_thread_name,
- display_filename: self.display_filename,
- display_line_number: self.display_line_number,
}
}
@@ -702,8 +612,6 @@ impl<F, T> Format<F, T> {
display_level: self.display_level,
display_thread_id: self.display_thread_id,
display_thread_name: self.display_thread_name,
- display_filename: self.display_filename,
- display_line_number: self.display_line_number,
}
}
@@ -718,8 +626,6 @@ impl<F, T> Format<F, T> {
display_level: self.display_level,
display_thread_id: self.display_thread_id,
display_thread_name: self.display_thread_name,
- display_filename: self.display_filename,
- display_line_number: self.display_line_number,
}
}
@@ -748,9 +654,9 @@ impl<F, T> Format<F, T> {
}
/// Sets whether or not the [thread ID] of the current thread is displayed
- /// when formatting events.
+ /// when formatting events
///
- /// [thread ID]: std::thread::ThreadId
+ /// [thread ID]: https://doc.rust-lang.org/stable/std/thread/struct.ThreadId.html
pub fn with_thread_ids(self, display_thread_id: bool) -> Format<F, T> {
Format {
display_thread_id,
@@ -759,9 +665,9 @@ impl<F, T> Format<F, T> {
}
/// Sets whether or not the [name] of the current thread is displayed
- /// when formatting events.
+ /// when formatting events
///
- /// [name]: std::thread#naming-threads
+ /// [name]: https://doc.rust-lang.org/stable/std/thread/index.html#naming-threads
pub fn with_thread_names(self, display_thread_name: bool) -> Format<F, T> {
Format {
display_thread_name,
@@ -769,38 +675,6 @@ impl<F, T> Format<F, T> {
}
}
- /// Sets whether or not an event's [source code file path][file] is
- /// displayed.
- ///
- /// [file]: tracing_core::Metadata::file
- pub fn with_file(self, display_filename: bool) -> Format<F, T> {
- Format {
- display_filename,
- ..self
- }
- }
-
- /// Sets whether or not an event's [source code line number][line] is
- /// displayed.
- ///
- /// [line]: tracing_core::Metadata::line
- pub fn with_line_number(self, display_line_number: bool) -> Format<F, T> {
- Format {
- display_line_number,
- ..self
- }
- }
-
- /// Sets whether or not the source code location from which an event
- /// originated is displayed.
- ///
- /// This is equivalent to calling [`Format::with_file`] and
- /// [`Format::with_line_number`] with the same value.
- pub fn with_source_location(self, display_location: bool) -> Self {
- self.with_line_number(display_location)
- .with_file(display_location)
- }
-
#[inline]
fn format_timestamp(&self, writer: &mut Writer<'_>) -> fmt::Result
where
@@ -818,24 +692,14 @@ impl<F, T> Format<F, T> {
if writer.has_ansi_escapes() {
let style = Style::new().dimmed();
write!(writer, "{}", style.prefix())?;
-
- // If getting the timestamp failed, don't bail --- only bail on
- // formatting errors.
- if self.timer.format_time(writer).is_err() {
- writer.write_str("<unknown time>")?;
- }
-
+ self.timer.format_time(writer)?;
write!(writer, "{} ", style.suffix())?;
return Ok(());
}
}
// Otherwise, just format the timestamp without ANSI formatting.
- // If getting the timestamp failed, don't bail --- only bail on
- // formatting errors.
- if self.timer.format_time(writer).is_err() {
- writer.write_str("<unknown time>")?;
- }
+ self.timer.format_time(writer)?;
writer.write_char(' ')
}
}
@@ -850,7 +714,7 @@ impl<T> Format<Json, T> {
/// ```ignore,json
/// {"timestamp":"Feb 20 11:28:15.096","level":"INFO","target":"mycrate", "message":"some message", "key": "value"}
/// ```
- /// See [`Json`][super::format::Json].
+ /// See [`Json`](../format/struct.Json.html).
#[cfg(feature = "json")]
#[cfg_attr(docsrs, doc(cfg(feature = "json")))]
pub fn flatten_event(mut self, flatten_event: bool) -> Format<Json, T> {
@@ -861,7 +725,7 @@ impl<T> Format<Json, T> {
/// Sets whether or not the formatter will include the current span in
/// formatted events.
///
- /// See [`format::Json`][Json]
+ /// See [`format::Json`](../fmt/format/struct.Json.html)
#[cfg(feature = "json")]
#[cfg_attr(docsrs, doc(cfg(feature = "json")))]
pub fn with_current_span(mut self, display_current_span: bool) -> Format<Json, T> {
@@ -872,7 +736,7 @@ impl<T> Format<Json, T> {
/// Sets whether or not the formatter will include a list (from root to
/// leaf) of all currently entered spans in formatted events.
///
- /// See [`format::Json`][Json]
+ /// See [`format::Json`](../fmt/format/struct.Json.html)
#[cfg(feature = "json")]
#[cfg_attr(docsrs, doc(cfg(feature = "json")))]
pub fn with_span_list(mut self, display_span_list: bool) -> Format<Json, T> {
@@ -976,34 +840,6 @@ where
)?;
}
- let line_number = if self.display_line_number {
- meta.line()
- } else {
- None
- };
-
- if self.display_filename {
- if let Some(filename) = meta.file() {
- write!(
- writer,
- "{}{}{}",
- dimmed.paint(filename),
- dimmed.paint(":"),
- if line_number.is_some() { "" } else { " " }
- )?;
- }
- }
-
- if let Some(line_number) = line_number {
- write!(
- writer,
- "{}{}:{} ",
- dimmed.prefix(),
- line_number,
- dimmed.suffix()
- )?;
- }
-
ctx.format_fields(writer.by_ref(), event)?;
writeln!(writer)
}
@@ -1082,49 +918,23 @@ where
};
write!(writer, "{}", fmt_ctx)?;
- let bold = writer.bold();
- let dimmed = writer.dimmed();
-
- let mut needs_space = false;
if self.display_target {
- write!(writer, "{}{}", bold.paint(meta.target()), dimmed.paint(":"))?;
- needs_space = true;
- }
-
- if self.display_filename {
- if let Some(filename) = meta.file() {
- if self.display_target {
- writer.write_char(' ')?;
- }
- write!(writer, "{}{}", bold.paint(filename), dimmed.paint(":"))?;
- needs_space = true;
- }
- }
-
- if self.display_line_number {
- if let Some(line_number) = meta.line() {
- write!(
- writer,
- "{}{}{}{}",
- bold.prefix(),
- line_number,
- bold.suffix(),
- dimmed.paint(":")
- )?;
- needs_space = true;
- }
- }
-
- if needs_space {
- writer.write_char(' ')?;
+ write!(
+ writer,
+ "{}{} ",
+ writer.bold().paint(meta.target()),
+ writer.dimmed().paint(":")
+ )?;
}
ctx.format_fields(writer.by_ref(), event)?;
+ let dimmed = writer.dimmed();
for span in ctx
.event_scope()
.into_iter()
- .flat_map(crate::registry::Scope::from_root)
+ .map(crate::registry::Scope::from_root)
+ .flatten()
{
let exts = span.extensions();
if let Some(fields) = exts.get::<FormattedFields<N>>() {
@@ -1152,6 +962,7 @@ where
/// The default [`FormatFields`] implementation.
///
+/// [`FormatFields`]: trait.FormatFields.html
#[derive(Debug)]
pub struct DefaultFields {
// reserve the ability to add fields to this without causing a breaking
@@ -1173,6 +984,7 @@ pub struct DefaultVisitor<'a> {
impl DefaultFields {
/// Returns a new default [`FormatFields`] implementation.
///
+ /// [`FormatFields`]: trait.FormatFields.html
pub fn new() -> Self {
Self { _private: () }
}
@@ -1389,14 +1201,6 @@ impl Style {
fn paint(&self, d: impl fmt::Display) -> impl fmt::Display {
d
}
-
- fn prefix(&self) -> impl fmt::Display {
- ""
- }
-
- fn suffix(&self) -> impl fmt::Display {
- ""
- }
}
struct FmtThreadName<'a> {
@@ -1562,7 +1366,7 @@ impl<'a, F> fmt::Debug for FieldFnVisitor<'a, F> {
/// Configures what points in the span lifecycle are logged as events.
///
-/// See also [`with_span_events`](super::SubscriberBuilder.html::with_span_events).
+/// See also [`with_span_events`](../struct.SubscriberBuilder.html#method.with_span_events).
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd)]
pub struct FmtSpan(u8);
@@ -1724,9 +1528,7 @@ pub(super) mod test {
};
use super::*;
-
- use regex::Regex;
- use std::{fmt, path::Path};
+ use std::fmt;
pub(crate) struct MockTime;
impl FormatTime for MockTime {
@@ -1748,7 +1550,7 @@ pub(super) mod test {
.with_thread_names(false);
#[cfg(feature = "ansi")]
let subscriber = subscriber.with_ansi(false);
- assert_info_hello(subscriber, make_writer, "hello\n")
+ run_test(subscriber, make_writer, "hello\n")
}
fn test_ansi<T>(
@@ -1796,124 +1598,6 @@ pub(super) mod test {
run_test(subscriber, make_writer, expected);
}
- #[test]
- fn with_line_number_and_file_name() {
- let make_writer = MockMakeWriter::default();
- let subscriber = crate::fmt::Subscriber::builder()
- .with_writer(make_writer.clone())
- .with_file(true)
- .with_line_number(true)
- .with_level(false)
- .with_ansi(false)
- .with_timer(MockTime);
-
- let expected = Regex::new(&format!(
- "^fake time tracing_subscriber::fmt::format::test: {}:[0-9]+: hello\n$",
- current_path()
- // if we're on Windows, the path might contain backslashes, which
- // have to be escpaed before compiling the regex.
- .replace('\\', "\\\\")
- ))
- .unwrap();
- let _default = set_default(&subscriber.into());
- tracing::info!("hello");
- let res = make_writer.get_string();
- assert!(expected.is_match(&res));
- }
-
- #[test]
- fn with_line_number() {
- let make_writer = MockMakeWriter::default();
- let subscriber = crate::fmt::Subscriber::builder()
- .with_writer(make_writer.clone())
- .with_line_number(true)
- .with_level(false)
- .with_ansi(false)
- .with_timer(MockTime);
-
- let expected =
- Regex::new("^fake time tracing_subscriber::fmt::format::test: [0-9]+: hello\n$")
- .unwrap();
- let _default = set_default(&subscriber.into());
- tracing::info!("hello");
- let res = make_writer.get_string();
- assert!(expected.is_match(&res));
- }
-
- #[test]
- fn with_filename() {
- let make_writer = MockMakeWriter::default();
- let subscriber = crate::fmt::Subscriber::builder()
- .with_writer(make_writer.clone())
- .with_file(true)
- .with_level(false)
- .with_ansi(false)
- .with_timer(MockTime);
- let expected = &format!(
- "fake time tracing_subscriber::fmt::format::test: {}: hello\n",
- current_path(),
- );
- assert_info_hello(subscriber, make_writer, expected);
- }
-
- #[test]
- fn with_thread_ids() {
- let make_writer = MockMakeWriter::default();
- let subscriber = crate::fmt::Subscriber::builder()
- .with_writer(make_writer.clone())
- .with_thread_ids(true)
- .with_ansi(false)
- .with_timer(MockTime);
- let expected =
- "fake time INFO ThreadId(NUMERIC) tracing_subscriber::fmt::format::test: hello\n";
-
- assert_info_hello_ignore_numeric(subscriber, make_writer, expected);
- }
-
- #[test]
- fn pretty_default() {
- let make_writer = MockMakeWriter::default();
- let subscriber = crate::fmt::Subscriber::builder()
- .pretty()
- .with_writer(make_writer.clone())
- .with_ansi(false)
- .with_timer(MockTime);
- let expected = format!(
- r#" fake time INFO tracing_subscriber::fmt::format::test: hello
- at {}:NUMERIC
-
-"#,
- file!()
- );
-
- assert_info_hello_ignore_numeric(subscriber, make_writer, &expected)
- }
-
- fn assert_info_hello(subscriber: impl Into<Dispatch>, buf: MockMakeWriter, expected: &str) {
- let _default = set_default(&subscriber.into());
- tracing::info!("hello");
- let result = buf.get_string();
-
- assert_eq!(expected, result)
- }
-
- // When numeric characters are used they often form a non-deterministic value as they usually represent things like a thread id or line number.
- // This assert method should be used when non-deterministic numeric characters are present.
- fn assert_info_hello_ignore_numeric(
- subscriber: impl Into<Dispatch>,
- buf: MockMakeWriter,
- expected: &str,
- ) {
- let _default = set_default(&subscriber.into());
- tracing::info!("hello");
-
- let regex = Regex::new("[0-9]+").unwrap();
- let result = buf.get_string();
- let result_cleaned = regex.replace_all(&result, "NUMERIC");
-
- assert_eq!(expected, result_cleaned)
- }
-
fn test_overridden_parents<T>(
expected: &str,
builder: crate::fmt::SubscriberBuilder<DefaultFields, Format<T>>,
@@ -1922,14 +1606,14 @@ pub(super) mod test {
T: Send + Sync + 'static,
{
let make_writer = MockMakeWriter::default();
- let subscriber = builder
+ let collector = builder
.with_writer(make_writer.clone())
.with_level(false)
.with_ansi(false)
.with_timer(MockTime)
.finish();
- with_default(subscriber, || {
+ with_default(collector, || {
let span1 = tracing::info_span!("span1", span = 1);
let span2 = tracing::info_span!(parent: &span1, "span2", span = 2);
tracing::info!(parent: &span2, "hello");
@@ -1975,21 +1659,6 @@ pub(super) mod test {
mod default {
use super::*;
-
- #[test]
- fn with_thread_ids() {
- let make_writer = MockMakeWriter::default();
- let subscriber = crate::fmt::Subscriber::builder()
- .with_writer(make_writer.clone())
- .with_thread_ids(true)
- .with_ansi(false)
- .with_timer(MockTime);
- let expected =
- "fake time INFO ThreadId(NUMERIC) tracing_subscriber::fmt::format::test: hello\n";
-
- assert_info_hello_ignore_numeric(subscriber, make_writer, expected);
- }
-
#[cfg(feature = "ansi")]
#[test]
fn with_ansi_true() {
@@ -2079,26 +1748,6 @@ pub(super) mod test {
}
}
- mod pretty {
- use super::*;
-
- #[test]
- fn pretty_default() {
- let make_writer = MockMakeWriter::default();
- let subscriber = crate::fmt::Subscriber::builder()
- .pretty()
- .with_writer(make_writer.clone())
- .with_ansi(false)
- .with_timer(MockTime);
- let expected = format!(
- " fake time INFO tracing_subscriber::fmt::format::test: hello\n at {}:NUMERIC\n\n",
- file!()
- );
-
- assert_info_hello_ignore_numeric(subscriber, make_writer, &expected)
- }
- }
-
#[test]
fn format_nanos() {
fn fmt(t: u64) -> String {
@@ -2146,16 +1795,4 @@ pub(super) mod test {
assert!(!f.contains(FmtSpan::EXIT));
assert!(f.contains(FmtSpan::CLOSE));
}
-
- /// Returns the test's module path.
- fn current_path() -> String {
- Path::new("tracing-subscriber")
- .join("src")
- .join("fmt")
- .join("format")
- .join("mod.rs")
- .to_str()
- .expect("path must not contain invalid unicode")
- .to_owned()
- }
}
diff --git a/vendor/tracing-subscriber/src/fmt/format/pretty.rs b/vendor/tracing-subscriber-0.3.3/src/fmt/format/pretty.rs
index a50d08ba7..3e47e2d93 100644
--- a/vendor/tracing-subscriber/src/fmt/format/pretty.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/fmt/format/pretty.rs
@@ -17,84 +17,6 @@ use tracing_log::NormalizeEvent;
use ansi_term::{Colour, Style};
/// An excessively pretty, human-readable event formatter.
-///
-/// Unlike the [`Full`], [`Compact`], and [`Json`] formatters, this is a
-/// multi-line output format. Each individual event may output multiple lines of
-/// text.
-///
-/// # Example Output
-///
-/// <pre><font color="#4E9A06"><b>:;</b></font> <font color="#4E9A06">cargo</font> run --example fmt-pretty
-/// <font color="#4E9A06"><b> Finished</b></font> dev [unoptimized + debuginfo] target(s) in 0.08s
-/// <font color="#4E9A06"><b> Running</b></font> `target/debug/examples/fmt-pretty`
-/// 2022-02-15T18:44:24.535324Z <font color="#4E9A06"> INFO</font> <font color="#4E9A06"><b>fmt_pretty</b></font><font color="#4E9A06">: preparing to shave yaks, </font><font color="#4E9A06"><b>number_of_yaks</b></font><font color="#4E9A06">: 3</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt-pretty.rs:16 <font color="#AAAAAA"><i>on</i></font> main
-///
-/// 2022-02-15T18:44:24.535403Z <font color="#4E9A06"> INFO</font> <font color="#4E9A06"><b>fmt_pretty::yak_shave</b></font><font color="#4E9A06">: shaving yaks</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:41 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535442Z <font color="#75507B">TRACE</font> <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: hello! I&apos;m gonna shave a yak, </font><font color="#75507B"><b>excitement</b></font><font color="#75507B">: &quot;yay!&quot;</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:16 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 1
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535469Z <font color="#75507B">TRACE</font> <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: yak shaved successfully</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:25 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 1
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535502Z <font color="#3465A4">DEBUG</font> <font color="#3465A4"><b>yak_events</b></font><font color="#3465A4">: </font><font color="#3465A4"><b>yak</b></font><font color="#3465A4">: 1, </font><font color="#3465A4"><b>shaved</b></font><font color="#3465A4">: true</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:46 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535524Z <font color="#75507B">TRACE</font> <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: </font><font color="#75507B"><b>yaks_shaved</b></font><font color="#75507B">: 1</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:55 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535551Z <font color="#75507B">TRACE</font> <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: hello! I&apos;m gonna shave a yak, </font><font color="#75507B"><b>excitement</b></font><font color="#75507B">: &quot;yay!&quot;</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:16 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 2
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535573Z <font color="#75507B">TRACE</font> <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: yak shaved successfully</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:25 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 2
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535600Z <font color="#3465A4">DEBUG</font> <font color="#3465A4"><b>yak_events</b></font><font color="#3465A4">: </font><font color="#3465A4"><b>yak</b></font><font color="#3465A4">: 2, </font><font color="#3465A4"><b>shaved</b></font><font color="#3465A4">: true</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:46 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535618Z <font color="#75507B">TRACE</font> <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: </font><font color="#75507B"><b>yaks_shaved</b></font><font color="#75507B">: 2</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:55 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535644Z <font color="#75507B">TRACE</font> <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: hello! I&apos;m gonna shave a yak, </font><font color="#75507B"><b>excitement</b></font><font color="#75507B">: &quot;yay!&quot;</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:16 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 3
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535670Z <font color="#C4A000"> WARN</font> <font color="#C4A000"><b>fmt_pretty::yak_shave</b></font><font color="#C4A000">: could not locate yak</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:18 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 3
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535698Z <font color="#3465A4">DEBUG</font> <font color="#3465A4"><b>yak_events</b></font><font color="#3465A4">: </font><font color="#3465A4"><b>yak</b></font><font color="#3465A4">: 3, </font><font color="#3465A4"><b>shaved</b></font><font color="#3465A4">: false</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:46 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535720Z <font color="#CC0000">ERROR</font> <font color="#CC0000"><b>fmt_pretty::yak_shave</b></font><font color="#CC0000">: failed to shave yak, </font><font color="#CC0000"><b>yak</b></font><font color="#CC0000">: 3, </font><font color="#CC0000"><b>error</b></font><font color="#CC0000">: missing yak, </font><font color="#CC0000"><b>error.sources</b></font><font color="#CC0000">: [out of space, out of cash]</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:51 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535742Z <font color="#75507B">TRACE</font> <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: </font><font color="#75507B"><b>yaks_shaved</b></font><font color="#75507B">: 2</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:55 <font color="#AAAAAA"><i>on</i></font> main
-/// <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
-///
-/// 2022-02-15T18:44:24.535765Z <font color="#4E9A06"> INFO</font> <font color="#4E9A06"><b>fmt_pretty</b></font><font color="#4E9A06">: yak shaving completed, </font><font color="#4E9A06"><b>all_yaks_shaved</b></font><font color="#4E9A06">: false</font>
-/// <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt-pretty.rs:19 <font color="#AAAAAA"><i>on</i></font> main
-/// </pre>
#[derive(Debug, Clone, Eq, PartialEq)]
pub struct Pretty {
display_location: bool,
@@ -154,10 +76,6 @@ impl Pretty {
/// Sets whether the event's source code location is displayed.
///
/// This defaults to `true`.
- #[deprecated(
- since = "0.3.6",
- note = "all formatters now support configurable source locations. Use `Format::with_source_location` instead."
- )]
pub fn with_source_location(self, display_location: bool) -> Self {
Self {
display_location,
@@ -166,6 +84,17 @@ impl Pretty {
}
}
+impl<T> Format<Pretty, T> {
+ /// Sets whether or not the source code location from which an event
+ /// originated is displayed.
+ ///
+ /// This defaults to `true`.
+ pub fn with_source_location(mut self, display_location: bool) -> Self {
+ self.format = self.format.with_source_location(display_location);
+ self
+ }
+}
+
impl<C, N, T> FormatEvent<C, N> for Format<Pretty, T>
where
C: Subscriber + for<'a> LookupSpan<'a>,
@@ -218,37 +147,12 @@ where
};
write!(
writer,
- "{}{}{}:",
+ "{}{}{}: ",
target_style.prefix(),
meta.target(),
target_style.infix(style)
)?;
}
- let line_number = if self.display_line_number {
- meta.line()
- } else {
- None
- };
-
- // If the file name is disabled, format the line number right after the
- // target. Otherwise, if we also display the file, it'll go on a
- // separate line.
- if let (Some(line_number), false, true) = (
- line_number,
- self.display_filename,
- self.format.display_location,
- ) {
- write!(
- writer,
- "{}{}{}:",
- style.prefix(),
- line_number,
- style.infix(style)
- )?;
- }
-
- writer.write_char(' ')?;
-
let mut v = PrettyVisitor::new(writer.by_ref(), true).with_style(style);
event.record(&mut v);
v.finish()?;
@@ -260,21 +164,20 @@ where
Style::new()
};
let thread = self.display_thread_name || self.display_thread_id;
-
- if let (Some(file), true, true) = (
- meta.file(),
- self.format.display_location,
- self.display_filename,
- ) {
- write!(writer, " {} {}", dimmed.paint("at"), file,)?;
-
- if let Some(line) = line_number {
- write!(writer, ":{}", line)?;
- }
- writer.write_char(if thread { ' ' } else { '\n' })?;
+ if let (true, Some(file), Some(line)) =
+ (self.format.display_location, meta.file(), meta.line())
+ {
+ write!(
+ writer,
+ " {} {}:{}{}",
+ dimmed.paint("at"),
+ file,
+ line,
+ dimmed.paint(if thread { " " } else { "\n" })
+ )?;
} else if thread {
write!(writer, " ")?;
- };
+ }
if thread {
write!(writer, "{} ", dimmed.paint("on"))?;
@@ -283,12 +186,13 @@ where
if let Some(name) = thread.name() {
write!(writer, "{}", name)?;
if self.display_thread_id {
- writer.write_char(' ')?;
+ write!(writer, " ({:?})", thread.id())?;
}
+ } else if !self.display_thread_id {
+ write!(writer, " {:?}", thread.id())?;
}
- }
- if self.display_thread_id {
- write!(writer, "{:?}", thread.id())?;
+ } else if self.display_thread_id {
+ write!(writer, " {:?}", thread.id())?;
}
writer.write_char('\n')?;
}
@@ -336,7 +240,7 @@ where
impl<'writer> FormatFields<'writer> for Pretty {
fn format_fields<R: RecordFields>(&self, writer: Writer<'writer>, fields: R) -> fmt::Result {
- let mut v = PrettyVisitor::new(writer, true);
+ let mut v = PrettyVisitor::new(writer, false);
fields.record(&mut v);
v.finish()
}
diff --git a/vendor/tracing-subscriber/src/fmt/mod.rs b/vendor/tracing-subscriber-0.3.3/src/fmt/mod.rs
index 3c6a6ac40..d5deb8f0c 100644
--- a/vendor/tracing-subscriber/src/fmt/mod.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/fmt/mod.rs
@@ -13,12 +13,10 @@
//!
//! ```toml
//! [dependencies]
-//! tracing-subscriber = "0.3"
+//! tracing-subscriber = "0.2"
//! ```
//!
-//! *Compiler support: [requires `rustc` 1.49+][msrv]*
-//!
-//! [msrv]: super#supported-rust-versions
+//! *Compiler support: requires rustc 1.39+*
//!
//! Add the following to your executable to initialize the default subscriber:
//! ```rust
@@ -70,25 +68,132 @@
//!
//! * [`format::Full`]: The default formatter. This emits human-readable,
//! single-line logs for each event that occurs, with the current span context
-//! displayed before the formatted representation of the event. See
-//! [here](format::Full#example-output) for sample output.
+//! displayed before the formatted representation of the event.
//!
-//! * [`format::Compact`]: A variant of the default formatter, optimized for
-//! short line lengths. Fields from the current span context are appended to
-//! the fields of the formatted event. See
-//! [here](format::Compact#example-output) for sample output.
+//! For example:
+//! <pre><font color="#4E9A06"><b> Finished</b></font> dev [unoptimized + debuginfo] target(s) in 1.59s
+//! <font color="#4E9A06"><b> Running</b></font> `target/debug/examples/fmt`
+//! <font color="#AAAAAA">Oct 24 12:55:47.814 </font><font color="#4E9A06"> INFO</font> fmt: preparing to shave yaks number_of_yaks=3
+//! <font color="#AAAAAA">Oct 24 12:55:47.814 </font><font color="#4E9A06"> INFO</font> <b>shaving_yaks{</b>yaks=3<b>}</b>: fmt::yak_shave: shaving yaks
+//! <font color="#AAAAAA">Oct 24 12:55:47.814 </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b>yaks=3<b>}</b>:<b>shave{</b>yak=1<b>}</b>: fmt::yak_shave: hello! I&apos;m gonna shave a yak excitement=&quot;yay!&quot;
+//! <font color="#AAAAAA">Oct 24 12:55:47.814 </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b>yaks=3<b>}</b>:<b>shave{</b>yak=1<b>}</b>: fmt::yak_shave: yak shaved successfully
+//! <font color="#AAAAAA">Oct 24 12:55:47.814 </font><font color="#3465A4">DEBUG</font> <b>shaving_yaks{</b>yaks=3<b>}</b>: yak_events: yak=1 shaved=true
+//! <font color="#AAAAAA">Oct 24 12:55:47.814 </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b>yaks=3<b>}</b>: fmt::yak_shave: yaks_shaved=1
+//! <font color="#AAAAAA">Oct 24 12:55:47.815 </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b>yaks=3<b>}</b>:<b>shave{</b>yak=2<b>}</b>: fmt::yak_shave: hello! I&apos;m gonna shave a yak excitement=&quot;yay!&quot;
+//! <font color="#AAAAAA">Oct 24 12:55:47.815 </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b>yaks=3<b>}</b>:<b>shave{</b>yak=2<b>}</b>: fmt::yak_shave: yak shaved successfully
+//! <font color="#AAAAAA">Oct 24 12:55:47.815 </font><font color="#3465A4">DEBUG</font> <b>shaving_yaks{</b>yaks=3<b>}</b>: yak_events: yak=2 shaved=true
+//! <font color="#AAAAAA">Oct 24 12:55:47.815 </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b>yaks=3<b>}</b>: fmt::yak_shave: yaks_shaved=2
+//! <font color="#AAAAAA">Oct 24 12:55:47.815 </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b>yaks=3<b>}</b>:<b>shave{</b>yak=3<b>}</b>: fmt::yak_shave: hello! I&apos;m gonna shave a yak excitement=&quot;yay!&quot;
+//! <font color="#AAAAAA">Oct 24 12:55:47.815 </font><font color="#C4A000"> WARN</font> <b>shaving_yaks{</b>yaks=3<b>}</b>:<b>shave{</b>yak=3<b>}</b>: fmt::yak_shave: could not locate yak
+//! <font color="#AAAAAA">Oct 24 12:55:47.815 </font><font color="#3465A4">DEBUG</font> <b>shaving_yaks{</b>yaks=3<b>}</b>: yak_events: yak=3 shaved=false
+//! <font color="#AAAAAA">Oct 24 12:55:47.815 </font><font color="#CC0000">ERROR</font> <b>shaving_yaks{</b>yaks=3<b>}</b>: fmt::yak_shave: failed to shave yak yak=3 error=missing yak
+//! <font color="#AAAAAA">Oct 24 12:55:47.815 </font><font color="#75507B">TRACE</font> <b>shaving_yaks{</b>yaks=3<b>}</b>: fmt::yak_shave: yaks_shaved=2
+//! <font color="#AAAAAA">Oct 24 12:55:47.815 </font><font color="#4E9A06"> INFO</font> fmt: yak shaving completed all_yaks_shaved=false
+//! </pre>
//!
//! * [`format::Pretty`]: Emits excessively pretty, multi-line logs, optimized
//! for human readability. This is primarily intended to be used in local
//! development and debugging, or for command-line applications, where
//! automated analysis and compact storage of logs is less of a priority than
-//! readability and visual appeal. See [here](format::Pretty#example-output)
-//! for sample output.
+//! readability and visual appeal.
+//!
+//! For example:
+//! <pre><font color="#4E9A06"><b> Finished</b></font> dev [unoptimized + debuginfo] target(s) in 1.61s
+//! <font color="#4E9A06"><b> Running</b></font> `target/debug/examples/fmt-pretty`
+//! Oct 24 12:57:29.386 <font color="#4E9A06"><b>fmt_pretty</b></font><font color="#4E9A06">: preparing to shave yaks, </font><font color="#4E9A06"><b>number_of_yaks</b></font><font color="#4E9A06">: 3</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt-pretty.rs:16<font color="#AAAAAA"><i> on</i></font> main
+//!
+//! Oct 24 12:57:29.386 <font color="#4E9A06"><b>fmt_pretty::yak_shave</b></font><font color="#4E9A06">: shaving yaks</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:38<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: hello! I&apos;m gonna shave a yak, </font><font color="#75507B"><b>excitement</b></font><font color="#75507B">: &quot;yay!&quot;</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:14<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 1
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: yak shaved successfully</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:22<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 1
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#3465A4"><b>yak_events</b></font><font color="#3465A4">: </font><font color="#3465A4"><b>yak</b></font><font color="#3465A4">: 1, </font><font color="#3465A4"><b>shaved</b></font><font color="#3465A4">: true</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:43<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: </font><font color="#75507B"><b>yaks_shaved</b></font><font color="#75507B">: 1</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:52<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: hello! I&apos;m gonna shave a yak, </font><font color="#75507B"><b>excitement</b></font><font color="#75507B">: &quot;yay!&quot;</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:14<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 2
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: yak shaved successfully</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:22<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 2
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#3465A4"><b>yak_events</b></font><font color="#3465A4">: </font><font color="#3465A4"><b>yak</b></font><font color="#3465A4">: 2, </font><font color="#3465A4"><b>shaved</b></font><font color="#3465A4">: true</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:43<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: </font><font color="#75507B"><b>yaks_shaved</b></font><font color="#75507B">: 2</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:52<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: hello! I&apos;m gonna shave a yak, </font><font color="#75507B"><b>excitement</b></font><font color="#75507B">: &quot;yay!&quot;</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:14<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 3
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#C4A000"><b>fmt_pretty::yak_shave</b></font><font color="#C4A000">: could not locate yak</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:16<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shave</b> <font color="#AAAAAA"><i>with</i></font> <b>yak</b>: 3
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#3465A4"><b>yak_events</b></font><font color="#3465A4">: </font><font color="#3465A4"><b>yak</b></font><font color="#3465A4">: 3, </font><font color="#3465A4"><b>shaved</b></font><font color="#3465A4">: false</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:43<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#CC0000"><b>fmt_pretty::yak_shave</b></font><font color="#CC0000">: failed to shave yak, </font><font color="#CC0000"><b>yak</b></font><font color="#CC0000">: 3, </font><font color="#CC0000"><b>error</b></font><font color="#CC0000">: missing yak</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:48<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#75507B"><b>fmt_pretty::yak_shave</b></font><font color="#75507B">: </font><font color="#75507B"><b>yaks_shaved</b></font><font color="#75507B">: 2</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt/yak_shave.rs:52<font color="#AAAAAA"><i> on</i></font> main
+//! <font color="#AAAAAA"><i>in</i></font> fmt_pretty::yak_shave::<b>shaving_yaks</b> <font color="#AAAAAA"><i>with</i></font> <b>yaks</b>: 3
+//!
+//! Oct 24 12:57:29.387 <font color="#4E9A06"><b>fmt_pretty</b></font><font color="#4E9A06">: yak shaving completed, </font><font color="#4E9A06"><b>all_yaks_shaved</b></font><font color="#4E9A06">: false</font>
+//! <font color="#AAAAAA"><i>at</i></font> examples/examples/fmt-pretty.rs:19<font color="#AAAAAA"><i> on</i></font> main
+//! </pre>
//!
//! * [`format::Json`]: Outputs newline-delimited JSON logs. This is intended
//! for production use with systems where structured logs are consumed as JSON
-//! by analysis and viewing tools. The JSON output is not optimized for human
-//! readability. See [here](format::Json#example-output) for sample output.
+//! by analysis and viewing tools. The JSON output, as seen below, is *not*
+//! optimized for human readability.
+//!
+//! For example:
+//! <pre><font color="#4E9A06"><b> Finished</b></font> dev [unoptimized + debuginfo] target(s) in 1.58s
+//! <font color="#4E9A06"><b> Running</b></font> `target/debug/examples/fmt-json`
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.873&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;preparing to shave yaks&quot;,&quot;number_of_yaks&quot;:3},&quot;target&quot;:&quot;fmt_json&quot;}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.874&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;shaving yaks&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.874&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;hello! I&apos;m gonna shave a yak&quot;,&quot;excitement&quot;:&quot;yay!&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:&quot;1&quot;,&quot;name&quot;:&quot;shave&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.874&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;yak shaved successfully&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:&quot;1&quot;,&quot;name&quot;:&quot;shave&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.874&quot;,&quot;level&quot;:&quot;DEBUG&quot;,&quot;fields&quot;:{&quot;yak&quot;:1,&quot;shaved&quot;:true},&quot;target&quot;:&quot;yak_events&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.874&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;yaks_shaved&quot;:1},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.874&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;hello! I&apos;m gonna shave a yak&quot;,&quot;excitement&quot;:&quot;yay!&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:&quot;2&quot;,&quot;name&quot;:&quot;shave&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.874&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;yak shaved successfully&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:&quot;2&quot;,&quot;name&quot;:&quot;shave&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.874&quot;,&quot;level&quot;:&quot;DEBUG&quot;,&quot;fields&quot;:{&quot;yak&quot;:2,&quot;shaved&quot;:true},&quot;target&quot;:&quot;yak_events&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.874&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;yaks_shaved&quot;:2},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.874&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;hello! I&apos;m gonna shave a yak&quot;,&quot;excitement&quot;:&quot;yay!&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:&quot;3&quot;,&quot;name&quot;:&quot;shave&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.875&quot;,&quot;level&quot;:&quot;WARN&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;could not locate yak&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;},{&quot;yak&quot;:&quot;3&quot;,&quot;name&quot;:&quot;shave&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.875&quot;,&quot;level&quot;:&quot;DEBUG&quot;,&quot;fields&quot;:{&quot;yak&quot;:3,&quot;shaved&quot;:false},&quot;target&quot;:&quot;yak_events&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.875&quot;,&quot;level&quot;:&quot;ERROR&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;failed to shave yak&quot;,&quot;yak&quot;:3,&quot;error&quot;:&quot;missing yak&quot;},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.875&quot;,&quot;level&quot;:&quot;TRACE&quot;,&quot;fields&quot;:{&quot;yaks_shaved&quot;:2},&quot;target&quot;:&quot;fmt_json::yak_shave&quot;,&quot;spans&quot;:[{&quot;yaks&quot;:3,&quot;name&quot;:&quot;shaving_yaks&quot;}]}
+//! {&quot;timestamp&quot;:&quot;Oct 24 13:00:00.875&quot;,&quot;level&quot;:&quot;INFO&quot;,&quot;fields&quot;:{&quot;message&quot;:&quot;yak shaving completed&quot;,&quot;all_yaks_shaved&quot;:false},&quot;target&quot;:&quot;fmt_json&quot;}
+//! </pre>
//!
//! ### Customizing Formatters
//!
@@ -116,7 +221,7 @@
//! .with_thread_names(true) // include the name of the current thread
//! .compact(); // use the `Compact` formatting style.
//!
-//! // Create a `fmt` subscriber that uses our custom event format, and set it
+//! // Create a `fmt` collector that uses our custom event format, and set it
//! // as the default.
//! tracing_subscriber::fmt()
//! .event_format(format)
@@ -163,7 +268,7 @@
//!
//! ### Composing Layers
//!
-//! Composing an [`EnvFilter`] `Layer` and a [format `Layer`][super::fmt::Layer]:
+//! Composing an [`EnvFilter`] `Layer` and a [format `Layer`](../fmt/struct.Layer.html):
//!
//! ```rust
//! use tracing_subscriber::{fmt, EnvFilter};
@@ -181,10 +286,11 @@
//! .init();
//! ```
//!
-//! [`EnvFilter`]: super::filter::EnvFilter
+//! [`EnvFilter`]: ../filter/struct.EnvFilter.html
//! [`env_logger`]: https://docs.rs/env_logger/
-//! [`filter`]: super::filter
-//! [`FmtSubscriber`]: Subscriber
+//! [`filter`]: ../filter/index.html
+//! [`SubscriberBuilder`]: ./struct.SubscriberBuilder.html
+//! [`FmtSubscriber`]: ./struct.Subscriber.html
//! [`Subscriber`]:
//! https://docs.rs/tracing/latest/tracing/trait.Subscriber.html
//! [`tracing`]: https://crates.io/crates/tracing
@@ -203,7 +309,6 @@ pub mod writer;
pub use fmt_layer::{FmtContext, FormattedFields, Layer};
use crate::layer::Layer as _;
-use crate::util::SubscriberInitExt;
use crate::{
filter::LevelFilter,
layer,
@@ -312,7 +417,7 @@ pub struct SubscriberBuilder<
/// ```
///
/// [formatting subscriber]: Subscriber
-/// [`SubscriberBuilder::default()`]: SubscriberBuilder::default
+/// [`SubscriberBuilder::default()`]: SubscriberBuilder::default()
/// [`init`]: SubscriberBuilder::init()
/// [`try_init`]: SubscriberBuilder::try_init()
/// [`finish`]: SubscriberBuilder::finish()
@@ -324,11 +429,10 @@ pub fn fmt() -> SubscriberBuilder {
/// Returns a new [formatting layer] that can be [composed] with other layers to
/// construct a [`Subscriber`].
///
-/// This is a shorthand for the equivalent [`Layer::default()`] function.
+/// This is a shorthand for the equivalent [`Layer::default`] function.
///
/// [formatting layer]: Layer
/// [composed]: crate::layer
-/// [`Layer::default()`]: Layer::default
#[cfg_attr(docsrs, doc(cfg(all(feature = "fmt", feature = "std"))))]
pub fn layer<S>() -> Layer<S> {
Layer::default()
@@ -340,8 +444,8 @@ impl Subscriber {
///
/// This can be overridden with the [`SubscriberBuilder::with_max_level`] method.
///
- /// [verbosity level]: tracing_core::Level
- /// [`SubscriberBuilder::with_max_level`]: SubscriberBuilder::with_max_level
+ /// [verbosity level]: https://docs.rs/tracing-core/0.1.5/tracing_core/struct.Level.html
+ /// [`SubscriberBuilder::with_max_level`]: struct.SubscriberBuilder.html#method.with_max_level
pub const DEFAULT_MAX_LEVEL: LevelFilter = LevelFilter::INFO;
/// Returns a new `SubscriberBuilder` for configuring a format subscriber.
@@ -398,11 +502,6 @@ where
}
#[inline]
- fn event_enabled(&self, event: &Event<'_>) -> bool {
- self.inner.event_enabled(event)
- }
-
- #[inline]
fn event(&self, event: &Event<'_>) {
self.inner.event(event);
}
@@ -602,7 +701,7 @@ where
/// `Layer`s added to this subscriber.
///
/// [lifecycle]: https://docs.rs/tracing/latest/tracing/span/index.html#the-span-lifecycle
- /// [time]: SubscriberBuilder::without_time()
+ /// [time]: #method.without_time
pub fn with_span_events(self, kind: format::FmtSpan) -> Self {
SubscriberBuilder {
inner: self.inner.with_span_events(kind),
@@ -631,34 +730,6 @@ where
}
}
- /// Sets whether or not an event's [source code file path][file] is
- /// displayed.
- ///
- /// [file]: tracing_core::Metadata::file
- pub fn with_file(
- self,
- display_filename: bool,
- ) -> SubscriberBuilder<N, format::Format<L, T>, F, W> {
- SubscriberBuilder {
- inner: self.inner.with_file(display_filename),
- ..self
- }
- }
-
- /// Sets whether or not an event's [source code line number][line] is
- /// displayed.
- ///
- /// [line]: tracing_core::Metadata::line
- pub fn with_line_number(
- self,
- display_line_number: bool,
- ) -> SubscriberBuilder<N, format::Format<L, T>, F, W> {
- SubscriberBuilder {
- inner: self.inner.with_line_number(display_line_number),
- ..self
- }
- }
-
/// Sets whether or not an event's level is displayed.
pub fn with_level(
self,
@@ -671,9 +742,9 @@ where
}
/// Sets whether or not the [name] of the current thread is displayed
- /// when formatting events.
+ /// when formatting events
///
- /// [name]: std::thread#naming-threads
+ /// [name]: https://doc.rust-lang.org/stable/std/thread/index.html#naming-threads
pub fn with_thread_names(
self,
display_thread_names: bool,
@@ -685,9 +756,9 @@ where
}
/// Sets whether or not the [thread ID] of the current thread is displayed
- /// when formatting events.
+ /// when formatting events
///
- /// [thread ID]: std::thread::ThreadId
+ /// [thread ID]: https://doc.rust-lang.org/stable/std/thread/struct.ThreadId.html
pub fn with_thread_ids(
self,
display_thread_ids: bool,
@@ -725,7 +796,7 @@ where
/// Sets the subscriber being built to use a JSON formatter.
///
- /// See [`format::Json`][super::fmt::format::Json]
+ /// See [`format::Json`](../fmt/format/struct.Json.html)
#[cfg(feature = "json")]
#[cfg_attr(docsrs, doc(cfg(feature = "json")))]
pub fn json(
@@ -746,7 +817,7 @@ where
impl<T, F, W> SubscriberBuilder<format::JsonFields, format::Format<format::Json, T>, F, W> {
/// Sets the json subscriber being built to flatten event metadata.
///
- /// See [`format::Json`][super::fmt::format::Json]
+ /// See [`format::Json`](../fmt/format/struct.Json.html)
pub fn flatten_event(
self,
flatten_event: bool,
@@ -760,7 +831,7 @@ impl<T, F, W> SubscriberBuilder<format::JsonFields, format::Format<format::Json,
/// Sets whether or not the JSON subscriber being built will include the current span
/// in formatted events.
///
- /// See [`format::Json`][super::fmt::format::Json]
+ /// See [`format::Json`](../fmt/format/struct.Json.html)
pub fn with_current_span(
self,
display_current_span: bool,
@@ -774,7 +845,7 @@ impl<T, F, W> SubscriberBuilder<format::JsonFields, format::Format<format::Json,
/// Sets whether or not the JSON subscriber being built will include a list (from
/// root to leaf) of all currently entered spans in formatted events.
///
- /// See [`format::Json`][super::fmt::format::Json]
+ /// See [`format::Json`](../fmt/format/struct.Json.html)
pub fn with_span_list(
self,
display_span_list: bool,
@@ -820,7 +891,7 @@ where
}
impl<N, E, F, W> SubscriberBuilder<N, E, F, W> {
- /// Sets the field formatter that the subscriber being built will use to record
+ /// Sets the Visitor that the subscriber being built will use to record
/// fields.
///
/// For example:
@@ -896,8 +967,8 @@ impl<N, E, F, W> SubscriberBuilder<N, E, F, W> {
/// .try_init()?;
/// # Ok(())}
/// ```
- /// [`EnvFilter`]: super::filter::EnvFilter
- /// [`with_max_level`]: SubscriberBuilder::with_max_level()
+ /// [`EnvFilter`]: ../filter/struct.EnvFilter.html
+ /// [`with_max_level`]: #method.with_max_level
#[cfg(feature = "env-filter")]
#[cfg_attr(docsrs, doc(cfg(feature = "env-filter")))]
pub fn with_env_filter(
@@ -918,7 +989,7 @@ impl<N, E, F, W> SubscriberBuilder<N, E, F, W> {
/// subscriber.
///
/// If the max level has already been set, or a [`EnvFilter`] was added by
- /// [`with_env_filter`], this replaces that configuration with the new
+ /// [`with_filter`], this replaces that configuration with the new
/// maximum level.
///
/// # Examples
@@ -940,9 +1011,9 @@ impl<N, E, F, W> SubscriberBuilder<N, E, F, W> {
/// .with_max_level(LevelFilter::OFF)
/// .finish();
/// ```
- /// [verbosity level]: tracing_core::Level
- /// [`EnvFilter`]: struct@crate::filter::EnvFilter
- /// [`with_env_filter`]: fn@Self::with_env_filter
+ /// [verbosity level]: https://docs.rs/tracing-core/0.1.5/tracing_core/struct.Level.html
+ /// [`EnvFilter`]: ../filter/struct.EnvFilter.html
+ /// [`with_filter`]: #method.with_filter
pub fn with_max_level(
self,
filter: impl Into<LevelFilter>,
@@ -954,26 +1025,8 @@ impl<N, E, F, W> SubscriberBuilder<N, E, F, W> {
}
}
- /// Sets the [event formatter][`FormatEvent`] that the subscriber being built
- /// will use to format events that occur.
- ///
- /// The event formatter may be any type implementing the [`FormatEvent`]
- /// trait, which is implemented for all functions taking a [`FmtContext`], a
- /// [`Writer`], and an [`Event`].
- ///
- /// # Examples
- ///
- /// Setting a type implementing [`FormatEvent`] as the formatter:
- ///
- /// ```rust
- /// use tracing_subscriber::fmt::format;
- ///
- /// let subscriber = tracing_subscriber::fmt()
- /// .event_format(format().compact())
- /// .finish();
- /// ```
- ///
- /// [`Writer`]: struct@self::format::Writer
+ /// Sets the function that the subscriber being built should use to format
+ /// events that occur.
pub fn event_format<E2>(self, fmt_event: E2) -> SubscriberBuilder<N, E2, F, W>
where
E2: FormatEvent<Registry, N> + 'static,
@@ -1000,6 +1053,8 @@ impl<N, E, F, W> SubscriberBuilder<N, E, F, W> {
/// .with_writer(io::stderr)
/// .init();
/// ```
+ ///
+ /// [`MakeWriter`]: trait.MakeWriter.html
pub fn with_writer<W2>(self, make_writer: W2) -> SubscriberBuilder<N, E, F, W2>
where
W2: for<'writer> MakeWriter<'writer> + 'static,
@@ -1033,89 +1088,13 @@ impl<N, E, F, W> SubscriberBuilder<N, E, F, W> {
///
/// [capturing]:
/// https://doc.rust-lang.org/book/ch11-02-running-tests.html#showing-function-output
- /// [`TestWriter`]: writer::TestWriter
+ /// [`TestWriter`]: writer/struct.TestWriter.html
pub fn with_test_writer(self) -> SubscriberBuilder<N, E, F, TestWriter> {
SubscriberBuilder {
filter: self.filter,
inner: self.inner.with_writer(TestWriter::default()),
}
}
-
- /// Updates the event formatter by applying a function to the existing event formatter.
- ///
- /// This sets the event formatter that the subscriber being built will use to record fields.
- ///
- /// # Examples
- ///
- /// Updating an event formatter:
- ///
- /// ```rust
- /// let subscriber = tracing_subscriber::fmt()
- /// .map_event_format(|e| e.compact())
- /// .finish();
- /// ```
- pub fn map_event_format<E2>(self, f: impl FnOnce(E) -> E2) -> SubscriberBuilder<N, E2, F, W>
- where
- E2: FormatEvent<Registry, N> + 'static,
- N: for<'writer> FormatFields<'writer> + 'static,
- W: for<'writer> MakeWriter<'writer> + 'static,
- {
- SubscriberBuilder {
- filter: self.filter,
- inner: self.inner.map_event_format(f),
- }
- }
-
- /// Updates the field formatter by applying a function to the existing field formatter.
- ///
- /// This sets the field formatter that the subscriber being built will use to record fields.
- ///
- /// # Examples
- ///
- /// Updating a field formatter:
- ///
- /// ```rust
- /// use tracing_subscriber::field::MakeExt;
- /// let subscriber = tracing_subscriber::fmt()
- /// .map_fmt_fields(|f| f.debug_alt())
- /// .finish();
- /// ```
- pub fn map_fmt_fields<N2>(self, f: impl FnOnce(N) -> N2) -> SubscriberBuilder<N2, E, F, W>
- where
- N2: for<'writer> FormatFields<'writer> + 'static,
- {
- SubscriberBuilder {
- filter: self.filter,
- inner: self.inner.map_fmt_fields(f),
- }
- }
-
- /// Updates the [`MakeWriter`] by applying a function to the existing [`MakeWriter`].
- ///
- /// This sets the [`MakeWriter`] that the subscriber being built will use to write events.
- ///
- /// # Examples
- ///
- /// Redirect output to stderr if level is <= WARN:
- ///
- /// ```rust
- /// use tracing::Level;
- /// use tracing_subscriber::fmt::{self, writer::MakeWriterExt};
- ///
- /// let stderr = std::io::stderr.with_max_level(Level::WARN);
- /// let layer = tracing_subscriber::fmt()
- /// .map_writer(move |w| stderr.or_else(w))
- /// .finish();
- /// ```
- pub fn map_writer<W2>(self, f: impl FnOnce(W) -> W2) -> SubscriberBuilder<N, E, F, W2>
- where
- W2: for<'writer> MakeWriter<'writer> + 'static,
- {
- SubscriberBuilder {
- filter: self.filter,
- inner: self.inner.map_writer(f),
- }
- }
}
/// Install a global tracing subscriber that listens for events and
@@ -1142,44 +1121,15 @@ impl<N, E, F, W> SubscriberBuilder<N, E, F, W> {
///
/// [`LogTracer`]:
/// https://docs.rs/tracing-log/0.1.0/tracing_log/struct.LogTracer.html
-/// [`RUST_LOG` environment variable]: crate::filter::EnvFilter::DEFAULT_ENV
+/// [`RUST_LOG` environment variable]:
+/// ../filter/struct.EnvFilter.html#associatedconstant.DEFAULT_ENV
pub fn try_init() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
let builder = Subscriber::builder();
#[cfg(feature = "env-filter")]
let builder = builder.with_env_filter(crate::EnvFilter::from_default_env());
- // If `env-filter` is disabled, remove the default max level filter from the
- // subscriber; it will be added to the `Targets` filter instead if no filter
- // is set in `RUST_LOG`.
- // Replacing the default `LevelFilter` with an `EnvFilter` would imply this,
- // but we can't replace the builder's filter with a `Targets` filter yet.
- #[cfg(not(feature = "env-filter"))]
- let builder = builder.with_max_level(LevelFilter::TRACE);
-
- let subscriber = builder.finish();
- #[cfg(not(feature = "env-filter"))]
- let subscriber = {
- use crate::{filter::Targets, layer::SubscriberExt};
- use std::{env, str::FromStr};
- let targets = match env::var("RUST_LOG") {
- Ok(var) => Targets::from_str(&var)
- .map_err(|e| {
- eprintln!("Ignoring `RUST_LOG={:?}`: {}", var, e);
- })
- .unwrap_or_default(),
- Err(env::VarError::NotPresent) => {
- Targets::new().with_default(Subscriber::DEFAULT_MAX_LEVEL)
- }
- Err(e) => {
- eprintln!("Ignoring `RUST_LOG`: {}", e);
- Targets::new().with_default(Subscriber::DEFAULT_MAX_LEVEL)
- }
- };
- subscriber.with(targets)
- };
-
- subscriber.try_init().map_err(Into::into)
+ builder.try_init()
}
/// Install a global tracing subscriber that listens for events and
@@ -1198,7 +1148,8 @@ pub fn try_init() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
/// Panics if the initialization was unsuccessful, likely because a
/// global subscriber was already installed by another call to `try_init`.
///
-/// [`RUST_LOG` environment variable]: crate::filter::EnvFilter::DEFAULT_ENV
+/// [`RUST_LOG` environment variable]:
+/// ../filter/struct.EnvFilter.html#associatedconstant.DEFAULT_ENV
pub fn init() {
try_init().expect("Unable to install global subscriber")
}
diff --git a/vendor/tracing-subscriber/src/fmt/time/datetime.rs b/vendor/tracing-subscriber-0.3.3/src/fmt/time/datetime.rs
index 531331687..531331687 100644
--- a/vendor/tracing-subscriber/src/fmt/time/datetime.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/fmt/time/datetime.rs
diff --git a/vendor/tracing-subscriber/src/fmt/time/mod.rs b/vendor/tracing-subscriber-0.3.3/src/fmt/time/mod.rs
index e5b7c83b0..621df16e4 100644
--- a/vendor/tracing-subscriber/src/fmt/time/mod.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/fmt/time/mod.rs
@@ -12,13 +12,9 @@ mod time_crate;
pub use time_crate::UtcTime;
#[cfg(feature = "local-time")]
-#[cfg_attr(docsrs, doc(cfg(unsound_local_offset, feature = "local-time")))]
+#[cfg_attr(docsrs, doc(cfg(feature = "local-time")))]
pub use time_crate::LocalTime;
-#[cfg(feature = "time")]
-#[cfg_attr(docsrs, doc(cfg(feature = "time")))]
-pub use time_crate::OffsetTime;
-
/// A type that can measure and format the current time.
///
/// This trait is used by `Format` to include a timestamp with each `Event` when it is logged.
@@ -30,7 +26,7 @@ pub use time_crate::OffsetTime;
///
/// The full list of provided implementations can be found in [`time`].
///
-/// [`time`]: self
+/// [`time`]: ./index.html
pub trait FormatTime {
/// Measure and write out the current time.
///
diff --git a/vendor/tracing-subscriber-0.3.3/src/fmt/time/time_crate.rs b/vendor/tracing-subscriber-0.3.3/src/fmt/time/time_crate.rs
new file mode 100644
index 000000000..64d274365
--- /dev/null
+++ b/vendor/tracing-subscriber-0.3.3/src/fmt/time/time_crate.rs
@@ -0,0 +1,276 @@
+use crate::fmt::{format::Writer, time::FormatTime, writer::WriteAdaptor};
+use std::fmt;
+use time::{format_description::well_known, formatting::Formattable, OffsetDateTime};
+
+/// Formats the current [local time] using a [formatter] from the [`time` crate].
+///
+/// To format the current [UTC time] instead, use the [`UtcTime`] type.
+///
+/// [local time]: https://docs.rs/time/0.3/time/struct.OffsetDateTime.html#method.now_local
+/// [UTC time]: https://docs.rs/time/0.3/time/struct.OffsetDateTime.html#method.now_utc
+/// [formatter]: https://docs.rs/time/0.3/time/formatting/trait.Formattable.html
+/// [`time` crate]: https://docs.rs/time/0.3/time/
+#[derive(Clone, Debug)]
+#[cfg_attr(docsrs, doc(cfg(all(feature = "time", feature = "local-time"))))]
+#[cfg(feature = "local-time")]
+pub struct LocalTime<F> {
+ format: F,
+}
+
+/// Formats the current [UTC time] using a [formatter] from the [`time` crate].
+///
+/// To format the current [local time] instead, use the [`LocalTime`] type.
+///
+/// [local time]: https://docs.rs/time/0.3/time/struct.OffsetDateTime.html#method.now_local
+/// [UTC time]: https://docs.rs/time/0.3/time/struct.OffsetDateTime.html#method.now_utc
+/// [formatter]: https://docs.rs/time/0.3/time/formatting/trait.Formattable.html
+/// [`time` crate]: https://docs.rs/time/0.3/time/
+#[cfg_attr(docsrs, doc(cfg(feature = "time")))]
+#[derive(Clone, Debug)]
+pub struct UtcTime<F> {
+ format: F,
+}
+
+// === impl LocalTime ===
+
+#[cfg(feature = "local-time")]
+impl LocalTime<well_known::Rfc3339> {
+ /// Returns a formatter that formats the current [local time] in the
+ /// [RFC 3339] format (a subset of the [ISO 8601] timestamp format).
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use tracing_subscriber::fmt::{self, time};
+ ///
+ /// let collector = tracing_subscriber::fmt()
+ /// .with_timer(time::LocalTime::rfc_3339());
+ /// # drop(collector);
+ /// ```
+ ///
+ /// [local time]: https://docs.rs/time/0.3/time/struct.OffsetDateTime.html#method.now_local
+ /// [RFC 3339]: https://datatracker.ietf.org/doc/html/rfc3339
+ /// [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
+ pub fn rfc_3339() -> Self {
+ Self::new(well_known::Rfc3339)
+ }
+}
+
+#[cfg(feature = "local-time")]
+impl<F: Formattable> LocalTime<F> {
+ /// Returns a formatter that formats the current [local time] using the
+ /// [`time` crate] with the provided provided format. The format may be any
+ /// type that implements the [`Formattable`] trait.
+ ///
+ /// Typically, the format will be a format description string, or one of the
+ /// `time` crate's [well-known formats].
+ ///
+ /// If the format description is statically known, then the
+ /// [`format_description!`] macro should be used. This is identical to the
+ /// [`time::format_description::parse`] method, but runs at compile-time,
+ /// throwing an error if the format description is invalid. If the desired format
+ /// is not known statically (e.g., a user is providing a format string), then the
+ /// [`time::format_description::parse`] method should be used. Note that this
+ /// method is fallible.
+ ///
+ /// See the [`time` book] for details on the format description syntax.
+ ///
+ /// # Examples
+ ///
+ /// Using the [`format_description!`] macro:
+ ///
+ /// ```
+ /// use tracing_subscriber::fmt::{self, time::LocalTime};
+ /// use time::macros::format_description;
+ ///
+ /// let timer = LocalTime::new(format_description!("[hour]:[minute]:[second]"));
+ /// let collector = tracing_subscriber::fmt()
+ /// .with_timer(timer);
+ /// # drop(collector);
+ /// ```
+ ///
+ /// Using [`time::format_description::parse`]:
+ ///
+ /// ```
+ /// use tracing_subscriber::fmt::{self, time::LocalTime};
+ ///
+ /// let time_format = time::format_description::parse("[hour]:[minute]:[second]")
+ /// .expect("format string should be valid!");
+ /// let timer = LocalTime::new(time_format);
+ /// let collector = tracing_subscriber::fmt()
+ /// .with_timer(timer);
+ /// # drop(collector);
+ /// ```
+ ///
+ /// Using the [`format_description!`] macro requires enabling the `time`
+ /// crate's "macros" feature flag.
+ ///
+ /// Using a [well-known format][well-known formats] (this is equivalent to
+ /// [`LocalTime::rfc_3339`]):
+ ///
+ /// ```
+ /// use tracing_subscriber::fmt::{self, time::LocalTime};
+ ///
+ /// let timer = LocalTime::new(time::format_description::well_known::Rfc3339);
+ /// let collector = tracing_subscriber::fmt()
+ /// .with_timer(timer);
+ /// # drop(collector);
+ /// ```
+ ///
+ /// [local time]: https://docs.rs/time/latest/time/struct.OffsetDateTime.html#method.now_local
+ /// [`time` crate]: https://docs.rs/time/0.3/time/
+ /// [`Formattable`]: https://docs.rs/time/0.3/time/formatting/trait.Formattable.html
+ /// [well-known formats]: https://docs.rs/time/0.3/time/format_description/well_known/index.html
+ /// [`format_description!`]: https://docs.rs/time/0.3/time/macros/macro.format_description.html
+ /// [`time::format_description::parse`]: https://docs.rs/time/0.3/time/format_description/fn.parse.html
+ /// [`time` book]: https://time-rs.github.io/book/api/format-description.html
+ pub fn new(format: F) -> Self {
+ Self { format }
+ }
+}
+
+#[cfg(feature = "local-time")]
+impl<F> FormatTime for LocalTime<F>
+where
+ F: Formattable,
+{
+ fn format_time(&self, w: &mut Writer<'_>) -> fmt::Result {
+ let now = OffsetDateTime::now_local().map_err(|_| fmt::Error)?;
+ format_datetime(now, w, &self.format)
+ }
+}
+
+#[cfg(feature = "local-time")]
+impl<F> Default for LocalTime<F>
+where
+ F: Formattable + Default,
+{
+ fn default() -> Self {
+ Self::new(F::default())
+ }
+}
+
+// === impl UtcTime ===
+
+impl UtcTime<well_known::Rfc3339> {
+ /// Returns a formatter that formats the current [UTC time] in the
+ /// [RFC 3339] format, which is a subset of the [ISO 8601] timestamp format.
+ ///
+ /// # Examples
+ ///
+ /// ```
+ /// use tracing_subscriber::fmt::{self, time};
+ ///
+ /// let collector = tracing_subscriber::fmt()
+ /// .with_timer(time::UtcTime::rfc_3339());
+ /// # drop(collector);
+ /// ```
+ ///
+ /// [local time]: https://docs.rs/time/0.3/time/struct.OffsetDateTime.html#method.now_utc
+ /// [RFC 3339]: https://datatracker.ietf.org/doc/html/rfc3339
+ /// [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
+ pub fn rfc_3339() -> Self {
+ Self::new(well_known::Rfc3339)
+ }
+}
+
+impl<F: Formattable> UtcTime<F> {
+ /// Returns a formatter that formats the current [UTC time] using the
+ /// [`time` crate], with the provided provided format. The format may be any
+ /// type that implements the [`Formattable`] trait.
+ ///
+ /// Typically, the format will be a format description string, or one of the
+ /// `time` crate's [well-known formats].
+ ///
+ /// If the format description is statically known, then the
+ /// [`format_description!`] macro should be used. This is identical to the
+ /// [`time::format_description::parse`] method, but runs at compile-time,
+ /// failing an error if the format description is invalid. If the desired format
+ /// is not known statically (e.g., a user is providing a format string), then the
+ /// [`time::format_description::parse`] method should be used. Note that this
+ /// method is fallible.
+ ///
+ /// See the [`time` book] for details on the format description syntax.
+ ///
+ /// # Examples
+ ///
+ /// Using the [`format_description!`] macro:
+ ///
+ /// ```
+ /// use tracing_subscriber::fmt::{self, time::UtcTime};
+ /// use time::macros::format_description;
+ ///
+ /// let timer = UtcTime::new(format_description!("[hour]:[minute]:[second]"));
+ /// let collector = tracing_subscriber::fmt()
+ /// .with_timer(timer);
+ /// # drop(collector);
+ /// ```
+ ///
+ /// Using the [`format_description!`] macro requires enabling the `time`
+ /// crate's "macros" feature flag.
+ ///
+ /// Using [`time::format_description::parse`]:
+ ///
+ /// ```
+ /// use tracing_subscriber::fmt::{self, time::UtcTime};
+ ///
+ /// let time_format = time::format_description::parse("[hour]:[minute]:[second]")
+ /// .expect("format string should be valid!");
+ /// let timer = UtcTime::new(time_format);
+ /// let collector = tracing_subscriber::fmt()
+ /// .with_timer(timer);
+ /// # drop(collector);
+ /// ```
+ ///
+ /// Using a [well-known format][well-known formats] (this is equivalent to
+ /// [`UtcTime::rfc_3339`]):
+ ///
+ /// ```
+ /// use tracing_subscriber::fmt::{self, time::UtcTime};
+ ///
+ /// let timer = UtcTime::new(time::format_description::well_known::Rfc3339);
+ /// let collector = tracing_subscriber::fmt()
+ /// .with_timer(timer);
+ /// # drop(collector);
+ /// ```
+ ///
+ /// [UTC time]: https://docs.rs/time/latest/time/struct.OffsetDateTime.html#method.now_utc
+ /// [`time` crate]: https://docs.rs/time/0.3/time/
+ /// [`Formattable`]: https://docs.rs/time/0.3/time/formatting/trait.Formattable.html
+ /// [well-known formats]: https://docs.rs/time/0.3/time/format_description/well_known/index.html
+ /// [`format_description!`]: https://docs.rs/time/0.3/time/macros/macro.format_description.html
+ /// [`time::format_description::parse`]: https://docs.rs/time/0.3/time/format_description/fn.parse.html
+ /// [`time` book]: https://time-rs.github.io/book/api/format-description.html
+ pub fn new(format: F) -> Self {
+ Self { format }
+ }
+}
+
+impl<F> FormatTime for UtcTime<F>
+where
+ F: Formattable,
+{
+ fn format_time(&self, w: &mut Writer<'_>) -> fmt::Result {
+ format_datetime(OffsetDateTime::now_utc(), w, &self.format)
+ }
+}
+
+impl<F> Default for UtcTime<F>
+where
+ F: Formattable + Default,
+{
+ fn default() -> Self {
+ Self::new(F::default())
+ }
+}
+
+fn format_datetime(
+ now: OffsetDateTime,
+ into: &mut Writer<'_>,
+ fmt: &impl Formattable,
+) -> fmt::Result {
+ let mut into = WriteAdaptor::new(into);
+ now.format_into(&mut into, fmt)
+ .map_err(|_| fmt::Error)
+ .map(|_| ())
+}
diff --git a/vendor/tracing-subscriber/src/fmt/writer.rs b/vendor/tracing-subscriber-0.3.3/src/fmt/writer.rs
index 4aacd6d54..0974891f7 100644
--- a/vendor/tracing-subscriber/src/fmt/writer.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/fmt/writer.rs
@@ -1,6 +1,6 @@
//! Abstractions for creating [`io::Write`] instances.
//!
-//! [`io::Write`]: std::io::Write
+//! [`io::Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
use std::{
fmt,
io::{self, Write},
@@ -96,8 +96,8 @@ use tracing_core::Metadata;
pub trait MakeWriter<'a> {
/// The concrete [`io::Write`] implementation returned by [`make_writer`].
///
- /// [`io::Write`]: std::io::Write
- /// [`make_writer`]: MakeWriter::make_writer
+ /// [`io::Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
+ /// [`make_writer`]: #tymethod.make_writer
type Writer: io::Write;
/// Returns an instance of [`Writer`].
@@ -109,7 +109,7 @@ pub trait MakeWriter<'a> {
/// creating a [`io::Write`] instance is expensive, be sure to cache it when implementing
/// [`MakeWriter`] to improve performance.
///
- /// [`Writer`]: MakeWriter::Writer
+ /// [`Writer`]: #associatedtype.Writer
/// [`fmt::Layer`]: crate::fmt::Layer
/// [`fmt::Subscriber`]: crate::fmt::Subscriber
/// [`io::Write`]: std::io::Write
@@ -501,13 +501,13 @@ pub trait MakeWriterExt<'a>: MakeWriter<'a> {
/// Writing to [`io::stdout`] and [`io::stderr`] produces the same results as using
/// [`libtest`'s `--nocapture` option][nocapture] which may make the results look unreadable.
///
-/// [`fmt::Subscriber`]: super::Subscriber
-/// [`fmt::Layer`]: super::Layer
+/// [`fmt::Subscriber`]: ../struct.Subscriber.html
+/// [`fmt::Layer`]: ../struct.Layer.html
/// [capturing]: https://doc.rust-lang.org/book/ch11-02-running-tests.html#showing-function-output
/// [nocapture]: https://doc.rust-lang.org/cargo/commands/cargo-test.html
-/// [`io::stdout`]: std::io::stdout
-/// [`io::stderr`]: std::io::stderr
-/// [`print!`]: std::print!
+/// [`io::stdout`]: https://doc.rust-lang.org/std/io/fn.stdout.html
+/// [`io::stderr`]: https://doc.rust-lang.org/std/io/fn.stderr.html
+/// [`print!`]: https://doc.rust-lang.org/std/macro.print.html
#[derive(Default, Debug)]
pub struct TestWriter {
_p: (),
@@ -646,9 +646,10 @@ pub struct Tee<A, B> {
/// requires the `Writer` type to implement [`io::Write`], it's necessary to add
/// a newtype that forwards the trait implementation.
///
-/// [`io::Write`]: std::io::Write
-/// [`MutexGuard`]: std::sync::MutexGuard
-/// [`Mutex`]: std::sync::Mutex
+/// [`io::Write`]: https://doc.rust-lang.org/std/io/trait.Write.html
+/// [`MutexGuard`]: https://doc.rust-lang.org/std/sync/struct.MutexGuard.html
+/// [`Mutex`]: https://doc.rust-lang.org/std/sync/struct.Mutex.html
+/// [`MakeWriter`]: trait.MakeWriter.html
#[derive(Debug)]
pub struct MutexGuardWriter<'a, W>(MutexGuard<'a, W>);
@@ -733,6 +734,7 @@ impl<'a> MakeWriter<'a> for TestWriter {
impl BoxMakeWriter {
/// Constructs a `BoxMakeWriter` wrapping a type implementing [`MakeWriter`].
///
+ /// [`MakeWriter`]: trait.MakeWriter.html
pub fn new<M>(make_writer: M) -> Self
where
M: for<'a> MakeWriter<'a> + Send + Sync + 'static,
@@ -1023,8 +1025,6 @@ impl<A, B> Tee<A, B> {
/// outputs.
///
/// See the documentation for [`MakeWriterExt::and`] for details.
- ///
- /// [writers]: std::io::Write
pub fn new(a: A, b: B) -> Self {
Self { a, b }
}
diff --git a/vendor/tracing-subscriber/src/layer/context.rs b/vendor/tracing-subscriber-0.3.3/src/layer/context.rs
index 46254994f..e11959526 100644
--- a/vendor/tracing-subscriber/src/layer/context.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/layer/context.rs
@@ -25,10 +25,10 @@ use crate::{filter::FilterId, registry::Registry};
/// }
/// ```
///
-/// [`Layer`]: super::Layer
-/// [`Subscriber`]: tracing_core::Subscriber
-/// [stored data]: crate::registry::SpanRef
-/// [`LookupSpan`]: crate::registry::LookupSpan
+/// [`Layer`]: ../layer/trait.Layer.html
+/// [`Subscriber`]: https://docs.rs/tracing-core/latest/tracing_core/trait.Subscriber.html
+/// [stored data]: ../registry/struct.SpanRef.html
+/// [`LookupSpan`]: "../registry/trait.LookupSpan.html
#[derive(Debug)]
pub struct Context<'a, S> {
subscriber: Option<&'a S>,
@@ -99,9 +99,9 @@ where
/// check whether the event would be enabled. This allows `Layer`s to
/// elide constructing the event if it would not be recorded.
///
- /// [register]: tracing_core::subscriber::Subscriber::register_callsite()
- /// [`enabled`]: tracing_core::subscriber::Subscriber::enabled()
- /// [`Context::enabled`]: Context::enabled()
+ /// [register]: https://docs.rs/tracing-core/latest/tracing_core/subscriber/trait.Subscriber.html#method.register_callsite
+ /// [`enabled`]: https://docs.rs/tracing-core/latest/tracing_core/subscriber/trait.Subscriber.html#method.enabled
+ /// [`Context::enabled`]: #method.enabled
#[inline]
pub fn event(&self, event: &Event<'_>) {
if let Some(subscriber) = self.subscriber {
@@ -206,7 +206,7 @@ where
/// declaration</a> for details.
/// </pre>
///
- /// [stored data]: crate::registry::SpanRef
+ /// [stored data]: ../registry/struct.SpanRef.html
#[inline]
pub fn span(&self, id: &span::Id) -> Option<registry::SpanRef<'_, S>>
where
@@ -251,7 +251,7 @@ where
/// declaration</a> for details.
/// </pre>
///
- /// [stored data]: crate::registry::SpanRef
+ /// [stored data]: ../registry/struct.SpanRef.html
#[inline]
pub fn lookup_current(&self) -> Option<registry::SpanRef<'_, S>>
where
@@ -333,7 +333,7 @@ where
/// declaration</a> for details.
/// </pre>
///
- /// [stored data]: crate::registry::SpanRef
+ /// [stored data]: ../registry/struct.SpanRef.html
pub fn span_scope(&self, id: &span::Id) -> Option<registry::Scope<'_, S>>
where
S: for<'lookup> LookupSpan<'lookup>,
@@ -360,7 +360,7 @@ where
/// declaration</a> for details.
/// </pre>
///
- /// [stored data]: crate::registry::SpanRef
+ /// [stored data]: ../registry/struct.SpanRef.html
pub fn event_scope(&self, event: &Event<'_>) -> Option<registry::Scope<'_, S>>
where
S: for<'lookup> LookupSpan<'lookup>,
diff --git a/vendor/tracing-subscriber/src/layer/layered.rs b/vendor/tracing-subscriber-0.3.3/src/layer/layered.rs
index 805ec13dc..c690764ad 100644
--- a/vendor/tracing-subscriber/src/layer/layered.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/layer/layered.rs
@@ -12,17 +12,13 @@ use crate::{
};
#[cfg(all(feature = "registry", feature = "std"))]
use crate::{filter::FilterId, registry::Registry};
-use core::{
- any::{Any, TypeId},
- cmp, fmt,
- marker::PhantomData,
-};
+use core::{any::TypeId, cmp, fmt, marker::PhantomData};
/// A [`Subscriber`] composed of a `Subscriber` wrapped by one or more
/// [`Layer`]s.
///
/// [`Layer`]: crate::Layer
-/// [`Subscriber`]: tracing_core::Subscriber
+/// [`Subscriber`]: https://docs.rs/tracing-core/latest/tracing_core/trait.Subscriber.html
#[derive(Clone)]
pub struct Layered<L, I, S = I> {
/// The layer.
@@ -67,30 +63,6 @@ pub struct Layered<L, I, S = I> {
// === impl Layered ===
-impl<L, S> Layered<L, S>
-where
- L: Layer<S>,
- S: Subscriber,
-{
- /// Returns `true` if this [`Subscriber`] is the same type as `T`.
- pub fn is<T: Any>(&self) -> bool {
- self.downcast_ref::<T>().is_some()
- }
-
- /// Returns some reference to this [`Subscriber`] value if it is of type `T`,
- /// or `None` if it isn't.
- pub fn downcast_ref<T: Any>(&self) -> Option<&T> {
- unsafe {
- let raw = self.downcast_raw(TypeId::of::<T>())?;
- if raw.is_null() {
- None
- } else {
- Some(&*(raw as *const T))
- }
- }
- }
-}
-
impl<L, S> Subscriber for Layered<L, S>
where
L: Layer<S>,
@@ -139,16 +111,6 @@ where
self.layer.on_follows_from(span, follows, self.ctx());
}
- fn event_enabled(&self, event: &Event<'_>) -> bool {
- if self.layer.event_enabled(event, self.ctx()) {
- // if the outer layer enables the event, ask the inner subscriber.
- self.inner.event_enabled(event)
- } else {
- // otherwise, the event is disabled by this layer
- false
- }
- }
-
fn event(&self, event: &Event<'_>) {
self.inner.event(event);
self.layer.on_event(event, self.ctx());
@@ -190,7 +152,7 @@ where
#[cfg(all(feature = "registry", feature = "std"))]
{
if let Some(g) = guard.as_mut() {
- g.set_closing()
+ g.is_closing()
};
}
@@ -289,17 +251,6 @@ where
}
#[inline]
- fn event_enabled(&self, event: &Event<'_>, ctx: Context<'_, S>) -> bool {
- if self.layer.event_enabled(event, ctx.clone()) {
- // if the outer layer enables the event, ask the inner subscriber.
- self.inner.event_enabled(event, ctx)
- } else {
- // otherwise, the event is disabled by this layer
- false
- }
- }
-
- #[inline]
fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>) {
self.inner.on_event(event, ctx.clone());
self.layer.on_event(event, ctx);
@@ -435,7 +386,7 @@ where
// (rather than calling into the inner type), clear the current
// per-layer filter interest state.
#[cfg(feature = "registry")]
- filter::FilterState::take_interest();
+ drop(filter::FilterState::take_interest());
return outer;
}
diff --git a/vendor/tracing-subscriber/src/layer/mod.rs b/vendor/tracing-subscriber-0.3.3/src/layer/mod.rs
index 24b853323..f3f994490 100644
--- a/vendor/tracing-subscriber/src/layer/mod.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/layer/mod.rs
@@ -19,7 +19,7 @@
//! [`Subscriber`] behavior; it can _observe_ events and spans, but does not
//! assign IDs.
//!
-//! # Composing Layers
+//! ## Composing Layers
//!
//! Since a [`Layer`] does not implement a complete strategy for collecting
//! traces, it must be composed with a `Subscriber` in order to be used. The
@@ -135,245 +135,9 @@
//! [`Layer::with_subscriber`] as an implementation detail, as `with_subscriber`
//! calls must be nested, leading to less clear code for the reader.
//!
-//! ## Runtime Configuration With `Layer`s
-//!
-//! In some cases, a particular [`Layer`] may be enabled or disabled based on
-//! runtime configuration. This can introduce challenges, because the type of a
-//! layered [`Subscriber`] depends on which layers are added to it: if an `if`
-//! or `match` expression adds some [`Layer`] implementation in one branch,
-//! and other layers in another, the [`Subscriber`] values returned by those
-//! branches will have different types. For example, the following _will not_
-//! work:
-//!
-//! ```compile_fail
-//! # fn docs() -> Result<(), Box<dyn std::error::Error + 'static>> {
-//! # struct Config {
-//! # is_prod: bool,
-//! # path: &'static str,
-//! # }
-//! # let cfg = Config { is_prod: false, path: "debug.log" };
-//! use std::fs::File;
-//! use tracing_subscriber::{Registry, prelude::*};
-//!
-//! let stdout_log = tracing_subscriber::fmt::layer().pretty();
-//! let subscriber = Registry::default().with(stdout_log);
-//!
-//! // The compile error will occur here because the if and else
-//! // branches have different (and therefore incompatible) types.
-//! let subscriber = if cfg.is_prod {
-//! let file = File::create(cfg.path)?;
-//! let layer = tracing_subscriber::fmt::layer()
-//! .json()
-//! .with_writer(Arc::new(file));
-//! layer.with(subscriber)
-//! } else {
-//! layer
-//! };
-//!
-//! tracing::subscriber::set_global_default(subscriber)
-//! .expect("Unable to set global subscriber");
-//! # Ok(()) }
-//! ```
-//!
-//! However, a [`Layer`] wrapped in an [`Option`] [also implements the `Layer`
-//! trait][option-impl]. This allows individual layers to be enabled or disabled at
-//! runtime while always producing a [`Subscriber`] of the same type. For
-//! example:
-//!
-//! ```
-//! # fn docs() -> Result<(), Box<dyn std::error::Error + 'static>> {
-//! # struct Config {
-//! # is_prod: bool,
-//! # path: &'static str,
-//! # }
-//! # let cfg = Config { is_prod: false, path: "debug.log" };
-//! use std::fs::File;
-//! use tracing_subscriber::{Registry, prelude::*};
-//!
-//! let stdout_log = tracing_subscriber::fmt::layer().pretty();
-//! let subscriber = Registry::default().with(stdout_log);
-//!
-//! // if `cfg.is_prod` is true, also log JSON-formatted logs to a file.
-//! let json_log = if cfg.is_prod {
-//! let file = File::create(cfg.path)?;
-//! let json_log = tracing_subscriber::fmt::layer()
-//! .json()
-//! .with_writer(file);
-//! Some(json_log)
-//! } else {
-//! None
-//! };
-//!
-//! // If `cfg.is_prod` is false, then `json` will be `None`, and this layer
-//! // will do nothing. However, the subscriber will still have the same type
-//! // regardless of whether the `Option`'s value is `None` or `Some`.
-//! let subscriber = subscriber.with(json_log);
-//!
-//! tracing::subscriber::set_global_default(subscriber)
-//! .expect("Unable to set global subscriber");
-//! # Ok(()) }
-//! ```
-//!
-//! If a [`Layer`] may be one of several different types, note that [`Box<dyn
-//! Layer<S> + Send + Sync>` implements `Layer`][box-impl].
-//! This may be used to erase the type of a [`Layer`].
-//!
-//! For example, a function that configures a [`Layer`] to log to one of
-//! several outputs might return a `Box<dyn Layer<S> + Send + Sync + 'static>`:
-//! ```
-//! use tracing_subscriber::{
-//! Layer,
-//! registry::LookupSpan,
-//! prelude::*,
-//! };
-//! use std::{path::PathBuf, fs::File, io};
-//!
-//! /// Configures whether logs are emitted to a file, to stdout, or to stderr.
-//! pub enum LogConfig {
-//! File(PathBuf),
-//! Stdout,
-//! Stderr,
-//! }
-//!
-//! impl LogConfig {
-//! pub fn layer<S>(self) -> Box<dyn Layer<S> + Send + Sync + 'static>
-//! where
-//! S: tracing_core::Subscriber,
-//! for<'a> S: LookupSpan<'a>,
-//! {
-//! // Shared configuration regardless of where logs are output to.
-//! let fmt = tracing_subscriber::fmt::layer()
-//! .with_target(true)
-//! .with_thread_names(true);
-//!
-//! // Configure the writer based on the desired log target:
-//! match self {
-//! LogConfig::File(path) => {
-//! let file = File::create(path).expect("failed to create log file");
-//! Box::new(fmt.with_writer(file))
-//! },
-//! LogConfig::Stdout => Box::new(fmt.with_writer(io::stdout)),
-//! LogConfig::Stderr => Box::new(fmt.with_writer(io::stderr)),
-//! }
-//! }
-//! }
-//!
-//! let config = LogConfig::Stdout;
-//! tracing_subscriber::registry()
-//! .with(config.layer())
-//! .init();
-//! ```
-//!
-//! The [`Layer::boxed`] method is provided to make boxing a `Layer`
-//! more convenient, but [`Box::new`] may be used as well.
-//!
-//! When the number of `Layer`s varies at runtime, note that a
-//! [`Vec<L> where L: Layer` also implements `Layer`][vec-impl]. This
-//! can be used to add a variable number of `Layer`s to a `Subscriber`:
-//!
-//! ```
-//! use tracing_subscriber::{Layer, prelude::*};
-//! struct MyLayer {
-//! // ...
-//! }
-//! # impl MyLayer { fn new() -> Self { Self {} }}
-//!
-//! impl<S: tracing_core::Subscriber> Layer<S> for MyLayer {
-//! // ...
-//! }
-//!
-//! /// Returns how many layers we need
-//! fn how_many_layers() -> usize {
-//! // ...
-//! # 3
-//! }
-//!
-//! // Create a variable-length `Vec` of layers
-//! let mut layers = Vec::new();
-//! for _ in 0..how_many_layers() {
-//! layers.push(MyLayer::new());
-//! }
-//!
-//! tracing_subscriber::registry()
-//! .with(layers)
-//! .init();
-//! ```
-//!
-//! If a variable number of `Layer` is needed and those `Layer`s have
-//! different types, a `Vec` of [boxed `Layer` trait objects][box-impl] may
-//! be used. For example:
-//!
-//! ```
-//! use tracing_subscriber::{filter::LevelFilter, Layer, prelude::*};
-//! use std::fs::File;
-//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
-//! struct Config {
-//! enable_log_file: bool,
-//! enable_stdout: bool,
-//! enable_stderr: bool,
-//! // ...
-//! }
-//! # impl Config {
-//! # fn from_config_file()-> Result<Self, Box<dyn std::error::Error>> {
-//! # // don't enable the log file so that the example doesn't actually create it
-//! # Ok(Self { enable_log_file: false, enable_stdout: true, enable_stderr: true })
-//! # }
-//! # }
-//!
-//! let cfg = Config::from_config_file()?;
-//!
-//! // Based on our dynamically loaded config file, create any number of layers:
-//! let mut layers = Vec::new();
-//!
-//! if cfg.enable_log_file {
-//! let file = File::create("myapp.log")?;
-//! let layer = tracing_subscriber::fmt::layer()
-//! .with_thread_names(true)
-//! .with_target(true)
-//! .json()
-//! .with_writer(file)
-//! // Box the layer as a type-erased trait object, so that it can
-//! // be pushed to the `Vec`.
-//! .boxed();
-//! layers.push(layer);
-//! }
-//!
-//! if cfg.enable_stdout {
-//! let layer = tracing_subscriber::fmt::layer()
-//! .pretty()
-//! .with_filter(LevelFilter::INFO)
-//! // Box the layer as a type-erased trait object, so that it can
-//! // be pushed to the `Vec`.
-//! .boxed();
-//! layers.push(layer);
-//! }
-//!
-//! if cfg.enable_stdout {
-//! let layer = tracing_subscriber::fmt::layer()
-//! .with_target(false)
-//! .with_filter(LevelFilter::WARN)
-//! // Box the layer as a type-erased trait object, so that it can
-//! // be pushed to the `Vec`.
-//! .boxed();
-//! layers.push(layer);
-//! }
-//!
-//! tracing_subscriber::registry()
-//! .with(layers)
-//! .init();
-//!# Ok(()) }
-//! ```
-//!
-//! Finally, if the number of layers _changes_ at runtime, a `Vec` of
-//! subscribers can be used alongside the [`reload`](crate::reload) module to
-//! add or remove subscribers dynamically at runtime.
-//!
-//! [option-impl]: Layer#impl-Layer<S>-for-Option<L>
-//! [box-impl]: Layer#impl-Layer%3CS%3E-for-Box%3Cdyn%20Layer%3CS%3E%20+%20Send%20+%20Sync%3E
-//! [vec-impl]: Layer#impl-Layer<S>-for-Vec<L>
//! [prelude]: crate::prelude
//!
-//! # Recording Traces
+//! ## Recording Traces
//!
//! The [`Layer`] trait defines a set of methods for consuming notifications from
//! tracing instrumentation, which are generally equivalent to the similarly
@@ -382,7 +146,7 @@
//! information provided by the wrapped subscriber (such as [the current span])
//! to the layer.
//!
-//! # Filtering with `Layer`s
+//! ## Filtering with `Layer`s
//!
//! As well as strategies for handling trace events, the `Layer` trait may also
//! be used to represent composable _filters_. This allows the determination of
@@ -394,7 +158,7 @@
//! combined with _per-layer filters_ that control what spans and events are
//! recorded by those layers.
//!
-//! ## Global Filtering
+//! ### Global Filtering
//!
//! A `Layer` that implements a filtering strategy should override the
//! [`register_callsite`] and/or [`enabled`] methods. It may also choose to implement
@@ -415,29 +179,7 @@
//! [`Interest::never()`] from its [`register_callsite`] method, filter
//! evaluation will short-circuit and the span or event will be disabled.
//!
-//! ### Enabling Interest
-//!
-//! Whenever an tracing event (or span) is emitted, it goes through a number of
-//! steps to determine how and how much it should be processed. The earlier an
-//! event is disabled, the less work has to be done to process the event, so
-//! `Layer`s that implement filtering should attempt to disable unwanted
-//! events as early as possible. In order, each event checks:
-//!
-//! - [`register_callsite`], once per callsite (roughly: once per time that
-//! `event!` or `span!` is written in the source code; this is cached at the
-//! callsite). See [`Subscriber::register_callsite`] and
-//! [`tracing_core::callsite`] for a summary of how this behaves.
-//! - [`enabled`], once per emitted event (roughly: once per time that `event!`
-//! or `span!` is *executed*), and only if `register_callsite` regesters an
-//! [`Interest::sometimes`]. This is the main customization point to globally
-//! filter events based on their [`Metadata`]. If an event can be disabled
-//! based only on [`Metadata`], it should be, as this allows the construction
-//! of the actual `Event`/`Span` to be skipped.
-//! - For events only (and not spans), [`event_enabled`] is called just before
-//! processing the event. This gives layers one last chance to say that
-//! an event should be filtered out, now that the event's fields are known.
-//!
-//! ## Per-Layer Filtering
+//! ### Per-Layer Filtering
//!
//! **Note**: per-layer filtering APIs currently require the [`"registry"` crate
//! feature flag][feat] to be enabled.
@@ -651,16 +393,94 @@
//! # Ok(()) }
//! ```
//!
-//! [`Subscriber`]: tracing_core::subscriber::Subscriber
-//! [span IDs]: tracing_core::span::Id
+//! ## Runtime Configuration With Layers
+//!
+//! In some cases, a particular [`Layer`] may be enabled or disabled based on
+//! runtime configuration. This can introduce challenges, because the type of a
+//! layered [`Subscriber`] depends on which layers are added to it: if an `if`
+//! or `match` expression adds some [`Layer`]s in one branch and other layers
+//! in another, the [`Subscriber`] values returned by those branches will have
+//! different types. For example, the following _will not_ work:
+//!
+//! ```compile_fail
+//! # fn docs() -> Result<(), Box<dyn std::error::Error + 'static>> {
+//! # struct Config {
+//! # is_prod: bool,
+//! # path: &'static str,
+//! # }
+//! # let cfg = Config { is_prod: false, path: "debug.log" };
+//! use std::{fs::File, sync::Arc};
+//! use tracing_subscriber::{Registry, prelude::*};
+//!
+//! let stdout_log = tracing_subscriber::fmt::layer().pretty();
+//! let subscriber = Registry::default().with(stdout_log);
+//!
+//! // The compile error will occur here because the if and else
+//! // branches have different (and therefore incompatible) types.
+//! let subscriber = if cfg.is_prod {
+//! let file = File::create(cfg.path)?;
+//! let layer = tracing_subscriber::fmt::layer()
+//! .json()
+//! .with_writer(Arc::new(file));
+//! subscriber.with(layer)
+//! } else {
+//! subscriber
+//! };
+//!
+//! tracing::subscriber::set_global_default(subscriber)
+//! .expect("Unable to set global subscriber");
+//! # Ok(()) }
+//! ```
+//!
+//! However, a [`Layer`] wrapped in an [`Option`] [also implements the `Layer`
+//! trait][option-impl]. This allows individual layers to be enabled or disabled at
+//! runtime while always producing a [`Subscriber`] of the same type. For
+//! example:
+//!
+//! ```
+//! # fn docs() -> Result<(), Box<dyn std::error::Error + 'static>> {
+//! # struct Config {
+//! # is_prod: bool,
+//! # path: &'static str,
+//! # }
+//! # let cfg = Config { is_prod: false, path: "debug.log" };
+//! use std::{fs::File, sync::Arc};
+//! use tracing_subscriber::{Registry, prelude::*};
+//!
+//! let stdout_log = tracing_subscriber::fmt::layer().pretty();
+//! let subscriber = Registry::default().with(stdout_log);
+//!
+//! // if `cfg.is_prod` is true, also log JSON-formatted logs to a file.
+//! let json_log = if cfg.is_prod {
+//! let file = File::create(cfg.path)?;
+//! let json_log = tracing_subscriber::fmt::layer()
+//! .json()
+//! .with_writer(Arc::new(file));
+//! Some(json_log)
+//! } else {
+//! None
+//! };
+//!
+//! // If `cfg.is_prod` is false, then `json` will be `None`, and this layer
+//! // will do nothing. However, the subscriber will still have the same type
+//! // regardless of whether the `Option`'s value is `None` or `Some`.
+//! let subscriber = subscriber.with(json_log);
+//!
+//! tracing::subscriber::set_global_default(subscriber)
+//! .expect("Unable to set global subscriber");
+//! # Ok(()) }
+//! ```
+//!
+//! [`Subscriber`]: https://docs.rs/tracing-core/latest/tracing_core/subscriber/trait.Subscriber.html
+//! [span IDs]: https://docs.rs/tracing-core/latest/tracing_core/span/struct.Id.html
//! [the current span]: Context::current_span
//! [`register_callsite`]: Layer::register_callsite
//! [`enabled`]: Layer::enabled
-//! [`event_enabled`]: Layer::event_enabled
//! [`on_enter`]: Layer::on_enter
//! [`Layer::register_callsite`]: Layer::register_callsite
//! [`Layer::enabled`]: Layer::enabled
-//! [`Interest::never()`]: tracing_core::subscriber::Interest::never()
+//! [`Interest::never()`]: https://docs.rs/tracing-core/latest/tracing_core/subscriber/struct.Interest.html#method.never
+//! [option-impl]: crate::layer::Layer#impl-Layer<S>-for-Option<L>
//! [`Filtered`]: crate::filter::Filtered
//! [`filter`]: crate::filter
//! [`Targets`]: crate::filter::Targets
@@ -772,15 +592,15 @@ where
/// globally enable or disable those callsites, it should always return
/// [`Interest::always()`].
///
- /// [`Interest`]: tracing_core::Interest
- /// [`Subscriber::register_callsite`]: tracing_core::Subscriber::register_callsite()
- /// [`Interest::never()`]: tracing_core::subscriber::Interest::never()
- /// [`Interest::always()`]: tracing_core::subscriber::Interest::always()
- /// [`self.enabled`]: Layer::enabled()
- /// [`Layer::enabled`]: Layer::enabled()
- /// [`on_event`]: Layer::on_event()
- /// [`on_enter`]: Layer::on_enter()
- /// [`on_exit`]: Layer::on_exit()
+ /// [`Interest`]: https://docs.rs/tracing-core/latest/tracing_core/struct.Interest.html
+ /// [`Subscriber::register_callsite`]: https://docs.rs/tracing-core/latest/tracing_core/trait.Subscriber.html#method.register_callsite
+ /// [`Interest::never()`]: https://docs.rs/tracing-core/latest/tracing_core/subscriber/struct.Interest.html#method.never
+ /// [`Interest::always()`]: https://docs.rs/tracing-core/latest/tracing_core/subscriber/struct.Interest.html#method.always
+ /// [`self.enabled`]: #method.enabled
+ /// [`Layer::enabled`]: #method.enabled
+ /// [`on_event`]: #method.on_event
+ /// [`on_enter`]: #method.on_enter
+ /// [`on_exit`]: #method.on_exit
/// [the trait-level documentation]: #filtering-with-layers
fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest {
if self.enabled(metadata, Context::none()) {
@@ -815,12 +635,13 @@ where
/// See [the trait-level documentation] for more information on filtering
/// with `Layer`s.
///
- /// [`Interest`]: tracing_core::Interest
- /// [`Subscriber::enabled`]: tracing_core::Subscriber::enabled()
- /// [`Layer::register_callsite`]: Layer::register_callsite()
- /// [`on_event`]: Layer::on_event()
- /// [`on_enter`]: Layer::on_enter()
- /// [`on_exit`]: Layer::on_exit()
+ /// [`Interest`]: https://docs.rs/tracing-core/latest/tracing_core/struct.Interest.html
+ /// [`Context`]: ../struct.Context.html
+ /// [`Subscriber::enabled`]: https://docs.rs/tracing-core/latest/tracing_core/trait.Subscriber.html#method.enabled
+ /// [`Layer::register_callsite`]: #method.register_callsite
+ /// [`on_event`]: #method.on_event
+ /// [`on_enter`]: #method.on_enter
+ /// [`on_exit`]: #method.on_exit
/// [the trait-level documentation]: #filtering-with-layers
fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool {
let _ = (metadata, ctx);
@@ -855,31 +676,6 @@ where
// seems like a good future-proofing measure as it may grow other methods later...
fn on_follows_from(&self, _span: &span::Id, _follows: &span::Id, _ctx: Context<'_, S>) {}
- /// Called before [`on_event`], to determine if `on_event` should be called.
- ///
- /// <div class="example-wrap" style="display:inline-block">
- /// <pre class="ignore" style="white-space:normal;font:inherit;">
- ///
- /// **Note**: This method determines whether an event is globally enabled,
- /// *not* whether the individual `Layer` will be notified about the
- /// event. This is intended to be used by `Layer`s that implement
- /// filtering for the entire stack. `Layer`s which do not wish to be
- /// notified about certain events but do not wish to globally disable them
- /// should ignore those events in their [on_event][Self::on_event].
- ///
- /// </pre></div>
- ///
- /// See [the trait-level documentation] for more information on filtering
- /// with `Layer`s.
- ///
- /// [`on_event`]: Self::on_event
- /// [`Interest`]: tracing_core::Interest
- /// [the trait-level documentation]: #filtering-with-layers
- #[inline] // collapse this to a constant please mrs optimizer
- fn event_enabled(&self, _event: &Event<'_>, _ctx: Context<'_, S>) -> bool {
- true
- }
-
/// Notifies this layer that an event has occurred.
fn on_event(&self, _event: &Event<'_>, _ctx: Context<'_, S>) {}
@@ -1044,7 +840,7 @@ where
/// .with_subscriber(MySubscriber::new());
///```
///
- /// [`Subscriber`]: tracing_core::Subscriber
+ /// [`Subscriber`]: https://docs.rs/tracing-core/latest/tracing_core/trait.Subscriber.html
fn with_subscriber(mut self, mut inner: S) -> Layered<Self, S>
where
Self: Sized,
@@ -1061,7 +857,7 @@ where
/// per-layer filtering.
///
/// [`Filtered`]: crate::filter::Filtered
- /// [plf]: crate::layer#per-layer-filtering
+ /// [plf]: #per-layer-filtering
#[cfg(all(feature = "registry", feature = "std"))]
#[cfg_attr(docsrs, doc(cfg(all(feature = "registry", feature = "std"))))]
fn with_filter<F>(self, filter: F) -> filter::Filtered<Self, F, S>
@@ -1072,131 +868,6 @@ where
filter::Filtered::new(self, filter)
}
- /// Erases the type of this [`Layer`], returning a [`Box`]ed `dyn
- /// Layer` trait object.
- ///
- /// This can be used when a function returns a `Layer` which may be of
- /// one of several types, or when a `Layer` subscriber has a very long type
- /// signature.
- ///
- /// # Examples
- ///
- /// The following example will *not* compile, because the value assigned to
- /// `log_layer` may have one of several different types:
- ///
- /// ```compile_fail
- /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
- /// use tracing_subscriber::{Layer, filter::LevelFilter, prelude::*};
- /// use std::{path::PathBuf, fs::File, io};
- ///
- /// /// Configures whether logs are emitted to a file, to stdout, or to stderr.
- /// pub enum LogConfig {
- /// File(PathBuf),
- /// Stdout,
- /// Stderr,
- /// }
- ///
- /// let config = // ...
- /// # LogConfig::Stdout;
- ///
- /// // Depending on the config, construct a layer of one of several types.
- /// let log_layer = match config {
- /// // If logging to a file, use a maximally-verbose configuration.
- /// LogConfig::File(path) => {
- /// let file = File::create(path)?;
- /// tracing_subscriber::fmt::layer()
- /// .with_thread_ids(true)
- /// .with_thread_names(true)
- /// // Selecting the JSON logging format changes the layer's
- /// // type.
- /// .json()
- /// .with_span_list(true)
- /// // Setting the writer to use our log file changes the
- /// // layer's type again.
- /// .with_writer(file)
- /// },
- ///
- /// // If logging to stdout, use a pretty, human-readable configuration.
- /// LogConfig::Stdout => tracing_subscriber::fmt::layer()
- /// // Selecting the "pretty" logging format changes the
- /// // layer's type!
- /// .pretty()
- /// .with_writer(io::stdout)
- /// // Add a filter based on the RUST_LOG environment variable;
- /// // this changes the type too!
- /// .and_then(tracing_subscriber::EnvFilter::from_default_env()),
- ///
- /// // If logging to stdout, only log errors and warnings.
- /// LogConfig::Stderr => tracing_subscriber::fmt::layer()
- /// // Changing the writer changes the layer's type
- /// .with_writer(io::stderr)
- /// // Only log the `WARN` and `ERROR` levels. Adding a filter
- /// // changes the layer's type to `Filtered<LevelFilter, ...>`.
- /// .with_filter(LevelFilter::WARN),
- /// };
- ///
- /// tracing_subscriber::registry()
- /// .with(log_layer)
- /// .init();
- /// # Ok(()) }
- /// ```
- ///
- /// However, adding a call to `.boxed()` after each match arm erases the
- /// layer's type, so this code *does* compile:
- ///
- /// ```
- /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
- /// # use tracing_subscriber::{Layer, filter::LevelFilter, prelude::*};
- /// # use std::{path::PathBuf, fs::File, io};
- /// # pub enum LogConfig {
- /// # File(PathBuf),
- /// # Stdout,
- /// # Stderr,
- /// # }
- /// # let config = LogConfig::Stdout;
- /// let log_layer = match config {
- /// LogConfig::File(path) => {
- /// let file = File::create(path)?;
- /// tracing_subscriber::fmt::layer()
- /// .with_thread_ids(true)
- /// .with_thread_names(true)
- /// .json()
- /// .with_span_list(true)
- /// .with_writer(file)
- /// // Erase the type by boxing the layer
- /// .boxed()
- /// },
- ///
- /// LogConfig::Stdout => tracing_subscriber::fmt::layer()
- /// .pretty()
- /// .with_writer(io::stdout)
- /// .and_then(tracing_subscriber::EnvFilter::from_default_env())
- /// // Erase the type by boxing the layer
- /// .boxed(),
- ///
- /// LogConfig::Stderr => tracing_subscriber::fmt::layer()
- /// .with_writer(io::stderr)
- /// .with_filter(LevelFilter::WARN)
- /// // Erase the type by boxing the layer
- /// .boxed(),
- /// };
- ///
- /// tracing_subscriber::registry()
- /// .with(log_layer)
- /// .init();
- /// # Ok(()) }
- /// ```
- #[cfg(any(feature = "alloc", feature = "std"))]
- #[cfg_attr(docsrs, doc(cfg(any(feature = "alloc", feature = "std"))))]
- fn boxed(self) -> Box<dyn Layer<S> + Send + Sync + 'static>
- where
- Self: Sized,
- Self: Layer<S> + Send + Sync + 'static,
- S: Subscriber,
- {
- Box::new(self)
- }
-
#[doc(hidden)]
unsafe fn downcast_raw(&self, id: TypeId) -> Option<*const ()> {
if id == TypeId::of::<Self>() {
@@ -1209,7 +880,6 @@ where
feature! {
#![all(feature = "registry", feature = "std")]
-
/// A per-[`Layer`] filter that determines whether a span or event is enabled
/// for an individual layer.
///
@@ -1384,51 +1054,6 @@ feature! {
fn max_level_hint(&self) -> Option<LevelFilter> {
None
}
-
- /// Notifies this filter that a new span was constructed with the given
- /// `Attributes` and `Id`.
- ///
- /// By default, this method does nothing. `Filter` implementations that
- /// need to be notified when new spans are created can override this
- /// method.
- fn on_new_span(&self, attrs: &span::Attributes<'_>, id: &span::Id, ctx: Context<'_, S>) {
- let _ = (attrs, id, ctx);
- }
-
-
- /// Notifies this filter that a span with the given `Id` recorded the given
- /// `values`.
- ///
- /// By default, this method does nothing. `Filter` implementations that
- /// need to be notified when new spans are created can override this
- /// method.
- fn on_record(&self, id: &span::Id, values: &span::Record<'_>, ctx: Context<'_, S>) {
- let _ = (id, values, ctx);
- }
-
- /// Notifies this filter that a span with the given ID was entered.
- ///
- /// By default, this method does nothing. `Filter` implementations that
- /// need to be notified when a span is entered can override this method.
- fn on_enter(&self, id: &span::Id, ctx: Context<'_, S>) {
- let _ = (id, ctx);
- }
-
- /// Notifies this filter that a span with the given ID was exited.
- ///
- /// By default, this method does nothing. `Filter` implementations that
- /// need to be notified when a span is exited can override this method.
- fn on_exit(&self, id: &span::Id, ctx: Context<'_, S>) {
- let _ = (id, ctx);
- }
-
- /// Notifies this filter that a span with the given ID has been closed.
- ///
- /// By default, this method does nothing. `Filter` implementations that
- /// need to be notified when a span is closed can override this method.
- fn on_close(&self, id: span::Id, ctx: Context<'_, S>) {
- let _ = (id, ctx);
- }
}
}
@@ -1490,11 +1115,7 @@ where
fn max_level_hint(&self) -> Option<LevelFilter> {
match self {
Some(ref inner) => inner.max_level_hint(),
- None => {
- // There is no inner layer, so this layer will
- // never enable anything.
- Some(LevelFilter::OFF)
- }
+ None => None,
}
}
@@ -1513,14 +1134,6 @@ where
}
#[inline]
- fn event_enabled(&self, event: &Event<'_>, ctx: Context<'_, S>) -> bool {
- match self {
- Some(ref inner) => inner.event_enabled(event, ctx),
- None => true,
- }
- }
-
- #[inline]
fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>) {
if let Some(ref inner) = self {
inner.on_event(event, ctx);
@@ -1568,8 +1181,6 @@ where
feature! {
#![any(feature = "std", feature = "alloc")]
- #[cfg(not(feature = "std"))]
- use alloc::vec::Vec;
macro_rules! layer_impl_body {
() => {
@@ -1609,11 +1220,6 @@ feature! {
}
#[inline]
- fn event_enabled(&self, event: &Event<'_>, ctx: Context<'_, S>) -> bool {
- self.deref().event_enabled(event, ctx)
- }
-
- #[inline]
fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>) {
self.deref().on_event(event, ctx)
}
@@ -1660,125 +1266,6 @@ feature! {
{
layer_impl_body! {}
}
-
-
-
- impl<S, L> Layer<S> for Vec<L>
- where
- L: Layer<S>,
- S: Subscriber,
- {
-
- fn on_layer(&mut self, subscriber: &mut S) {
- for l in self {
- l.on_layer(subscriber);
- }
- }
-
- fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest {
- // Return highest level of interest.
- let mut interest = Interest::never();
- for l in self {
- let new_interest = l.register_callsite(metadata);
- if (interest.is_sometimes() && new_interest.is_always())
- || (interest.is_never() && !new_interest.is_never())
- {
- interest = new_interest;
- }
- }
-
- interest
- }
-
- fn enabled(&self, metadata: &Metadata<'_>, ctx: Context<'_, S>) -> bool {
- self.iter().all(|l| l.enabled(metadata, ctx.clone()))
- }
-
- fn event_enabled(&self, event: &Event<'_>, ctx: Context<'_, S>) -> bool {
- self.iter().all(|l| l.event_enabled(event, ctx.clone()))
- }
-
- fn on_new_span(&self, attrs: &span::Attributes<'_>, id: &span::Id, ctx: Context<'_, S>) {
- for l in self {
- l.on_new_span(attrs, id, ctx.clone());
- }
- }
-
- fn max_level_hint(&self) -> Option<LevelFilter> {
- // Default to `OFF` if there are no inner layers.
- let mut max_level = LevelFilter::OFF;
- for l in self {
- // NOTE(eliza): this is slightly subtle: if *any* layer
- // returns `None`, we have to return `None`, assuming there is
- // no max level hint, since that particular layer cannot
- // provide a hint.
- let hint = l.max_level_hint()?;
- max_level = core::cmp::max(hint, max_level);
- }
- Some(max_level)
- }
-
- fn on_record(&self, span: &span::Id, values: &span::Record<'_>, ctx: Context<'_, S>) {
- for l in self {
- l.on_record(span, values, ctx.clone())
- }
- }
-
- fn on_follows_from(&self, span: &span::Id, follows: &span::Id, ctx: Context<'_, S>) {
- for l in self {
- l.on_follows_from(span, follows, ctx.clone());
- }
- }
-
- fn on_event(&self, event: &Event<'_>, ctx: Context<'_, S>) {
- for l in self {
- l.on_event(event, ctx.clone());
- }
- }
-
- fn on_enter(&self, id: &span::Id, ctx: Context<'_, S>) {
- for l in self {
- l.on_enter(id, ctx.clone());
- }
- }
-
- fn on_exit(&self, id: &span::Id, ctx: Context<'_, S>) {
- for l in self {
- l.on_exit(id, ctx.clone());
- }
- }
-
- fn on_close(&self, id: span::Id, ctx: Context<'_, S>) {
- for l in self {
- l.on_close(id.clone(), ctx.clone());
- }
- }
-
- #[doc(hidden)]
- unsafe fn downcast_raw(&self, id: TypeId) -> Option<*const ()> {
- // If downcasting to `Self`, return a pointer to `self`.
- if id == TypeId::of::<Self>() {
- return Some(self as *const _ as *const ());
- }
-
- // Someone is looking for per-layer filters. But, this `Vec`
- // might contain layers with per-layer filters *and*
- // layers without filters. It should only be treated as a
- // per-layer-filtered layer if *all* its layers have
- // per-layer filters.
- // XXX(eliza): it's a bummer we have to do this linear search every
- // time. It would be nice if this could be cached, but that would
- // require replacing the `Vec` impl with an impl for a newtype...
- if filter::is_plf_downcast_marker(id) && self.iter().any(|s| s.downcast_raw(id).is_none()) {
- return None;
- }
-
- // Otherwise, return the first child of `self` that downcaasts to
- // the selected type, if any.
- // XXX(eliza): hope this is reasonable lol
- self.iter().find_map(|l| l.downcast_raw(id))
- }
- }
}
// === impl SubscriberExt ===
diff --git a/vendor/tracing-subscriber/src/layer/tests.rs b/vendor/tracing-subscriber-0.3.3/src/layer/tests.rs
index d7ad61769..d7ad61769 100644
--- a/vendor/tracing-subscriber/src/layer/tests.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/layer/tests.rs
diff --git a/vendor/tracing-subscriber/src/lib.rs b/vendor/tracing-subscriber-0.3.3/src/lib.rs
index 4bd61000e..563a86dee 100644
--- a/vendor/tracing-subscriber/src/lib.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/lib.rs
@@ -10,7 +10,7 @@
//! `tracing-subscriber` is intended for use by both `Subscriber` authors and
//! application authors using `tracing` to instrument their applications.
//!
-//! *Compiler support: [requires `rustc` 1.49+][msrv]*
+//! *Compiler support: [requires `rustc` 1.42+][msrv]*
//!
//! [msrv]: #supported-rust-versions
//!
@@ -60,11 +60,9 @@
//! **Requires "std"**.
//! - `json`: Enables `fmt` support for JSON output. In JSON output, the ANSI
//! feature does nothing. **Requires "fmt" and "std"**.
-//! - `local-time`: Enables local time formatting when using the [`time`
+//! - [`local-time`]: Enables local time formatting when using the [`time`
//! crate]'s timestamp formatters with the `fmt` subscriber.
//!
-//! [`registry`]: mod@registry
-//!
//! ### Optional Dependencies
//!
//! - [`tracing-log`]: Enables better formatting for events emitted by `log`
@@ -82,7 +80,7 @@
//! used without requiring the Rust standard library, although some features are
//! disabled. Although most of the APIs provided by `tracing-subscriber`, such
//! as [`fmt`] and [`EnvFilter`], require the standard library, some
-//! functionality, such as the [`Layer`] trait, can still be used in
+//! functionality, such as the [`Subscriber`] trait, can still be used in
//! `no_std` environments.
//!
//! The dependency on the standard library is controlled by two crate feature
@@ -104,41 +102,10 @@
//! tracing-subscriber = { version = "0.3", default-features = false, features = ["alloc"] }
//! ```
//!
-//! ### Unstable Features
-//!
-//! These feature flags enable **unstable** features. The public API may break in 0.1.x
-//! releases. To enable these features, the `--cfg tracing_unstable` must be passed to
-//! `rustc` when compiling.
-//!
-//! The following unstable feature flags are currently available:
-//!
-//! * `valuable`: Enables support for serializing values recorded using the
-//! [`valuable`] crate as structured JSON in the [`format::Json`] formatter.
-//!
-//! #### Enabling Unstable Features
-//!
-//! The easiest way to set the `tracing_unstable` cfg is to use the `RUSTFLAGS`
-//! env variable when running `cargo` commands:
-//!
-//! ```shell
-//! RUSTFLAGS="--cfg tracing_unstable" cargo build
-//! ```
-//! Alternatively, the following can be added to the `.cargo/config` file in a
-//! project to automatically enable the cfg flag for that project:
-//!
-//! ```toml
-//! [build]
-//! rustflags = ["--cfg", "tracing_unstable"]
-//! ```
-//!
-//! [feature flags]: https://doc.rust-lang.org/cargo/reference/manifest.html#the-features-section
-//! [`valuable`]: https://crates.io/crates/valuable
-//! [`format::Json`]: crate::fmt::format::Json
-//!
//! ## Supported Rust Versions
//!
//! Tracing is built against the latest stable release. The minimum supported
-//! version is 1.49. The current Tracing version is not guaranteed to build on
+//! version is 1.42. The current Tracing version is not guaranteed to build on
//! Rust versions earlier than the minimum supported version.
//!
//! Tracing follows the same compiler support policies as the rest of the Tokio
@@ -149,18 +116,17 @@
//! supported compiler version is not considered a semver breaking change as
//! long as doing so complies with this policy.
//!
-//! [`Subscriber`]: tracing_core::subscriber::Subscriber
-//! [`tracing`]: https://docs.rs/tracing/latest/tracing
-//! [`EnvFilter`]: filter::EnvFilter
-//! [`fmt`]: mod@fmt
+//! [`tracing`]: https://docs.rs/tracing/latest/tracing/
+//! [`Subscriber`]: https://docs.rs/tracing-core/latest/tracing_core/subscriber/trait.Subscriber.html
+//! [`EnvFilter`]: filter/struct.EnvFilter.html
+//! [`fmt`]: fmt/index.html
//! [`tracing-log`]: https://crates.io/crates/tracing-log
//! [`smallvec`]: https://crates.io/crates/smallvec
//! [`env_logger` crate]: https://crates.io/crates/env_logger
//! [`parking_lot`]: https://crates.io/crates/parking_lot
//! [`time` crate]: https://crates.io/crates/time
-//! [`libstd`]: std
-//! [`liballoc`]: alloc
-#![doc(html_root_url = "https://docs.rs/tracing-subscriber/0.3.14")]
+//! [`liballoc`]: https://doc.rust-lang.org/alloc/index.html
+#![doc(html_root_url = "https://docs.rs/tracing-subscriber/0.3.1")]
#![doc(
html_logo_url = "https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png",
issue_tracker_base_url = "https://github.com/tokio-rs/tracing/issues/"
diff --git a/vendor/tracing-subscriber/src/macros.rs b/vendor/tracing-subscriber-0.3.3/src/macros.rs
index 81351132f..81351132f 100644
--- a/vendor/tracing-subscriber/src/macros.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/macros.rs
diff --git a/vendor/tracing-subscriber/src/prelude.rs b/vendor/tracing-subscriber-0.3.3/src/prelude.rs
index c2230907b..c2230907b 100644
--- a/vendor/tracing-subscriber/src/prelude.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/prelude.rs
diff --git a/vendor/tracing-subscriber/src/registry/extensions.rs b/vendor/tracing-subscriber-0.3.3/src/registry/extensions.rs
index ff76fb599..899e1549f 100644
--- a/vendor/tracing-subscriber/src/registry/extensions.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/registry/extensions.rs
@@ -78,7 +78,7 @@ impl<'a> ExtensionsMut<'a> {
/// should be able to reuse timestamp _x_.
///
/// Therefore, extensions should generally be newtypes, rather than common
- /// types like [`String`](std::string::String), to avoid accidental
+ /// types like [`String`](https://doc.rust-lang.org/std/string/struct.String.html), to avoid accidental
/// cross-`Layer` clobbering.
///
/// ## Panics
diff --git a/vendor/tracing-subscriber/src/registry/mod.rs b/vendor/tracing-subscriber-0.3.3/src/registry/mod.rs
index 38af53e8a..f3b77b6a9 100644
--- a/vendor/tracing-subscriber/src/registry/mod.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/registry/mod.rs
@@ -55,7 +55,8 @@
//! require the root subscriber to be a registry.
//!
//! [`Layer`]: crate::layer::Layer
-//! [`Subscriber`]: tracing_core::Subscriber
+//! [`Subscriber`]:
+//! https://docs.rs/tracing-core/latest/tracing_core/subscriber/trait.Subscriber.html
//! [ctx]: crate::layer::Context
//! [lookup]: crate::layer::Context::span()
use tracing_core::{field::FieldSet, span::Id, Metadata};
@@ -86,9 +87,9 @@ feature! {
/// implement this trait; if they do, any [`Layer`]s wrapping them can look up
/// metadata via the [`Context`] type's [`span()`] method.
///
-/// [`Layer`]: super::layer::Layer
-/// [`Context`]: super::layer::Context
-/// [`span()`]: super::layer::Context::span
+/// [`Layer`]: ../layer/trait.Layer.html
+/// [`Context`]: ../layer/struct.Context.html
+/// [`span()`]: ../layer/struct.Context.html#method.span
pub trait LookupSpan<'a> {
/// The type of span data stored in this registry.
type Data: SpanData<'a>;
@@ -103,6 +104,7 @@ pub trait LookupSpan<'a> {
/// capable of performing more sophisiticated queries.
/// </pre>
///
+ /// [`SpanData`]: trait.SpanData.html
fn span_data(&'a self, id: &Id) -> Option<Self::Data>;
/// Returns a [`SpanRef`] for the span with the given `Id`, if it exists.
@@ -114,7 +116,9 @@ pub trait LookupSpan<'a> {
/// rather than the [`span_data`] method; while _implementors_ of this trait
/// should only implement `span_data`.
///
- /// [`span_data`]: LookupSpan::span_data()
+ /// [`SpanRef`]: struct.SpanRef.html
+ /// [`SpanData`]: trait.SpanData.html
+ /// [`span_data`]: #method.span_data
fn span(&'a self, id: &Id) -> Option<SpanRef<'_, Self>>
where
Self: Sized,
@@ -204,8 +208,8 @@ pub trait SpanData<'a> {
/// provides additional methods for querying the registry based on values from
/// the span.
///
-/// [span data]: SpanData
-/// [registry]: LookupSpan
+/// [span data]: trait.SpanData.html
+/// [registry]: trait.LookupSpan.html
#[derive(Debug)]
pub struct SpanRef<'a, R: LookupSpan<'a>> {
registry: &'a R,
@@ -356,7 +360,7 @@ where
/// Returns a list of [fields] defined by the span.
///
- /// [fields]: tracing_core::field
+ /// [fields]: https://docs.rs/tracing-core/latest/tracing_core/field/index.html
pub fn fields(&self) -> &FieldSet {
self.data.metadata().fields()
}
diff --git a/vendor/tracing-subscriber/src/registry/sharded.rs b/vendor/tracing-subscriber-0.3.3/src/registry/sharded.rs
index b81d5fef8..a6311cb71 100644
--- a/vendor/tracing-subscriber/src/registry/sharded.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/registry/sharded.rs
@@ -75,16 +75,16 @@ use tracing_core::{
/// the distributed tracing system. These IDs can be associated with
/// `tracing` spans using [fields] and/or [stored span data].
///
-/// [span IDs]: tracing_core::span::Id
-/// [slab]: sharded_slab
+/// [span IDs]: https://docs.rs/tracing-core/latest/tracing_core/span/struct.Id.html
+/// [slab]: https://docs.rs/crate/sharded-slab/
/// [`Layer`]: crate::Layer
/// [added]: crate::layer::Layer#composing-layers
/// [extensions]: super::Extensions
/// [closed]: https://docs.rs/tracing/latest/tracing/span/index.html#closing-spans
-/// [considered closed]: tracing_core::subscriber::Subscriber::try_close()
+/// [considered closed]: https://docs.rs/tracing-core/latest/tracing_core/subscriber/trait.Subscriber.html#method.try_close
/// [`Span`]: https://docs.rs/tracing/latest/tracing/span/struct.Span.html
/// [ot]: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#spancontext
-/// [fields]: tracing_core::field
+/// [fields]: https://docs.rs/tracing-core/latest/tracing-core/field/index.html
/// [stored span data]: crate::registry::SpanData::extensions_mut
#[cfg(feature = "registry")]
#[cfg_attr(docsrs, doc(cfg(all(feature = "registry", feature = "std"))))]
@@ -102,8 +102,9 @@ pub struct Registry {
/// [`Layer`s], such as formatted fields, metrics, or distributed traces should
/// be stored in the [extensions] typemap.
///
-/// [`Layer`s]: crate::layer::Layer
-/// [extensions]: Extensions
+/// [`Registry`]: struct.Registry.html
+/// [`Layer`s]: ../layer/trait.Layer.html
+/// [extensions]: struct.Extensions.html
#[cfg(feature = "registry")]
#[cfg_attr(docsrs, doc(cfg(all(feature = "registry", feature = "std"))))]
#[derive(Debug)]
@@ -114,11 +115,10 @@ pub struct Data<'a> {
/// Stored data associated with a span.
///
-/// This type is pooled using [`sharded_slab::Pool`]; when a span is
-/// dropped, the `DataInner` entry at that span's slab index is cleared
-/// in place and reused by a future span. Thus, the `Default` and
-/// [`sharded_slab::Clear`] implementations for this type are
-/// load-bearing.
+/// This type is pooled using `sharded_slab::Pool`; when a span is dropped, the
+/// `DataInner` entry at that span's slab index is cleared in place and reused
+/// by a future span. Thus, the `Default` and `sharded_slab::Clear`
+/// implementations for this type are load-bearing.
#[derive(Debug)]
struct DataInner {
filter_map: FilterMap,
@@ -173,6 +173,7 @@ fn id_to_idx(id: &Id) -> usize {
/// greater than 0, `CloseGuard` decrements the counter by one and
/// _does not_ remove the span from the [`Registry`].
///
+/// [`Registry`]: ./struct.Registry.html
pub(crate) struct CloseGuard<'a> {
id: Id,
registry: &'a Registry,
@@ -188,6 +189,7 @@ impl Registry {
/// processed an `on_close` notification via the `CLOSE_COUNT` thread-local.
/// For additional details, see [`CloseGuard`].
///
+ /// [`CloseGuard`]: ./struct.CloseGuard.html
pub(crate) fn start_close(&self, id: Id) -> CloseGuard<'_> {
CLOSE_COUNT.with(|count| {
let c = count.get();
@@ -214,6 +216,7 @@ thread_local! {
/// track how many layers have processed the close.
/// For additional details, see [`CloseGuard`].
///
+ /// [`CloseGuard`]: ./struct.CloseGuard.html
static CLOSE_COUNT: Cell<usize> = Cell::new(0);
}
@@ -377,7 +380,7 @@ impl<'a> LookupSpan<'a> for Registry {
// === impl CloseGuard ===
impl<'a> CloseGuard<'a> {
- pub(crate) fn set_closing(&mut self) {
+ pub(crate) fn is_closing(&mut self) {
self.is_closing = true;
}
}
diff --git a/vendor/tracing-subscriber/src/registry/stack.rs b/vendor/tracing-subscriber-0.3.3/src/registry/stack.rs
index 4a3f7e59d..4a3f7e59d 100644
--- a/vendor/tracing-subscriber/src/registry/stack.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/registry/stack.rs
diff --git a/vendor/tracing-subscriber/src/reload.rs b/vendor/tracing-subscriber-0.3.3/src/reload.rs
index 3d1743440..b8ec67dfa 100644
--- a/vendor/tracing-subscriber/src/reload.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/reload.rs
@@ -1,69 +1,16 @@
//! Wrapper for a `Layer` to allow it to be dynamically reloaded.
//!
-//! This module provides a [`Layer` type] implementing the [`Layer` trait] or [`Filter` trait]
-//! which wraps another type implementing the corresponding trait. This
-//! allows the wrapped type to be replaced with another
+//! This module provides a [`Layer` type] which wraps another type implementing
+//! the [`Layer` trait], allowing the wrapped type to be replaced with another
//! instance of that type at runtime.
//!
-//! This can be used in cases where a subset of `Layer` or `Filter` functionality
+//! This can be used in cases where a subset of `Subscriber` functionality
//! should be dynamically reconfigured, such as when filtering directives may
//! change at runtime. Note that this layer introduces a (relatively small)
//! amount of overhead, and should thus only be used as needed.
//!
-//! # Examples
-//!
-//! Reloading a [global filtering](crate::layer#global-filtering) layer:
-//!
-//! ```rust
-//! # use tracing::info;
-//! use tracing_subscriber::{filter, fmt, reload, prelude::*};
-//! let filter = filter::LevelFilter::WARN;
-//! let (filter, reload_handle) = reload::Layer::new(filter);
-//! tracing_subscriber::registry()
-//! .with(filter)
-//! .with(fmt::Layer::default())
-//! .init();
-//! #
-//! # // specifying the Registry type is required
-//! # let _: &reload::Handle<filter::LevelFilter, tracing_subscriber::Registry> = &reload_handle;
-//! #
-//! info!("This will be ignored");
-//! reload_handle.modify(|filter| *filter = filter::LevelFilter::INFO);
-//! info!("This will be logged");
-//! ```
-//!
-//! Reloading a [`Filtered`](crate::filter::Filtered) layer:
-//!
-//! ```rust
-//! # use tracing::info;
-//! use tracing_subscriber::{filter, fmt, reload, prelude::*};
-//! let filtered_layer = fmt::Layer::default().with_filter(filter::LevelFilter::WARN);
-//! let (filtered_layer, reload_handle) = reload::Layer::new(filtered_layer);
-//! #
-//! # // specifying the Registry type is required
-//! # let _: &reload::Handle<filter::Filtered<fmt::Layer<tracing_subscriber::Registry>,
-//! # filter::LevelFilter, tracing_subscriber::Registry>,tracing_subscriber::Registry>
-//! # = &reload_handle;
-//! #
-//! tracing_subscriber::registry()
-//! .with(filtered_layer)
-//! .init();
-//! info!("This will be ignored");
-//! reload_handle.modify(|layer| *layer.filter_mut() = filter::LevelFilter::INFO);
-//! info!("This will be logged");
-//! ```
-//!
-//! ## Note
-//!
-//! The [`Layer`] implementation is unable to implement downcasting functionality,
-//! so certain [`Layer`] will fail to downcast if wrapped in a `reload::Layer`.
-//!
-//! If you only want to be able to dynamically change the
-//! `Filter` on a layer, prefer wrapping that `Filter` in the `reload::Layer`.
-//!
-//! [`Filter` trait]: crate::layer::Filter
-//! [`Layer` type]: Layer
-//! [`Layer` trait]: super::layer::Layer
+//! [`Layer` type]: struct.Layer.html
+//! [`Layer` trait]: ../layer/trait.Layer.html
use crate::layer;
use crate::sync::RwLock;
@@ -78,7 +25,7 @@ use tracing_core::{
Event, Metadata,
};
-/// Wraps a `Layer` or `Filter`, allowing it to be reloaded dynamically at runtime.
+/// Wraps a `Layer`, allowing it to be reloaded dynamically at runtime.
#[derive(Debug)]
pub struct Layer<L, S> {
// TODO(eliza): this once used a `crossbeam_util::ShardedRwLock`. We may
@@ -89,7 +36,7 @@ pub struct Layer<L, S> {
_s: PhantomData<fn(S)>,
}
-/// Allows reloading the state of an associated [`Layer`](crate::layer::Layer).
+/// Allows reloading the state of an associated `Layer`.
#[derive(Debug)]
pub struct Handle<L, S> {
inner: Weak<RwLock<L>>,
@@ -145,11 +92,6 @@ where
}
#[inline]
- fn event_enabled(&self, event: &Event<'_>, ctx: layer::Context<'_, S>) -> bool {
- try_lock!(self.inner.read(), else return false).event_enabled(event, ctx)
- }
-
- #[inline]
fn on_event(&self, event: &Event<'_>, ctx: layer::Context<'_, S>) {
try_lock!(self.inner.read()).on_event(event, ctx)
}
@@ -175,57 +117,13 @@ where
}
}
-// ===== impl Filter =====
-
-#[cfg(all(feature = "registry", feature = "std"))]
-#[cfg_attr(docsrs, doc(cfg(all(feature = "registry", feature = "std"))))]
-impl<S, L> crate::layer::Filter<S> for Layer<L, S>
+impl<L, S> Layer<L, S>
where
- L: crate::layer::Filter<S> + 'static,
+ L: crate::Layer<S> + 'static,
S: Subscriber,
{
- #[inline]
- fn callsite_enabled(&self, metadata: &'static Metadata<'static>) -> Interest {
- try_lock!(self.inner.read(), else return Interest::sometimes()).callsite_enabled(metadata)
- }
-
- #[inline]
- fn enabled(&self, metadata: &Metadata<'_>, ctx: &layer::Context<'_, S>) -> bool {
- try_lock!(self.inner.read(), else return false).enabled(metadata, ctx)
- }
-
- #[inline]
- fn on_new_span(&self, attrs: &span::Attributes<'_>, id: &span::Id, ctx: layer::Context<'_, S>) {
- try_lock!(self.inner.read()).on_new_span(attrs, id, ctx)
- }
-
- #[inline]
- fn on_record(&self, span: &span::Id, values: &span::Record<'_>, ctx: layer::Context<'_, S>) {
- try_lock!(self.inner.read()).on_record(span, values, ctx)
- }
-
- #[inline]
- fn on_enter(&self, id: &span::Id, ctx: layer::Context<'_, S>) {
- try_lock!(self.inner.read()).on_enter(id, ctx)
- }
-
- #[inline]
- fn on_exit(&self, id: &span::Id, ctx: layer::Context<'_, S>) {
- try_lock!(self.inner.read()).on_exit(id, ctx)
- }
-
- #[inline]
- fn on_close(&self, id: span::Id, ctx: layer::Context<'_, S>) {
- try_lock!(self.inner.read()).on_close(id, ctx)
- }
-}
-
-impl<L, S> Layer<L, S> {
- /// Wraps the given [`Layer`] or [`Filter`], returning a `reload::Layer`
- /// and a `Handle` that allows the inner value to be modified at runtime.
- ///
- /// [`Layer`]: crate::layer::Layer
- /// [`Filter`]: crate::layer::Filter
+ /// Wraps the given `Layer`, returning a `Layer` and a `Handle` that allows
+ /// the inner type to be modified at runtime.
pub fn new(inner: L) -> (Self, Handle<L, S>) {
let this = Self {
inner: Arc::new(RwLock::new(inner)),
@@ -235,10 +133,7 @@ impl<L, S> Layer<L, S> {
(this, handle)
}
- /// Returns a `Handle` that can be used to reload the wrapped [`Layer`] or [`Filter`].
- ///
- /// [`Layer`]: crate::layer::Layer
- /// [`Filter`]: crate::filter::Filter
+ /// Returns a `Handle` that can be used to reload the wrapped `Layer`.
pub fn handle(&self) -> Handle<L, S> {
Handle {
inner: Arc::downgrade(&self.inner),
@@ -249,27 +144,19 @@ impl<L, S> Layer<L, S> {
// ===== impl Handle =====
-impl<L, S> Handle<L, S> {
- /// Replace the current [`Layer`] or [`Filter`] with the provided `new_value`.
- ///
- /// [`Handle::reload`] cannot be used with the [`Filtered`] layer; use
- /// [`Handle::modify`] instead (see [this issue] for additional details).
- ///
- /// However, if the _only_ the [`Filter`] needs to be modified, use
- /// `reload::Layer` to wrap the `Filter` directly.
- ///
- /// [`Layer`]: crate::layer::Layer
- /// [`Filter`]: crate::layer::Filter
- /// [`Filtered`]: crate::filter::Filtered
- ///
- /// [this issue]: https://github.com/tokio-rs/tracing/issues/1629
- pub fn reload(&self, new_value: impl Into<L>) -> Result<(), Error> {
+impl<L, S> Handle<L, S>
+where
+ L: crate::Layer<S> + 'static,
+ S: Subscriber,
+{
+ /// Replace the current layer with the provided `new_layer`.
+ pub fn reload(&self, new_layer: impl Into<L>) -> Result<(), Error> {
self.modify(|layer| {
- *layer = new_value.into();
+ *layer = new_layer.into();
})
}
- /// Invokes a closure with a mutable reference to the current layer or filter,
+ /// Invokes a closure with a mutable reference to the current layer,
/// allowing it to be modified in place.
pub fn modify(&self, f: impl FnOnce(&mut L)) -> Result<(), Error> {
let inner = self.inner.upgrade().ok_or(Error {
@@ -286,7 +173,7 @@ impl<L, S> Handle<L, S> {
Ok(())
}
- /// Returns a clone of the layer or filter's current value if it still exists.
+ /// Returns a clone of the layer's current value if it still exists.
/// Otherwise, if the subscriber has been dropped, returns `None`.
pub fn clone_current(&self) -> Option<L>
where
@@ -295,7 +182,7 @@ impl<L, S> Handle<L, S> {
self.with_current(L::clone).ok()
}
- /// Invokes a closure with a borrowed reference to the current layer or filter,
+ /// Invokes a closure with a borrowed reference to the current layer,
/// returning the result (or an error if the subscriber no longer exists).
pub fn with_current<T>(&self, f: impl FnOnce(&L) -> T) -> Result<T, Error> {
let inner = self.inner.upgrade().ok_or(Error {
diff --git a/vendor/tracing-subscriber/src/sync.rs b/vendor/tracing-subscriber-0.3.3/src/sync.rs
index ec42b834a..ec42b834a 100644
--- a/vendor/tracing-subscriber/src/sync.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/sync.rs
diff --git a/vendor/tracing-subscriber/src/util.rs b/vendor/tracing-subscriber-0.3.3/src/util.rs
index 1c98aa4d2..1c98aa4d2 100644
--- a/vendor/tracing-subscriber/src/util.rs
+++ b/vendor/tracing-subscriber-0.3.3/src/util.rs
diff --git a/vendor/tracing-subscriber/tests/cached_layer_filters_dont_break_other_layers.rs b/vendor/tracing-subscriber-0.3.3/tests/cached_layer_filters_dont_break_other_layers.rs
index 00e98a994..00e98a994 100644
--- a/vendor/tracing-subscriber/tests/cached_layer_filters_dont_break_other_layers.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/cached_layer_filters_dont_break_other_layers.rs
diff --git a/vendor/tracing-subscriber/tests/duplicate_spans.rs b/vendor/tracing-subscriber-0.3.3/tests/duplicate_spans.rs
index 5d4dc6a85..c4a736f74 100644
--- a/vendor/tracing-subscriber/tests/duplicate_spans.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/duplicate_spans.rs
@@ -1,4 +1,5 @@
#![cfg(all(feature = "env-filter", feature = "fmt"))]
+mod support;
use tracing::{self, subscriber::with_default, Span};
use tracing_subscriber::{filter::EnvFilter, FmtSubscriber};
diff --git a/vendor/tracing-subscriber/tests/field_filter.rs b/vendor/tracing-subscriber-0.3.3/tests/field_filter.rs
index f14a0626d..12b4053b6 100644
--- a/vendor/tracing-subscriber/tests/field_filter.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/field_filter.rs
@@ -1,7 +1,7 @@
#![cfg(feature = "env-filter")]
-
+mod support;
+use self::support::*;
use tracing::{self, subscriber::with_default, Level};
-use tracing_mock::*;
use tracing_subscriber::{filter::EnvFilter, prelude::*};
#[test]
diff --git a/vendor/tracing-subscriber-0.3.3/tests/filter.rs b/vendor/tracing-subscriber-0.3.3/tests/filter.rs
new file mode 100644
index 000000000..8386d34d2
--- /dev/null
+++ b/vendor/tracing-subscriber-0.3.3/tests/filter.rs
@@ -0,0 +1,187 @@
+#![cfg(feature = "env-filter")]
+
+mod support;
+use self::support::*;
+use tracing::{self, subscriber::with_default, Level};
+use tracing_subscriber::{
+ filter::{EnvFilter, LevelFilter},
+ prelude::*,
+};
+
+#[test]
+fn level_filter_event() {
+ let filter: EnvFilter = "info".parse().expect("filter should parse");
+ let (subscriber, finished) = subscriber::mock()
+ .event(event::mock().at_level(Level::INFO))
+ .event(event::mock().at_level(Level::WARN))
+ .event(event::mock().at_level(Level::ERROR))
+ .done()
+ .run_with_handle();
+ let subscriber = subscriber.with(filter);
+
+ with_default(subscriber, || {
+ tracing::trace!("this should be disabled");
+ tracing::info!("this shouldn't be");
+ tracing::debug!(target: "foo", "this should also be disabled");
+ tracing::warn!(target: "foo", "this should be enabled");
+ tracing::error!("this should be enabled too");
+ });
+
+ finished.assert_finished();
+}
+
+#[test]
+fn same_name_spans() {
+ let filter: EnvFilter = "[foo{bar}]=trace,[foo{baz}]=trace"
+ .parse()
+ .expect("filter should parse");
+ let (subscriber, finished) = subscriber::mock()
+ .new_span(
+ span::mock()
+ .named("foo")
+ .at_level(Level::TRACE)
+ .with_field(field::mock("bar")),
+ )
+ .new_span(
+ span::mock()
+ .named("foo")
+ .at_level(Level::TRACE)
+ .with_field(field::mock("baz")),
+ )
+ .done()
+ .run_with_handle();
+ let subscriber = subscriber.with(filter);
+ with_default(subscriber, || {
+ tracing::trace_span!("foo", bar = 1);
+ tracing::trace_span!("foo", baz = 1);
+ });
+
+ finished.assert_finished();
+}
+
+#[test]
+fn level_filter_event_with_target() {
+ let filter: EnvFilter = "info,stuff=debug".parse().expect("filter should parse");
+ let (subscriber, finished) = subscriber::mock()
+ .event(event::mock().at_level(Level::INFO))
+ .event(event::mock().at_level(Level::DEBUG).with_target("stuff"))
+ .event(event::mock().at_level(Level::WARN).with_target("stuff"))
+ .event(event::mock().at_level(Level::ERROR))
+ .event(event::mock().at_level(Level::ERROR).with_target("stuff"))
+ .done()
+ .run_with_handle();
+ let subscriber = subscriber.with(filter);
+
+ with_default(subscriber, || {
+ tracing::trace!("this should be disabled");
+ tracing::info!("this shouldn't be");
+ tracing::debug!(target: "stuff", "this should be enabled");
+ tracing::debug!("but this shouldn't");
+ tracing::trace!(target: "stuff", "and neither should this");
+ tracing::warn!(target: "stuff", "this should be enabled");
+ tracing::error!("this should be enabled too");
+ tracing::error!(target: "stuff", "this should be enabled also");
+ });
+
+ finished.assert_finished();
+}
+
+#[test]
+fn not_order_dependent() {
+ // this test reproduces tokio-rs/tracing#623
+
+ let filter: EnvFilter = "stuff=debug,info".parse().expect("filter should parse");
+ let (subscriber, finished) = subscriber::mock()
+ .event(event::mock().at_level(Level::INFO))
+ .event(event::mock().at_level(Level::DEBUG).with_target("stuff"))
+ .event(event::mock().at_level(Level::WARN).with_target("stuff"))
+ .event(event::mock().at_level(Level::ERROR))
+ .event(event::mock().at_level(Level::ERROR).with_target("stuff"))
+ .done()
+ .run_with_handle();
+ let subscriber = subscriber.with(filter);
+
+ with_default(subscriber, || {
+ tracing::trace!("this should be disabled");
+ tracing::info!("this shouldn't be");
+ tracing::debug!(target: "stuff", "this should be enabled");
+ tracing::debug!("but this shouldn't");
+ tracing::trace!(target: "stuff", "and neither should this");
+ tracing::warn!(target: "stuff", "this should be enabled");
+ tracing::error!("this should be enabled too");
+ tracing::error!(target: "stuff", "this should be enabled also");
+ });
+
+ finished.assert_finished();
+}
+
+#[test]
+fn add_directive_enables_event() {
+ // this test reproduces tokio-rs/tracing#591
+
+ // by default, use info level
+ let mut filter = EnvFilter::new(LevelFilter::INFO.to_string());
+
+ // overwrite with a more specific directive
+ filter = filter.add_directive("hello=trace".parse().expect("directive should parse"));
+
+ let (subscriber, finished) = subscriber::mock()
+ .event(event::mock().at_level(Level::INFO).with_target("hello"))
+ .event(event::mock().at_level(Level::TRACE).with_target("hello"))
+ .done()
+ .run_with_handle();
+ let subscriber = subscriber.with(filter);
+
+ with_default(subscriber, || {
+ tracing::info!(target: "hello", "hello info");
+ tracing::trace!(target: "hello", "hello trace");
+ });
+
+ finished.assert_finished();
+}
+
+#[test]
+fn span_name_filter_is_dynamic() {
+ let filter: EnvFilter = "info,[cool_span]=debug"
+ .parse()
+ .expect("filter should parse");
+ let (subscriber, finished) = subscriber::mock()
+ .event(event::mock().at_level(Level::INFO))
+ .enter(span::mock().named("cool_span"))
+ .event(event::mock().at_level(Level::DEBUG))
+ .enter(span::mock().named("uncool_span"))
+ .event(event::mock().at_level(Level::WARN))
+ .event(event::mock().at_level(Level::DEBUG))
+ .exit(span::mock().named("uncool_span"))
+ .exit(span::mock().named("cool_span"))
+ .enter(span::mock().named("uncool_span"))
+ .event(event::mock().at_level(Level::WARN))
+ .event(event::mock().at_level(Level::ERROR))
+ .exit(span::mock().named("uncool_span"))
+ .done()
+ .run_with_handle();
+ let subscriber = subscriber.with(filter);
+
+ with_default(subscriber, || {
+ tracing::trace!("this should be disabled");
+ tracing::info!("this shouldn't be");
+ let cool_span = tracing::info_span!("cool_span");
+ let uncool_span = tracing::info_span!("uncool_span");
+
+ {
+ let _enter = cool_span.enter();
+ tracing::debug!("i'm a cool event");
+ tracing::trace!("i'm cool, but not cool enough");
+ let _enter2 = uncool_span.enter();
+ tracing::warn!("warning: extremely cool!");
+ tracing::debug!("i'm still cool");
+ }
+
+ let _enter = uncool_span.enter();
+ tracing::warn!("warning: not that cool");
+ tracing::trace!("im not cool enough");
+ tracing::error!("uncool error");
+ });
+
+ finished.assert_finished();
+}
diff --git a/vendor/tracing-subscriber/tests/filter_log.rs b/vendor/tracing-subscriber-0.3.3/tests/filter_log.rs
index 8d57ed600..28e742501 100644
--- a/vendor/tracing-subscriber/tests/filter_log.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/filter_log.rs
@@ -1,7 +1,7 @@
#![cfg(all(feature = "env-filter", feature = "tracing-log"))]
-
+mod support;
+use self::support::*;
use tracing::{self, Level};
-use tracing_mock::*;
use tracing_subscriber::{filter::EnvFilter, prelude::*};
mod my_module {
diff --git a/vendor/tracing-subscriber/tests/fmt_max_level_hint.rs b/vendor/tracing-subscriber-0.3.3/tests/fmt_max_level_hint.rs
index 57a0f6e3f..57a0f6e3f 100644
--- a/vendor/tracing-subscriber/tests/fmt_max_level_hint.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/fmt_max_level_hint.rs
diff --git a/vendor/tracing-subscriber/tests/hinted_layer_filters_dont_break_other_layers.rs b/vendor/tracing-subscriber-0.3.3/tests/hinted_layer_filters_dont_break_other_layers.rs
index 897dae282..897dae282 100644
--- a/vendor/tracing-subscriber/tests/hinted_layer_filters_dont_break_other_layers.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/hinted_layer_filters_dont_break_other_layers.rs
diff --git a/vendor/tracing-subscriber/tests/layer_filter_interests_are_cached.rs b/vendor/tracing-subscriber-0.3.3/tests/layer_filter_interests_are_cached.rs
index d89d3bf17..d89d3bf17 100644
--- a/vendor/tracing-subscriber/tests/layer_filter_interests_are_cached.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/layer_filter_interests_are_cached.rs
diff --git a/vendor/tracing-subscriber/tests/layer_filters/boxed.rs b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/boxed.rs
index 0fe37188e..0fe37188e 100644
--- a/vendor/tracing-subscriber/tests/layer_filters/boxed.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/boxed.rs
diff --git a/vendor/tracing-subscriber/tests/layer_filters/downcast_raw.rs b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/downcast_raw.rs
index b5f7e35ce..b5f7e35ce 100644
--- a/vendor/tracing-subscriber/tests/layer_filters/downcast_raw.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/downcast_raw.rs
diff --git a/vendor/tracing-subscriber/tests/layer_filters/filter_scopes.rs b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/filter_scopes.rs
index 7fd7d843b..7fd7d843b 100644
--- a/vendor/tracing-subscriber/tests/layer_filters/filter_scopes.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/filter_scopes.rs
diff --git a/vendor/tracing-subscriber/tests/layer_filters/main.rs b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/main.rs
index 0233f063b..2359584d7 100644
--- a/vendor/tracing-subscriber/tests/layer_filters/main.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/main.rs
@@ -7,10 +7,9 @@ mod downcast_raw;
mod filter_scopes;
mod targets;
mod trees;
-mod vec;
use tracing::{level_filters::LevelFilter, Level};
-use tracing_subscriber::{filter, prelude::*, Layer};
+use tracing_subscriber::{filter, prelude::*};
#[test]
fn basic_layer_filters() {
diff --git a/vendor/tracing-subscriber/tests/layer_filters/targets.rs b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/targets.rs
index c8133044b..c8133044b 100644
--- a/vendor/tracing-subscriber/tests/layer_filters/targets.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/targets.rs
diff --git a/vendor/tracing-subscriber/tests/layer_filters/trees.rs b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/trees.rs
index 18cdd8ccc..18cdd8ccc 100644
--- a/vendor/tracing-subscriber/tests/layer_filters/trees.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/layer_filters/trees.rs
diff --git a/vendor/tracing-subscriber/tests/multiple_layer_filter_interests_cached.rs b/vendor/tracing-subscriber-0.3.3/tests/multiple_layer_filter_interests_cached.rs
index 5c25e7f03..5c25e7f03 100644
--- a/vendor/tracing-subscriber/tests/multiple_layer_filter_interests_cached.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/multiple_layer_filter_interests_cached.rs
diff --git a/vendor/tracing-subscriber/tests/registry_max_level_hint.rs b/vendor/tracing-subscriber-0.3.3/tests/registry_max_level_hint.rs
index f94c8a1fb..f94c8a1fb 100644
--- a/vendor/tracing-subscriber/tests/registry_max_level_hint.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/registry_max_level_hint.rs
diff --git a/vendor/tracing-subscriber/tests/registry_with_subscriber.rs b/vendor/tracing-subscriber-0.3.3/tests/registry_with_subscriber.rs
index 50d2f551d..3f8d99b1d 100644
--- a/vendor/tracing-subscriber/tests/registry_with_subscriber.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/registry_with_subscriber.rs
@@ -4,7 +4,7 @@ use tracing_subscriber::prelude::*;
#[tokio::test]
async fn future_with_subscriber() {
- tracing_subscriber::registry().init();
+ let _default = tracing_subscriber::registry().init();
let span = tracing::info_span!("foo");
let _e = span.enter();
let span = tracing::info_span!("bar");
diff --git a/vendor/tracing-subscriber/tests/reload.rs b/vendor/tracing-subscriber-0.3.3/tests/reload.rs
index b8b6c2b46..5fe422e08 100644
--- a/vendor/tracing-subscriber/tests/reload.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/reload.rs
@@ -1,4 +1,4 @@
-#![cfg(feature = "std")]
+#![cfg(feature = "reload")]
use std::sync::atomic::{AtomicUsize, Ordering};
use tracing_core::{
span::{Attributes, Id, Record},
@@ -79,63 +79,3 @@ fn reload_handle() {
assert_eq!(FILTER2_CALLS.load(Ordering::SeqCst), 1);
})
}
-
-#[test]
-#[cfg(feature = "registry")]
-fn reload_filter() {
- struct NopLayer;
- impl<S: Subscriber> tracing_subscriber::Layer<S> for NopLayer {
- fn register_callsite(&self, _m: &Metadata<'_>) -> Interest {
- Interest::sometimes()
- }
-
- fn enabled(&self, _m: &Metadata<'_>, _: layer::Context<'_, S>) -> bool {
- true
- }
- }
-
- static FILTER1_CALLS: AtomicUsize = AtomicUsize::new(0);
- static FILTER2_CALLS: AtomicUsize = AtomicUsize::new(0);
-
- enum Filter {
- One,
- Two,
- }
-
- impl<S: Subscriber> tracing_subscriber::layer::Filter<S> for Filter {
- fn enabled(&self, m: &Metadata<'_>, _: &layer::Context<'_, S>) -> bool {
- println!("ENABLED: {:?}", m);
- match self {
- Filter::One => FILTER1_CALLS.fetch_add(1, Ordering::SeqCst),
- Filter::Two => FILTER2_CALLS.fetch_add(1, Ordering::SeqCst),
- };
- true
- }
- }
- fn event() {
- tracing::trace!("my event");
- }
-
- let (filter, handle) = Layer::new(Filter::One);
-
- let dispatcher = tracing_core::Dispatch::new(
- tracing_subscriber::registry().with(NopLayer.with_filter(filter)),
- );
-
- tracing_core::dispatcher::with_default(&dispatcher, || {
- assert_eq!(FILTER1_CALLS.load(Ordering::SeqCst), 0);
- assert_eq!(FILTER2_CALLS.load(Ordering::SeqCst), 0);
-
- event();
-
- assert_eq!(FILTER1_CALLS.load(Ordering::SeqCst), 1);
- assert_eq!(FILTER2_CALLS.load(Ordering::SeqCst), 0);
-
- handle.reload(Filter::Two).expect("should reload");
-
- event();
-
- assert_eq!(FILTER1_CALLS.load(Ordering::SeqCst), 1);
- assert_eq!(FILTER2_CALLS.load(Ordering::SeqCst), 1);
- })
-}
diff --git a/vendor/tracing-subscriber/tests/same_len_filters.rs b/vendor/tracing-subscriber-0.3.3/tests/same_len_filters.rs
index 879e578d7..b525ea6fd 100644
--- a/vendor/tracing-subscriber/tests/same_len_filters.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/same_len_filters.rs
@@ -1,9 +1,9 @@
// These tests include field filters with no targets, so they have to go in a
// separate file.
#![cfg(feature = "env-filter")]
-
+mod support;
+use self::support::*;
use tracing::{self, subscriber::with_default, Level};
-use tracing_mock::*;
use tracing_subscriber::{filter::EnvFilter, prelude::*};
#[test]
diff --git a/vendor/tracing-subscriber/tests/support.rs b/vendor/tracing-subscriber-0.3.3/tests/support.rs
index 50e0e6669..848ebdc63 100644
--- a/vendor/tracing-subscriber/tests/support.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/support.rs
@@ -1,15 +1,20 @@
#![allow(missing_docs, dead_code)]
-pub use tracing_mock::{event, field, span, subscriber};
-
-use tracing_core::{
- span::{Attributes, Id, Record},
- Event, Subscriber,
-};
-use tracing_mock::{
+pub use self::support::{event, field, span, subscriber};
+// This has to have the same name as the module in `tracing`.
+// path attribute requires referenced module to have same name so allow module inception here
+#[allow(clippy::module_inception)]
+#[path = "../../tracing/tests/support/mod.rs"]
+mod support;
+
+use self::{
event::MockEvent,
span::{MockSpan, NewSpan},
subscriber::{Expect, MockHandle},
};
+use tracing_core::{
+ span::{Attributes, Id, Record},
+ Event, Subscriber,
+};
use tracing_subscriber::{
layer::{Context, Layer},
registry::{LookupSpan, SpanRef},
diff --git a/vendor/tracing-subscriber/tests/unhinted_layer_filters_dont_break_other_layers.rs b/vendor/tracing-subscriber-0.3.3/tests/unhinted_layer_filters_dont_break_other_layers.rs
index 9fa5c6bd4..9fa5c6bd4 100644
--- a/vendor/tracing-subscriber/tests/unhinted_layer_filters_dont_break_other_layers.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/unhinted_layer_filters_dont_break_other_layers.rs
diff --git a/vendor/tracing-subscriber/tests/utils.rs b/vendor/tracing-subscriber-0.3.3/tests/utils.rs
index e95868d5e..ff025a2a2 100644
--- a/vendor/tracing-subscriber/tests/utils.rs
+++ b/vendor/tracing-subscriber-0.3.3/tests/utils.rs
@@ -1,6 +1,6 @@
#![cfg(feature = "std")]
-
-use tracing_mock::*;
+mod support;
+use self::support::*;
use tracing_subscriber::prelude::*;
#[test]
diff --git a/vendor/tracing-subscriber/.cargo-checksum.json b/vendor/tracing-subscriber/.cargo-checksum.json
deleted file mode 100644
index 509cf43fc..000000000
--- a/vendor/tracing-subscriber/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CHANGELOG.md":"29fe135a995cb47126440183c4d42f842ad08ec0b3796a701f28cc83991b73b8","Cargo.toml":"62d5ba5d1eef80f27e41b45b3d9bde666143ab488b39e2f675774855142e0022","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"5ea57d24ff4451b10feb2689f1046d8d43bf6af4ee60285e676dfd1a586c65db","benches/enter.rs":"4a94a04e2abd07950ef2f0b646f4dcdf4ff00abf6396edb5a53c8b41b7691b1a","benches/filter.rs":"6374005ffa47fa19880bb95e3e37406f40ea72a02c5136f4d5eb4c663d452b18","benches/filter_log.rs":"612716bdf9a188093e84d014a4847f18157f148f7d64e54150cd5c91ac709a8a","benches/fmt.rs":"5a0ff37967ffef3a221eebb78855d031e2e883a8a67528c8e794cc6f16cbee8a","benches/support/mod.rs":"72bef51154da9c9b3d81300195c1929a818858fa4b4fc2aa07b49ca586f4cd39","src/field/debug.rs":"4ab50198a0b042d92fefa77b5cac0aef7ba6936149fa555f4b6e2036dcd7f2d7","src/field/delimited.rs":"5e7967637dc3181c097637dcb2a95f35db16583b5fc293b30211db5779ab21ab","src/field/display.rs":"da8cfcb22a39f451f075e2c3a9ce5193c6afe19853cdbd643239657cac5b7e47","src/field/mod.rs":"cb8ab273159f42fc8ebe71c82acc63c962e546328fc4aa9fd5948ce996ef9e05","src/filter/directive.rs":"6341c3a1c8b6d33171647964c35816317c81b03bb098b493f1f1a22222f6ce84","src/filter/env/builder.rs":"8f527b1b0e3d9c572046235e0304146a574fe114b757af90a1c07851a07ba2cf","src/filter/env/directive.rs":"ecd2a7ffb882869f8ea9b0398f5af58ce1797a216b9dc9086c21363d1d500e77","src/filter/env/field.rs":"e1e32a2fc39884c9a5df1d5047128e43f1d0720c0b9daa6bf1e08ca9bcc5f537","src/filter/env/mod.rs":"8403df3f061a1c266b6ab6b30b03c6eb32c1c9354037a2d1eeb36817932e6ea5","src/filter/filter_fn.rs":"0debbc4a4b4d2a57b2a06905017ac908bf34b0a64aaf961535fbf6f4d5a700a9","src/filter/layer_filters/combinator.rs":"abf90b8d7a21486b28f20d4b648395b2b95a35b526bbdaba63bd2c0181ae9e87","src/filter/layer_filters/mod.rs":"2046a860b21751791dae61d20219b3d59049b84fb289ea1fca7796d214c5643c","src/filter/level.rs":"cc449757aac47caaf19dd5ba4d74c8efbcd7531fcd6c13da0c5f6fdda12cc9ca","src/filter/mod.rs":"8ebfd0dc92415ff27ec552f20919e598842a87186f13f120449053a96e1e3307","src/filter/targets.rs":"eaa11d620017269770da5b2b97302b3beb81187242912260ca98e6d60ea77780","src/fmt/fmt_layer.rs":"5042d3e2eba5f68e9041c94b52f26ab17b84f68c54d16e4c0edd9d3a3699f727","src/fmt/format/json.rs":"554985ed40f7c59787aae87626144241ca973929e33979c54f821b673b71fec9","src/fmt/format/mod.rs":"a5f6b879802d353192235cf85aa8653afa3e8ead09955e631a39415324ce42d2","src/fmt/format/pretty.rs":"30fac9a916f3b9f572efa3b650c6dab7d86a57ce903cdbba6c6c0a52064cf238","src/fmt/mod.rs":"d5274d1f8106dc7497d2be7c6d874aeca15b9ca0fd4e0c6775d3774e75b30099","src/fmt/time/datetime.rs":"778d4604d800e46b940087394e7b72750738b554e02aea523fa9820ab0768c08","src/fmt/time/mod.rs":"30c97a9d3abd099f52c4c91c7b5f0d29ed9d54d80d1718c6fb74bfd664589de1","src/fmt/time/time_crate.rs":"1bfd59516a583e396afc1770250aa8c06b52f6162a6e7b2cadb860b7eebd9d76","src/fmt/writer.rs":"1931125cf14019b66b42a9ff95e5794f344697f799c021b4a7d48fd7eb7b58f4","src/layer/context.rs":"77137d8b2810c9059ce7838c3b665748bcb9765487d6103b92596e08b0e9e84b","src/layer/layered.rs":"945e42296ce3e86aa405eb31efdef4346cdfd84111f36700cc73e473e3ce5b28","src/layer/mod.rs":"b4febff42ea5ae12b92b8c73b7c691d9486e671446da99669fc5348314721cc9","src/layer/tests.rs":"3e974d627c4bc4269cfa10c82c890e596c9d46af8e6bc03c6c117bde1237e948","src/lib.rs":"bbe402c3ff042550b265976a688a0e3a95ac9ece77f290992e93fd2f51643f5c","src/macros.rs":"e184bffc6b5999c48e365ad08343dca764a5fb711b789beb26bd1d5f1d767726","src/prelude.rs":"088635def33be9a4c4b6ed934dc22540c555e27d62f7625a43aa9c0e525ca467","src/registry/extensions.rs":"0418b39287bbc06cc95b8cecd6a25aa808b8e04714d842340ff75db458cafe5b","src/registry/mod.rs":"76627b056ce39d006708a6273b6418d001b688f016f58aa546e7821d1ef7f3bb","src/registry/sharded.rs":"aaac353632b1bbb804048b40cdfce9877688efa0679ae42ab36a095fd3e3877f","src/registry/stack.rs":"9ef333d6a8a28a064e80ff1e376dbb07bc597009010ec332b2dc3ab435d737c2","src/reload.rs":"478f7612e19fa606cfa16f2791e426267256fe5799c3918b57209d3ebfa70406","src/sync.rs":"7f78f3de5b618a999be0e61f936a233975e7769f1ebb55a0e48c3d199e9c45e3","src/util.rs":"55b4e9d63112f9d5a12a287273a9b1212741058384332d3edc024168cacfd627","tests/cached_layer_filters_dont_break_other_layers.rs":"b2084542a014abeff821b30b2b8c21e32bfdcffae53ce5335fb588f557fa4244","tests/duplicate_spans.rs":"3bf35184fb7d1dc5f33e5098820febbec37ef3ccd06b693d11b5585affb60ff4","tests/env_filter/main.rs":"b2d89ee7aaf94f0563e4e5b025cf43186ec61657b763b7c0ae010ff548635251","tests/env_filter/per_layer.rs":"19e9998922f24ec368fcbcda406f43a95335551c4c1669b509bbfc1ef216432a","tests/event_enabling.rs":"15e301a8ff6c74c454547dad15a47b5f11fc54e539162191f21462b6d5080830","tests/field_filter.rs":"fb8735801ba7ecabb421ca361bd1c846841aee63eecbdd665f9544a1cec70f67","tests/filter_log.rs":"086f1e708a2e7389024d7e36d963947909d94c1975db92f4fc425b5cba2af533","tests/fmt_max_level_hint.rs":"d4c6d6f976ae41ab8052fa610a7337ad7150802cbd5634cb30fc45c1f215cfcd","tests/hinted_layer_filters_dont_break_other_layers.rs":"d5ba9cfb6784cf59f007e673ad549dc722d109f6b3d4a69f6aa11b25ca10b469","tests/layer_filter_interests_are_cached.rs":"d036d1c4bc3754e94ebfdda9c841f4858ccec40aba0720f3fbf26c817bfe5a83","tests/layer_filters/boxed.rs":"04db459721a26d6502a2b3fbe42154c5a451021a9374a18c017d10971f44e0c0","tests/layer_filters/combinators.rs":"cdbfaa37fa5b0439ec2ae8028601d22120ff2a42867a2af8a3b27fc58e70cb6c","tests/layer_filters/downcast_raw.rs":"9b90ead571543cbe14e89b4fe637360d9baf3069f6f656ed3bdf65e7318648f1","tests/layer_filters/filter_scopes.rs":"02611bc58d0d8a67a127eca8cab1b2d9a9901bd2c8a8daad41adf6089b28aee0","tests/layer_filters/main.rs":"fe0ed219b79bcbb2ece4c224ee5bf05662fe3b23a224f746b273afdb1abc0fbd","tests/layer_filters/targets.rs":"138e3f9ddd68571d94c5aff9d54ee2fbc5f44724c6ee42477a411740ccb79ee6","tests/layer_filters/trees.rs":"4df7b5cf12da44a9255c56e5b80e2b0cf84820230ba916f324c67bc3ee4e4605","tests/layer_filters/vec.rs":"eaf2e7fe0a76633cc02bc729513202a5fb169e2bdb5a8042d8c7bd1f7092691d","tests/multiple_layer_filter_interests_cached.rs":"1ea195f03e58d715228ec1b604f85bda2fc82812d05b2f6370d5edd34a035f32","tests/option.rs":"071af56d21e1438b112c7698790328f4797d2d4dd4c7e4857ea8d4825f1fac89","tests/registry_max_level_hint.rs":"ba386d32b8d13832d7009163241c3d0723488c0393d85647eb9368776251e4fc","tests/registry_with_subscriber.rs":"61a545e1bf3f75efd0dd18c20bb93e8a1f2e0158b342179a94228c4cbd5bb9cc","tests/reload.rs":"9a1b0bcb838a0f11beb528db7e578f12cc26e1592236dd7c2fa849271025e72c","tests/same_len_filters.rs":"eceb745f7f5b6c8737c1860a58e2cf98a048fc486dee4379e94485f41c92c925","tests/support.rs":"d5d8ae7a143bda971e24dcba01137be0efea957d732b43502fd845c3bc952f8b","tests/unhinted_layer_filters_dont_break_other_layers.rs":"519cfef4977e511af938546d4208c645a28248c8ed8666daf180f0ad32f0a261","tests/utils.rs":"2c37d9f39010767190f72cb2b3faa3131985764aa547027197108299a9a6bb9e","tests/vec.rs":"d1176f3e1b0954129792a28282b95084d417143b0cc4e35887b95cee3c675392","tests/vec_subscriber_filter_interests_cached.rs":"115a0f097cd649c570eabe74f82791bbe15b2de32a2eef403575661798aadd82"},"package":"3a713421342a5a666b7577783721d3117f1b69a393df803ee17bb73b1e122a59"} \ No newline at end of file
diff --git a/vendor/tracing-subscriber/src/filter/env/builder.rs b/vendor/tracing-subscriber/src/filter/env/builder.rs
deleted file mode 100644
index 36b520543..000000000
--- a/vendor/tracing-subscriber/src/filter/env/builder.rs
+++ /dev/null
@@ -1,324 +0,0 @@
-use super::{
- directive::{self, Directive},
- EnvFilter, FromEnvError,
-};
-use crate::sync::RwLock;
-use std::env;
-use thread_local::ThreadLocal;
-use tracing::level_filters::STATIC_MAX_LEVEL;
-
-/// A [builder] for constructing new [`EnvFilter`]s.
-///
-/// [builder]: https://rust-unofficial.github.io/patterns/patterns/creational/builder.html
-#[derive(Debug, Clone)]
-pub struct Builder {
- regex: bool,
- env: Option<String>,
- default_directive: Option<Directive>,
-}
-
-impl Builder {
- /// Sets whether span field values can be matched with regular expressions.
- ///
- /// If this is `true`, field filter directives will be interpreted as
- /// regular expressions if they are not able to be interpreted as a `bool`,
- /// `i64`, `u64`, or `f64` literal. If this is `false,` those field values
- /// will be interpreted as literal [`std::fmt::Debug`] output instead.
- ///
- /// By default, regular expressions are enabled.
- ///
- /// **Note**: when [`EnvFilter`]s are constructed from untrusted inputs,
- /// disabling regular expressions is strongly encouraged.
- pub fn with_regex(self, regex: bool) -> Self {
- Self { regex, ..self }
- }
-
- /// Sets a default [filtering directive] that will be added to the filter if
- /// the parsed string or environment variable contains no filter directives.
- ///
- /// By default, there is no default directive.
- ///
- /// # Examples
- ///
- /// If [`parse`], [`parse_lossy`], [`from_env`], or [`from_env_lossy`] are
- /// called with an empty string or environment variable, the default
- /// directive is used instead:
- ///
- /// ```rust
- /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
- /// use tracing_subscriber::filter::{EnvFilter, LevelFilter};
- ///
- /// let filter = EnvFilter::builder()
- /// .with_default_directive(LevelFilter::INFO.into())
- /// .parse("")?;
- ///
- /// assert_eq!(format!("{}", filter), "info");
- /// # Ok(()) }
- /// ```
- ///
- /// Note that the `lossy` variants ([`parse_lossy`] and [`from_env_lossy`])
- /// will ignore any invalid directives. If all directives in a filter
- /// string or environment variable are invalid, those methods will also use
- /// the default directive:
- ///
- /// ```rust
- /// use tracing_subscriber::filter::{EnvFilter, LevelFilter};
- ///
- /// let filter = EnvFilter::builder()
- /// .with_default_directive(LevelFilter::INFO.into())
- /// .parse_lossy("some_target=fake level,foo::bar=lolwut");
- ///
- /// assert_eq!(format!("{}", filter), "info");
- /// ```
- ///
- ///
- /// If the string or environment variable contains valid filtering
- /// directives, the default directive is not used:
- ///
- /// ```rust
- /// use tracing_subscriber::filter::{EnvFilter, LevelFilter};
- ///
- /// let filter = EnvFilter::builder()
- /// .with_default_directive(LevelFilter::INFO.into())
- /// .parse_lossy("foo=trace");
- ///
- /// // The default directive is *not* used:
- /// assert_eq!(format!("{}", filter), "foo=trace");
- /// ```
- ///
- /// Parsing a more complex default directive from a string:
- ///
- /// ```rust
- /// # fn main() -> Result<(), Box<dyn std::error::Error>> {
- /// use tracing_subscriber::filter::{EnvFilter, LevelFilter};
- ///
- /// let default = "myapp=debug".parse()
- /// .expect("hard-coded default directive should be valid");
- ///
- /// let filter = EnvFilter::builder()
- /// .with_default_directive(default)
- /// .parse("")?;
- ///
- /// assert_eq!(format!("{}", filter), "myapp=debug");
- /// # Ok(()) }
- /// ```
- ///
- /// [`parse_lossy`]: Self::parse_lossy
- /// [`from_env_lossy`]: Self::from_env_lossy
- /// [`parse`]: Self::parse
- /// [`from_env`]: Self::from_env
- pub fn with_default_directive(self, default_directive: Directive) -> Self {
- Self {
- default_directive: Some(default_directive),
- ..self
- }
- }
-
- /// Sets the name of the environment variable used by the [`from_env`],
- /// [`from_env_lossy`], and [`try_from_env`] methods.
- ///
- /// By default, this is the value of [`EnvFilter::DEFAULT_ENV`]
- /// (`RUST_LOG`).
- ///
- /// [`from_env`]: Self::from_env
- /// [`from_env_lossy`]: Self::from_env_lossy
- /// [`try_from_env`]: Self::try_from_env
- pub fn with_env_var(self, var: impl ToString) -> Self {
- Self {
- env: Some(var.to_string()),
- ..self
- }
- }
-
- /// Returns a new [`EnvFilter`] from the directives in the given string,
- /// *ignoring* any that are invalid.
- pub fn parse_lossy<S: AsRef<str>>(&self, dirs: S) -> EnvFilter {
- let directives = dirs
- .as_ref()
- .split(',')
- .filter(|s| !s.is_empty())
- .filter_map(|s| match Directive::parse(s, self.regex) {
- Ok(d) => Some(d),
- Err(err) => {
- eprintln!("ignoring `{}`: {}", s, err);
- None
- }
- });
- self.from_directives(directives)
- }
-
- /// Returns a new [`EnvFilter`] from the directives in the given string,
- /// or an error if any are invalid.
- pub fn parse<S: AsRef<str>>(&self, dirs: S) -> Result<EnvFilter, directive::ParseError> {
- let dirs = dirs.as_ref();
- if dirs.is_empty() {
- return Ok(self.from_directives(std::iter::empty()));
- }
- let directives = dirs
- .split(',')
- .filter(|s| !s.is_empty())
- .map(|s| Directive::parse(s, self.regex))
- .collect::<Result<Vec<_>, _>>()?;
- Ok(self.from_directives(directives))
- }
-
- /// Returns a new [`EnvFilter`] from the directives in the configured
- /// environment variable, ignoring any directives that are invalid.
- pub fn from_env_lossy(&self) -> EnvFilter {
- let var = env::var(self.env_var_name()).unwrap_or_default();
- self.parse_lossy(var)
- }
-
- /// Returns a new [`EnvFilter`] from the directives in the in the configured
- /// environment variable, or an error if the environment variable is not set
- /// or contains invalid directives.
- pub fn from_env(&self) -> Result<EnvFilter, FromEnvError> {
- let var = env::var(self.env_var_name()).unwrap_or_default();
- self.parse(var).map_err(Into::into)
- }
-
- /// Returns a new [`EnvFilter`] from the directives in the in the configured
- /// environment variable, or an error if the environment variable is not set
- /// or contains invalid directives.
- pub fn try_from_env(&self) -> Result<EnvFilter, FromEnvError> {
- let var = env::var(self.env_var_name())?;
- self.parse(var).map_err(Into::into)
- }
-
- // TODO(eliza): consider making this a public API?
- // Clippy doesn't love this naming, because it suggests that `from_` methods
- // should not take a `Self`...but in this case, it's the `EnvFilter` that is
- // being constructed "from" the directives, rather than the builder itself.
- #[allow(clippy::wrong_self_convention)]
- pub(super) fn from_directives(
- &self,
- directives: impl IntoIterator<Item = Directive>,
- ) -> EnvFilter {
- use tracing::Level;
-
- let mut directives: Vec<_> = directives.into_iter().collect();
- let mut disabled = Vec::new();
- for directive in &mut directives {
- if directive.level > STATIC_MAX_LEVEL {
- disabled.push(directive.clone());
- }
- if !self.regex {
- directive.deregexify();
- }
- }
-
- if !disabled.is_empty() {
- #[cfg(feature = "ansi_term")]
- use ansi_term::{Color, Style};
- // NOTE: We can't use a configured `MakeWriter` because the EnvFilter
- // has no knowledge of any underlying subscriber or collector, which
- // may or may not use a `MakeWriter`.
- let warn = |msg: &str| {
- #[cfg(not(feature = "ansi_term"))]
- let msg = format!("warning: {}", msg);
- #[cfg(feature = "ansi_term")]
- let msg = {
- let bold = Style::new().bold();
- let mut warning = Color::Yellow.paint("warning");
- warning.style_ref_mut().is_bold = true;
- format!("{}{} {}", warning, bold.paint(":"), bold.paint(msg))
- };
- eprintln!("{}", msg);
- };
- let ctx_prefixed = |prefix: &str, msg: &str| {
- #[cfg(not(feature = "ansi_term"))]
- let msg = format!("{} {}", prefix, msg);
- #[cfg(feature = "ansi_term")]
- let msg = {
- let mut equal = Color::Fixed(21).paint("="); // dark blue
- equal.style_ref_mut().is_bold = true;
- format!(" {} {} {}", equal, Style::new().bold().paint(prefix), msg)
- };
- eprintln!("{}", msg);
- };
- let ctx_help = |msg| ctx_prefixed("help:", msg);
- let ctx_note = |msg| ctx_prefixed("note:", msg);
- let ctx = |msg: &str| {
- #[cfg(not(feature = "ansi_term"))]
- let msg = format!("note: {}", msg);
- #[cfg(feature = "ansi_term")]
- let msg = {
- let mut pipe = Color::Fixed(21).paint("|");
- pipe.style_ref_mut().is_bold = true;
- format!(" {} {}", pipe, msg)
- };
- eprintln!("{}", msg);
- };
- warn("some trace filter directives would enable traces that are disabled statically");
- for directive in disabled {
- let target = if let Some(target) = &directive.target {
- format!("the `{}` target", target)
- } else {
- "all targets".into()
- };
- let level = directive
- .level
- .into_level()
- .expect("=off would not have enabled any filters");
- ctx(&format!(
- "`{}` would enable the {} level for {}",
- directive, level, target
- ));
- }
- ctx_note(&format!("the static max level is `{}`", STATIC_MAX_LEVEL));
- let help_msg = || {
- let (feature, filter) = match STATIC_MAX_LEVEL.into_level() {
- Some(Level::TRACE) => unreachable!(
- "if the max level is trace, no static filtering features are enabled"
- ),
- Some(Level::DEBUG) => ("max_level_debug", Level::TRACE),
- Some(Level::INFO) => ("max_level_info", Level::DEBUG),
- Some(Level::WARN) => ("max_level_warn", Level::INFO),
- Some(Level::ERROR) => ("max_level_error", Level::WARN),
- None => return ("max_level_off", String::new()),
- };
- (feature, format!("{} ", filter))
- };
- let (feature, earlier_level) = help_msg();
- ctx_help(&format!(
- "to enable {}logging, remove the `{}` feature",
- earlier_level, feature
- ));
- }
-
- let (dynamics, statics) = Directive::make_tables(directives);
- let has_dynamics = !dynamics.is_empty();
-
- let mut filter = EnvFilter {
- statics,
- dynamics,
- has_dynamics,
- by_id: RwLock::new(Default::default()),
- by_cs: RwLock::new(Default::default()),
- scope: ThreadLocal::new(),
- regex: self.regex,
- };
-
- if !has_dynamics && filter.statics.is_empty() {
- if let Some(ref default) = self.default_directive {
- filter = filter.add_directive(default.clone());
- }
- }
-
- filter
- }
-
- fn env_var_name(&self) -> &str {
- self.env.as_deref().unwrap_or(EnvFilter::DEFAULT_ENV)
- }
-}
-
-impl Default for Builder {
- fn default() -> Self {
- Self {
- regex: true,
- env: None,
- default_directive: None,
- }
- }
-}
diff --git a/vendor/tracing-subscriber/src/filter/layer_filters/combinator.rs b/vendor/tracing-subscriber/src/filter/layer_filters/combinator.rs
deleted file mode 100644
index e79de2087..000000000
--- a/vendor/tracing-subscriber/src/filter/layer_filters/combinator.rs
+++ /dev/null
@@ -1,469 +0,0 @@
-//! Filter combinators
-use crate::layer::{Context, Filter};
-use std::{cmp, fmt, marker::PhantomData};
-use tracing_core::{
- span::{Attributes, Id, Record},
- subscriber::Interest,
- LevelFilter, Metadata,
-};
-
-/// Combines two [`Filter`]s so that spans and events are enabled if and only if
-/// *both* filters return `true`.
-///
-/// This type is typically returned by the [`FilterExt::and`] method. See that
-/// method's documentation for details.
-///
-/// [`Filter`]: crate::layer::Filter
-/// [`FilterExt::and`]: crate::filter::FilterExt::and
-pub struct And<A, B, S> {
- a: A,
- b: B,
- _s: PhantomData<fn(S)>,
-}
-
-/// Combines two [`Filter`]s so that spans and events are enabled if *either* filter
-/// returns `true`.
-///
-/// This type is typically returned by the [`FilterExt::or`] method. See that
-/// method's documentation for details.
-///
-/// [`Filter`]: crate::layer::Filter
-/// [`FilterExt::or`]: crate::filter::FilterExt::or
-pub struct Or<A, B, S> {
- a: A,
- b: B,
- _s: PhantomData<fn(S)>,
-}
-
-/// Inverts the result of a [`Filter`].
-///
-/// If the wrapped filter would enable a span or event, it will be disabled. If
-/// it would disable a span or event, that span or event will be enabled.
-///
-/// This type is typically returned by the [`FilterExt::or`] method. See that
-/// method's documentation for details.
-///
-/// [`Filter`]: crate::layer::Filter
-/// [`FilterExt::or`]: crate::filter::FilterExt::or
-pub struct Not<A, S> {
- a: A,
- _s: PhantomData<fn(S)>,
-}
-
-// === impl And ===
-
-impl<A, B, S> And<A, B, S>
-where
- A: Filter<S>,
- B: Filter<S>,
-{
- /// Combines two [`Filter`]s so that spans and events are enabled if and only if
- /// *both* filters return `true`.
- ///
- /// # Examples
- ///
- /// Enabling spans or events if they have both a particular target *and* are
- /// above a certain level:
- ///
- /// ```ignore
- /// use tracing_subscriber::{
- /// filter::{filter_fn, LevelFilter, combinator::And},
- /// prelude::*,
- /// };
- ///
- /// // Enables spans and events with targets starting with `interesting_target`:
- /// let target_filter = filter_fn(|meta| {
- /// meta.target().starts_with("interesting_target")
- /// });
- ///
- /// // Enables spans and events with levels `INFO` and below:
- /// let level_filter = LevelFilter::INFO;
- ///
- /// // Combine the two filters together so that a span or event is only enabled
- /// // if *both* filters would enable it:
- /// let filter = And::new(level_filter, target_filter);
- ///
- /// tracing_subscriber::registry()
- /// .with(tracing_subscriber::fmt::layer().with_filter(filter))
- /// .init();
- ///
- /// // This event will *not* be enabled:
- /// tracing::info!("an event with an uninteresting target");
- ///
- /// // This event *will* be enabled:
- /// tracing::info!(target: "interesting_target", "a very interesting event");
- ///
- /// // This event will *not* be enabled:
- /// tracing::debug!(target: "interesting_target", "interesting debug event...");
- /// ```
- ///
- /// [`Filter`]: crate::layer::Filter
- pub(crate) fn new(a: A, b: B) -> Self {
- Self {
- a,
- b,
- _s: PhantomData,
- }
- }
-}
-
-impl<A, B, S> Filter<S> for And<A, B, S>
-where
- A: Filter<S>,
- B: Filter<S>,
-{
- #[inline]
- fn enabled(&self, meta: &Metadata<'_>, cx: &Context<'_, S>) -> bool {
- self.a.enabled(meta, cx) && self.b.enabled(meta, cx)
- }
-
- fn callsite_enabled(&self, meta: &'static Metadata<'static>) -> Interest {
- let a = self.a.callsite_enabled(meta);
- if a.is_never() {
- return a;
- }
-
- let b = self.b.callsite_enabled(meta);
-
- if !b.is_always() {
- return b;
- }
-
- a
- }
-
- fn max_level_hint(&self) -> Option<LevelFilter> {
- // If either hint is `None`, return `None`. Otherwise, return the most restrictive.
- cmp::min(self.a.max_level_hint(), self.b.max_level_hint())
- }
-
- #[inline]
- fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>) {
- self.a.on_new_span(attrs, id, ctx.clone());
- self.b.on_new_span(attrs, id, ctx)
- }
-
- #[inline]
- fn on_record(&self, id: &Id, values: &Record<'_>, ctx: Context<'_, S>) {
- self.a.on_record(id, values, ctx.clone());
- self.b.on_record(id, values, ctx);
- }
-
- #[inline]
- fn on_enter(&self, id: &Id, ctx: Context<'_, S>) {
- self.a.on_enter(id, ctx.clone());
- self.b.on_enter(id, ctx);
- }
-
- #[inline]
- fn on_exit(&self, id: &Id, ctx: Context<'_, S>) {
- self.a.on_exit(id, ctx.clone());
- self.b.on_exit(id, ctx);
- }
-
- #[inline]
- fn on_close(&self, id: Id, ctx: Context<'_, S>) {
- self.a.on_close(id.clone(), ctx.clone());
- self.b.on_close(id, ctx);
- }
-}
-
-impl<A, B, S> Clone for And<A, B, S>
-where
- A: Clone,
- B: Clone,
-{
- fn clone(&self) -> Self {
- Self {
- a: self.a.clone(),
- b: self.b.clone(),
- _s: PhantomData,
- }
- }
-}
-
-impl<A, B, S> fmt::Debug for And<A, B, S>
-where
- A: fmt::Debug,
- B: fmt::Debug,
-{
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("And")
- .field("a", &self.a)
- .field("b", &self.b)
- .finish()
- }
-}
-
-// === impl Or ===
-
-impl<A, B, S> Or<A, B, S>
-where
- A: Filter<S>,
- B: Filter<S>,
-{
- /// Combines two [`Filter`]s so that spans and events are enabled if *either* filter
- /// returns `true`.
- ///
- /// # Examples
- ///
- /// Enabling spans and events at the `INFO` level and above, and all spans
- /// and events with a particular target:
- ///
- /// ```ignore
- /// use tracing_subscriber::{
- /// filter::{filter_fn, LevelFilter, combinator::Or},
- /// prelude::*,
- /// };
- ///
- /// // Enables spans and events with targets starting with `interesting_target`:
- /// let target_filter = filter_fn(|meta| {
- /// meta.target().starts_with("interesting_target")
- /// });
- ///
- /// // Enables spans and events with levels `INFO` and below:
- /// let level_filter = LevelFilter::INFO;
- ///
- /// // Combine the two filters together so that a span or event is enabled
- /// // if it is at INFO or lower, or if it has a target starting with
- /// // `interesting_target`.
- /// let filter = Or::new(level_filter, target_filter);
- ///
- /// tracing_subscriber::registry()
- /// .with(tracing_subscriber::fmt::layer().with_filter(filter))
- /// .init();
- ///
- /// // This event will *not* be enabled:
- /// tracing::debug!("an uninteresting event");
- ///
- /// // This event *will* be enabled:
- /// tracing::info!("an uninteresting INFO event");
- ///
- /// // This event *will* be enabled:
- /// tracing::info!(target: "interesting_target", "a very interesting event");
- ///
- /// // This event *will* be enabled:
- /// tracing::debug!(target: "interesting_target", "interesting debug event...");
- /// ```
- ///
- /// Enabling a higher level for a particular target by using `Or` in
- /// conjunction with the [`And`] combinator:
- ///
- /// ```ignore
- /// use tracing_subscriber::{
- /// filter::{filter_fn, LevelFilter, combinator},
- /// prelude::*,
- /// };
- ///
- /// // This filter will enable spans and events with targets beginning with
- /// // `my_crate`:
- /// let my_crate = filter_fn(|meta| {
- /// meta.target().starts_with("my_crate")
- /// });
- ///
- /// // Combine the `my_crate` filter with a `LevelFilter` to produce a filter
- /// // that will enable the `INFO` level and lower for spans and events with
- /// // `my_crate` targets:
- /// let filter = combinator::And::new(my_crate, LevelFilter::INFO);
- ///
- /// // If a span or event *doesn't* have a target beginning with
- /// // `my_crate`, enable it if it has the `WARN` level or lower:
- /// // let filter = combinator::Or::new(filter, LevelFilter::WARN);
- ///
- /// tracing_subscriber::registry()
- /// .with(tracing_subscriber::fmt::layer().with_filter(filter))
- /// .init();
- /// ```
- ///
- /// [`Filter`]: crate::layer::Filter
- pub(crate) fn new(a: A, b: B) -> Self {
- Self {
- a,
- b,
- _s: PhantomData,
- }
- }
-}
-
-impl<A, B, S> Filter<S> for Or<A, B, S>
-where
- A: Filter<S>,
- B: Filter<S>,
-{
- #[inline]
- fn enabled(&self, meta: &Metadata<'_>, cx: &Context<'_, S>) -> bool {
- self.a.enabled(meta, cx) || self.b.enabled(meta, cx)
- }
-
- fn callsite_enabled(&self, meta: &'static Metadata<'static>) -> Interest {
- let a = self.a.callsite_enabled(meta);
- let b = self.b.callsite_enabled(meta);
-
- // If either filter will always enable the span or event, return `always`.
- if a.is_always() || b.is_always() {
- return Interest::always();
- }
-
- // Okay, if either filter will sometimes enable the span or event,
- // return `sometimes`.
- if a.is_sometimes() || b.is_sometimes() {
- return Interest::sometimes();
- }
-
- debug_assert!(
- a.is_never() && b.is_never(),
- "if neither filter was `always` or `sometimes`, both must be `never` (a={:?}; b={:?})",
- a,
- b,
- );
- Interest::never()
- }
-
- fn max_level_hint(&self) -> Option<LevelFilter> {
- // If either hint is `None`, return `None`. Otherwise, return the less restrictive.
- Some(cmp::max(self.a.max_level_hint()?, self.b.max_level_hint()?))
- }
-
- #[inline]
- fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>) {
- self.a.on_new_span(attrs, id, ctx.clone());
- self.b.on_new_span(attrs, id, ctx)
- }
-
- #[inline]
- fn on_record(&self, id: &Id, values: &Record<'_>, ctx: Context<'_, S>) {
- self.a.on_record(id, values, ctx.clone());
- self.b.on_record(id, values, ctx);
- }
-
- #[inline]
- fn on_enter(&self, id: &Id, ctx: Context<'_, S>) {
- self.a.on_enter(id, ctx.clone());
- self.b.on_enter(id, ctx);
- }
-
- #[inline]
- fn on_exit(&self, id: &Id, ctx: Context<'_, S>) {
- self.a.on_exit(id, ctx.clone());
- self.b.on_exit(id, ctx);
- }
-
- #[inline]
- fn on_close(&self, id: Id, ctx: Context<'_, S>) {
- self.a.on_close(id.clone(), ctx.clone());
- self.b.on_close(id, ctx);
- }
-}
-
-impl<A, B, S> Clone for Or<A, B, S>
-where
- A: Clone,
- B: Clone,
-{
- fn clone(&self) -> Self {
- Self {
- a: self.a.clone(),
- b: self.b.clone(),
- _s: PhantomData,
- }
- }
-}
-
-impl<A, B, S> fmt::Debug for Or<A, B, S>
-where
- A: fmt::Debug,
- B: fmt::Debug,
-{
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("Or")
- .field("a", &self.a)
- .field("b", &self.b)
- .finish()
- }
-}
-
-// === impl Not ===
-
-impl<A, S> Not<A, S>
-where
- A: Filter<S>,
-{
- /// Inverts the result of a [`Filter`].
- ///
- /// If the wrapped filter would enable a span or event, it will be disabled. If
- /// it would disable a span or event, that span or event will be enabled.
- ///
- /// [`Filter`]: crate::layer::Filter
- pub(crate) fn new(a: A) -> Self {
- Self { a, _s: PhantomData }
- }
-}
-
-impl<A, S> Filter<S> for Not<A, S>
-where
- A: Filter<S>,
-{
- #[inline]
- fn enabled(&self, meta: &Metadata<'_>, cx: &Context<'_, S>) -> bool {
- !self.a.enabled(meta, cx)
- }
-
- fn callsite_enabled(&self, meta: &'static Metadata<'static>) -> Interest {
- match self.a.callsite_enabled(meta) {
- i if i.is_always() => Interest::never(),
- i if i.is_never() => Interest::always(),
- _ => Interest::sometimes(),
- }
- }
-
- fn max_level_hint(&self) -> Option<LevelFilter> {
- // TODO(eliza): figure this out???
- None
- }
-
- #[inline]
- fn on_new_span(&self, attrs: &Attributes<'_>, id: &Id, ctx: Context<'_, S>) {
- self.a.on_new_span(attrs, id, ctx);
- }
-
- #[inline]
- fn on_record(&self, id: &Id, values: &Record<'_>, ctx: Context<'_, S>) {
- self.a.on_record(id, values, ctx.clone());
- }
-
- #[inline]
- fn on_enter(&self, id: &Id, ctx: Context<'_, S>) {
- self.a.on_enter(id, ctx);
- }
-
- #[inline]
- fn on_exit(&self, id: &Id, ctx: Context<'_, S>) {
- self.a.on_exit(id, ctx);
- }
-
- #[inline]
- fn on_close(&self, id: Id, ctx: Context<'_, S>) {
- self.a.on_close(id, ctx);
- }
-}
-
-impl<A, S> Clone for Not<A, S>
-where
- A: Clone,
-{
- fn clone(&self) -> Self {
- Self {
- a: self.a.clone(),
- _s: PhantomData,
- }
- }
-}
-
-impl<A, S> fmt::Debug for Not<A, S>
-where
- A: fmt::Debug,
-{
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_tuple("Not").field(&self.a).finish()
- }
-}
diff --git a/vendor/tracing-subscriber/src/fmt/time/time_crate.rs b/vendor/tracing-subscriber/src/fmt/time/time_crate.rs
deleted file mode 100644
index 60d57fd0b..000000000
--- a/vendor/tracing-subscriber/src/fmt/time/time_crate.rs
+++ /dev/null
@@ -1,470 +0,0 @@
-use crate::fmt::{format::Writer, time::FormatTime, writer::WriteAdaptor};
-use std::fmt;
-use time::{format_description::well_known, formatting::Formattable, OffsetDateTime, UtcOffset};
-
-/// Formats the current [local time] using a [formatter] from the [`time` crate].
-///
-/// To format the current [UTC time] instead, use the [`UtcTime`] type.
-///
-/// <div class="example-wrap" style="display:inline-block">
-/// <pre class="compile_fail" style="white-space:normal;font:inherit;">
-/// <strong>Warning</strong>: The <a href = "https://docs.rs/time/0.3/time/"><code>time</code>
-/// crate</a> must be compiled with <code>--cfg unsound_local_offset</code> in order to use
-/// local timestamps. When this cfg is not enabled, local timestamps cannot be recorded, and
-/// events will be logged without timestamps.
-///
-/// Alternatively, [`OffsetTime`] can log with a local offset if it is initialized early.
-///
-/// See the <a href="https://docs.rs/time/0.3.4/time/#feature-flags"><code>time</code>
-/// documentation</a> for more details.
-/// </pre></div>
-///
-/// [local time]: time::OffsetDateTime::now_local
-/// [UTC time]: time::OffsetDateTime::now_utc
-/// [formatter]: time::formatting::Formattable
-/// [`time` crate]: time
-#[derive(Clone, Debug)]
-#[cfg_attr(
- docsrs,
- doc(cfg(all(unsound_local_offset, feature = "time", feature = "local-time")))
-)]
-#[cfg(feature = "local-time")]
-pub struct LocalTime<F> {
- format: F,
-}
-
-/// Formats the current [UTC time] using a [formatter] from the [`time` crate].
-///
-/// To format the current [local time] instead, use the [`LocalTime`] type.
-///
-/// [local time]: time::OffsetDateTime::now_local
-/// [UTC time]: time::OffsetDateTime::now_utc
-/// [formatter]: time::formatting::Formattable
-/// [`time` crate]: time
-#[cfg_attr(docsrs, doc(cfg(feature = "time")))]
-#[derive(Clone, Debug)]
-pub struct UtcTime<F> {
- format: F,
-}
-
-/// Formats the current time using a fixed offset and a [formatter] from the [`time` crate].
-///
-/// This is typically used as an alternative to [`LocalTime`]. `LocalTime` determines the offset
-/// every time it formats a message, which may be unsound or fail. With `OffsetTime`, the offset is
-/// determined once. This makes it possible to do so while the program is still single-threaded and
-/// handle any errors. However, this also means the offset cannot change while the program is
-/// running (the offset will not change across DST changes).
-///
-/// [formatter]: time::formatting::Formattable
-/// [`time` crate]: time
-#[derive(Clone, Debug)]
-#[cfg_attr(docsrs, doc(cfg(feature = "time")))]
-pub struct OffsetTime<F> {
- offset: time::UtcOffset,
- format: F,
-}
-
-// === impl LocalTime ===
-
-#[cfg(feature = "local-time")]
-impl LocalTime<well_known::Rfc3339> {
- /// Returns a formatter that formats the current [local time] in the
- /// [RFC 3339] format (a subset of the [ISO 8601] timestamp format).
- ///
- /// # Examples
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time};
- ///
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(time::LocalTime::rfc_3339());
- /// # drop(collector);
- /// ```
- ///
- /// [local time]: time::OffsetDateTime::now_local
- /// [RFC 3339]: https://datatracker.ietf.org/doc/html/rfc3339
- /// [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
- pub fn rfc_3339() -> Self {
- Self::new(well_known::Rfc3339)
- }
-}
-
-#[cfg(feature = "local-time")]
-impl<F: Formattable> LocalTime<F> {
- /// Returns a formatter that formats the current [local time] using the
- /// [`time` crate] with the provided provided format. The format may be any
- /// type that implements the [`Formattable`] trait.
- ///
- ///
- /// <div class="example-wrap" style="display:inline-block">
- /// <pre class="compile_fail" style="white-space:normal;font:inherit;">
- /// <strong>Warning</strong>: The <a href = "https://docs.rs/time/0.3/time/">
- /// <code>time</code> crate</a> must be compiled with <code>--cfg
- /// unsound_local_offset</code> in order to use local timestamps. When this
- /// cfg is not enabled, local timestamps cannot be recorded, and
- /// events will be logged without timestamps.
- ///
- /// See the <a href="https://docs.rs/time/0.3.4/time/#feature-flags">
- /// <code>time</code> documentation</a> for more details.
- /// </pre></div>
- ///
- /// Typically, the format will be a format description string, or one of the
- /// `time` crate's [well-known formats].
- ///
- /// If the format description is statically known, then the
- /// [`format_description!`] macro should be used. This is identical to the
- /// [`time::format_description::parse`] method, but runs at compile-time,
- /// throwing an error if the format description is invalid. If the desired format
- /// is not known statically (e.g., a user is providing a format string), then the
- /// [`time::format_description::parse`] method should be used. Note that this
- /// method is fallible.
- ///
- /// See the [`time` book] for details on the format description syntax.
- ///
- /// # Examples
- ///
- /// Using the [`format_description!`] macro:
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time::LocalTime};
- /// use time::macros::format_description;
- ///
- /// let timer = LocalTime::new(format_description!("[hour]:[minute]:[second]"));
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(timer);
- /// # drop(collector);
- /// ```
- ///
- /// Using [`time::format_description::parse`]:
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time::LocalTime};
- ///
- /// let time_format = time::format_description::parse("[hour]:[minute]:[second]")
- /// .expect("format string should be valid!");
- /// let timer = LocalTime::new(time_format);
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(timer);
- /// # drop(collector);
- /// ```
- ///
- /// Using the [`format_description!`] macro requires enabling the `time`
- /// crate's "macros" feature flag.
- ///
- /// Using a [well-known format][well-known formats] (this is equivalent to
- /// [`LocalTime::rfc_3339`]):
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time::LocalTime};
- ///
- /// let timer = LocalTime::new(time::format_description::well_known::Rfc3339);
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(timer);
- /// # drop(collector);
- /// ```
- ///
- /// [local time]: time::OffsetDateTime::now_local()
- /// [`time` crate]: time
- /// [`Formattable`]: time::formatting::Formattable
- /// [well-known formats]: time::format_description::well_known
- /// [`format_description!`]: time::macros::format_description!
- /// [`time::format_description::parse`]: time::format_description::parse()
- /// [`time` book]: https://time-rs.github.io/book/api/format-description.html
- pub fn new(format: F) -> Self {
- Self { format }
- }
-}
-
-#[cfg(feature = "local-time")]
-impl<F> FormatTime for LocalTime<F>
-where
- F: Formattable,
-{
- fn format_time(&self, w: &mut Writer<'_>) -> fmt::Result {
- let now = OffsetDateTime::now_local().map_err(|_| fmt::Error)?;
- format_datetime(now, w, &self.format)
- }
-}
-
-#[cfg(feature = "local-time")]
-impl<F> Default for LocalTime<F>
-where
- F: Formattable + Default,
-{
- fn default() -> Self {
- Self::new(F::default())
- }
-}
-
-// === impl UtcTime ===
-
-impl UtcTime<well_known::Rfc3339> {
- /// Returns a formatter that formats the current [UTC time] in the
- /// [RFC 3339] format, which is a subset of the [ISO 8601] timestamp format.
- ///
- /// # Examples
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time};
- ///
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(time::UtcTime::rfc_3339());
- /// # drop(collector);
- /// ```
- ///
- /// [local time]: time::OffsetDateTime::now_utc
- /// [RFC 3339]: https://datatracker.ietf.org/doc/html/rfc3339
- /// [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
- pub fn rfc_3339() -> Self {
- Self::new(well_known::Rfc3339)
- }
-}
-
-impl<F: Formattable> UtcTime<F> {
- /// Returns a formatter that formats the current [UTC time] using the
- /// [`time` crate], with the provided provided format. The format may be any
- /// type that implements the [`Formattable`] trait.
- ///
- /// Typically, the format will be a format description string, or one of the
- /// `time` crate's [well-known formats].
- ///
- /// If the format description is statically known, then the
- /// [`format_description!`] macro should be used. This is identical to the
- /// [`time::format_description::parse`] method, but runs at compile-time,
- /// failing an error if the format description is invalid. If the desired format
- /// is not known statically (e.g., a user is providing a format string), then the
- /// [`time::format_description::parse`] method should be used. Note that this
- /// method is fallible.
- ///
- /// See the [`time` book] for details on the format description syntax.
- ///
- /// # Examples
- ///
- /// Using the [`format_description!`] macro:
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time::UtcTime};
- /// use time::macros::format_description;
- ///
- /// let timer = UtcTime::new(format_description!("[hour]:[minute]:[second]"));
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(timer);
- /// # drop(collector);
- /// ```
- ///
- /// Using the [`format_description!`] macro requires enabling the `time`
- /// crate's "macros" feature flag.
- ///
- /// Using [`time::format_description::parse`]:
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time::UtcTime};
- ///
- /// let time_format = time::format_description::parse("[hour]:[minute]:[second]")
- /// .expect("format string should be valid!");
- /// let timer = UtcTime::new(time_format);
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(timer);
- /// # drop(collector);
- /// ```
- ///
- /// Using a [well-known format][well-known formats] (this is equivalent to
- /// [`UtcTime::rfc_3339`]):
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time::UtcTime};
- ///
- /// let timer = UtcTime::new(time::format_description::well_known::Rfc3339);
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(timer);
- /// # drop(collector);
- /// ```
- ///
- /// [UTC time]: time::OffsetDateTime::now_utc()
- /// [`time` crate]: time
- /// [`Formattable`]: time::formatting::Formattable
- /// [well-known formats]: time::format_description::well_known
- /// [`format_description!`]: time::macros::format_description!
- /// [`time::format_description::parse`]: time::format_description::parse
- /// [`time` book]: https://time-rs.github.io/book/api/format-description.html
- pub fn new(format: F) -> Self {
- Self { format }
- }
-}
-
-impl<F> FormatTime for UtcTime<F>
-where
- F: Formattable,
-{
- fn format_time(&self, w: &mut Writer<'_>) -> fmt::Result {
- format_datetime(OffsetDateTime::now_utc(), w, &self.format)
- }
-}
-
-impl<F> Default for UtcTime<F>
-where
- F: Formattable + Default,
-{
- fn default() -> Self {
- Self::new(F::default())
- }
-}
-
-// === impl OffsetTime ===
-
-#[cfg(feature = "local-time")]
-impl OffsetTime<well_known::Rfc3339> {
- /// Returns a formatter that formats the current time using the [local time offset] in the [RFC
- /// 3339] format (a subset of the [ISO 8601] timestamp format).
- ///
- /// Returns an error if the local time offset cannot be determined. This typically occurs in
- /// multithreaded programs. To avoid this problem, initialize `OffsetTime` before forking
- /// threads. When using Tokio, this means initializing `OffsetTime` before the Tokio runtime.
- ///
- /// # Examples
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time};
- ///
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(time::OffsetTime::local_rfc_3339().expect("could not get local offset!"));
- /// # drop(collector);
- /// ```
- ///
- /// Using `OffsetTime` with Tokio:
- ///
- /// ```
- /// use tracing_subscriber::fmt::time::OffsetTime;
- ///
- /// #[tokio::main]
- /// async fn run() {
- /// tracing::info!("runtime initialized");
- ///
- /// // At this point the Tokio runtime is initialized, and we can use both Tokio and Tracing
- /// // normally.
- /// }
- ///
- /// fn main() {
- /// // Because we need to get the local offset before Tokio spawns any threads, our `main`
- /// // function cannot use `tokio::main`.
- /// tracing_subscriber::fmt()
- /// .with_timer(OffsetTime::local_rfc_3339().expect("could not get local time offset"))
- /// .init();
- ///
- /// // Even though `run` is written as an `async fn`, because we used `tokio::main` on it
- /// // we can call it as a synchronous function.
- /// run();
- /// }
- /// ```
- ///
- /// [local time offset]: time::UtcOffset::current_local_offset
- /// [RFC 3339]: https://datatracker.ietf.org/doc/html/rfc3339
- /// [ISO 8601]: https://en.wikipedia.org/wiki/ISO_8601
- pub fn local_rfc_3339() -> Result<Self, time::error::IndeterminateOffset> {
- Ok(Self::new(
- UtcOffset::current_local_offset()?,
- well_known::Rfc3339,
- ))
- }
-}
-
-impl<F: time::formatting::Formattable> OffsetTime<F> {
- /// Returns a formatter that formats the current time using the [`time` crate] with the provided
- /// provided format and [timezone offset]. The format may be any type that implements the
- /// [`Formattable`] trait.
- ///
- ///
- /// Typically, the offset will be the [local offset], and format will be a format description
- /// string, or one of the `time` crate's [well-known formats].
- ///
- /// If the format description is statically known, then the
- /// [`format_description!`] macro should be used. This is identical to the
- /// [`time::format_description::parse`] method, but runs at compile-time,
- /// throwing an error if the format description is invalid. If the desired format
- /// is not known statically (e.g., a user is providing a format string), then the
- /// [`time::format_description::parse`] method should be used. Note that this
- /// method is fallible.
- ///
- /// See the [`time` book] for details on the format description syntax.
- ///
- /// # Examples
- ///
- /// Using the [`format_description!`] macro:
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time::OffsetTime};
- /// use time::macros::format_description;
- /// use time::UtcOffset;
- ///
- /// let offset = UtcOffset::current_local_offset().expect("should get local offset!");
- /// let timer = OffsetTime::new(offset, format_description!("[hour]:[minute]:[second]"));
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(timer);
- /// # drop(collector);
- /// ```
- ///
- /// Using [`time::format_description::parse`]:
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time::OffsetTime};
- /// use time::UtcOffset;
- ///
- /// let offset = UtcOffset::current_local_offset().expect("should get local offset!");
- /// let time_format = time::format_description::parse("[hour]:[minute]:[second]")
- /// .expect("format string should be valid!");
- /// let timer = OffsetTime::new(offset, time_format);
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(timer);
- /// # drop(collector);
- /// ```
- ///
- /// Using the [`format_description!`] macro requires enabling the `time`
- /// crate's "macros" feature flag.
- ///
- /// Using a [well-known format][well-known formats] (this is equivalent to
- /// [`OffsetTime::local_rfc_3339`]):
- ///
- /// ```
- /// use tracing_subscriber::fmt::{self, time::OffsetTime};
- /// use time::UtcOffset;
- ///
- /// let offset = UtcOffset::current_local_offset().expect("should get local offset!");
- /// let timer = OffsetTime::new(offset, time::format_description::well_known::Rfc3339);
- /// let collector = tracing_subscriber::fmt()
- /// .with_timer(timer);
- /// # drop(collector);
- /// ```
- ///
- /// [`time` crate]: time
- /// [timezone offset]: time::UtcOffset
- /// [`Formattable`]: time::formatting::Formattable
- /// [local offset]: time::UtcOffset::current_local_offset()
- /// [well-known formats]: time::format_description::well_known
- /// [`format_description!`]: time::macros::format_description
- /// [`time::format_description::parse`]: time::format_description::parse
- /// [`time` book]: https://time-rs.github.io/book/api/format-description.html
- pub fn new(offset: time::UtcOffset, format: F) -> Self {
- Self { offset, format }
- }
-}
-
-impl<F> FormatTime for OffsetTime<F>
-where
- F: time::formatting::Formattable,
-{
- fn format_time(&self, w: &mut Writer<'_>) -> fmt::Result {
- let now = OffsetDateTime::now_utc().to_offset(self.offset);
- format_datetime(now, w, &self.format)
- }
-}
-
-fn format_datetime(
- now: OffsetDateTime,
- into: &mut Writer<'_>,
- fmt: &impl Formattable,
-) -> fmt::Result {
- let mut into = WriteAdaptor::new(into);
- now.format_into(&mut into, fmt)
- .map_err(|_| fmt::Error)
- .map(|_| ())
-}
diff --git a/vendor/tracing-subscriber/tests/env_filter/main.rs b/vendor/tracing-subscriber/tests/env_filter/main.rs
deleted file mode 100644
index 3c3d4868b..000000000
--- a/vendor/tracing-subscriber/tests/env_filter/main.rs
+++ /dev/null
@@ -1,547 +0,0 @@
-#![cfg(feature = "env-filter")]
-
-#[path = "../support.rs"]
-mod support;
-use self::support::*;
-
-mod per_layer;
-
-use tracing::{self, subscriber::with_default, Level};
-use tracing_subscriber::{
- filter::{EnvFilter, LevelFilter},
- prelude::*,
-};
-
-#[test]
-fn level_filter_event() {
- let filter: EnvFilter = "info".parse().expect("filter should parse");
- let (subscriber, finished) = subscriber::mock()
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .done()
- .run_with_handle();
- let subscriber = subscriber.with(filter);
-
- with_default(subscriber, || {
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- tracing::debug!(target: "foo", "this should also be disabled");
- tracing::warn!(target: "foo", "this should be enabled");
- tracing::error!("this should be enabled too");
- });
-
- finished.assert_finished();
-}
-
-#[test]
-fn same_name_spans() {
- let filter: EnvFilter = "[foo{bar}]=trace,[foo{baz}]=trace"
- .parse()
- .expect("filter should parse");
- let (subscriber, finished) = subscriber::mock()
- .new_span(
- span::mock()
- .named("foo")
- .at_level(Level::TRACE)
- .with_field(field::mock("bar")),
- )
- .new_span(
- span::mock()
- .named("foo")
- .at_level(Level::TRACE)
- .with_field(field::mock("baz")),
- )
- .done()
- .run_with_handle();
- let subscriber = subscriber.with(filter);
- with_default(subscriber, || {
- tracing::trace_span!("foo", bar = 1);
- tracing::trace_span!("foo", baz = 1);
- });
-
- finished.assert_finished();
-}
-
-#[test]
-fn level_filter_event_with_target() {
- let filter: EnvFilter = "info,stuff=debug".parse().expect("filter should parse");
- let (subscriber, finished) = subscriber::mock()
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::DEBUG).with_target("stuff"))
- .event(event::mock().at_level(Level::WARN).with_target("stuff"))
- .event(event::mock().at_level(Level::ERROR))
- .event(event::mock().at_level(Level::ERROR).with_target("stuff"))
- .done()
- .run_with_handle();
- let subscriber = subscriber.with(filter);
-
- with_default(subscriber, || {
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- tracing::debug!(target: "stuff", "this should be enabled");
- tracing::debug!("but this shouldn't");
- tracing::trace!(target: "stuff", "and neither should this");
- tracing::warn!(target: "stuff", "this should be enabled");
- tracing::error!("this should be enabled too");
- tracing::error!(target: "stuff", "this should be enabled also");
- });
-
- finished.assert_finished();
-}
-
-#[test]
-fn level_filter_event_with_target_and_span_global() {
- let filter: EnvFilter = "info,stuff[cool_span]=debug"
- .parse()
- .expect("filter should parse");
-
- let cool_span = span::named("cool_span");
- let uncool_span = span::named("uncool_span");
- let (subscriber, handle) = subscriber::mock()
- .enter(cool_span.clone())
- .event(
- event::mock()
- .at_level(Level::DEBUG)
- .in_scope(vec![cool_span.clone()]),
- )
- .exit(cool_span)
- .enter(uncool_span.clone())
- .exit(uncool_span)
- .done()
- .run_with_handle();
-
- let subscriber = subscriber.with(filter);
-
- with_default(subscriber, || {
- {
- let _span = tracing::info_span!(target: "stuff", "cool_span").entered();
- tracing::debug!("this should be enabled");
- }
-
- tracing::debug!("should also be disabled");
-
- {
- let _span = tracing::info_span!("uncool_span").entered();
- tracing::debug!("this should be disabled");
- }
- });
-
- handle.assert_finished();
-}
-
-#[test]
-fn not_order_dependent() {
- // this test reproduces tokio-rs/tracing#623
-
- let filter: EnvFilter = "stuff=debug,info".parse().expect("filter should parse");
- let (subscriber, finished) = subscriber::mock()
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::DEBUG).with_target("stuff"))
- .event(event::mock().at_level(Level::WARN).with_target("stuff"))
- .event(event::mock().at_level(Level::ERROR))
- .event(event::mock().at_level(Level::ERROR).with_target("stuff"))
- .done()
- .run_with_handle();
- let subscriber = subscriber.with(filter);
-
- with_default(subscriber, || {
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- tracing::debug!(target: "stuff", "this should be enabled");
- tracing::debug!("but this shouldn't");
- tracing::trace!(target: "stuff", "and neither should this");
- tracing::warn!(target: "stuff", "this should be enabled");
- tracing::error!("this should be enabled too");
- tracing::error!(target: "stuff", "this should be enabled also");
- });
-
- finished.assert_finished();
-}
-
-#[test]
-fn add_directive_enables_event() {
- // this test reproduces tokio-rs/tracing#591
-
- // by default, use info level
- let mut filter = EnvFilter::new(LevelFilter::INFO.to_string());
-
- // overwrite with a more specific directive
- filter = filter.add_directive("hello=trace".parse().expect("directive should parse"));
-
- let (subscriber, finished) = subscriber::mock()
- .event(event::mock().at_level(Level::INFO).with_target("hello"))
- .event(event::mock().at_level(Level::TRACE).with_target("hello"))
- .done()
- .run_with_handle();
- let subscriber = subscriber.with(filter);
-
- with_default(subscriber, || {
- tracing::info!(target: "hello", "hello info");
- tracing::trace!(target: "hello", "hello trace");
- });
-
- finished.assert_finished();
-}
-
-#[test]
-fn span_name_filter_is_dynamic() {
- let filter: EnvFilter = "info,[cool_span]=debug"
- .parse()
- .expect("filter should parse");
- let (subscriber, finished) = subscriber::mock()
- .event(event::mock().at_level(Level::INFO))
- .enter(span::named("cool_span"))
- .event(event::mock().at_level(Level::DEBUG))
- .enter(span::named("uncool_span"))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::DEBUG))
- .exit(span::named("uncool_span"))
- .exit(span::named("cool_span"))
- .enter(span::named("uncool_span"))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .exit(span::named("uncool_span"))
- .done()
- .run_with_handle();
- let subscriber = subscriber.with(filter);
-
- with_default(subscriber, || {
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- let cool_span = tracing::info_span!("cool_span");
- let uncool_span = tracing::info_span!("uncool_span");
-
- {
- let _enter = cool_span.enter();
- tracing::debug!("i'm a cool event");
- tracing::trace!("i'm cool, but not cool enough");
- let _enter2 = uncool_span.enter();
- tracing::warn!("warning: extremely cool!");
- tracing::debug!("i'm still cool");
- }
-
- let _enter = uncool_span.enter();
- tracing::warn!("warning: not that cool");
- tracing::trace!("im not cool enough");
- tracing::error!("uncool error");
- });
-
- finished.assert_finished();
-}
-
-#[test]
-fn method_name_resolution() {
- #[allow(unused_imports)]
- use tracing_subscriber::layer::{Filter, Layer};
-
- let filter = EnvFilter::new("hello_world=info");
- filter.max_level_hint();
-}
-
-// contains the same tests as the first half of this file
-// but using EnvFilter as a `Filter`, not as a `Layer`
-mod per_layer_filter {
- use super::*;
-
- #[test]
- fn level_filter_event() {
- let filter: EnvFilter = "info".parse().expect("filter should parse");
- let (layer, handle) = layer::mock()
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- tracing::debug!(target: "foo", "this should also be disabled");
- tracing::warn!(target: "foo", "this should be enabled");
- tracing::error!("this should be enabled too");
-
- handle.assert_finished();
- }
-
- #[test]
- fn same_name_spans() {
- let filter: EnvFilter = "[foo{bar}]=trace,[foo{baz}]=trace"
- .parse()
- .expect("filter should parse");
- let (layer, handle) = layer::mock()
- .new_span(
- span::mock()
- .named("foo")
- .at_level(Level::TRACE)
- .with_field(field::mock("bar")),
- )
- .new_span(
- span::mock()
- .named("foo")
- .at_level(Level::TRACE)
- .with_field(field::mock("baz")),
- )
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::trace_span!("foo", bar = 1);
- tracing::trace_span!("foo", baz = 1);
-
- handle.assert_finished();
- }
-
- #[test]
- fn level_filter_event_with_target() {
- let filter: EnvFilter = "info,stuff=debug".parse().expect("filter should parse");
- let (layer, handle) = layer::mock()
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::DEBUG).with_target("stuff"))
- .event(event::mock().at_level(Level::WARN).with_target("stuff"))
- .event(event::mock().at_level(Level::ERROR))
- .event(event::mock().at_level(Level::ERROR).with_target("stuff"))
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- tracing::debug!(target: "stuff", "this should be enabled");
- tracing::debug!("but this shouldn't");
- tracing::trace!(target: "stuff", "and neither should this");
- tracing::warn!(target: "stuff", "this should be enabled");
- tracing::error!("this should be enabled too");
- tracing::error!(target: "stuff", "this should be enabled also");
-
- handle.assert_finished();
- }
-
- #[test]
- fn level_filter_event_with_target_and_span() {
- let filter: EnvFilter = "stuff[cool_span]=debug"
- .parse()
- .expect("filter should parse");
-
- let cool_span = span::named("cool_span");
- let (layer, handle) = layer::mock()
- .enter(cool_span.clone())
- .event(
- event::mock()
- .at_level(Level::DEBUG)
- .in_scope(vec![cool_span.clone()]),
- )
- .exit(cool_span)
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- {
- let _span = tracing::info_span!(target: "stuff", "cool_span").entered();
- tracing::debug!("this should be enabled");
- }
-
- tracing::debug!("should also be disabled");
-
- {
- let _span = tracing::info_span!("uncool_span").entered();
- tracing::debug!("this should be disabled");
- }
-
- handle.assert_finished();
- }
-
- #[test]
- fn not_order_dependent() {
- // this test reproduces tokio-rs/tracing#623
-
- let filter: EnvFilter = "stuff=debug,info".parse().expect("filter should parse");
- let (layer, finished) = layer::mock()
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::DEBUG).with_target("stuff"))
- .event(event::mock().at_level(Level::WARN).with_target("stuff"))
- .event(event::mock().at_level(Level::ERROR))
- .event(event::mock().at_level(Level::ERROR).with_target("stuff"))
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- tracing::debug!(target: "stuff", "this should be enabled");
- tracing::debug!("but this shouldn't");
- tracing::trace!(target: "stuff", "and neither should this");
- tracing::warn!(target: "stuff", "this should be enabled");
- tracing::error!("this should be enabled too");
- tracing::error!(target: "stuff", "this should be enabled also");
-
- finished.assert_finished();
- }
-
- #[test]
- fn add_directive_enables_event() {
- // this test reproduces tokio-rs/tracing#591
-
- // by default, use info level
- let mut filter = EnvFilter::new(LevelFilter::INFO.to_string());
-
- // overwrite with a more specific directive
- filter = filter.add_directive("hello=trace".parse().expect("directive should parse"));
-
- let (layer, finished) = layer::mock()
- .event(event::mock().at_level(Level::INFO).with_target("hello"))
- .event(event::mock().at_level(Level::TRACE).with_target("hello"))
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::info!(target: "hello", "hello info");
- tracing::trace!(target: "hello", "hello trace");
-
- finished.assert_finished();
- }
-
- #[test]
- fn span_name_filter_is_dynamic() {
- let filter: EnvFilter = "info,[cool_span]=debug"
- .parse()
- .expect("filter should parse");
- let cool_span = span::named("cool_span");
- let uncool_span = span::named("uncool_span");
- let (layer, finished) = layer::mock()
- .event(event::mock().at_level(Level::INFO))
- .enter(cool_span.clone())
- .event(
- event::mock()
- .at_level(Level::DEBUG)
- .in_scope(vec![cool_span.clone()]),
- )
- .enter(uncool_span.clone())
- .event(
- event::mock()
- .at_level(Level::WARN)
- .in_scope(vec![uncool_span.clone()]),
- )
- .event(
- event::mock()
- .at_level(Level::DEBUG)
- .in_scope(vec![uncool_span.clone()]),
- )
- .exit(uncool_span.clone())
- .exit(cool_span)
- .enter(uncool_span.clone())
- .event(
- event::mock()
- .at_level(Level::WARN)
- .in_scope(vec![uncool_span.clone()]),
- )
- .event(
- event::mock()
- .at_level(Level::ERROR)
- .in_scope(vec![uncool_span.clone()]),
- )
- .exit(uncool_span)
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- let cool_span = tracing::info_span!("cool_span");
- let uncool_span = tracing::info_span!("uncool_span");
-
- {
- let _enter = cool_span.enter();
- tracing::debug!("i'm a cool event");
- tracing::trace!("i'm cool, but not cool enough");
- let _enter2 = uncool_span.enter();
- tracing::warn!("warning: extremely cool!");
- tracing::debug!("i'm still cool");
- }
-
- {
- let _enter = uncool_span.enter();
- tracing::warn!("warning: not that cool");
- tracing::trace!("im not cool enough");
- tracing::error!("uncool error");
- }
-
- finished.assert_finished();
- }
-
- #[test]
- fn multiple_dynamic_filters() {
- // Test that multiple dynamic (span) filters only apply to the layers
- // they're attached to.
- let (layer1, handle1) = {
- let span = span::named("span1");
- let filter: EnvFilter = "[span1]=debug".parse().expect("filter 1 should parse");
- let (layer, handle) = layer::named("layer1")
- .enter(span.clone())
- .event(
- event::mock()
- .at_level(Level::DEBUG)
- .in_scope(vec![span.clone()]),
- )
- .exit(span)
- .done()
- .run_with_handle();
- (layer.with_filter(filter), handle)
- };
-
- let (layer2, handle2) = {
- let span = span::named("span2");
- let filter: EnvFilter = "[span2]=info".parse().expect("filter 2 should parse");
- let (layer, handle) = layer::named("layer2")
- .enter(span.clone())
- .event(
- event::mock()
- .at_level(Level::INFO)
- .in_scope(vec![span.clone()]),
- )
- .exit(span)
- .done()
- .run_with_handle();
- (layer.with_filter(filter), handle)
- };
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer1)
- .with(layer2)
- .set_default();
-
- tracing::info_span!("span1").in_scope(|| {
- tracing::debug!("hello from span 1");
- tracing::trace!("not enabled");
- });
-
- tracing::info_span!("span2").in_scope(|| {
- tracing::info!("hello from span 2");
- tracing::debug!("not enabled");
- });
-
- handle1.assert_finished();
- handle2.assert_finished();
- }
-}
diff --git a/vendor/tracing-subscriber/tests/env_filter/per_layer.rs b/vendor/tracing-subscriber/tests/env_filter/per_layer.rs
deleted file mode 100644
index 8bf5698a4..000000000
--- a/vendor/tracing-subscriber/tests/env_filter/per_layer.rs
+++ /dev/null
@@ -1,305 +0,0 @@
-//! Tests for using `EnvFilter` as a per-layer filter (rather than a global
-//! `Layer` filter).
-#![cfg(feature = "registry")]
-use super::*;
-
-#[test]
-fn level_filter_event() {
- let filter: EnvFilter = "info".parse().expect("filter should parse");
- let (layer, handle) = layer::mock()
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- tracing::debug!(target: "foo", "this should also be disabled");
- tracing::warn!(target: "foo", "this should be enabled");
- tracing::error!("this should be enabled too");
-
- handle.assert_finished();
-}
-
-#[test]
-fn same_name_spans() {
- let filter: EnvFilter = "[foo{bar}]=trace,[foo{baz}]=trace"
- .parse()
- .expect("filter should parse");
- let (layer, handle) = layer::mock()
- .new_span(
- span::mock()
- .named("foo")
- .at_level(Level::TRACE)
- .with_field(field::mock("bar")),
- )
- .new_span(
- span::mock()
- .named("foo")
- .at_level(Level::TRACE)
- .with_field(field::mock("baz")),
- )
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::trace_span!("foo", bar = 1);
- tracing::trace_span!("foo", baz = 1);
-
- handle.assert_finished();
-}
-
-#[test]
-fn level_filter_event_with_target() {
- let filter: EnvFilter = "info,stuff=debug".parse().expect("filter should parse");
- let (layer, handle) = layer::mock()
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::DEBUG).with_target("stuff"))
- .event(event::mock().at_level(Level::WARN).with_target("stuff"))
- .event(event::mock().at_level(Level::ERROR))
- .event(event::mock().at_level(Level::ERROR).with_target("stuff"))
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- tracing::debug!(target: "stuff", "this should be enabled");
- tracing::debug!("but this shouldn't");
- tracing::trace!(target: "stuff", "and neither should this");
- tracing::warn!(target: "stuff", "this should be enabled");
- tracing::error!("this should be enabled too");
- tracing::error!(target: "stuff", "this should be enabled also");
-
- handle.assert_finished();
-}
-
-#[test]
-fn level_filter_event_with_target_and_span() {
- let filter: EnvFilter = "stuff[cool_span]=debug"
- .parse()
- .expect("filter should parse");
-
- let cool_span = span::named("cool_span");
- let (layer, handle) = layer::mock()
- .enter(cool_span.clone())
- .event(
- event::mock()
- .at_level(Level::DEBUG)
- .in_scope(vec![cool_span.clone()]),
- )
- .exit(cool_span)
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- {
- let _span = tracing::info_span!(target: "stuff", "cool_span").entered();
- tracing::debug!("this should be enabled");
- }
-
- tracing::debug!("should also be disabled");
-
- {
- let _span = tracing::info_span!("uncool_span").entered();
- tracing::debug!("this should be disabled");
- }
-
- handle.assert_finished();
-}
-
-#[test]
-fn not_order_dependent() {
- // this test reproduces tokio-rs/tracing#623
-
- let filter: EnvFilter = "stuff=debug,info".parse().expect("filter should parse");
- let (layer, finished) = layer::mock()
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::DEBUG).with_target("stuff"))
- .event(event::mock().at_level(Level::WARN).with_target("stuff"))
- .event(event::mock().at_level(Level::ERROR))
- .event(event::mock().at_level(Level::ERROR).with_target("stuff"))
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- tracing::debug!(target: "stuff", "this should be enabled");
- tracing::debug!("but this shouldn't");
- tracing::trace!(target: "stuff", "and neither should this");
- tracing::warn!(target: "stuff", "this should be enabled");
- tracing::error!("this should be enabled too");
- tracing::error!(target: "stuff", "this should be enabled also");
-
- finished.assert_finished();
-}
-
-#[test]
-fn add_directive_enables_event() {
- // this test reproduces tokio-rs/tracing#591
-
- // by default, use info level
- let mut filter = EnvFilter::new(LevelFilter::INFO.to_string());
-
- // overwrite with a more specific directive
- filter = filter.add_directive("hello=trace".parse().expect("directive should parse"));
-
- let (layer, finished) = layer::mock()
- .event(event::mock().at_level(Level::INFO).with_target("hello"))
- .event(event::mock().at_level(Level::TRACE).with_target("hello"))
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::info!(target: "hello", "hello info");
- tracing::trace!(target: "hello", "hello trace");
-
- finished.assert_finished();
-}
-
-#[test]
-fn span_name_filter_is_dynamic() {
- let filter: EnvFilter = "info,[cool_span]=debug"
- .parse()
- .expect("filter should parse");
- let cool_span = span::named("cool_span");
- let uncool_span = span::named("uncool_span");
- let (layer, finished) = layer::mock()
- .event(event::mock().at_level(Level::INFO))
- .enter(cool_span.clone())
- .event(
- event::mock()
- .at_level(Level::DEBUG)
- .in_scope(vec![cool_span.clone()]),
- )
- .enter(uncool_span.clone())
- .event(
- event::mock()
- .at_level(Level::WARN)
- .in_scope(vec![uncool_span.clone()]),
- )
- .event(
- event::mock()
- .at_level(Level::DEBUG)
- .in_scope(vec![uncool_span.clone()]),
- )
- .exit(uncool_span.clone())
- .exit(cool_span)
- .enter(uncool_span.clone())
- .event(
- event::mock()
- .at_level(Level::WARN)
- .in_scope(vec![uncool_span.clone()]),
- )
- .event(
- event::mock()
- .at_level(Level::ERROR)
- .in_scope(vec![uncool_span.clone()]),
- )
- .exit(uncool_span)
- .done()
- .run_with_handle();
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- tracing::trace!("this should be disabled");
- tracing::info!("this shouldn't be");
- let cool_span = tracing::info_span!("cool_span");
- let uncool_span = tracing::info_span!("uncool_span");
-
- {
- let _enter = cool_span.enter();
- tracing::debug!("i'm a cool event");
- tracing::trace!("i'm cool, but not cool enough");
- let _enter2 = uncool_span.enter();
- tracing::warn!("warning: extremely cool!");
- tracing::debug!("i'm still cool");
- }
-
- {
- let _enter = uncool_span.enter();
- tracing::warn!("warning: not that cool");
- tracing::trace!("im not cool enough");
- tracing::error!("uncool error");
- }
-
- finished.assert_finished();
-}
-
-#[test]
-fn multiple_dynamic_filters() {
- // Test that multiple dynamic (span) filters only apply to the layers
- // they're attached to.
- let (layer1, handle1) = {
- let span = span::named("span1");
- let filter: EnvFilter = "[span1]=debug".parse().expect("filter 1 should parse");
- let (layer, handle) = layer::named("layer1")
- .enter(span.clone())
- .event(
- event::mock()
- .at_level(Level::DEBUG)
- .in_scope(vec![span.clone()]),
- )
- .exit(span)
- .done()
- .run_with_handle();
- (layer.with_filter(filter), handle)
- };
-
- let (layer2, handle2) = {
- let span = span::named("span2");
- let filter: EnvFilter = "[span2]=info".parse().expect("filter 2 should parse");
- let (layer, handle) = layer::named("layer2")
- .enter(span.clone())
- .event(
- event::mock()
- .at_level(Level::INFO)
- .in_scope(vec![span.clone()]),
- )
- .exit(span)
- .done()
- .run_with_handle();
- (layer.with_filter(filter), handle)
- };
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer1)
- .with(layer2)
- .set_default();
-
- tracing::info_span!("span1").in_scope(|| {
- tracing::debug!("hello from span 1");
- tracing::trace!("not enabled");
- });
-
- tracing::info_span!("span2").in_scope(|| {
- tracing::info!("hello from span 2");
- tracing::debug!("not enabled");
- });
-
- handle1.assert_finished();
- handle2.assert_finished();
-}
diff --git a/vendor/tracing-subscriber/tests/event_enabling.rs b/vendor/tracing-subscriber/tests/event_enabling.rs
deleted file mode 100644
index 8f67cfcba..000000000
--- a/vendor/tracing-subscriber/tests/event_enabling.rs
+++ /dev/null
@@ -1,81 +0,0 @@
-#![cfg(feature = "registry")]
-
-use std::sync::{Arc, Mutex};
-use tracing::{subscriber::with_default, Event, Metadata, Subscriber};
-use tracing_subscriber::{layer::Context, prelude::*, registry, Layer};
-
-struct TrackingLayer {
- enabled: bool,
- event_enabled_count: Arc<Mutex<usize>>,
- event_enabled: bool,
- on_event_count: Arc<Mutex<usize>>,
-}
-
-impl<C> Layer<C> for TrackingLayer
-where
- C: Subscriber + Send + Sync + 'static,
-{
- fn enabled(&self, _metadata: &Metadata<'_>, _ctx: Context<'_, C>) -> bool {
- self.enabled
- }
-
- fn event_enabled(&self, _event: &Event<'_>, _ctx: Context<'_, C>) -> bool {
- *self.event_enabled_count.lock().unwrap() += 1;
- self.event_enabled
- }
-
- fn on_event(&self, _event: &Event<'_>, _ctx: Context<'_, C>) {
- *self.on_event_count.lock().unwrap() += 1;
- }
-}
-
-#[test]
-fn event_enabled_is_only_called_once() {
- let event_enabled_count = Arc::new(Mutex::default());
- let count = event_enabled_count.clone();
- let subscriber = registry().with(TrackingLayer {
- enabled: true,
- event_enabled_count,
- event_enabled: true,
- on_event_count: Arc::new(Mutex::default()),
- });
- with_default(subscriber, || {
- tracing::error!("hiya!");
- });
-
- assert_eq!(1, *count.lock().unwrap());
-}
-
-#[test]
-fn event_enabled_not_called_when_not_enabled() {
- let event_enabled_count = Arc::new(Mutex::default());
- let count = event_enabled_count.clone();
- let subscriber = registry().with(TrackingLayer {
- enabled: false,
- event_enabled_count,
- event_enabled: true,
- on_event_count: Arc::new(Mutex::default()),
- });
- with_default(subscriber, || {
- tracing::error!("hiya!");
- });
-
- assert_eq!(0, *count.lock().unwrap());
-}
-
-#[test]
-fn event_disabled_does_disable_event() {
- let on_event_count = Arc::new(Mutex::default());
- let count = on_event_count.clone();
- let subscriber = registry().with(TrackingLayer {
- enabled: true,
- event_enabled_count: Arc::new(Mutex::default()),
- event_enabled: false,
- on_event_count,
- });
- with_default(subscriber, || {
- tracing::error!("hiya!");
- });
-
- assert_eq!(0, *count.lock().unwrap());
-}
diff --git a/vendor/tracing-subscriber/tests/layer_filters/combinators.rs b/vendor/tracing-subscriber/tests/layer_filters/combinators.rs
deleted file mode 100644
index 6052a2d00..000000000
--- a/vendor/tracing-subscriber/tests/layer_filters/combinators.rs
+++ /dev/null
@@ -1,42 +0,0 @@
-use super::*;
-use tracing_subscriber::{
- filter::{filter_fn, FilterExt, LevelFilter},
- prelude::*,
-};
-
-#[test]
-fn and() {
- let (layer, handle) = layer::mock()
- .event(
- event::msg("a very interesting event")
- .at_level(tracing::Level::INFO)
- .with_target("interesting_target"),
- )
- .done()
- .run_with_handle();
-
- // Enables spans and events with targets starting with `interesting_target`:
- let target_filter = filter::filter_fn(|meta| meta.target().starts_with("interesting_target"));
-
- // Enables spans and events with levels `INFO` and below:
- let level_filter = LevelFilter::INFO;
-
- // Combine the two filters together, returning a filter that only enables
- // spans and events that *both* filters will enable:
- let filter = target_filter.and(level_filter);
-
- let _subscriber = tracing_subscriber::registry()
- .with(layer.with_filter(filter))
- .set_default();
-
- // This event will *not* be enabled:
- tracing::info!("an event with an uninteresting target");
-
- // This event *will* be enabled:
- tracing::info!(target: "interesting_target", "a very interesting event");
-
- // This event will *not* be enabled:
- tracing::debug!(target: "interesting_target", "interesting debug event...");
-
- handle.assert_finished();
-}
diff --git a/vendor/tracing-subscriber/tests/layer_filters/vec.rs b/vendor/tracing-subscriber/tests/layer_filters/vec.rs
deleted file mode 100644
index 87244e4ab..000000000
--- a/vendor/tracing-subscriber/tests/layer_filters/vec.rs
+++ /dev/null
@@ -1,120 +0,0 @@
-use super::*;
-use tracing::Subscriber;
-
-#[test]
-fn with_filters_unboxed() {
- let (trace_layer, trace_handle) = layer::named("trace")
- .event(event::mock().at_level(Level::TRACE))
- .event(event::mock().at_level(Level::DEBUG))
- .event(event::mock().at_level(Level::INFO))
- .done()
- .run_with_handle();
- let trace_layer = trace_layer.with_filter(LevelFilter::TRACE);
-
- let (debug_layer, debug_handle) = layer::named("debug")
- .event(event::mock().at_level(Level::DEBUG))
- .event(event::mock().at_level(Level::INFO))
- .done()
- .run_with_handle();
- let debug_layer = debug_layer.with_filter(LevelFilter::DEBUG);
-
- let (info_layer, info_handle) = layer::named("info")
- .event(event::mock().at_level(Level::INFO))
- .done()
- .run_with_handle();
- let info_layer = info_layer.with_filter(LevelFilter::INFO);
-
- let _subscriber = tracing_subscriber::registry()
- .with(vec![trace_layer, debug_layer, info_layer])
- .set_default();
-
- tracing::trace!("hello trace");
- tracing::debug!("hello debug");
- tracing::info!("hello info");
-
- trace_handle.assert_finished();
- debug_handle.assert_finished();
- info_handle.assert_finished();
-}
-
-#[test]
-fn with_filters_boxed() {
- let (unfiltered_layer, unfiltered_handle) = layer::named("unfiltered")
- .event(event::mock().at_level(Level::TRACE))
- .event(event::mock().at_level(Level::DEBUG))
- .event(event::mock().at_level(Level::INFO))
- .done()
- .run_with_handle();
- let unfiltered_layer = unfiltered_layer.boxed();
-
- let (debug_layer, debug_handle) = layer::named("debug")
- .event(event::mock().at_level(Level::DEBUG))
- .event(event::mock().at_level(Level::INFO))
- .done()
- .run_with_handle();
- let debug_layer = debug_layer.with_filter(LevelFilter::DEBUG).boxed();
-
- let (target_layer, target_handle) = layer::named("target")
- .event(event::mock().at_level(Level::INFO))
- .done()
- .run_with_handle();
- let target_layer = target_layer
- .with_filter(filter::filter_fn(|meta| meta.target() == "my_target"))
- .boxed();
-
- let _subscriber = tracing_subscriber::registry()
- .with(vec![unfiltered_layer, debug_layer, target_layer])
- .set_default();
-
- tracing::trace!("hello trace");
- tracing::debug!("hello debug");
- tracing::info!(target: "my_target", "hello my target");
-
- unfiltered_handle.assert_finished();
- debug_handle.assert_finished();
- target_handle.assert_finished();
-}
-
-#[test]
-fn mixed_max_level_hint() {
- let unfiltered = layer::named("unfiltered").run().boxed();
- let info = layer::named("info")
- .run()
- .with_filter(LevelFilter::INFO)
- .boxed();
- let debug = layer::named("debug")
- .run()
- .with_filter(LevelFilter::DEBUG)
- .boxed();
-
- let subscriber = tracing_subscriber::registry().with(vec![unfiltered, info, debug]);
-
- assert_eq!(subscriber.max_level_hint(), None);
-}
-
-#[test]
-fn all_filtered_max_level_hint() {
- let warn = layer::named("warn")
- .run()
- .with_filter(LevelFilter::WARN)
- .boxed();
- let info = layer::named("info")
- .run()
- .with_filter(LevelFilter::INFO)
- .boxed();
- let debug = layer::named("debug")
- .run()
- .with_filter(LevelFilter::DEBUG)
- .boxed();
-
- let subscriber = tracing_subscriber::registry().with(vec![warn, info, debug]);
-
- assert_eq!(subscriber.max_level_hint(), Some(LevelFilter::DEBUG));
-}
-
-#[test]
-fn empty_vec() {
- // Just a None means everything is off
- let subscriber = tracing_subscriber::registry().with(Vec::<ExpectLayer>::new());
- assert_eq!(subscriber.max_level_hint(), Some(LevelFilter::OFF));
-}
diff --git a/vendor/tracing-subscriber/tests/option.rs b/vendor/tracing-subscriber/tests/option.rs
deleted file mode 100644
index 738cc0a6c..000000000
--- a/vendor/tracing-subscriber/tests/option.rs
+++ /dev/null
@@ -1,41 +0,0 @@
-#![cfg(feature = "registry")]
-use tracing::level_filters::LevelFilter;
-use tracing::Subscriber;
-use tracing_subscriber::prelude::*;
-
-// This test is just used to compare to the tests below
-#[test]
-fn just_layer() {
- let subscriber = tracing_subscriber::registry().with(LevelFilter::INFO);
- assert_eq!(subscriber.max_level_hint(), Some(LevelFilter::INFO));
-}
-
-#[test]
-fn subscriber_and_option_some_layer() {
- let subscriber = tracing_subscriber::registry()
- .with(LevelFilter::INFO)
- .with(Some(LevelFilter::DEBUG));
- assert_eq!(subscriber.max_level_hint(), Some(LevelFilter::DEBUG));
-}
-
-#[test]
-fn subscriber_and_option_none_layer() {
- // None means the other layer takes control
- let subscriber = tracing_subscriber::registry()
- .with(LevelFilter::ERROR)
- .with(None::<LevelFilter>);
- assert_eq!(subscriber.max_level_hint(), Some(LevelFilter::ERROR));
-}
-
-#[test]
-fn just_option_some_layer() {
- // Just a None means everything is off
- let subscriber = tracing_subscriber::registry().with(None::<LevelFilter>);
- assert_eq!(subscriber.max_level_hint(), Some(LevelFilter::OFF));
-}
-
-#[test]
-fn just_option_none_layer() {
- let subscriber = tracing_subscriber::registry().with(Some(LevelFilter::ERROR));
- assert_eq!(subscriber.max_level_hint(), Some(LevelFilter::ERROR));
-}
diff --git a/vendor/tracing-subscriber/tests/vec.rs b/vendor/tracing-subscriber/tests/vec.rs
deleted file mode 100644
index 92abf0bff..000000000
--- a/vendor/tracing-subscriber/tests/vec.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-#![cfg(feature = "registry")]
-use tracing::level_filters::LevelFilter;
-use tracing::Subscriber;
-use tracing_subscriber::prelude::*;
-
-#[test]
-fn just_empty_vec() {
- // Just a None means everything is off
- let subscriber = tracing_subscriber::registry().with(Vec::<LevelFilter>::new());
- assert_eq!(subscriber.max_level_hint(), Some(LevelFilter::OFF));
-}
-
-#[test]
-fn layer_and_empty_vec() {
- let subscriber = tracing_subscriber::registry()
- .with(LevelFilter::INFO)
- .with(Vec::<LevelFilter>::new());
- assert_eq!(subscriber.max_level_hint(), Some(LevelFilter::INFO));
-}
diff --git a/vendor/tracing-subscriber/tests/vec_subscriber_filter_interests_cached.rs b/vendor/tracing-subscriber/tests/vec_subscriber_filter_interests_cached.rs
deleted file mode 100644
index 10467cb7d..000000000
--- a/vendor/tracing-subscriber/tests/vec_subscriber_filter_interests_cached.rs
+++ /dev/null
@@ -1,117 +0,0 @@
-#![cfg(feature = "registry")]
-mod support;
-use self::support::*;
-
-use std::{
- collections::HashMap,
- sync::{Arc, Mutex},
-};
-use tracing::{Level, Subscriber};
-use tracing_subscriber::{filter, prelude::*};
-
-#[test]
-fn vec_layer_filter_interests_are_cached() {
- let mk_filtered = |level: Level, subscriber: ExpectLayer| {
- let seen = Arc::new(Mutex::new(HashMap::new()));
- let filter = filter::filter_fn({
- let seen = seen.clone();
- move |meta| {
- *seen.lock().unwrap().entry(*meta.level()).or_insert(0usize) += 1;
- meta.level() <= &level
- }
- });
- (subscriber.with_filter(filter).boxed(), seen)
- };
-
- // This layer will return Interest::always for INFO and lower.
- let (info_layer, info_handle) = layer::named("info")
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .event(event::mock().at_level(Level::INFO))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .done()
- .run_with_handle();
- let (info_layer, seen_info) = mk_filtered(Level::INFO, info_layer);
-
- // This layer will return Interest::always for WARN and lower.
- let (warn_layer, warn_handle) = layer::named("warn")
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .event(event::mock().at_level(Level::WARN))
- .event(event::mock().at_level(Level::ERROR))
- .done()
- .run_with_handle();
- let (warn_layer, seen_warn) = mk_filtered(Level::WARN, warn_layer);
-
- let subscriber = tracing_subscriber::registry().with(vec![warn_layer, info_layer]);
- assert!(subscriber.max_level_hint().is_none());
-
- let _subscriber = subscriber.set_default();
-
- fn events() {
- tracing::trace!("hello trace");
- tracing::debug!("hello debug");
- tracing::info!("hello info");
- tracing::warn!("hello warn");
- tracing::error!("hello error");
- }
-
- events();
- {
- let lock = seen_info.lock().unwrap();
- for (&level, &count) in lock.iter() {
- if level == Level::INFO {
- continue;
- }
- assert_eq!(
- count, 1,
- "level {:?} should have been seen 1 time by the INFO subscriber (after first set of events)",
- level
- );
- }
-
- let lock = seen_warn.lock().unwrap();
- for (&level, &count) in lock.iter() {
- if level == Level::INFO {
- continue;
- }
- assert_eq!(
- count, 1,
- "level {:?} should have been seen 1 time by the WARN subscriber (after first set of events)",
- level
- );
- }
- }
-
- events();
- {
- let lock = seen_info.lock().unwrap();
- for (&level, &count) in lock.iter() {
- if level == Level::INFO {
- continue;
- }
- assert_eq!(
- count, 1,
- "level {:?} should have been seen 1 time by the INFO subscriber (after second set of events)",
- level
- );
- }
-
- let lock = seen_warn.lock().unwrap();
- for (&level, &count) in lock.iter() {
- if level == Level::INFO {
- continue;
- }
- assert_eq!(
- count, 1,
- "level {:?} should have been seen 1 time by the WARN subscriber (after second set of events)",
- level
- );
- }
- }
-
- info_handle.assert_finished();
- warn_handle.assert_finished();
-}
diff --git a/vendor/tracing/.cargo-checksum.json b/vendor/tracing/.cargo-checksum.json
index 404d4f3c0..8bfa395bb 100644
--- a/vendor/tracing/.cargo-checksum.json
+++ b/vendor/tracing/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"CHANGELOG.md":"7d5517e1ac705d5d8574915b59a37bbd0ba5aa6e663fc272b75e5792eca572a9","Cargo.toml":"f6290faffd0bf079845dbd6c3c1ddb6c728bcf7225e3b56a4ba5a9478dc72a8b","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"a83e1a8287e3eca752383ae849872707dddfbd07b918806cc7c027a0824872c6","benches/global_subscriber.rs":"271213baed0e02054e506c1ec9c47b58696c78aaa46f0969a147f4c369f80e3d","benches/no_subscriber.rs":"495c9a91fb972ec61ced31ef8e19d2cca02ec8ffae4e98e3316e55f6a0074578","benches/subscriber.rs":"c609be119ed6e4d3fb79df77f15aa14effbd3e2f77c627a49229a50091d3ee6a","src/dispatcher.rs":"a8158e1901c50dc83d2f15b1773e6b9e31985d9af65e460be52dbf8be6874cd2","src/field.rs":"55c7a2798b9ad0269e7c738c3f15a5d0281bf34ac3a6196a3f0b15801e5278bd","src/instrument.rs":"1fe4de5c13b5ba048e9872d78d1fa4e85655f9f2ed10f79b72b5da881c9b8b45","src/level_filters.rs":"baae8e797897bae9cdd9ec64b8e9a3d71156e9c03261be17b5b18acba034e154","src/lib.rs":"a8ab6b578f93b5fb833942fc59642e67caca8d343670d64fb52d47d5507a67e4","src/macros.rs":"f1a83930cea322f1f2000548d91800c22a9e28d2daf3f178c7c7c3ac8da5a02d","src/span.rs":"96b6c86be09c97b15b2ab5c607013abc5b388c2870eb648bee2cfc07837fa6e9","src/stdlib.rs":"248514a9bae6106e436358aee44c92abf8e7f79022895c4a25136ddef211d198","src/subscriber.rs":"ae879c373be7ee4935f7b02a345f92ccbeb7879d61c5d37e3cc1277b3d51ddb2","tests/enabled.rs":"1333339aace87ea9d701f2f76a1985820cc513a75013a7ed89669f7a2c635479","tests/event.rs":"c4ec3ac338475e9e61675551eb99df1d8a7cbefb05a0d60203994f5c1df7c784","tests/filter_caching_is_lexically_scoped.rs":"5487a37db5fbdf3d57020ab1f01185d928c45d967d99d723ffc434540459d8dc","tests/filters_are_not_reevaluated_for_the_same_span.rs":"251abbc000dddd298448958a1f0e5be71da527ac6c1a368d57837c83a5467329","tests/filters_are_reevaluated_for_different_call_sites.rs":"e0fdd8e930c043674702831b4d96f331e63aba824576bbac50b3f53bb0241cc7","tests/filters_dont_leak.rs":"d594266818a3461886da33bfcc76937d89a433ed6980226fc428706b216c093c","tests/future_send.rs":"3e9c9193219d12e342c18bbedb2f6ec940334202feb3cffba91601d6001b8575","tests/macro_imports.rs":"d5de857162185d4a2384f3cb644bfcf76c7f5c1a3b5f72bfa0d2620ac6e3873c","tests/macros.rs":"fa83397181d73d2cae09c16d9647a63d1e3bad0f2dbc5b3280f69f3d0180c488","tests/macros_incompatible_concat.rs":"5f3bcbb65e4ae39db1cfc2def62fc913c20bab0fb769c8f731504e2615585ee5","tests/macros_redefined_core.rs":"a6eac60522f71fe6c9a040b8b869d596f7eb9e907f5b49f4be4413a40c387676","tests/max_level_hint.rs":"9b366591d947ca0202fa0bdf797e1bb14534d3c896cf8b9674660cd2807c32ef","tests/multiple_max_level_hints.rs":"4d9ef0de9cccc787da8f5e3f6c233ac9db42a2a99cfe5e39997e1f4aa9df0c00","tests/no_subscriber.rs":"2f8f2ada5089d8e2e503394dfe8206598a11895907c53bf940b892f1e6afdd2f","tests/register_callsite_deadlock.rs":"c0b3142543e7a10065c7583a8ee0b6bc978ea4f3979599651101c5a28966e7c8","tests/scoped_clobbers_default.rs":"806480a74c15e4d68bb7576050662b1e53ee765fd583d003f8b349f17ea63a4b","tests/span.rs":"f84ead5b1dad9b91e5cec9d8378ab932a942936374ba928fb381e67fab52cda0","tests/subscriber.rs":"1617c098f4fa6abed174fe062111444c7b67fa0f377d2b342176998e572480e3"},"package":"a400e31aa60b9d44a52a8ee0343b5b18566b03a8321e0d321f695cf56e940160"} \ No newline at end of file
+{"files":{"CHANGELOG.md":"dc8a552611986799a0eebb56fd119ea8ae32c9b8da4be9914fe127627ad4f38a","Cargo.toml":"f8d12a05bc7ed5cfef787db206c05cc5ebcd2c165e6e629b613d1a3ff4f138de","LICENSE":"898b1ae9821e98daf8964c8d6c7f61641f5f5aa78ad500020771c0939ee0dea1","README.md":"6ff17749109fbe0855220188015846f40d3997bc2631c3163496c183c0bd50ce","benches/baseline.rs":"43a3e31b6c33dba2e6328052301b707b212487b83f0dcffc843061a9c48a2319","benches/dispatch_get_clone.rs":"866239abeb74a82440741c948a4e7e0a44e92e8cc87319ec57e3b057c9e8f5dd","benches/dispatch_get_ref.rs":"dd2803259a6784c256304e676bbce05de233e4c8451ac85863787213343e9be7","benches/empty_span.rs":"9f51cf376414ea751b2f50c357f2435a545d606118286f5b8b89f185e28aad8c","benches/enter_span.rs":"4410ec73d277e7b54e9f306c00ff3b79a150d1832966b7fc29984c8e3ad8d57c","benches/event.rs":"98de3c82ed18abe0a3cbe6eda9a4f9deec2b69bca42c3aac11dea4b608b85a67","benches/shared.rs":"2623311af7d153685064e664a5903d03e7dc3179754c324f3a76f29f060515e6","benches/span_fields.rs":"9166cd43ef2783e5419dd61ea57a02e48e8cc38aa1b357e9b79fa581929b60d8","benches/span_no_fields.rs":"79cc4befacf27d7ce728246087c4f06a6066f913e831d9043caeb7941f0193f6","benches/span_repeated.rs":"e4b3c99a7a9fc15d9042b8db399a56cf647b4eebd26f29d95325bb057b68330b","src/dispatcher.rs":"a8732392ffe56b1178f8fd3d6e6e02d40b51475c38bb4600abd9cd170df1bf6c","src/field.rs":"55c7a2798b9ad0269e7c738c3f15a5d0281bf34ac3a6196a3f0b15801e5278bd","src/instrument.rs":"1fe4de5c13b5ba048e9872d78d1fa4e85655f9f2ed10f79b72b5da881c9b8b45","src/level_filters.rs":"baae8e797897bae9cdd9ec64b8e9a3d71156e9c03261be17b5b18acba034e154","src/lib.rs":"325d0d9487ecd646a7e5e22617f5f291c4112e0e7e359e0033de1677217c5b22","src/macros.rs":"1b38906bcb32cad50b60d350c88f6f4f1fa4d46d99bf50318c44d75219760c42","src/span.rs":"372695b3eda8354a892316826d2598f821fcb835fb18e1e0271767bce730b7ad","src/stdlib.rs":"248514a9bae6106e436358aee44c92abf8e7f79022895c4a25136ddef211d198","src/subscriber.rs":"8933d8766439f929c0a98a0863d20aff37b221314b3825edd9058be511149968","tests/enabled.rs":"1333339aace87ea9d701f2f76a1985820cc513a75013a7ed89669f7a2c635479","tests/event.rs":"7678d1cc8a29ae8b716fbddb7cc4836422732ba3dce109ff511c8bb6100da606","tests/filter_caching_is_lexically_scoped.rs":"5487a37db5fbdf3d57020ab1f01185d928c45d967d99d723ffc434540459d8dc","tests/filters_are_not_reevaluated_for_the_same_span.rs":"251abbc000dddd298448958a1f0e5be71da527ac6c1a368d57837c83a5467329","tests/filters_are_reevaluated_for_different_call_sites.rs":"e0fdd8e930c043674702831b4d96f331e63aba824576bbac50b3f53bb0241cc7","tests/filters_dont_leak.rs":"d594266818a3461886da33bfcc76937d89a433ed6980226fc428706b216c093c","tests/future_send.rs":"3e9c9193219d12e342c18bbedb2f6ec940334202feb3cffba91601d6001b8575","tests/macro_imports.rs":"d5de857162185d4a2384f3cb644bfcf76c7f5c1a3b5f72bfa0d2620ac6e3873c","tests/macros.rs":"fa83397181d73d2cae09c16d9647a63d1e3bad0f2dbc5b3280f69f3d0180c488","tests/macros_incompatible_concat.rs":"5f3bcbb65e4ae39db1cfc2def62fc913c20bab0fb769c8f731504e2615585ee5","tests/macros_redefined_core.rs":"a6eac60522f71fe6c9a040b8b869d596f7eb9e907f5b49f4be4413a40c387676","tests/max_level_hint.rs":"9b366591d947ca0202fa0bdf797e1bb14534d3c896cf8b9674660cd2807c32ef","tests/multiple_max_level_hints.rs":"4d9ef0de9cccc787da8f5e3f6c233ac9db42a2a99cfe5e39997e1f4aa9df0c00","tests/no_subscriber.rs":"2f8f2ada5089d8e2e503394dfe8206598a11895907c53bf940b892f1e6afdd2f","tests/register_callsite_deadlock.rs":"c0b3142543e7a10065c7583a8ee0b6bc978ea4f3979599651101c5a28966e7c8","tests/scoped_clobbers_default.rs":"806480a74c15e4d68bb7576050662b1e53ee765fd583d003f8b349f17ea63a4b","tests/span.rs":"f84ead5b1dad9b91e5cec9d8378ab932a942936374ba928fb381e67fab52cda0","tests/subscriber.rs":"1617c098f4fa6abed174fe062111444c7b67fa0f377d2b342176998e572480e3"},"package":"8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"} \ No newline at end of file
diff --git a/vendor/tracing/CHANGELOG.md b/vendor/tracing/CHANGELOG.md
index 1c527f2de..978e0ca55 100644
--- a/vendor/tracing/CHANGELOG.md
+++ b/vendor/tracing/CHANGELOG.md
@@ -1,3 +1,85 @@
+# 0.1.37 (October 6, 2022)
+
+This release of `tracing` incorporates changes from `tracing-core`
+[v0.1.30][core-0.1.30] and `tracing-attributes` [v0.1.23][attrs-0.1.23],
+including the new `Subscriber::on_register_dispatch` method for performing late
+initialization after a `Subscriber` is registered as a `Dispatch`, and bugfixes
+for the `#[instrument]` attribute. Additionally, it fixes instances of the
+`bare_trait_objects` lint, which is now a warning on `tracing`'s MSRV and will
+become an error in the next edition.
+
+### Fixed
+
+- **attributes**: Incorrect handling of inner attributes in `#[instrument]`ed
+ functions ([#2307])
+- **attributes**: Incorrect location of compiler diagnostic spans generated for
+ type errors in `#[instrument]`ed `async fn`s ([#2270])
+- **attributes**: Updated `syn` dependency to fix compilation with `-Z
+ minimal-versions` ([#2246])
+- `bare_trait_objects` warning in `valueset!` macro expansion ([#2308])
+
+### Added
+
+- **core**: `Subscriber::on_register_dispatch` method ([#2269])
+- **core**: `WeakDispatch` type and `Dispatch::downgrade()` function ([#2293])
+
+### Changed
+
+- `tracing-core`: updated to [0.1.30][core-0.1.30]
+- `tracing-attributes`: updated to [0.1.23][attrs-0.1.23]
+
+### Documented
+
+- Added [`tracing-web`] and [`reqwest-tracing`] to related crates ([#2283],
+ [#2331])
+
+Thanks to new contributors @compiler-errors, @e-nomem, @WorldSEnder, @Xiami2012,
+and @tl-rodrigo-gryzinski, as well as @jswrenn and @CAD97, for contributing to
+this release!
+
+[core-0.1.30]: https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.30
+[attrs-0.1.23]: https://github.com/tokio-rs/tracing/releases/tag/tracing-attributes-0.1.23
+[`tracing-web`]: https://crates.io/crates/tracing-web/
+[`reqwest-tracing`]: https://crates.io/crates/reqwest-tracing/
+[#2246]: https://github.com/tokio-rs/tracing/pull/2246
+[#2269]: https://github.com/tokio-rs/tracing/pull/2269
+[#2283]: https://github.com/tokio-rs/tracing/pull/2283
+[#2270]: https://github.com/tokio-rs/tracing/pull/2270
+[#2293]: https://github.com/tokio-rs/tracing/pull/2293
+[#2307]: https://github.com/tokio-rs/tracing/pull/2307
+[#2308]: https://github.com/tokio-rs/tracing/pull/2308
+[#2331]: https://github.com/tokio-rs/tracing/pull/2331
+
+# 0.1.36 (July 29, 2022)
+
+This release adds support for owned values and fat pointers as arguments to the
+`Span::record` method, as well as updating the minimum `tracing-core` version
+and several documentation improvements.
+
+### Fixed
+
+- Incorrect docs in `dispatcher::set_default` ([#2220])
+- Compilation with `-Z minimal-versions` ([#2246])
+
+### Added
+
+- Support for owned values and fat pointers in `Span::record` ([#2212])
+- Documentation improvements ([#2208], [#2163])
+
+### Changed
+
+- `tracing-core`: updated to [0.1.29][core-0.1.29]
+
+Thanks to @fredr, @cgbur, @jyn514, @matklad, and @CAD97 for contributing to this
+release!
+
+[core-0.1.29]: https://github.com/tokio-rs/tracing/releases/tag/tracing-core-0.1.29
+[#2220]: https://github.com/tokio-rs/tracing/pull/2220
+[#2246]: https://github.com/tokio-rs/tracing/pull/2246
+[#2212]: https://github.com/tokio-rs/tracing/pull/2212
+[#2208]: https://github.com/tokio-rs/tracing/pull/2208
+[#2163]: https://github.com/tokio-rs/tracing/pull/2163
+
# 0.1.35 (June 8, 2022)
This release reduces the overhead of callsite registration by using new
diff --git a/vendor/tracing/Cargo.toml b/vendor/tracing/Cargo.toml
index dd6f1fb47..90f084d8e 100644
--- a/vendor/tracing/Cargo.toml
+++ b/vendor/tracing/Cargo.toml
@@ -13,7 +13,7 @@
edition = "2018"
rust-version = "1.49.0"
name = "tracing"
-version = "0.1.35"
+version = "0.1.37"
authors = [
"Eliza Weisman <eliza@buoyant.io>",
"Tokio Contributors <team@tokio.rs>",
@@ -52,37 +52,65 @@ rustc-args = [
]
[[bench]]
-name = "subscriber"
+name = "baseline"
harness = false
[[bench]]
-name = "no_subscriber"
+name = "dispatch_get_clone"
+harness = false
+
+[[bench]]
+name = "dispatch_get_ref"
+harness = false
+
+[[bench]]
+name = "empty_span"
+harness = false
+
+[[bench]]
+name = "enter_span"
+harness = false
+
+[[bench]]
+name = "event"
+harness = false
+
+[[bench]]
+name = "span_fields"
+harness = false
+
+[[bench]]
+name = "span_no_fields"
+harness = false
+
+[[bench]]
+name = "span_repeated"
harness = false
[dependencies.cfg-if]
version = "1.0.0"
[dependencies.log]
-version = "0.4"
+version = "0.4.17"
optional = true
[dependencies.pin-project-lite]
-version = "0.2"
+version = "0.2.9"
[dependencies.tracing-attributes]
-version = "0.1.20"
+version = "0.1.23"
optional = true
[dependencies.tracing-core]
-version = "0.1.27"
+version = "0.1.30"
default-features = false
[dev-dependencies.criterion]
-version = "0.3"
-default_features = false
+version = "0.3.6"
+default-features = false
[dev-dependencies.log]
-version = "0.4"
+version = "0.4.17"
[features]
async-await = []
diff --git a/vendor/tracing/README.md b/vendor/tracing/README.md
index 5da141a3a..694734577 100644
--- a/vendor/tracing/README.md
+++ b/vendor/tracing/README.md
@@ -16,9 +16,9 @@ Application-level tracing for Rust.
[Documentation][docs-url] | [Chat][discord-url]
[crates-badge]: https://img.shields.io/crates/v/tracing.svg
-[crates-url]: https://crates.io/crates/tracing/0.1.35
+[crates-url]: https://crates.io/crates/tracing
[docs-badge]: https://docs.rs/tracing/badge.svg
-[docs-url]: https://docs.rs/tracing/0.1.35
+[docs-url]: https://docs.rs/tracing
[docs-master-badge]: https://img.shields.io/badge/docs-master-blue
[docs-master-url]: https://tracing-rs.netlify.com/tracing
[mit-badge]: https://img.shields.io/badge/license-MIT-blue.svg
@@ -250,7 +250,7 @@ my_future
is as long as the future's.
The second, and preferred, option is through the
-[`#[instrument]`](https://docs.rs/tracing/0.1.35/tracing/attr.instrument.html)
+[`#[instrument]`](https://docs.rs/tracing/0.1.37/tracing/attr.instrument.html)
attribute:
```rust
@@ -297,7 +297,7 @@ span.in_scope(|| {
// Dropping the span will close it, indicating that it has ended.
```
-The [`#[instrument]`](https://docs.rs/tracing/0.1.35/tracing/attr.instrument.html) attribute macro
+The [`#[instrument]`](https://docs.rs/tracing/0.1.37/tracing/attr.instrument.html) attribute macro
can reduce some of this boilerplate:
```rust
@@ -395,6 +395,7 @@ maintained by the `tokio` project. These include:
framework for validating the behavior of `tracing` spans.
- [`sentry-tracing`] provides a layer for reporting events and traces to [Sentry].
- [`tracing-loki`] provides a layer for shipping logs to [Grafana Loki].
+- [`tracing-logfmt`] provides a layer that formats events and spans into the logfmt format.
If you're the maintainer of a `tracing` ecosystem crate not listed above,
please let us know! We'd love to add your project to the list!
@@ -424,6 +425,7 @@ please let us know! We'd love to add your project to the list!
[Sentry]: https://sentry.io/welcome/
[`tracing-loki`]: https://crates.io/crates/tracing-loki
[Grafana Loki]: https://grafana.com/oss/loki/
+[`tracing-logfmt`]: https://crates.io/crates/tracing-logfmt
**Note:** that some of the ecosystem crates are currently unreleased and
undergoing active development. They may be less stable than `tracing` and
diff --git a/vendor/tracing/benches/baseline.rs b/vendor/tracing/benches/baseline.rs
new file mode 100644
index 000000000..93c14f422
--- /dev/null
+++ b/vendor/tracing/benches/baseline.rs
@@ -0,0 +1,24 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+fn bench(c: &mut Criterion) {
+ use std::sync::atomic::{AtomicUsize, Ordering};
+
+ let mut group = c.benchmark_group("comparison");
+ group.bench_function("relaxed_load", |b| {
+ let foo = AtomicUsize::new(1);
+ b.iter(|| black_box(foo.load(Ordering::Relaxed)));
+ });
+ group.bench_function("acquire_load", |b| {
+ let foo = AtomicUsize::new(1);
+ b.iter(|| black_box(foo.load(Ordering::Acquire)))
+ });
+ group.bench_function("log", |b| {
+ b.iter(|| {
+ log::log!(log::Level::Info, "log");
+ })
+ });
+ group.finish();
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing/benches/dispatch_get_clone.rs b/vendor/tracing/benches/dispatch_get_clone.rs
new file mode 100644
index 000000000..15577c696
--- /dev/null
+++ b/vendor/tracing/benches/dispatch_get_clone.rs
@@ -0,0 +1,15 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_dispatches(&mut c.benchmark_group("Dispatch::get_clone"), |b| {
+ b.iter(|| {
+ let current = tracing::dispatcher::get_default(|current| current.clone());
+ black_box(current);
+ })
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing/benches/dispatch_get_ref.rs b/vendor/tracing/benches/dispatch_get_ref.rs
new file mode 100644
index 000000000..a59c34379
--- /dev/null
+++ b/vendor/tracing/benches/dispatch_get_ref.rs
@@ -0,0 +1,16 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_dispatches(&mut c.benchmark_group("Dispatch::get_ref"), |b| {
+ b.iter(|| {
+ tracing::dispatcher::get_default(|current| {
+ black_box(&current);
+ })
+ })
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing/benches/empty_span.rs b/vendor/tracing/benches/empty_span.rs
new file mode 100644
index 000000000..fb38b08e1
--- /dev/null
+++ b/vendor/tracing/benches/empty_span.rs
@@ -0,0 +1,43 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ let mut group = c.benchmark_group("empty_span");
+ shared::for_all_dispatches(&mut group, |b| {
+ b.iter(|| {
+ let span = tracing::span::Span::none();
+ black_box(&span);
+ })
+ });
+ group.bench_function("baseline_struct", |b| {
+ b.iter(|| {
+ let span = FakeEmptySpan::new();
+ black_box(&span);
+ })
+ });
+}
+
+struct FakeEmptySpan {
+ inner: Option<(usize, std::sync::Arc<()>)>,
+ meta: Option<&'static ()>,
+}
+
+impl FakeEmptySpan {
+ fn new() -> Self {
+ Self {
+ inner: None,
+ meta: None,
+ }
+ }
+}
+
+impl Drop for FakeEmptySpan {
+ fn drop(&mut self) {
+ black_box(&self.inner);
+ black_box(&self.meta);
+ }
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing/benches/enter_span.rs b/vendor/tracing/benches/enter_span.rs
new file mode 100644
index 000000000..757350a53
--- /dev/null
+++ b/vendor/tracing/benches/enter_span.rs
@@ -0,0 +1,16 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+use tracing::{span, Level};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_dispatches(&mut c.benchmark_group("enter_span"), |b| {
+ let span = span!(Level::TRACE, "span");
+ b.iter(|| {
+ let _span = span.enter();
+ })
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing/benches/event.rs b/vendor/tracing/benches/event.rs
new file mode 100644
index 000000000..164932548
--- /dev/null
+++ b/vendor/tracing/benches/event.rs
@@ -0,0 +1,12 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_recording(&mut c.benchmark_group("event"), |b| {
+ b.iter(|| tracing::info!("hello world!"))
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing/benches/global_subscriber.rs b/vendor/tracing/benches/global_subscriber.rs
deleted file mode 100644
index 83519610a..000000000
--- a/vendor/tracing/benches/global_subscriber.rs
+++ /dev/null
@@ -1,136 +0,0 @@
-use std::fmt::Write;
-
-use criterion::{black_box, criterion_group, criterion_main, Criterion};
-use tracing::Level;
-
-use tracing::{span, Event, Id, Metadata};
-
-/// A subscriber that is enabled but otherwise does nothing.
-struct EnabledSubscriber;
-
-impl tracing::Subscriber for EnabledSubscriber {
- fn new_span(&self, span: &span::Attributes<'_>) -> Id {
- let _ = span;
- Id::from_u64(0xDEAD_FACE)
- }
-
- fn event(&self, event: &Event<'_>) {
- let _ = event;
- }
-
- fn record(&self, span: &Id, values: &span::Record<'_>) {
- let _ = (span, values);
- }
-
- fn record_follows_from(&self, span: &Id, follows: &Id) {
- let _ = (span, follows);
- }
-
- fn enabled(&self, metadata: &Metadata<'_>) -> bool {
- let _ = metadata;
- true
- }
-
- fn enter(&self, span: &Id) {
- let _ = span;
- }
-
- fn exit(&self, span: &Id) {
- let _ = span;
- }
-}
-
-const NOP_LOGGER: NopLogger = NopLogger;
-
-struct NopLogger;
-
-impl log::Log for NopLogger {
- fn enabled(&self, _metadata: &log::Metadata) -> bool {
- true
- }
-
- fn log(&self, record: &log::Record) {
- if self.enabled(record.metadata()) {
- let mut this = self;
- let _ = write!(this, "{}", record.args());
- }
- }
-
- fn flush(&self) {}
-}
-
-impl Write for &NopLogger {
- fn write_str(&mut self, s: &str) -> std::fmt::Result {
- black_box(s);
- Ok(())
- }
-}
-
-const N_SPANS: usize = 100;
-
-fn criterion_benchmark(c: &mut Criterion) {
- let mut c = c.benchmark_group("global/subscriber");
- let _ = tracing::subscriber::set_global_default(EnabledSubscriber);
- let _ = log::set_logger(&NOP_LOGGER);
- log::set_max_level(log::LevelFilter::Trace);
- c.bench_function("span_no_fields", |b| b.iter(|| span!(Level::TRACE, "span")));
-
- c.bench_function("event", |b| {
- b.iter(|| {
- tracing::event!(Level::TRACE, "hello");
- })
- });
-
- c.bench_function("enter_span", |b| {
- let span = span!(Level::TRACE, "span");
- #[allow(clippy::unit_arg)]
- b.iter(|| black_box(span.in_scope(|| {})))
- });
-
- c.bench_function("span_repeatedly", |b| {
- #[inline]
- fn mk_span(i: u64) -> tracing::Span {
- span!(Level::TRACE, "span", i = i)
- }
-
- let n = black_box(N_SPANS);
- b.iter(|| (0..n).fold(mk_span(0), |_, i| mk_span(i as u64)))
- });
-
- c.bench_function("span_with_fields", |b| {
- b.iter(|| {
- span!(
- Level::TRACE,
- "span",
- foo = "foo",
- bar = "bar",
- baz = 3,
- quuux = tracing::field::debug(0.99)
- )
- });
- });
-}
-
-fn bench_dispatch(c: &mut Criterion) {
- let mut group = c.benchmark_group("global/dispatch");
- let _ = tracing::subscriber::set_global_default(EnabledSubscriber);
- let _ = log::set_logger(&NOP_LOGGER);
- log::set_max_level(log::LevelFilter::Trace);
- group.bench_function("get_ref", |b| {
- b.iter(|| {
- tracing::dispatcher::get_default(|current| {
- black_box(&current);
- })
- })
- });
- group.bench_function("get_clone", |b| {
- b.iter(|| {
- let current = tracing::dispatcher::get_default(|current| current.clone());
- black_box(current);
- })
- });
- group.finish();
-}
-
-criterion_group!(benches, criterion_benchmark, bench_dispatch);
-criterion_main!(benches);
diff --git a/vendor/tracing/benches/no_subscriber.rs b/vendor/tracing/benches/no_subscriber.rs
deleted file mode 100644
index e0f82b56a..000000000
--- a/vendor/tracing/benches/no_subscriber.rs
+++ /dev/null
@@ -1,101 +0,0 @@
-use criterion::{black_box, criterion_group, criterion_main, Criterion};
-use tracing::Level;
-
-struct FakeEmptySpan {
- inner: Option<(usize, std::sync::Arc<()>)>,
- meta: Option<&'static ()>,
-}
-
-impl FakeEmptySpan {
- fn new() -> Self {
- Self {
- inner: None,
- meta: None,
- }
- }
-}
-
-impl Drop for FakeEmptySpan {
- fn drop(&mut self) {
- black_box(&self.inner);
- black_box(&self.meta);
- }
-}
-
-fn bench_no_subscriber(c: &mut Criterion) {
- use std::sync::atomic::{AtomicUsize, Ordering};
-
- let mut group = c.benchmark_group("no_subscriber");
-
- group.bench_function("span", |b| {
- b.iter(|| {
- let span = tracing::span!(Level::TRACE, "span");
- black_box(&span);
- })
- });
- group.bench_function("span_enter", |b| {
- b.iter(|| {
- let span = tracing::span!(Level::TRACE, "span");
- let _e = span.enter();
- })
- });
- group.bench_function("empty_span", |b| {
- b.iter(|| {
- let span = tracing::span::Span::none();
- black_box(&span);
- });
- });
- group.bench_function("empty_struct", |b| {
- b.iter(|| {
- let span = FakeEmptySpan::new();
- black_box(&span);
- })
- });
- group.bench_function("event", |b| {
- b.iter(|| {
- tracing::event!(Level::TRACE, "hello");
- })
- });
- group.bench_function("relaxed_load", |b| {
- let foo = AtomicUsize::new(1);
- b.iter(|| black_box(foo.load(Ordering::Relaxed)));
- });
- group.bench_function("acquire_load", |b| {
- let foo = AtomicUsize::new(1);
- b.iter(|| black_box(foo.load(Ordering::Acquire)))
- });
- group.bench_function("log", |b| {
- b.iter(|| {
- log::log!(log::Level::Info, "log");
- })
- });
- group.finish();
-}
-
-fn bench_fields(c: &mut Criterion) {
- let mut group = c.benchmark_group("no_subscriber_field");
- group.bench_function("span", |b| {
- b.iter(|| {
- black_box(tracing::span!(
- Level::TRACE,
- "span",
- foo = tracing::field::display(format!("bar {:?}", 2))
- ));
- })
- });
- group.bench_function("event", |b| {
- b.iter(|| {
- tracing::event!(
- Level::TRACE,
- foo = tracing::field::display(format!("bar {:?}", 2))
- );
- })
- });
- group.bench_function("log", |b| {
- b.iter(|| log::log!(log::Level::Trace, "{}", format!("bar {:?}", 2)))
- });
- group.finish();
-}
-
-criterion_group!(benches, bench_no_subscriber, bench_fields);
-criterion_main!(benches);
diff --git a/vendor/tracing/benches/shared.rs b/vendor/tracing/benches/shared.rs
new file mode 100644
index 000000000..56508c4ab
--- /dev/null
+++ b/vendor/tracing/benches/shared.rs
@@ -0,0 +1,160 @@
+#![allow(dead_code)]
+use criterion::{black_box, measurement::WallTime, Bencher};
+use tracing::{field, span, Event, Id, Metadata};
+
+use std::{
+ fmt::{self, Write},
+ sync::{Mutex, MutexGuard},
+};
+
+pub fn for_all_recording(
+ group: &mut criterion::BenchmarkGroup<'_, WallTime>,
+ mut iter: impl FnMut(&mut Bencher<'_, WallTime>),
+) {
+ // first, run benchmarks with no subscriber
+ group.bench_function("none", &mut iter);
+
+ // then, run benchmarks with a scoped default subscriber
+ tracing::subscriber::with_default(EnabledSubscriber, || {
+ group.bench_function("scoped", &mut iter)
+ });
+
+ let subscriber = VisitingSubscriber(Mutex::new(String::from("")));
+ tracing::subscriber::with_default(subscriber, || {
+ group.bench_function("scoped_recording", &mut iter);
+ });
+
+ // finally, set a global default subscriber, and run the benchmarks again.
+ tracing::subscriber::set_global_default(EnabledSubscriber)
+ .expect("global default should not have already been set!");
+ let _ = log::set_logger(&NOP_LOGGER);
+ log::set_max_level(log::LevelFilter::Trace);
+ group.bench_function("global", &mut iter);
+}
+
+pub fn for_all_dispatches(
+ group: &mut criterion::BenchmarkGroup<'_, WallTime>,
+ mut iter: impl FnMut(&mut Bencher<'_, WallTime>),
+) {
+ // first, run benchmarks with no subscriber
+ group.bench_function("none", &mut iter);
+
+ // then, run benchmarks with a scoped default subscriber
+ tracing::subscriber::with_default(EnabledSubscriber, || {
+ group.bench_function("scoped", &mut iter)
+ });
+
+ // finally, set a global default subscriber, and run the benchmarks again.
+ tracing::subscriber::set_global_default(EnabledSubscriber)
+ .expect("global default should not have already been set!");
+ let _ = log::set_logger(&NOP_LOGGER);
+ log::set_max_level(log::LevelFilter::Trace);
+ group.bench_function("global", &mut iter);
+}
+
+const NOP_LOGGER: NopLogger = NopLogger;
+
+struct NopLogger;
+
+impl log::Log for NopLogger {
+ fn enabled(&self, _metadata: &log::Metadata) -> bool {
+ true
+ }
+
+ fn log(&self, record: &log::Record) {
+ if self.enabled(record.metadata()) {
+ let mut this = self;
+ let _ = write!(this, "{}", record.args());
+ }
+ }
+
+ fn flush(&self) {}
+}
+
+impl Write for &NopLogger {
+ fn write_str(&mut self, s: &str) -> std::fmt::Result {
+ black_box(s);
+ Ok(())
+ }
+}
+
+/// Simulates a subscriber that records span data.
+struct VisitingSubscriber(Mutex<String>);
+
+struct Visitor<'a>(MutexGuard<'a, String>);
+
+impl<'a> field::Visit for Visitor<'a> {
+ fn record_debug(&mut self, _field: &field::Field, value: &dyn fmt::Debug) {
+ let _ = write!(&mut *self.0, "{:?}", value);
+ }
+}
+
+impl tracing::Subscriber for VisitingSubscriber {
+ fn new_span(&self, span: &span::Attributes<'_>) -> Id {
+ let mut visitor = Visitor(self.0.lock().unwrap());
+ span.record(&mut visitor);
+ Id::from_u64(0xDEAD_FACE)
+ }
+
+ fn record(&self, _span: &Id, values: &span::Record<'_>) {
+ let mut visitor = Visitor(self.0.lock().unwrap());
+ values.record(&mut visitor);
+ }
+
+ fn event(&self, event: &Event<'_>) {
+ let mut visitor = Visitor(self.0.lock().unwrap());
+ event.record(&mut visitor);
+ }
+
+ fn record_follows_from(&self, span: &Id, follows: &Id) {
+ let _ = (span, follows);
+ }
+
+ fn enabled(&self, metadata: &Metadata<'_>) -> bool {
+ let _ = metadata;
+ true
+ }
+
+ fn enter(&self, span: &Id) {
+ let _ = span;
+ }
+
+ fn exit(&self, span: &Id) {
+ let _ = span;
+ }
+}
+
+/// A subscriber that is enabled but otherwise does nothing.
+struct EnabledSubscriber;
+
+impl tracing::Subscriber for EnabledSubscriber {
+ fn new_span(&self, span: &span::Attributes<'_>) -> Id {
+ let _ = span;
+ Id::from_u64(0xDEAD_FACE)
+ }
+
+ fn event(&self, event: &Event<'_>) {
+ let _ = event;
+ }
+
+ fn record(&self, span: &Id, values: &span::Record<'_>) {
+ let _ = (span, values);
+ }
+
+ fn record_follows_from(&self, span: &Id, follows: &Id) {
+ let _ = (span, follows);
+ }
+
+ fn enabled(&self, metadata: &Metadata<'_>) -> bool {
+ let _ = metadata;
+ true
+ }
+
+ fn enter(&self, span: &Id) {
+ let _ = span;
+ }
+
+ fn exit(&self, span: &Id) {
+ let _ = span;
+ }
+}
diff --git a/vendor/tracing/benches/span_fields.rs b/vendor/tracing/benches/span_fields.rs
new file mode 100644
index 000000000..5ad828982
--- /dev/null
+++ b/vendor/tracing/benches/span_fields.rs
@@ -0,0 +1,23 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+use tracing::{span, Level};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_recording(&mut c.benchmark_group("span_fields"), |b| {
+ b.iter(|| {
+ let span = span!(
+ Level::TRACE,
+ "span",
+ foo = "foo",
+ bar = "bar",
+ baz = 3,
+ quuux = tracing::field::debug(0.99)
+ );
+ criterion::black_box(span)
+ })
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing/benches/span_no_fields.rs b/vendor/tracing/benches/span_no_fields.rs
new file mode 100644
index 000000000..8a1ff6e04
--- /dev/null
+++ b/vendor/tracing/benches/span_no_fields.rs
@@ -0,0 +1,13 @@
+use criterion::{criterion_group, criterion_main, Criterion};
+use tracing::{span, Level};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_recording(&mut c.benchmark_group("span_no_fields"), |b| {
+ b.iter(|| span!(Level::TRACE, "span"))
+ });
+}
+
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing/benches/span_repeated.rs b/vendor/tracing/benches/span_repeated.rs
new file mode 100644
index 000000000..4c6ac409d
--- /dev/null
+++ b/vendor/tracing/benches/span_repeated.rs
@@ -0,0 +1,20 @@
+use criterion::{black_box, criterion_group, criterion_main, Criterion};
+use tracing::{span, Level};
+
+mod shared;
+
+fn bench(c: &mut Criterion) {
+ shared::for_all_recording(&mut c.benchmark_group("span_repeated"), |b| {
+ let n = black_box(N_SPANS);
+ b.iter(|| (0..n).fold(mk_span(0), |_, i| mk_span(i as u64)))
+ });
+}
+
+#[inline]
+fn mk_span(i: u64) -> tracing::Span {
+ span!(Level::TRACE, "span", i = i)
+}
+
+const N_SPANS: usize = 100;
+criterion_group!(benches, bench);
+criterion_main!(benches);
diff --git a/vendor/tracing/benches/subscriber.rs b/vendor/tracing/benches/subscriber.rs
deleted file mode 100644
index c6418010f..000000000
--- a/vendor/tracing/benches/subscriber.rs
+++ /dev/null
@@ -1,189 +0,0 @@
-use criterion::{black_box, criterion_group, criterion_main, Criterion};
-use tracing::Level;
-
-use std::{
- fmt,
- sync::{Mutex, MutexGuard},
-};
-use tracing::{field, span, Event, Id, Metadata};
-
-/// A subscriber that is enabled but otherwise does nothing.
-struct EnabledSubscriber;
-
-impl tracing::Subscriber for EnabledSubscriber {
- fn new_span(&self, span: &span::Attributes<'_>) -> Id {
- let _ = span;
- Id::from_u64(0xDEAD_FACE)
- }
-
- fn event(&self, event: &Event<'_>) {
- let _ = event;
- }
-
- fn record(&self, span: &Id, values: &span::Record<'_>) {
- let _ = (span, values);
- }
-
- fn record_follows_from(&self, span: &Id, follows: &Id) {
- let _ = (span, follows);
- }
-
- fn enabled(&self, metadata: &Metadata<'_>) -> bool {
- let _ = metadata;
- true
- }
-
- fn enter(&self, span: &Id) {
- let _ = span;
- }
-
- fn exit(&self, span: &Id) {
- let _ = span;
- }
-}
-
-/// Simulates a subscriber that records span data.
-struct VisitingSubscriber(Mutex<String>);
-
-struct Visitor<'a>(MutexGuard<'a, String>);
-
-impl<'a> field::Visit for Visitor<'a> {
- fn record_debug(&mut self, _field: &field::Field, value: &dyn fmt::Debug) {
- use std::fmt::Write;
- let _ = write!(&mut *self.0, "{:?}", value);
- }
-}
-
-impl tracing::Subscriber for VisitingSubscriber {
- fn new_span(&self, span: &span::Attributes<'_>) -> Id {
- let mut visitor = Visitor(self.0.lock().unwrap());
- span.record(&mut visitor);
- Id::from_u64(0xDEAD_FACE)
- }
-
- fn record(&self, _span: &Id, values: &span::Record<'_>) {
- let mut visitor = Visitor(self.0.lock().unwrap());
- values.record(&mut visitor);
- }
-
- fn event(&self, event: &Event<'_>) {
- let mut visitor = Visitor(self.0.lock().unwrap());
- event.record(&mut visitor);
- }
-
- fn record_follows_from(&self, span: &Id, follows: &Id) {
- let _ = (span, follows);
- }
-
- fn enabled(&self, metadata: &Metadata<'_>) -> bool {
- let _ = metadata;
- true
- }
-
- fn enter(&self, span: &Id) {
- let _ = span;
- }
-
- fn exit(&self, span: &Id) {
- let _ = span;
- }
-}
-
-const N_SPANS: usize = 100;
-
-fn criterion_benchmark(c: &mut Criterion) {
- c.bench_function("span_no_fields", |b| {
- tracing::subscriber::with_default(EnabledSubscriber, || {
- b.iter(|| span!(Level::TRACE, "span"))
- });
- });
-
- c.bench_function("enter_span", |b| {
- tracing::subscriber::with_default(EnabledSubscriber, || {
- let span = span!(Level::TRACE, "span");
- #[allow(clippy::unit_arg)]
- b.iter(|| black_box(span.in_scope(|| {})))
- });
- });
-
- c.bench_function("span_repeatedly", |b| {
- #[inline]
- fn mk_span(i: u64) -> tracing::Span {
- span!(Level::TRACE, "span", i = i)
- }
-
- let n = black_box(N_SPANS);
- tracing::subscriber::with_default(EnabledSubscriber, || {
- b.iter(|| (0..n).fold(mk_span(0), |_, i| mk_span(i as u64)))
- });
- });
-
- c.bench_function("span_with_fields", |b| {
- tracing::subscriber::with_default(EnabledSubscriber, || {
- b.iter(|| {
- span!(
- Level::TRACE,
- "span",
- foo = "foo",
- bar = "bar",
- baz = 3,
- quuux = tracing::field::debug(0.99)
- )
- })
- });
- });
-
- c.bench_function("span_with_fields_record", |b| {
- let subscriber = VisitingSubscriber(Mutex::new(String::from("")));
- tracing::subscriber::with_default(subscriber, || {
- b.iter(|| {
- span!(
- Level::TRACE,
- "span",
- foo = "foo",
- bar = "bar",
- baz = 3,
- quuux = tracing::field::debug(0.99)
- )
- })
- });
- });
-}
-
-fn bench_dispatch(c: &mut Criterion) {
- let mut group = c.benchmark_group("dispatch");
- group.bench_function("no_dispatch_get_ref", |b| {
- b.iter(|| {
- tracing::dispatcher::get_default(|current| {
- black_box(&current);
- })
- })
- });
- group.bench_function("no_dispatch_get_clone", |b| {
- b.iter(|| {
- let current = tracing::dispatcher::get_default(|current| current.clone());
- black_box(current);
- })
- });
- group.bench_function("get_ref", |b| {
- tracing::subscriber::with_default(EnabledSubscriber, || {
- b.iter(|| {
- tracing::dispatcher::get_default(|current| {
- black_box(&current);
- })
- })
- })
- });
- group.bench_function("get_clone", |b| {
- tracing::subscriber::with_default(EnabledSubscriber, || {
- b.iter(|| {
- let current = tracing::dispatcher::get_default(|current| current.clone());
- black_box(current);
- })
- })
- });
- group.finish();
-}
-
-criterion_group!(benches, criterion_benchmark, bench_dispatch);
-criterion_main!(benches);
diff --git a/vendor/tracing/src/dispatcher.rs b/vendor/tracing/src/dispatcher.rs
index 8817ac033..a84b99f4e 100644
--- a/vendor/tracing/src/dispatcher.rs
+++ b/vendor/tracing/src/dispatcher.rs
@@ -133,7 +133,7 @@ pub use tracing_core::dispatcher::with_default;
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub use tracing_core::dispatcher::DefaultGuard;
pub use tracing_core::dispatcher::{
- get_default, set_global_default, Dispatch, SetGlobalDefaultError,
+ get_default, set_global_default, Dispatch, SetGlobalDefaultError, WeakDispatch,
};
/// Private API for internal use by tracing's macros.
diff --git a/vendor/tracing/src/lib.rs b/vendor/tracing/src/lib.rs
index 4743eba20..342e04a82 100644
--- a/vendor/tracing/src/lib.rs
+++ b/vendor/tracing/src/lib.rs
@@ -727,6 +727,8 @@
//! in [bunyan] format, enriched with timing information.
//! - [`tracing-wasm`] provides a `Subscriber`/`Layer` implementation that reports
//! events and spans via browser `console.log` and [User Timing API (`window.performance`)].
+//! - [`tracing-web`] provides a layer implementation of level-aware logging of events
+//! to web browsers' `console.*` and span events to the [User Timing API (`window.performance`)].
//! - [`tide-tracing`] provides a [tide] middleware to trace all incoming requests and responses.
//! - [`test-log`] takes care of initializing `tracing` for tests, based on
//! environment variables with an `env_logger` compatible syntax.
@@ -743,6 +745,8 @@
//! - [`tracing-forest`] provides a subscriber that preserves contextual coherence by
//! grouping together logs from the same spans during writing.
//! - [`tracing-loki`] provides a layer for shipping logs to [Grafana Loki].
+//! - [`tracing-logfmt`] provides a layer that formats events and spans into the logfmt format.
+//! - [`reqwest-tracing`] provides a middleware to trace [`reqwest`] HTTP requests.
//!
//! If you're the maintainer of a `tracing` ecosystem crate not listed above,
//! please let us know! We'd love to add your project to the list!
@@ -760,6 +764,7 @@
//! [`tracing-bunyan-formatter`]: https://crates.io/crates/tracing-bunyan-formatter
//! [bunyan]: https://github.com/trentm/node-bunyan
//! [`tracing-wasm`]: https://docs.rs/tracing-wasm
+//! [`tracing-web`]: https://docs.rs/tracing-web
//! [User Timing API (`window.performance`)]: https://developer.mozilla.org/en-US/docs/Web/API/User_Timing_API
//! [`tide-tracing`]: https://crates.io/crates/tide-tracing
//! [tide]: https://crates.io/crates/tide
@@ -779,6 +784,9 @@
//! [`tracing-forest`]: https://crates.io/crates/tracing-forest
//! [`tracing-loki`]: https://crates.io/crates/tracing-loki
//! [Grafana Loki]: https://grafana.com/oss/loki/
+//! [`tracing-logfmt`]: https://crates.io/crates/tracing-logfmt
+//! [`reqwest-tracing`]: https://crates.io/crates/reqwest-tracing
+//! [`reqwest`]: https://crates.io/crates/reqwest
//!
//! <pre class="ignore" style="white-space:normal;font:inherit;">
//! <strong>Note</strong>: Some of these ecosystem crates are currently
@@ -809,7 +817,7 @@
//!
//! ```toml
//! [dependencies]
-//! tracing = { version = "0.1.35", default-features = false }
+//! tracing = { version = "0.1.37", default-features = false }
//! ```
//!
//! <pre class="ignore" style="white-space:normal;font:inherit;">
@@ -892,7 +900,7 @@
//! [flags]: #crate-feature-flags
#![cfg_attr(not(feature = "std"), no_std)]
#![cfg_attr(docsrs, feature(doc_cfg), deny(rustdoc::broken_intra_doc_links))]
-#![doc(html_root_url = "https://docs.rs/tracing/0.1.35")]
+#![doc(html_root_url = "https://docs.rs/tracing/0.1.37")]
#![doc(
html_logo_url = "https://raw.githubusercontent.com/tokio-rs/tracing/master/assets/logo-type.png",
issue_tracker_base_url = "https://github.com/tokio-rs/tracing/issues/"
diff --git a/vendor/tracing/src/macros.rs b/vendor/tracing/src/macros.rs
index b134af6e8..f3968e5c1 100644
--- a/vendor/tracing/src/macros.rs
+++ b/vendor/tracing/src/macros.rs
@@ -2193,79 +2193,79 @@ macro_rules! valueset {
// };
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &Value)) },
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &Value)) },
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$val as &Value)) },
+ @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$($k).+ as &Value)) },
+ @ { $($out),*, (&$next, Some(&$($k).+ as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$($k).+) as &Value)) },
+ @ { $($out),*, (&$next, Some(&debug(&$($k).+) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$($k).+) as &Value)) },
+ @ { $($out),*, (&$next, Some(&display(&$($k).+) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = ?$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &Value)) },
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = %$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &Value)) },
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+ = $val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$val as &Value)) },
+ @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$($k).+ as &Value)) },
+ @ { $($out),*, (&$next, Some(&$($k).+ as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, ?$($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$($k).+) as &Value)) },
+ @ { $($out),*, (&$next, Some(&debug(&$($k).+) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, %$($k:ident).+) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$($k).+) as &Value)) },
+ @ { $($out),*, (&$next, Some(&display(&$($k).+) as &dyn Value)) },
$next,
)
};
@@ -2273,47 +2273,47 @@ macro_rules! valueset {
// Handle literal names
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &Value)) },
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &Value)) },
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr, $($rest:tt)*) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$val as &Value)) },
+ @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
$next,
$($rest)*
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = ?$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&debug(&$val) as &Value)) },
+ @ { $($out),*, (&$next, Some(&debug(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = %$val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&display(&$val) as &Value)) },
+ @ { $($out),*, (&$next, Some(&display(&$val) as &dyn Value)) },
$next,
)
};
(@ { $(,)* $($out:expr),* }, $next:expr, $k:literal = $val:expr) => {
$crate::valueset!(
- @ { $($out),*, (&$next, Some(&$val as &Value)) },
+ @ { $($out),*, (&$next, Some(&$val as &dyn Value)) },
$next,
)
};
// Remainder is unparseable, but exists --- must be format args!
(@ { $(,)* $($out:expr),* }, $next:expr, $($rest:tt)+) => {
- $crate::valueset!(@ { (&$next, Some(&format_args!($($rest)+) as &Value)), $($out),* }, $next, )
+ $crate::valueset!(@ { (&$next, Some(&format_args!($($rest)+) as &dyn Value)), $($out),* }, $next, )
};
// === entry ===
diff --git a/vendor/tracing/src/span.rs b/vendor/tracing/src/span.rs
index 21358eb27..58822f4d9 100644
--- a/vendor/tracing/src/span.rs
+++ b/vendor/tracing/src/span.rs
@@ -1136,7 +1136,7 @@ impl Span {
///
/// // Now, record a value for parting as well.
/// // (note that the field name is passed as a string slice)
- /// span.record("parting", &"goodbye world!");
+ /// span.record("parting", "goodbye world!");
/// ```
/// However, it may also be used to record a _new_ value for a field whose
/// value was already recorded:
@@ -1154,7 +1154,7 @@ impl Span {
/// }
/// Err(_) => {
/// // Things are no longer okay!
- /// span.record("is_okay", &false);
+ /// span.record("is_okay", false);
/// }
/// }
/// ```
@@ -1181,17 +1181,17 @@ impl Span {
/// // Now, you try to record a value for a new field, `new_field`, which was not
/// // declared as `Empty` or populated when you created `span`.
/// // You won't get any error, but the assignment will have no effect!
- /// span.record("new_field", &"interesting_value_you_really_need");
+ /// span.record("new_field", "interesting_value_you_really_need");
///
/// // Instead, all fields that may be recorded after span creation should be declared up front,
/// // using field::Empty when a value is not known, as we did for `parting`.
/// // This `record` call will indeed replace field::Empty with "you will be remembered".
- /// span.record("parting", &"you will be remembered");
+ /// span.record("parting", "you will be remembered");
/// ```
///
/// [`field::Empty`]: super::field::Empty
/// [`Metadata`]: super::Metadata
- pub fn record<Q: ?Sized, V>(&self, field: &Q, value: &V) -> &Self
+ pub fn record<Q: ?Sized, V>(&self, field: &Q, value: V) -> &Self
where
Q: field::AsField,
V: field::Value,
@@ -1201,7 +1201,7 @@ impl Span {
self.record_all(
&meta
.fields()
- .value_set(&[(&field, Some(value as &dyn field::Value))]),
+ .value_set(&[(&field, Some(&value as &dyn field::Value))]),
);
}
}
@@ -1614,4 +1614,10 @@ mod test {
impl AssertSync for Span {}
impl AssertSync for Entered<'_> {}
impl AssertSync for EnteredSpan {}
+
+ #[test]
+ fn test_record_backwards_compat() {
+ Span::current().record("some-key", &"some text");
+ Span::current().record("some-key", &false);
+ }
}
diff --git a/vendor/tracing/src/subscriber.rs b/vendor/tracing/src/subscriber.rs
index 343dc5914..f55698d13 100644
--- a/vendor/tracing/src/subscriber.rs
+++ b/vendor/tracing/src/subscriber.rs
@@ -5,12 +5,12 @@ pub use tracing_core::subscriber::*;
#[cfg_attr(docsrs, doc(cfg(feature = "std")))]
pub use tracing_core::dispatcher::DefaultGuard;
-/// Sets this subscriber as the default for the duration of a closure.
+/// Sets this [`Subscriber`] as the default for the current thread for the
+/// duration of a closure.
///
/// The default subscriber is used when creating a new [`Span`] or
-/// [`Event`], _if no span is currently executing_. If a span is currently
-/// executing, new spans or events are dispatched to the subscriber that
-/// tagged that span, instead.
+/// [`Event`].
+///
///
/// [`Span`]: super::span::Span
/// [`Subscriber`]: super::subscriber::Subscriber
@@ -43,13 +43,10 @@ where
crate::dispatcher::set_global_default(crate::Dispatch::new(subscriber))
}
-/// Sets the subscriber as the default for the duration of the lifetime of the
-/// returned [`DefaultGuard`]
+/// Sets the [`Subscriber`] as the default for the current thread for the
+/// duration of the lifetime of the returned [`DefaultGuard`].
///
-/// The default subscriber is used when creating a new [`Span`] or
-/// [`Event`], _if no span is currently executing_. If a span is currently
-/// executing, new spans or events are dispatched to the subscriber that
-/// tagged that span, instead.
+/// The default subscriber is used when creating a new [`Span`] or [`Event`].
///
/// [`Span`]: super::span::Span
/// [`Subscriber`]: super::subscriber::Subscriber
diff --git a/vendor/tracing/tests/event.rs b/vendor/tracing/tests/event.rs
index ffb63c816..61df19ad3 100644
--- a/vendor/tracing/tests/event.rs
+++ b/vendor/tracing/tests/event.rs
@@ -474,3 +474,27 @@ fn option_ref_mut_values() {
handle.assert_finished();
}
+
+#[cfg_attr(target_arch = "wasm32", wasm_bindgen_test::wasm_bindgen_test)]
+#[test]
+fn string_field() {
+ let (subscriber, handle) = subscriber::mock()
+ .event(event::mock().with_fields(field::mock("my_string").with_value(&"hello").only()))
+ .event(
+ event::mock().with_fields(field::mock("my_string").with_value(&"hello world!").only()),
+ )
+ .done()
+ .run_with_handle();
+ with_default(subscriber, || {
+ let mut my_string = String::from("hello");
+
+ tracing::event!(Level::INFO, my_string);
+
+ // the string is not moved by using it as a field!
+ my_string.push_str(" world!");
+
+ tracing::event!(Level::INFO, my_string);
+ });
+
+ handle.assert_finished();
+}
diff --git a/vendor/unicode-ident/.cargo-checksum.json b/vendor/unicode-ident/.cargo-checksum.json
index 8066cd8bc..1fcb95c86 100644
--- a/vendor/unicode-ident/.cargo-checksum.json
+++ b/vendor/unicode-ident/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"43a169366c8f04f5c100d7b1a29fbe9f4d50ff5a019d72761be6c949f259333a","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"31a16b16a84da0ccaaeb16b1a4c70d89592d12de5c139053f724dbac91bdd40c","benches/xid.rs":"a61f61ecc7d5124c759cdeb55ab74470ab69f2f3ca37613da65f16e0e5e33487","src/lib.rs":"d0030259a628125669ad6c02d3eb791526e6d6ae35d8a858a87f90245162666c","src/tables.rs":"887457a7ce0d2fff750b40134de684e86d3999e5d191544f31ee45936b7bcb72","tests/compare.rs":"89c4dc4f745064a9f734667b1d960596a10b8cb019a8ed1c5b9512678a866ad5","tests/fst/mod.rs":"69a3aaf59acd8bca962ecc6234be56be8c0934ab79b253162f10eb881523901f","tests/fst/xid_continue.fst":"6e079a81175e445461dc330f61294c9f24bdb1681b7a591999fbb4547766ea99","tests/fst/xid_start.fst":"382fc736b472d09052a53c89cc2060bd839792350c6d22638b91e9123bf14540","tests/roaring/mod.rs":"784f65a48477fab7549620c7843c7ad6da533f69a18abca1172f6acb95045e53","tests/static_size.rs":"3974f6948c06d60b63738ddf5688478144718da87ccfdc4af6918d76a0bd9f06","tests/trie/mod.rs":"d4acbb716bcbaf80660039797f45e138ed8bbd66749fa3b19b1a971574679cc9","tests/trie/trie.rs":"6780e33f74f86131aa32f321bc3c77c4d9b526b708e82db64b198dce4c86429b"},"package":"5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"} \ No newline at end of file
+{"files":{"Cargo.toml":"4589e7f695ce2ae3c0dbb7a79647d044b8f2ef71183bf478fe01922966c54556","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","LICENSE-UNICODE":"68f5b9f5ea36881a0942ba02f558e9e1faf76cc09cb165ad801744c61b738844","README.md":"3dc1793fcaf87c77c5ed467c4a76cb696883f2f4329c011a869fbd34c4404382","benches/xid.rs":"a61f61ecc7d5124c759cdeb55ab74470ab69f2f3ca37613da65f16e0e5e33487","src/lib.rs":"d0030259a628125669ad6c02d3eb791526e6d6ae35d8a858a87f90245162666c","src/tables.rs":"4a84cc7a1a391abebe5672db993c519b9f8fe462690d7e5a8bdd43be8481c10b","tests/compare.rs":"89c4dc4f745064a9f734667b1d960596a10b8cb019a8ed1c5b9512678a866ad5","tests/fst/mod.rs":"69a3aaf59acd8bca962ecc6234be56be8c0934ab79b253162f10eb881523901f","tests/fst/xid_continue.fst":"0624500413ac318fee8424eecdad70397f911e3beae52231bfca295bb1bb9e04","tests/fst/xid_start.fst":"cc36f4f1149a4004ea7e2075cfb54756328b571946fda526be508cf5ed53dbdb","tests/roaring/mod.rs":"784f65a48477fab7549620c7843c7ad6da533f69a18abca1172f6acb95045e53","tests/static_size.rs":"6686edc08a6718cb4be03916b87a2594a2d2f2c779dbac6372fd27d5d7f7d8b6","tests/trie/mod.rs":"d4acbb716bcbaf80660039797f45e138ed8bbd66749fa3b19b1a971574679cc9","tests/trie/trie.rs":"dbd7de5fe601159643a4c6febed06793f812e8d71010b0ec78f2557353a976b2"},"package":"6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3"} \ No newline at end of file
diff --git a/vendor/unicode-ident/Cargo.toml b/vendor/unicode-ident/Cargo.toml
index bb1171eaa..03e1871fc 100644
--- a/vendor/unicode-ident/Cargo.toml
+++ b/vendor/unicode-ident/Cargo.toml
@@ -13,12 +13,20 @@
edition = "2018"
rust-version = "1.31"
name = "unicode-ident"
-version = "1.0.1"
+version = "1.0.5"
authors = ["David Tolnay <dtolnay@gmail.com>"]
description = "Determine whether characters have the XID_Start or XID_Continue properties according to Unicode Standard Annex #31"
documentation = "https://docs.rs/unicode-ident"
readme = "README.md"
-license = "MIT OR Apache-2.0"
+keywords = [
+ "unicode",
+ "xid",
+]
+categories = [
+ "development-tools::procedural-macro-helpers",
+ "no-std",
+]
+license = "(MIT OR Apache-2.0) AND Unicode-DFS-2016"
repository = "https://github.com/dtolnay/unicode-ident"
[package.metadata.docs.rs]
@@ -29,7 +37,7 @@ name = "xid"
harness = false
[dev-dependencies.criterion]
-version = "0.3"
+version = "0.4"
default-features = false
[dev-dependencies.fst]
@@ -40,11 +48,11 @@ version = "0.8"
features = ["small_rng"]
[dev-dependencies.roaring]
-version = "0.9"
+version = "0.10"
[dev-dependencies.ucd-trie]
version = "0.1"
default-features = false
[dev-dependencies.unicode-xid]
-version = "0.2"
+version = "0.2.4"
diff --git a/vendor/unicode-ident/LICENSE-UNICODE b/vendor/unicode-ident/LICENSE-UNICODE
new file mode 100644
index 000000000..85d0d580d
--- /dev/null
+++ b/vendor/unicode-ident/LICENSE-UNICODE
@@ -0,0 +1,46 @@
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+See Terms of Use <https://www.unicode.org/copyright.html>
+for definitions of Unicode Inc.’s Data Files and Software.
+
+NOTICE TO USER: Carefully read the following legal agreement.
+BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
+DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
+YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
+TERMS AND CONDITIONS OF THIS AGREEMENT.
+IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
+THE DATA FILES OR SOFTWARE.
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright © 1991-2022 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in https://www.unicode.org/copyright.html.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that either
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software, or
+(b) this copyright and permission notice appear in associated
+Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
diff --git a/vendor/unicode-ident/README.md b/vendor/unicode-ident/README.md
index 4acefdb05..6c590b06c 100644
--- a/vendor/unicode-ident/README.md
+++ b/vendor/unicode-ident/README.md
@@ -41,10 +41,10 @@ different ratios of ASCII to non-ASCII codepoints in the input data.
| | static storage | 0% nonascii | 1% | 10% | 100% nonascii |
|---|---|---|---|---|---|
-| **`unicode-ident`** | 9.75 K | 0.96 ns | 0.95 ns | 1.09 ns | 1.55 ns |
-| **`unicode-xid`** | 11.34 K | 1.88 ns | 2.14 ns | 3.48 ns | 15.63 ns |
-| **`ucd-trie`** | 9.95 K | 1.29 ns | 1.28 ns | 1.36 ns | 2.15 ns |
-| **`fst`** | 133 K | 55.1 ns | 54.9 ns | 53.2 ns | 28.5 ns |
+| **`unicode-ident`** | 10.0 K | 0.96 ns | 0.95 ns | 1.09 ns | 1.55 ns |
+| **`unicode-xid`** | 11.5 K | 1.88 ns | 2.14 ns | 3.48 ns | 15.63 ns |
+| **`ucd-trie`** | 10.2 K | 1.29 ns | 1.28 ns | 1.36 ns | 2.15 ns |
+| **`fst`** | 138 K | 55.1 ns | 54.9 ns | 53.2 ns | 28.5 ns |
| **`roaring`** | 66.1 K | 2.78 ns | 3.09 ns | 3.37 ns | 4.70 ns |
Source code for the benchmark is provided in the *bench* directory of this repo
@@ -263,15 +263,21 @@ is_xid_start:
## License
-<sup>
-Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
-2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
-</sup>
+Use of the Unicode Character Database, as this crate does, is governed by the <a
+href="LICENSE-UNICODE">Unicode License Agreement &ndash; Data Files and Software
+(2016)</a>.
-<br>
+All intellectual property within this crate that is **not generated** using the
+Unicode Character Database as input is licensed under either of <a
+href="LICENSE-APACHE">Apache License, Version 2.0</a> or <a
+href="LICENSE-MIT">MIT license</a> at your option.
+
+The **generated** files incorporate tabular data derived from the Unicode
+Character Database, together with intellectual property from the original source
+code content of the crate. One must comply with the terms of both the Unicode
+License Agreement and either of the Apache license or MIT license when those
+generated files are involved.
-<sub>
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
-be dual licensed as above, without any additional terms or conditions.
-</sub>
+be licensed as just described, without any additional terms or conditions.
diff --git a/vendor/unicode-ident/src/tables.rs b/vendor/unicode-ident/src/tables.rs
index a697636b6..380c798d1 100644
--- a/vendor/unicode-ident/src/tables.rs
+++ b/vendor/unicode-ident/src/tables.rs
@@ -28,7 +28,7 @@ pub(crate) static ASCII_CONTINUE: Align64<[bool; 128]> = Align64([
pub(crate) const CHUNK: usize = 64;
-pub(crate) static TRIE_START: Align8<[u8; 394]> = Align8([
+pub(crate) static TRIE_START: Align8<[u8; 402]> = Align8([
0x04, 0x0B, 0x0F, 0x13, 0x17, 0x1B, 0x1F, 0x23, 0x27, 0x2D, 0x31, 0x34, 0x38, 0x3C, 0x40, 0x02,
0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x4D, 0x00, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
@@ -39,21 +39,22 @@ pub(crate) static TRIE_START: Align8<[u8; 394]> = Align8([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x60, 0x64, 0x66,
0x6A, 0x6E, 0x72, 0x28, 0x76, 0x78, 0x7C, 0x80, 0x84, 0x88, 0x8C, 0x90, 0x94, 0x98, 0x9E, 0xA2,
0x05, 0x2B, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x99, 0x05, 0x05, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x05, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x05, 0xAE, 0x00, 0xB2, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
- 0x05, 0x05, 0x05, 0x32, 0x05, 0x05, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x43, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xBB, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xC6, 0x00, 0x00, 0x00, 0xB9,
- 0xBC, 0xCF, 0x00, 0xBF, 0xD3, 0x00, 0x00, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x05, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x05, 0xB1, 0x00, 0xB5, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x32, 0x05, 0x05, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x43, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC8, 0x00, 0x00, 0x00, 0xAF,
+ 0xCE, 0xD2, 0xD6, 0xBC, 0xDA, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
- 0x05, 0x05, 0x05, 0xD9, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x52, 0xDC, 0x05, 0x05, 0x05,
- 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xDF, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
- 0x05, 0x05, 0x05, 0x05, 0x05, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xE1, 0x00, 0x00,
- 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xDD,
+ 0x05, 0x05, 0x05, 0xE0, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x52, 0xE3, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xE6, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xE9, 0x00, 0x00,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xE4, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0xE7,
]);
pub(crate) static TRIE_CONTINUE: Align8<[u8; 1793]> = Align8([
@@ -66,23 +67,23 @@ pub(crate) static TRIE_CONTINUE: Align8<[u8; 1793]> = Align8([
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x09, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x62, 0x64, 0x68,
0x6C, 0x70, 0x74, 0x28, 0x76, 0x7A, 0x7E, 0x82, 0x86, 0x8A, 0x8E, 0x92, 0x96, 0x9B, 0xA0, 0xA4,
- 0x05, 0x2B, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x99, 0x05, 0x05, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x05, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x05, 0xB0, 0x00, 0xB4, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
- 0x05, 0x05, 0x05, 0x32, 0x05, 0x05, 0xB6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x43, 0xB8, 0x00, 0x00, 0x00, 0x00, 0xBE, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xAC, 0xC1, 0xC4, 0xC8, 0x00, 0xCA, 0x00, 0xB9,
- 0xCD, 0xD1, 0x00, 0xBF, 0xD5, 0x00, 0x00, 0xD7, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2, 0x00, 0x00,
+ 0x05, 0x2B, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x99, 0x05, 0x05, 0xAB, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x05, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x05, 0xB3, 0x00, 0xB7, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x32, 0x05, 0x05, 0xB9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9C, 0x43, 0xBB, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA9, 0xAC, 0xC4, 0xC6, 0xCA, 0x00, 0xCC, 0x00, 0xAF,
+ 0xD0, 0xD4, 0xD8, 0xBC, 0xDC, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x00, 0x00,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
- 0x05, 0x05, 0x05, 0xD9, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x52, 0xDC, 0x05, 0x05, 0x05,
- 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xDF, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
- 0x05, 0x05, 0x05, 0x05, 0x05, 0xDA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xE1, 0x00, 0x00,
- 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xDD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x05, 0x05, 0x05, 0xE0, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x52, 0xE3, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xE6, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xE9, 0x00, 0x00,
+ 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0xE4, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
+ 0x05, 0xE7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -169,10 +170,10 @@ pub(crate) static TRIE_CONTINUE: Align8<[u8; 1793]> = Align8([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xCB,
+ 0xC2,
]);
-pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
+pub(crate) static LEAF: Align64<[u8; 7520]> = Align64([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -240,7 +241,7 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
0xF0, 0xDF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0x27, 0x00, 0x40, 0x70, 0x80, 0x03, 0x00, 0x00, 0xFC,
0xE0, 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0xFB, 0x2F, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xFF, 0xF3, 0xDF, 0x3D, 0x60, 0x27, 0xCF, 0xFF, 0x00, 0x00,
- 0xEF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xEF, 0xF3, 0xDF, 0x3D, 0x60, 0x60, 0xCF, 0xFF, 0x06, 0x00,
+ 0xEF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFD, 0xEF, 0xF3, 0xDF, 0x3D, 0x60, 0x60, 0xCF, 0xFF, 0x0E, 0x00,
0xFF, 0xDF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x7D, 0xF0, 0x80, 0xCF, 0xFF, 0x00, 0xFC,
0xEE, 0xFF, 0x7F, 0xFC, 0xFF, 0xFF, 0xFB, 0x2F, 0x7F, 0x84, 0x5F, 0xFF, 0xC0, 0xFF, 0x0C, 0x00,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -248,7 +249,7 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00,
0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x7F, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
- 0xD6, 0xF7, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0x3F, 0x5F, 0x3F, 0xFF, 0xF3, 0x00, 0x00, 0x00, 0x00,
+ 0xD6, 0xF7, 0xFF, 0xFF, 0xAF, 0xFF, 0xFF, 0x3F, 0x5F, 0x7F, 0xFF, 0xF3, 0x00, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x03, 0xFF, 0x03, 0xA0, 0xC2, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0xFE, 0xFF,
0xDF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x1F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x80, 0x00, 0x00, 0x3F, 0x3C, 0x62, 0xC0, 0xE1, 0xFF,
@@ -309,7 +310,7 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0x00, 0x00, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x07,
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, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xF0, 0x00, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0x04, 0x00, 0x00, 0x00, 0x27, 0x00, 0xF0, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x80,
0x00, 0x00, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -339,7 +340,7 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
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, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 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, 0x1F, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x80,
0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
@@ -434,7 +435,7 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0,
0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF,
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00,
0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x00,
@@ -445,11 +446,11 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x04, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0x03,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x4F, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xDE, 0xFF, 0x17, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x0F, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7F, 0xBD, 0xFF, 0xBF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00,
0xE0, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0x23, 0x00, 0x00, 0x01, 0xE0, 0x03, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7F, 0xBD, 0xFF, 0xBF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x03,
0xEF, 0x9F, 0xF9, 0xFF, 0xFF, 0xFD, 0xED, 0xFB, 0x9F, 0x39, 0x81, 0xE0, 0xCF, 0x1F, 0x1F, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -499,28 +500,34 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
0xFF, 0x7F, 0xFB, 0x01, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x07, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xF4, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xC7, 0x07, 0x00, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xE3, 0x07, 0xF8,
0xE7, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0x7F, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xF8, 0xFF, 0xFF, 0xE0,
@@ -545,26 +552,24 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0xFF, 0x7F,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x1F,
0xFF, 0x01, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x3F, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0x1F,
0xFF, 0x01, 0xFF, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x6F, 0xFF, 0x7F,
+ 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, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x03,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xDF, 0x64, 0xDE, 0xFF, 0xEB, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xBF, 0xE7, 0xDF, 0xDF, 0xFF, 0xFF, 0xFF, 0x7B, 0x5F, 0xFC, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
@@ -581,10 +586,12 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
0x10, 0x00, 0x00, 0xF8, 0xFE, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 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, 0x00, 0x00,
- 0x7F, 0xFF, 0xFF, 0xF9, 0xDB, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x80, 0x3F, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x7F, 0xFF, 0xFF, 0xF9, 0xDB, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00,
+ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0x3F, 0xFF, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -595,6 +602,14 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
@@ -617,12 +632,14 @@ pub(crate) static LEAF: Align64<[u8; 7264]> = Align64([
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, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 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, 0x03, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
diff --git a/vendor/unicode-ident/tests/fst/xid_continue.fst b/vendor/unicode-ident/tests/fst/xid_continue.fst
index 5359051cb..05e7b1aa2 100644
--- a/vendor/unicode-ident/tests/fst/xid_continue.fst
+++ b/vendor/unicode-ident/tests/fst/xid_continue.fst
Binary files differ
diff --git a/vendor/unicode-ident/tests/fst/xid_start.fst b/vendor/unicode-ident/tests/fst/xid_start.fst
index 5c2e43fac..a5975b67e 100644
--- a/vendor/unicode-ident/tests/fst/xid_start.fst
+++ b/vendor/unicode-ident/tests/fst/xid_start.fst
Binary files differ
diff --git a/vendor/unicode-ident/tests/static_size.rs b/vendor/unicode-ident/tests/static_size.rs
index f0e04d4db..df65f45dd 100644
--- a/vendor/unicode-ident/tests/static_size.rs
+++ b/vendor/unicode-ident/tests/static_size.rs
@@ -13,7 +13,7 @@ fn test_size() {
+ size_of_val(&tables::TRIE_START)
+ size_of_val(&tables::TRIE_CONTINUE)
+ size_of_val(&tables::LEAF);
- assert_eq!(9752, size);
+ assert_eq!(10016, size);
}
#[test]
@@ -24,7 +24,7 @@ fn test_xid_size() {
mod ucd;
let size = size_of_val(ucd::XID_START) + size_of_val(ucd::XID_CONTINUE);
- assert_eq!(11344, size);
+ assert_eq!(11528, size);
let _ = ucd::BY_NAME;
}
@@ -71,7 +71,7 @@ fn test_trieset_size() {
+ size_of_val(tree3_level2)
+ size_of_val(tree3_level3);
- assert_eq!(9952, start_size + continue_size);
+ assert_eq!(10208, start_size + continue_size);
let _ = trie::BY_NAME;
}
@@ -81,7 +81,7 @@ fn test_fst_size() {
let xid_start_fst = include_bytes!("fst/xid_start.fst");
let xid_continue_fst = include_bytes!("fst/xid_continue.fst");
let size = xid_start_fst.len() + xid_continue_fst.len();
- assert_eq!(132897, size);
+ assert_eq!(137749, size);
}
#[test]
diff --git a/vendor/unicode-ident/tests/trie/trie.rs b/vendor/unicode-ident/tests/trie/trie.rs
index 7f7a14f31..821e7cb0f 100644
--- a/vendor/unicode-ident/tests/trie/trie.rs
+++ b/vendor/unicode-ident/tests/trie/trie.rs
@@ -2,9 +2,9 @@
//
// ucd-generate property-bool UCD --include XID_Start,XID_Continue --trie-set
//
-// Unicode version: 14.0.0.
+// Unicode version: 15.0.0.
//
-// ucd-generate 0.2.10 is available on crates.io.
+// ucd-generate 0.2.13 is available on crates.io.
pub const BY_NAME: &'static [(&'static str, &'static ::ucd_trie::TrieSet)] = &[
("XID_Continue", XID_CONTINUE), ("XID_Start", XID_START),
@@ -77,10 +77,10 @@ pub const XID_CONTINUE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0xF3C5FDFFFFF99FEF, 0x5003FFCFB080799F, 0xD36DFDFFFFF987EE,
0x3FFFC05E023987, 0xF3EDFDFFFFFBBFEE, 0xFE00FFCF00013BBF,
0xF3EDFDFFFFF99FEE, 0x2FFCFB0E0399F, 0xC3FFC718D63DC7EC, 0xFFC000813DC7,
- 0xF3FFFDFFFFFDDFFF, 0xFFCF27603DDF, 0xF3EFFDFFFFFDDFEF, 0x6FFCF60603DDF,
+ 0xF3FFFDFFFFFDDFFF, 0xFFCF27603DDF, 0xF3EFFDFFFFFDDFEF, 0xEFFCF60603DDF,
0xFFFFFFFFFFFDDFFF, 0xFC00FFCF80F07DDF, 0x2FFBFFFFFC7FFFEE,
0xCFFC0FF5F847F, 0x7FFFFFFFFFFFFFE, 0x3FF7FFF, 0x3FFFFFAFFFFFF7D6,
- 0xF3FF3F5F, 0xC2A003FF03000001, 0xFFFE1FFFFFFFFEFF, 0x1FFFFFFFFEFFFFDF,
+ 0xF3FF7F5F, 0xC2A003FF03000001, 0xFFFE1FFFFFFFFEFF, 0x1FFFFFFFFEFFFFDF,
0x40, 0xFFFFFFFFFFFF03FF, 0xFFFFFFFF3FFFFFFF, 0xF7FFFFFFFFFF20BF,
0xFFFFFFFF3D7F3DFF, 0x7F3DFFFFFFFF3DFF, 0xFFFFFFFFFF7FFF3D,
0xFFFFFFFFFF3DFFFF, 0x3FE00E7FFFFFF, 0xFFFFFFFF0000FFFF,
@@ -112,78 +112,80 @@ pub const XID_CONTINUE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree3_level1: &[
0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 11, 12, 13, 14, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 7, 15, 16, 17, 7, 18, 19, 7, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 7, 7, 7, 15, 16, 17, 7, 18, 19, 7, 20, 21, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 22, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
],
tree3_level2: &[
0, 1, 2, 3, 4, 5, 4, 6, 4, 4, 7, 8, 9, 10, 11, 12, 2, 2, 13, 14, 15, 16,
17, 4, 2, 2, 2, 2, 18, 19, 20, 4, 21, 22, 23, 24, 25, 4, 26, 4, 27, 28,
- 29, 30, 31, 32, 33, 4, 2, 34, 35, 35, 36, 4, 4, 4, 4, 4, 37, 4, 38, 39,
- 40, 41, 2, 42, 3, 43, 44, 45, 2, 46, 47, 4, 48, 49, 50, 51, 4, 4, 2, 52,
- 2, 53, 4, 4, 54, 55, 2, 56, 57, 58, 59, 60, 4, 4, 3, 4, 61, 62, 63, 64,
- 65, 66, 67, 68, 69, 57, 4, 4, 4, 4, 70, 71, 72, 4, 73, 74, 75, 4, 4, 4, 4,
- 76, 4, 4, 77, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 78, 4, 2, 79,
- 2, 2, 2, 80, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 81, 82, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 79, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 29, 30, 31, 32, 33, 4, 2, 34, 35, 35, 36, 4, 4, 4, 4, 4, 37, 38, 39, 40,
+ 41, 42, 2, 43, 3, 44, 45, 46, 2, 47, 48, 49, 50, 51, 52, 53, 4, 4, 2, 54,
+ 2, 55, 4, 4, 56, 57, 2, 58, 59, 60, 61, 62, 4, 4, 3, 4, 63, 64, 65, 66,
+ 67, 68, 69, 70, 71, 59, 4, 4, 4, 4, 72, 73, 74, 4, 75, 76, 77, 4, 4, 4, 4,
+ 78, 79, 80, 81, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 82, 4, 2, 83,
+ 2, 2, 2, 84, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 85, 86, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 87, 88, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 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, 60, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 62, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
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, 57, 83, 67, 84, 18, 85, 86, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 2, 4, 4, 2, 87, 88, 89, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 59, 89, 69, 90, 18, 91, 92, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 2, 4, 4, 2, 93, 94, 95, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 90, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 91, 34, 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, 96, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 88, 34, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 92, 2, 2, 2, 2, 93, 94, 2, 2, 2, 2, 2, 95, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 97, 2, 2, 2, 2, 98, 99, 2, 2, 2, 2, 2, 100, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 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, 96, 97, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 2, 101, 102, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 98, 60, 4, 4, 4, 4, 4, 4, 4, 99, 100, 4, 4, 101, 4, 4,
- 4, 4, 4, 4, 2, 102, 103, 104, 105, 106, 2, 2, 2, 2, 107, 108, 109, 110,
- 111, 112, 4, 4, 4, 4, 4, 4, 4, 4, 113, 114, 115, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 23, 4, 4, 4, 116, 4, 4, 4, 117, 118, 4, 4, 4,
- 4, 119, 120, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 121,
- 2, 2, 2, 122, 2, 123, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 124, 125, 126, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 103, 62, 4, 4, 4, 4, 4, 4, 4, 104, 105, 4, 4, 106, 4,
+ 4, 4, 4, 4, 4, 2, 107, 108, 109, 110, 111, 2, 2, 2, 2, 112, 113, 114, 115,
+ 116, 117, 4, 4, 4, 4, 4, 4, 4, 4, 118, 119, 120, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 121, 4, 4, 4, 122, 123, 124, 4, 125, 126, 4, 4,
+ 4, 4, 127, 128, 4, 4, 4, 4, 4, 4, 4, 129, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 130, 2, 2, 2, 131, 2, 132, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 133, 134, 135, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 127, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 128, 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, 136, 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, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 137, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 57, 2, 2, 2, 11,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 128, 2, 2, 2,
+ 11, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 138, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 129, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 130, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 131, 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, 132, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 139, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 133,
+ 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, 140, 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, 141, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 87, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 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, 87, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
],
tree3_level3: &[
0xB7FFFF7FFFFFEFFF, 0x3FFF3FFF, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFF, 0,
@@ -195,32 +197,34 @@ pub const XID_CONTINUE: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0x37FFFF00000000, 0x3FFFFFF003FFFFF, 0xC0FFFFFFFFFFFFFF,
0x873FFFFFFEEFF06F, 0x1FFFFFFF00000000, 0x1FFFFFFF, 0x7FFFFFFEFF,
0x3FFFFFFFFFFFFF, 0x7FFFF003FFFFF, 0x3FFFF, 0x1FF, 0x7FFFFFFFFFFFF,
- 0x3FF00FFFFFFFFFF, 0x31BFFFFFFFFFF, 0xFFFF00801FFFFFFF,
- 0xFFFF00000001FFFF, 0xFFFF00000000003F, 0x7FFFFF0000001F,
- 0x803FFFC00000007F, 0x3FF01FFFFFF0004, 0xFFDFFFFFFFFFFFFF,
- 0x4FFFFFFFFF00F0, 0x17FFDE1F, 0x40FFFFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F,
- 0x3FF07FFFFFFFFFF, 0xFBEDFDFFFFF99FEF, 0x1F1FCFE081399F, 0x3C3FF07FF,
- 0x3FF00BF, 0xFF3FFFFFFFFFFFFF, 0x3F000001, 0x3FF0011, 0x1FFFFFFFFFFFFFF,
- 0x3FF, 0x3FF0FFFE7FFFFFF, 0x7F, 0xFFFFFFFF00000000, 0x800003FFFFFFFFFF,
- 0xF9BFFFFFFF6FF27F, 0x3FF000F, 0xFFFFFCFF00000000, 0x1BFCFFFFFF,
- 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0080, 0xFFFF000023FFFFFF,
- 0xFF7FFFFFFFFFFDFF, 0xFFFC000003FF0001, 0x7FFEFFFFFCFFFF,
- 0xB47FFFFFFFFFFB7F, 0xFFFFFDBF03FF00FF, 0x3FF01FB7FFF, 0x7FFFFF00000000,
- 0x1000000000000, 0x3FFFFFF, 0x7FFFFFFFFFFF, 0xF, 0xFFFFFFFFFFFF0000,
- 0x1FFFFFFFFFFFF, 0xFFFF03FF7FFFFFFF, 0x1F3FFFFFFF03FF, 0xE0FFFFF803FF000F,
- 0xFFFF, 0xFFFFFFFFFFFF87FF, 0xFFFF80FF, 0x3001B00000000, 0xFFFFFFFFFFFFFF,
- 0x3FFFFF, 0x6FEF000000000000, 0x7FFFFFFFF, 0xFFFF00F000070000,
- 0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF, 0x63FF01FF, 0xFFFF3FFFFFFFFFFF,
- 0xF807E3E000000000, 0x3C0000000FE7, 0x1C, 0xFFFFFFFFFFDFFFFF,
- 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF,
- 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF, 0xF7FFFFFFF7FFFFFD,
- 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF,
- 0xFFFFFFFFFFFFCFF7, 0xF87FFFFFFFFFFFFF, 0x201FFFFFFFFFFF, 0xFFFEF8000010,
- 0x7DBF9FFFF7F, 0x3FFF1FFFFFFFFFFF, 0x43FF, 0x7FFFFFFF0000,
- 0x3FFFFFFFFFFFFFF, 0x7FFF6F7F00000000, 0x7F001F, 0x3FF0FFF,
- 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF,
+ 0x3FF00FFFFFFFFFF, 0x31BFFFFFFFFFF, 0xE000000000000000,
+ 0xFFFF00801FFFFFFF, 0xFFFF00000001FFFF, 0xFFFF00000000003F,
+ 0x7FFFFF0000001F, 0x803FFFC00000007F, 0x3FF01FFFFFF0004,
+ 0xFFDFFFFFFFFFFFFF, 0x4FFFFFFFFF00F0, 0x17FFDE1F, 0xC0FFFFFFFFFBFFFF, 0x3,
+ 0xFFFF01FFBFFFBD7F, 0x3FF07FFFFFFFFFF, 0xFBEDFDFFFFF99FEF,
+ 0x1F1FCFE081399F, 0x3C3FF07FF, 0x3FF00BF, 0xFF3FFFFFFFFFFFFF, 0x3F000001,
+ 0x3FF0011, 0x1FFFFFFFFFFFFFF, 0x3FF, 0x3FF0FFFE7FFFFFF, 0x7F,
+ 0xFFFFFFFF00000000, 0x800003FFFFFFFFFF, 0xF9BFFFFFFF6FF27F, 0x3FF000F,
+ 0xFFFFFCFF00000000, 0x1BFCFFFFFF, 0x7FFFFFFFFFFFFFFF, 0xFFFFFFFFFFFF0080,
+ 0xFFFF000023FFFFFF, 0xFF7FFFFFFFFFFDFF, 0xFFFC000003FF0001,
+ 0x7FFEFFFFFCFFFF, 0xB47FFFFFFFFFFB7F, 0xFFFFFDBF03FF00FF, 0x3FF01FB7FFF,
+ 0x7FFFFF00000000, 0xC7FFFFFFFFFDFFFF, 0x3FF0007, 0x1000000000000,
+ 0x3FFFFFF, 0x7FFFFFFFFFFF, 0xF, 0xFFFFFFFFFFFF0000, 0x1FFFFFFFFFFFF,
+ 0xFFFFFFFFFFFF, 0x3FFFFF, 0xFFFF03FF7FFFFFFF, 0x1F3FFFFFFF03FF,
+ 0xE0FFFFF803FF000F, 0xFFFF, 0xFFFFFFFFFFFF87FF, 0xFFFF80FF,
+ 0x3001B00000000, 0xFFFFFFFFFFFFFF, 0x6FEF000000000000, 0x40007FFFFFFFF,
+ 0xFFFF00F000270000, 0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF, 0x63FF01FF,
+ 0xFFFF3FFFFFFFFFFF, 0xF807E3E000000000, 0x3C0000000FE7, 0x1C,
+ 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF,
+ 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF,
+ 0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF,
+ 0xFFFFFDFFFFFFFDFF, 0xFFFFFFFFFFFFCFF7, 0xF87FFFFFFFFFFFFF,
+ 0x201FFFFFFFFFFF, 0xFFFEF8000010, 0x7E07FFFFFFF, 0xFFFF07DBF9FFFF7F,
+ 0x3FFFFFFFFFFF, 0x8000, 0x3FFF1FFFFFFFFFFF, 0x43FF, 0x7FFFFFFF0000,
+ 0x3FFFFFFFFFFFFFF, 0x3FFFFFFFFFF0000, 0x7FFF6F7F00000000, 0x7F001F,
+ 0x3FF0FFF, 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF,
0x3FF000000000000, 0xFFFFFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF,
- 0x3FFFFFFF, 0x7FF, 0xFFFFFFFFFFFF,
+ 0x3FFFFFFF, 0xFFFFFFFFFFFF07FF,
],
};
@@ -336,7 +340,7 @@ pub const XID_START: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
],
tree3_level1: &[
0, 1, 2, 3, 4, 5, 6, 7, 8, 5, 9, 10, 5, 11, 12, 5, 7, 7, 7, 7, 7, 7, 7, 7,
- 7, 7, 13, 14, 15, 7, 16, 17, 7, 18, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 7, 7, 13, 14, 15, 7, 16, 17, 7, 18, 19, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
@@ -345,61 +349,63 @@ pub const XID_START: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
],
tree3_level2: &[
0, 1, 2, 3, 4, 5, 4, 4, 4, 4, 6, 7, 8, 9, 10, 11, 2, 2, 12, 13, 14, 15,
16, 4, 2, 2, 2, 2, 17, 18, 19, 4, 20, 21, 22, 23, 24, 4, 25, 4, 26, 27,
28, 29, 30, 31, 32, 4, 2, 33, 34, 34, 35, 4, 4, 4, 4, 4, 36, 4, 37, 38,
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 4, 50, 22, 51, 52, 4, 4, 5,
- 53, 54, 55, 4, 4, 56, 57, 54, 58, 59, 4, 60, 61, 4, 4, 62, 4, 63, 64, 65,
- 66, 67, 68, 69, 70, 71, 72, 4, 4, 4, 4, 73, 74, 75, 4, 76, 77, 78, 4, 4,
- 4, 4, 79, 4, 4, 80, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 81, 4, 2,
- 56, 2, 2, 2, 82, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 83, 84, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 56, 4, 4, 4, 4, 4, 4, 4, 4,
+ 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 22, 52, 53, 4, 4, 5,
+ 54, 55, 56, 4, 4, 57, 58, 55, 59, 60, 4, 61, 62, 4, 4, 63, 4, 64, 65, 66,
+ 67, 68, 69, 70, 71, 72, 73, 4, 4, 4, 4, 74, 75, 76, 4, 77, 78, 79, 4, 4,
+ 4, 4, 80, 81, 4, 82, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 83, 4,
+ 2, 57, 2, 2, 2, 84, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 85, 86,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 55, 87, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 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, 61, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 62, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 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, 72, 85, 86, 87, 54, 88, 75, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 2, 4, 4, 2, 89, 90, 91, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 4, 2, 2, 2, 2, 2, 2, 2, 2, 73, 88, 89, 90, 55, 91, 76, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 2, 4, 4, 2, 92, 93, 94, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 92, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 93, 33, 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, 95, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 96, 33, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 94, 2, 2, 2, 2, 95, 96, 2, 2, 2, 2, 2, 97, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 97, 2, 2, 2, 2, 98, 99, 2, 2, 2, 2, 2, 100, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 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, 98, 99, 4, 4, 4, 4, 4, 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, 100, 101, 102, 103, 104, 2, 2,
- 2, 2, 105, 106, 107, 108, 109, 110, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 22, 4, 4, 4, 4, 4, 4, 4, 111,
- 112, 4, 4, 4, 4, 87, 62, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 113, 2, 2, 2, 114, 2, 115, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 116, 117, 118, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 119, 2, 2, 2, 2, 2, 2,
+ 4, 4, 4, 4, 4, 4, 2, 101, 102, 4, 4, 4, 4, 4, 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, 103, 104, 105, 106, 107,
+ 2, 2, 2, 2, 108, 109, 110, 111, 112, 113, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 114, 4, 4, 4, 115, 116,
+ 4, 4, 117, 118, 4, 4, 4, 4, 90, 63, 4, 4, 4, 4, 4, 4, 4, 119, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 120, 2, 2, 2, 121, 2, 122, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 123, 124, 125, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 126, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 72, 2, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 127, 2, 2, 2, 10, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 120, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 128, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 121, 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, 129, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4, 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, 122, 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, 123, 4, 4, 4, 4, 4, 4, 4, 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, 130, 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, 131, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 55,
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
],
tree3_level3: &[
0xB7FFFF7FFFFFEFFF, 0x3FFF3FFF, 0xFFFFFFFFFFFFFFFF, 0x7FFFFFFFFFFFFFF, 0,
@@ -414,23 +420,25 @@ pub const XID_START: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
0x303FFFFFFFFFF, 0xFFFF00801FFFFFFF, 0xFFFF00000000003F,
0xFFFF000000000003, 0x7FFFFF0000001F, 0xFFFFFFFFFFFFF8, 0x26000000000000,
0xFFFFFFFFFFF8, 0x1FFFFFF0000, 0x7FFFFFFFF8, 0x47FFFFFFFF0090,
- 0x7FFFFFFFFFFF8, 0x1400001E, 0xFFFFFFBFFFF, 0xFFFF01FFBFFFBD7F,
+ 0x7FFFFFFFFFFF8, 0x1400001E, 0x80000FFFFFFBFFFF, 0x1, 0xFFFF01FFBFFFBD7F,
0x23EDFDFFFFF99FE0, 0x3E0010000, 0x380000780, 0xFFFFFFFFFFFF, 0xB0,
0x7FFFFFFFFFFF, 0xF000000, 0x10, 0x10007FFFFFFFFFF, 0x7FFFFFF, 0x7F,
0xFFFFFFFFFFF, 0xFFFFFFFF00000000, 0x80000000FFFFFFFF, 0x8000FFFFFF6FF27F,
0x2, 0xFFFFFCFF00000000, 0xA0001FFFF, 0x407FFFFFFFFF801,
0xFFFFFFFFF0010000, 0xFFFF0000200003FF, 0x1FFFFFFFFFFFFFF, 0x7FFFFFFFFDFF,
0xFFFC000000000001, 0xFFFF, 0x1FFFFFFFFFB7F, 0xFFFFFDBF00000040,
- 0x10003FF, 0x7FFFF00000000, 0x1000000000000, 0x3FFFFFF, 0xF,
- 0xFFFFFFFFFFFF0000, 0x1FFFFFFFFFFFF, 0xFFFF00007FFFFFFF,
+ 0x10003FF, 0x7FFFF00000000, 0xFFFFFFFFDFFF4, 0x1000000000000, 0x3FFFFFF,
+ 0xF, 0xFFFFFFFFFFFF0000, 0x1FFFFFFFFFFFF, 0x7E, 0xFFFF00007FFFFFFF,
0x7FFFFFFFFFFFFFFF, 0x3FFFFFFF0000, 0xE0FFFFF80000000F, 0x107FF,
0xFFF80000, 0xB00000000, 0xFFFFFFFFFFFFFF, 0x3FFFFF, 0x6FEF000000000000,
- 0x7FFFFFFFF, 0xFFFF00F000070000, 0xFFFFFFFFFFFFFFF, 0x1FFF07FFFFFFFFFF,
- 0x3FF01FF, 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF, 0xFFFFFFFFFFFFFFEF,
- 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F, 0xFFFFFF3FFFFFFFFF,
- 0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF, 0xFFFF7FFFFFFF7FFF,
- 0xFFFFFDFFFFFFFDFF, 0xFF7, 0x3F801FFFFFFFFFFF, 0x4000, 0x7FFF6F7F00000000,
- 0x1F, 0x80F, 0xAF7FE96FFFFFFEF, 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF,
- 0xFFFFFFFF, 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF, 0x7FF,
+ 0x40007FFFFFFFF, 0xFFFF00F000270000, 0xFFFFFFFFFFFFFFF,
+ 0x1FFF07FFFFFFFFFF, 0x3FF01FF, 0xFFFFFFFFFFDFFFFF, 0xEBFFDE64DFFFFFFF,
+ 0xFFFFFFFFFFFFFFEF, 0x7BFFFFFFDFDFE7BF, 0xFFFFFFFFFFFDFC5F,
+ 0xFFFFFF3FFFFFFFFF, 0xF7FFFFFFF7FFFFFD, 0xFFDFFFFFFFDFFFFF,
+ 0xFFFF7FFFFFFF7FFF, 0xFFFFFDFFFFFFFDFF, 0xFF7, 0x7E07FFFFFFF,
+ 0xFFFF000000000000, 0x3FFFFFFFFFFF, 0x3F801FFFFFFFFFFF, 0x4000,
+ 0xFFFFFFF0000, 0x7FFF6F7F00000000, 0x1F, 0x80F, 0xAF7FE96FFFFFFEF,
+ 0x5EF7F796AA96EA84, 0xFFFFBEE0FFFFBFF, 0xFFFFFFFF, 0x3FFFFFFFFFFFFFF,
+ 0xFFFF0003FFFFFFFF, 0x1FFFFFFFF, 0x3FFFFFFF, 0xFFFFFFFFFFFF07FF,
],
};
diff --git a/vendor/unicode-normalization/.cargo-checksum.json b/vendor/unicode-normalization/.cargo-checksum.json
index 617f69464..7d296934d 100644
--- a/vendor/unicode-normalization/.cargo-checksum.json
+++ b/vendor/unicode-normalization/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"61d13c11053dc298bbfb471307ca7aadbd704d880154a709d03f8a7c229a5388","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"7bef9d9fba0d6241f26cc14785e9616f8a5c35ad75a2991980fe2ca0961c1d6a","benches/bench.rs":"827e5343b059a732904be29717c2797203bfd0a633edf08042afea65372a3e2c","scripts/unicode.py":"b2182eaa678e126d1b0e8d81ec1a950effe4b8827482dd729f03e6d2035e61da","src/__test_api.rs":"78e21bfa0b98894f545c8ed3e31cec20d7a48951a7f3ed69a6130c4b3d463aee","src/decompose.rs":"c0eb774843a545356e63bbcd7fb926f80d3c97ef4601ca3701fc34154f2e9905","src/lib.rs":"1983769ea083caa36b0736c87cf2a98e91c2b900f1d5dec64e327360fa862386","src/lookups.rs":"962f9909b32e02b8a2a05836135d9cd39bb1ce01f7c659de99cbd8a3a3c78574","src/no_std_prelude.rs":"602e81e67b8952b6571826f431e3b6787be3073bc10f38a0d3374278f81a6a1f","src/normalize.rs":"de2670b4437d335d42884af844a750f70e541467ecd34077dfe032103cb9b041","src/perfect_hash.rs":"400c84e2f467f61bd55d55d08672da6a9ad7a57c938ce5d0c701a6994b1b273b","src/quick_check.rs":"9756312d75fc31b67fca954e44a4812945a7e436b03ba18b9a2441f6de570f6f","src/recompose.rs":"a6228ad7561a5c7a1ef1d510159bdde1eea8a161007c80e470432e9b844d5536","src/replace.rs":"b24c904f3e00851a78820e30ddfa4ff10c795f8925fd0ee7f5870f31fdfa770b","src/stream_safe.rs":"383d71f0da401af8e735877e43855c7e16cb06deb2263539cdec2a407dbe257d","src/tables.rs":"a5dfbf4adc3b8e872b1edeaeed9a48da38648a97940c811d04e0bce9c97361d5","src/test.rs":"3af8ad8c6bd2cc1ca44660bd265ad813c88d3074b448df4d9ff376b25fb77d26"},"package":"854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6"} \ No newline at end of file
+{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"d43bfc158330a3a780af52ff0e82d88c8b54707ddf0469e6e27749c8ded4d1b7","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"60162364e07490163f7a8e199c7a0a8ace165ae5aa7e4b6f16ff1617ddef5867","benches/bench.rs":"827e5343b059a732904be29717c2797203bfd0a633edf08042afea65372a3e2c","scripts/unicode.py":"6b1d9025fa9970c23b9721c6704aa085263408d645cf9c469295978010fd7504","src/__test_api.rs":"78e21bfa0b98894f545c8ed3e31cec20d7a48951a7f3ed69a6130c4b3d463aee","src/decompose.rs":"c0eb774843a545356e63bbcd7fb926f80d3c97ef4601ca3701fc34154f2e9905","src/lib.rs":"1983769ea083caa36b0736c87cf2a98e91c2b900f1d5dec64e327360fa862386","src/lookups.rs":"962f9909b32e02b8a2a05836135d9cd39bb1ce01f7c659de99cbd8a3a3c78574","src/no_std_prelude.rs":"602e81e67b8952b6571826f431e3b6787be3073bc10f38a0d3374278f81a6a1f","src/normalize.rs":"de2670b4437d335d42884af844a750f70e541467ecd34077dfe032103cb9b041","src/perfect_hash.rs":"400c84e2f467f61bd55d55d08672da6a9ad7a57c938ce5d0c701a6994b1b273b","src/quick_check.rs":"9756312d75fc31b67fca954e44a4812945a7e436b03ba18b9a2441f6de570f6f","src/recompose.rs":"a6228ad7561a5c7a1ef1d510159bdde1eea8a161007c80e470432e9b844d5536","src/replace.rs":"b24c904f3e00851a78820e30ddfa4ff10c795f8925fd0ee7f5870f31fdfa770b","src/stream_safe.rs":"383d71f0da401af8e735877e43855c7e16cb06deb2263539cdec2a407dbe257d","src/tables.rs":"3d9983a4e24c5b1e5dc272a025cdc729b7107f9a52a1fc89eca598e69af36c3a","src/test.rs":"3af8ad8c6bd2cc1ca44660bd265ad813c88d3074b448df4d9ff376b25fb77d26"},"package":"5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"} \ No newline at end of file
diff --git a/vendor/unicode-normalization/Cargo.toml b/vendor/unicode-normalization/Cargo.toml
index 417d04ce9..1c4d1f527 100644
--- a/vendor/unicode-normalization/Cargo.toml
+++ b/vendor/unicode-normalization/Cargo.toml
@@ -12,7 +12,7 @@
[package]
edition = "2018"
name = "unicode-normalization"
-version = "0.1.21"
+version = "0.1.22"
authors = [
"kwantam <kwantam@gmail.com>",
"Manish Goregaokar <manishsmail@gmail.com>",
diff --git a/vendor/unicode-normalization/README.md b/vendor/unicode-normalization/README.md
index cdc456f31..35030e360 100644
--- a/vendor/unicode-normalization/README.md
+++ b/vendor/unicode-normalization/README.md
@@ -31,7 +31,7 @@ to your `Cargo.toml`:
```toml
[dependencies]
-unicode-normalization = "0.1.20"
+unicode-normalization = "0.1.22"
```
## `no_std` + `alloc` support
diff --git a/vendor/unicode-normalization/scripts/unicode.py b/vendor/unicode-normalization/scripts/unicode.py
index bfe49c8b2..d32d9128a 100644
--- a/vendor/unicode-normalization/scripts/unicode.py
+++ b/vendor/unicode-normalization/scripts/unicode.py
@@ -21,7 +21,7 @@
import collections
import urllib.request
-UNICODE_VERSION = "14.0.0"
+UNICODE_VERSION = "15.0.0"
UCD_URL = "https://www.unicode.org/Public/%s/ucd/" % UNICODE_VERSION
PREAMBLE = """// Copyright 2012-2018 The Rust Project Developers. See the COPYRIGHT
diff --git a/vendor/unicode-normalization/src/tables.rs b/vendor/unicode-normalization/src/tables.rs
index 0370e2bdb..4c6885562 100644
--- a/vendor/unicode-normalization/src/tables.rs
+++ b/vendor/unicode-normalization/src/tables.rs
@@ -15,163 +15,165 @@ use crate::quick_check::IsNormalized;
use crate::quick_check::IsNormalized::*;
#[allow(unused)]
-pub const UNICODE_VERSION: (u8, u8, u8) = (14, 0, 0);
+pub const UNICODE_VERSION: (u8, u8, u8) = (15, 0, 0);
pub(crate) const CANONICAL_COMBINING_CLASS_SALT: &[u16] = &[
0x0,
0x1,
- 0x5ef,
- 0x7c,
- 0xa,
- 0x0,
- 0x1f3,
- 0x7,
- 0x8b,
+ 0x224,
+ 0x197,
+ 0x4,
0x0,
+ 0x6f,
+ 0x4,
+ 0xaf,
0x0,
- 0x2,
0x0,
- 0x12,
+ 0x4,
0x0,
- 0x1,
0x0,
+ 0x88,
+ 0xa,
+ 0x8,
0x0,
0x0,
0x0,
- 0x52,
- 0xc8,
+ 0x1c,
+ 0x46,
0x1,
- 0x8a,
- 0x8e,
+ 0xd,
+ 0x1b,
0x0,
- 0x4,
- 0x83,
+ 0x15,
+ 0x12,
+ 0x45,
+ 0xec,
+ 0x36,
+ 0x10,
0x0,
- 0x5d,
- 0x42,
- 0x4,
0x0,
0x0,
- 0x65,
0x2,
0x0,
- 0x4a,
+ 0x94,
0x0,
- 0x3,
- 0x6,
- 0x4,
- 0xa,
- 0x4,
+ 0x57,
0x0,
- 0x4,
+ 0x8,
+ 0x3,
0x7,
- 0xa,
- 0x1a,
0x0,
- 0x32,
- 0x10,
- 0x36,
- 0x13,
- 0x2b,
- 0x12,
- 0x68,
+ 0x16,
+ 0x3a,
+ 0x2,
+ 0x23,
+ 0x3,
+ 0x4,
+ 0x1c,
0x1,
0x0,
- 0x19,
+ 0x47,
+ 0x11,
+ 0x17,
+ 0x4,
+ 0x1b,
0x0,
+ 0x13,
0x0,
0x0,
0x0,
- 0x5,
- 0x1,
0x0,
0x1,
- 0xa,
+ 0x7,
+ 0x7,
+ 0x4,
+ 0x2e,
0x0,
0x0,
- 0x5f,
+ 0x2c,
0x0,
0x0,
- 0x16,
+ 0x3,
+ 0xf,
0x0,
- 0x7,
0x0,
- 0x3,
+ 0x13,
0x0,
+ 0x1,
0x2,
- 0x11,
- 0x2,
- 0xd,
+ 0x1,
+ 0x9,
0x0,
0x0,
0x0,
0x1,
0x1,
0x0,
+ 0x2,
+ 0x2,
+ 0x3,
+ 0x2,
+ 0x1e,
+ 0x0,
+ 0x8,
0x11,
0x1,
- 0x17,
0x0,
- 0x15,
- 0x0,
- 0x47,
- 0x3,
- 0x27,
- 0x2c,
0x5,
0x0,
- 0x8,
- 0x0,
- 0x7,
+ 0x79,
0x0,
+ 0x4,
+ 0x13,
0x0,
0x0,
0x5,
- 0x20,
- 0x7,
- 0x15,
- 0x10,
- 0x15,
- 0x4,
- 0x3,
- 0x6,
- 0x0,
+ 0x2,
0x0,
+ 0x5,
0x1,
- 0x13,
- 0xb,
0x15,
+ 0x1,
+ 0x0,
0x3,
+ 0xc,
0x0,
+ 0x35,
+ 0x3,
0x2,
+ 0x5,
+ 0x6,
0x0,
- 0x3,
+ 0x5,
+ 0x4,
+ 0x2,
+ 0x1c,
0x0,
0x0,
0x0,
- 0xe,
+ 0x4,
0x0,
0x0,
0x0,
- 0x7,
0x9,
- 0x5,
- 0x6,
- 0x24,
- 0xa,
- 0x0,
- 0x20,
- 0x1,
+ 0x2,
+ 0x9,
+ 0x7,
0x0,
+ 0x5,
0x0,
- 0x19,
- 0x3a,
+ 0x8,
+ 0x7,
0x0,
- 0x3,
+ 0x12,
0x9,
0x0,
+ 0x39,
+ 0x2,
+ 0x9,
0x0,
0x4,
+ 0x2,
0x0,
0x0,
0x0,
@@ -179,182 +181,184 @@ pub(crate) const CANONICAL_COMBINING_CLASS_SALT: &[u16] = &[
0x0,
0x0,
0x1,
- 0x11,
- 0x1c,
- 0x4,
+ 0x22,
+ 0x2,
0x0,
+ 0x1b,
+ 0x13,
+ 0xc,
0x14,
- 0x21,
- 0x2,
- 0x5,
- 0xf,
+ 0x6,
0x4,
- 0x3,
+ 0x5,
+ 0x13,
0x2,
0x0,
- 0x2,
- 0x2,
+ 0x3,
+ 0x4,
0x2,
0x0,
- 0xb,
+ 0x18,
+ 0x0,
+ 0x6,
+ 0x4,
0x0,
+ 0x0,
+ 0xa,
0xa,
+ 0x0,
0x1,
0x0,
+ 0xf,
+ 0x10,
+ 0x1,
0x0,
- 0x14,
- 0x4,
0x0,
- 0x3,
0x0,
- 0x14,
0x2,
+ 0xf,
+ 0x1,
0x4,
- 0x0,
- 0x0,
- 0x0,
- 0x3,
- 0x17,
+ 0x2,
+ 0xa,
+ 0xb,
+ 0x9,
0x4,
- 0x3,
- 0x3,
- 0xe,
- 0x1c,
0x1,
- 0x2,
- 0x5,
0x0,
- 0x1,
0xb,
0x0,
- 0x0,
- 0xd,
- 0x0,
0x3,
+ 0x0,
0x6,
- 0x3,
- 0xe,
0x0,
+ 0x6,
0x0,
- 0x2,
+ 0x3,
+ 0x4,
0x0,
0x0,
- 0x5,
+ 0x3,
0x0,
- 0x10,
0x0,
+ 0x1,
+ 0x2,
+ 0x15,
0x0,
- 0x19,
0x0,
- 0x18,
0x0,
- 0x1,
+ 0x14,
+ 0x1b,
0x0,
- 0x1,
- 0x9,
- 0x5,
+ 0xc,
0x0,
0x0,
- 0x1,
- 0x4,
0x8,
+ 0x3,
+ 0xc,
0x0,
- 0x9,
- 0x11,
- 0x1b,
- 0x7,
- 0x0,
+ 0xe,
0x2,
0x0,
- 0x11,
+ 0x3,
+ 0x0,
+ 0xa,
+ 0x2,
+ 0x6,
0x1,
+ 0x0,
0x4,
- 0x4,
+ 0x0,
+ 0x1,
+ 0x6,
0x2,
- 0x11,
+ 0x3,
+ 0x2,
+ 0x10,
0x0,
0xf,
0x0,
0x0,
0x0,
0x3,
- 0xa,
- 0x0,
+ 0x3,
+ 0x4,
+ 0xd,
0x6,
- 0x8,
- 0x9,
0x0,
- 0x4,
0x0,
+ 0x2,
0x0,
0x0,
- 0xd,
- 0x2,
- 0xc,
- 0x6,
- 0x1d,
- 0x7,
0x0,
+ 0x18,
+ 0xa,
+ 0x6,
+ 0x1,
0x1,
- 0xd,
0x8,
0x0,
- 0x3,
+ 0x1,
+ 0x1,
+ 0x7,
0x0,
- 0x5,
- 0x6,
- 0x2,
0x3,
+ 0x9,
+ 0x11,
+ 0x5,
+ 0x1,
+ 0x5,
0x3,
- 0xd,
0x16,
- 0x3,
0x7,
+ 0x5,
+ 0x4,
0x0,
- 0xc,
- 0xe,
+ 0xa,
+ 0x6,
0x3,
0x0,
0x1,
0x0,
- 0x6,
- 0x0,
- 0x3,
- 0x9,
- 0x0,
0x7,
+ 0x0,
0x6,
0x0,
- 0xa,
- 0x2,
- 0x1b,
0x5,
+ 0x41,
0x9,
- 0x16,
+ 0x1,
+ 0xa,
0x0,
+ 0x5,
+ 0x2,
+ 0x11,
+ 0xb,
+ 0x3,
0x1,
0x0,
0x0,
0x1,
- 0x2,
+ 0x1,
0x0,
- 0x7,
- 0x3,
0x2,
- 0xe,
0x0,
- 0x1,
+ 0x6,
+ 0x18,
+ 0x3,
0x0,
+ 0x3,
0x0,
0x2,
- 0x1,
+ 0x0,
0x2,
0x0,
0x0,
0x0,
+ 0x0,
0x5,
- 0x3,
- 0x9,
+ 0x1,
+ 0x0,
0x0,
0x9,
0x1,
@@ -363,295 +367,298 @@ pub(crate) const CANONICAL_COMBINING_CLASS_SALT: &[u16] = &[
0x2,
0x1,
0x0,
- 0x3,
- 0x3,
- 0xc,
+ 0x1,
+ 0x2,
+ 0x1,
0x0,
+ 0x3,
0x1,
0x1,
0x1,
+ 0x0,
+ 0x3,
+ 0xc,
+ 0x1,
+ 0x3,
0x1,
0x0,
- 0x5,
- 0x5,
0x2,
- 0x7,
- 0x7,
- 0x0,
- 0x1,
0x0,
0x0,
0x5,
- 0x2,
- 0xc,
+ 0x1,
+ 0x5,
0x0,
- 0x3,
- 0x12,
- 0x4,
+ 0x1,
+ 0xb,
+ 0x5,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
- 0x5,
+ 0xf,
0x0,
0x0,
- 0xd,
+ 0x2,
0x7,
0x0,
0x0,
0x0,
0x0,
0x0,
- 0x1,
- 0x0,
- 0x9,
- 0x0,
- 0xc,
- 0x0,
- 0x8,
0x0,
0x1,
- 0x5,
- 0x1,
- 0x0,
0x0,
- 0xa,
0x9,
+ 0x8,
0x0,
- 0x5,
0x0,
+ 0x3,
+ 0x3,
0x1,
0x4,
+ 0x3,
+ 0x4,
+ 0x5,
+ 0x2,
0x0,
- 0x1,
0x0,
+ 0x2,
+ 0x6,
0x1,
- 0x0,
0x5,
- 0x9,
+ 0x1,
+ 0x0,
0x3,
- 0x5,
+ 0x6,
+ 0x8,
+ 0x2,
+ 0x2,
0x6,
0x3,
- 0x4,
+ 0x0,
+ 0x10,
0x6,
+ 0x6,
+ 0x5,
0x1,
- 0x9,
- 0x1,
+ 0x7,
0x0,
0x2,
- 0x6,
+ 0x3,
0x2,
- 0x4,
- 0x0,
0x0,
- 0x8,
0x0,
0x0,
+ 0x6,
0x0,
0x0,
- 0xc,
0x0,
0x0,
+ 0x1,
0x0,
- 0x6,
- 0x6,
0x0,
- 0x6,
0x0,
0x1,
- 0x3,
- 0x4,
- 0x0,
- 0x3,
- 0x5,
+ 0x1,
+ 0x8,
+ 0x1,
0x0,
0x2,
- 0x2,
- 0x1,
- 0x4,
- 0x4,
0x0,
0x1,
+ 0xc,
+ 0x4,
0x1,
+ 0x2,
0x1,
- 0x0,
- 0x6,
- 0x3,
- 0x8,
- 0x1,
+ 0x4,
0x2,
+ 0x5,
+ 0x4,
0x0,
0x3,
+ 0x4,
0x2,
0x0,
0x1,
+ 0x3,
+ 0x7,
+ 0x6,
+ 0x8,
0x0,
+ 0x2,
0x3,
- 0xd,
0x0,
+ 0x2,
+ 0x2,
+ 0x2,
+ 0x4,
0x0,
+ 0x0,
+ 0x6,
+ 0x6,
+ 0x6,
+ 0xc,
0x5,
- 0x1,
0x0,
- 0x4,
- 0x3,
0x0,
0x0,
- 0x8,
- 0x4,
0x1,
- 0x1,
- 0xb,
+ 0x2,
0x0,
0x3,
0x0,
+ 0x9,
+ 0x3,
0x2,
0x1,
- 0x0,
- 0x16,
+ 0x1,
+ 0x9,
0x1,
0x0,
- 0x2,
0x8,
+ 0x1,
+ 0x6,
0x0,
0x3,
0x0,
- 0x0,
0x5,
0x1,
- 0x0,
- 0x0,
0x1,
- 0x4,
0x0,
0x0,
- 0x9,
0x2,
+ 0x4,
0x0,
0x2,
0x0,
- 0x9,
- 0x4,
0x2,
+ 0x6,
+ 0x6,
0x2,
+ 0x8,
+ 0x5,
+ 0x6,
+ 0x5,
0x1,
- 0x1,
- 0x3,
- 0x0,
- 0x7,
+ 0x6,
+ 0x2,
0x0,
+ 0x1,
0x0,
0x0,
0x3,
+ 0x0,
0x1,
- 0x3,
- 0x6,
- 0x2,
+ 0x9,
+ 0x5,
+ 0x5,
0xe,
0x0,
- 0x6,
+ 0x3,
0x5,
0x0,
0x0,
0x1,
+ 0x1,
0x0,
- 0x2,
0x0,
0x0,
0x0,
0x1,
- 0x2,
+ 0x4,
0x0,
- 0x1,
+ 0x2,
0x4,
+ 0x6,
0x5,
- 0x9,
- 0x1,
+ 0x6,
0x0,
- 0x9,
0x0,
0x1,
+ 0x1,
0x0,
0x0,
- 0x1,
- 0x2,
+ 0x5,
0x2,
0x8,
- 0x3,
- 0x3,
+ 0x8,
+ 0x1,
+ 0x6,
0x0,
- 0x7,
0x1,
+ 0x0,
0x1,
- 0x9,
- 0x7,
- 0x13,
+ 0x0,
+ 0x8,
0x0,
0x4,
0x7,
+ 0xa,
0x1,
0x0,
0x0,
0x2,
0x1,
- 0x3,
- 0x0,
0x1,
0x1,
+ 0x0,
+ 0x1,
0x2,
0x0,
0x2,
0x1,
- 0x0,
- 0x5,
+ 0x4,
+ 0x4,
0x0,
0x0,
0x0,
- 0x2,
+ 0x6,
0x0,
- 0x2,
+ 0x3,
+ 0x3,
0x0,
0x0,
0x0,
0x0,
0x0,
- 0x5,
- 0x3,
+ 0x2,
+ 0x1,
0x1,
0x2,
0x2,
0x0,
- 0x1,
0x4,
+ 0x2,
0x1,
0x0,
0x0,
- 0x7,
0x1,
- 0x1,
- 0x3,
- 0x0,
- 0x5,
0x0,
0x1,
+ 0x1,
+ 0x0,
0x2,
0x2,
0x2,
0x2,
0x0,
0x1,
+ 0x5,
+ 0x4,
+ 0x1,
+ 0x0,
+ 0x1,
+ 0x1,
0x0,
- 0x3,
- 0x2,
- 0x2,
0x0,
0x1,
+ 0x4,
0x1,
0x2,
- 0x2,
0x1,
0x1,
0x0,
@@ -660,93 +667,94 @@ pub(crate) const CANONICAL_COMBINING_CLASS_SALT: &[u16] = &[
0x0,
0x0,
0x1,
- 0x4,
- 0x3,
0x0,
- 0x0,
- 0x7,
0x1,
- 0x7,
0x0,
- 0x1,
- 0x7,
- 0x2,
- 0x1,
- 0x3,
- 0x2,
0x0,
0x4,
+ 0x1,
0x2,
- 0x3,
+ 0x0,
0x1,
+ 0xd,
+ 0x4,
0x0,
0x1,
+ 0x4,
+ 0x0,
+ 0x5,
+ 0x3,
+ 0x7,
+ 0x3,
+ 0x3,
+ 0x3,
0x2,
0x0,
- 0x4,
+ 0x2,
+ 0x2,
0x2,
0x1,
0x0,
0x1,
- 0x0,
0x3,
0x4,
- 0x3,
+ 0x1,
0x0,
+ 0x1,
0x4,
- 0x0,
0x1,
0x0,
0x0,
- 0xa,
- 0x4,
- 0x2,
- 0x1,
0x0,
+ 0x1,
+ 0x3,
+ 0x1,
0x0,
- 0x5,
0x0,
- 0x2,
- 0x2,
0x1,
+ 0x4,
+ 0x1,
+ 0x8,
0x2,
0x4,
0x1,
- 0x0,
0x1,
- 0x7,
- 0x3,
- 0x7,
+ 0x1,
0x5,
0x1,
+ 0x4,
+ 0x1,
+ 0x1,
+ 0x2,
+ 0x6,
0x0,
0x0,
0x0,
0x0,
+ 0x2,
0x0,
- 0x3,
+ 0x2,
0x0,
- 0x3,
- 0x3,
- 0x5,
- 0x5,
0x6,
- 0x0,
+ 0x3,
0x1,
+ 0x3,
+ 0x2,
+ 0x3,
0x5,
0x4,
- 0x2,
+ 0x1,
0x0,
- 0x3,
+ 0x5,
0x0,
0x0,
0x1,
0x3,
0x0,
- 0x3,
+ 0x2,
0x0,
0x1,
- 0x5,
+ 0x1,
0x0,
0x0,
0x0,
@@ -754,124 +762,126 @@ pub(crate) const CANONICAL_COMBINING_CLASS_SALT: &[u16] = &[
0x0,
0x0,
0x0,
- 0xb,
- 0x3,
- 0x2,
+ 0x5,
+ 0x5,
+ 0x8,
0x0,
0x0,
0x0,
0x0,
- 0x5,
+ 0x6,
+ 0x0,
0x0,
0x0,
0x0,
0x2,
0x2,
- 0x2,
- 0x8,
+ 0x5,
0x1,
- 0x4,
0x0,
- 0x5,
+ 0x1,
+ 0x1,
0x0,
0x2,
0x2,
- 0x2,
- 0xb,
- 0x6,
+ 0x7,
+ 0x1,
+ 0x1,
0x2,
0x0,
- 0x3,
+ 0x2,
0x2,
0x1,
0x0,
0x0,
0x1,
- 0x1,
- 0x1,
0x0,
0x2,
- 0x5,
0x2,
0x2,
+ 0x4,
0x1,
+ 0x4,
0x0,
- 0x5,
- 0x3,
- 0x5,
- 0x0,
- 0x1,
0x2,
- 0x5,
- 0x1,
+ 0x2,
+ 0x4,
0x4,
+ 0x0,
0x8,
- 0x3,
+ 0x4,
+ 0x6,
+ 0x2,
+ 0x1,
0x1,
- 0x0,
0x0,
0x1,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x3,
+ 0x6,
0x1,
+ 0x0,
+ 0x3,
0x2,
0x1,
- 0x6,
- 0x1,
0x0,
+ 0x5,
0x4,
- 0x1,
+ 0x0,
+ 0x0,
+ 0x5,
0x2,
0x0,
0x0,
0x2,
- 0x3,
0x0,
0x0,
0x4,
- 0x1,
- 0x0,
- 0x1,
- 0x1,
+ 0x3,
0x0,
+ 0x9,
+ 0x5,
0x2,
- 0x3,
- 0x1,
0x0,
0x0,
0x2,
0x0,
- 0x2,
0x1,
+ 0x7,
+ 0x0,
0x3,
0x1,
- 0x1,
- 0x1,
+ 0x2,
0x1,
0x0,
0x0,
- 0x5,
- 0x4,
+ 0x2,
+ 0x3,
0x0,
0x2,
- 0x1,
0x3,
+ 0x1,
0x2,
0x1,
0x2,
0x0,
+ 0x4,
0x2,
- 0x2,
- 0x1,
0x1,
0x1,
0x1,
0x2,
- 0xc,
0x2,
0x0,
+ 0x4,
0x2,
+ 0x1,
0x0,
0x0,
- 0x2,
+ 0x3,
+ 0x0,
0x0,
0x0,
0x0,
@@ -884,965 +894,975 @@ pub(crate) const CANONICAL_COMBINING_CLASS_SALT: &[u16] = &[
0x0,
0x0,
0x1,
- 0x2,
- 0x2,
0x0,
- 0x3,
- 0x2,
0x2,
+ 0x0,
0x1,
+ 0x0,
+ 0x2,
0x1,
0x1,
- 0x4,
0x0,
- 0x3,
+ 0x2,
+ 0x0,
+ 0x1,
0x0,
0x0,
- 0x2,
0x1,
0x1,
- 0x7,
- 0x2,
- 0x4,
0x0,
+ 0x1,
+ 0x0,
+ 0x2,
0x0,
- 0x4,
0x3,
- 0x6,
- 0x1,
0x0,
0x1,
- 0x2,
0x1,
0x0,
+ 0x0,
0x1,
- 0x3,
0x2,
- 0x0,
0x1,
+ 0x2,
+ 0x3,
+ 0x5,
+ 0x3,
0x1,
+ 0x0,
0x1,
- 0x9,
+ 0x3,
+ 0x7,
0x0,
0x0,
0x2,
0x0,
0x2,
+ 0x3,
0x1,
- 0x4,
];
pub(crate) const CANONICAL_COMBINING_CLASS_KV: &[u32] = &[
0x34AE6,
- 0x348DC,
- 0xA67AE6,
- 0x746DC,
- 0x65222,
+ 0x2DFAE6,
+ 0x1DFADA,
+ 0x339DC,
+ 0x1DFCE9,
0xA4D09,
- 0x20D201,
+ 0x20D0E6,
0x593E6,
0x102E0DC,
- 0x1E2EDE6,
- 0x302DDE,
+ 0x1CF4E6,
+ 0x5A2DC,
0xFE26E6,
- 0x898E6,
- 0x329DC,
+ 0x11D4509,
+ 0x5C219,
+ 0x6EADC,
0xA675E6,
0x10F4EDC,
- 0x2DF7E6,
0xA8EBE6,
- 0x310E6,
- 0x64F1F,
+ 0x332DC,
+ 0xC4D09,
0x741E6,
- 0xF8082,
- 0x1AC8E6,
- 0x322CA,
- 0x1144607,
- 0x1E023E6,
- 0x5C5DC,
+ 0x1D171D8,
+ 0xFE2DDC,
+ 0x1DF2E6,
+ 0x1DDEE6,
+ 0xA8E1E6,
+ 0x5BB14,
0x1DD5E6,
0x8CEE6,
+ 0x1A7BE6,
0xF7484,
- 0x1B6DE6,
- 0x59ADE,
+ 0xA8E6E6,
0x6191F,
- 0x82CE6,
- 0x305E6,
+ 0x114C307,
+ 0x1A79E6,
0x65DE6,
- 0x5B812,
- 0x8F6DC,
- 0x1DEEE6,
+ 0x8F11C,
+ 0x1E020E6,
+ 0xA8F1E6,
+ 0x1DFDDC,
0xFE25E6,
0x1E947E6,
- 0x486E6,
0x1A75E6,
+ 0xEBA09,
0x1E02AE6,
- 0x1D182DC,
- 0x1DE6E6,
- 0x108DDC,
+ 0x64B1B,
+ 0x6D9E6,
+ 0x116B609,
0x1DECE6,
- 0x1E015E6,
- 0x8D6E6,
+ 0xE3A09,
+ 0x954E6,
0x2DE9E6,
0x1AB3E6,
- 0x1AB0E6,
+ 0x8F3E6,
0x8F7E6,
- 0x1136CE6,
- 0xE486B,
- 0x8E1E6,
+ 0xA8E2E6,
+ 0x1E00BE6,
+ 0xFE28DC,
0x20D801,
- 0x821E6,
- 0x8FFE6,
- 0x135DE6,
+ 0xAAB0E6,
+ 0x10F4DDC,
0x825E6,
- 0xFB1E1A,
- 0x1D16DE2,
- 0x8F21D,
- 0x2DF1E6,
- 0x8E3DC,
+ 0x611E6,
+ 0xAABEE6,
+ 0x820E6,
+ 0x8E8E6,
+ 0x306E6,
0x2DE4E6,
- 0x1A18DC,
+ 0x11F4109,
0x111CA07,
+ 0x2CF0E6,
0x1CD7DC,
0x10A3ADC,
- 0x1DC4E6,
0x1E131E6,
- 0x6E4E6,
+ 0x103A09,
+ 0x73BDC,
0x358E8,
0x487E6,
0x1AB1E6,
- 0x35DEA,
- 0xFE20E6,
+ 0x11370E6,
+ 0x1CD0E6,
0xA8EEE6,
- 0x597E6,
+ 0x33CDC,
0x20D5E6,
0x819E6,
- 0x2DE5E6,
+ 0x16B30E6,
0x16AF301,
- 0x1DD0CA,
0x9BC07,
+ 0x1DE9E6,
0x1DDAE6,
- 0x1DF8E4,
+ 0x1136BE6,
0x82BE6,
- 0x1CE201,
- 0x327CA,
- 0x1A17E6,
- 0xECB7A,
- 0xA67DE6,
- 0x10F48E6,
- 0x103707,
+ 0x173409,
+ 0x1DDBE6,
+ 0x5B40E,
+ 0x1D16DE2,
+ 0x1D16901,
+ 0x34CE6,
+ 0x2DF0E6,
0x33701,
- 0x309E6,
- 0x32DDC,
- 0x1B6EE6,
- 0x34BE6,
- 0x10EABE6,
- 0x344E6,
+ 0x11373E6,
+ 0x112E907,
+ 0x1AC0DC,
+ 0x20EA01,
+ 0x33EE6,
+ 0xF7181,
0x1D16801,
0x346E6,
- 0x8DDE6,
- 0x367E6,
- 0x1E010E6,
- 0x302BE4,
- 0x5ADDE,
- 0x1CDAE6,
+ 0x1E8D6DC,
+ 0x1E8D0DC,
+ 0xFE2CDC,
+ 0x1CE0E6,
+ 0x8EAE6,
+ 0x20DBE6,
+ 0x16B31E6,
0x735E6,
- 0x5C712,
- 0x2DEEE6,
- 0x1DCED6,
- 0x598E6,
- 0x1193E09,
- 0x116B707,
+ 0x10EFDDC,
+ 0x1D17EDC,
+ 0x11A3409,
+ 0x81FE6,
+ 0x1E01CE6,
+ 0x1DDFE6,
0x20E8DC,
- 0x10F4CE6,
+ 0xABED09,
0x1DE1E6,
- 0x65BE6,
- 0x611E6,
- 0x1E008E6,
- 0x1DD9E6,
- 0x85BDC,
- 0x1A7FDC,
+ 0x316DC,
+ 0x1D182DC,
+ 0x20D7E6,
+ 0x64F1F,
+ 0x8F5E6,
0xD4D09,
- 0x2DF0E6,
- 0x8CCE6,
- 0x17D209,
- 0x596DC,
+ 0x1AC9E6,
+ 0x110B909,
+ 0x1ABCE6,
+ 0xA67AE6,
0x1D1AAE6,
- 0x5B40E,
- 0x1DE3E6,
- 0x743E6,
+ 0x1E4EEDC,
+ 0x1E130E6,
+ 0x59FE6,
+ 0x1939DE,
0x357E6,
- 0x324DC,
- 0x30BE6,
- 0x33EE6,
- 0x1CE301,
+ 0x119E009,
+ 0x16FF006,
+ 0x733E6,
+ 0xFE29DC,
0x1CF8E6,
- 0x1E003E6,
+ 0xF8409,
0x364E6,
0x317DC,
0x483E6,
- 0xEBA09,
0x36CE6,
- 0x18A9E4,
- 0x1CD9DC,
- 0x1E005E6,
+ 0x5B10B,
+ 0x1CD2E6,
+ 0x307E6,
+ 0x65121,
0x330DC,
0x319DC,
- 0x81CE6,
+ 0x656DC,
0x1DE4E6,
0x952DC,
- 0x115C007,
- 0x1E009E6,
- 0x10F49E6,
+ 0x345F0,
+ 0x2DF1E6,
+ 0x193BDC,
0x659E6,
- 0x1CDFDC,
- 0x1CDBE6,
- 0xEB876,
- 0x6D7E6,
- 0x360EA,
+ 0x5ABE6,
+ 0x1B73E6,
+ 0x2CF1E6,
+ 0xABC07,
+ 0xF7C82,
0x1136AE6,
0xA8E4E6,
0x8FBE6,
- 0xA67CE6,
0x5B20C,
- 0x333DC,
- 0x1DCADC,
- 0x1E949E6,
- 0x11371E6,
- 0x5BF17,
- 0x135FE6,
+ 0xFE21E6,
+ 0x2DFBE6,
+ 0x31AE8,
+ 0x738DC,
+ 0x20D301,
+ 0xFE2ADC,
+ 0x11369E6,
0xF7282,
- 0x1DFBE6,
+ 0x1AC2E6,
0x1D17BDC,
0xF86E6,
- 0x10F4AE6,
+ 0x327CA,
0x1DC0E6,
- 0xD3C09,
+ 0x10F48E6,
0x1104609,
- 0x5B00A,
+ 0x1B6BE6,
0x8E6DC,
0x1E134E6,
0x341E6,
0x1DF6E8,
- 0xA674E6,
+ 0xA8ECE6,
0x1D1ABE6,
0x6ECE6,
- 0x1D16FD8,
+ 0x1E2AEE6,
0x5B50F,
+ 0x1AC7E6,
0x1E002E6,
- 0x1D165D8,
- 0xF7C82,
- 0x67023,
- 0x5AADC,
- 0x1DD3E6,
- 0x10F47DC,
- 0x2DE6E6,
+ 0xFC6DC,
+ 0x1E136E6,
+ 0x8DFE6,
+ 0x64C1C,
+ 0x658E6,
+ 0x6E1E6,
0x2DE7E6,
- 0x20D6E6,
- 0x1D244E6,
- 0x1DC6E6,
- 0x20E601,
- 0x1E00AE6,
- 0x135EE6,
+ 0x8CFDC,
+ 0x302E6,
+ 0x1AC4DC,
+ 0xAABFE6,
+ 0x5B913,
+ 0x1D18BDC,
0x1172B09,
- 0xAAC1E6,
+ 0x2DF3E6,
0x739DC,
- 0x10AE5E6,
+ 0x2DE0E6,
+ 0x1CDCDC,
0x1107009,
- 0x308E6,
+ 0xA92CDC,
0x823E6,
- 0x2CF0E6,
0x1DF3E6,
+ 0xA67DE6,
0x10F46DC,
- 0x1DEBE6,
+ 0x1DCCE6,
0x6DCE6,
- 0x1D166D8,
0x11A4709,
- 0x614E6,
+ 0xEB976,
+ 0x36BE6,
0x65EE6,
0x1CF9E6,
- 0x81DE6,
- 0x6D9E6,
- 0x951E6,
- 0x2DE8E6,
+ 0x8D6E6,
+ 0x8E0E6,
+ 0x1B6EE6,
0x8D8E6,
- 0x1193D09,
- 0x328CA,
+ 0x1E026E6,
+ 0x343E6,
0x20D901,
- 0x32FDC,
- 0xA92CDC,
+ 0x1E948E6,
+ 0x5B610,
+ 0x1E011E6,
0x1DE8E6,
- 0x1E00BE6,
- 0x8F3E6,
- 0x8EEDC,
- 0xFE22E6,
- 0x8D9E6,
- 0x1D189E6,
- 0xFE28DC,
- 0xF83E6,
- 0x2DF4E6,
- 0x20F0E6,
+ 0x1DF7E4,
+ 0x2DFCE6,
+ 0x11D9709,
+ 0x486E6,
+ 0x1DC1E6,
+ 0x591DC,
+ 0x11D4409,
+ 0xA8C409,
+ 0x1BAA09,
+ 0x10EFFDC,
0x6EDDC,
- 0xFE29DC,
- 0x31EDC,
- 0x1DFCE9,
+ 0x356DC,
+ 0x1DEEE6,
+ 0x2DEDE6,
0x64D1D,
- 0x1DDDE6,
- 0x33BDC,
- 0x1D171D8,
- 0x111C009,
+ 0x17D209,
+ 0xD3C09,
+ 0x1E945E6,
+ 0x114C209,
0x303E6,
- 0xA8E0E6,
- 0xACD09,
- 0x5ACE6,
+ 0xA6F0E6,
+ 0x302FE0,
+ 0x1E01BE6,
0x11368E6,
- 0x10D24E6,
- 0x1DDEE6,
- 0x31CDC,
- 0x354DC,
- 0xF8409,
- 0x1E01EE6,
+ 0x1163F09,
+ 0x1CE301,
+ 0x5A3DC,
+ 0x8EFDC,
+ 0x596DC,
+ 0x1E028E6,
0x10F4FDC,
- 0x1E014E6,
- 0x5C219,
+ 0xA82C09,
+ 0x1D172D8,
0x2CEFE6,
- 0x326DC,
- 0x2DF8E6,
+ 0x10F49E6,
+ 0xA8EAE6,
0x32CDC,
0xD3B09,
0x1E00FE6,
- 0x1E8D2DC,
- 0x5A7DC,
+ 0x8EDDC,
+ 0x171409,
0x1ABBE6,
- 0x8DAE6,
+ 0x1E8D3DC,
0xB3C07,
- 0x1E013E6,
+ 0x59DE6,
0x10AE6DC,
- 0x1E8D5DC,
- 0x745E6,
+ 0x1DFBE6,
+ 0x16FF106,
0x82AE6,
- 0xFE23E6,
- 0x592E6,
- 0x1E8D3DC,
- 0x1AC5E6,
- 0x8D7E6,
- 0x5BC15,
- 0x33501,
- 0x1E027E6,
- 0x5B30D,
- 0xA80609,
- 0x1CD0E6,
- 0x363E6,
+ 0x20EEDC,
+ 0x1CDFDC,
+ 0x1CDDDC,
+ 0x8D2DC,
+ 0x135FE6,
+ 0xF7A82,
+ 0x610E6,
+ 0x1144209,
+ 0x2DEEE6,
+ 0x1145EE6,
+ 0x73DE6,
+ 0x35DEA,
0xFE2FE6,
+ 0xCBC07,
0x1DC7E6,
- 0xAAB2E6,
- 0x59EE6,
- 0x32ADC,
+ 0x6E7E6,
+ 0x321CA,
+ 0x5A6DC,
0xA8F0E6,
- 0x31AE8,
- 0x10A0FE6,
- 0x1123509,
- 0x1D18ADC,
+ 0x5BA13,
+ 0x2DECE6,
+ 0x8EEDC,
0x16AF201,
- 0x1DFDDC,
- 0x10376E6,
- 0x353DC,
+ 0x5C712,
+ 0x612E6,
+ 0x59CE6,
+ 0x11D4207,
0x1ABADC,
- 0x20EA01,
0x1AB4E6,
- 0x16FF106,
+ 0x1E8D2DC,
+ 0x85BDC,
0x1B72E6,
- 0x740E6,
- 0x1CDCDC,
- 0x1E130E6,
- 0x302FE0,
- 0x1E2ECE6,
+ 0x1E000E6,
+ 0x5B00A,
+ 0x5C5DC,
+ 0x10F47DC,
+ 0x1A78E6,
0x1113409,
- 0x1E006E6,
- 0x35ADC,
- 0x8CFDC,
- 0x1DCCE6,
+ 0x1144607,
+ 0x10D26E6,
+ 0x20DCE6,
+ 0x350E6,
0xF7D82,
- 0x8EAE6,
- 0x173409,
- 0x323DC,
- 0x1CDEDC,
- 0x89DE6,
+ 0x31FDC,
+ 0x103909,
+ 0x8D3DC,
+ 0x1BE607,
+ 0x731DC,
0x312E6,
- 0x34CE6,
0x829E6,
- 0x1DCFDC,
- 0x899DC,
- 0x10A3901,
- 0x114C307,
- 0x5B913,
+ 0x8FADC,
+ 0x7EBE6,
+ 0x1DDDE6,
+ 0x1D165D8,
+ 0x20E9E6,
+ 0x1E01EE6,
0x1E135E6,
0x1DEDE6,
- 0x1E001E6,
- 0x1A7CE6,
- 0xA8EDE6,
- 0x748DC,
- 0x8D3DC,
- 0x1E028E6,
- 0x8D1DC,
+ 0xC565B,
+ 0x1E012E6,
+ 0x2DE3E6,
+ 0xF7B82,
+ 0x1CDEDC,
+ 0x36DE6,
+ 0x8F4E6,
0x1E8D4DC,
0x73CDC,
- 0x1E8D6DC,
- 0xAAB7E6,
- 0x20EFDC,
+ 0x11374E6,
+ 0x5ACE6,
+ 0x1AC8E6,
0x2DEBE6,
- 0xA8E8E6,
- 0x1E01CE6,
- 0x1D1ACE6,
- 0xA8EFE6,
- 0x8E5E6,
+ 0xA92BDC,
+ 0x1117307,
+ 0x111C009,
+ 0x33601,
+ 0xF8082,
0x20D4E6,
- 0xA6F0E6,
- 0x16B32E6,
+ 0x59BDC,
+ 0x1E001E6,
0x827E6,
- 0xA3C07,
+ 0x33401,
0x31BD8,
- 0x34EDC,
- 0xFE2DDC,
- 0xDCA09,
+ 0x20D201,
+ 0x1E003E6,
+ 0x1DF0E6,
0x31DDC,
- 0x345F0,
- 0x171409,
- 0x1DFFDC,
- 0x1DC3E6,
- 0x302ADA,
- 0x1E026E6,
- 0x302CE8,
- 0x1E2AEE6,
- 0xFE21E6,
- 0x73AE6,
+ 0x2DF4E6,
+ 0x11372E6,
+ 0x314E6,
+ 0x18A9E4,
+ 0x1136CE6,
+ 0x2DE5E6,
+ 0x1113309,
+ 0x135DE6,
+ 0x1A77E6,
+ 0xE3967,
0x10D27E6,
0xCCD09,
- 0x1037AE6,
- 0x1B6CDC,
- 0xECA7A,
- 0x1D185E6,
- 0x65CDC,
- 0xE3867,
- 0x2CF1E6,
+ 0x32DDC,
+ 0x592E6,
+ 0x2DEFE6,
+ 0x8CAE6,
+ 0x2DE1E6,
+ 0x657E6,
+ 0x32BDC,
0x10EACE6,
- 0x20D301,
- 0x17DDE6,
+ 0x309E6,
+ 0x730E6,
0x65FDC,
- 0x11D4409,
- 0xF7B82,
- 0x8E0E6,
- 0x71124,
- 0x1CE401,
- 0x64E1E,
+ 0x1E014E6,
+ 0x8DEE6,
+ 0x2DFEE6,
+ 0x16B33E6,
+ 0x8CDE6,
+ 0x329DC,
+ 0x8F21D,
0x93C07,
- 0x89EE6,
- 0x1DD1E6,
+ 0x747E6,
+ 0x859DC,
0x736E6,
0x10A38E6,
- 0x20E9E6,
+ 0x81DE6,
0x1CD5DC,
- 0x10F4DDC,
- 0x1AC3DC,
- 0xFE2ADC,
- 0x306E6,
+ 0x743E6,
+ 0x746DC,
+ 0x899DC,
0x61A20,
+ 0x1CE201,
0x301E6,
- 0x738DC,
- 0x1D172D8,
+ 0x1E944E6,
+ 0x1D186E6,
0x6E0E6,
- 0x1DE0E6,
- 0x16B30E6,
+ 0x1194307,
0x355DC,
- 0x7EEE6,
- 0x11D4207,
- 0x7F1E6,
+ 0x6181E,
+ 0xA66FE6,
+ 0x8FFE6,
0x11100E6,
- 0x30CE6,
+ 0x33DE6,
0x1DC2DC,
+ 0x615E6,
0x342E6,
- 0x1CEDDC,
- 0x352E6,
- 0xE4B6B,
- 0xAAB0E6,
+ 0x1A17E6,
+ 0x11367E6,
+ 0x10EABE6,
+ 0x6EBE6,
0x1E01FE6,
- 0x5A4DC,
+ 0xE4A6B,
0x325DC,
- 0x1DE5E6,
- 0xA8F1E6,
- 0x1D17FDC,
- 0x1DF5E6,
- 0x11372E6,
- 0x484E6,
- 0x318DC,
- 0x1D16901,
- 0x1E8D0DC,
- 0xF35DC,
+ 0x349DC,
+ 0xFE23E6,
+ 0x10376E6,
+ 0x2DFFE6,
+ 0x1D16FD8,
+ 0x30FE6,
+ 0x1BAB09,
+ 0x2DE2E6,
+ 0x740E6,
+ 0x1193E09,
0xF39D8,
- 0x1E00CE6,
- 0xA8E1E6,
+ 0x20EFDC,
+ 0x2DE6E6,
0x1D187E6,
- 0x1AC0DC,
- 0x817E6,
+ 0x1DD2E6,
+ 0x10F4AE6,
0x6D8E6,
0x1B3407,
0x2DEAE6,
- 0x103A09,
- 0x1CD401,
+ 0xA679E6,
+ 0x10F84E6,
0xF87E6,
0x35FE9,
0x300E6,
- 0xA6F1E6,
+ 0x7EEE6,
0x2DF2E6,
- 0x103909,
- 0x615E6,
- 0x2DFFE6,
- 0x749E6,
- 0x309908,
- 0x81FE6,
+ 0x11F4209,
+ 0x73AE6,
+ 0x31EDC,
+ 0x1E00DE6,
+ 0x1DCED6,
+ 0x1AB7DC,
0x1D16ED8,
- 0x1E017E6,
- 0x1CD8DC,
+ 0x352E6,
+ 0x8F6DC,
0xA677E6,
- 0xEC97A,
- 0x1D186E6,
- 0x307E6,
- 0x20D7E6,
+ 0x1A7CE6,
+ 0x8E7E6,
+ 0x16B32E6,
+ 0x1DD9E6,
0x1DF9DC,
0x8E9DC,
- 0x2DF9E6,
- 0x5B610,
- 0x11A3409,
+ 0x11366E6,
+ 0x1AC6E6,
+ 0x1CE701,
0x1CD1E6,
- 0x10378E6,
- 0x656DC,
- 0x818E6,
- 0x33401,
- 0x1ABDDC,
- 0x16FF006,
+ 0x35EEA,
+ 0x16AF401,
+ 0x1AB0E6,
+ 0x34BE6,
+ 0x33BDC,
+ 0x67023,
0x366E6,
- 0x1ACCE6,
- 0x89ADC,
- 0x65020,
- 0x20E501,
- 0xAAF609,
+ 0x10D25E6,
+ 0x9FEE6,
+ 0xAAB4DC,
+ 0xBCD09,
+ 0x1DC9E6,
0x5BD16,
0x8D0DC,
- 0x1CDDDC,
- 0x7F3E6,
+ 0x816E6,
+ 0x101FDDC,
+ 0xA3C07,
0x1D17CDC,
- 0xA678E6,
+ 0x732E6,
0x826E6,
- 0xA679E6,
- 0x35CE9,
+ 0x1133B07,
+ 0x1CD9DC,
0x81EE6,
0x10F83DC,
- 0xF7181,
- 0x820E6,
- 0x1B73E6,
- 0x2DE1E6,
+ 0x313E6,
+ 0x1DFFDC,
+ 0x1D17FDC,
0x1D16701,
0x1A6009,
- 0xABC07,
+ 0x1E949E6,
+ 0x10A0DDC,
0x1183909,
- 0x1B6FE6,
- 0x321CA,
+ 0xF19DC,
0x1DE7E6,
- 0x742DC,
+ 0xB4D09,
0x89CE6,
- 0x1E018E6,
- 0x65AE6,
+ 0x2DFDE6,
+ 0x367E6,
0xA9C009,
0xA67BE6,
+ 0x333DC,
0x5A1E6,
- 0x20E7E6,
- 0x11366E6,
+ 0x8EBE6,
+ 0x1E009E6,
0x1DEFE6,
- 0x1DF4E6,
- 0x1E946E6,
+ 0x324DC,
+ 0xFE2BDC,
0xFE27DC,
- 0x8DEE6,
- 0x193AE6,
- 0x114C209,
+ 0x10D24E6,
+ 0x81BE6,
+ 0x1E008E6,
0x1E01DE6,
0xA95309,
- 0x59FE6,
+ 0x6DBE6,
0xC5554,
0x2D7F09,
- 0x1B6BE6,
- 0x610E6,
- 0x8F8E6,
+ 0x1CDAE6,
+ 0x5BC15,
+ 0x59ADE,
0xA676E6,
- 0x1D188E6,
- 0x1BAA09,
- 0xAABFE6,
+ 0x2DF8E6,
+ 0x20D6E6,
+ 0x5B30D,
0x1D181DC,
0x1ACADC,
- 0xCBC07,
- 0x115BF09,
+ 0x953E6,
+ 0x328CA,
0x5A0E6,
- 0x30FE6,
- 0x6E3DC,
- 0x82DE6,
- 0x658E6,
- 0x8FADC,
+ 0x595E6,
+ 0x8D5E6,
+ 0x308E6,
+ 0xA674E6,
+ 0x30CE6,
0x1A76E6,
- 0x1B4409,
- 0x32BDC,
- 0x313E6,
- 0x11D9709,
- 0x1AB8DC,
- 0x1E012E6,
- 0x1DC8E6,
- 0xF18DC,
- 0x613E6,
- 0x30EE6,
- 0x744DC,
- 0x8DBE6,
+ 0x1DC6E6,
+ 0x6E2E6,
+ 0x10F4CE6,
+ 0x20F0E6,
+ 0x8CBE6,
+ 0x10A0FE6,
+ 0x135EE6,
+ 0x1B6FE6,
+ 0x1AB2E6,
+ 0x1DF8E4,
+ 0x5AADC,
+ 0x10AE5E6,
0x89FE6,
- 0x1DDFE6,
- 0xE496B,
+ 0x1E00CE6,
+ 0x20E501,
0x8FCE6,
- 0x654E6,
+ 0x65020,
0x8ECE6,
- 0x8CAE6,
- 0x1CF4E6,
+ 0x898E6,
+ 0x1E2EDE6,
0x1DD7E6,
- 0x30AE6,
- 0x591DC,
- 0x730E6,
+ 0xE3867,
+ 0x89DE6,
+ 0x1B71E6,
0x85ADC,
- 0x6E8E6,
- 0x59BDC,
- 0x350E6,
- 0x171509,
- 0x16B34E6,
+ 0x1DC5E6,
+ 0x1D189E6,
+ 0xA69FE6,
+ 0x348DC,
+ 0x8DBE6,
+ 0x1DC4E6,
0x320DC,
- 0x10F85DC,
- 0x2DEDE6,
- 0x1DF2E6,
- 0x5BB14,
- 0xF82E6,
- 0x193BDC,
- 0xE3A09,
- 0x9FEE6,
- 0x1113309,
- 0xFE2EE6,
- 0xF37DC,
- 0x1DC1E6,
- 0xC4D09,
+ 0xA8E3E6,
+ 0x1E946E6,
+ 0x1D170D8,
+ 0xAAF609,
+ 0x1ACCE6,
+ 0x360EA,
+ 0x1ABFDC,
+ 0x1AC1E6,
+ 0x302CE8,
+ 0x2DF7E6,
+ 0xEB876,
+ 0x1E132E6,
0x1DFEE6,
- 0x1117307,
+ 0x33FE6,
0x20EB01,
- 0x8EFDC,
+ 0x82DE6,
0x347DC,
0x1123607,
- 0x1CE601,
- 0x316DC,
- 0x6EADC,
- 0x1E945E6,
- 0x16B36E6,
- 0xA8EAE6,
- 0x332DC,
+ 0xA6F1E6,
+ 0x749E6,
+ 0x17DDE6,
+ 0x7F1E6,
+ 0x617E6,
+ 0x1ACDE6,
+ 0x1DE6E6,
0x8E4E6,
0x351E6,
- 0x10D25E6,
- 0x2DFEE6,
- 0x6E2E6,
+ 0x89EE6,
+ 0x613E6,
+ 0x1DCDEA,
0x655DC,
- 0x2DEFE6,
- 0x1DC9E6,
+ 0x20E1E6,
+ 0x65CDC,
+ 0x1ABDDC,
0x1AB9DC,
- 0x11A9909,
- 0xF7A82,
- 0x20D1E6,
- 0x1DF7E4,
- 0xBCD09,
- 0x5B10B,
+ 0xA678E6,
+ 0x10A3F09,
+ 0x32ADC,
+ 0xA8EDE6,
+ 0x302ADA,
+ 0x20DA01,
0x30DE6,
- 0xA8C409,
- 0xA8E9E6,
- 0x953E6,
+ 0x302BE4,
+ 0x8D7E6,
+ 0x8F01B,
0x8DCE6,
0x5B711,
- 0x8F5E6,
+ 0xA80609,
0x1D1ADE6,
- 0x1E020E6,
- 0x112E907,
- 0x59CE6,
+ 0x6E4E6,
+ 0x1DE0E6,
+ 0x5ADDE,
0x1DF1E6,
- 0xAAB4DC,
- 0x595E6,
- 0x8D2DC,
+ 0x11102E6,
+ 0x1E8D5DC,
+ 0x30EE6,
0x7EFE6,
- 0x359DC,
- 0x816E6,
- 0x731DC,
- 0x8D5E6,
- 0x1E016E6,
- 0x6DBE6,
- 0x1DEAE6,
- 0xE4A6B,
+ 0x7F0E6,
+ 0x597E6,
+ 0x1E027E6,
+ 0x1E2ECE6,
+ 0x31CDC,
+ 0x315E8,
+ 0xAAB7E6,
+ 0x616E6,
0x2DF6E6,
- 0x20EEDC,
+ 0x5BF17,
+ 0x10A3901,
0x653E6,
- 0x6E7E6,
- 0x11101E6,
- 0x5BA13,
+ 0x1D166D8,
+ 0x1AC5E6,
0x361EA,
- 0x5AEE4,
- 0x1939DE,
- 0xA92BDC,
- 0x340E6,
- 0x612E6,
- 0x10F84E6,
- 0x73BDC,
+ 0x8F8E6,
+ 0x1AC3DC,
+ 0x103707,
+ 0x1123509,
+ 0x36EE6,
+ 0x1E004E6,
+ 0x1E023E6,
0x368E6,
0x1DD6E6,
- 0x1BF309,
- 0x302EE0,
+ 0x344E6,
+ 0x742DC,
0x485E6,
0x110BA07,
- 0x2DFDE6,
+ 0x1CD8DC,
+ 0x1CD401,
0x8FEE6,
- 0x331DC,
- 0xC3C07,
+ 0x2DF5E6,
0x1E00EE6,
- 0x1A7AE6,
- 0x16B33E6,
- 0x81BE6,
- 0x1E01BE6,
- 0x5A9E6,
- 0x5C118,
- 0x89BDC,
+ 0xECB7A,
+ 0x94D09,
+ 0x1DEBE6,
+ 0x1133C07,
+ 0x1E4EFE6,
+ 0x359DC,
+ 0x1E010E6,
0x304E6,
- 0x20E1E6,
+ 0x5A8E6,
+ 0x1CD6DC,
0xAAB3E6,
- 0x8E7E6,
0x1B70E6,
+ 0x6E8E6,
0xA92DDC,
- 0x1163F09,
- 0x8D4E6,
- 0x1AC6E6,
- 0xFC6DC,
+ 0x8D9E6,
+ 0x16B34E6,
+ 0xF18DC,
+ 0x30AE6,
0x20EDDC,
- 0xC565B,
+ 0x1E4ECE8,
0x1E2EFE6,
0x1D242E6,
- 0x1E132E6,
- 0x1AC7E6,
+ 0x354DC,
+ 0x16AF101,
0x35BE6,
- 0x1CE0E6,
+ 0x1DE3E6,
0x73EDC,
- 0x64C1C,
- 0x1DC5E6,
- 0x339DC,
- 0x11367E6,
- 0x1133B07,
- 0x1AC4DC,
+ 0x1E005E6,
+ 0x115BF09,
+ 0x1DC8E6,
+ 0x484E6,
+ 0x81CE6,
0x1E133E6,
- 0xFE2BDC,
- 0x737DC,
- 0x1E000E6,
+ 0x5B812,
+ 0x340E6,
+ 0x598E6,
+ 0x1BC9E01,
0x1DDCE6,
- 0x2DF5E6,
- 0x35EEA,
+ 0x115C007,
+ 0x8E3DC,
0x11C3F09,
- 0x16AF401,
- 0x116B609,
- 0x2DFBE6,
- 0x8CBE6,
- 0x64B1B,
+ 0x10F85DC,
+ 0x35CE9,
+ 0x1CDBE6,
+ 0x1D1ACE6,
+ 0x1E8D1DC,
0x1AB5DC,
- 0x1DDBE6,
- 0x1DD2E6,
+ 0xDCA09,
+ 0x322CA,
0x10F4BDC,
- 0x314E6,
- 0x1ABCE6,
+ 0x1DC3E6,
+ 0x35ADC,
0x7ECE6,
0x112EA09,
- 0x11102E6,
- 0x1A7BE6,
+ 0xE4B6B,
+ 0x7FDDC,
0x32EDC,
- 0x6DFE6,
- 0x954E6,
- 0x617E6,
- 0x1E2EEE6,
- 0x1E00DE6,
+ 0x65BE6,
+ 0xFE22E6,
+ 0x1DD3E6,
+ 0x89ADC,
+ 0xA8E8E6,
0x8F9DC,
0x36FE6,
- 0x311E6,
- 0x732E6,
+ 0x1B6DE6,
+ 0x8CCE6,
0x1134D09,
- 0x1AC2E6,
+ 0x193AE6,
0x309A08,
- 0x747E6,
+ 0xFE20E6,
0x1DE2E6,
- 0x11370E6,
- 0x110B909,
- 0x362E9,
- 0x1E944E6,
- 0x8F01B,
+ 0x1CEDDC,
+ 0x10EFEDC,
+ 0x1E013E6,
+ 0x8D4E6,
+ 0x34EDC,
0x16B35E6,
- 0x859DC,
+ 0x1037AE6,
0x1107F09,
- 0xA8E2E6,
- 0x1BAB09,
+ 0x8DDE6,
+ 0x1DD1E6,
0x33801,
- 0x8FDE6,
+ 0xA67CE6,
0x1ACEE6,
- 0x11D4509,
- 0x10A3F09,
- 0xA8E3E6,
- 0x8EDDC,
- 0x11369E6,
- 0x11373E6,
- 0xA66FE6,
- 0x20D0E6,
- 0x8EBE6,
- 0x1AB7DC,
- 0x31FDC,
- 0xEB976,
- 0x1145EE6,
- 0x1C3707,
- 0x74AE6,
+ 0x1E08FE6,
+ 0x1183A07,
+ 0x1D244E6,
+ 0x1E018E6,
+ 0xACD09,
+ 0x5A5DC,
+ 0x64E1E,
+ 0x1CE401,
+ 0xF37DC,
+ 0x745E6,
+ 0xC3C07,
+ 0x65222,
+ 0x305E6,
+ 0x33ADC,
+ 0x1DF5E6,
+ 0x1E017E6,
0x1CE801,
- 0x33CDC,
- 0x1CE701,
- 0x1DFADA,
- 0x16B31E6,
+ 0x1193D09,
+ 0x20D1E6,
+ 0x318DC,
0x822E6,
- 0x94D09,
- 0x2DE2E6,
- 0x6EBE6,
- 0x11374E6,
- 0x8F4E6,
- 0x10F82E6,
- 0x20DBE6,
- 0x733E6,
- 0x1DE9E6,
- 0x6D6E6,
- 0x2DF3E6,
- 0x2DE0E6,
+ 0x116B707,
+ 0x310E6,
+ 0x821E6,
+ 0x10378E6,
+ 0x5A4DC,
+ 0xF83E6,
+ 0xAAC1E6,
+ 0x1DD0CA,
+ 0x1D185E6,
+ 0x8D1DC,
+ 0x5AFE6,
+ 0x1DE5E6,
+ 0x309908,
0x365E6,
- 0x119E009,
- 0xABED09,
- 0x8DFE6,
- 0x5A2DC,
- 0x302E6,
+ 0x951E6,
+ 0x369E6,
+ 0x748DC,
+ 0xEC97A,
+ 0x817E6,
0x6DAE6,
- 0x5A8E6,
+ 0x1E4EDE8,
0x1CE501,
- 0xAAB8E6,
- 0x10A0DDC,
- 0x20DA01,
- 0x7FDDC,
- 0x8F11C,
- 0x1A79E6,
- 0x7F0E6,
- 0x36EE6,
- 0x1A77E6,
- 0x343E6,
+ 0x737DC,
+ 0x311E6,
+ 0x6E3DC,
+ 0x1BF309,
+ 0x89BDC,
+ 0x11101E6,
+ 0x5C118,
+ 0x2DE8E6,
+ 0x614E6,
+ 0xFE2EE6,
0x10379E6,
- 0x33601,
- 0x101FDDC,
- 0xA8ECE6,
- 0x6E1E6,
- 0x657E6,
+ 0x1DCFDC,
+ 0x82CE6,
+ 0x32FDC,
+ 0x1B4409,
+ 0x171509,
0x1ACBE6,
- 0x5AFE6,
- 0x2DFCE6,
- 0x1A78E6,
- 0x6181E,
+ 0x1B6CDC,
+ 0xECA7A,
+ 0x1E015E6,
+ 0x20E601,
0xFE24E6,
0x1D243E6,
0x1E021E6,
- 0x1ACDE6,
- 0x1CD2E6,
+ 0xE496B,
+ 0x71124,
+ 0x6DFE6,
0xA9B307,
- 0x356DC,
- 0x1D170D8,
- 0x5A3DC,
- 0xA8E6E6,
- 0x2DFAE6,
- 0xA82C09,
+ 0x65AE6,
+ 0x1A7FDC,
+ 0x8DAE6,
+ 0x8E1E6,
+ 0x11A9909,
0x1D180DC,
- 0x1AC1E6,
- 0x1ABFDC,
+ 0xA8EFE6,
+ 0x1DF4E6,
0x10377E6,
+ 0x362E9,
0x594E6,
- 0x73FE6,
- 0x1CD6DC,
+ 0x33501,
0x7F2DC,
- 0x5A5DC,
+ 0x1D18ADC,
0x1DCBE6,
- 0x1B71E6,
- 0xAABEE6,
+ 0x5A9E6,
+ 0x1CE601,
0x34DDC,
0xEC87A,
- 0x33FE6,
+ 0x6D7E6,
+ 0x108DDC,
0x5C4E6,
0x36AE6,
- 0xB4D09,
- 0x1183A07,
- 0xA69FE6,
- 0x1E8D1DC,
- 0x1DCDEA,
- 0x33DE6,
- 0x2DECE6,
+ 0x326DC,
+ 0x1E00AE6,
+ 0xA8E0E6,
+ 0x5A7DC,
+ 0x1DEAE6,
+ 0x6D6E6,
0xA8E7E6,
+ 0x30BE6,
0x16AF001,
- 0x315E8,
- 0x65121,
- 0x33ADC,
+ 0x1C3707,
+ 0x302EE0,
+ 0xE486B,
0x1DD8E6,
- 0xF19DC,
- 0x349DC,
- 0x1144209,
- 0x1DF0E6,
- 0x5A6DC,
- 0x369E6,
+ 0x1AB8DC,
+ 0x1A18DC,
+ 0x2DF9E6,
+ 0xFB1E1A,
+ 0x363E6,
+ 0x74AE6,
0x1E024E6,
0x599E6,
- 0x8E8E6,
- 0x1133C07,
- 0xE3967,
+ 0x59EE6,
+ 0x7F3E6,
0x1BF209,
- 0x1E004E6,
- 0x73DE6,
+ 0x818E6,
+ 0xA8E9E6,
+ 0x16B36E6,
0x10F50DC,
0x1DD4E6,
- 0x5ABE6,
- 0x1E011E6,
+ 0xAAB2E6,
0xA8E5E6,
- 0x1D18BDC,
- 0x36BE6,
- 0x16AF101,
- 0xFE2CDC,
- 0x1136BE6,
+ 0x744DC,
+ 0x10F82E6,
+ 0x302DDE,
+ 0x331DC,
+ 0x1D188E6,
0x7EDE6,
- 0x8CDE6,
- 0x1AC9E6,
- 0x10D26E6,
- 0x20DCE6,
- 0x616E6,
- 0x1194307,
- 0x1BC9E01,
+ 0x1E006E6,
+ 0xAAB8E6,
+ 0x353DC,
+ 0x1E016E6,
+ 0x1DCADC,
+ 0x73FE6,
+ 0xF35DC,
0xA69EE6,
- 0x1E136E6,
+ 0x323DC,
+ 0x8E5E6,
0x20ECDC,
- 0x59DE6,
- 0x1E948E6,
- 0x36DE6,
+ 0x1E2EEE6,
+ 0x5AEE4,
+ 0x11371E6,
0x1E029E6,
0x734DC,
0x1AB6DC,
- 0x7EBE6,
+ 0x20E7E6,
0x1D17DDC,
- 0x2DE3E6,
+ 0x8FDE6,
0x9CD09,
- 0x1D17EDC,
- 0x1BE607,
- 0x1AB2E6,
+ 0xF82E6,
+ 0x1A7AE6,
+ 0x654E6,
0x1E94A07,
];
@@ -16550,6 +16570,68 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_CHARS: &[char] = &[
'\u{0037}',
'\u{0038}',
'\u{0039}',
+ '\u{0430}',
+ '\u{0431}',
+ '\u{0432}',
+ '\u{0433}',
+ '\u{0434}',
+ '\u{0435}',
+ '\u{0436}',
+ '\u{0437}',
+ '\u{0438}',
+ '\u{043A}',
+ '\u{043B}',
+ '\u{043C}',
+ '\u{043E}',
+ '\u{043F}',
+ '\u{0440}',
+ '\u{0441}',
+ '\u{0442}',
+ '\u{0443}',
+ '\u{0444}',
+ '\u{0445}',
+ '\u{0446}',
+ '\u{0447}',
+ '\u{0448}',
+ '\u{044B}',
+ '\u{044D}',
+ '\u{044E}',
+ '\u{A689}',
+ '\u{04D9}',
+ '\u{0456}',
+ '\u{0458}',
+ '\u{04E9}',
+ '\u{04AF}',
+ '\u{04CF}',
+ '\u{0430}',
+ '\u{0431}',
+ '\u{0432}',
+ '\u{0433}',
+ '\u{0434}',
+ '\u{0435}',
+ '\u{0436}',
+ '\u{0437}',
+ '\u{0438}',
+ '\u{043A}',
+ '\u{043B}',
+ '\u{043E}',
+ '\u{043F}',
+ '\u{0441}',
+ '\u{0443}',
+ '\u{0444}',
+ '\u{0445}',
+ '\u{0446}',
+ '\u{0447}',
+ '\u{0448}',
+ '\u{044A}',
+ '\u{044B}',
+ '\u{0491}',
+ '\u{0456}',
+ '\u{0455}',
+ '\u{045F}',
+ '\u{04AB}',
+ '\u{A651}',
+ '\u{04B1}',
'\u{0627}',
'\u{0628}',
'\u{062C}',
@@ -16940,181 +17022,184 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_CHARS: &[char] = &[
pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x0,
- 0xf,
+ 0x3,
0x0,
0x0,
0x0,
- 0x4,
+ 0x1,
+ 0x16c,
+ 0xe,
+ 0x4ef,
+ 0x2,
0x0,
- 0x8,
- 0x6,
- 0x5,
0x0,
0x0,
- 0x490,
- 0x1db,
- 0x16,
- 0x6,
0x2,
- 0x7a8,
- 0x24b,
0x0,
- 0x42c,
+ 0x1,
+ 0x3,
+ 0x97,
+ 0x165,
0x0,
- 0x68,
- 0x7,
- 0x266,
0x0,
+ 0x185,
0x0,
+ 0x1,
0x0,
+ 0x3f4,
0x0,
0x0,
- 0xf,
- 0x194,
- 0x376,
- 0x6,
+ 0x0,
+ 0x0,
+ 0x4,
+ 0x91,
+ 0x0,
+ 0xdd,
+ 0x1,
+ 0x26c,
+ 0x0,
0xb,
0x0,
- 0xa3,
+ 0xe0,
+ 0xbc,
+ 0x3,
+ 0x213,
+ 0x1,
0x0,
- 0x170,
- 0xfe,
+ 0xc8,
0x3,
- 0x1b2,
- 0x1dc,
+ 0x1c,
+ 0xfc,
0x0,
- 0x93,
- 0x7,
- 0x1f,
- 0x130,
0x0,
+ 0x11,
+ 0x132,
0x0,
- 0xa,
- 0x35,
0x0,
+ 0x10b,
+ 0x90,
+ 0x474,
+ 0xd6,
0x0,
- 0x35,
- 0x12c,
- 0x1b,
- 0x3d,
0x0,
+ 0x3,
+ 0xd,
+ 0x5,
0x0,
- 0x1,
+ 0x6,
+ 0x19,
0x54,
- 0x58,
- 0x0,
- 0x4,
- 0x92,
- 0x10,
- 0x1,
- 0x0,
- 0x38,
- 0x14,
- 0x11a,
- 0xe8,
+ 0x132,
+ 0x4c,
+ 0x17,
+ 0x6,
+ 0x48,
+ 0x3,
0x0,
0x0,
0x6,
- 0x7,
0xc,
+ 0x3,
0x0,
+ 0xb1,
0x1,
- 0x2c,
- 0x156,
- 0x3d,
+ 0x8c,
0x0,
- 0x9,
- 0x1,
- 0x11,
+ 0x1b,
+ 0xc0,
+ 0x7,
+ 0x2,
0x0,
- 0x18,
+ 0x12,
0x0,
0x0,
- 0xe,
- 0x5,
- 0x90,
- 0x9,
+ 0x6,
+ 0x1,
+ 0x1be,
+ 0xc8,
0x0,
- 0x9,
+ 0x7d,
0x0,
- 0x41,
+ 0xa,
0x0,
- 0x38,
- 0x1,
- 0x1a0,
- 0x3,
- 0x1a,
+ 0x0,
+ 0xb4,
+ 0x2,
+ 0x8,
0x5,
- 0x9,
+ 0x144,
+ 0xdb,
+ 0x1,
0x6,
0x0,
0x0,
- 0x53,
- 0x5,
- 0x0,
+ 0xd,
+ 0x14,
0x0,
- 0x1,
+ 0x4f,
+ 0x2,
0x0,
- 0x15,
- 0xc3,
+ 0x3,
+ 0x32,
0x0,
- 0xd,
+ 0x5,
0xe,
- 0x19,
- 0xf,
- 0x20,
+ 0x7c,
+ 0x2c,
+ 0x6,
0x0,
0x0,
- 0x4,
+ 0x7,
0x0,
0x5f,
- 0x4,
- 0x74,
- 0x24,
- 0x0,
+ 0x5,
0xf,
- 0x9b,
+ 0x67,
0x0,
+ 0x1,
+ 0x34,
0x0,
- 0x4c,
- 0x2c,
0x0,
0x0,
+ 0x90,
+ 0x12,
0x0,
- 0x4a,
- 0x1,
0x0,
- 0x45,
+ 0x1e,
+ 0x4c,
+ 0x89,
+ 0xa8,
0x0,
- 0x2,
+ 0x4,
+ 0x1f,
0x0,
0x0,
+ 0x1,
+ 0x99,
+ 0x18,
+ 0xd,
0x3,
- 0x2d,
- 0x3b,
+ 0x7,
+ 0x5,
+ 0x19,
0x2,
0x0,
- 0x5,
- 0x69,
+ 0x4,
+ 0x1,
0x3,
+ 0x90,
0xb,
- 0x0,
- 0x9,
- 0x1,
+ 0x29,
0x55,
- 0x9,
0x0,
- 0x1,
- 0x1c,
- 0x0,
- 0x9,
+ 0x51,
0x0,
0x2,
- 0x2,
- 0x7f,
- 0x42,
+ 0xd0,
+ 0x7a,
+ 0x66,
0x0,
- 0x26,
+ 0x95,
0x7,
0x0,
0x0,
@@ -17122,875 +17207,889 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x1,
0x0,
- 0x72,
- 0x30,
- 0x3c,
- 0xd9,
- 0x36,
+ 0x8d,
+ 0xf,
+ 0x21,
+ 0x56,
+ 0xa,
0x1b,
0x0,
0x0,
- 0x4,
- 0x1,
- 0x0,
- 0x3d,
- 0x0,
- 0x21,
- 0x1,
- 0x0,
- 0x2f,
+ 0x8,
+ 0x7,
+ 0x7c,
+ 0x5,
0x0,
- 0x33,
+ 0x62,
+ 0x2,
+ 0x13,
+ 0x6,
0x0,
- 0xe,
- 0x14,
- 0x19,
+ 0x4f,
0x0,
- 0x11,
- 0x3,
- 0x3,
- 0x10,
0x0,
- 0x16,
+ 0x32,
+ 0x2f,
+ 0x4,
+ 0xd,
+ 0xa0,
+ 0x4,
+ 0x8,
+ 0x24,
+ 0x1f,
0x0,
- 0x5,
0x0,
- 0x46,
- 0x6,
+ 0x82,
+ 0x45,
0x0,
+ 0x61,
0x0,
+ 0x1d,
0x1,
- 0x4,
+ 0x0,
0x1,
0x0,
+ 0x7,
+ 0x17,
+ 0xb,
0x0,
- 0x6,
- 0x13,
- 0x33,
0x0,
0x0,
- 0x16,
- 0x5c,
- 0x7,
+ 0xb,
+ 0x8,
+ 0x8,
0x0,
0x0,
- 0x2a,
+ 0x3d,
0x0,
- 0x13,
+ 0x96,
0x0,
0x0,
0x0,
- 0xb,
+ 0x8,
0x0,
0x0,
0x0,
- 0x3,
+ 0x4,
0x0,
0x3,
- 0x4c,
- 0x0,
+ 0x7,
+ 0x2c,
0x0,
0x0,
- 0x3,
+ 0x14,
+ 0x24,
0x2,
- 0x6,
0x2,
0x0,
- 0x8,
- 0x0,
- 0x55,
- 0x1,
- 0x1c,
- 0x0,
+ 0x2,
0x0,
0x12,
- 0xb,
- 0x5,
- 0xc,
- 0x3,
- 0x0,
- 0xe,
+ 0x1,
0x0,
- 0xa,
0x2,
0x0,
- 0x30,
- 0xe,
+ 0x25,
0xa,
- 0x4,
+ 0x1,
+ 0x66,
+ 0xb,
+ 0x8,
0x0,
+ 0xc,
+ 0x10,
0x2,
- 0x0,
+ 0x3,
+ 0x8,
+ 0x4,
0x6,
+ 0x1,
+ 0x4,
+ 0xe3,
+ 0x23,
+ 0x20,
+ 0x7,
0x0,
- 0x9,
- 0x47,
- 0xb,
- 0x71,
- 0x2,
+ 0xf,
+ 0x1e,
+ 0x23,
+ 0x3d,
+ 0x4,
0x0,
- 0x3,
+ 0x1,
0x0,
- 0xf,
- 0xd,
+ 0x3,
+ 0x25,
0x0,
0x1,
- 0x3b,
- 0x7,
+ 0x31,
+ 0x9d,
0x0,
0x0,
- 0x8,
+ 0x4,
0x1,
0x0,
0x0,
- 0x12,
+ 0x8,
0x0,
0x0,
- 0x13,
+ 0x26,
0x0,
0x0,
0x2,
0x0,
- 0x3,
+ 0x2,
0x0,
0x3,
- 0x12,
0x0,
0x1b,
0x0,
- 0x6,
- 0xc,
- 0x33,
- 0x5,
- 0x6,
0x2,
- 0x1,
0x0,
0x1,
+ 0xa,
0x3,
- 0x0,
- 0x7,
- 0x4,
- 0x4,
- 0x0,
- 0xb,
- 0x4,
- 0x0,
+ 0x1,
+ 0x2,
+ 0xc,
+ 0xc,
+ 0x1,
0x1,
0x0,
- 0x5,
+ 0x11,
+ 0x4,
+ 0x3d,
+ 0x2,
+ 0x1b,
+ 0x2,
0x0,
0xc,
- 0x2,
- 0x3,
- 0x69,
+ 0x6,
+ 0x6,
0x0,
- 0x7,
- 0x50,
- 0x1,
0x0,
+ 0x3,
0x0,
- 0xb,
+ 0x9,
+ 0x2c,
0x0,
+ 0x9,
+ 0x37,
+ 0x2d,
0x0,
+ 0x12,
+ 0x23,
0x0,
- 0x1b,
- 0x17,
- 0x21,
- 0x3,
- 0x4,
0x0,
- 0x12,
+ 0x1c,
0x0,
- 0x4,
- 0x2f,
- 0x1d,
- 0x4,
- 0x38,
0x26,
+ 0x10,
+ 0x15,
0x2,
0x0,
+ 0xb,
0x0,
- 0x28,
- 0x2,
- 0x2e,
- 0x1,
+ 0x4,
+ 0x14,
+ 0x5,
+ 0x13,
+ 0x7,
0x1c,
+ 0x3,
+ 0x36,
0x0,
+ 0x8,
+ 0x1,
+ 0x19,
+ 0x2,
0x0,
+ 0x1,
0x0,
- 0x3,
- 0x2,
0x0,
+ 0x4,
+ 0x1,
+ 0x8,
0x2,
+ 0xa,
0x6,
- 0x0,
- 0x38,
+ 0x13,
0x0,
0x0,
0x0,
- 0x7,
- 0x2,
+ 0x2f,
+ 0x1,
0x0,
- 0xf,
- 0x9,
- 0x4,
+ 0x16,
0x5,
- 0xb,
- 0x4,
+ 0xc,
+ 0xc,
+ 0x1,
+ 0x10,
+ 0x3,
+ 0xe,
+ 0x0,
0x1,
+ 0xd,
+ 0x28,
0x0,
- 0x27,
- 0x9,
- 0x15,
- 0x34,
0x0,
0x1,
- 0x9,
0x0,
- 0x11,
- 0x83,
+ 0x0,
+ 0x4,
+ 0x10,
0x21,
0x0,
- 0x5,
- 0xb,
+ 0x1,
0x3,
- 0x9,
0x0,
- 0x1,
+ 0x23,
0x0,
+ 0x1,
0x0,
0x0,
- 0x2d,
- 0x7,
0x0,
+ 0xd,
+ 0x1,
0x0,
- 0x7,
- 0x1c,
- 0x16,
0x0,
+ 0x6,
+ 0x6b,
0x0,
- 0x17,
- 0xb,
- 0x2b,
- 0x7,
+ 0x14,
0x0,
0x0,
0x6,
+ 0x12,
+ 0x0,
+ 0x2,
+ 0x0,
+ 0x2a,
+ 0x1,
+ 0xb,
0x1,
- 0x7,
0x6,
- 0x3,
+ 0x9,
0x8,
- 0xb,
0x1,
- 0x5,
0x0,
- 0x38,
- 0x1,
- 0xc,
+ 0x2b,
0x0,
- 0x2,
+ 0x8,
+ 0x7,
0x0,
+ 0xf,
+ 0x16,
0x0,
- 0x11,
0x0,
+ 0x44,
0x0,
- 0x2b,
+ 0x1,
0x0,
0x0,
+ 0xc,
+ 0x19,
+ 0x25,
0x2,
- 0x10,
- 0x8,
- 0x1,
- 0x14,
- 0x4,
+ 0x1f,
+ 0xf,
+ 0xc,
0x1,
- 0xb,
- 0x0,
- 0x6,
- 0x11,
- 0x0,
- 0x7,
- 0x10,
- 0x3,
+ 0x1f,
+ 0xa,
0x0,
- 0x4,
- 0x32,
+ 0x38,
+ 0xe,
+ 0xf,
+ 0xc,
+ 0x25,
0x0,
0x6,
+ 0xe,
0x0,
- 0x1,
+ 0x8,
+ 0x0,
+ 0x2,
0x0,
0x0,
0x1,
- 0x1f,
+ 0x9,
0x1,
+ 0x16,
0x0,
0x0,
0x0,
- 0x0,
- 0xb,
- 0x7,
- 0xa,
- 0x4,
- 0x0,
+ 0x3,
0x15,
- 0xa,
- 0x0,
+ 0x62,
0x1,
0x0,
0x0,
- 0x2f,
- 0x1,
- 0x1,
- 0x6,
- 0xe,
- 0x1d,
- 0x7,
+ 0x2,
0x0,
- 0x4,
- 0xa,
- 0xa,
0x0,
+ 0x3d,
0x0,
+ 0x3,
+ 0x1,
+ 0x1,
+ 0x1,
0x0,
+ 0x1,
0x0,
0x29,
+ 0x4,
+ 0x2c,
0x1,
- 0xe,
0x0,
0x0,
- 0x18,
- 0x3,
- 0x3,
0x0,
- 0x3,
- 0x3,
0x0,
- 0x2,
+ 0x22,
0x0,
- 0xe,
+ 0x14,
+ 0x28,
0x0,
- 0x10,
+ 0x7,
+ 0x4,
+ 0x3,
+ 0x6,
0x0,
- 0x8,
- 0xc,
- 0x1b,
+ 0x1,
+ 0xd,
+ 0x2a,
0x0,
0x0,
+ 0x44,
0x0,
+ 0x8,
0x0,
+ 0x2,
0x1,
- 0x1,
- 0xd,
- 0x10,
+ 0xb,
0x0,
- 0xc,
- 0x6,
0x0,
- 0x1a,
- 0x1,
- 0x1d,
0x0,
- 0x2,
0x0,
- 0x7,
- 0x3b,
0x4,
+ 0x3,
+ 0x1c,
+ 0x5,
0x0,
+ 0x6,
0x2,
- 0xe,
- 0x10,
- 0x4,
- 0x1c,
- 0x44,
0x0,
- 0x3e,
+ 0x11,
+ 0x6,
+ 0x7,
0x0,
+ 0x2,
+ 0x28,
+ 0x7,
+ 0x1d,
+ 0xb,
0x5,
+ 0x2e,
+ 0x11,
0x0,
0x1,
- 0x17,
- 0x1,
- 0x3,
- 0x0,
+ 0xc,
0x0,
0x7,
+ 0x2f,
0x0,
- 0x3,
- 0x29,
- 0x1e,
- 0x6,
0x0,
- 0x2,
0x5,
- 0x2,
- 0x12,
+ 0xa,
0x0,
- 0xb,
+ 0x8,
+ 0x6,
0x0,
0x0,
- 0x15,
+ 0x7,
0x1,
+ 0x8,
+ 0x20,
+ 0xc,
0x0,
- 0x3,
- 0x28,
+ 0x1a,
+ 0x5,
+ 0x0,
+ 0x26,
+ 0x26,
+ 0x2,
+ 0xb,
+ 0x8,
0x0,
0x4,
+ 0x5,
+ 0x2,
+ 0x0,
+ 0x5,
+ 0x12,
+ 0x0,
+ 0x5,
0x0,
- 0xb,
0x1,
- 0x16,
+ 0x6,
+ 0x9,
+ 0x1,
0x3,
+ 0x15,
0x3,
0x0,
- 0x1d,
- 0x0,
0x0,
- 0x4,
+ 0x2,
0x0,
- 0x15,
+ 0x3,
0x0,
- 0x7,
+ 0x16,
0x0,
- 0x7,
- 0xa,
+ 0x10,
+ 0x3,
0x0,
- 0xb,
+ 0x1b,
0x2,
0x0,
- 0x28,
+ 0x9,
0x0,
- 0x1,
+ 0x9,
0x0,
- 0x13,
+ 0x9,
0x0,
0x0,
0x1,
- 0x5,
+ 0x1,
+ 0xc,
+ 0x26,
+ 0x1,
0x0,
- 0x13,
- 0x6,
0x0,
- 0x2,
+ 0x4,
0x0,
- 0x3,
+ 0xc,
+ 0x1e,
0x0,
- 0x1d,
- 0x24,
0x1,
- 0x26,
- 0x2,
- 0x19,
+ 0x36,
+ 0x6,
+ 0x3,
0x0,
- 0x4,
0x0,
- 0xf,
+ 0x1,
+ 0x0,
+ 0x6,
0x0,
0x0,
0x0,
- 0x1,
0x8,
+ 0xc,
0x0,
0x0,
0x1,
0x0,
0x0,
- 0x5,
- 0xb,
+ 0x4,
0x2,
- 0x0,
+ 0x7,
0x1,
- 0x4,
- 0x21,
- 0x5,
- 0x0,
- 0x0,
- 0x33,
- 0x3,
- 0x3,
- 0x0,
+ 0x2,
+ 0x7,
+ 0xd,
0x2,
0x0,
0x0,
- 0x1d,
0x0,
0x2,
- 0x0,
- 0x0,
- 0x1a,
- 0x1b,
0x5,
- 0x1,
0x0,
- 0x9,
- 0x2,
- 0x9,
- 0x1,
+ 0x8,
+ 0x5,
0x0,
- 0xc,
- 0x1,
0x0,
- 0x4,
+ 0x3,
+ 0x6,
0x0,
0x0,
+ 0x8,
0x1,
+ 0x5,
0x1,
0x3,
- 0x8,
+ 0x3,
+ 0x10,
+ 0xb,
+ 0x7,
0x0,
+ 0xf,
+ 0x11,
0x0,
- 0x8,
+ 0x18,
0x0,
- 0x2,
0x0,
- 0xe,
+ 0xf,
0x2,
- 0xb,
- 0xe,
- 0x3,
- 0x0,
- 0xa,
- 0x0,
- 0x4,
+ 0x7,
0x1,
- 0x3,
0x0,
0x0,
- 0x4,
- 0x2,
0x0,
0xc,
- 0x3,
- 0x11,
+ 0x18,
0x0,
- 0x1,
+ 0x17,
0x0,
- 0x7,
0x1,
- 0x3,
- 0x6,
- 0x21,
0x0,
- 0x6,
+ 0x26,
+ 0x3,
0x0,
- 0x1,
- 0xb,
+ 0x1b,
0x0,
+ 0x8,
+ 0x3,
+ 0x3,
0x0,
0x0,
+ 0x2,
+ 0x6,
0x0,
+ 0xb,
+ 0x1b,
+ 0x9,
0x0,
0x3,
0x0,
0x0,
- 0xe,
- 0x6,
0x1,
0x1,
- 0x3c,
+ 0x1,
0x5,
0x0,
- 0x0,
- 0x2,
0x6,
- 0x7,
+ 0x0,
+ 0x4,
+ 0x3,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x9,
+ 0x9,
+ 0x0,
0x2,
0x7,
0xe,
- 0x4,
- 0x4,
- 0x0,
- 0x1,
+ 0x23,
+ 0x3,
0x1,
- 0x5,
0x0,
0x0,
- 0x9,
+ 0xf,
+ 0x0,
+ 0x8,
+ 0x22,
+ 0xe,
+ 0x10,
+ 0x7,
+ 0x3,
+ 0xc,
+ 0x19,
0x1,
+ 0xa,
0x2,
- 0x17,
0x0,
- 0x4,
- 0xa,
- 0x1f,
+ 0x3,
+ 0x18,
0x1,
+ 0x16,
+ 0xa,
+ 0x0,
+ 0x2,
+ 0x8,
0x0,
+ 0x23,
0x0,
- 0x13,
- 0x5,
0x0,
- 0x3,
- 0x9,
- 0xf,
+ 0x6,
+ 0x2,
0x0,
- 0x3,
+ 0x4,
+ 0xd,
0x1b,
0x0,
+ 0x4,
+ 0x38,
0x0,
- 0x7,
- 0x3,
0x0,
+ 0x11,
+ 0xe,
0x0,
0x0,
- 0xf,
- 0xa,
0x0,
- 0x8,
- 0xa,
0x9,
- 0x1,
- 0x1f,
+ 0x0,
+ 0x21,
+ 0x13,
0x2,
- 0xc,
+ 0x18,
+ 0x4,
+ 0x1,
+ 0x10,
0x0,
- 0x9,
- 0x3,
+ 0x2,
0x0,
- 0x8,
+ 0x6,
+ 0x14,
+ 0xa,
0x0,
0x0,
0x4,
- 0x2,
+ 0xe,
+ 0x0,
0x0,
- 0xb,
0x5,
- 0xa,
- 0x15,
- 0x12,
- 0xc,
+ 0x4,
0x0,
- 0x3,
+ 0x20,
+ 0x1d,
+ 0x1,
+ 0x0,
+ 0x9,
0x0,
0x1,
0x1,
- 0x6,
+ 0x4,
0x2,
0x0,
+ 0x1,
0x0,
- 0xc,
0x0,
+ 0x24,
+ 0x1,
0x0,
- 0x2,
- 0x5,
- 0xa,
- 0x3,
+ 0x9,
+ 0x8,
0x0,
- 0xa,
0x1,
+ 0xa,
0x1,
0x0,
+ 0x4,
+ 0x0,
+ 0x13,
+ 0x5,
+ 0x0,
0x1,
0x0,
- 0x11,
- 0x1f,
+ 0x1,
0x0,
- 0xa,
0x0,
+ 0x2,
0x4,
0x0,
0x0,
+ 0x5,
0x1,
+ 0x9,
0x2,
+ 0x5,
0x0,
- 0x12,
- 0x1,
- 0x4,
0x0,
- 0xd,
- 0x13,
0x0,
0x0,
0x0,
+ 0xa,
0x0,
0x0,
- 0xb,
+ 0x10,
+ 0x1,
+ 0x4,
0x0,
0x0,
+ 0x1,
0x4,
0x0,
+ 0x1,
0x2,
+ 0x4,
+ 0x3,
0x0,
+ 0x4,
+ 0x14,
0x7,
- 0x3,
- 0x3,
- 0x3,
- 0x6,
+ 0xa,
+ 0x2,
0x6,
- 0x1,
- 0x0,
- 0x0,
- 0x1,
- 0xc,
0x0,
0x2,
- 0x0,
- 0xb,
- 0x4,
0x1,
- 0x5,
- 0x0,
0x8,
+ 0x7,
0x0,
0x0,
+ 0x0,
+ 0x14,
0x1,
- 0x1,
- 0xc,
+ 0x10,
0x0,
0x0,
0x5,
- 0x7,
- 0x2,
- 0x1c,
- 0x4,
+ 0x1,
+ 0x6,
+ 0x5,
+ 0x3,
0x0,
- 0x16,
+ 0x9,
0x2,
0x4,
- 0x9,
+ 0x2,
0x0,
0x0,
- 0x1,
- 0xf,
+ 0xc,
+ 0x19,
0x0,
0x0,
0x0,
- 0x11,
+ 0x1,
0x0,
0x0,
- 0x3,
- 0x4,
- 0x10,
- 0x0,
- 0x2,
- 0xa,
+ 0xf,
+ 0x8,
+ 0xd,
0x0,
+ 0x3,
0x1,
0x0,
- 0x2,
+ 0x9,
+ 0x14,
+ 0x17,
0x0,
0x0,
0x0,
- 0xb,
- 0x7,
- 0xb,
0x0,
0x3,
+ 0x1,
0x0,
+ 0x5,
+ 0x15,
+ 0x1,
+ 0x19,
0x1,
- 0x1a,
- 0x2,
0x1,
+ 0x1,
+ 0x1,
+ 0x3,
+ 0x0,
0x6,
- 0x4,
+ 0x3,
0x0,
- 0xd,
- 0x1,
+ 0x11,
+ 0x5,
0x0,
+ 0x4,
+ 0xc,
+ 0x3,
0x0,
- 0x2,
- 0x2,
- 0x6,
0x7,
- 0x1,
- 0x9,
- 0x16,
0x0,
0x0,
0x3,
- 0x1,
+ 0x4,
+ 0x3,
+ 0xb,
+ 0x0,
+ 0x0,
0x6,
+ 0x8,
0x3,
+ 0x1,
0x0,
0x0,
- 0xe,
0x1,
+ 0xd,
0x3,
- 0x2,
- 0x0,
- 0xa,
- 0x4,
- 0x19,
- 0x8,
0x0,
- 0x2,
+ 0x7,
0x0,
0x1,
0x0,
0x0,
0x0,
- 0x4,
+ 0x9,
0x1,
0x0,
0x2,
0x1,
- 0xb,
- 0x1,
+ 0x9,
+ 0xa,
0x8,
0x1,
- 0x2,
- 0x2,
+ 0x7,
+ 0x3,
0x0,
- 0xb,
+ 0x3,
0x0,
0x0,
- 0x2,
- 0x27,
- 0x1,
- 0x3,
+ 0x4,
0x0,
+ 0x4,
+ 0x1,
+ 0xb,
0x0,
- 0x7,
- 0x8,
+ 0x13,
0x6,
+ 0x7,
0x0,
0x0,
- 0x1,
- 0x17,
+ 0x8,
+ 0x7,
+ 0x7,
0x0,
0x3,
0x0,
- 0x1,
0x2,
+ 0x3,
0x0,
- 0x15,
- 0x9,
- 0xe,
- 0x9,
- 0xe,
- 0xc,
+ 0x1,
+ 0x1,
+ 0x1,
+ 0x1b,
+ 0x3,
+ 0x2,
0x9,
0x2,
0x1,
- 0x9,
+ 0x2,
0x0,
- 0x7,
+ 0x4,
0x1,
0x0,
- 0x1,
+ 0x6,
0x0,
0x0,
0x1,
+ 0x5,
0x0,
- 0x0,
- 0x2,
- 0x0,
- 0x1a,
+ 0xf,
0x1,
+ 0x6,
0x8,
+ 0x4,
0x0,
0x0,
- 0x8,
- 0xa,
- 0x1,
+ 0x3,
+ 0xb,
0x2,
+ 0x5,
+ 0x1,
0x2,
- 0x1d,
- 0x3,
- 0x0,
- 0x11,
+ 0x13,
+ 0x13,
0x0,
+ 0x9,
0x2,
0x0,
0x0,
@@ -18000,449 +18099,457 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x0,
0x0,
- 0x8,
- 0x8,
- 0x0,
- 0x0,
- 0x9,
- 0x2,
0x4,
- 0xd,
+ 0x2,
+ 0x21,
0x0,
- 0x7,
+ 0x6,
+ 0x3,
+ 0x1,
+ 0x1,
0x5,
- 0x4,
- 0x8,
+ 0x3,
0x0,
- 0x6,
+ 0x10,
+ 0x22,
+ 0xb,
+ 0x0,
+ 0x8,
0x0,
0x0,
0x3,
+ 0x4,
0x1,
- 0x1,
- 0x0,
+ 0x1a,
0x2,
0x0,
0x0,
0x0,
+ 0x2,
0x1,
- 0x1f,
0x0,
- 0x3,
- 0x5,
0x0,
+ 0x2,
0x0,
- 0x8,
+ 0x0,
+ 0x12,
0x1,
0x0,
- 0x15,
+ 0x2,
0x0,
0x0,
- 0x4,
- 0xf,
- 0x3,
+ 0x1,
+ 0x0,
0x2,
+ 0x21,
0x0,
0x2,
+ 0xd,
0x1,
- 0x0,
0x3,
+ 0x5,
0x1,
- 0x2,
- 0xa,
0xc,
+ 0x10,
0x0,
- 0x14,
+ 0x24,
0x0,
0x0,
- 0x4,
- 0x7,
+ 0x6,
+ 0x6,
+ 0x1b,
0x1,
- 0x1f,
+ 0xd,
0x0,
- 0x3,
+ 0x1,
0x0,
+ 0x1,
0x0,
- 0x4,
0x0,
+ 0x7,
0x2,
- 0x1,
0x0,
- 0x2f,
- 0xa,
+ 0x5,
+ 0x24,
0x6,
0x1,
- 0xb,
+ 0xe,
0x0,
- 0x8,
- 0x7,
+ 0xb,
+ 0xe,
0x7,
0x0,
0x0,
0x0,
- 0x13,
- 0x0,
- 0x0,
0x3,
- 0x2,
- 0x6,
- 0x11,
- 0x6,
0x0,
0x0,
- 0xe,
- 0x2,
0x2,
+ 0x18,
+ 0x3,
+ 0x3,
0x1,
0x0,
- 0xc,
- 0x2,
0x0,
+ 0x4,
+ 0x4,
0x0,
- 0xa,
- 0xa,
- 0x2,
+ 0x1,
0x0,
- 0x13,
+ 0x14,
+ 0x6,
+ 0xb,
0x0,
- 0x5,
+ 0x2,
+ 0x1,
+ 0x2,
+ 0x6,
+ 0x6,
0x0,
0x6,
- 0x3,
- 0x1,
+ 0x0,
0x0,
0x1,
0x2,
- 0x1,
+ 0x2,
0x1,
0x2,
- 0x5,
- 0x0,
0x0,
0x1,
- 0x14,
+ 0x8,
0x1,
- 0x3,
- 0x5,
+ 0xc,
+ 0x0,
0x7,
- 0x1,
- 0x15,
0x2,
- 0x0,
+ 0x3,
0x1,
+ 0x0,
+ 0x6,
0x1,
+ 0x7,
+ 0x11,
+ 0x3,
+ 0x0,
0x1,
- 0xb,
+ 0xa,
+ 0x2,
+ 0x2,
+ 0x8,
+ 0x6,
0x8,
0x0,
+ 0x0,
0x4,
+ 0x8,
+ 0x1,
+ 0x7,
+ 0x2,
+ 0x2,
+ 0x6,
+ 0x0,
+ 0x6,
0x0,
0x0,
+ 0x7,
0x1,
- 0x6,
+ 0xe,
0x2,
- 0x3,
0x2,
- 0x1,
- 0x1,
+ 0x32,
+ 0x7,
+ 0xb,
+ 0x4,
+ 0x4,
0x0,
- 0x9,
+ 0x6,
0x0,
- 0x26,
- 0x5,
- 0x1,
- 0x3,
- 0xa,
- 0x12,
0x8,
- 0x13,
- 0x8,
- 0x1,
- 0x14,
- 0x5,
- 0x3,
- 0x0,
- 0x9,
0x0,
0x0,
0x0,
+ 0x9,
0x2,
- 0x3,
- 0xd,
+ 0x1b,
+ 0x0,
0x0,
0x0,
- 0x21,
0x1,
+ 0xc,
0x2,
- 0x11,
- 0xe,
0x1,
+ 0x2,
+ 0xf,
0x0,
0x0,
0x0,
- 0xd,
- 0x4,
- 0x2,
- 0xb,
+ 0x3,
+ 0xc,
+ 0x5,
0x0,
0x0,
0x0,
- 0x5,
- 0x8,
+ 0xb,
+ 0x0,
+ 0x2,
0x1,
+ 0x3,
0x0,
- 0xc,
0x1,
0x6,
- 0xc,
+ 0xa,
0x1,
0x0,
- 0x5,
+ 0x8,
0x0,
- 0x1,
+ 0x4,
0x1,
0x0,
- 0x27,
+ 0x1,
0x0,
- 0xa,
- 0x10,
- 0x6,
- 0x4,
+ 0xe,
+ 0x2,
0x1,
- 0xd,
0x1,
- 0x3,
0x1,
+ 0x7,
0x1,
+ 0x3,
0x1,
0x2,
- 0x2,
- 0x2,
- 0x0,
- 0xf,
- 0x5,
0x1,
- 0x0,
- 0x0,
+ 0x3,
0x2,
- 0x4,
0x0,
- 0x3,
0x11,
+ 0x3,
+ 0x2,
+ 0x3,
0x0,
0x0,
+ 0x3,
+ 0x4,
+ 0x0,
0x0,
0x1,
+ 0x20,
0x0,
0x0,
0x1,
0x0,
0x0,
0x7,
+ 0x2,
+ 0x0,
+ 0x12,
+ 0x0,
0xa,
+ 0x1,
+ 0x2,
0x0,
- 0x3,
- 0x5,
0x0,
0x0,
0x0,
- 0x3,
- 0x8,
+ 0x2,
0x0,
- 0x5,
0x0,
- 0x8,
- 0x7,
- 0x5,
- 0x5,
+ 0x4,
+ 0xf,
0x0,
+ 0x7,
0x4,
- 0x1,
- 0xc,
- 0x1,
- 0x18,
0x2,
+ 0x12,
+ 0x0,
0x1,
- 0x8,
0x4,
0x2,
+ 0x3,
+ 0x0,
+ 0x1,
+ 0x17,
+ 0x1,
0x1,
+ 0x5,
0x0,
- 0x13,
+ 0x1,
0x0,
0x0,
- 0xc,
+ 0xb,
0x0,
- 0x3,
+ 0x1,
0x0,
0x0,
0x0,
- 0x7,
+ 0x4,
0x0,
0x0,
- 0xb,
- 0x7,
- 0x15,
+ 0x9,
0x0,
+ 0x4,
0x0,
- 0x6,
- 0x1b,
0x0,
- 0xb,
+ 0x4,
+ 0xa,
+ 0x0,
+ 0x0,
+ 0x6,
0x7,
- 0x12,
- 0x1,
- 0x9,
+ 0x2,
+ 0x3,
0x0,
0x0,
0x0,
- 0x2,
- 0x2,
+ 0x0,
+ 0x6,
0xb,
0x0,
0x0,
0x0,
0x0,
- 0x2,
- 0x5,
- 0x8,
- 0x7,
- 0x5,
- 0x8,
0x0,
0x1,
0x0,
- 0x0,
- 0x0,
+ 0xc,
+ 0x8,
0x1,
- 0x3,
- 0x9,
0xd,
+ 0xb,
+ 0x2,
+ 0x0,
+ 0x0,
0x0,
0x1,
- 0x4,
+ 0x5,
+ 0x1,
+ 0x0,
+ 0x0,
0x2,
+ 0x3,
+ 0x3,
0x0,
0x0,
- 0x9,
+ 0x8,
0x0,
- 0x2,
- 0x12,
- 0x5,
0x1,
+ 0x9,
+ 0x11,
0x1,
+ 0xc,
0x0,
0x0,
0x0,
- 0x3,
+ 0x4,
0x0,
0x0,
0x0,
- 0x4,
- 0x8,
- 0x5,
- 0x5,
- 0x6,
+ 0x1,
+ 0x1,
+ 0x17,
+ 0x1,
0x0,
- 0x3,
- 0x2,
+ 0x5,
+ 0xb,
0x1,
+ 0x4,
0x1,
- 0x3,
0x6,
- 0x15,
- 0x2,
- 0x4,
- 0x5,
+ 0x1d,
+ 0x0,
0x1,
+ 0x4,
0x2,
- 0x0,
+ 0x9,
+ 0x2,
+ 0xf,
+ 0x14,
0x2,
0x1,
- 0x4,
- 0x3,
- 0x4,
- 0xc,
+ 0x7,
0x1,
+ 0x1,
+ 0x7,
+ 0x2,
0x0,
0x0,
0x0,
0x0,
- 0x0,
+ 0x4,
+ 0x13,
0x2,
- 0x7,
0x1,
- 0x2,
- 0x6,
+ 0x1,
+ 0x3,
0x0,
0x2,
- 0x0,
0x2,
0x0,
- 0x1,
0x3,
- 0x4,
+ 0x1,
+ 0x0,
+ 0x5,
0x1,
0x1,
0x0,
- 0x12,
- 0x2,
0x1,
+ 0x1,
+ 0x2,
0x0,
0x0,
- 0xa,
+ 0x3,
0x0,
- 0x8,
- 0x8,
+ 0xa,
+ 0x6,
0x1,
- 0xc,
- 0xe,
+ 0x6,
+ 0x7,
0x1,
0x0,
- 0x5,
+ 0x0,
+ 0x2,
+ 0x7,
0x4,
- 0x1,
- 0x17,
0x0,
0x0,
- 0x11,
- 0x2,
+ 0xc,
0x2,
0x0,
+ 0xa,
0x1,
0x0,
0x0,
- 0x2,
- 0x2,
- 0x3,
- 0x2,
+ 0xa,
+ 0x0,
+ 0x6,
0x3,
- 0x4,
0x1,
+ 0x0,
+ 0xd,
+ 0x3,
0x5,
0x0,
- 0x9,
- 0x6,
0x2,
+ 0xa,
0x0,
+ 0xb,
0x1,
- 0x5,
- 0xa,
+ 0x6,
+ 0x22,
0x0,
- 0x8,
+ 0x5,
+ 0x1,
0x0,
0x2,
- 0x4,
0x0,
0x0,
+ 0x12,
+ 0x4,
+ 0x2,
0x0,
- 0xf,
- 0x3,
- 0x8,
0x0,
- 0x2,
+ 0xc,
0x0,
- 0x7,
+ 0x1,
0x0,
0x0,
0x0,
@@ -18451,455 +18558,463 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x0,
0x0,
- 0x5,
- 0x3,
- 0x3,
- 0x3,
- 0x3,
- 0x3,
0x1,
+ 0x4,
+ 0x2,
+ 0x1,
+ 0x8,
+ 0x4,
+ 0x6,
0x1,
0x0,
- 0x20,
- 0x5,
+ 0x3,
+ 0xa,
0x0,
- 0x2,
+ 0x5,
0x1,
0x0,
0x0,
- 0x9,
- 0x1,
+ 0x3,
0x0,
+ 0x6,
0x0,
- 0x8,
- 0x2,
- 0xf,
- 0x1,
+ 0x0,
+ 0x3,
+ 0x0,
+ 0x4,
0x0,
0x0,
0x0,
+ 0xe,
+ 0x1,
0x1,
- 0x4,
- 0x7,
0x0,
0x6,
- 0x4,
0x0,
+ 0x8,
0x0,
- 0x3,
- 0x5,
+ 0x0,
+ 0xa,
0x1,
- 0x7,
0x0,
+ 0x4,
+ 0x0,
+ 0x4,
0x1,
0x0,
- 0x11,
0x0,
0x0,
0x0,
0x0,
+ 0x1,
+ 0x0,
+ 0x17,
0x4,
0x0,
- 0x1,
0xb,
- 0x0,
- 0x2,
- 0x2,
0x3,
- 0x1,
+ 0x5,
+ 0x4,
0x0,
- 0x2,
+ 0x3,
+ 0xf,
+ 0x6,
0x1,
- 0xb,
0x1,
- 0x2,
0x7,
- 0x6,
- 0x6,
- 0x1,
0x4,
- 0x0,
+ 0x3,
0x1,
+ 0x3,
0x4,
- 0x0,
- 0x0,
- 0x5,
0x1,
- 0x0,
- 0x0,
- 0x1,
- 0x8,
0x1,
0x0,
0x0,
+ 0x0,
+ 0x2,
0x1,
0x0,
+ 0x5,
0x0,
0x2,
0x0,
+ 0x0,
+ 0x3,
0x1,
- 0x4,
- 0x6,
0x0,
- 0xf,
+ 0x5,
0x0,
+ 0xd,
+ 0x6,
+ 0x1,
0x0,
0x0,
- 0xd,
- 0x5,
+ 0x7,
+ 0x0,
0x0,
+ 0xa,
+ 0x3,
+ 0x2,
+ 0xa,
0x1,
+ 0x7,
+ 0x1,
+ 0x0,
0x1,
- 0x2,
0x0,
0x5,
- 0x4,
- 0x9,
0x3,
0x0,
0x5,
- 0x4,
- 0xd,
+ 0x2,
+ 0x1,
0x0,
- 0x5,
+ 0x2,
0x0,
0x1,
- 0x2,
- 0x8,
- 0x7,
- 0x11,
- 0x6,
- 0x2,
0x1,
- 0x0,
+ 0x4,
+ 0x9,
+ 0x5,
+ 0x1,
0x1,
0x6,
+ 0x0,
+ 0x9,
+ 0x1,
+ 0xa,
0x2,
0x2,
- 0x8,
0x0,
0x0,
- 0x3,
- 0x1,
- 0x4,
0x2,
- 0xf,
- 0xa,
- 0x8,
- 0xc,
- 0x0,
- 0x6,
0x2,
+ 0x7,
+ 0x9,
+ 0x0,
+ 0x10,
+ 0x1c,
+ 0x4,
+ 0x0,
+ 0x0,
0x3,
+ 0x3,
+ 0xd,
0x1,
0x3,
- 0x2,
0x0,
- 0xa,
0x0,
+ 0xc,
+ 0x7,
0x1,
- 0x6,
- 0x2,
- 0x3,
- 0x4,
- 0x1,
- 0x0,
- 0x3,
- 0x2,
0x3,
+ 0x7,
0x8,
+ 0x3,
+ 0x6,
0x0,
0x3,
- 0x2,
- 0x2,
- 0x4,
+ 0x1,
+ 0x1,
0x0,
+ 0x1,
+ 0x1,
+ 0x4,
+ 0xa,
0x5,
+ 0x0,
0x1,
+ 0x13,
0x2,
0x0,
0x0,
- 0xc,
+ 0x1,
0x2,
0x1,
- 0x3,
+ 0xe,
0x1,
+ 0xc,
0x1,
- 0x5,
0x1,
- 0x3,
+ 0x9,
0x0,
0x0,
- 0x2,
- 0x10,
+ 0x1,
+ 0xc,
0x0,
0x1,
0x0,
- 0xc,
- 0xb,
0x2,
- 0x1,
0x4,
- 0x0,
0x3,
- 0x0,
0x1,
- 0x14,
+ 0xc,
+ 0xc,
+ 0x3,
+ 0x0,
+ 0xc,
+ 0xb,
0x0,
0x1,
- 0x2,
0x1,
+ 0xa,
+ 0x1,
+ 0xb,
0x0,
- 0x7,
0x0,
- 0x2,
+ 0x1c,
0x0,
0x0,
0x0,
0x1,
0x2,
- 0x4,
- 0x0,
- 0x6,
+ 0x8,
0x3,
0x0,
- 0x11,
- 0xe,
- 0x0,
+ 0x5,
0x0,
0x3,
+ 0x3,
0x0,
- 0x1,
- 0x0,
- 0xf,
0x4,
- 0xa,
+ 0x0,
0x2,
+ 0x6,
+ 0xf,
0x0,
- 0x3,
- 0x12,
0x1,
- 0x6,
+ 0x4,
+ 0x0,
0x0,
+ 0x11,
+ 0xb,
+ 0x4,
+ 0x5,
0x4,
0x0,
- 0x2,
- 0x3,
+ 0xd,
+ 0x4,
+ 0x4,
0x3,
- 0xe,
+ 0x1,
0x0,
0x0,
- 0x7,
+ 0x2,
0x0,
0x0,
0x0,
- 0x4,
+ 0xa,
+ 0x1,
0x13,
- 0x4,
+ 0x6,
+ 0x0,
+ 0x7,
0x7,
- 0x5,
- 0x4,
- 0x2,
- 0xf,
- 0x2,
0x1,
0x1,
- 0x0,
- 0x0,
+ 0x4,
0x4,
0x0,
- 0x1,
- 0x7,
- 0xc,
0x0,
+ 0x3,
0x0,
0x7,
0x0,
0x2,
+ 0x1,
+ 0x0,
0x2,
0x0,
+ 0x2,
+ 0x2,
0x0,
0x0,
- 0x2,
- 0xc,
- 0xa,
- 0x7,
0x0,
+ 0x3,
0x4,
+ 0x5,
+ 0x10,
0x0,
- 0x4,
+ 0x7,
0x0,
+ 0xa,
+ 0x11,
0x0,
0x0,
0x1,
+ 0x1,
0x0,
0x0,
0x0,
0x0,
0x0,
+ 0x1,
0xb,
- 0xa,
- 0x3,
- 0x6,
+ 0x1,
0x0,
0x0,
- 0x4,
- 0x3,
0x0,
- 0x6,
+ 0x2,
+ 0x2,
0x0,
+ 0xa,
0x0,
+ 0x3,
0x0,
+ 0x7,
0x6,
- 0xa,
- 0x4,
+ 0x1,
0x0,
0x4,
- 0x5,
- 0x16,
+ 0x2,
+ 0x2,
0x0,
0x1,
- 0x1,
+ 0x2,
+ 0x3,
0x4,
- 0x1c,
0x0,
- 0x6,
- 0x1,
+ 0x4,
0x0,
+ 0x1,
0x0,
0x2,
- 0x2,
+ 0x10,
+ 0x5,
0x0,
0x0,
+ 0x1,
0x0,
+ 0xa,
0x4,
- 0x16,
- 0x2,
0x0,
+ 0x4,
0x0,
- 0x3,
0x0,
0x0,
- 0x3,
0x6,
0xb,
- 0x4,
+ 0xb,
+ 0x5,
0x0,
0x0,
0x0,
0x0,
0x0,
- 0x8,
+ 0x9,
0x0,
- 0x5,
- 0x5,
- 0x3,
- 0x1,
0x2,
0x4,
0x0,
- 0x4,
+ 0x5,
+ 0x2,
0x0,
+ 0x3,
0x0,
- 0x1,
0x0,
- 0x2,
- 0x8,
0x0,
0x2,
- 0xf,
- 0x9,
- 0x5,
0x0,
0x1,
- 0x1,
0x0,
+ 0x4,
0x6,
+ 0x1,
+ 0x4,
+ 0x1,
0x0,
+ 0x1,
+ 0x7,
0x0,
0x6,
- 0x4,
+ 0x0,
0x0,
0x2,
0x2,
- 0x3,
0x0,
- 0x2,
+ 0x6,
+ 0x5,
+ 0x8,
+ 0x0,
0x1,
+ 0x2,
0x1,
+ 0x0,
0x4,
- 0x1,
+ 0x7,
0x0,
- 0x5,
- 0x2,
0x1,
- 0x5,
+ 0x7,
0x0,
- 0x1,
- 0x5,
- 0x1,
0x2,
0x2,
+ 0xb,
+ 0x1,
0x2,
+ 0x6,
+ 0x1,
0x0,
0x0,
0x0,
0x0,
- 0x1,
+ 0x2,
+ 0x4,
0x0,
0x0,
- 0x2,
- 0x9,
- 0x6,
+ 0x3,
+ 0x1,
+ 0x7,
0x0,
0x1,
- 0x3,
0x1,
- 0x8,
0x0,
+ 0x1,
0x0,
- 0x2,
0x0,
+ 0xb,
0x0,
0x0,
- 0x3,
- 0x3,
- 0x1,
0x0,
- 0x2,
+ 0x6,
0x0,
+ 0x1,
+ 0x0,
+ 0x4,
+ 0xc,
0x2,
0x0,
0x1,
+ 0x1,
0x2,
- 0x3,
0x4,
- 0x1,
+ 0xe,
0x0,
0x0,
0x0,
0x0,
0x0,
- 0x1,
+ 0x2,
0x1,
0x0,
- 0xd,
- 0x1,
- 0x3,
+ 0x4,
0x3,
+ 0x18,
+ 0x0,
0x1,
+ 0x0,
+ 0x2,
0x5,
- 0x3,
- 0x1,
0x1,
0x2,
- 0x2,
0x0,
+ 0x1,
0x3,
- 0x3,
+ 0x4,
0x0,
0x0,
- 0x8,
+ 0x5,
+ 0x2,
0x0,
0x0,
0x1,
@@ -18909,12 +19024,12 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x0,
0x2,
+ 0x3,
0x0,
- 0x5,
- 0xf,
- 0x4,
+ 0x1,
0x0,
- 0xb,
+ 0x0,
+ 0x1,
0x3,
0x0,
0x0,
@@ -18923,192 +19038,195 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x1,
0x0,
0x0,
- 0x3,
+ 0x14,
0x4,
- 0x6,
- 0x3,
+ 0xb,
+ 0x12,
0x0,
0x0,
- 0x1,
- 0x1,
0x2,
0x0,
+ 0x1,
+ 0x0,
0x0,
0x0,
- 0x2,
0x1,
- 0x8,
0x3,
- 0xe,
- 0x6,
- 0x2,
+ 0xb,
+ 0x3,
0x0,
0x1,
- 0x0,
0x2,
- 0x2,
- 0xa,
+ 0x0,
+ 0x10,
+ 0xd,
+ 0x1,
+ 0x1,
+ 0x7,
0x6,
0x1,
- 0x0,
- 0x8,
+ 0x1,
+ 0x2,
0x0,
0x0,
- 0xd,
0x1,
- 0x0,
+ 0x3,
0x2,
0x1,
0x3,
+ 0x1,
0x0,
0x0,
0x0,
+ 0x8,
+ 0x4,
0x2,
- 0x2,
- 0x0,
- 0x2,
- 0x0,
- 0xd,
- 0x0,
- 0x3,
+ 0x6,
0x9,
+ 0x5,
0x0,
+ 0x16,
0x1,
- 0x0,
0x4,
- 0x6,
0x0,
+ 0x3,
+ 0x3,
+ 0x4,
+ 0x1,
0x0,
- 0x5,
0x0,
- 0x1,
+ 0x2,
0x0,
0x1,
0x0,
- 0x7,
- 0x8,
0x2,
- 0x6,
- 0x1,
+ 0xd,
0x2,
0x0,
- 0x9,
- 0x0,
- 0x1,
- 0x0,
+ 0xb,
+ 0x6,
+ 0xa,
+ 0x3,
0x0,
+ 0x5,
0x0,
0x1,
- 0x1,
0x0,
- 0x3,
0x0,
- 0x2,
0x0,
+ 0x5,
0x1,
0x0,
0xa,
0x0,
- 0x7,
- 0x1,
0x2,
- 0x4,
0x0,
+ 0x2,
+ 0x2,
+ 0x5,
0x1,
+ 0x2,
0x0,
+ 0x2,
+ 0x2,
+ 0x5,
0x0,
0x1,
0x0,
0x0,
- 0xb,
+ 0x3,
+ 0x0,
+ 0x3,
0x2,
0x0,
0x0,
- 0x6,
- 0x2,
- 0x2,
- 0xf,
0x0,
0x1,
+ 0x1,
+ 0x1,
0x0,
+ 0x19,
0x0,
- 0x3,
- 0x5,
0x0,
- 0xc,
0x3,
- 0x2,
0x0,
0x1,
0x0,
+ 0x1,
0x5,
- 0x5,
+ 0x4,
0x1,
- 0x8,
+ 0x4,
0x0,
+ 0x1,
0x3,
- 0xe,
+ 0x4,
+ 0x6,
0x1,
- 0x2,
- 0x0,
0x1,
- 0x11,
- 0xa,
- 0x0,
- 0x3,
- 0x9,
+ 0x4,
0x3,
- 0x2,
- 0x0,
+ 0x4,
0x0,
+ 0x4,
+ 0x5,
+ 0x9,
0x0,
+ 0x1,
0x9,
+ 0x2,
0x1,
0x0,
0x0,
+ 0x0,
+ 0xc,
0x1,
0x0,
- 0x2,
0x0,
+ 0x3,
0x2,
- 0x0,
- 0x5,
0x3,
+ 0x2,
+ 0x1,
0x0,
- 0xb,
0x4,
0x0,
- 0x0,
- 0x3,
+ 0x4,
+ 0x7,
0x3,
- 0x0,
- 0x10,
- 0xc,
+ 0x1,
0x0,
0x1,
0x1,
- 0x9,
+ 0x0,
0x0,
0x1,
+ 0x5,
+ 0x6,
+ 0x9,
0x0,
0x2,
+ 0x1b,
+ 0x2,
0x0,
+ 0x9,
0x0,
0x0,
- 0x2,
+ 0x6,
0x0,
0x0,
+ 0x0,
+ 0x3,
+ 0x0,
+ 0x1,
0x6,
- 0xc,
0x2,
0x1,
+ 0x6,
0x1,
- 0x1,
+ 0xb,
0x3,
- 0x2,
- 0x8,
- 0x5,
- 0x2,
+ 0x6,
0x0,
0x0,
0x0,
@@ -19119,496 +19237,483 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x0,
0x2,
- 0x6,
- 0x0,
+ 0x2,
0x0,
0x0,
0x0,
0x0,
- 0x5,
0x0,
0x3,
0x0,
- 0x1,
- 0x0,
- 0x0,
+ 0x3,
0x3,
0x5,
+ 0xb,
+ 0x0,
0x0,
- 0x3,
0x1,
- 0x9,
- 0x9,
- 0x4,
- 0x4,
- 0x10,
+ 0x0,
0x0,
0x2,
- 0x5,
+ 0xb,
+ 0x3,
0x2,
+ 0x13,
0x1,
0x1,
- 0x1,
+ 0x8,
+ 0x3,
+ 0x2,
+ 0x5,
0x1,
0x0,
+ 0x1,
+ 0x1,
0x5,
+ 0x0,
+ 0x1,
0x3,
- 0x8,
0x4,
- 0xb,
- 0x1,
+ 0x5,
+ 0x0,
0x2,
0x0,
- 0x4,
- 0x8,
+ 0xe,
+ 0x1,
0x0,
0x0,
0x5,
- 0x1,
+ 0x3,
+ 0x5,
0x0,
- 0x7,
0x1,
- 0x3,
+ 0x2,
0x0,
0x0,
- 0x1,
+ 0x8,
0x0,
0x1,
- 0x4,
+ 0x2,
0x0,
- 0x1,
+ 0x9,
0x0,
0x0,
0x0,
- 0x1,
+ 0x6,
0x0,
0x3,
- 0xd,
0x3,
0x9,
- 0x0,
- 0x2,
- 0x3,
0x7,
- 0xf,
- 0xa,
- 0x7,
- 0x4,
- 0x1,
- 0x1,
+ 0x0,
+ 0x8,
+ 0x0,
0x1,
+ 0x3,
0x0,
- 0x6,
+ 0x3,
0x5,
+ 0x4,
0x1,
+ 0x2,
+ 0x2,
0x0,
- 0x1,
- 0x1,
0x4,
0x3,
+ 0x0,
+ 0x7,
+ 0x5,
+ 0x3,
0x1,
- 0x1,
- 0x1,
- 0x2,
0x0,
0x4,
- 0x6,
- 0x5,
- 0x2,
+ 0x1,
0x0,
+ 0x3,
0x0,
- 0x7,
- 0x2,
0x8,
0x2,
+ 0x4,
+ 0x4,
+ 0x0,
0x9,
+ 0x1,
+ 0x4,
0x0,
+ 0x6,
+ 0x4,
0x0,
0x0,
- 0x4,
- 0x1,
0x0,
- 0x8,
- 0x2,
+ 0xa,
+ 0x1,
0x0,
0x1,
+ 0x6,
+ 0x0,
0x1,
- 0xf,
+ 0x6,
+ 0x3,
0x2,
- 0x9,
- 0x0,
- 0x9,
0x2,
- 0x7,
+ 0x0,
+ 0x1,
+ 0x1,
0x3,
+ 0x5,
0x0,
0x0,
- 0x1,
0x2,
+ 0x4,
0x1,
0x0,
0x0,
0x1,
- 0x1,
+ 0x6,
0x0,
+ 0x5,
+ 0x4,
+ 0x4,
0x1,
0x1,
- 0x1,
- 0x1,
- 0x1,
- 0x0,
+ 0x4,
0x1,
0x2,
0x0,
+ 0x2,
+ 0x2,
+ 0x5,
+ 0xd,
0x1,
- 0x1,
- 0x4,
- 0x6,
- 0xa,
0x0,
0x2,
0x0,
0x0,
- 0x4,
- 0x0,
- 0x2,
0x2,
0x0,
0x1,
0x1,
0x0,
0x0,
- 0x2,
- 0x0,
0x1,
+ 0x4,
0x0,
0x0,
+ 0x7,
0x0,
- 0x1,
0x5,
0x0,
+ 0x0,
+ 0x0,
+ 0x1,
+ 0x4,
+ 0x0,
0x9,
0x2,
- 0x2,
+ 0x4,
0x0,
0x0,
0x1,
0x0,
- 0x5,
+ 0x3,
0x0,
- 0x1,
+ 0xa,
0x0,
- 0x1,
+ 0x3,
0x1,
0x5,
- 0x3,
+ 0x1,
0x0,
0x0,
- 0x3,
0x5,
+ 0xa,
0x1,
0x2,
0x0,
0x2,
- 0x2,
- 0x2,
- 0x2,
- 0x0,
+ 0x4,
+ 0x9,
+ 0x1,
+ 0x4,
0x5,
0x0,
0x0,
0x1,
- 0x0,
- 0xc,
- 0x1,
- 0x6,
- 0x7,
+ 0x3,
+ 0x9,
+ 0x2,
+ 0x4,
+ 0x8,
0x2,
0x0,
0x0,
- 0x7,
+ 0x3,
+ 0x8,
0x0,
0x0,
0x2,
0x1,
- 0x0,
+ 0x3,
0x2,
0x1,
0x0,
0x0,
0x0,
- 0x0,
0x1,
- 0x3,
+ 0x4,
+ 0x1,
0x1,
0x0,
- 0x2,
- 0x2,
- 0x2,
+ 0x1,
0x0,
+ 0x1,
0x0,
- 0x5,
- 0x2,
- 0xe,
0x0,
0x1,
+ 0x2,
+ 0x9,
+ 0x1,
+ 0x1,
0x5,
0x2,
0x0,
0x1,
0x0,
0x0,
- 0x3,
- 0x0,
0x2,
0x0,
- 0x1,
- 0xb,
+ 0x3,
0x0,
0x1,
0x2,
- 0x1,
- 0x2,
+ 0x0,
0x4,
0x2,
+ 0x4,
0x2,
0x2,
0x0,
- 0x5,
+ 0x1,
+ 0xa,
+ 0x0,
+ 0x1,
0x0,
0x0,
0x0,
0x0,
+ 0x3,
0x0,
- 0xb,
+ 0x3,
0x2,
+ 0x5,
0x1,
- 0x0,
0x2,
- 0x3,
+ 0x1,
0x2,
0x0,
- 0x0,
+ 0x4,
+ 0x2,
0x1,
0x0,
- 0x2,
0x1,
0x0,
0x0,
0x1,
- 0x2,
0x1,
0x3,
0x0,
0x0,
0x0,
0x0,
- 0x4,
0x0,
+ 0x2,
0x0,
+ 0x2,
0x3,
- 0x5,
- 0x12,
- 0x0,
- 0x0,
0x2,
- 0xe,
0x0,
- 0x2,
- 0x6,
+ 0x0,
0x0,
0x5,
0x1,
- 0x2,
- 0x2,
0x0,
0x1,
- 0x6,
- 0x2,
- 0x0,
0x1,
- 0x3,
0x0,
+ 0x7,
0x1,
0x1,
- 0x6,
- 0x1,
0x3,
- 0x4,
0x0,
+ 0x3,
+ 0x1,
+ 0x1,
0x0,
- 0x5,
+ 0x9,
+ 0x2,
0x0,
0x1,
0x1,
- 0x3,
+ 0x7,
+ 0x6,
+ 0x2,
+ 0x0,
+ 0x6,
+ 0x0,
+ 0x4,
+ 0x0,
+ 0x2,
+ 0x7,
0x4,
0x1,
+ 0x1,
0x0,
0x0,
0x2,
+ 0x1,
+ 0x0,
+ 0x4,
0x3,
0x0,
- 0x2,
+ 0xa,
0x0,
0x0,
- 0x3,
- 0x0,
- 0x2,
0x2,
0x2,
- 0x5,
- 0x4,
0x1,
+ 0x1,
+ 0x3,
0x2,
0x1,
+ 0x1,
0x0,
- 0x2,
+ 0x3,
0x0,
0x0,
0x0,
0x1,
- 0xe,
- 0x1,
- 0x2,
+ 0x6,
0x1,
- 0x2,
+ 0x3,
+ 0xb,
+ 0xb,
0x0,
- 0x8,
0x4,
+ 0x1,
0x0,
0x0,
0x0,
0x0,
0x5,
- 0x1,
+ 0x2,
0x0,
0x0,
- 0x2,
0x1,
+ 0x4,
0x0,
0x0,
- 0x2,
+ 0x1,
0x0,
0x0,
+ 0x5,
+ 0x3,
0x2,
0x3,
- 0x0,
- 0x4,
+ 0x8,
0x1,
+ 0x6,
0x1,
0x2,
0x0,
0x1,
- 0x0,
0x4,
+ 0x5,
+ 0x2,
0x0,
+ 0x6,
+ 0x1,
0x1,
0x0,
- 0x0,
0x2,
+ 0x1,
+ 0x2,
+ 0x2,
+ 0x0,
+ 0x0,
0x4,
- 0xe,
0x0,
- 0x2,
0x1,
- 0xe,
0x2,
0x0,
- 0xa,
- 0x0,
+ 0x5,
+ 0x2,
0x2,
- 0x3,
0x6,
- 0x0,
- 0x1,
- 0x8,
0x1,
- 0x4,
- 0x0,
+ 0x5,
0x3,
0x2,
- 0x1,
+ 0x5,
0x2,
- 0x7,
- 0x3,
+ 0x1,
+ 0x1,
0x0,
0x4,
- 0x3,
+ 0x2,
0x0,
- 0x4,
+ 0x2,
0x0,
0x0,
- 0x1,
+ 0x5,
0x0,
0x0,
0x0,
0x1,
0x0,
- 0x9,
+ 0x2,
0x0,
0x0,
0x0,
- 0x1,
+ 0x15,
0x2,
0x0,
0x0,
0x1,
0x2,
0x7,
- 0x2,
- 0xa,
+ 0x3,
+ 0x3,
+ 0x3,
0x1,
- 0x0,
0x1,
+ 0x2,
+ 0x6,
0x1,
- 0xb,
0x7,
0x0,
0x0,
0x0,
0x0,
- 0x1,
- 0x1,
- 0x0,
- 0x2,
- 0x0,
- 0x0,
- 0x2,
- 0x1,
- 0xa,
0x4,
- 0x2,
- 0x7,
- 0x1,
- 0x2,
+ 0x0,
+ 0x3,
0x2,
0x0,
0x0,
- 0x2,
- 0x2,
0x1,
0x1,
+ 0x3,
0x1,
- 0x0,
0x1,
0x0,
- 0x3,
0x1,
- 0x0,
0x1,
- 0x0,
- 0x0,
- 0x0,
- 0x0,
- 0x3,
- 0x2,
- 0x2,
- 0x2,
- 0x0,
+ 0x5,
0x0,
0x1,
- 0x1,
+ 0x5,
+ 0x4,
+ 0x8,
0x2,
0x1,
0x0,
@@ -19623,154 +19728,178 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x0,
0x1,
- 0x7,
- 0x2,
- 0x3,
- 0x6,
0x3,
+ 0x1,
+ 0x1,
+ 0x0,
+ 0x0,
0x4,
+ 0x3,
0x1,
+ 0x4,
+ 0x0,
+ 0x4,
0x0,
0x2,
- 0xb,
+ 0x2,
+ 0x3,
0x0,
+ 0x1,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x1,
0x5,
- 0x3,
+ 0x0,
+ 0x2,
+ 0x4,
0x2,
0x1,
+ 0x6,
0x0,
+ 0x1,
+ 0xf,
0x0,
+ 0x2,
+ 0x5,
0x0,
- 0xc,
0x2,
- 0x1,
+ 0x0,
0x3,
+ 0x4,
+ 0x2,
+ 0x4,
0x3,
+ 0x5,
0x1,
- 0x3,
- 0x0,
- 0x6,
0x1,
- 0x0,
+ 0x1,
+ 0x7,
0x0,
0x7,
+ 0x2,
0x0,
0x0,
- 0xa,
+ 0x6,
0x0,
0x0,
+ 0x2,
0x0,
0x0,
- 0x3,
0x0,
- 0x2,
0x0,
- 0x2,
0x3,
+ 0x0,
0x3,
+ 0x0,
0x1,
+ 0x2,
+ 0x7,
0x1,
- 0x3,
- 0x3,
- 0x0,
+ 0x7,
0x3,
0x1,
0x0,
- 0xa,
+ 0x2,
+ 0x2,
0x0,
- 0x1,
+ 0x5,
+ 0x0,
+ 0x3,
0x0,
0x0,
0x2,
0x1,
- 0x2,
0x1,
0x1,
0x2,
+ 0x2,
+ 0x2,
0x0,
- 0x5,
+ 0x1,
+ 0x4,
0x2,
0x1,
- 0x7,
0x2,
0x3,
0x0,
+ 0x2,
+ 0x2,
0x4,
- 0x3,
0x2,
0x1,
0x2,
- 0x1,
- 0x1,
+ 0x2,
0x0,
0x0,
0x1,
0x0,
- 0x1,
+ 0x2,
0x0,
- 0x1,
+ 0x7,
0x1,
0x0,
- 0x3,
- 0x1,
- 0x1,
0x1,
+ 0x4,
+ 0x3,
+ 0x3,
0x1,
- 0x2,
+ 0x5,
0x1,
0x0,
0x0,
- 0x6,
+ 0x3,
0x0,
0x1,
- 0x1,
+ 0x6,
0x1,
0x0,
- 0x4,
- 0x4,
+ 0x2,
0xd,
+ 0x1,
0x0,
0x0,
0x4,
0x0,
+ 0xf,
0x2,
- 0x3,
0x0,
- 0x3,
+ 0xa,
+ 0x2,
+ 0x1,
+ 0x0,
0x1,
- 0xc,
0x0,
+ 0x4,
0x2,
0x0,
0x3,
- 0x1,
- 0x3,
0x0,
0x2,
- 0x5,
- 0xb,
0x0,
+ 0x7,
+ 0x2,
0x1,
0x0,
0x0,
- 0x1,
- 0x0,
0x3,
0x0,
- 0x0,
0x4,
0x0,
0x0,
- 0x2,
- 0x2,
- 0x3,
- 0x1,
+ 0xb,
+ 0x0,
+ 0x0,
+ 0xa,
+ 0x5,
+ 0x9,
0x1,
0x0,
+ 0x3,
0x1,
0x0,
+ 0xc,
0x0,
- 0x2,
0x0,
0x0,
0x0,
@@ -19778,243 +19907,247 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x1,
0x0,
0x2,
- 0x5,
- 0x3,
- 0x0,
- 0x1,
- 0x5,
0x1,
+ 0x2,
0x0,
0x1,
+ 0x3,
+ 0x2,
0x0,
+ 0x7,
0x0,
- 0x5,
0x0,
+ 0x3,
0x0,
- 0x8,
+ 0x0,
+ 0x6,
0x2,
0x0,
0x0,
- 0x3,
+ 0x6,
0x0,
0x0,
- 0x3,
+ 0x4,
+ 0x2,
+ 0x1,
+ 0x1,
0x0,
+ 0x7,
0x2,
+ 0x4,
+ 0x1,
+ 0x5,
0x0,
0x0,
0x1,
+ 0x2,
0x0,
0x2,
+ 0x3,
+ 0x8,
0x1,
+ 0x6,
0x2,
- 0x0,
- 0x0,
0x1,
- 0x0,
- 0x0,
0x1,
0x0,
0x3,
- 0x4,
+ 0x5,
+ 0x0,
0x2,
- 0x6,
0x1,
- 0x6,
+ 0x1,
0x3,
0x0,
- 0x2,
- 0x7,
0x3,
+ 0x7,
0x1,
- 0x1,
- 0x0,
- 0x2,
0x0,
0x1,
0x0,
- 0x1,
0x0,
0x0,
+ 0x3,
0x0,
0x1,
- 0x0,
- 0x2,
- 0x7,
- 0x3,
0x1,
- 0xa,
- 0x2,
- 0x0,
0x1,
+ 0x1,
+ 0x6,
+ 0x5,
+ 0x0,
+ 0x5,
0x4,
0x0,
- 0x3,
+ 0x0,
0x3,
0x1,
0x2,
0x0,
- 0xd,
- 0x2,
0x0,
- 0x1,
+ 0x2,
0x0,
+ 0x2,
+ 0x2,
0x0,
0x2,
0x0,
- 0x1,
+ 0x4,
0x1,
0x0,
0x2,
- 0x5,
+ 0x0,
0x4,
0x1,
0x1,
- 0x0,
+ 0x4,
+ 0x2,
0x1,
0x0,
- 0x0,
+ 0x1,
0x2,
- 0x3,
0x1,
+ 0x3,
0x0,
0x0,
0x1,
- 0x1,
- 0x2,
+ 0x0,
+ 0xb,
0x2,
0x0,
0x0,
- 0x7,
- 0x4,
+ 0x3,
+ 0x3,
+ 0x5,
0x1,
0x1,
+ 0x0,
+ 0x1,
0x2,
- 0x2,
- 0x2,
- 0x4,
0x1,
0x0,
0x0,
0x0,
- 0x3,
+ 0x8,
0x1,
+ 0x4,
0x3,
- 0x2,
0x0,
- 0x2,
+ 0x7,
0x1,
+ 0x3,
0x1,
- 0x2,
0x0,
- 0x4,
- 0x4,
0x2,
+ 0x3,
+ 0x3,
0x1,
0x0,
0x1,
0x1,
- 0x3,
0x1,
0x0,
+ 0x2,
0x0,
- 0x6,
0x1,
0x1,
0x1,
+ 0x4,
+ 0x2,
+ 0x5,
+ 0x0,
0x1,
0x1,
0x0,
- 0x2,
- 0x3,
- 0x3,
- 0x2,
+ 0x1,
0x2,
0x0,
0x0,
0x0,
- 0x1,
0x0,
+ 0x3,
0x1,
0x2,
0x1,
+ 0x3,
0x1,
- 0xa,
- 0x4,
+ 0x0,
+ 0x5,
0x2,
- 0x1,
+ 0x4,
0x0,
0x3,
0x0,
0x0,
- 0x2,
- 0x5,
- 0x5,
+ 0x1,
+ 0x3,
+ 0x7,
0x0,
0x6,
0x4,
0x0,
- 0x9,
+ 0x1,
+ 0x2,
0x2,
0x3,
- 0x4,
- 0x9,
+ 0x5,
0x0,
- 0x1,
- 0x1,
+ 0x8,
+ 0x3,
0x3,
- 0x1,
0x2,
+ 0x1,
0x7,
- 0xb,
+ 0x2,
0x1,
0x1,
0x1,
0x1,
- 0x5,
- 0x2,
0x0,
- 0x2,
- 0x6,
- 0x2,
- 0x4,
+ 0x8,
0x0,
+ 0x1,
+ 0x3,
0x0,
+ 0x2,
0x1,
+ 0x0,
0x1,
+ 0x2,
0x0,
0x0,
- 0x1,
+ 0x6,
+ 0x7,
0x1,
0x0,
- 0x2,
+ 0x3,
0x0,
0x0,
0x0,
- 0x5,
+ 0x1,
0x2,
0x0,
0x0,
0x1,
- 0x0,
0x1,
- 0x4,
+ 0x1,
0x0,
0x1,
- 0x3,
+ 0x4,
+ 0x2,
0x0,
0x0,
- 0x5,
+ 0x1,
0x0,
0x0,
0x0,
- 0x4,
- 0x1,
- 0x1,
0x5,
- 0x1,
+ 0x2,
0x3,
0x1,
+ 0x2,
+ 0x0,
+ 0x6,
0x1,
0x0,
0x1,
@@ -20022,16 +20155,16 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x0,
0x0,
- 0x1,
+ 0x2,
0x0,
- 0x4,
- 0x1,
+ 0x2,
+ 0x3,
0x0,
0x2,
- 0x4,
+ 0x7,
0x1,
0x0,
- 0x2,
+ 0x0,
0x2,
0x0,
0x0,
@@ -20039,210 +20172,214 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x0,
0x1,
- 0x3,
+ 0x1,
0x0,
0x0,
- 0x3,
+ 0x2,
0x0,
0x1,
0x0,
0x4,
- 0x6,
+ 0x2,
0x0,
+ 0x11,
0x5,
- 0x1,
+ 0x4,
0x0,
+ 0x4,
+ 0x0,
+ 0x0,
+ 0x2,
+ 0x0,
+ 0x7,
0x0,
0x1,
0x0,
0x0,
+ 0x1,
+ 0x5,
+ 0x1,
0x2,
0x2,
+ 0xe,
0x0,
- 0x2,
- 0x1,
0x0,
0x2,
- 0x2,
0x1,
- 0x2,
- 0x9,
- 0x5,
- 0x0,
0x0,
+ 0x1,
0x0,
0x3,
+ 0x1,
+ 0x2,
+ 0x1,
0x0,
+ 0xa,
0x1,
+ 0x4,
0x0,
0x5,
0x1,
- 0x8,
0x1,
- 0x0,
- 0x2,
0x1,
0x2,
- 0x0,
- 0x5,
- 0x2,
0x1,
0x1,
- 0x3,
- 0x2,
0x1,
- 0x5,
0x0,
0x0,
- 0x3,
- 0x3,
0x1,
+ 0x8,
0x1,
- 0x2,
+ 0x1,
+ 0x0,
0x1,
0x0,
0x0,
0x0,
- 0x3,
+ 0x0,
+ 0x1,
0x3,
0x1,
+ 0xf,
0x1,
- 0x3,
+ 0x2,
0x1,
0x1,
- 0x5,
0x0,
0x0,
0x2,
- 0x2,
- 0x0,
- 0x0,
- 0x0,
0x1,
- 0x2,
- 0x3,
0x0,
- 0x2,
0x0,
- 0x2,
- 0x4,
0x3,
- 0x2,
- 0x2,
- 0x0,
- 0x3,
- 0xc,
0x0,
0x1,
+ 0x0,
+ 0x0,
0x1,
0x0,
- 0x2,
0x5,
+ 0x7,
+ 0x2,
0x2,
+ 0x6,
0x0,
- 0x3,
0x1,
0x0,
+ 0x2,
0x1,
+ 0x4,
+ 0x0,
+ 0x2,
0x1,
- 0x5,
0x3,
0x2,
+ 0x2,
+ 0x1,
0x0,
0x3,
- 0x0,
- 0x4,
0x2,
- 0x0,
+ 0x4,
+ 0x3,
0x1,
+ 0x0,
0x1,
0x0,
- 0x2,
0x1,
0x1,
0x3,
0x0,
0x1,
- 0x1,
- 0x1,
- 0x0,
- 0x2,
- 0x0,
0x0,
0x2,
+ 0x6,
+ 0x5,
0x1,
+ 0x9,
0x0,
- 0x5,
- 0x2,
+ 0x3,
+ 0x1,
0x0,
+ 0x6,
0x0,
- 0x1,
- 0x1,
0x0,
0x3,
0x0,
+ 0x1,
0x0,
0x2,
0x2,
- 0x1,
- 0x3,
0x0,
0x3,
- 0x3,
- 0x2,
0x1,
+ 0x0,
0x1,
0x0,
+ 0x0,
+ 0x8,
0x1,
0x2,
- 0x3,
0x1,
0x0,
0x2,
- 0x7,
+ 0x4,
0x1,
+ 0x2,
+ 0x1,
+ 0x5,
+ 0x0,
+ 0x1,
+ 0x2,
+ 0x2,
0x1,
0x0,
- 0x3,
0x1,
0x1,
0x2,
0x1,
0x0,
- 0xb,
+ 0x2,
+ 0x3,
0x1,
+ 0x1,
+ 0x3,
0x0,
- 0x6,
+ 0x1,
+ 0x1,
0x0,
- 0x3,
- 0xc,
0x5,
0x0,
- 0x4,
- 0xa,
0x2,
+ 0x6,
+ 0x1,
0x0,
- 0x8,
- 0x2,
+ 0x4,
+ 0x0,
+ 0x1,
0x0,
0x0,
- 0x3,
0x1,
0x2,
+ 0x0,
+ 0x3,
+ 0x0,
+ 0x1,
0x1,
0x0,
0x0,
0x2,
0x0,
0x2,
- 0x4,
+ 0x0,
0x1,
0x0,
0x0,
0x0,
- 0x4,
+ 0x2,
0x0,
- 0x9,
+ 0x0,
+ 0x1,
0x3,
0x2,
0x0,
@@ -20250,239 +20387,243 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x1,
0x0,
- 0x3,
- 0x0,
+ 0x4,
0x0,
0x0,
0x1,
- 0x0,
0x1,
0x0,
0x2,
+ 0x0,
0x2,
- 0x5,
+ 0x1,
+ 0x1,
+ 0x1,
+ 0x0,
0x0,
- 0x5,
0x0,
0x0,
0x0,
+ 0xb,
+ 0x4,
0x0,
0x1,
- 0x3,
- 0x3,
0x0,
+ 0x1,
+ 0x5,
0x0,
0x1,
0x1,
0x0,
- 0x2,
- 0x3,
- 0x0,
- 0x1,
+ 0x5,
0x1,
0x0,
+ 0x2,
0x4,
- 0x0,
- 0x1,
0x1,
0x1,
- 0x3,
0x2,
- 0x7,
+ 0x1,
+ 0x1,
+ 0x1,
0x0,
0x0,
0x0,
0x0,
- 0x2,
+ 0x0,
+ 0x6,
0x0,
0x2,
- 0x2,
- 0x2,
+ 0x3,
+ 0x0,
0x1,
0x2,
- 0x2,
- 0x5,
+ 0x3,
0x0,
+ 0x0,
+ 0x3,
+ 0x2,
0x4,
- 0x8,
0x0,
- 0x1,
0x3,
- 0x5,
0x0,
- 0x1,
0x0,
- 0x4,
+ 0x1,
0x0,
0x3,
- 0x1,
0x0,
- 0x4,
+ 0xd,
0x2,
0x0,
- 0x0,
- 0x5,
0x3,
+ 0x1,
+ 0x0,
+ 0x0,
+ 0x1,
+ 0x1,
0x3,
0x0,
0x1,
0x0,
0x4,
- 0x3,
- 0x3,
- 0x2,
+ 0xd,
+ 0x4,
0x1,
- 0x3,
+ 0x6,
+ 0x2,
0x3,
0x0,
- 0x2,
0x3,
- 0x2,
0x1,
+ 0x0,
0x2,
0x1,
+ 0x2,
0x0,
+ 0x1,
0x3,
- 0xc,
0x1,
+ 0x2,
+ 0x0,
0x1,
0x2,
0x0,
0x3,
- 0x0,
- 0x2,
+ 0x1,
0x1,
0x0,
- 0x4,
- 0x4,
0x1,
0x2,
- 0x0,
0x1,
- 0x0,
- 0x3,
0x3,
- 0x3,
- 0x1,
0x2,
0x0,
+ 0x0,
+ 0x1,
+ 0x1,
+ 0x0,
+ 0x1,
0x1,
- 0x12,
0x3,
+ 0x4,
+ 0x1,
0x2,
+ 0x3,
0x0,
0x2,
- 0xa,
- 0x5,
+ 0x3,
+ 0x2,
0x1,
0x1,
+ 0x7,
0x2,
- 0xd,
0x0,
- 0x2,
+ 0x1,
0x0,
0x0,
0x2,
0x0,
- 0x1,
0x2,
- 0x4,
- 0x3,
+ 0x5,
+ 0x1,
+ 0x1,
0x0,
0x0,
0x1,
0x1,
- 0x1,
+ 0x2,
0x0,
0x1,
- 0x1,
+ 0x3,
0x0,
0x1,
- 0x5,
+ 0x2,
0x0,
0x0,
+ 0x5,
+ 0x0,
0x2,
- 0x1,
0x0,
0x1,
- 0xb,
0x0,
0x1,
- 0x8,
+ 0x3,
0x1,
0x0,
0x0,
+ 0x3,
+ 0x5,
+ 0x5,
0x0,
0x1,
- 0x0,
- 0x0,
+ 0x3,
0x1,
0x2,
- 0x1,
0x0,
0x0,
0x3,
- 0x6,
- 0x1,
+ 0x2,
0x0,
0x0,
0x0,
- 0x4,
0x0,
0x4,
- 0x1,
0x0,
0x1,
+ 0x6,
+ 0x0,
0x1,
0x1,
+ 0x2,
0x1,
0x0,
- 0x2,
- 0x2,
0x1,
0x4,
- 0x8,
0x1,
+ 0x2,
+ 0x1,
+ 0x8,
0x1,
0x1,
0x0,
0x0,
- 0x2,
+ 0x4,
0x0,
0x0,
0x4,
0x0,
0x0,
- 0x2,
+ 0x3,
0x0,
- 0x4,
- 0x1,
- 0x2,
0x2,
+ 0x1,
+ 0x7,
+ 0x1,
0x0,
0x6,
0x0,
0x1,
0x0,
0x0,
- 0x4,
- 0x0,
0x1,
0x0,
- 0x1,
+ 0x6,
+ 0x3,
+ 0x2,
0x0,
0x0,
0x0,
0x0,
+ 0x5,
0x1,
- 0x1,
- 0x2,
0x0,
- 0x1,
+ 0x3,
0x0,
+ 0x1,
0x0,
0x1,
- 0x3,
+ 0x1,
+ 0x1,
0x1,
0x0,
0x0,
@@ -20490,3954 +20631,4019 @@ pub(crate) const COMPATIBILITY_DECOMPOSED_SALT: &[u16] = &[
0x0,
0x0,
0x0,
- 0x2,
+ 0x4,
+ 0x0,
+ 0x1,
0x0,
+ 0x3,
0x2,
- 0x4,
- 0x5,
0x0,
- 0x6,
0x0,
0x0,
- 0x5,
- 0x2,
0x3,
+ 0x8,
+ 0x7,
0x0,
0x0,
0x0,
0x2,
- 0x2,
+ 0x1,
+ 0x0,
0x0,
0x0,
0x0,
0x2,
- 0x3,
0x0,
0x1,
- 0x8,
- 0xa,
- 0x3,
- 0x0,
+ 0x2,
0x0,
0x1,
0x0,
+ 0x0,
0x1,
- 0x3,
0x1,
0x2,
+ 0x3,
+ 0x1,
0x1,
0x0,
- 0x4,
+ 0x2,
+ 0x7,
0x4,
0x0,
0x0,
- 0x1,
+ 0x6,
+ 0x0,
0x0,
0x0,
0x0,
0x1,
- 0x8,
+ 0x0,
+ 0x2,
0x1,
0x0,
- 0x3,
- 0x4,
- 0x3,
0x2,
0x1,
+ 0x3,
0x1,
- 0x4,
+ 0x2,
0x0,
0x1,
- 0x1,
+ 0x4,
+ 0x2,
+ 0x2,
0x1,
0x0,
- 0x1,
- 0xc,
+ 0x2,
0x0,
0x0,
0x0,
- 0x3,
- 0x3,
0x1,
- 0x7,
- 0x3,
+ 0x0,
+ 0x6,
+ 0x8,
+ 0x5,
0x1,
0x0,
- 0x3,
+ 0x8,
0x0,
0x6,
- 0x2,
- 0x0,
0x1,
0x0,
- 0x2,
+ 0xc,
+ 0x3,
+ 0x5,
0x0,
- 0x4,
- 0x4,
0x2,
0x1,
- 0x1,
0x5,
0x1,
0x1,
- 0x1,
- 0x2,
- 0x3,
- 0x0,
+ 0x4,
0x3,
0x1,
+ 0x1,
+ 0x5,
+ 0x6,
+ 0x1,
+ 0x2,
+ 0x7,
0x3,
0x2,
0x0,
- 0xf,
+ 0x0,
+ 0x1,
0x0,
0x1,
0x2,
- 0x5,
0x1,
0x1,
- 0x0,
- 0x2,
0x1,
+ 0x0,
0x1,
+ 0x2,
+ 0x2,
0x0,
- 0x4,
- 0x3,
- 0x3,
+ 0x2,
0x3,
- 0x4,
0x1,
0x1,
0x0,
0x1,
+ 0x0,
0x1,
- 0x1,
+ 0x5,
+ 0x5,
+ 0x2,
0x0,
0x0,
0x1,
- 0x1,
0x2,
+ 0x4,
0x1,
- 0x7,
0x0,
- 0x6,
- 0x6,
- 0xc,
+ 0x0,
0x1,
0x3,
- 0x3,
- 0x0,
+ 0x8,
0x1,
- 0x2,
+ 0x6,
+ 0x0,
+ 0x0,
+ 0x3,
0x1,
0x1,
0x1,
0x1,
0x2,
- 0x0,
0x1,
0x0,
- 0x6,
- 0x7,
+ 0x5,
+ 0x0,
0x1,
- 0x6,
+ 0x0,
+ 0x5,
0x1,
- 0x2,
- 0x4,
0x4,
- 0x3,
- 0x2,
- 0x0,
+ 0x1,
+ 0x8,
0x0,
+ 0x1,
0x4,
0x0,
- 0x1,
- 0x2,
0x0,
- 0x3,
0x2,
0x0,
+ 0x3,
+ 0x1,
0x0,
0x1,
+ 0x2,
+ 0x2,
0x0,
- 0x3,
+ 0x2,
0x0,
0x0,
0x1,
0x0,
0x5,
0x3,
+ 0x1,
+ 0x2,
0x3,
- 0x0,
0x1,
+ 0xc,
+ 0x3,
0x0,
- 0x2,
0x1,
0x0,
0x0,
0x0,
0x0,
- 0x2,
0x0,
+ 0x3,
0x0,
0x1,
- 0x1,
- 0x1,
+ 0x5,
+ 0x3,
+ 0x2,
0x1,
0x0,
- 0x1,
- 0x1,
+ 0x3,
+ 0x2,
0x0,
];
pub(crate) const COMPATIBILITY_DECOMPOSED_KV: &[(u32, (u16, u16))] = &[
- (0xfee5, (3971, 1)),
- (0x332a, (1837, 3)),
- (0x1d40e, (4305, 1)),
- (0xfc8f, (2976, 2)),
- (0xff18, (4032, 1)),
+ (0x1d5e5, (4752, 1)),
+ (0x1d430, (4339, 1)),
+ (0xfca0, (3015, 2)),
+ (0x1d769, (5138, 1)),
+ (0xfe55, (3808, 1)),
(0xfd72, (3438, 3)),
(0xb2, (6, 1)),
- (0x1d5c5, (4720, 1)),
- (0x1d43f, (4354, 1)),
+ (0x333b, (1909, 5)),
+ (0xfbae, (2585, 1)),
(0x1d727, (5072, 1)),
- (0x3256, (1432, 2)),
- (0x3289, (1514, 1)),
+ (0x246d, (573, 2)),
+ (0x332c, (1846, 4)),
(0x1d79a, (5187, 1)),
- (0x24e1, (830, 1)),
- (0xfc9e, (3011, 2)),
- (0x207d, (332, 1)),
- (0xff66, (4110, 1)),
- (0xff47, (4079, 1)),
+ (0xfd81, (3483, 3)),
+ (0xff07, (4015, 1)),
+ (0x1d76b, (5140, 1)),
+ (0x2fb1, (1034, 1)),
+ (0x1d4ef, (4518, 1)),
(0x3193, (1179, 1)),
(0xfbec, (2621, 3)),
(0x1d410, (4307, 1)),
(0x2177, (527, 4)),
- (0x107a1, (4266, 1)),
- (0xfd63, (3393, 3)),
- (0x330c, (1717, 4)),
+ (0xfcfa, (3200, 2)),
+ (0x1ee8e, (5451, 1)),
+ (0xfed8, (3958, 1)),
(0x32b8, (1568, 2)),
- (0x3218, (1274, 4)),
- (0x1d703, (5036, 1)),
+ (0xfb7f, (2536, 1)),
+ (0x1d5f4, (4767, 1)),
(0x33e0, (2351, 2)),
+ (0x1e055, (5324, 1)),
(0xffac, (4180, 1)),
(0x1e9a, (234, 2)),
- (0xff9b, (4163, 1)),
- (0x2101, (368, 3)),
- (0x2f93, (1004, 1)),
+ (0xfdf7, (3716, 4)),
+ (0x1d493, (4437, 1)),
+ (0x2085, (340, 1)),
(0x2148, (433, 1)),
- (0x32cc, (1611, 2)),
+ (0x1d4e9, (4512, 1)),
(0x1d73c, (5093, 1)),
(0x1da8, (210, 1)),
(0xfeba, (3928, 1)),
- (0x1f127, (5519, 3)),
(0x1d48e, (4432, 1)),
- (0x1d531, (4579, 1)),
- (0x1d623, (4814, 1)),
- (0x2492, (679, 3)),
- (0x1d798, (5185, 1)),
- (0x1db8, (226, 1)),
- (0x2fc2, (1051, 1)),
- (0x1d594, (4671, 1)),
+ (0x1ee6c, (5422, 1)),
+ (0x1d628, (4819, 1)),
+ (0x1d6d1, (4986, 1)),
+ (0x2130, (413, 1)),
+ (0xff6c, (4116, 1)),
+ (0x1d7b4, (5213, 1)),
+ (0x1da4, (206, 1)),
+ (0x1e061, (5336, 1)),
(0x3224, (1319, 3)),
- (0xffdb, (4218, 1)),
+ (0x3229, (1334, 3)),
(0x1d7ff, (5286, 1)),
- (0x1d4bd, (4469, 1)),
+ (0x1d657, (4866, 1)),
(0xfee9, (3975, 1)),
- (0x2fa2, (1019, 1)),
+ (0x32f6, (1659, 1)),
(0xfc13, (2716, 2)),
- (0xff34, (4060, 1)),
- (0xfda8, (3594, 3)),
- (0x1d560, (4619, 1)),
+ (0x1d46e, (4400, 1)),
+ (0x2472, (583, 2)),
+ (0x1d6ba, (4963, 1)),
(0xfd05, (3222, 2)),
- (0xffb4, (4188, 1)),
- (0x1d5a8, (4691, 1)),
+ (0x33d7, (2328, 2)),
+ (0xfc17, (2724, 2)),
(0x2170, (513, 1)),
- (0x1ee75, (5368, 1)),
+ (0xfd1c, (3268, 2)),
(0x3382, (2123, 2)),
- (0xff5d, (4101, 1)),
- (0x1ee95, (5396, 1)),
- (0x3325, (1824, 3)),
- (0x1d672, (4893, 1)),
- (0xfceb, (3167, 2)),
+ (0x1d764, (5133, 1)),
+ (0x1ee95, (5458, 1)),
+ (0x2f24, (893, 1)),
+ (0x32e5, (1642, 1)),
+ (0x1d409, (4300, 1)),
(0x1d43, (157, 1)),
- (0xfec2, (3936, 1)),
- (0x2f15, (878, 1)),
+ (0x1d597, (4674, 1)),
+ (0x2f81, (986, 1)),
(0xfc4a, (2826, 2)),
- (0x1d6b3, (4956, 1)),
+ (0x1d713, (5052, 1)),
(0x1d7a1, (5194, 1)),
- (0x1d47b, (4413, 1)),
+ (0xff74, (4124, 1)),
(0xff7d, (4133, 1)),
- (0x1d4fb, (4530, 1)),
- (0xfca7, (3029, 2)),
- (0x2f7d, (982, 1)),
+ (0x2483, (638, 4)),
+ (0x3323, (1817, 3)),
+ (0x1e059, (5328, 1)),
(0x1d558, (4611, 1)),
+ (0xfc37, (2788, 2)),
(0x2f64, (957, 1)),
- (0xfb78, (2529, 1)),
+ (0xfe58, (3811, 1)),
(0x32ee, (1651, 1)),
- (0x326e, (1466, 2)),
+ (0xfc6a, (2902, 2)),
(0x1d466, (4392, 1)),
- (0xfd5c, (3372, 3)),
(0x207e, (333, 1)),
- (0x1078c, (4245, 1)),
- (0x1ee37, (5335, 1)),
- (0x24d7, (820, 1)),
- (0x1eeb6, (5422, 1)),
- (0x1d576, (4641, 1)),
- (0x2f27, (896, 1)),
+ (0x1e050, (5319, 1)),
+ (0x1d5ed, (4760, 1)),
+ (0xfc97, (2992, 3)),
+ (0x1d791, (5178, 1)),
+ (0x1d7bd, (5222, 1)),
+ (0x314d, (1112, 1)),
+ (0x33aa, (2219, 3)),
(0xfc0c, (2702, 2)),
- (0x325e, (1448, 2)),
- (0xfc40, (2806, 2)),
- (0x1d772, (5147, 1)),
- (0x1d5cd, (4728, 1)),
+ (0x2f47, (928, 1)),
+ (0x3230, (1355, 3)),
+ (0xfdc6, (3684, 3)),
+ (0x1d614, (4799, 1)),
(0x3291, (1522, 1)),
- (0x2f26, (895, 1)),
- (0x2e9f, (855, 1)),
- (0x1d467, (4393, 1)),
- (0x33cf, (2309, 2)),
- (0x3251, (1422, 2)),
- (0xfb8e, (2551, 1)),
- (0x1d65e, (4873, 1)),
- (0x1db5, (223, 1)),
- (0x1d5b6, (4705, 1)),
- (0x313e, (1097, 1)),
- (0xffd4, (4213, 1)),
- (0x1d56c, (4631, 1)),
- (0xfe4d, (3801, 1)),
- (0x1d426, (4329, 1)),
+ (0xfe31, (3771, 1)),
+ (0x1d706, (5039, 1)),
+ (0xfe78, (3842, 2)),
+ (0x325a, (1440, 2)),
+ (0x2f84, (989, 1)),
+ (0xfca1, (3017, 2)),
+ (0x24bb, (792, 1)),
+ (0x2094, (354, 1)),
+ (0x1d4f8, (4527, 1)),
+ (0xfcfe, (3208, 2)),
+ (0x1d487, (4425, 1)),
+ (0x1d6fd, (5030, 1)),
+ (0x1d559, (4612, 1)),
+ (0x2074, (323, 1)),
(0x2112, (391, 1)),
- (0xfe44, (3790, 1)),
- (0x1d57a, (4645, 1)),
+ (0xfcd5, (3121, 2)),
+ (0x2f06, (863, 1)),
(0x107ba, (4290, 1)),
- (0x1dbf, (233, 1)),
- (0xfb24, (2481, 1)),
+ (0xa7f4, (2443, 1)),
+ (0x24bf, (796, 1)),
(0x1d49c, (4446, 1)),
- (0xfc34, (2782, 2)),
- (0x1d579, (4644, 1)),
- (0x1f220, (5606, 1)),
- (0xfec1, (3935, 1)),
+ (0x1d63c, (4839, 1)),
+ (0x32a2, (1539, 1)),
+ (0x1f220, (5668, 1)),
+ (0x1d60f, (4794, 1)),
(0x32d5, (1626, 1)),
(0xfcec, (3169, 2)),
- (0x2f89, (994, 1)),
- (0x33c1, (2276, 2)),
- (0xfc03, (2682, 3)),
+ (0xfc49, (2824, 2)),
+ (0xfe70, (3830, 2)),
+ (0x2f45, (926, 1)),
(0x33b8, (2258, 2)),
- (0x248a, (662, 2)),
+ (0x2e2, (85, 1)),
+ (0x2fba, (1043, 1)),
(0x32c6, (1596, 2)),
- (0x208c, (347, 1)),
- (0x1d680, (4907, 1)),
- (0x1d58c, (4663, 1)),
+ (0x1ee87, (5445, 1)),
+ (0xffb3, (4187, 1)),
(0xfb71, (2522, 1)),
- (0x3039, (1074, 1)),
- (0x2138, (420, 1)),
- (0x320c, (1228, 3)),
- (0x1d46d, (4399, 1)),
+ (0xff0b, (4019, 1)),
+ (0xfd26, (3288, 2)),
+ (0xfc63, (2881, 3)),
+ (0x3131, (1084, 1)),
+ (0xff6f, (4119, 1)),
(0x24b9, (790, 1)),
(0x32b1, (1554, 2)),
- (0x1d66a, (4885, 1)),
- (0x2475, (590, 3)),
- (0x1d403, (4294, 1)),
- (0x1db6, (224, 1)),
- (0x1d473, (4405, 1)),
+ (0xfda0, (3570, 3)),
+ (0x1d72e, (5079, 1)),
+ (0x1d64d, (4856, 1)),
+ (0xfb8f, (2552, 1)),
+ (0x1e03c, (5299, 1)),
(0xfd39, (3326, 2)),
(0xfd8b, (3513, 3)),
(0x1079a, (4259, 1)),
(0xfb95, (2558, 1)),
(0x107af, (4280, 1)),
- (0xff35, (4061, 1)),
- (0x209b, (361, 1)),
- (0x319e, (1190, 1)),
+ (0x1f16c, (5642, 2)),
+ (0x1d793, (5180, 1)),
(0x1d437, (4346, 1)),
- (0x10788, (4241, 1)),
- (0x1ee22, (5319, 1)),
+ (0x3282, (1507, 1)),
+ (0xbe, (21, 3)),
+ (0x2c7d, (853, 1)),
(0xfec8, (3942, 1)),
- (0x1d52d, (4575, 1)),
- (0xfd79, (3459, 3)),
+ (0xfc99, (2998, 3)),
+ (0x337d, (2111, 2)),
(0x3290, (1521, 1)),
- (0x32ef, (1652, 1)),
(0x2f0d, (870, 1)),
- (0x1d6a1, (4940, 1)),
- (0x1d6b8, (4961, 1)),
- (0xfc70, (2914, 2)),
- (0xfcb6, (3059, 2)),
- (0x2f11, (874, 1)),
- (0x1d781, (5162, 1)),
- (0x1d6d1, (4986, 1)),
- (0x3305, (1692, 3)),
+ (0x1d6be, (4967, 1)),
+ (0x1d5c6, (4721, 1)),
+ (0xff38, (4064, 1)),
+ (0xfda9, (3597, 3)),
+ (0x1d690, (4923, 1)),
+ (0x1d42d, (4336, 1)),
+ (0x1d524, (4566, 1)),
+ (0x3f5, (108, 1)),
+ (0x1d68f, (4922, 1)),
(0x1d5af, (4698, 1)),
- (0x1d431, (4340, 1)),
+ (0xfd5e, (3378, 3)),
(0xfef7, (3993, 3)),
(0x33e8, (2367, 2)),
- (0xfcc5, (3089, 2)),
- (0x24a9, (748, 3)),
- (0x1d38, (147, 1)),
- (0xfb9a, (2563, 1)),
- (0xfb21, (2478, 1)),
- (0x1f245, (5649, 3)),
- (0x33ee, (2384, 3)),
- (0x1d685, (4912, 1)),
+ (0x1d4cc, (4483, 1)),
+ (0x1d42f, (4338, 1)),
+ (0xfe10, (3757, 1)),
+ (0x1d57e, (4649, 1)),
+ (0x107b7, (4287, 1)),
+ (0x1d499, (4443, 1)),
+ (0x1ee0f, (5363, 1)),
+ (0xfc96, (2990, 2)),
(0x1d4d2, (4489, 1)),
- (0x328a, (1515, 1)),
- (0x1d694, (4927, 1)),
- (0x1d7b9, (5218, 1)),
+ (0xffe9, (4229, 1)),
+ (0xffa5, (4173, 1)),
+ (0x3299, (1530, 1)),
(0x1d5c4, (4719, 1)),
- (0x1d6b6, (4959, 1)),
- (0x2f4d, (934, 1)),
+ (0xfe5c, (3815, 1)),
+ (0x17f, (34, 1)),
(0x1d7ea, (5265, 1)),
- (0x33d0, (2311, 2)),
+ (0x1d4b0, (4458, 1)),
(0x1d5be, (4713, 1)),
(0x33d9, (2334, 3)),
(0x32e7, (1644, 1)),
- (0x1d4e3, (4506, 1)),
+ (0x1d6e2, (5003, 1)),
+ (0xffad, (4181, 1)),
(0xfcae, (3043, 2)),
- (0x3147, (1106, 1)),
- (0x2121, (403, 3)),
- (0x1d561, (4620, 1)),
- (0x1d41e, (4321, 1)),
+ (0xfcda, (3131, 2)),
+ (0xfc1b, (2732, 2)),
+ (0x2f62, (955, 1)),
+ (0x320a, (1222, 3)),
(0x3f9, (109, 1)),
- (0xff86, (4142, 1)),
(0xfdc1, (3669, 3)),
- (0xff20, (4040, 1)),
- (0xfedd, (3963, 1)),
- (0x1f228, (5614, 1)),
- (0x1d6ae, (4951, 1)),
- (0xff65, (4109, 1)),
- (0xfc78, (2930, 2)),
- (0xfdaf, (3615, 3)),
- (0x1f11b, (5483, 3)),
- (0xfc51, (2840, 2)),
- (0x3223, (1316, 3)),
- (0x2f3f, (920, 1)),
- (0x1d4e9, (4512, 1)),
+ (0x2f72, (971, 1)),
+ (0x316d, (1144, 1)),
+ (0x322b, (1340, 3)),
+ (0x2157, (457, 3)),
+ (0x1d659, (4868, 1)),
+ (0x1d3c, (150, 1)),
+ (0x333e, (1923, 4)),
+ (0x217e, (541, 1)),
+ (0x1f11b, (5545, 3)),
+ (0x1ee74, (5429, 1)),
+ (0x1d458, (4378, 1)),
+ (0xfbfa, (2663, 3)),
(0xfeb3, (3921, 1)),
(0xfb5f, (2504, 1)),
+ (0x2fc9, (1058, 1)),
(0x315a, (1125, 1)),
- (0xedd, (126, 2)),
- (0x2e0, (83, 1)),
+ (0x1d4a9, (4452, 1)),
+ (0xfd31, (3310, 2)),
(0x3139, (1092, 1)),
- (0x1c4, (35, 3)),
+ (0x1db0, (218, 1)),
(0x1d4f3, (4522, 1)),
- (0x24c8, (805, 1)),
- (0xfd1a, (3264, 2)),
- (0xfbdd, (2601, 2)),
- (0xfe57, (3810, 1)),
- (0x1ee94, (5395, 1)),
- (0x1d6d7, (4992, 1)),
- (0xfdf5, (3708, 4)),
- (0x1f13c, (5549, 1)),
+ (0xfccf, (3109, 2)),
+ (0xfb80, (2537, 1)),
+ (0xfc6e, (2910, 2)),
+ (0x1d768, (5137, 1)),
+ (0x2b6, (68, 1)),
+ (0x333a, (1905, 4)),
+ (0x1d7c9, (5234, 1)),
+ (0x1f13c, (5611, 1)),
(0x1d6a2, (4941, 1)),
(0x2006, (281, 1)),
(0x1d445, (4360, 1)),
- (0x2fc4, (1053, 1)),
- (0x2f0a, (867, 1)),
- (0x3180, (1163, 1)),
- (0x2f14, (877, 1)),
- (0xfe6a, (3828, 1)),
- (0x1d765, (5134, 1)),
- (0xfe59, (3812, 1)),
+ (0x1d763, (5132, 1)),
+ (0x1d5fa, (4773, 1)),
+ (0x3241, (1406, 3)),
+ (0xfe4a, (3795, 2)),
+ (0x326d, (1465, 1)),
+ (0x1d6c2, (4971, 1)),
+ (0xfd7d, (3471, 3)),
(0x3370, (2080, 3)),
- (0x1d718, (5057, 1)),
+ (0x1d6bb, (4964, 1)),
(0x1d78f, (5176, 1)),
- (0xfb00, (2451, 2)),
- (0x1d6ac, (4949, 1)),
+ (0x1d4e6, (4509, 1)),
+ (0xff12, (4026, 1)),
(0xfb05, (2463, 2)),
- (0x1ee1b, (5313, 1)),
- (0x216a, (504, 2)),
- (0x1d628, (4819, 1)),
- (0x32a3, (1540, 1)),
- (0x3366, (2050, 3)),
- (0x1d514, (4552, 1)),
+ (0x1ee1b, (5375, 1)),
+ (0x1d609, (4788, 1)),
+ (0xfe79, (3844, 2)),
+ (0xfbf6, (2651, 3)),
+ (0x1d780, (5161, 1)),
+ (0xfd38, (3324, 2)),
(0x1d4de, (4501, 1)),
(0x3182, (1165, 1)),
- (0x1d546, (4597, 1)),
- (0x1d7f0, (5271, 1)),
- (0x1d458, (4378, 1)),
- (0xfba4, (2573, 2)),
- (0x3225, (1322, 3)),
- (0x1ee15, (5307, 1)),
- (0x1d4af, (4457, 1)),
- (0xfc7e, (2942, 2)),
- (0x1d6f4, (5021, 1)),
- (0x1d7ed, (5268, 1)),
- (0x1d5fd, (4776, 1)),
- (0x3240, (1403, 3)),
- (0x3295, (1526, 1)),
- (0x2fc8, (1057, 1)),
- (0x1d4d9, (4496, 1)),
- (0x1d57c, (4647, 1)),
- (0x1ee79, (5371, 1)),
- (0xfd8c, (3516, 3)),
+ (0xfe48, (3792, 1)),
+ (0xfe5e, (3817, 1)),
+ (0x1ee1c, (5376, 1)),
+ (0x3319, (1774, 6)),
+ (0x323f, (1400, 3)),
+ (0x2f03, (860, 1)),
+ (0x1d566, (4625, 1)),
+ (0xfcf3, (3184, 3)),
+ (0x1d581, (4652, 1)),
+ (0x1d6eb, (5012, 1)),
+ (0x1e047, (5310, 1)),
+ (0x3301, (1675, 4)),
+ (0x2fa8, (1025, 1)),
+ (0x249b, (706, 3)),
+ (0xff70, (4120, 1)),
+ (0x1f219, (5661, 1)),
+ (0x1d441, (4356, 1)),
+ (0xfce9, (3163, 2)),
(0x32cd, (1613, 3)),
+ (0x1d70d, (5046, 1)),
(0xff61, (4105, 1)),
- (0x210f, (388, 1)),
+ (0x2496, (691, 3)),
(0x1d416, (4313, 1)),
- (0xff90, (4152, 1)),
+ (0x3390, (2154, 2)),
(0x1d756, (5119, 1)),
- (0x1d78b, (5172, 1)),
- (0xfd13, (3250, 2)),
+ (0x1e04a, (5313, 1)),
+ (0xfc6b, (2904, 2)),
(0xfc50, (2838, 2)),
- (0x24af, (766, 3)),
(0x1d572, (4637, 1)),
- (0xfc87, (2960, 2)),
- (0x1d629, (4820, 1)),
- (0x1d693, (4926, 1)),
- (0x24ca, (807, 1)),
- (0x1f21e, (5604, 1)),
+ (0xffce, (4209, 1)),
+ (0x2f12, (875, 1)),
+ (0xff95, (4157, 1)),
+ (0xfb99, (2562, 1)),
+ (0xff46, (4078, 1)),
+ (0xfdb7, (3639, 3)),
(0x2156, (454, 3)),
- (0x1d452, (4373, 1)),
- (0x203c, (306, 2)),
- (0x1d46a, (4396, 1)),
- (0x10781, (4235, 1)),
- (0x3226, (1325, 3)),
- (0x1d72e, (5079, 1)),
- (0x1d621, (4812, 1)),
- (0xfb8d, (2550, 1)),
- (0x1d510, (4548, 1)),
- (0x3239, (1382, 3)),
+ (0xff52, (4090, 1)),
+ (0x1f241, (5699, 3)),
+ (0x1d40f, (4306, 1)),
+ (0x1d440, (4355, 1)),
+ (0x3f1, (105, 1)),
+ (0x2078, (327, 1)),
+ (0x1d66c, (4887, 1)),
+ (0x1f13e, (5613, 1)),
+ (0xfc24, (2750, 2)),
+ (0xfe96, (3892, 1)),
(0x1d460, (4386, 1)),
(0x1d6c9, (4978, 1)),
(0x3330, (1865, 3)),
(0x2f95, (1006, 1)),
- (0x1fbf4, (5667, 1)),
- (0xff9a, (4162, 1)),
- (0x1d635, (4832, 1)),
+ (0x1d71e, (5063, 1)),
+ (0x1d51e, (4560, 1)),
+ (0x10782, (4236, 1)),
(0xfc26, (2754, 2)),
- (0x1d763, (5132, 1)),
- (0x32bf, (1582, 2)),
- (0xfd53, (3345, 3)),
- (0xfc5d, (2864, 2)),
+ (0xfd1e, (3272, 2)),
+ (0x2145, (430, 1)),
+ (0x327b, (1492, 2)),
+ (0xfcbc, (3071, 2)),
(0xff39, (4065, 1)),
(0xfc9c, (3007, 2)),
- (0x321e, (1301, 6)),
- (0xfb01, (2453, 2)),
- (0x212c, (410, 1)),
- (0x1d7b6, (5215, 1)),
- (0x1d67, (192, 1)),
- (0xfe41, (3787, 1)),
- (0x1f12a, (5528, 3)),
- (0x32b2, (1556, 2)),
+ (0xfe62, (3821, 1)),
+ (0x1d41c, (4319, 1)),
+ (0x1d691, (4924, 1)),
+ (0x1d488, (4426, 1)),
+ (0x1ee4f, (5406, 1)),
+ (0x1d5e4, (4751, 1)),
+ (0x1e03d, (5300, 1)),
+ (0xfd55, (3351, 3)),
(0xfcbd, (3073, 2)),
(0x3297, (1528, 1)),
- (0x1d5d2, (4733, 1)),
- (0x1d607, (4786, 1)),
- (0xff97, (4159, 1)),
- (0x1d53c, (4589, 1)),
- (0x32cb, (1608, 3)),
- (0x1eeaf, (5415, 1)),
- (0xfcdd, (3137, 2)),
- (0x33fa, (2420, 3)),
- (0xfd6e, (3426, 3)),
- (0x3369, (2059, 3)),
- (0x3265, (1457, 1)),
+ (0x1d5e0, (4747, 1)),
+ (0x3192, (1178, 1)),
+ (0x32d2, (1623, 1)),
+ (0x2f9e, (1015, 1)),
+ (0xfd1a, (3264, 2)),
+ (0x32e6, (1643, 1)),
+ (0x1eeaf, (5477, 1)),
+ (0x24d6, (819, 1)),
+ (0xfef4, (3986, 1)),
+ (0x1ee72, (5428, 1)),
+ (0x1d5d3, (4734, 1)),
+ (0xfd0c, (3236, 2)),
(0x1d66b, (4886, 1)),
- (0xfc07, (2692, 2)),
- (0x32eb, (1648, 1)),
- (0xfd56, (3354, 3)),
+ (0xff5a, (4098, 1)),
+ (0xfe57, (3810, 1)),
+ (0xfb6a, (2515, 1)),
(0x1d44c, (4367, 1)),
- (0x1d68c, (4919, 1)),
- (0x10787, (4240, 1)),
+ (0x2474, (587, 3)),
+ (0xfdb3, (3627, 3)),
(0xfb92, (2555, 1)),
- (0xff44, (4076, 1)),
- (0xfc23, (2748, 2)),
- (0x1d570, (4635, 1)),
- (0x1ee52, (5346, 1)),
+ (0x2098, (358, 1)),
+ (0x1d5a9, (4692, 1)),
+ (0x24b6, (787, 1)),
+ (0x1d626, (4817, 1)),
(0xab69, (2450, 1)),
- (0x3140, (1099, 1)),
- (0xfd70, (3432, 3)),
- (0xfeac, (3914, 1)),
+ (0x1d630, (4827, 1)),
+ (0xfb6c, (2517, 1)),
+ (0x1d76f, (5144, 1)),
(0x3155, (1120, 1)),
- (0xfc14, (2718, 2)),
- (0xfc2d, (2768, 2)),
+ (0xfe97, (3893, 1)),
+ (0x1dbb, (229, 1)),
(0x33bd, (2268, 2)),
(0x1d54c, (4600, 1)),
- (0xfbff, (2672, 1)),
- (0x3d0, (95, 1)),
- (0x1d574, (4639, 1)),
- (0x1f112, (5456, 3)),
- (0x1f21a, (5600, 1)),
- (0x247f, (622, 4)),
+ (0x2124, (408, 1)),
+ (0x33d2, (2315, 3)),
+ (0x3236, (1373, 3)),
+ (0x1f112, (5518, 3)),
+ (0x1d37, (146, 1)),
+ (0x132, (24, 2)),
(0x329e, (1535, 1)),
- (0x1f22f, (5621, 1)),
- (0xfeae, (3916, 1)),
- (0x107b5, (4285, 1)),
+ (0x1d65a, (4869, 1)),
+ (0xfdf8, (3720, 4)),
+ (0x385, (92, 3)),
(0x2f71, (970, 1)),
- (0x1d4c0, (4472, 1)),
- (0xfe13, (3760, 1)),
- (0x1d489, (4427, 1)),
+ (0x1ee61, (5415, 1)),
+ (0xfe3d, (3783, 1)),
+ (0x3153, (1118, 1)),
(0xfccc, (3103, 2)),
(0x3203, (1201, 3)),
- (0x1d476, (4408, 1)),
- (0x3309, (1708, 3)),
+ (0xfe3f, (3785, 1)),
+ (0x1d550, (4604, 1)),
+ (0x1d6e9, (5010, 1)),
(0x1d675, (4896, 1)),
- (0xfcf6, (3192, 2)),
- (0x1d524, (4566, 1)),
- (0xfe9f, (3901, 1)),
+ (0x3f4, (107, 1)),
+ (0x1d53e, (4591, 1)),
+ (0x315c, (1127, 1)),
(0x32ac, (1549, 1)),
(0x24cd, (810, 1)),
- (0x1d51b, (4558, 1)),
(0xffe6, (4227, 1)),
- (0xffc7, (4204, 1)),
- (0x2003, (278, 1)),
- (0xaa, (3, 1)),
+ (0x3166, (1137, 1)),
+ (0x1ee6d, (5423, 1)),
+ (0x24d3, (816, 1)),
(0xffee, (4234, 1)),
(0x1d777, (5152, 1)),
+ (0xff55, (4093, 1)),
(0x1d5de, (4745, 1)),
- (0x3324, (1820, 4)),
- (0xfba9, (2580, 1)),
- (0x215b, (469, 3)),
- (0x329c, (1533, 1)),
- (0x2fd4, (1069, 1)),
- (0x2f87, (992, 1)),
+ (0x1d593, (4670, 1)),
+ (0x1ee2b, (5386, 1)),
+ (0x1d486, (4424, 1)),
+ (0xfd71, (3435, 3)),
+ (0xfef9, (3999, 3)),
(0x326a, (1462, 1)),
+ (0x33d6, (2325, 3)),
(0x3345, (1947, 3)),
- (0x1ee5b, (5350, 1)),
- (0xfd50, (3336, 3)),
- (0x1d472, (4404, 1)),
+ (0x2d9, (73, 2)),
+ (0xfbe4, (2609, 1)),
+ (0x3149, (1108, 1)),
(0x1d40d, (4304, 1)),
- (0x2f4a, (931, 1)),
+ (0x1f235, (5689, 1)),
(0x1d6de, (4999, 1)),
- (0xfcc8, (3095, 2)),
- (0x1d7c2, (5227, 1)),
- (0x2fa3, (1020, 1)),
- (0xfd59, (3363, 3)),
+ (0x677, (116, 2)),
+ (0x1d656, (4865, 1)),
+ (0x1d3d, (151, 1)),
+ (0x1d6f0, (5017, 1)),
(0xfe34, (3774, 1)),
(0x1d69c, (4935, 1)),
- (0x1d501, (4536, 1)),
- (0x2005, (280, 1)),
+ (0xfe76, (3838, 2)),
+ (0x1daf, (217, 1)),
(0x1c5, (38, 3)),
- (0x1078b, (4244, 1)),
- (0x323d, (1394, 3)),
- (0xaf, (4, 2)),
+ (0x1d739, (5090, 1)),
+ (0x33e4, (2359, 2)),
+ (0x1d6ed, (5014, 1)),
(0x1d6d8, (4993, 1)),
- (0x1d4ac, (4455, 1)),
+ (0xfc81, (2948, 2)),
(0xfecd, (3947, 1)),
- (0x3395, (2168, 2)),
- (0x1d67a, (4901, 1)),
- (0x1d74a, (5107, 1)),
+ (0x1d726, (5071, 1)),
+ (0x1e051, (5320, 1)),
+ (0xfc2c, (2766, 2)),
(0x1d6f3, (5020, 1)),
- (0x10793, (4252, 1)),
- (0x322e, (1349, 3)),
+ (0xfc3b, (2796, 2)),
+ (0xfce7, (3159, 2)),
(0x33b1, (2244, 2)),
- (0x3154, (1119, 1)),
+ (0x2161, (484, 2)),
(0xfe89, (3875, 2)),
- (0x1d786, (5167, 1)),
+ (0x1d63f, (4842, 1)),
+ (0x1d5c9, (4724, 1)),
(0x3266, (1458, 1)),
- (0x1d4b8, (4466, 1)),
- (0x1d7b2, (5211, 1)),
- (0x1d5e2, (4749, 1)),
- (0xffdc, (4219, 1)),
- (0xffd7, (4216, 1)),
- (0x1f139, (5546, 1)),
- (0x1d49, (163, 1)),
- (0x1d7e1, (5256, 1)),
- (0xfd0a, (3232, 2)),
+ (0xfd00, (3212, 2)),
+ (0x1d4c, (166, 1)),
+ (0x1d7e3, (5258, 1)),
+ (0x1d62b, (4822, 1)),
+ (0xfdae, (3612, 3)),
+ (0x339c, (2182, 2)),
+ (0xfc8c, (2970, 2)),
+ (0x1d449, (4364, 1)),
(0xffe2, (4222, 1)),
- (0x336d, (2071, 3)),
- (0xfbda, (2598, 1)),
- (0x247d, (614, 4)),
+ (0x222f, (551, 2)),
+ (0xfc62, (2878, 3)),
+ (0x1d70a, (5043, 1)),
(0x2fb3, (1036, 1)),
- (0x1f242, (5640, 3)),
- (0x3244, (1415, 1)),
- (0xfece, (3948, 1)),
- (0x24ac, (757, 3)),
- (0xfc92, (2982, 2)),
- (0x2470, (579, 2)),
- (0x1eea3, (5405, 1)),
+ (0x1f239, (5693, 1)),
+ (0x32dc, (1633, 1)),
+ (0x1d7ad, (5206, 1)),
+ (0x3303, (1684, 3)),
+ (0x248b, (664, 2)),
+ (0x3168, (1139, 1)),
+ (0xfdf0, (3690, 3)),
(0xff8b, (4147, 1)),
- (0x1079e, (4263, 1)),
+ (0x1d5c1, (4716, 1)),
(0x320f, (1238, 4)),
- (0x1f118, (5474, 3)),
- (0x1f133, (5540, 1)),
- (0x1d78c, (5173, 1)),
- (0x1d5a5, (4688, 1)),
- (0x1d776, (5151, 1)),
- (0xfec3, (3937, 1)),
- (0xff9e, (4166, 1)),
- (0x2f92, (1003, 1)),
- (0x1d58, (177, 1)),
- (0xfda1, (3573, 3)),
- (0x3207, (1213, 3)),
+ (0x1f145, (5620, 1)),
+ (0x1f118, (5536, 3)),
+ (0xffa0, (4168, 1)),
+ (0x335a, (2022, 2)),
+ (0x1d632, (4829, 1)),
+ (0x33eb, (2375, 3)),
+ (0x2120, (401, 2)),
+ (0x24da, (823, 1)),
+ (0xff28, (4048, 1)),
+ (0xfeaa, (3912, 1)),
+ (0x2fad, (1030, 1)),
(0x20a8, (363, 2)),
- (0x1d4b2, (4460, 1)),
- (0x2c7d, (853, 1)),
- (0x3312, (1741, 4)),
- (0x1ee35, (5333, 1)),
- (0x1d486, (4424, 1)),
- (0xfdfb, (3745, 8)),
- (0xfb93, (2556, 1)),
+ (0x33f3, (2399, 3)),
+ (0x32e2, (1639, 1)),
+ (0x3318, (1770, 4)),
+ (0x1ee35, (5395, 1)),
+ (0x1d5cd, (4728, 1)),
+ (0x325f, (1450, 2)),
+ (0x3365, (2047, 3)),
(0x1d4f, (168, 1)),
- (0xff22, (4042, 1)),
- (0x1d406, (4297, 1)),
+ (0x24e7, (836, 1)),
+ (0xfc76, (2926, 2)),
+ (0xfedd, (3963, 1)),
(0xfcca, (3099, 2)),
- (0x1d7c4, (5229, 1)),
- (0x1f14e, (5571, 3)),
- (0x1ee89, (5385, 1)),
- (0x1d68d, (4920, 1)),
- (0x1d73b, (5092, 1)),
- (0x1d79f, (5192, 1)),
+ (0x208b, (346, 1)),
+ (0x1f14e, (5633, 3)),
+ (0x1ee89, (5447, 1)),
+ (0x217d, (540, 1)),
+ (0x1d770, (5145, 1)),
+ (0x1d4b8, (4466, 1)),
(0xfca5, (3025, 2)),
- (0x2084, (339, 1)),
- (0xff13, (4027, 1)),
+ (0x1d701, (5034, 1)),
+ (0x3253, (1426, 2)),
(0xfe8e, (3884, 1)),
- (0x1d6b2, (4955, 1)),
+ (0xfc56, (2850, 2)),
(0x1d469, (4395, 1)),
- (0x3284, (1509, 1)),
- (0x3343, (1940, 4)),
- (0x3322, (1814, 3)),
+ (0x3394, (2165, 3)),
+ (0xfbe2, (2607, 1)),
+ (0x2048, (312, 2)),
(0xfcf9, (3198, 2)),
- (0xfcfa, (3200, 2)),
- (0x1d6ff, (5032, 1)),
- (0x1d7f3, (5274, 1)),
+ (0xeb3, (122, 2)),
+ (0x2fc7, (1056, 1)),
+ (0x3376, (2095, 2)),
+ (0x10784, (4238, 1)),
(0x1d6ad, (4950, 1)),
- (0x2f78, (977, 1)),
(0xff80, (4136, 1)),
- (0x2486, (650, 4)),
- (0x32c2, (1588, 2)),
+ (0x1d498, (4442, 1)),
+ (0x1f141, (5616, 1)),
(0x33a5, (2205, 2)),
(0x1d683, (4910, 1)),
- (0x32d1, (1622, 1)),
- (0x1d5c9, (4724, 1)),
+ (0xfdba, (3648, 3)),
+ (0x2110, (389, 1)),
+ (0x1d6dc, (4997, 1)),
(0x1d4bf, (4471, 1)),
- (0xfc11, (2712, 2)),
- (0x32df, (1636, 1)),
- (0x1d7bd, (5222, 1)),
- (0x2f56, (943, 1)),
+ (0x1d7d6, (5245, 1)),
+ (0x1f226, (5674, 1)),
+ (0x1d60d, (4792, 1)),
(0x2025, (290, 2)),
+ (0x1f247, (5717, 3)),
(0xfe90, (3886, 1)),
- (0xfd0f, (3242, 2)),
- (0x24da, (823, 1)),
- (0x33d4, (2320, 2)),
- (0x1d648, (4851, 1)),
- (0xfc41, (2808, 2)),
- (0x328e, (1519, 1)),
+ (0x330d, (1721, 4)),
+ (0xfb5a, (2499, 1)),
+ (0x2fa7, (1024, 1)),
+ (0x33bb, (2264, 2)),
+ (0x1d70b, (5044, 1)),
+ (0x2dd, (81, 2)),
(0x1d795, (5182, 1)),
- (0xffa0, (4168, 1)),
- (0xff4a, (4082, 1)),
- (0x319c, (1188, 1)),
- (0xfd86, (3498, 3)),
- (0xfe3f, (3785, 1)),
- (0x1d582, (4653, 1)),
- (0xfc9b, (3004, 3)),
- (0x3243, (1412, 3)),
- (0xfccf, (3109, 2)),
- (0x1db9, (227, 1)),
- (0x1d7da, (5249, 1)),
- (0x3334, (1881, 6)),
- (0xfe51, (3805, 1)),
- (0x33c5, (2286, 2)),
+ (0x2488, (658, 2)),
+ (0xfc4c, (2830, 2)),
+ (0x1d599, (4676, 1)),
+ (0xfce3, (3151, 2)),
+ (0x1d5bb, (4710, 1)),
+ (0x2f8c, (997, 1)),
+ (0x1d7fe, (5285, 1)),
+ (0x1d42c, (4335, 1)),
+ (0xff78, (4128, 1)),
+ (0x1d67a, (4901, 1)),
+ (0x1d72c, (5077, 1)),
+ (0xff68, (4112, 1)),
+ (0x317a, (1157, 1)),
+ (0x1d70f, (5048, 1)),
(0x32c9, (1602, 3)),
- (0x24d5, (818, 1)),
- (0x1d7b5, (5214, 1)),
+ (0xedd, (126, 2)),
+ (0x1d5f1, (4764, 1)),
(0x1d4c2, (4474, 1)),
- (0x1d5d0, (4731, 1)),
- (0xfe49, (3793, 2)),
- (0xfed6, (3956, 1)),
+ (0xff24, (4044, 1)),
+ (0xff9a, (4162, 1)),
+ (0x1d671, (4892, 1)),
(0xffcf, (4210, 1)),
- (0x1d571, (4636, 1)),
- (0xfdf2, (3696, 4)),
- (0xfc28, (2758, 2)),
- (0x1d5ae, (4697, 1)),
+ (0x2f0b, (868, 1)),
+ (0x32cc, (1611, 2)),
+ (0x1d6fa, (5027, 1)),
+ (0x1d616, (4801, 1)),
(0xfb15, (2471, 2)),
- (0x1fc0, (242, 2)),
+ (0xfee7, (3973, 1)),
(0xff96, (4158, 1)),
+ (0x3d2, (97, 1)),
(0x1d5d9, (4740, 1)),
- (0x336f, (2077, 3)),
(0x1ffd, (271, 2)),
- (0x2f2b, (900, 1)),
- (0x1d47d, (4415, 1)),
+ (0xfbb1, (2589, 2)),
+ (0xfca3, (3021, 2)),
(0x2f7f, (984, 1)),
(0x2f42, (923, 1)),
- (0x1d647, (4850, 1)),
- (0xff6f, (4119, 1)),
- (0x334a, (1964, 6)),
- (0x331b, (1786, 4)),
- (0xfca2, (3019, 2)),
- (0xfd62, (3390, 3)),
- (0x1d57b, (4646, 1)),
- (0x107a4, (4269, 1)),
+ (0xfc27, (2756, 2)),
+ (0x1eea7, (5470, 1)),
+ (0x212d, (411, 1)),
+ (0x1d35, (144, 1)),
+ (0x1e05c, (5331, 1)),
+ (0xfcb2, (3051, 2)),
+ (0xfc7e, (2942, 2)),
+ (0x2f9d, (1014, 1)),
(0x33f9, (2417, 3)),
- (0x1f11d, (5489, 3)),
+ (0x1d606, (4785, 1)),
(0x1d55b, (4614, 1)),
(0x1d62f, (4826, 1)),
(0x2f9f, (1016, 1)),
+ (0x1dbc, (230, 1)),
(0xff3b, (4067, 1)),
- (0x1d4ff, (4534, 1)),
- (0xfe3a, (3780, 1)),
- (0xffed, (4233, 1)),
+ (0x32d8, (1629, 1)),
+ (0x1d568, (4627, 1)),
(0x33e5, (2361, 2)),
+ (0x2f82, (987, 1)),
(0xfea7, (3909, 1)),
- (0x1d4fd, (4532, 1)),
- (0x337c, (2109, 2)),
- (0xfba7, (2578, 1)),
- (0xfcb9, (3065, 2)),
+ (0x1d55d, (4616, 1)),
+ (0x1d4ac, (4455, 1)),
+ (0x24b2, (775, 3)),
+ (0xfd37, (3322, 2)),
(0x2f80, (985, 1)),
- (0xfb6c, (2517, 1)),
(0x1d4df, (4502, 1)),
- (0x1d45f, (4385, 1)),
- (0x1d7b3, (5212, 1)),
+ (0xfb73, (2524, 1)),
+ (0xfdc7, (3687, 3)),
+ (0x1d48, (162, 1)),
(0xfbb0, (2587, 2)),
- (0x2026, (292, 3)),
- (0x1ee03, (5290, 1)),
- (0xff7e, (4134, 1)),
- (0x314a, (1109, 1)),
- (0x1d625, (4816, 1)),
- (0x322d, (1346, 3)),
- (0x1ee7b, (5373, 1)),
- (0xfc0a, (2698, 2)),
- (0x314d, (1112, 1)),
+ (0x1d704, (5037, 1)),
+ (0x1d481, (4419, 1)),
+ (0x2f5b, (948, 1)),
+ (0x1e034, (5291, 1)),
+ (0x2b2, (64, 1)),
+ (0x1d41d, (4320, 1)),
+ (0xfcce, (3107, 2)),
+ (0x33a8, (2213, 4)),
(0x1d6e4, (5005, 1)),
- (0x3135, (1088, 1)),
+ (0x1d7c7, (5232, 1)),
(0x32b6, (1564, 2)),
- (0x3208, (1216, 3)),
+ (0x3218, (1274, 4)),
(0xfdf9, (3724, 3)),
- (0x1d636, (4833, 1)),
- (0xfcea, (3165, 2)),
- (0x2f60, (953, 1)),
- (0x2002, (277, 1)),
- (0x1d788, (5169, 1)),
- (0x32e5, (1642, 1)),
- (0x1079d, (4262, 1)),
- (0x1eebb, (5427, 1)),
- (0x1d4f4, (4523, 1)),
- (0x1da6, (208, 1)),
- (0x1d450, (4371, 1)),
- (0x1d670, (4891, 1)),
- (0x2dd, (81, 2)),
+ (0xfd07, (3226, 2)),
+ (0xff69, (4113, 1)),
+ (0x3196, (1182, 1)),
+ (0x1d7ec, (5267, 1)),
+ (0xfcde, (3139, 2)),
+ (0x3274, (1478, 2)),
+ (0xfd11, (3246, 2)),
+ (0xfdb9, (3645, 3)),
+ (0xfccd, (3105, 2)),
+ (0x2fa2, (1019, 1)),
+ (0xfb21, (2478, 1)),
+ (0x1d401, (4292, 1)),
+ (0x1ee0d, (5361, 1)),
+ (0x338d, (2148, 2)),
(0xfd36, (3320, 2)),
(0xfc44, (2814, 2)),
- (0x1eeb5, (5421, 1)),
- (0xfcf2, (3181, 3)),
- (0xfd10, (3244, 2)),
- (0xfc8d, (2972, 2)),
- (0xfd09, (3230, 2)),
- (0xff16, (4030, 1)),
- (0x107b9, (4289, 1)),
- (0x3384, (2127, 2)),
- (0xfc0e, (2706, 2)),
- (0x2147, (432, 1)),
- (0x335d, (2028, 2)),
+ (0x1d573, (4638, 1)),
+ (0x327c, (1494, 5)),
+ (0x1d787, (5168, 1)),
+ (0x2f1d, (886, 1)),
+ (0x1d4ca, (4481, 1)),
+ (0x2f32, (907, 1)),
+ (0x1d443, (4358, 1)),
+ (0xfec5, (3939, 1)),
+ (0x1f237, (5691, 1)),
+ (0xfb9f, (2568, 1)),
+ (0x332e, (1855, 6)),
+ (0x24cc, (809, 1)),
(0x2162, (486, 3)),
- (0xfd0e, (3240, 2)),
- (0x1d5ad, (4696, 1)),
+ (0xffb6, (4190, 1)),
(0xfb9b, (2564, 1)),
- (0xfeb9, (3927, 1)),
+ (0x1fce, (250, 3)),
(0x318e, (1177, 1)),
+ (0x32fa, (1663, 1)),
(0x32db, (1632, 1)),
- (0x1d74d, (5110, 1)),
- (0x319a, (1186, 1)),
+ (0xfee5, (3971, 1)),
+ (0xfe41, (3787, 1)),
(0x1d5df, (4746, 1)),
- (0x1f108, (5444, 2)),
- (0x1d6f5, (5022, 1)),
- (0xff8e, (4150, 1)),
- (0x1d441, (4356, 1)),
+ (0x33f6, (2408, 3)),
+ (0x1d585, (4656, 1)),
+ (0xfd92, (3528, 3)),
(0x1d5b, (180, 1)),
- (0xff10, (4024, 1)),
- (0x1d71e, (5063, 1)),
+ (0x1078a, (4243, 1)),
+ (0x337a, (2105, 2)),
+ (0xfdc3, (3675, 3)),
(0x1078e, (4247, 1)),
- (0x33cd, (2305, 2)),
(0xff63, (4107, 1)),
- (0xfdb4, (3630, 3)),
- (0x1d4d, (167, 1)),
- (0x1f22c, (5618, 1)),
- (0xfc89, (2964, 2)),
+ (0xfedf, (3965, 1)),
+ (0xfd5c, (3372, 3)),
+ (0x1e043, (5306, 1)),
+ (0x1d47b, (4413, 1)),
+ (0xfe18, (3765, 1)),
(0x1d7c5, (5230, 1)),
- (0xff5e, (4102, 1)),
- (0x1d417, (4314, 1)),
- (0xfb73, (2524, 1)),
- (0x2f13, (876, 1)),
- (0x1d783, (5164, 1)),
- (0x2155, (451, 3)),
- (0x1d6dc, (4997, 1)),
- (0x1d7a2, (5195, 1)),
- (0x33d3, (2318, 2)),
- (0x1d5c7, (4722, 1)),
- (0xfd9c, (3558, 3)),
+ (0xfbda, (2598, 1)),
+ (0x1d59d, (4680, 1)),
+ (0x1e058, (5327, 1)),
+ (0x216a, (504, 2)),
+ (0x1d798, (5185, 1)),
+ (0x1ee37, (5397, 1)),
+ (0xfc22, (2746, 2)),
+ (0x3171, (1148, 1)),
+ (0xfd66, (3402, 3)),
+ (0x1eea2, (5466, 1)),
+ (0xfb88, (2545, 1)),
(0x1d6b4, (4957, 1)),
- (0xfd1e, (3272, 2)),
+ (0x32e3, (1640, 1)),
(0x208e, (349, 1)),
- (0xfe98, (3894, 1)),
- (0x1d69f, (4938, 1)),
- (0xfe7b, (3848, 2)),
- (0x1d456, (4376, 1)),
- (0x1d6ab, (4948, 1)),
+ (0x3223, (1316, 3)),
+ (0x3137, (1090, 1)),
+ (0x222c, (546, 2)),
+ (0x2f8b, (996, 1)),
+ (0x1f11a, (5542, 3)),
(0xfc4f, (2836, 2)),
(0x1d52b, (4573, 1)),
- (0x1d50d, (4545, 1)),
- (0x1d47f, (4417, 1)),
+ (0xfba5, (2575, 2)),
+ (0x1d465, (4391, 1)),
(0xff50, (4088, 1)),
- (0x33b4, (2250, 2)),
- (0xff9f, (4167, 1)),
- (0x213c, (425, 1)),
- (0xfd75, (3447, 3)),
- (0x2f74, (973, 1)),
- (0xfc93, (2984, 2)),
- (0x1d491, (4435, 1)),
- (0xfc2c, (2766, 2)),
+ (0xff2b, (4051, 1)),
+ (0xfc60, (2872, 3)),
+ (0x326e, (1466, 2)),
+ (0xfb78, (2529, 1)),
+ (0x2080, (335, 1)),
+ (0xfe37, (3777, 1)),
+ (0x1f243, (5705, 3)),
+ (0xfb01, (2453, 2)),
(0x32a1, (1538, 1)),
(0x1d6d9, (4994, 1)),
- (0xfed2, (3952, 1)),
- (0x10794, (4253, 1)),
- (0x314c, (1111, 1)),
- (0x1d523, (4565, 1)),
- (0x1db4, (222, 1)),
- (0x1d569, (4628, 1)),
- (0x316c, (1143, 1)),
- (0x1d5dd, (4744, 1)),
- (0x2a76, (849, 3)),
+ (0x2007, (282, 1)),
+ (0x321a, (1282, 4)),
+ (0x1d730, (5081, 1)),
+ (0xfb7a, (2531, 1)),
+ (0x3175, (1152, 1)),
+ (0x2136, (418, 1)),
+ (0x3355, (2007, 2)),
+ (0x32b5, (1562, 2)),
+ (0xfe3b, (3781, 1)),
+ (0xfd2a, (3296, 2)),
(0x24ad, (760, 3)),
- (0x1d7bc, (5221, 1)),
- (0x331f, (1800, 4)),
- (0x1d4f1, (4520, 1)),
- (0x1d678, (4899, 1)),
+ (0x1d471, (4403, 1)),
+ (0x3272, (1474, 2)),
+ (0x1d77b, (5156, 1)),
+ (0xfd68, (3408, 3)),
(0x1d65d, (4872, 1)),
- (0x1f138, (5545, 1)),
- (0x33b6, (2254, 2)),
+ (0x1f138, (5607, 1)),
+ (0x1e066, (5341, 1)),
(0x217c, (539, 1)),
- (0x2f70, (969, 1)),
(0x1d586, (4657, 1)),
- (0xbd, (18, 3)),
- (0x1d4ed, (4516, 1)),
- (0x1d52f, (4577, 1)),
- (0x3299, (1530, 1)),
+ (0x1d785, (5166, 1)),
+ (0x1d73d, (5094, 1)),
+ (0xfd53, (3345, 3)),
+ (0x208c, (347, 1)),
+ (0x3326, (1827, 3)),
(0x1d517, (4554, 1)),
- (0x1ee6f, (5363, 1)),
+ (0x1ee6f, (5425, 1)),
(0xfcb0, (3047, 2)),
- (0x675, (112, 2)),
- (0x328d, (1518, 1)),
- (0x3337, (1895, 3)),
- (0x334b, (1970, 3)),
- (0xfed0, (3950, 1)),
- (0x3131, (1084, 1)),
- (0xff17, (4031, 1)),
- (0x1f22d, (5619, 1)),
- (0xfd73, (3441, 3)),
- (0x1d78a, (5171, 1)),
- (0x1d454, (4375, 1)),
+ (0xfe19, (3766, 3)),
+ (0xfb25, (2482, 1)),
+ (0xff3c, (4068, 1)),
+ (0xfc7f, (2944, 2)),
+ (0x1d680, (4907, 1)),
+ (0xff47, (4079, 1)),
+ (0x3361, (2036, 2)),
+ (0x1d5e7, (4754, 1)),
+ (0x1e031, (5288, 1)),
+ (0x10791, (4250, 1)),
+ (0x1f125, (5575, 3)),
(0x1d716, (5055, 1)),
- (0x1d5ce, (4729, 1)),
- (0xfc4b, (2828, 2)),
- (0x332b, (1840, 6)),
- (0x1f16a, (5576, 2)),
+ (0xfe11, (3758, 1)),
+ (0x1d7cb, (5236, 1)),
+ (0x316a, (1141, 1)),
+ (0x1f16a, (5638, 2)),
(0x1d7af, (5208, 1)),
- (0xff6b, (4115, 1)),
- (0x1f218, (5598, 1)),
- (0x1d4f2, (4521, 1)),
- (0xfb6d, (2518, 1)),
- (0x211d, (400, 1)),
- (0xfeaa, (3912, 1)),
- (0xfed1, (3951, 1)),
- (0xfc9d, (3009, 2)),
- (0x1d7fe, (5285, 1)),
+ (0xfc2b, (2764, 2)),
+ (0xff1e, (4038, 1)),
+ (0x2fa6, (1023, 1)),
+ (0xfd6c, (3420, 3)),
+ (0x2116, (394, 2)),
+ (0x3327, (1830, 2)),
+ (0xfc21, (2744, 2)),
+ (0x1d30, (139, 1)),
+ (0x1d6fe, (5031, 1)),
(0xfc3c, (2798, 2)),
(0xfbf7, (2654, 3)),
- (0x1d653, (4862, 1)),
+ (0x1d66e, (4889, 1)),
(0xfe36, (3776, 1)),
- (0x3205, (1207, 3)),
- (0x3220, (1307, 3)),
- (0x1d7dc, (5251, 1)),
- (0x2f00, (857, 1)),
- (0x1d658, (4867, 1)),
- (0x1d5f0, (4763, 1)),
- (0x1f201, (5586, 2)),
- (0xfd24, (3284, 2)),
- (0x1d707, (5040, 1)),
+ (0x1d600, (4779, 1)),
+ (0x32c4, (1592, 2)),
+ (0xfcee, (3173, 2)),
+ (0xfea8, (3910, 1)),
+ (0x1d7cf, (5238, 1)),
+ (0x1e05d, (5332, 1)),
+ (0x1d682, (4909, 1)),
+ (0x2498, (697, 3)),
+ (0xfedc, (3962, 1)),
(0x1d6ec, (5013, 1)),
(0x2f1e, (887, 1)),
- (0xfcba, (3067, 2)),
- (0x1d541, (4593, 1)),
- (0x33f8, (2414, 3)),
+ (0x1d69d, (4936, 1)),
+ (0xfc55, (2848, 2)),
+ (0x1ee97, (5460, 1)),
(0x1d5bf, (4714, 1)),
- (0x1fbf7, (5670, 1)),
- (0x337a, (2105, 2)),
- (0x107a5, (4270, 1)),
- (0x1d7a0, (5193, 1)),
- (0x1d71b, (5060, 1)),
- (0xfe5e, (3817, 1)),
- (0x1d519, (4556, 1)),
- (0x1fbf9, (5672, 1)),
+ (0x207f, (334, 1)),
+ (0x1eeb4, (5482, 1)),
+ (0xfc38, (2790, 2)),
+ (0x1da7, (209, 1)),
+ (0x1d705, (5038, 1)),
+ (0x1d720, (5065, 1)),
+ (0x215b, (469, 3)),
+ (0x1d4fc, (4531, 1)),
+ (0x1e03f, (5302, 1)),
(0x1d59a, (4677, 1)),
- (0xff3e, (4070, 1)),
- (0x1f143, (5556, 1)),
- (0x1d4a5, (4450, 1)),
+ (0xfcfd, (3206, 2)),
+ (0x10781, (4235, 1)),
(0x2f9c, (1013, 1)),
- (0x1d4c, (166, 1)),
- (0x1d650, (4859, 1)),
- (0xff21, (4041, 1)),
- (0x24b4, (781, 3)),
+ (0x1d5b3, (4702, 1)),
+ (0x1d7a4, (5197, 1)),
+ (0x107a7, (4272, 1)),
+ (0xfb90, (2553, 1)),
+ (0x1d490, (4434, 1)),
(0x1d543, (4595, 1)),
(0x2f6a, (963, 1)),
- (0xfeb5, (3923, 1)),
+ (0x3366, (2050, 3)),
(0x1d414, (4311, 1)),
- (0x1d6df, (5000, 1)),
- (0x13f, (28, 2)),
- (0x334d, (1978, 4)),
- (0x334e, (1982, 4)),
- (0x1d5e9, (4756, 1)),
- (0xfc7d, (2940, 2)),
- (0xfbe3, (2608, 1)),
- (0x24d2, (815, 1)),
+ (0x1d633, (4830, 1)),
+ (0x335f, (2032, 2)),
+ (0x32a8, (1545, 1)),
+ (0x33cf, (2309, 2)),
+ (0xfefc, (4007, 2)),
+ (0x1d6a3, (4942, 1)),
+ (0xffba, (4194, 1)),
+ (0x1078d, (4246, 1)),
(0x1d6c4, (4973, 1)),
- (0xfc96, (2990, 2)),
+ (0x1e044, (5307, 1)),
(0x1d4aa, (4453, 1)),
- (0x1d578, (4643, 1)),
- (0x1f104, (5436, 2)),
+ (0x1d595, (4672, 1)),
+ (0x3331, (1868, 3)),
(0x1d7f7, (5278, 1)),
- (0x3278, (1486, 2)),
- (0xfc25, (2752, 2)),
- (0x1d75b, (5124, 1)),
- (0x1dbd, (231, 1)),
- (0x1d42c, (4335, 1)),
+ (0x1d6fb, (5028, 1)),
+ (0x1d49, (163, 1)),
+ (0x1d49e, (4447, 1)),
+ (0x1d411, (4308, 1)),
+ (0x2107, (380, 1)),
(0x205f, (320, 1)),
+ (0x1e038, (5295, 1)),
(0xfb4f, (2487, 2)),
- (0xfcad, (3041, 2)),
- (0x2fba, (1043, 1)),
- (0xfb76, (2527, 1)),
+ (0x1ee9a, (5463, 1)),
+ (0x1d43c, (4351, 1)),
(0x32ad, (1550, 1)),
- (0x1eea8, (5409, 1)),
+ (0x1d468, (4394, 1)),
(0x3184, (1167, 1)),
(0x3162, (1133, 1)),
- (0x1d9f, (201, 1)),
- (0xffce, (4209, 1)),
- (0x249a, (703, 3)),
+ (0x2f69, (962, 1)),
+ (0xfe81, (3859, 2)),
+ (0x1ee05, (5353, 1)),
(0xfea5, (3907, 1)),
- (0xfe40, (3786, 1)),
+ (0x32ba, (1572, 2)),
+ (0x32f0, (1653, 1)),
(0x1d7d9, (5248, 1)),
- (0x1d3f, (153, 1)),
- (0xfe83, (3863, 2)),
+ (0x1d4c0, (4472, 1)),
(0xfea3, (3905, 1)),
- (0x3389, (2138, 4)),
- (0x1d7f6, (5277, 1)),
- (0xff98, (4160, 1)),
- (0x1ee8f, (5390, 1)),
- (0x1ee0f, (5301, 1)),
- (0x1fc1, (244, 3)),
- (0xfbe1, (2606, 1)),
+ (0x321d, (1294, 7)),
+ (0x1d6c7, (4976, 1)),
+ (0x1fcf, (253, 3)),
+ (0x33bf, (2272, 2)),
+ (0x1d718, (5057, 1)),
+ (0x10790, (4249, 1)),
+ (0x1d501, (4536, 1)),
(0x1d610, (4795, 1)),
+ (0x32e0, (1637, 1)),
(0xfd21, (3278, 2)),
- (0xfd99, (3549, 3)),
- (0x1d598, (4675, 1)),
- (0xfcf7, (3194, 2)),
- (0x1ee18, (5310, 1)),
+ (0x1d6db, (4996, 1)),
+ (0x1f13d, (5612, 1)),
+ (0x3038, (1073, 1)),
+ (0x33a7, (2210, 3)),
(0xfd25, (3286, 2)),
- (0x2024, (289, 1)),
+ (0x1d7e1, (5256, 1)),
(0xffbd, (4197, 1)),
- (0x1ee8c, (5387, 1)),
- (0x2faf, (1032, 1)),
- (0xfeb2, (3920, 1)),
- (0x1d7f1, (5272, 1)),
- (0x3232, (1361, 3)),
- (0x325c, (1444, 2)),
+ (0x1ee8c, (5449, 1)),
+ (0x1ee08, (5356, 1)),
+ (0x33c3, (2282, 2)),
+ (0x1d51a, (4557, 1)),
+ (0x32bf, (1582, 2)),
(0x249e, (715, 3)),
- (0x1f210, (5589, 1)),
- (0x1d4d5, (4492, 1)),
- (0x337d, (2111, 2)),
+ (0x33c8, (2295, 2)),
+ (0x1f210, (5651, 1)),
+ (0x2179, (533, 1)),
+ (0x3222, (1313, 3)),
(0x1d782, (5163, 1)),
(0x10789, (4242, 1)),
- (0x1d6b9, (4962, 1)),
- (0x1d43d, (4352, 1)),
+ (0x3305, (1692, 3)),
+ (0xfe3a, (3780, 1)),
(0x1d631, (4828, 1)),
(0x3199, (1185, 1)),
- (0xfe85, (3867, 2)),
- (0xfc3d, (2800, 2)),
+ (0xffd4, (4213, 1)),
+ (0x209c, (362, 1)),
(0x3247, (1418, 1)),
(0xfc88, (2962, 2)),
- (0x1d402, (4293, 1)),
- (0x1d9c, (198, 1)),
- (0x1d7dd, (5252, 1)),
+ (0xffb9, (4193, 1)),
+ (0x1d46c, (4398, 1)),
+ (0x1d636, (4833, 1)),
(0x315f, (1130, 1)),
(0xfb8b, (2548, 1)),
- (0xab5d, (2447, 1)),
- (0x1d6bf, (4968, 1)),
- (0x1d4b4, (4462, 1)),
+ (0xb5, (10, 1)),
+ (0x1d419, (4316, 1)),
+ (0xfed5, (3955, 1)),
+ (0x1d6ca, (4979, 1)),
(0x339e, (2186, 2)),
- (0x1f111, (5453, 3)),
(0x1d641, (4844, 1)),
- (0xfe63, (3822, 1)),
- (0x32fa, (1663, 1)),
- (0x1ee36, (5334, 1)),
- (0x1d49b, (4445, 1)),
- (0x2f03, (860, 1)),
- (0xa7f9, (2445, 1)),
- (0x1079c, (4261, 1)),
- (0xfdba, (3648, 3)),
+ (0x1d6af, (4952, 1)),
+ (0x3288, (1513, 1)),
+ (0x2154, (448, 3)),
+ (0xfe8d, (3883, 1)),
+ (0x1d40b, (4302, 1)),
+ (0x1d607, (4786, 1)),
+ (0xff26, (4046, 1)),
+ (0x1d758, (5121, 1)),
(0xfc4e, (2834, 2)),
(0x3364, (2044, 3)),
- (0x1d490, (4434, 1)),
- (0xffec, (4232, 1)),
- (0x33db, (2339, 2)),
- (0x2e1, (84, 1)),
- (0x1d5ec, (4759, 1)),
+ (0x1d4f5, (4524, 1)),
+ (0x2fc6, (1055, 1)),
+ (0x1d5dc, (4743, 1)),
+ (0xfc5e, (2866, 3)),
+ (0xff36, (4062, 1)),
(0x24c5, (802, 1)),
- (0x3168, (1139, 1)),
+ (0x1d587, (4658, 1)),
(0x2091, (351, 1)),
+ (0x1d750, (5113, 1)),
(0x24b0, (769, 3)),
- (0x1d568, (4627, 1)),
- (0x1f122, (5504, 3)),
- (0x1d52e, (4576, 1)),
+ (0x1f122, (5566, 3)),
+ (0x3339, (1902, 3)),
+ (0x1e054, (5323, 1)),
(0x1d511, (4549, 1)),
- (0x2fb1, (1034, 1)),
- (0x3320, (1804, 5)),
+ (0x3335, (1887, 3)),
(0xffaa, (4178, 1)),
- (0x3164, (1135, 1)),
- (0x1d5e0, (4747, 1)),
+ (0x1f240, (5696, 3)),
+ (0x1d612, (4797, 1)),
+ (0x1d553, (4606, 1)),
(0x1d5aa, (4693, 1)),
- (0x3352, (1996, 2)),
- (0x1d4ec, (4515, 1)),
+ (0xaa, (3, 1)),
+ (0xff62, (4106, 1)),
(0x24de, (827, 1)),
- (0x32a4, (1541, 1)),
- (0x24e2, (831, 1)),
- (0x1d505, (4540, 1)),
+ (0x1d7e2, (5257, 1)),
+ (0xfe6a, (3828, 1)),
(0x2f6f, (968, 1)),
- (0x2f5a, (947, 1)),
- (0xff68, (4112, 1)),
+ (0xfd59, (3363, 3)),
+ (0x1f1, (56, 2)),
+ (0x1d33, (142, 1)),
(0x1078f, (4248, 1)),
- (0x2f23, (892, 1)),
- (0xfcd0, (3111, 2)),
- (0x3298, (1529, 1)),
- (0x3287, (1512, 1)),
- (0x1d53b, (4588, 1)),
+ (0x1d536, (4584, 1)),
+ (0x2f0a, (867, 1)),
+ (0x3244, (1415, 1)),
+ (0x246e, (575, 2)),
+ (0xfc85, (2956, 2)),
(0x32f3, (1656, 1)),
- (0x1d70c, (5045, 1)),
+ (0x1fbf4, (5729, 1)),
(0x1d643, (4846, 1)),
(0xfba0, (2569, 1)),
- (0x3157, (1122, 1)),
- (0xfe3e, (3784, 1)),
+ (0x1db1, (219, 1)),
+ (0x1d457, (4377, 1)),
(0x1d7d7, (5246, 1)),
(0x3172, (1149, 1)),
- (0x1d70a, (5043, 1)),
- (0xff60, (4104, 1)),
- (0x3138, (1091, 1)),
- (0x1d5a, (179, 1)),
- (0x1d676, (4897, 1)),
- (0x2048, (312, 2)),
+ (0x33b2, (2246, 2)),
+ (0x107aa, (4275, 1)),
+ (0x2f16, (879, 1)),
+ (0x1d731, (5082, 1)),
+ (0x1d725, (5070, 1)),
+ (0xfbf4, (2645, 3)),
(0x33f5, (2405, 3)),
- (0x2466, (562, 1)),
- (0x1d43e, (4353, 1)),
+ (0x339d, (2184, 2)),
+ (0xfcc4, (3087, 2)),
(0xfc1c, (2734, 2)),
- (0x1d70d, (5046, 1)),
- (0x213f, (428, 1)),
- (0xfc39, (2792, 2)),
- (0x1d608, (4787, 1)),
- (0x335c, (2026, 2)),
+ (0xff11, (4025, 1)),
+ (0x1d76d, (5142, 1)),
+ (0x1d61c, (4807, 1)),
+ (0x1d733, (5084, 1)),
+ (0x1d5c7, (4722, 1)),
(0xff81, (4137, 1)),
(0x2122, (406, 2)),
- (0x1d61a, (4805, 1)),
- (0x1d75e, (5127, 1)),
- (0x1d493, (4437, 1)),
- (0xfb9e, (2567, 1)),
- (0x1ee72, (5366, 1)),
+ (0x1d4ae, (4456, 1)),
+ (0x1f21d, (5665, 1)),
+ (0x1d47f, (4417, 1)),
+ (0x1d757, (5120, 1)),
+ (0xbc, (15, 3)),
+ (0x1d621, (4812, 1)),
(0xffe4, (4225, 1)),
(0xfec9, (3943, 1)),
- (0xfe58, (3811, 1)),
- (0x1ee84, (5380, 1)),
+ (0x1ee84, (5442, 1)),
+ (0xfd98, (3546, 3)),
(0x3161, (1132, 1)),
- (0x1d6ba, (4963, 1)),
- (0x1d7bf, (5224, 1)),
+ (0x213f, (428, 1)),
(0x1d9e, (200, 1)),
- (0x1f236, (5628, 1)),
- (0xff6c, (4116, 1)),
- (0x2fcc, (1061, 1)),
- (0x1d4cc, (4483, 1)),
- (0x1ee0b, (5297, 1)),
- (0x1d77d, (5158, 1)),
- (0x1d5e8, (4755, 1)),
+ (0x1d619, (4804, 1)),
+ (0x1d4d6, (4493, 1)),
+ (0x1d5c0, (4715, 1)),
+ (0x2f7b, (980, 1)),
+ (0x1ee0b, (5359, 1)),
+ (0x1d746, (5103, 1)),
+ (0xfceb, (3167, 2)),
+ (0xfef3, (3985, 1)),
(0xfcf4, (3187, 3)),
- (0x1d4ce, (4485, 1)),
- (0x1ee83, (5379, 1)),
- (0x1d70b, (5044, 1)),
- (0x1d4f6, (4525, 1)),
- (0x32dd, (1634, 1)),
- (0xfe56, (3809, 1)),
- (0x3264, (1456, 1)),
- (0x1ee64, (5355, 1)),
- (0x316e, (1145, 1)),
- (0x1d790, (5177, 1)),
- (0x339b, (2180, 2)),
- (0x3281, (1506, 1)),
- (0x1d54, (173, 1)),
+ (0xfe7a, (3846, 2)),
+ (0x215c, (472, 3)),
+ (0x1d4fd, (4532, 1)),
+ (0xfba7, (2578, 1)),
+ (0xfd3c, (3332, 2)),
+ (0x1d46a, (4396, 1)),
+ (0x2163, (489, 2)),
+ (0x1ee64, (5417, 1)),
+ (0x1d692, (4925, 1)),
+ (0x1d648, (4851, 1)),
+ (0x1d482, (4420, 1)),
+ (0x1d576, (4641, 1)),
+ (0x1d717, (5056, 1)),
(0xfe30, (3769, 2)),
- (0x3211, (1246, 4)),
- (0x24ab, (754, 3)),
+ (0x1f232, (5686, 1)),
+ (0xfc77, (2928, 2)),
(0x1d668, (4883, 1)),
- (0x3271, (1472, 2)),
+ (0x2146, (431, 1)),
(0xa8, (1, 2)),
- (0x1d61, (186, 1)),
+ (0xfb93, (2556, 1)),
(0x1d5ef, (4762, 1)),
- (0xfed8, (3958, 1)),
- (0x1d5e1, (4748, 1)),
- (0x33e1, (2353, 2)),
- (0x2ef3, (856, 1)),
+ (0xfbfd, (2670, 1)),
+ (0x107ab, (4276, 1)),
+ (0x1e063, (5338, 1)),
+ (0x1d470, (4402, 1)),
(0x3356, (2009, 6)),
- (0x3331, (1868, 3)),
- (0xfd6d, (3423, 3)),
- (0xfd74, (3444, 3)),
+ (0x1d4c5, (4476, 1)),
+ (0xfbe7, (2612, 1)),
+ (0x24ea, (839, 1)),
+ (0x1d519, (4556, 1)),
(0x1d654, (4863, 1)),
- (0x107ac, (4277, 1)),
+ (0x2f6d, (966, 1)),
(0x1d518, (4555, 1)),
- (0x2f47, (928, 1)),
- (0x3230, (1355, 3)),
+ (0x1d639, (4836, 1)),
(0xfd52, (3342, 3)),
- (0x1d7a9, (5202, 1)),
+ (0x1d79f, (5192, 1)),
+ (0x1d775, (5150, 1)),
(0x3371, (2083, 3)),
- (0x1d601, (4780, 1)),
- (0xfe93, (3889, 1)),
+ (0x1e048, (5311, 1)),
(0x1d7ce, (5237, 1)),
- (0x1d6fc, (5029, 1)),
+ (0xff65, (4109, 1)),
(0x33a0, (2191, 3)),
- (0x2f4c, (933, 1)),
- (0xfc31, (2776, 2)),
+ (0x313e, (1097, 1)),
+ (0x1d60a, (4789, 1)),
(0x1d591, (4668, 1)),
- (0xfc85, (2956, 2)),
- (0xfb53, (2492, 1)),
- (0xfb55, (2494, 1)),
- (0xfebd, (3931, 1)),
- (0x2f58, (945, 1)),
+ (0x1e04d, (5316, 1)),
+ (0x1d5c5, (4720, 1)),
+ (0x327a, (1490, 2)),
+ (0x1d68, (193, 1)),
+ (0xff71, (4121, 1)),
(0x1d42e, (4337, 1)),
- (0x1d697, (4930, 1)),
- (0x1f141, (5554, 1)),
- (0x1ee2e, (5327, 1)),
+ (0x1d77a, (5155, 1)),
+ (0xfe44, (3790, 1)),
+ (0x1f132, (5601, 1)),
+ (0x1d5f6, (4769, 1)),
(0x1d77c, (5157, 1)),
- (0xfe9d, (3899, 1)),
+ (0x1d66f, (4890, 1)),
(0x1d7f5, (5276, 1)),
- (0x1eeae, (5414, 1)),
(0xfcd7, (3125, 2)),
- (0x1d480, (4418, 1)),
- (0x1d6e8, (5009, 1)),
- (0x33fe, (2432, 3)),
- (0x1d734, (5085, 1)),
- (0xfc47, (2820, 2)),
- (0xfd37, (3322, 2)),
- (0x1d57, (176, 1)),
- (0x24b7, (788, 1)),
- (0x1d612, (4797, 1)),
- (0xfe4a, (3795, 2)),
- (0x1d48, (162, 1)),
- (0x1ee70, (5364, 1)),
- (0x1fbf6, (5669, 1)),
- (0x1cc, (54, 2)),
- (0x1d599, (4676, 1)),
+ (0x3188, (1171, 1)),
+ (0x1d7a0, (5193, 1)),
+ (0xfbe5, (2610, 1)),
+ (0xff8d, (4149, 1)),
+ (0x107a1, (4266, 1)),
+ (0x1d44e, (4369, 1)),
+ (0x1d528, (4570, 1)),
+ (0x2fc4, (1053, 1)),
+ (0x2024, (289, 1)),
+ (0x10fc, (135, 1)),
+ (0xfdb0, (3618, 3)),
+ (0xfcb4, (3055, 2)),
+ (0x330c, (1717, 4)),
+ (0x316b, (1142, 1)),
+ (0x1f111, (5515, 3)),
+ (0x2fb8, (1041, 1)),
(0x3385, (2129, 2)),
- (0x1d6c3, (4972, 1)),
+ (0x1da9, (211, 1)),
(0x1d73a, (5091, 1)),
- (0x32b9, (1570, 2)),
- (0x107ae, (4279, 1)),
+ (0x3293, (1524, 1)),
+ (0x1d4cf, (4486, 1)),
(0x32d6, (1627, 1)),
- (0xffcd, (4208, 1)),
- (0xfbb1, (2589, 2)),
- (0x1f14d, (5569, 2)),
- (0x3137, (1090, 1)),
- (0xfdf8, (3720, 4)),
- (0xfcfc, (3204, 2)),
+ (0x338b, (2144, 2)),
+ (0x314a, (1109, 1)),
+ (0x1f14d, (5631, 2)),
+ (0x1e9b, (236, 2)),
+ (0x1d64a, (4853, 1)),
+ (0x1d7da, (5249, 1)),
(0xfb17, (2475, 2)),
(0x1d761, (5130, 1)),
(0x2097, (357, 1)),
- (0xfca3, (3021, 2)),
- (0x2f24, (893, 1)),
- (0x1f13f, (5552, 1)),
+ (0x1fc0, (242, 2)),
+ (0x33e3, (2357, 2)),
+ (0x1d6b3, (4956, 1)),
(0x1d5b4, (4703, 1)),
(0xfd17, (3258, 2)),
(0xfc2a, (2762, 2)),
- (0x1ee6c, (5360, 1)),
+ (0x1d76a, (5139, 1)),
(0x1d68a, (4917, 1)),
- (0x2f16, (879, 1)),
- (0x33fb, (2423, 3)),
- (0x336a, (2062, 3)),
- (0x3186, (1169, 1)),
- (0xfd1c, (3268, 2)),
+ (0x1e039, (5296, 1)),
+ (0xfbe9, (2614, 1)),
+ (0x1f107, (5504, 2)),
+ (0x107a4, (4269, 1)),
+ (0x216d, (510, 1)),
+ (0x2092, (352, 1)),
(0xff3d, (4069, 1)),
- (0x1ee92, (5393, 1)),
- (0xfea2, (3904, 1)),
- (0x1d413, (4310, 1)),
- (0x329b, (1532, 1)),
- (0xffb2, (4186, 1)),
- (0xfe12, (3759, 1)),
- (0xfbd3, (2591, 1)),
- (0xff59, (4097, 1)),
- (0x1ee91, (5392, 1)),
- (0x1fbf0, (5663, 1)),
- (0x3329, (1834, 3)),
- (0x1d6ef, (5016, 1)),
+ (0x107b3, (4283, 1)),
+ (0x2f51, (938, 1)),
+ (0xfc59, (2856, 2)),
+ (0x1d529, (4571, 1)),
+ (0x3237, (1376, 3)),
+ (0x3215, (1262, 4)),
+ (0x2465, (561, 1)),
+ (0x1d735, (5086, 1)),
+ (0x107b9, (4289, 1)),
+ (0xfed3, (3953, 1)),
+ (0x203c, (306, 2)),
(0x2f9b, (1012, 1)),
- (0x1da0, (202, 1)),
- (0xfe86, (3869, 2)),
+ (0x2f66, (959, 1)),
+ (0xfd75, (3447, 3)),
+ (0x1d634, (4831, 1)),
(0xe33, (120, 2)),
- (0x1d6d6, (4991, 1)),
+ (0x1dba, (228, 1)),
(0xfd5a, (3366, 3)),
(0x2494, (685, 3)),
- (0x1d6cb, (4980, 1)),
- (0x1d5d1, (4732, 1)),
- (0x328c, (1517, 1)),
+ (0x315d, (1128, 1)),
+ (0x1d509, (4543, 1)),
+ (0x1d797, (5184, 1)),
(0x334f, (1986, 3)),
- (0x309c, (1078, 2)),
(0x1d7fb, (5282, 1)),
- (0x33a8, (2213, 4)),
- (0x3323, (1817, 3)),
+ (0x2463, (559, 1)),
+ (0xff02, (4010, 1)),
+ (0xfb61, (2506, 1)),
(0x33ec, (2378, 3)),
- (0x1d770, (5145, 1)),
- (0x1078a, (4243, 1)),
+ (0x1d5f7, (4770, 1)),
(0x33ae, (2231, 5)),
+ (0xfc89, (2964, 2)),
(0x1d738, (5089, 1)),
- (0x2f10, (873, 1)),
- (0x1f22a, (5616, 1)),
+ (0x1e030, (5287, 1)),
+ (0x1f22a, (5678, 1)),
(0x2f4b, (932, 1)),
- (0x246b, (569, 2)),
- (0x1d67f, (4906, 1)),
- (0x3348, (1958, 4)),
- (0xff24, (4044, 1)),
+ (0x3302, (1679, 5)),
+ (0x1d4d, (167, 1)),
+ (0x1d4d7, (4494, 1)),
+ (0xfc4d, (2832, 2)),
(0x1d4e5, (4508, 1)),
(0x1d542, (4594, 1)),
- (0x248c, (666, 2)),
- (0x107a7, (4272, 1)),
- (0xfbf1, (2636, 3)),
- (0x2fa5, (1022, 1)),
- (0x1d521, (4563, 1)),
- (0xfd11, (3246, 2)),
- (0x24b5, (784, 3)),
+ (0x3336, (1890, 5)),
+ (0x2fb6, (1039, 1)),
+ (0x2fa1, (1018, 1)),
+ (0x1d71a, (5059, 1)),
+ (0xfca4, (3023, 2)),
+ (0x1d618, (4803, 1)),
+ (0xfcc2, (3083, 2)),
(0x1dac, (214, 1)),
(0xfcb8, (3063, 2)),
- (0x1d713, (5052, 1)),
+ (0xfb7c, (2533, 1)),
(0x317f, (1162, 1)),
- (0x1d5f8, (4771, 1)),
- (0xfdb2, (3624, 3)),
+ (0x1d7e0, (5255, 1)),
+ (0xffc6, (4203, 1)),
(0x3150, (1115, 1)),
- (0xfef5, (3987, 3)),
- (0xfed4, (3954, 1)),
- (0x2479, (602, 3)),
- (0x1ee5d, (5351, 1)),
+ (0x3276, (1482, 2)),
+ (0x328d, (1518, 1)),
+ (0x32bc, (1576, 2)),
+ (0x133, (26, 2)),
+ (0x1f245, (5711, 3)),
(0x213e, (427, 1)),
- (0x1d412, (4309, 1)),
- (0x2f1b, (884, 1)),
- (0xff2b, (4051, 1)),
- (0x2488, (658, 2)),
- (0xfc2f, (2772, 2)),
- (0x1d498, (4442, 1)),
- (0x2f7a, (979, 1)),
+ (0xfb66, (2511, 1)),
+ (0x2f89, (994, 1)),
+ (0x1f12e, (5597, 2)),
+ (0x1d4f1, (4520, 1)),
+ (0xfc91, (2980, 2)),
+ (0xff53, (4091, 1)),
(0x3306, (1695, 3)),
(0x2473, (585, 2)),
- (0xfc8b, (2968, 2)),
- (0xfb9f, (2568, 1)),
+ (0x1dae, (216, 1)),
+ (0xfbac, (2583, 1)),
+ (0x33b4, (2250, 2)),
(0x3214, (1258, 4)),
- (0x2230, (553, 3)),
- (0x1d651, (4860, 1)),
- (0x2f2c, (901, 1)),
- (0xfc1e, (2738, 2)),
- (0x1d64f, (4858, 1)),
+ (0x32c2, (1588, 2)),
+ (0x24ca, (807, 1)),
+ (0x1d533, (4581, 1)),
+ (0x33f8, (2414, 3)),
+ (0xff44, (4076, 1)),
(0x1d4f7, (4526, 1)),
- (0x3158, (1123, 1)),
+ (0x1078c, (4245, 1)),
(0xffca, (4205, 1)),
- (0x3000, (1071, 1)),
- (0x1db0, (218, 1)),
- (0x32ec, (1649, 1)),
- (0xfeed, (3979, 1)),
- (0x3372, (2086, 2)),
- (0x1f134, (5541, 1)),
- (0x1ee2c, (5325, 1)),
- (0xff4f, (4087, 1)),
+ (0xfe17, (3764, 1)),
+ (0xfbe1, (2606, 1)),
+ (0xfc32, (2778, 2)),
+ (0x1d625, (4816, 1)),
+ (0x140, (30, 2)),
+ (0xfeab, (3913, 1)),
+ (0x1d6d3, (4988, 1)),
+ (0x1d7a8, (5201, 1)),
(0xfb5d, (2502, 1)),
- (0x1d4eb, (4514, 1)),
- (0x1d645, (4848, 1)),
+ (0x3220, (1307, 3)),
+ (0x24a5, (736, 3)),
(0x1d4b3, (4461, 1)),
- (0x322f, (1352, 3)),
- (0x1d5fe, (4777, 1)),
+ (0x107ad, (4278, 1)),
+ (0x3399, (2176, 2)),
(0x2f36, (911, 1)),
- (0x33cb, (2301, 2)),
- (0x2f28, (897, 1)),
- (0xff26, (4046, 1)),
- (0x1d74f, (5112, 1)),
- (0xfd66, (3402, 3)),
- (0x1d5a2, (4685, 1)),
- (0x2d6f, (854, 1)),
+ (0xfc74, (2922, 2)),
+ (0x1d5a5, (4688, 1)),
+ (0x2fc3, (1052, 1)),
+ (0x1e06c, (5347, 1)),
+ (0x32d9, (1630, 1)),
+ (0x1d544, (4596, 1)),
+ (0x3221, (1310, 3)),
(0x1d512, (4550, 1)),
- (0x3379, (2102, 3)),
- (0xfcee, (3173, 2)),
- (0x1d750, (5113, 1)),
- (0xfba8, (2579, 1)),
- (0x385, (92, 3)),
+ (0xfece, (3948, 1)),
+ (0xfcf7, (3194, 2)),
+ (0xfb82, (2539, 1)),
+ (0x1d6b8, (4961, 1)),
+ (0x3194, (1180, 1)),
(0xffe5, (4226, 1)),
- (0x323c, (1391, 3)),
- (0x1fbf1, (5664, 1)),
+ (0x32e8, (1645, 1)),
+ (0x24af, (766, 3)),
+ (0x1fbf1, (5726, 1)),
(0xfbfc, (2669, 1)),
- (0x33b0, (2242, 2)),
- (0xfdb1, (3621, 3)),
- (0xfdbf, (3663, 3)),
- (0x330e, (1725, 4)),
- (0x1d5a1, (4684, 1)),
- (0x1db3, (221, 1)),
- (0x1ee4d, (5342, 1)),
+ (0xb3, (7, 1)),
+ (0x24c6, (803, 1)),
+ (0x1d749, (5106, 1)),
+ (0xfd9a, (3552, 3)),
+ (0x1d4b5, (4463, 1)),
+ (0xfede, (3964, 1)),
(0x1d6e7, (5008, 1)),
(0x2f48, (929, 1)),
- (0x1d66e, (4889, 1)),
+ (0x1d4e3, (4506, 1)),
+ (0x1eea6, (5469, 1)),
(0x2f97, (1008, 1)),
- (0x1d797, (5184, 1)),
+ (0x24a8, (745, 3)),
(0x1d562, (4621, 1)),
- (0xff52, (4090, 1)),
- (0x1d7b4, (5213, 1)),
- (0xfca9, (3033, 2)),
- (0x1d63b, (4838, 1)),
- (0x2f39, (914, 1)),
+ (0x2102, (371, 1)),
+ (0x1d61b, (4806, 1)),
+ (0x3176, (1153, 1)),
+ (0x1d60, (185, 1)),
(0x1d698, (4931, 1)),
- (0x2174, (521, 1)),
- (0xfd20, (3276, 2)),
- (0x1d69d, (4936, 1)),
- (0x24e8, (837, 1)),
- (0x213d, (426, 1)),
+ (0xfed9, (3959, 1)),
+ (0x1d61f, (4810, 1)),
+ (0x1ee6a, (5421, 1)),
+ (0xfd09, (3230, 2)),
+ (0x1d561, (4620, 1)),
+ (0x1d4e1, (4504, 1)),
(0x1d7f4, (5275, 1)),
- (0x1d779, (5154, 1)),
- (0x3215, (1262, 4)),
- (0xfb28, (2485, 1)),
- (0x33f4, (2402, 3)),
- (0x1d624, (4815, 1)),
- (0x1d577, (4642, 1)),
- (0xfbd5, (2593, 1)),
- (0xfedc, (3962, 1)),
+ (0x2f68, (961, 1)),
+ (0x1eeb3, (5481, 1)),
+ (0x1e062, (5337, 1)),
+ (0x2fbe, (1047, 1)),
+ (0x2047, (310, 2)),
+ (0xff23, (4043, 1)),
+ (0xfe77, (3840, 2)),
+ (0x1d75b, (5124, 1)),
(0x1d4b9, (4467, 1)),
(0x33ba, (2262, 2)),
- (0x2fb0, (1033, 1)),
- (0x325f, (1450, 2)),
+ (0x2482, (634, 4)),
(0xffb0, (4184, 1)),
- (0xfcef, (3175, 2)),
- (0x1f221, (5607, 1)),
- (0x1d691, (4924, 1)),
- (0x1d6dd, (4998, 1)),
- (0x2f46, (927, 1)),
+ (0x3164, (1135, 1)),
+ (0x24d1, (814, 1)),
+ (0x24db, (824, 1)),
+ (0x1d5bc, (4711, 1)),
+ (0x3396, (2170, 2)),
+ (0x1d590, (4667, 1)),
(0x1d5da, (4741, 1)),
- (0x1d5c1, (4716, 1)),
- (0x1d526, (4568, 1)),
- (0x338d, (2148, 2)),
+ (0x1d454, (4375, 1)),
+ (0x1ee24, (5382, 1)),
+ (0x2134, (416, 1)),
(0x1d7a5, (5198, 1)),
- (0xffbe, (4198, 1)),
+ (0x1e056, (5325, 1)),
(0x32f7, (1660, 1)),
- (0x1f14a, (5563, 2)),
- (0xff28, (4048, 1)),
- (0xff69, (4113, 1)),
+ (0xfe72, (3834, 2)),
+ (0x1e04c, (5315, 1)),
+ (0xfef0, (3982, 1)),
(0x2f0f, (872, 1)),
- (0x1d4d7, (4494, 1)),
+ (0x2f88, (993, 1)),
(0x1d4cd, (4484, 1)),
- (0x1ee2d, (5326, 1)),
- (0xa0, (0, 1)),
- (0x1d726, (5071, 1)),
+ (0x1d54b, (4599, 1)),
+ (0x1d7ba, (5219, 1)),
+ (0x1fbf, (240, 2)),
(0xffeb, (4231, 1)),
- (0xfdf1, (3693, 3)),
- (0xfe16, (3763, 1)),
- (0x1d754, (5117, 1)),
+ (0x1d5ee, (4761, 1)),
+ (0xff72, (4122, 1)),
+ (0x1f218, (5660, 1)),
+ (0x3234, (1367, 3)),
(0x1d7ef, (5270, 1)),
- (0x2116, (394, 2)),
- (0x33c9, (2297, 2)),
- (0x1d71d, (5062, 1)),
- (0xfea8, (3910, 1)),
+ (0x1d425, (4328, 1)),
+ (0x1d6ce, (4983, 1)),
+ (0x1ee83, (5441, 1)),
+ (0x1e04f, (5318, 1)),
(0x1d483, (4421, 1)),
- (0x1d6a0, (4939, 1)),
- (0x1d443, (4358, 1)),
+ (0xff73, (4123, 1)),
(0xff1c, (4036, 1)),
- (0x1d4c6, (4477, 1)),
- (0x2fd5, (1070, 1)),
+ (0x33f2, (2396, 3)),
+ (0x217b, (536, 3)),
+ (0x2004, (279, 1)),
(0x1d6a4, (4943, 1)),
- (0xfb6a, (2515, 1)),
- (0xfb06, (2465, 2)),
- (0xfc2b, (2764, 2)),
- (0x1f125, (5513, 3)),
- (0x2fb7, (1040, 1)),
- (0x2111, (390, 1)),
- (0x2fbe, (1047, 1)),
- (0x1d705, (5038, 1)),
+ (0x326f, (1468, 2)),
+ (0xfc57, (2852, 2)),
+ (0x32f2, (1655, 1)),
+ (0x1d646, (4849, 1)),
+ (0x1d412, (4309, 1)),
+ (0x249a, (703, 3)),
+ (0x1f127, (5581, 3)),
(0x330b, (1714, 3)),
- (0x1d463, (4389, 1)),
+ (0xfc5c, (2862, 2)),
+ (0x2f46, (927, 1)),
(0x1d40a, (4301, 1)),
- (0x1d4dc, (4499, 1)),
- (0x1d537, (4585, 1)),
+ (0x24d8, (821, 1)),
+ (0x1d77e, (5159, 1)),
(0xfd3a, (3328, 2)),
- (0x1d78, (196, 1)),
+ (0x1d64, (189, 1)),
(0x315e, (1129, 1)),
- (0xfbdf, (2604, 1)),
- (0xff01, (4009, 1)),
- (0x3216, (1266, 4)),
- (0x1d4c8, (4479, 1)),
- (0xfce5, (3155, 2)),
+ (0x319d, (1189, 1)),
+ (0x1ee3b, (5399, 1)),
+ (0xfb26, (2483, 1)),
+ (0x1d4fe, (4533, 1)),
+ (0x2480, (626, 4)),
(0x216e, (511, 1)),
- (0x2011, (286, 1)),
- (0x1d593, (4670, 1)),
- (0x1d728, (5073, 1)),
- (0x1d7d4, (5243, 1)),
- (0x1ee13, (5305, 1)),
- (0x1d48a, (4428, 1)),
+ (0x1e03b, (5298, 1)),
+ (0x1d6b6, (4959, 1)),
+ (0xbd, (18, 3)),
+ (0x1d42, (156, 1)),
+ (0x24a1, (724, 3)),
+ (0x33df, (2348, 3)),
(0xffb5, (4189, 1)),
- (0x1d77b, (5156, 1)),
- (0xffd3, (4212, 1)),
- (0x1c6, (41, 3)),
- (0x1d778, (5153, 1)),
- (0x1d690, (4923, 1)),
- (0xfefc, (4007, 2)),
- (0x1d4c3, (4475, 1)),
- (0xfd6c, (3420, 3)),
- (0x32f2, (1655, 1)),
+ (0x1e042, (5305, 1)),
+ (0xfc9a, (3001, 3)),
+ (0x1d5eb, (4758, 1)),
+ (0xfcbf, (3077, 2)),
+ (0xfd58, (3360, 3)),
+ (0x2464, (560, 1)),
+ (0xfe3c, (3782, 1)),
+ (0x3246, (1417, 1)),
+ (0x2a0c, (840, 4)),
+ (0xfdb4, (3630, 3)),
(0xfd96, (3540, 3)),
(0x1d407, (4298, 1)),
- (0x1d6eb, (5012, 1)),
(0x3257, (1434, 2)),
(0x207a, (329, 1)),
+ (0x3d5, (102, 1)),
(0x336b, (2065, 3)),
- (0x1d75c, (5125, 1)),
- (0xff0e, (4022, 1)),
- (0xffe9, (4229, 1)),
+ (0x32d0, (1621, 1)),
+ (0x1eeae, (5476, 1)),
(0x1d5d5, (4736, 1)),
- (0x1d6db, (4996, 1)),
- (0x1d451, (4372, 1)),
- (0x1d74c, (5109, 1)),
- (0x1f1, (56, 2)),
+ (0x1eead, (5475, 1)),
+ (0x2f1a, (883, 1)),
+ (0xfee0, (3966, 1)),
+ (0x2fa3, (1020, 1)),
+ (0x1eeb2, (5480, 1)),
(0xfbf5, (2648, 3)),
- (0x1d43c, (4351, 1)),
+ (0x1e067, (5342, 1)),
(0x3174, (1151, 1)),
- (0xfd68, (3408, 3)),
(0xfbe0, (2605, 1)),
- (0x1f144, (5557, 1)),
+ (0x1ee51, (5407, 1)),
+ (0xff3f, (4071, 1)),
(0x3165, (1136, 1)),
- (0x1da5, (207, 1)),
- (0xfc90, (2978, 2)),
- (0x1d55c, (4615, 1)),
- (0xfc24, (2750, 2)),
+ (0x323d, (1394, 3)),
+ (0x1d72d, (5078, 1)),
+ (0x1d79b, (5188, 1)),
+ (0x1d4b6, (4464, 1)),
(0xfc54, (2846, 2)),
- (0xfc2e, (2770, 2)),
- (0x1d634, (4831, 1)),
- (0x1d759, (5122, 1)),
+ (0x2fb0, (1033, 1)),
+ (0x3228, (1331, 3)),
+ (0x1d3a, (149, 1)),
(0x3213, (1254, 4)),
- (0x1d43b, (4350, 1)),
- (0x2f57, (944, 1)),
- (0x1d7ba, (5219, 1)),
- (0x1daf, (217, 1)),
- (0xfb96, (2559, 1)),
+ (0x1e065, (5340, 1)),
+ (0x1d4ff, (4534, 1)),
+ (0x1d734, (5085, 1)),
+ (0x1d78b, (5172, 1)),
+ (0xa69d, (2439, 1)),
(0x2f96, (1007, 1)),
- (0x317a, (1157, 1)),
- (0x1f11f, (5495, 3)),
- (0x1d6a3, (4942, 1)),
- (0x1d41, (155, 1)),
- (0x1f124, (5510, 3)),
- (0x2f17, (880, 1)),
- (0x3272, (1474, 2)),
+ (0xfc39, (2792, 2)),
+ (0x1f14c, (5629, 2)),
+ (0xfedb, (3961, 1)),
+ (0x2495, (688, 3)),
+ (0x1f124, (5572, 3)),
+ (0x1d7dc, (5251, 1)),
+ (0x1e053, (5322, 1)),
(0x2f9a, (1011, 1)),
(0xfd61, (3387, 3)),
- (0x1d5ee, (4761, 1)),
- (0x1eeab, (5411, 1)),
+ (0xfd02, (3216, 2)),
+ (0x1eeab, (5473, 1)),
(0x1079f, (4264, 1)),
- (0xf77, (129, 3)),
- (0xfd1f, (3274, 2)),
- (0x24c3, (800, 1)),
+ (0x1ee86, (5444, 1)),
+ (0xfd9b, (3555, 3)),
+ (0x1d50f, (4547, 1)),
(0xfc8e, (2974, 2)),
- (0x2499, (700, 3)),
+ (0x1d513, (4551, 1)),
(0x1d54f, (4603, 1)),
- (0x1d33, (142, 1)),
- (0xff15, (4029, 1)),
+ (0x2173, (519, 2)),
+ (0x2f5a, (947, 1)),
+ (0x1d78c, (5173, 1)),
(0x1d767, (5136, 1)),
- (0x33ce, (2307, 2)),
(0xfdab, (3603, 3)),
+ (0x2f01, (858, 1)),
(0xfc3f, (2804, 2)),
- (0x1d5e6, (4753, 1)),
- (0x33a9, (2217, 2)),
- (0x325a, (1440, 2)),
+ (0x33c6, (2288, 4)),
+ (0x1d6c0, (4969, 1)),
+ (0xfb98, (2561, 1)),
(0x3151, (1116, 1)),
- (0x3335, (1887, 3)),
- (0x1d702, (5035, 1)),
+ (0x1ee09, (5357, 1)),
+ (0xfd8a, (3510, 3)),
(0xff4d, (4085, 1)),
- (0xffe8, (4228, 1)),
- (0xba, (14, 1)),
- (0xfc12, (2714, 2)),
- (0xff03, (4011, 1)),
- (0xfe31, (3771, 1)),
- (0x1d419, (4316, 1)),
- (0x32b3, (1558, 2)),
+ (0x1d729, (5074, 1)),
+ (0xfeb4, (3922, 1)),
+ (0xfba4, (2573, 2)),
+ (0x1d6b9, (4962, 1)),
+ (0x1d6d0, (4985, 1)),
+ (0x318d, (1176, 1)),
+ (0x1f10a, (5510, 2)),
(0x2017, (287, 2)),
- (0xfee7, (3973, 1)),
- (0x24a5, (736, 3)),
- (0x132, (24, 2)),
+ (0x1f121, (5563, 3)),
+ (0x1d41f, (4322, 1)),
(0x1d415, (4312, 1)),
(0x319b, (1187, 1)),
+ (0x1d6dd, (4998, 1)),
(0x337f, (2115, 4)),
- (0x313c, (1095, 1)),
- (0x1d769, (5138, 1)),
- (0x3394, (2165, 3)),
+ (0x3260, (1452, 1)),
+ (0x1fbf6, (5731, 1)),
(0xfb7b, (2532, 1)),
- (0xff4b, (4083, 1)),
- (0x1d522, (4564, 1)),
+ (0x1d752, (5115, 1)),
+ (0x2f50, (937, 1)),
(0xfebf, (3933, 1)),
+ (0x1d658, (4867, 1)),
(0xfdfa, (3727, 18)),
- (0x1f231, (5623, 1)),
+ (0x336e, (2074, 3)),
(0xff51, (4089, 1)),
- (0x1d65a, (4869, 1)),
- (0x1d7c6, (5231, 1)),
- (0xfeb8, (3926, 1)),
- (0xfeee, (3980, 1)),
- (0x1ee61, (5353, 1)),
+ (0xfc16, (2722, 2)),
+ (0x1d5d, (182, 1)),
+ (0x24b8, (789, 1)),
+ (0xab5d, (2447, 1)),
+ (0x1d41b, (4318, 1)),
(0xfb68, (2513, 1)),
- (0x1f103, (5434, 2)),
- (0x1d45a, (4380, 1)),
- (0x1d54d, (4601, 1)),
- (0xffc5, (4202, 1)),
- (0xfcff, (3210, 2)),
+ (0x1f103, (5496, 2)),
+ (0x2f53, (940, 1)),
+ (0x3352, (1996, 2)),
+ (0x1d5f9, (4772, 1)),
+ (0x1d494, (4438, 1)),
(0x1d52c, (4574, 1)),
(0x24e6, (835, 1)),
- (0x1ee2b, (5324, 1)),
- (0x3316, (1759, 6)),
- (0x1d58b, (4662, 1)),
- (0xfdf6, (3712, 4)),
- (0xff43, (4075, 1)),
+ (0x2faf, (1032, 1)),
+ (0x32c1, (1586, 2)),
+ (0x2b3, (65, 1)),
+ (0xfec1, (3935, 1)),
+ (0x1f147, (5622, 1)),
(0x384, (90, 2)),
- (0x1d61c, (4807, 1)),
+ (0x24ba, (791, 1)),
(0xff87, (4143, 1)),
- (0x2092, (352, 1)),
- (0x2f37, (912, 1)),
- (0x1f248, (5658, 3)),
+ (0x1d669, (4884, 1)),
+ (0xff35, (4061, 1)),
+ (0xfefb, (4005, 2)),
(0x1d7fa, (5281, 1)),
- (0x215e, (478, 3)),
- (0x1d731, (5082, 1)),
- (0xfd5e, (3378, 3)),
- (0x1f219, (5599, 1)),
+ (0x1d50, (169, 1)),
+ (0xfef2, (3984, 1)),
+ (0x3245, (1416, 1)),
+ (0x1d78a, (5171, 1)),
(0xfb75, (2526, 1)),
- (0x1d5b9, (4708, 1)),
- (0x10784, (4238, 1)),
+ (0x1ee91, (5454, 1)),
+ (0x33e9, (2369, 3)),
+ (0x2139, (421, 1)),
(0x3258, (1436, 2)),
- (0x32bd, (1578, 2)),
+ (0x3287, (1512, 1)),
(0x317d, (1160, 1)),
(0x24ae, (763, 3)),
- (0x33be, (2270, 2)),
- (0xfc99, (2998, 3)),
+ (0xff98, (4160, 1)),
(0x1d596, (4673, 1)),
- (0x1d4f8, (4527, 1)),
- (0xfdb0, (3618, 3)),
- (0x3282, (1507, 1)),
+ (0x1d6b0, (4953, 1)),
+ (0x1e069, (5344, 1)),
+ (0x1f22c, (5680, 1)),
+ (0xff42, (4074, 1)),
(0xffbb, (4195, 1)),
- (0xfeec, (3978, 1)),
- (0x1d6f7, (5024, 1)),
- (0x2f82, (987, 1)),
- (0xfb04, (2460, 3)),
- (0x2f5e, (951, 1)),
- (0x1d637, (4834, 1)),
- (0x1d5ea, (4757, 1)),
- (0x1d6fd, (5030, 1)),
+ (0xff1d, (4037, 1)),
+ (0x1d503, (4538, 1)),
+ (0x1d6e1, (5002, 1)),
+ (0xfcc7, (3093, 2)),
+ (0xff60, (4104, 1)),
+ (0x1ee5d, (5413, 1)),
+ (0x1f115, (5527, 3)),
(0x1d4c9, (4480, 1)),
(0x1d567, (4626, 1)),
- (0x3d2, (97, 1)),
+ (0x1d67e, (4905, 1)),
(0x33ed, (2381, 3)),
+ (0x1e068, (5343, 1)),
(0xfda6, (3588, 3)),
- (0x24bf, (796, 1)),
+ (0x33ca, (2299, 2)),
(0x1d7f8, (5279, 1)),
(0x33ef, (2387, 3)),
- (0x1d659, (4868, 1)),
- (0x1d7c9, (5234, 1)),
+ (0xfd50, (3336, 3)),
+ (0x248e, (670, 2)),
(0xfcd4, (3119, 2)),
- (0xfb83, (2540, 1)),
- (0x2472, (583, 2)),
- (0x1d4ee, (4517, 1)),
- (0xffe0, (4220, 1)),
+ (0xfe98, (3894, 1)),
+ (0x32a7, (1544, 1)),
+ (0xffa9, (4177, 1)),
(0x2172, (516, 3)),
- (0xfe69, (3827, 1)),
- (0x2f1f, (888, 1)),
+ (0x1d5a, (179, 1)),
+ (0xff27, (4047, 1)),
+ (0x1dad, (215, 1)),
(0x1d766, (5135, 1)),
- (0x107a6, (4271, 1)),
(0x24df, (828, 1)),
+ (0xfeae, (3916, 1)),
(0xfe35, (3775, 1)),
- (0xfd7c, (3468, 3)),
- (0xffea, (4230, 1)),
+ (0x1d5a3, (4686, 1)),
+ (0x1d650, (4859, 1)),
(0x1d62a, (4821, 1)),
(0x1d4dd, (4500, 1)),
- (0x1eea5, (5406, 1)),
+ (0xff5b, (4099, 1)),
(0x1d464, (4390, 1)),
- (0x2080, (335, 1)),
- (0x33af, (2236, 6)),
+ (0xfc34, (2782, 2)),
+ (0x1d6bc, (4965, 1)),
(0x1d71c, (5061, 1)),
- (0x1ee9a, (5401, 1)),
- (0xfe5d, (3816, 1)),
- (0xff76, (4126, 1)),
- (0xff71, (4121, 1)),
+ (0x2128, (409, 1)),
+ (0xfb74, (2525, 1)),
+ (0xfced, (3171, 2)),
+ (0xa69c, (2438, 1)),
(0x2a74, (844, 3)),
- (0x1d764, (5133, 1)),
- (0xff23, (4043, 1)),
- (0x1d5ed, (4760, 1)),
- (0xfefb, (4005, 2)),
- (0x2fb6, (1039, 1)),
+ (0xfef8, (3996, 3)),
+ (0x1d63a, (4837, 1)),
+ (0xfcb5, (3057, 2)),
+ (0x1d435, (4344, 1)),
+ (0x1ee69, (5420, 1)),
(0x2036, (301, 2)),
(0x1fbd, (238, 2)),
(0x1d5fb, (4774, 1)),
+ (0x1d5b9, (4708, 1)),
(0xfd57, (3357, 3)),
- (0x1d59c, (4679, 1)),
(0x318b, (1174, 1)),
- (0x1d4a2, (4449, 1)),
- (0xfcde, (3139, 2)),
- (0x2110, (389, 1)),
+ (0xfdf5, (3708, 4)),
+ (0xfe7c, (3850, 2)),
+ (0xfc9b, (3004, 3)),
(0xfd14, (3252, 2)),
- (0x1d6e3, (5004, 1)),
- (0xfd8d, (3519, 3)),
+ (0x1d51b, (4558, 1)),
+ (0x1ee67, (5418, 1)),
+ (0x338a, (2142, 2)),
(0xff40, (4072, 1)),
- (0x2f5f, (952, 1)),
(0xfb50, (2489, 1)),
- (0xff45, (4077, 1)),
- (0x1ee17, (5309, 1)),
- (0xfe9a, (3896, 1)),
- (0x1d4cf, (4486, 1)),
- (0x1d63, (188, 1)),
+ (0x1d4c7, (4478, 1)),
+ (0x1079c, (4261, 1)),
+ (0x1ee17, (5371, 1)),
+ (0x1f190, (5644, 2)),
+ (0x1d5f0, (4763, 1)),
+ (0x32b3, (1558, 2)),
(0x1d7d5, (5244, 1)),
- (0x327d, (1499, 4)),
(0xfe64, (3823, 1)),
- (0x2f84, (989, 1)),
+ (0xfb8e, (2551, 1)),
+ (0xfc07, (2692, 2)),
(0xfb58, (2497, 1)),
- (0x1d592, (4669, 1)),
- (0x336c, (2068, 3)),
- (0x3202, (1198, 3)),
- (0x1d5e5, (4752, 1)),
- (0x1d45, (159, 1)),
- (0x1d708, (5041, 1)),
- (0xfe11, (3758, 1)),
+ (0x1d75c, (5125, 1)),
+ (0x2168, (501, 2)),
+ (0x1d745, (5102, 1)),
+ (0x1ee4e, (5405, 1)),
+ (0x2fcc, (1061, 1)),
+ (0x1d781, (5162, 1)),
+ (0x313c, (1095, 1)),
(0x1fde, (259, 3)),
(0x2fbd, (1046, 1)),
- (0xfd95, (3537, 3)),
- (0xfb67, (2512, 1)),
- (0xa69d, (2439, 1)),
+ (0x1d5d4, (4735, 1)),
+ (0x1d500, (4535, 1)),
+ (0xfc80, (2946, 2)),
(0x33a3, (2199, 3)),
(0x1d502, (4537, 1)),
- (0xfc59, (2856, 2)),
+ (0x32d1, (1622, 1)),
(0xfd97, (3543, 3)),
- (0x2fbb, (1044, 1)),
+ (0x1d489, (4427, 1)),
(0xffd6, (4215, 1)),
(0xfcc3, (3085, 2)),
(0x2493, (682, 3)),
(0x1d6c6, (4975, 1)),
- (0xfe10, (3757, 1)),
- (0x1d585, (4656, 1)),
- (0x1d75a, (5123, 1)),
- (0x1ee05, (5291, 1)),
+ (0x208d, (348, 1)),
+ (0xfb06, (2465, 2)),
+ (0x319c, (1188, 1)),
+ (0x1da1, (203, 1)),
(0xff1b, (4035, 1)),
- (0xfb99, (2562, 1)),
+ (0xfee1, (3967, 1)),
(0xfc65, (2887, 3)),
- (0x10798, (4257, 1)),
- (0x24be, (795, 1)),
+ (0xfc14, (2718, 2)),
+ (0xfea2, (3904, 1)),
(0xfb91, (2554, 1)),
- (0x1f12d, (5533, 2)),
- (0xfc63, (2881, 3)),
- (0x1c8, (46, 2)),
+ (0x3350, (1989, 3)),
+ (0x1d6c8, (4977, 1)),
+ (0x1d677, (4898, 1)),
(0x10783, (4237, 1)),
(0x1da3, (205, 1)),
(0x1d51, (170, 1)),
(0x3261, (1453, 1)),
- (0xfe72, (3834, 2)),
+ (0xfc78, (2930, 2)),
+ (0x3363, (2041, 3)),
(0x2f3c, (917, 1)),
- (0xfdf3, (3700, 4)),
- (0x1d3c, (150, 1)),
- (0xfd92, (3528, 3)),
- (0x1d5cf, (4730, 1)),
+ (0x2f27, (896, 1)),
+ (0x32a3, (1540, 1)),
+ (0x1fbf5, (5730, 1)),
(0x2b4, (66, 1)),
- (0xfd6a, (3414, 3)),
- (0xfcc2, (3083, 2)),
- (0x2149, (434, 1)),
- (0x1d655, (4864, 1)),
+ (0x3286, (1511, 1)),
+ (0x2f17, (880, 1)),
+ (0x1d5cc, (4727, 1)),
+ (0x1f230, (5684, 1)),
+ (0xfb03, (2457, 3)),
(0x24ce, (811, 1)),
- (0xfe18, (3765, 1)),
- (0xfb52, (2491, 1)),
- (0x1f123, (5507, 3)),
- (0x2460, (556, 1)),
- (0xfbf0, (2633, 3)),
- (0xfb6b, (2516, 1)),
+ (0x2f30, (905, 1)),
+ (0xfd60, (3384, 3)),
+ (0x1f123, (5569, 3)),
+ (0x1d532, (4580, 1)),
+ (0x1f21e, (5666, 1)),
(0x3353, (1998, 4)),
- (0x330f, (1729, 4)),
- (0x333e, (1923, 4)),
+ (0x1d9b, (197, 1)),
+ (0x1f104, (5498, 2)),
+ (0x1f21b, (5663, 1)),
(0xfe52, (3806, 1)),
- (0x1d557, (4610, 1)),
+ (0xfd3b, (3330, 2)),
(0x2f61, (954, 1)),
(0xfc00, (2673, 3)),
- (0x1f129, (5525, 3)),
+ (0x1ee71, (5427, 1)),
(0x3f0, (104, 1)),
- (0x1ee0d, (5299, 1)),
- (0x1d55, (174, 1)),
- (0xff6d, (4117, 1)),
- (0x1d6a8, (4945, 1)),
- (0xff5f, (4103, 1)),
- (0x1ee96, (5397, 1)),
+ (0x1d7e4, (5259, 1)),
+ (0xfc5d, (2864, 2)),
+ (0x1d670, (4891, 1)),
+ (0xfe33, (3773, 1)),
+ (0x1d57d, (4648, 1)),
+ (0xfe6b, (3829, 1)),
(0x3233, (1364, 3)),
- (0xfb23, (2480, 1)),
+ (0x2f21, (890, 1)),
(0xfc15, (2720, 2)),
(0x1d55f, (4618, 1)),
- (0x2faa, (1027, 1)),
- (0x1d7aa, (5203, 1)),
- (0x322b, (1340, 3)),
- (0x326b, (1463, 1)),
+ (0xfd64, (3396, 3)),
+ (0x1d49a, (4444, 1)),
+ (0xfe7b, (3848, 2)),
+ (0x1d762, (5131, 1)),
(0x1d6e0, (5001, 1)),
- (0x1d433, (4342, 1)),
+ (0xfeb5, (3923, 1)),
(0x1d46b, (4397, 1)),
- (0xfd22, (3280, 2)),
+ (0x1db6, (224, 1)),
(0x3141, (1100, 1)),
- (0x2124, (408, 1)),
- (0x3296, (1527, 1)),
- (0x1d60e, (4793, 1)),
- (0xfd30, (3308, 2)),
- (0x1d7e9, (5264, 1)),
+ (0xfe9c, (3898, 1)),
+ (0x1d484, (4422, 1)),
+ (0x329d, (1534, 1)),
+ (0x1d530, (4578, 1)),
+ (0xfd32, (3312, 2)),
(0xfc5f, (2869, 3)),
- (0xfd01, (3214, 2)),
+ (0x1ee7b, (5435, 1)),
(0xf0c, (128, 1)),
- (0x24ea, (839, 1)),
- (0xfebc, (3930, 1)),
+ (0x1d56f, (4634, 1)),
+ (0x1d6aa, (4947, 1)),
+ (0x33dc, (2341, 2)),
(0x24e3, (832, 1)),
- (0x1d76c, (5141, 1)),
- (0x1f22e, (5620, 1)),
- (0x1d626, (4817, 1)),
- (0x1eead, (5413, 1)),
+ (0x1f22e, (5682, 1)),
+ (0x1d4b7, (4465, 1)),
+ (0x1d5d1, (4732, 1)),
(0x1d7a6, (5199, 1)),
- (0xfe70, (3830, 2)),
- (0x1d7c7, (5232, 1)),
- (0xfd35, (3318, 2)),
+ (0x2f4e, (935, 1)),
+ (0x1d6ae, (4951, 1)),
+ (0x3f2, (106, 1)),
+ (0x3280, (1505, 1)),
(0x1d3e, (152, 1)),
- (0x1d492, (4436, 1)),
- (0xfe3b, (3781, 1)),
- (0x2088, (343, 1)),
+ (0xfbef, (2630, 3)),
+ (0x1f102, (5494, 2)),
(0xfe54, (3807, 1)),
- (0xffc4, (4201, 1)),
- (0x1d6be, (4967, 1)),
- (0xfb9d, (2566, 1)),
+ (0x3263, (1455, 1)),
+ (0xff9b, (4163, 1)),
+ (0x1d584, (4655, 1)),
+ (0x3351, (1992, 4)),
(0x3156, (1121, 1)),
- (0x3357, (2015, 3)),
(0xfbf2, (2639, 3)),
(0xfb02, (2455, 2)),
- (0x1ee1c, (5314, 1)),
- (0xfd28, (3292, 2)),
- (0xfb57, (2496, 1)),
- (0x1d67c, (4903, 1)),
- (0x676, (114, 2)),
+ (0x317b, (1158, 1)),
+ (0x314c, (1111, 1)),
+ (0x1c6, (41, 3)),
+ (0x1d73f, (5096, 1)),
+ (0x1ee4d, (5404, 1)),
(0x1d53, (172, 1)),
- (0xfc17, (2724, 2)),
- (0x1fdd, (256, 3)),
+ (0x33d1, (2313, 2)),
+ (0x1d58a, (4661, 1)),
+ (0xfd83, (3489, 3)),
(0x2178, (531, 2)),
(0x1d751, (5114, 1)),
- (0xfb7c, (2533, 1)),
+ (0xfd77, (3453, 3)),
(0x1d479, (4411, 1)),
(0x215d, (475, 3)),
- (0x1f239, (5631, 1)),
- (0x32c3, (1590, 2)),
- (0xfc38, (2790, 2)),
- (0x1d465, (4391, 1)),
+ (0xfd87, (3501, 3)),
+ (0x318a, (1173, 1)),
+ (0x1d43f, (4354, 1)),
(0x2fcd, (1062, 1)),
+ (0x1d4f0, (4519, 1)),
(0x1d59, (178, 1)),
(0x1d65f, (4874, 1)),
- (0x1d66c, (4887, 1)),
- (0x24e9, (838, 1)),
+ (0x3393, (2162, 3)),
+ (0x1ee92, (5455, 1)),
(0xa770, (2440, 1)),
- (0xfd18, (3260, 2)),
- (0xfe5a, (3813, 1)),
+ (0xfd0b, (3234, 2)),
+ (0x208a, (345, 1)),
(0xfe80, (3858, 1)),
- (0x1d603, (4782, 1)),
+ (0x1d7f3, (5274, 1)),
(0xfd0d, (3238, 2)),
(0x1d54a, (4598, 1)),
- (0xfe79, (3844, 2)),
+ (0x1d699, (4932, 1)),
(0xfe92, (3888, 1)),
- (0x217b, (536, 3)),
- (0x1d62, (187, 1)),
- (0xfb89, (2546, 1)),
- (0x2f3d, (918, 1)),
- (0x327a, (1490, 2)),
- (0xff4c, (4084, 1)),
+ (0xfe4c, (3799, 2)),
+ (0x1d653, (4862, 1)),
+ (0x1e04b, (5314, 1)),
+ (0x1d5b8, (4707, 1)),
+ (0x1d45a, (4380, 1)),
+ (0x335b, (2024, 2)),
(0x1d789, (5170, 1)),
(0xa7f2, (2441, 1)),
- (0x2497, (694, 3)),
+ (0x1eea3, (5467, 1)),
(0xff7c, (4132, 1)),
- (0xfcaa, (3035, 2)),
+ (0x2176, (524, 3)),
(0xffa6, (4174, 1)),
(0xff57, (4095, 1)),
- (0x1d581, (4652, 1)),
- (0xff2d, (4053, 1)),
- (0x1d5a6, (4689, 1)),
- (0x1d4be, (4470, 1)),
- (0x1ee7e, (5375, 1)),
- (0xffa1, (4169, 1)),
- (0x1d7de, (5253, 1)),
- (0x1d499, (4443, 1)),
- (0xffcb, (4206, 1)),
- (0x1ee54, (5347, 1)),
+ (0x1ee79, (5433, 1)),
+ (0x1d5ae, (4697, 1)),
+ (0x1d46f, (4401, 1)),
+ (0x2da, (75, 2)),
+ (0x2f4d, (934, 1)),
+ (0xfdc5, (3681, 3)),
+ (0x3384, (2127, 2)),
+ (0x24c0, (797, 1)),
+ (0x1d57c, (4647, 1)),
+ (0x1d7b0, (5209, 1)),
(0x1d5cb, (4726, 1)),
- (0xfd2f, (3306, 2)),
+ (0x1d783, (5164, 1)),
(0x1d4e8, (4511, 1)),
- (0x1f105, (5438, 2)),
+ (0x1d58e, (4665, 1)),
(0xff0d, (4021, 1)),
- (0xfe6b, (3829, 1)),
- (0x1d4b0, (4458, 1)),
- (0x1d7e8, (5263, 1)),
+ (0x1d644, (4847, 1)),
+ (0x24c4, (801, 1)),
+ (0x2f52, (939, 1)),
(0x1d68e, (4921, 1)),
- (0x1d60a, (4789, 1)),
- (0x1d5ab, (4694, 1)),
+ (0x1d50d, (4545, 1)),
+ (0xfb6b, (2516, 1)),
+ (0x2fcb, (1060, 1)),
(0xff32, (4058, 1)),
- (0x1f13e, (5551, 1)),
(0xffab, (4179, 1)),
- (0xfeca, (3944, 1)),
- (0x1d774, (5149, 1)),
- (0xfef2, (3984, 1)),
- (0xfc46, (2818, 2)),
- (0x1d408, (4299, 1)),
- (0x33bf, (2272, 2)),
- (0x1d664, (4879, 1)),
- (0x1f224, (5610, 1)),
+ (0x316c, (1143, 1)),
+ (0x2070, (321, 1)),
+ (0xfd8d, (3519, 3)),
+ (0xfe74, (3836, 2)),
+ (0x2131, (414, 1)),
+ (0xff64, (4108, 1)),
+ (0x339b, (2180, 2)),
+ (0x1e06a, (5345, 1)),
+ (0x1f224, (5672, 1)),
(0x1d405, (4296, 1)),
- (0x3277, (1484, 2)),
+ (0xff49, (4081, 1)),
(0xff37, (4063, 1)),
- (0x33e9, (2369, 3)),
- (0x2f08, (865, 1)),
+ (0x2075, (324, 1)),
+ (0xfebe, (3932, 1)),
(0xfee8, (3974, 1)),
- (0x1d7a3, (5196, 1)),
- (0xfc64, (2884, 3)),
- (0x1ee59, (5349, 1)),
- (0x33a4, (2202, 3)),
- (0x24a2, (727, 3)),
- (0xfbfa, (2663, 3)),
- (0x33a2, (2196, 3)),
- (0xfb81, (2538, 1)),
+ (0xa7f8, (2444, 1)),
+ (0x1d7be, (5223, 1)),
+ (0x1d9d, (199, 1)),
+ (0x107b6, (4286, 1)),
+ (0x2f79, (978, 1)),
+ (0x1f212, (5653, 1)),
+ (0xfcdf, (3141, 3)),
+ (0x1d5a1, (4684, 1)),
(0xfcc9, (3097, 2)),
- (0x1d51c, (4559, 1)),
- (0x1d508, (4542, 1)),
- (0x3326, (1827, 3)),
- (0x2168, (501, 2)),
- (0x32c1, (1586, 2)),
+ (0x1ee11, (5365, 1)),
+ (0x339f, (2188, 3)),
+ (0xfb83, (2540, 1)),
+ (0x1f131, (5600, 1)),
+ (0xff08, (4016, 1)),
(0xfe9e, (3900, 1)),
(0xfe39, (3779, 1)),
- (0x249d, (712, 3)),
- (0x1d743, (5100, 1)),
- (0x1ee31, (5330, 1)),
- (0xfd1d, (3270, 2)),
- (0x1d699, (4932, 1)),
+ (0x3386, (2131, 2)),
+ (0xfd6f, (3429, 3)),
+ (0x1d58b, (4662, 1)),
+ (0x1d5f3, (4766, 1)),
+ (0x1d5f, (184, 1)),
(0xfc30, (2774, 2)),
- (0x32b7, (1566, 2)),
- (0x3274, (1478, 2)),
+ (0x33fa, (2420, 3)),
+ (0x1ee5b, (5412, 1)),
+ (0x2478, (599, 3)),
(0x1d747, (5104, 1)),
- (0xfe37, (3777, 1)),
(0xfcf8, (3196, 2)),
- (0xfcda, (3131, 2)),
+ (0x1d667, (4882, 1)),
(0x1d796, (5183, 1)),
- (0x2f2a, (899, 1)),
- (0x3292, (1523, 1)),
+ (0x2011, (286, 1)),
+ (0x1f144, (5619, 1)),
(0xfd3d, (3334, 2)),
- (0xfb85, (2542, 1)),
- (0xfcb5, (3057, 2)),
- (0x1d6c2, (4971, 1)),
- (0x2098, (358, 1)),
+ (0x3270, (1470, 2)),
+ (0x326c, (1464, 1)),
+ (0x1d5c8, (4723, 1)),
+ (0x1d68c, (4919, 1)),
+ (0xfdfb, (3745, 8)),
(0xfdb6, (3636, 3)),
- (0xfe4f, (3803, 1)),
(0x2095, (355, 1)),
- (0xfd85, (3495, 3)),
- (0x2487, (654, 4)),
- (0x1ee88, (5384, 1)),
+ (0x3219, (1278, 4)),
+ (0x2499, (700, 3)),
+ (0x1ee52, (5408, 1)),
+ (0x2dc, (79, 2)),
(0x210e, (387, 1)),
- (0xfe4b, (3797, 2)),
+ (0x1d5ce, (4729, 1)),
(0x1d687, (4914, 1)),
- (0xfbeb, (2618, 3)),
- (0x2b8, (70, 1)),
+ (0x1d702, (5035, 1)),
+ (0x2093, (353, 1)),
(0x1d615, (4800, 1)),
(0x2f0c, (869, 1)),
(0x3185, (1168, 1)),
(0x1d42a, (4333, 1)),
- (0x1cb, (52, 2)),
- (0x1d428, (4331, 1)),
+ (0x247b, (608, 3)),
+ (0xfeee, (3980, 1)),
(0x10785, (4239, 1)),
- (0x3283, (1508, 1)),
(0x209a, (360, 1)),
- (0x1d47c, (4414, 1)),
- (0xff5a, (4098, 1)),
- (0x2f01, (858, 1)),
- (0x3176, (1153, 1)),
- (0xfc43, (2812, 2)),
- (0xff5c, (4100, 1)),
- (0x1d722, (5067, 1)),
+ (0xfb72, (2523, 1)),
+ (0x33e2, (2355, 2)),
+ (0xfc75, (2924, 2)),
+ (0x24d2, (815, 1)),
+ (0x1e05b, (5330, 1)),
+ (0x212c, (410, 1)),
+ (0x247f, (622, 4)),
+ (0x1d45e, (4384, 1)),
(0xfee3, (3969, 1)),
- (0x1d720, (5065, 1)),
- (0x1d600, (4779, 1)),
+ (0x2f19, (882, 1)),
+ (0x321e, (1301, 6)),
(0x2f05, (862, 1)),
- (0x1d47e, (4416, 1)),
- (0xfc80, (2946, 2)),
- (0x1ee6a, (5359, 1)),
+ (0xfb16, (2473, 2)),
+ (0x3142, (1101, 1)),
+ (0x107a5, (4270, 1)),
(0x2001, (276, 1)),
- (0x1ee34, (5332, 1)),
- (0xfd55, (3351, 3)),
- (0x1d4c1, (4473, 1)),
+ (0xfc84, (2954, 2)),
+ (0x1d55c, (4615, 1)),
+ (0x1d7c4, (5229, 1)),
(0x2fa0, (1017, 1)),
- (0x1f109, (5446, 2)),
- (0x1d5dc, (4743, 1)),
- (0x3339, (1902, 3)),
+ (0x1f143, (5618, 1)),
+ (0x2f8f, (1000, 1)),
+ (0x24c9, (806, 1)),
+ (0x32c5, (1594, 2)),
(0x248f, (672, 2)),
- (0x247a, (605, 3)),
- (0xab5e, (2448, 1)),
- (0x2a75, (847, 2)),
- (0x1d7e6, (5261, 1)),
- (0x2f12, (875, 1)),
- (0x24a4, (733, 3)),
- (0x1d62b, (4822, 1)),
- (0x2f90, (1001, 1)),
- (0x32ff, (1668, 2)),
+ (0xff84, (4140, 1)),
+ (0x3324, (1820, 4)),
+ (0xfcb7, (3061, 2)),
+ (0x1e041, (5304, 1)),
+ (0x24d9, (822, 1)),
+ (0xfd16, (3256, 2)),
+ (0x3251, (1422, 2)),
+ (0xfc92, (2982, 2)),
(0xfe8f, (3885, 1)),
- (0x1f13b, (5548, 1)),
+ (0xfdc4, (3678, 3)),
(0x2f1c, (885, 1)),
- (0xfce1, (3147, 2)),
- (0xfc6d, (2908, 2)),
+ (0x1f22b, (5679, 1)),
+ (0x1d5db, (4742, 1)),
(0x2f41, (922, 1)),
(0xfd1b, (3266, 2)),
(0x3217, (1270, 4)),
- (0xfb77, (2528, 1)),
- (0xfe87, (3871, 2)),
+ (0x1f250, (5723, 1)),
+ (0x3321, (1809, 5)),
+ (0x2f40, (921, 1)),
(0x2fca, (1059, 1)),
- (0xff8d, (4149, 1)),
- (0x33b2, (2246, 2)),
- (0x2fd1, (1066, 1)),
+ (0x107a6, (4271, 1)),
+ (0x1d589, (4660, 1)),
(0x3136, (1089, 1)),
+ (0xfc7d, (2940, 2)),
(0xfb87, (2544, 1)),
- (0x1d485, (4423, 1)),
- (0x1d6f9, (5026, 1)),
+ (0xfc0e, (2706, 2)),
+ (0x1f106, (5502, 2)),
(0x2f65, (958, 1)),
- (0xfcc4, (3087, 2)),
- (0x1d550, (4604, 1)),
- (0x3170, (1147, 1)),
- (0x1d484, (4422, 1)),
- (0x217d, (540, 1)),
- (0x1d48f, (4433, 1)),
- (0x1d45e, (4384, 1)),
- (0x1f216, (5596, 1)),
- (0x107aa, (4275, 1)),
+ (0xfe56, (3809, 1)),
+ (0xfb9c, (2565, 1)),
+ (0xfee4, (3970, 1)),
+ (0x1ee06, (5354, 1)),
+ (0x1d6d2, (4987, 1)),
+ (0x1d45d, (4383, 1)),
+ (0x1d660, (4875, 1)),
+ (0x1f216, (5658, 1)),
+ (0x1d400, (4291, 1)),
(0xfb13, (2467, 2)),
- (0x2fc1, (1050, 1)),
- (0xff7f, (4135, 1)),
- (0xfb03, (2457, 3)),
- (0x32f9, (1662, 1)),
- (0x32d8, (1629, 1)),
+ (0xfc6f, (2912, 2)),
+ (0xfca7, (3029, 2)),
+ (0xfe13, (3760, 1)),
+ (0xfe4b, (3797, 2)),
+ (0x1d78d, (5174, 1)),
(0xff2e, (4054, 1)),
- (0x1d4e6, (4509, 1)),
- (0x2161, (484, 2)),
- (0xfe5b, (3814, 1)),
- (0xfd15, (3254, 2)),
- (0xa69c, (2438, 1)),
- (0xfef6, (3990, 3)),
+ (0x2f6b, (964, 1)),
+ (0xfbe6, (2611, 1)),
+ (0x1d4f6, (4525, 1)),
+ (0x107a8, (4273, 1)),
+ (0x328b, (1516, 1)),
+ (0x1d5c, (181, 1)),
(0x246a, (567, 2)),
- (0x3314, (1751, 2)),
- (0x2f7b, (980, 1)),
+ (0xfcb9, (3065, 2)),
+ (0xfbd6, (2594, 1)),
(0x33f7, (2411, 3)),
(0xfd08, (3228, 2)),
- (0x1d7d0, (5239, 1)),
- (0x32dc, (1633, 1)),
+ (0x32c7, (1598, 2)),
+ (0x1d684, (4911, 1)),
+ (0x1eea1, (5465, 1)),
(0xfd78, (3456, 3)),
- (0x33cc, (2303, 2)),
- (0x1f225, (5611, 1)),
- (0xfcf3, (3184, 3)),
- (0x333b, (1909, 5)),
- (0x1ee0c, (5298, 1)),
- (0x1d64e, (4857, 1)),
- (0x1d73e, (5095, 1)),
- (0xfd2d, (3302, 2)),
- (0x1f11c, (5486, 3)),
- (0x1f229, (5615, 1)),
- (0xfd7b, (3465, 3)),
+ (0x1ee80, (5438, 1)),
+ (0x1f225, (5673, 1)),
+ (0x1eeb6, (5484, 1)),
+ (0x1ee0c, (5360, 1)),
+ (0xab5c, (2446, 1)),
+ (0xfb5c, (2501, 1)),
+ (0x322e, (1349, 3)),
+ (0xfc4b, (2828, 2)),
+ (0x24c7, (804, 1)),
+ (0x3360, (2034, 2)),
(0x1d737, (5088, 1)),
- (0xfc5a, (2858, 2)),
- (0x2f54, (941, 1)),
- (0x1d35, (144, 1)),
- (0x1d5d6, (4737, 1)),
- (0x2f1a, (883, 1)),
- (0x1d771, (5146, 1)),
- (0x2083, (338, 1)),
- (0x1d753, (5116, 1)),
- (0x1d516, (4553, 1)),
- (0xfdc6, (3684, 3)),
- (0x32ce, (1616, 2)),
- (0x1d69e, (4937, 1)),
- (0x339f, (2188, 3)),
- (0xfecf, (3949, 1)),
+ (0x33d0, (2311, 2)),
+ (0xfc90, (2978, 2)),
+ (0x1eeb0, (5478, 1)),
+ (0xfda1, (3573, 3)),
+ (0x3375, (2093, 2)),
+ (0x2f00, (857, 1)),
+ (0xfb9a, (2563, 1)),
+ (0x322a, (1337, 3)),
+ (0x32a9, (1546, 1)),
+ (0x1d472, (4404, 1)),
+ (0x1d4d4, (4491, 1)),
+ (0x1f221, (5669, 1)),
+ (0xff7b, (4131, 1)),
+ (0x1d46, (160, 1)),
+ (0xffb1, (4185, 1)),
(0x1d436, (4345, 1)),
- (0xb9, (13, 1)),
- (0x1f101, (5430, 2)),
- (0xfbf9, (2660, 3)),
- (0x2154, (448, 3)),
+ (0x3298, (1529, 1)),
+ (0xfc43, (2812, 2)),
+ (0xfc31, (2776, 2)),
+ (0x1d679, (4900, 1)),
(0x315b, (1126, 1)),
- (0x10791, (4250, 1)),
- (0x1d434, (4343, 1)),
+ (0x1d712, (5051, 1)),
(0xfe99, (3895, 1)),
+ (0xfed1, (3951, 1)),
(0x339a, (2178, 2)),
(0x1d4a6, (4451, 1)),
- (0x1d470, (4402, 1)),
- (0x1d6b0, (4953, 1)),
- (0xfd02, (3216, 2)),
- (0x2fc6, (1055, 1)),
- (0x2f5d, (950, 1)),
- (0x1eeb4, (5420, 1)),
- (0x3237, (1376, 3)),
- (0x1da7, (209, 1)),
- (0x1d7e3, (5258, 1)),
- (0xfb60, (2505, 1)),
+ (0xfbd5, (2593, 1)),
+ (0x210a, (383, 1)),
+ (0xfb96, (2559, 1)),
+ (0x2f8e, (999, 1)),
+ (0x1d7a9, (5202, 1)),
+ (0xfb5e, (2503, 1)),
+ (0x10793, (4252, 1)),
+ (0x2f56, (943, 1)),
+ (0x207d, (332, 1)),
+ (0x1f227, (5675, 1)),
(0xfc94, (2986, 2)),
- (0x1d63f, (4842, 1)),
+ (0x1d4d3, (4490, 1)),
(0xfd67, (3405, 3)),
- (0x1d710, (5049, 1)),
+ (0xff09, (4017, 1)),
(0x1d5a4, (4687, 1)),
- (0xfe38, (3778, 1)),
- (0x1eeb2, (5418, 1)),
- (0xfce8, (3161, 2)),
+ (0x1e06d, (5348, 1)),
+ (0x1d39, (148, 1)),
+ (0x3210, (1242, 4)),
(0x1d721, (5066, 1)),
(0xff91, (4153, 1)),
- (0x32e2, (1639, 1)),
- (0x212d, (411, 1)),
- (0x1eea7, (5408, 1)),
- (0x1f130, (5537, 1)),
+ (0x1d62d, (4824, 1)),
+ (0x1d7c0, (5225, 1)),
+ (0x1f213, (5654, 2)),
+ (0x1f130, (5599, 1)),
+ (0x1d4d5, (4492, 1)),
(0x1db2, (220, 1)),
- (0x1d730, (5081, 1)),
(0x2f98, (1009, 1)),
- (0x1d7d3, (5242, 1)),
- (0xfc27, (2756, 2)),
- (0x247b, (608, 3)),
- (0x210a, (383, 1)),
- (0x1d478, (4410, 1)),
- (0xfc97, (2992, 3)),
+ (0x1d56a, (4629, 1)),
+ (0x2477, (596, 3)),
+ (0x1d526, (4568, 1)),
+ (0x2475, (590, 3)),
+ (0x107b8, (4288, 1)),
+ (0x1f242, (5702, 3)),
(0x587, (110, 2)),
- (0xfc45, (2816, 2)),
- (0x3311, (1737, 4)),
+ (0x1d7b3, (5212, 1)),
+ (0x2076, (325, 1)),
(0x1d6f2, (5019, 1)),
- (0x314b, (1110, 1)),
- (0x2f69, (962, 1)),
+ (0xfdbc, (3654, 3)),
+ (0x24a6, (739, 3)),
+ (0x33d4, (2320, 2)),
(0x1d4d8, (4495, 1)),
- (0x1f211, (5590, 1)),
- (0x319f, (1191, 1)),
- (0x1d6c1, (4970, 1)),
- (0x1f121, (5501, 3)),
- (0x323f, (1400, 3)),
- (0x1d66d, (4888, 1)),
+ (0x320c, (1228, 3)),
+ (0x1d57b, (4646, 1)),
+ (0x1ee15, (5369, 1)),
+ (0x24a4, (733, 3)),
+ (0x2149, (434, 1)),
(0xfbf8, (2657, 3)),
(0x2f04, (861, 1)),
(0x1d5ca, (4725, 1)),
- (0x2f29, (898, 1)),
- (0x316b, (1142, 1)),
- (0xfe50, (3804, 1)),
- (0xbc, (15, 3)),
- (0x215a, (466, 3)),
+ (0x1d57, (176, 1)),
+ (0xff22, (4042, 1)),
+ (0x1d68b, (4918, 1)),
+ (0x1d7b5, (5214, 1)),
+ (0x1d4c8, (4479, 1)),
+ (0x2088, (343, 1)),
(0x3340, (1929, 5)),
- (0x33e3, (2357, 2)),
+ (0x1d507, (4541, 1)),
(0x325d, (1446, 2)),
- (0xfc74, (2922, 2)),
+ (0x1d5fe, (4777, 1)),
(0x317c, (1159, 1)),
- (0xfe68, (3826, 1)),
- (0xfcbb, (3069, 2)),
- (0x1d58a, (4661, 1)),
- (0xfc8c, (2970, 2)),
- (0x24c6, (803, 1)),
- (0x1f110, (5450, 3)),
- (0x3253, (1426, 2)),
- (0x3178, (1155, 1)),
- (0x24b8, (789, 1)),
- (0xfd9b, (3555, 3)),
+ (0x1ee47, (5401, 1)),
+ (0x33b0, (2242, 2)),
+ (0x1d786, (5167, 1)),
+ (0xfc83, (2952, 2)),
+ (0x1d444, (4359, 1)),
+ (0x32f1, (1654, 1)),
+ (0x3152, (1117, 1)),
+ (0xff13, (4027, 1)),
+ (0xfe38, (3778, 1)),
+ (0x1d4ec, (4515, 1)),
(0xfd7e, (3474, 3)),
- (0x3038, (1073, 1)),
- (0x1d76f, (5144, 1)),
- (0x1f148, (5561, 1)),
- (0x222c, (546, 2)),
- (0x1d4e7, (4510, 1)),
- (0xffad, (4181, 1)),
- (0x24bc, (793, 1)),
- (0xff5b, (4099, 1)),
- (0x1d663, (4878, 1)),
- (0x1d5b1, (4700, 1)),
- (0x1f226, (5612, 1)),
- (0x3183, (1166, 1)),
- (0x329d, (1534, 1)),
- (0xffa9, (4177, 1)),
- (0x215c, (472, 3)),
- (0x1dbc, (230, 1)),
+ (0x336f, (2077, 3)),
+ (0x3d0, (95, 1)),
+ (0x1d7f1, (5272, 1)),
+ (0x1f251, (5724, 1)),
+ (0x1db3, (221, 1)),
+ (0x1d514, (4552, 1)),
+ (0x33fb, (2423, 3)),
+ (0xfbf1, (2636, 3)),
+ (0xfd84, (3492, 3)),
+ (0x1fbf3, (5728, 1)),
+ (0x328a, (1515, 1)),
+ (0x24ab, (754, 3)),
+ (0x1d7e7, (5262, 1)),
+ (0x335c, (2026, 2)),
+ (0xff85, (4141, 1)),
+ (0x1d4bd, (4469, 1)),
(0xfdb5, (3633, 3)),
- (0x1d5f9, (4772, 1)),
- (0x2f0b, (868, 1)),
- (0x326c, (1464, 1)),
- (0x1d482, (4420, 1)),
- (0xfc20, (2742, 2)),
+ (0xfdf2, (3696, 4)),
+ (0xfe83, (3863, 2)),
+ (0x1fdd, (256, 3)),
+ (0xfc7b, (2936, 2)),
+ (0x319a, (1186, 1)),
(0x3275, (1480, 2)),
- (0x208d, (348, 1)),
- (0x2f2f, (904, 1)),
- (0x1d422, (4325, 1)),
- (0x1d6e9, (5010, 1)),
+ (0xfd20, (3276, 2)),
+ (0x1d402, (4293, 1)),
+ (0xff67, (4111, 1)),
+ (0x1d7dd, (5252, 1)),
+ (0xfc2e, (2770, 2)),
(0xff04, (4012, 1)),
- (0xfce3, (3151, 2)),
- (0x1ee02, (5289, 1)),
- (0xfe97, (3893, 1)),
+ (0x1eeb1, (5479, 1)),
+ (0x3317, (1765, 5)),
(0x3367, (2053, 3)),
+ (0x1d652, (4861, 1)),
(0x337e, (2113, 2)),
- (0xbe, (21, 3)),
- (0xfbfd, (2670, 1)),
- (0x2461, (557, 1)),
- (0x249f, (718, 3)),
+ (0x1d9c, (198, 1)),
+ (0x1079e, (4263, 1)),
+ (0x2f5f, (952, 1)),
(0xfea6, (3908, 1)),
- (0x1f21b, (5601, 1)),
- (0x1ee90, (5391, 1)),
+ (0x1d66, (191, 1)),
+ (0x1ee90, (5453, 1)),
+ (0x1d723, (5068, 1)),
(0x247e, (618, 4)),
- (0x1d6c5, (4974, 1)),
- (0x330a, (1711, 3)),
- (0x1d535, (4583, 1)),
- (0x1d46, (160, 1)),
- (0xff78, (4128, 1)),
- (0x3f2, (106, 1)),
- (0x2086, (341, 1)),
+ (0x216b, (506, 3)),
+ (0x1d74c, (5109, 1)),
+ (0x1d68d, (4920, 1)),
+ (0x3211, (1246, 4)),
+ (0x1d77f, (5160, 1)),
+ (0xff86, (4142, 1)),
+ (0x2f18, (881, 1)),
(0x3347, (1953, 5)),
- (0x1d65, (190, 1)),
- (0x1d775, (5150, 1)),
- (0x3236, (1373, 3)),
- (0xa7f4, (2443, 1)),
- (0x2fc0, (1049, 1)),
- (0x2f22, (891, 1)),
- (0x1ee09, (5295, 1)),
- (0x3197, (1183, 1)),
- (0xeb3, (122, 2)),
- (0x10790, (4249, 1)),
+ (0xfc72, (2918, 2)),
+ (0x1d496, (4440, 1)),
+ (0x1f129, (5587, 3)),
+ (0x210d, (386, 1)),
+ (0x1d40e, (4305, 1)),
+ (0x1d4e0, (4503, 1)),
+ (0x1d571, (4636, 1)),
+ (0x200a, (285, 1)),
+ (0x1d53d, (4590, 1)),
(0x2099, (359, 1)),
- (0xfb69, (2514, 1)),
- (0x1fdf, (262, 3)),
- (0x1d701, (5034, 1)),
- (0xfcf0, (3177, 2)),
- (0x1ee0a, (5296, 1)),
- (0x3360, (2034, 2)),
- (0x2f21, (890, 1)),
- (0x1d6fe, (5031, 1)),
- (0x3276, (1482, 2)),
- (0xff1e, (4038, 1)),
+ (0x2a75, (847, 2)),
+ (0xfe40, (3786, 1)),
+ (0xfebd, (3931, 1)),
+ (0x1d44b, (4366, 1)),
+ (0x32d3, (1624, 1)),
+ (0x1d666, (4881, 1)),
+ (0xfbaa, (2581, 1)),
+ (0x2f7e, (983, 1)),
+ (0xff77, (4127, 1)),
+ (0xff25, (4045, 1)),
+ (0x1d693, (4926, 1)),
(0xfeb6, (3924, 1)),
(0x1d695, (4928, 1)),
- (0x1d4f5, (4524, 1)),
- (0x1da1, (203, 1)),
+ (0xffd5, (4214, 1)),
+ (0x1d491, (4435, 1)),
(0x3359, (2020, 2)),
- (0x1d5a7, (4690, 1)),
- (0x1d504, (4539, 1)),
- (0x1ee32, (5331, 1)),
+ (0x1d57f, (4650, 1)),
+ (0xffd7, (4216, 1)),
+ (0x1ee32, (5393, 1)),
(0x3267, (1459, 1)),
+ (0xfd30, (3308, 2)),
(0xfbed, (2624, 3)),
- (0x1d536, (4584, 1)),
- (0xff38, (4064, 1)),
- (0x24b2, (775, 3)),
- (0x1d6d3, (4988, 1)),
+ (0xfd94, (3534, 3)),
+ (0x3278, (1486, 2)),
+ (0xff97, (4159, 1)),
(0x1d686, (4913, 1)),
- (0x32a5, (1542, 1)),
- (0x1d552, (4605, 1)),
- (0x2fcf, (1064, 1)),
- (0x1d6aa, (4947, 1)),
- (0x331d, (1793, 3)),
- (0xfd7f, (3477, 3)),
+ (0x1f108, (5506, 2)),
+ (0x2f2c, (901, 1)),
+ (0xfcd1, (3113, 2)),
+ (0x2468, (564, 1)),
+ (0xfe3e, (3784, 1)),
+ (0xff66, (4110, 1)),
(0xff14, (4028, 1)),
- (0x1d79c, (5189, 1)),
- (0xfe71, (3832, 2)),
- (0x248e, (670, 2)),
+ (0x1d74d, (5110, 1)),
+ (0x32f5, (1658, 1)),
+ (0x33cd, (2305, 2)),
(0x2469, (565, 2)),
- (0x1f230, (5622, 1)),
- (0x1f113, (5459, 3)),
- (0x1d481, (4419, 1)),
+ (0x32b4, (1560, 2)),
+ (0x1d65b, (4870, 1)),
+ (0x1f113, (5521, 3)),
+ (0x2155, (451, 3)),
(0x1daa, (212, 1)),
- (0x30ff, (1082, 2)),
- (0x1d7cb, (5236, 1)),
- (0xff31, (4057, 1)),
- (0x339d, (2184, 2)),
+ (0xfed6, (3956, 1)),
+ (0x1d5bd, (4712, 1)),
+ (0x1e045, (5308, 1)),
+ (0xfdf3, (3700, 4)),
(0xfb8c, (2549, 1)),
- (0x2f5b, (948, 1)),
- (0x2f62, (955, 1)),
- (0x1d44, (158, 1)),
+ (0x1d7d4, (5243, 1)),
+ (0x2b8, (70, 1)),
(0x1d565, (4624, 1)),
- (0x2071, (322, 1)),
- (0x247c, (611, 3)),
- (0x1f142, (5555, 1)),
- (0x10792, (4251, 1)),
- (0x1d544, (4596, 1)),
- (0x1d6fa, (5027, 1)),
- (0x2d9, (73, 2)),
- (0x1d573, (4638, 1)),
- (0x2f5c, (949, 1)),
- (0x1d7a7, (5200, 1)),
+ (0x2fd5, (1070, 1)),
+ (0x1d4af, (4457, 1)),
+ (0xfcf2, (3181, 3)),
+ (0x1f142, (5617, 1)),
+ (0x3195, (1181, 1)),
+ (0x1d56c, (4631, 1)),
+ (0xfd0e, (3240, 2)),
+ (0x1eeb7, (5485, 1)),
+ (0xff54, (4092, 1)),
+ (0x678, (118, 2)),
+ (0xfbee, (2627, 3)),
(0x1d540, (4592, 1)),
- (0xfdbb, (3651, 3)),
+ (0x33be, (2270, 2)),
(0xfead, (3915, 1)),
(0x1d40c, (4303, 1)),
- (0x3362, (2038, 3)),
- (0x1d61d, (4808, 1)),
- (0x33d5, (2322, 3)),
+ (0xfb23, (2480, 1)),
+ (0xfee6, (3972, 1)),
+ (0xffa1, (4169, 1)),
(0x1d674, (4895, 1)),
(0x1d36, (145, 1)),
- (0x1d5c8, (4723, 1)),
- (0x1d724, (5069, 1)),
- (0x1d400, (4291, 1)),
+ (0x2106, (377, 3)),
+ (0x3231, (1358, 3)),
+ (0x1ee59, (5411, 1)),
(0x3338, (1898, 4)),
(0x1d7c3, (5228, 1)),
- (0x2fae, (1031, 1)),
- (0x1d30, (139, 1)),
- (0x33ea, (2372, 3)),
- (0x1f234, (5626, 1)),
- (0xffe1, (4221, 1)),
+ (0x107b5, (4285, 1)),
+ (0x2b0, (62, 1)),
+ (0xfc36, (2786, 2)),
+ (0x1f234, (5688, 1)),
+ (0x1d473, (4405, 1)),
(0x313f, (1098, 1)),
- (0x1d56d, (4632, 1)),
- (0xfc0f, (2708, 2)),
+ (0xfd7b, (3465, 3)),
+ (0x3154, (1119, 1)),
+ (0x1ee31, (5392, 1)),
(0xffae, (4182, 1)),
- (0x3336, (1890, 5)),
- (0x3355, (2007, 2)),
- (0x1ee4b, (5341, 1)),
- (0xff7b, (4131, 1)),
+ (0x1d4b, (165, 1)),
+ (0x1ee4b, (5403, 1)),
+ (0x1d672, (4893, 1)),
(0x313b, (1094, 1)),
- (0xffa7, (4175, 1)),
- (0x1d6bc, (4965, 1)),
+ (0x1d7ae, (5207, 1)),
+ (0xfd35, (3318, 2)),
(0x3200, (1192, 3)),
- (0xfc0d, (2704, 2)),
- (0x1d62e, (4825, 1)),
- (0x3263, (1455, 1)),
- (0x1d72b, (5076, 1)),
- (0xfb61, (2506, 1)),
+ (0xff19, (4033, 1)),
+ (0x1d538, (4586, 1)),
+ (0x1f105, (5500, 2)),
+ (0x2f3a, (915, 1)),
+ (0xff2d, (4053, 1)),
+ (0x1ee03, (5352, 1)),
(0x2fc5, (1054, 1)),
- (0x2f19, (882, 1)),
+ (0xfc19, (2728, 2)),
(0xfb27, (2484, 1)),
- (0x1d4b1, (4459, 1)),
- (0x1d44a, (4365, 1)),
- (0x1ee2a, (5323, 1)),
- (0x1d50e, (4546, 1)),
+ (0x2f31, (906, 1)),
+ (0x2a76, (849, 3)),
+ (0x1d655, (4864, 1)),
+ (0x1d47e, (4416, 1)),
(0x246f, (577, 2)),
- (0xab5f, (2449, 1)),
- (0x1d4b7, (4465, 1)),
- (0xfccb, (3101, 2)),
- (0x321d, (1294, 7)),
- (0xfd0b, (3234, 2)),
- (0xfcab, (3037, 2)),
- (0x3175, (1152, 1)),
- (0xfeaf, (3917, 1)),
- (0xff8a, (4146, 1)),
+ (0x2f13, (876, 1)),
+ (0x1f233, (5687, 1)),
+ (0x1d59f, (4682, 1)),
+ (0x2497, (694, 3)),
+ (0x2e9f, (855, 1)),
+ (0x32dd, (1634, 1)),
+ (0xfd28, (3292, 2)),
+ (0x1d7bb, (5220, 1)),
+ (0x1d7d2, (5241, 1)),
(0x32e1, (1638, 1)),
(0x1d69b, (4934, 1)),
- (0x1f12e, (5535, 2)),
- (0x3376, (2095, 2)),
+ (0x107ac, (4277, 1)),
+ (0xfc93, (2984, 2)),
(0x2f34, (909, 1)),
(0x2490, (674, 2)),
- (0x1d439, (4348, 1)),
- (0x2471, (581, 2)),
- (0x2f30, (905, 1)),
+ (0xfb6e, (2519, 1)),
+ (0x1f12d, (5595, 2)),
+ (0xfba1, (2570, 1)),
(0x1d48d, (4431, 1)),
- (0x1d736, (5087, 1)),
- (0xfd9e, (3564, 3)),
- (0xfe88, (3873, 2)),
- (0xfc21, (2744, 2)),
- (0xfee6, (3972, 1)),
- (0x140, (30, 2)),
- (0x207f, (334, 1)),
+ (0x1f228, (5676, 1)),
+ (0x2471, (581, 2)),
+ (0xfb59, (2498, 1)),
+ (0xfec3, (3937, 1)),
+ (0x329a, (1531, 1)),
+ (0x33c9, (2297, 2)),
+ (0x1dbd, (231, 1)),
(0x1d474, (4406, 1)),
(0x1d673, (4894, 1)),
- (0x107b4, (4284, 1)),
- (0x2f72, (971, 1)),
+ (0xffe1, (4221, 1)),
+ (0x1d4c3, (4475, 1)),
(0x1d649, (4852, 1)),
- (0x1d7cf, (5238, 1)),
- (0xfcd3, (3117, 2)),
- (0x1f21c, (5602, 1)),
- (0xfcd5, (3121, 2)),
+ (0xfed2, (3952, 1)),
+ (0x3205, (1207, 3)),
+ (0x1d537, (4585, 1)),
+ (0xfcd9, (3129, 2)),
+ (0x3140, (1099, 1)),
(0x309f, (1080, 2)),
- (0x1d7be, (5223, 1)),
- (0x1f237, (5629, 1)),
- (0x33df, (2348, 3)),
- (0xff77, (4127, 1)),
- (0x2175, (522, 2)),
- (0x2107, (380, 1)),
- (0xfca4, (3023, 2)),
- (0xfc01, (2676, 3)),
- (0xfc3a, (2794, 2)),
- (0x1f2, (58, 2)),
- (0xfef4, (3986, 1)),
+ (0xff58, (4096, 1)),
+ (0x1d707, (5040, 1)),
+ (0x1d5d8, (4739, 1)),
+ (0x2f5e, (951, 1)),
+ (0x329c, (1533, 1)),
+ (0x1ee8f, (5452, 1)),
+ (0x1f21a, (5662, 1)),
+ (0x1fc1, (244, 3)),
+ (0x1d71b, (5060, 1)),
+ (0x1ee29, (5384, 1)),
+ (0x2f5d, (950, 1)),
(0x3346, (1950, 3)),
- (0x328f, (1520, 1)),
- (0x1d56, (175, 1)),
- (0x3361, (2036, 2)),
- (0x1f23a, (5632, 1)),
- (0x1ee2f, (5328, 1)),
- (0x1d5eb, (4758, 1)),
- (0xfc9a, (3001, 3)),
- (0x1d4e1, (4504, 1)),
- (0xfd58, (3360, 3)),
- (0x24c0, (797, 1)),
- (0x3254, (1428, 2)),
+ (0x33cc, (2303, 2)),
+ (0x1d676, (4897, 1)),
+ (0x2fc1, (1050, 1)),
+ (0x1d604, (4783, 1)),
+ (0x1d4ed, (4516, 1)),
+ (0x1d508, (4542, 1)),
+ (0xfd5d, (3375, 3)),
+ (0x1d5a7, (4690, 1)),
+ (0x1e033, (5290, 1)),
+ (0xb8, (11, 2)),
(0xffda, (4217, 1)),
- (0x107b6, (4286, 1)),
- (0x249c, (709, 3)),
+ (0x3273, (1476, 2)),
+ (0xff21, (4041, 1)),
(0x24cf, (812, 1)),
- (0x2153, (445, 3)),
- (0x1d5f1, (4764, 1)),
- (0x1ee8d, (5388, 1)),
- (0x1d46f, (4401, 1)),
- (0x2f8b, (996, 1)),
- (0x2fd0, (1065, 1)),
+ (0x3332, (1871, 6)),
+ (0x1d413, (4310, 1)),
+ (0x249c, (709, 3)),
+ (0xff30, (4056, 1)),
+ (0x1ee68, (5419, 1)),
+ (0x1d5b0, (4699, 1)),
+ (0xfbd7, (2595, 1)),
(0x3133, (1086, 1)),
(0xfd33, (3314, 2)),
- (0xfd87, (3501, 3)),
- (0x3187, (1170, 1)),
- (0xffba, (4194, 1)),
- (0x1d50, (169, 1)),
- (0x1d5cc, (4727, 1)),
+ (0xfc12, (2714, 2)),
+ (0x334a, (1964, 6)),
+ (0x1d48f, (4433, 1)),
+ (0xff17, (4031, 1)),
+ (0x13f, (28, 2)),
(0x32c8, (1600, 2)),
- (0xfb80, (2537, 1)),
- (0x1d68b, (4918, 1)),
- (0xfb74, (2525, 1)),
+ (0xfe63, (3822, 1)),
+ (0x1d6f7, (5024, 1)),
+ (0x33e6, (2363, 2)),
(0x1d689, (4916, 1)),
- (0x213b, (422, 3)),
- (0xfbaf, (2586, 1)),
+ (0x1d7fc, (5283, 1)),
+ (0x2167, (497, 4)),
(0x1da2, (204, 1)),
- (0x1d4b, (165, 1)),
+ (0x1eea8, (5471, 1)),
(0x3169, (1140, 1)),
- (0xfed9, (3959, 1)),
- (0x1ee97, (5398, 1)),
- (0x1d446, (4361, 1)),
- (0x1f190, (5582, 2)),
- (0x1d411, (4308, 1)),
- (0xfc61, (2875, 3)),
+ (0xaf, (4, 2)),
+ (0xfcb6, (3059, 2)),
+ (0xfbeb, (2618, 3)),
+ (0xfe61, (3820, 1)),
+ (0x1d6f5, (5022, 1)),
+ (0x3277, (1484, 2)),
(0x321b, (1286, 4)),
- (0x1d45c, (4382, 1)),
- (0xfc9f, (3013, 2)),
- (0xfb14, (2469, 2)),
- (0x1f14c, (5567, 2)),
- (0xfbee, (2627, 3)),
- (0xfbe6, (2611, 1)),
- (0x3d1, (96, 1)),
- (0x1d5f, (184, 1)),
- (0x3341, (1934, 3)),
- (0x1d5db, (4742, 1)),
- (0x1d6cf, (4984, 1)),
- (0xff41, (4073, 1)),
+ (0xfc28, (2758, 2)),
+ (0x1d51c, (4559, 1)),
+ (0xff92, (4154, 1)),
+ (0x3395, (2168, 2)),
+ (0x1d5fd, (4776, 1)),
+ (0x1d722, (5067, 1)),
+ (0x2f99, (1010, 1)),
+ (0x33a4, (2202, 3)),
+ (0x3d6, (103, 1)),
+ (0x24e8, (837, 1)),
+ (0x212f, (412, 1)),
+ (0x1f201, (5648, 2)),
(0xfec0, (3934, 1)),
- (0x3396, (2170, 2)),
+ (0x1d67d, (4904, 1)),
(0x33a1, (2194, 2)),
- (0xfda7, (3591, 3)),
+ (0xfca6, (3027, 2)),
(0x2f85, (990, 1)),
+ (0x37a, (88, 2)),
(0x32cf, (1618, 3)),
- (0xfcdc, (3135, 2)),
- (0x3259, (1438, 2)),
- (0x1d667, (4882, 1)),
- (0xfdbc, (3654, 3)),
- (0x32f0, (1653, 1)),
- (0x33ca, (2299, 2)),
+ (0x1f200, (5646, 2)),
+ (0x2e4, (87, 1)),
+ (0x1d75e, (5127, 1)),
+ (0x1d4a5, (4450, 1)),
+ (0xfed0, (3950, 1)),
+ (0x3269, (1461, 1)),
(0x1d55e, (4617, 1)),
- (0xff9d, (4165, 1)),
- (0xfc7f, (2944, 2)),
+ (0x1d439, (4348, 1)),
(0x1d5b5, (4704, 1)),
- (0xffb3, (4187, 1)),
- (0x1f10a, (5448, 2)),
- (0x1d748, (5105, 1)),
- (0x24a3, (730, 3)),
+ (0xfc64, (2884, 3)),
+ (0xfeb0, (3918, 1)),
+ (0xfbd8, (2596, 1)),
+ (0x3147, (1106, 1)),
+ (0xfbe3, (2608, 1)),
(0x2113, (392, 1)),
- (0xfee1, (3967, 1)),
- (0x1d64c, (4855, 1)),
- (0xfcfd, (3206, 2)),
+ (0x1e05f, (5334, 1)),
+ (0x3368, (2056, 3)),
(0xff4e, (4086, 1)),
(0x1d6a9, (4946, 1)),
- (0xffd5, (4214, 1)),
- (0x2fd3, (1068, 1)),
- (0x1d595, (4672, 1)),
- (0x1ee12, (5304, 1)),
- (0xfda2, (3576, 3)),
- (0xfc67, (2893, 3)),
- (0x2fb8, (1041, 1)),
+ (0xfb6d, (2518, 1)),
+ (0x332b, (1840, 6)),
+ (0x334c, (1973, 5)),
+ (0xfb52, (2491, 1)),
+ (0x1d426, (4329, 1)),
+ (0xab5f, (2449, 1)),
+ (0xfe5d, (3816, 1)),
+ (0x1d6bf, (4968, 1)),
(0x1d6b5, (4958, 1)),
- (0xfe48, (3792, 1)),
+ (0xfba6, (2577, 1)),
(0x1ffe, (273, 2)),
- (0x24bb, (792, 1)),
- (0x216d, (510, 1)),
- (0x1d6af, (4952, 1)),
- (0x2173, (519, 2)),
+ (0xfbd4, (2592, 1)),
+ (0xfc6d, (2908, 2)),
+ (0xff20, (4040, 1)),
+ (0x1d5ab, (4694, 1)),
(0x1d5f2, (4765, 1)),
- (0xfb59, (2498, 1)),
- (0x1d77e, (5159, 1)),
+ (0x325c, (1444, 2)),
+ (0xfe42, (3788, 1)),
(0x3383, (2125, 2)),
(0xfb22, (2479, 1)),
- (0x24a8, (745, 3)),
- (0x1d6c8, (4977, 1)),
+ (0x1d5ec, (4759, 1)),
+ (0x1d63e, (4841, 1)),
(0xfc7a, (2934, 2)),
- (0xfd8a, (3510, 3)),
- (0x1d773, (5148, 1)),
- (0xfc5e, (2866, 3)),
- (0x1f213, (5592, 2)),
+ (0x1d4cb, (4482, 1)),
+ (0xfd9f, (3567, 3)),
+ (0x319f, (1191, 1)),
+ (0x1d521, (4563, 1)),
(0x217f, (542, 1)),
(0x3238, (1379, 3)),
+ (0x1d438, (4347, 1)),
(0xffa4, (4172, 1)),
- (0x1ee0e, (5300, 1)),
- (0xfdb8, (3642, 3)),
- (0x3196, (1182, 1)),
+ (0x24aa, (751, 3)),
+ (0xba, (14, 1)),
(0xfc79, (2932, 2)),
- (0x1d633, (4830, 1)),
- (0x1d4d4, (4491, 1)),
+ (0xfe5b, (3814, 1)),
+ (0x1ee02, (5351, 1)),
(0x32fb, (1664, 1)),
(0x2d8, (71, 2)),
- (0x1d5ff, (4778, 1)),
- (0x3d5, (102, 1)),
- (0x2103, (372, 2)),
+ (0x32da, (1631, 1)),
+ (0x338c, (2146, 2)),
+ (0xfd2b, (3298, 2)),
(0xfd06, (3224, 2)),
- (0x1d597, (4674, 1)),
+ (0x32b0, (1553, 1)),
+ (0x1e03e, (5301, 1)),
(0x2fab, (1028, 1)),
- (0x1d67d, (4904, 1)),
- (0x322c, (1343, 3)),
- (0xfbdb, (2599, 1)),
- (0xfd12, (3248, 2)),
+ (0x210c, (385, 1)),
+ (0xfcd6, (3123, 2)),
+ (0x2164, (491, 1)),
(0xff83, (4139, 1)),
+ (0x24b4, (781, 3)),
(0x2f94, (1005, 1)),
- (0x2483, (638, 4)),
- (0x1d799, (5186, 1)),
- (0x2140, (429, 1)),
- (0xfdc4, (3678, 3)),
+ (0x32ed, (1650, 1)),
+ (0x3232, (1361, 3)),
+ (0x2f59, (946, 1)),
+ (0xff33, (4059, 1)),
(0x3262, (1454, 1)),
- (0xfda9, (3597, 3)),
- (0x1d6f0, (5017, 1)),
+ (0x330e, (1725, 4)),
+ (0x2489, (660, 2)),
(0x2fb5, (1038, 1)),
(0xfeea, (3976, 1)),
- (0x313d, (1096, 1)),
- (0x32f5, (1658, 1)),
+ (0x2fc8, (1057, 1)),
+ (0x215e, (478, 3)),
(0xff05, (4013, 1)),
- (0x1d616, (4801, 1)),
- (0x1ee1d, (5315, 1)),
- (0x3159, (1124, 1)),
- (0x1d457, (4377, 1)),
- (0xfe78, (3842, 2)),
- (0x2f31, (906, 1)),
+ (0x2f8a, (995, 1)),
+ (0x1ee1d, (5377, 1)),
+ (0xfebb, (3929, 1)),
+ (0x1d67f, (4906, 1)),
+ (0xfe93, (3889, 1)),
+ (0xfecf, (3949, 1)),
(0xfbfb, (2666, 3)),
- (0x2085, (340, 1)),
+ (0x1d6d6, (4991, 1)),
(0x2152, (441, 4)),
- (0x1d7f2, (5273, 1)),
- (0x1ee4f, (5344, 1)),
- (0xfc37, (2788, 2)),
- (0x1d459, (4379, 1)),
+ (0x1db7, (225, 1)),
+ (0x1f14a, (5625, 2)),
+ (0xfbdc, (2600, 1)),
+ (0x1d694, (4927, 1)),
(0x2158, (460, 3)),
(0x1d63d, (4840, 1)),
- (0xfee2, (3968, 1)),
- (0xfed5, (3955, 1)),
+ (0x2101, (368, 3)),
+ (0x2137, (419, 1)),
(0xfdc0, (3666, 3)),
- (0x1f238, (5630, 1)),
- (0xff9c, (4164, 1)),
- (0x1d40, (154, 1)),
+ (0x1d7a3, (5196, 1)),
+ (0x1d54, (173, 1)),
+ (0x10797, (4256, 1)),
(0x3268, (1460, 1)),
(0x10795, (4254, 1)),
(0x33b9, (2260, 2)),
+ (0xfc02, (2679, 3)),
(0x332f, (1861, 4)),
- (0x1f251, (5662, 1)),
- (0xff6e, (4118, 1)),
- (0x1d606, (4785, 1)),
- (0x32e6, (1643, 1)),
- (0xfc4c, (2830, 2)),
- (0x1d432, (4341, 1)),
- (0xfcf1, (3179, 2)),
- (0x1f13d, (5550, 1)),
- (0x32c5, (1594, 2)),
+ (0x213d, (426, 1)),
+ (0x3283, (1508, 1)),
+ (0x2f15, (878, 1)),
+ (0x1d453, (4374, 1)),
+ (0x107b0, (4281, 1)),
+ (0x2f33, (908, 1)),
+ (0xfe7f, (3856, 2)),
+ (0x1d7eb, (5266, 1)),
+ (0x32ca, (1605, 3)),
(0xedc, (124, 2)),
- (0x1fbf8, (5671, 1)),
- (0x2474, (587, 3)),
+ (0xffed, (4233, 1)),
(0x1d7ca, (5235, 1)),
- (0xfd0c, (3236, 2)),
- (0xfbef, (2630, 3)),
+ (0x3265, (1457, 1)),
+ (0x3389, (2138, 4)),
(0xfcaf, (3045, 2)),
(0xfd69, (3411, 3)),
- (0x2b7, (69, 1)),
- (0x1d57d, (4648, 1)),
- (0x24db, (824, 1)),
- (0x1d5b7, (4706, 1)),
- (0x33b3, (2248, 2)),
- (0xfb98, (2561, 1)),
- (0x1d47a, (4412, 1)),
+ (0x32a4, (1541, 1)),
+ (0x2f75, (974, 1)),
+ (0x2c7c, (852, 1)),
+ (0x2fae, (1031, 1)),
+ (0xff2c, (4052, 1)),
+ (0xfdf1, (3693, 3)),
+ (0x1d613, (4798, 1)),
+ (0xfc73, (2920, 2)),
(0x1d495, (4439, 1)),
- (0xfb7d, (2534, 1)),
- (0x2b1, (63, 1)),
+ (0x1d4ea, (4513, 1)),
(0xa7f3, (2442, 1)),
(0x1d7e5, (5260, 1)),
- (0xfeb4, (3922, 1)),
- (0xfb7f, (2536, 1)),
- (0x2f88, (993, 1)),
- (0x24c9, (806, 1)),
- (0x1f246, (5652, 3)),
- (0xfc10, (2710, 2)),
- (0x1f16b, (5578, 2)),
- (0x2074, (323, 1)),
- (0x3209, (1219, 3)),
- (0x338a, (2142, 2)),
+ (0xfe85, (3867, 2)),
+ (0x1d4f2, (4521, 1)),
+ (0x1d65e, (4873, 1)),
+ (0x1d7c6, (5231, 1)),
+ (0x2103, (372, 2)),
+ (0x2083, (338, 1)),
+ (0xfc33, (2780, 2)),
+ (0x333d, (1918, 5)),
+ (0xfcef, (3175, 2)),
+ (0xfeb8, (3926, 1)),
+ (0x32fd, (1666, 1)),
(0x1d74b, (5108, 1)),
- (0x1f21d, (5603, 1)),
- (0x1eeb1, (5417, 1)),
- (0x2157, (457, 3)),
- (0x1ee10, (5302, 1)),
- (0x1f106, (5440, 2)),
+ (0x247c, (611, 3)),
+ (0x1079d, (4262, 1)),
+ (0x1e052, (5321, 1)),
+ (0x1ee10, (5364, 1)),
+ (0x2f7d, (982, 1)),
(0xfda4, (3582, 3)),
- (0x2f91, (1002, 1)),
- (0x24a1, (724, 3)),
+ (0x323a, (1385, 3)),
+ (0x3157, (1122, 1)),
(0x33c0, (2274, 2)),
(0x1f3, (60, 2)),
- (0xff54, (4092, 1)),
+ (0xfc51, (2840, 2)),
(0xfe15, (3762, 1)),
(0x3204, (1204, 3)),
(0x3397, (2172, 2)),
- (0xff02, (4010, 1)),
- (0x32e8, (1645, 1)),
- (0x2094, (354, 1)),
- (0x1d652, (4861, 1)),
- (0x1d442, (4357, 1)),
- (0x1f135, (5542, 1)),
+ (0x1d4e2, (4505, 1)),
+ (0x32ce, (1616, 2)),
+ (0xfb69, (2514, 1)),
+ (0x1d6fc, (5029, 1)),
+ (0x32a5, (1542, 1)),
+ (0xfe9a, (3896, 1)),
(0x1dbe, (232, 1)),
- (0x1db7, (225, 1)),
- (0x1d475, (4407, 1)),
- (0xfdf0, (3690, 3)),
- (0x2133, (415, 1)),
- (0x2e4, (87, 1)),
- (0x2f0e, (871, 1)),
+ (0x2090, (350, 1)),
+ (0xfbd9, (2597, 1)),
+ (0x1d778, (5153, 1)),
+ (0x1d6d7, (4992, 1)),
+ (0x1d7bf, (5224, 1)),
+ (0xfda8, (3594, 3)),
(0x3391, (2156, 3)),
(0xfc5b, (2860, 2)),
- (0x1d41f, (4322, 1)),
- (0x1d758, (5121, 1)),
- (0x2f53, (940, 1)),
- (0x1f222, (5608, 1)),
- (0x1d671, (4892, 1)),
- (0xff07, (4015, 1)),
- (0xff19, (4033, 1)),
- (0x1d538, (4586, 1)),
+ (0x2467, (563, 1)),
+ (0x1d7f0, (5271, 1)),
+ (0x3186, (1169, 1)),
+ (0x2f10, (873, 1)),
+ (0x1d5e3, (4750, 1)),
+ (0xfce5, (3155, 2)),
+ (0x1d75a, (5123, 1)),
+ (0xa7f9, (2445, 1)),
(0x1d580, (4651, 1)),
- (0x1f247, (5655, 3)),
- (0x1fbf3, (5666, 1)),
- (0x1f23b, (5633, 1)),
- (0x2496, (691, 3)),
- (0x1d4d3, (4490, 1)),
- (0x1d44e, (4369, 1)),
+ (0x1d49b, (4445, 1)),
+ (0x2151, (438, 3)),
+ (0x1f23b, (5695, 1)),
+ (0xfcad, (3041, 2)),
+ (0x32b7, (1566, 2)),
+ (0x1d5cf, (4730, 1)),
+ (0x1d790, (5177, 1)),
(0x1d6cd, (4982, 1)),
- (0x335b, (2024, 2)),
+ (0xffcc, (4207, 1)),
(0x3307, (1698, 6)),
(0x1d7df, (5254, 1)),
- (0x1f147, (5560, 1)),
- (0x1d692, (4925, 1)),
- (0x3146, (1105, 1)),
+ (0x2f07, (864, 1)),
+ (0x24d5, (818, 1)),
(0x1d5a0, (4683, 1)),
+ (0xfb85, (2542, 1)),
(0x1d520, (4562, 1)),
- (0xfc1b, (2732, 2)),
- (0x1ee47, (5339, 1)),
- (0xfc42, (2810, 2)),
- (0x2fa4, (1021, 1)),
- (0x2f06, (863, 1)),
- (0xfe4e, (3802, 1)),
- (0x3250, (1419, 3)),
- (0x3342, (1937, 3)),
- (0x1d532, (4580, 1)),
- (0x1ee71, (5365, 1)),
+ (0x1d4d1, (4488, 1)),
+ (0x2461, (557, 1)),
+ (0x1d452, (4373, 1)),
+ (0xfb70, (2521, 1)),
+ (0x1d69f, (4938, 1)),
+ (0x1d594, (4671, 1)),
+ (0x3271, (1472, 2)),
+ (0x1e057, (5326, 1)),
+ (0x1d40, (154, 1)),
+ (0x1ee27, (5383, 1)),
(0xfd34, (3316, 2)),
- (0xfba5, (2575, 2)),
- (0xffb1, (4185, 1)),
+ (0x209b, (361, 1)),
+ (0x1d578, (4643, 1)),
(0xff56, (4094, 1)),
- (0x315c, (1127, 1)),
+ (0x2121, (403, 3)),
(0x3148, (1107, 1)),
- (0x1f233, (5625, 1)),
- (0xff1d, (4037, 1)),
- (0x3167, (1138, 1)),
- (0x2130, (413, 1)),
- (0x2f67, (960, 1)),
- (0x1d59d, (4680, 1)),
- (0x1d71a, (5059, 1)),
- (0x1d68f, (4922, 1)),
- (0x1d681, (4908, 1)),
- (0x1d46e, (4400, 1)),
- (0x1d74e, (5111, 1)),
+ (0x2f3d, (918, 1)),
+ (0x1d724, (5069, 1)),
+ (0x2166, (494, 3)),
+ (0x2f1b, (884, 1)),
+ (0x1d5ea, (4757, 1)),
+ (0xfc05, (2688, 2)),
+ (0x336a, (2062, 3)),
+ (0x24a3, (730, 3)),
+ (0x3320, (1804, 5)),
+ (0x1ee82, (5440, 1)),
+ (0x3344, (1944, 3)),
(0x210b, (384, 1)),
- (0x1d6a, (195, 1)),
- (0x1ee30, (5329, 1)),
- (0xfcb4, (3055, 2)),
- (0x1ee1a, (5312, 1)),
- (0xff2c, (4052, 1)),
- (0x2e2, (85, 1)),
+ (0x1d560, (4619, 1)),
+ (0x1ee30, (5391, 1)),
+ (0x24e5, (834, 1)),
+ (0xffea, (4230, 1)),
+ (0x1f236, (5690, 1)),
+ (0x2037, (303, 3)),
+ (0x1e05a, (5329, 1)),
(0x2000, (275, 1)),
- (0x1d7b0, (5209, 1)),
- (0xfc81, (2948, 2)),
- (0xfca0, (3015, 2)),
- (0x1d63e, (4841, 1)),
- (0xfb5b, (2500, 1)),
- (0xfbae, (2585, 1)),
- (0x1d60c, (4791, 1)),
- (0x2f33, (908, 1)),
- (0xfd3c, (3332, 2)),
- (0xfef8, (3996, 3)),
- (0x332c, (1846, 4)),
- (0xfd32, (3312, 2)),
- (0xfcbe, (3075, 2)),
+ (0x1d7e6, (5261, 1)),
+ (0xff6d, (4117, 1)),
+ (0x3036, (1072, 1)),
+ (0x1d6f4, (5021, 1)),
+ (0x1ee18, (5372, 1)),
+ (0x1ee00, (5349, 1)),
+ (0xffb4, (4188, 1)),
+ (0x1d6a8, (4945, 1)),
+ (0x3362, (2038, 3)),
+ (0xfec2, (3936, 1)),
+ (0x2f26, (895, 1)),
+ (0x33fe, (2432, 3)),
(0x2034, (298, 3)),
- (0x1ee6e, (5362, 1)),
- (0x2139, (421, 1)),
+ (0x1cc, (54, 2)),
+ (0x33e1, (2353, 2)),
+ (0xfcc0, (3079, 2)),
(0x33de, (2345, 3)),
- (0x1d34, (143, 1)),
- (0x1d5f4, (4767, 1)),
- (0x1d429, (4332, 1)),
- (0xfba3, (2572, 1)),
- (0xfc0b, (2700, 2)),
+ (0x1d5ba, (4709, 1)),
+ (0x1d47d, (4415, 1)),
+ (0xff76, (4126, 1)),
+ (0xfce2, (3149, 2)),
+ (0x217a, (534, 2)),
(0xfc29, (2760, 2)),
(0x1d6e6, (5007, 1)),
- (0xff33, (4059, 1)),
- (0xffbc, (4196, 1)),
- (0xfcac, (3039, 2)),
- (0x3344, (1944, 3)),
- (0x2087, (342, 1)),
- (0x1d73f, (5096, 1)),
+ (0x1f139, (5608, 1)),
+ (0xff2f, (4055, 1)),
+ (0x1d7a2, (5195, 1)),
+ (0x3000, (1071, 1)),
+ (0x1d6b2, (4955, 1)),
(0x107a9, (4274, 1)),
- (0x316a, (1141, 1)),
- (0xfd9a, (3552, 3)),
+ (0xfecb, (3945, 1)),
+ (0x2f09, (866, 1)),
+ (0xfe16, (3763, 1)),
(0x2100, (365, 3)),
- (0x3332, (1871, 6)),
- (0xfd89, (3507, 3)),
+ (0x3369, (2059, 3)),
+ (0x3322, (1814, 3)),
(0xfca8, (3031, 2)),
- (0x33e4, (2359, 2)),
- (0x2fc7, (1056, 1)),
- (0x321c, (1290, 4)),
- (0x107b8, (4288, 1)),
- (0x3194, (1180, 1)),
+ (0x2e0, (83, 1)),
+ (0x1d6c3, (4972, 1)),
+ (0x2147, (432, 1)),
+ (0x1d57a, (4645, 1)),
+ (0x1d6ff, (5032, 1)),
(0x1d5d7, (4738, 1)),
- (0x3198, (1184, 1)),
- (0xfed3, (3953, 1)),
- (0xfdb7, (3639, 3)),
- (0xfc49, (2824, 2)),
- (0x3351, (1992, 4)),
- (0x333a, (1905, 4)),
+ (0xff0f, (4023, 1)),
+ (0x3259, (1438, 2)),
+ (0x1d45, (159, 1)),
+ (0xfef5, (3987, 3)),
+ (0x1ee94, (5457, 1)),
+ (0x1d76c, (5141, 1)),
(0x316f, (1146, 1)),
- (0xff73, (4123, 1)),
+ (0x2f11, (874, 1)),
(0xff1f, (4039, 1)),
(0x3212, (1250, 4)),
(0x32c0, (1584, 2)),
- (0x1d46c, (4398, 1)),
- (0x1d4fa, (4529, 1)),
+ (0xffb8, (4192, 1)),
+ (0xfc0b, (2700, 2)),
(0xfc04, (2685, 3)),
- (0x1d640, (4843, 1)),
- (0x1f215, (5595, 1)),
- (0x2484, (642, 4)),
- (0x3f5, (108, 1)),
+ (0x1d651, (4860, 1)),
+ (0x1f215, (5657, 1)),
+ (0x3325, (1824, 3)),
+ (0x1d753, (5116, 1)),
(0x2fbf, (1048, 1)),
+ (0x1d73e, (5095, 1)),
(0xff06, (4014, 1)),
- (0xfcc7, (3093, 2)),
- (0xff42, (4074, 1)),
- (0xfe5c, (3815, 1)),
+ (0xfb67, (2512, 1)),
+ (0x3242, (1409, 3)),
+ (0x1d6c1, (4970, 1)),
(0xfe14, (3761, 1)),
- (0x1dae, (216, 1)),
- (0x1d409, (4300, 1)),
+ (0x1d743, (5100, 1)),
+ (0xfeca, (3944, 1)),
(0xfe43, (3789, 1)),
- (0xfc77, (2928, 2)),
(0x1d7d1, (5240, 1)),
- (0xfc19, (2728, 2)),
- (0xfb86, (2543, 1)),
- (0x1d4da, (4497, 1)),
- (0x3378, (2099, 3)),
- (0x1d661, (4876, 1)),
- (0x3252, (1424, 2)),
- (0x2f49, (930, 1)),
- (0x331a, (1780, 6)),
+ (0x1d563, (4622, 1)),
+ (0x1f21f, (5667, 1)),
+ (0xfc0d, (2704, 2)),
+ (0x2f7c, (981, 1)),
+ (0xff82, (4138, 1)),
+ (0x3250, (1419, 3)),
+ (0x1d6df, (5000, 1)),
+ (0x1d7c1, (5226, 1)),
(0xfcfb, (3202, 2)),
(0xfd51, (3339, 3)),
- (0x1ee87, (5383, 1)),
- (0x3399, (2176, 2)),
- (0xfdc5, (3681, 3)),
+ (0x3159, (1124, 1)),
+ (0x1d422, (4325, 1)),
+ (0xfb04, (2460, 3)),
+ (0x313a, (1093, 1)),
(0x1d638, (4835, 1)),
- (0x1d7a8, (5201, 1)),
- (0x1d739, (5090, 1)),
- (0x32de, (1635, 1)),
- (0xfdf7, (3716, 4)),
- (0x1f136, (5543, 1)),
+ (0x33cb, (2301, 2)),
+ (0x107a0, (4265, 1)),
+ (0x1d492, (4436, 1)),
+ (0x2460, (556, 1)),
+ (0x1d510, (4548, 1)),
(0x3374, (2090, 3)),
- (0x1d53e, (4591, 1)),
+ (0x1e032, (5289, 1)),
(0xfb29, (2486, 1)),
- (0x1ee01, (5288, 1)),
- (0x1fbf5, (5668, 1)),
- (0x1d76a, (5139, 1)),
- (0x32d9, (1630, 1)),
- (0xfd2a, (3296, 2)),
- (0x1d4a9, (4452, 1)),
- (0x24b3, (778, 3)),
- (0x2151, (438, 3)),
- (0xff95, (4157, 1)),
- (0x24aa, (751, 3)),
- (0x32a7, (1544, 1)),
- (0x1d57e, (4649, 1)),
- (0x32bc, (1576, 2)),
- (0x2482, (634, 4)),
- (0x2176, (524, 3)),
+ (0x1ee01, (5350, 1)),
+ (0x1d623, (4814, 1)),
+ (0x331d, (1793, 3)),
+ (0xffe8, (4228, 1)),
+ (0x1d531, (4579, 1)),
+ (0x1ee2a, (5385, 1)),
+ (0x2fb9, (1042, 1)),
+ (0x24e9, (838, 1)),
+ (0xfcf0, (3177, 2)),
+ (0x1d4e7, (4510, 1)),
+ (0x2fd3, (1068, 1)),
+ (0xfd62, (3390, 3)),
+ (0x1d7de, (5253, 1)),
+ (0x1ee1e, (5378, 1)),
+ (0xfdb2, (3624, 3)),
(0x2fb4, (1037, 1)),
(0xffc2, (4199, 1)),
- (0xfb5e, (2503, 1)),
- (0x1d60d, (4792, 1)),
- (0x2476, (593, 3)),
+ (0x322c, (1343, 3)),
+ (0xfe8c, (3881, 2)),
+ (0x1d6ef, (5016, 1)),
+ (0x329f, (1536, 1)),
(0x10796, (4255, 1)),
- (0x1d55d, (4616, 1)),
- (0x1d5c, (181, 1)),
- (0x107b3, (4283, 1)),
- (0x1d527, (4569, 1)),
- (0x1d768, (5137, 1)),
- (0xffa5, (4173, 1)),
- (0x2f45, (926, 1)),
- (0xfd81, (3483, 3)),
+ (0x1d38, (147, 1)),
+ (0x331e, (1796, 4)),
+ (0x1d65c, (4871, 1)),
+ (0xfb76, (2527, 1)),
+ (0x1f11d, (5551, 3)),
+ (0xfc95, (2988, 2)),
+ (0x1f12c, (5594, 1)),
(0x1d588, (4659, 1)),
- (0xfe33, (3773, 1)),
- (0x1d6c7, (4976, 1)),
- (0x2f2e, (903, 1)),
- (0x338c, (2146, 2)),
+ (0x33ee, (2384, 3)),
+ (0x24a9, (748, 3)),
+ (0x3209, (1219, 3)),
+ (0x3202, (1198, 3)),
(0x1d72a, (5075, 1)),
- (0x3221, (1310, 3)),
- (0xff11, (4025, 1)),
+ (0x2230, (553, 3)),
+ (0x1ee21, (5380, 1)),
(0x3177, (1154, 1)),
- (0xfd5b, (3369, 3)),
- (0xff88, (4144, 1)),
- (0xff08, (4016, 1)),
- (0x2fa6, (1023, 1)),
- (0xff27, (4047, 1)),
- (0x1d4ae, (4456, 1)),
- (0xfd71, (3435, 3)),
+ (0x335e, (2030, 2)),
+ (0xfeed, (3979, 1)),
+ (0x3312, (1741, 4)),
+ (0x3392, (2159, 3)),
+ (0x1d41e, (4321, 1)),
+ (0x1d5a8, (4691, 1)),
+ (0xff6b, (4115, 1)),
(0xfef1, (3983, 1)),
- (0x1d4b5, (4463, 1)),
- (0x2090, (350, 1)),
- (0x2467, (563, 1)),
- (0x1f145, (5558, 1)),
- (0x1f232, (5624, 1)),
+ (0x329b, (1532, 1)),
+ (0xfb9d, (2566, 1)),
+ (0x1d69a, (4933, 1)),
+ (0x32c3, (1590, 2)),
+ (0x32b2, (1556, 2)),
+ (0xfc8f, (2976, 2)),
(0x216c, (509, 1)),
- (0x222f, (551, 2)),
- (0xfe62, (3821, 1)),
- (0x1d4e0, (4503, 1)),
+ (0x1ee99, (5462, 1)),
+ (0xfdbe, (3660, 3)),
+ (0x2fb7, (1040, 1)),
(0x1d760, (5129, 1)),
(0x33c4, (2284, 2)),
- (0xff3a, (4066, 1)),
- (0x1d590, (4667, 1)),
- (0x1ee1f, (5317, 1)),
- (0x3375, (2093, 2)),
- (0x323e, (1397, 3)),
+ (0xfc8a, (2966, 2)),
+ (0x1d7f9, (5280, 1)),
+ (0x1d53c, (4589, 1)),
+ (0x32cb, (1608, 3)),
(0xfd29, (3294, 2)),
- (0x1d5a9, (4692, 1)),
- (0x3219, (1278, 4)),
- (0xfc6b, (2904, 2)),
+ (0x1f128, (5584, 3)),
+ (0x1da0, (202, 1)),
+ (0xfe9f, (3901, 1)),
+ (0x2171, (514, 2)),
(0x1d56b, (4630, 1)),
- (0x24d4, (817, 1)),
- (0x1d6b1, (4954, 1)),
+ (0x1d64e, (4857, 1)),
+ (0x1d432, (4341, 1)),
(0x3315, (1753, 6)),
(0xfb64, (2509, 1)),
- (0xfd98, (3546, 3)),
- (0xfd2e, (3304, 2)),
+ (0x3284, (1509, 1)),
+ (0x3357, (2015, 3)),
(0xfc35, (2784, 2)),
- (0x1d72f, (5080, 1)),
+ (0x2f92, (1003, 1)),
(0x216f, (512, 1)),
(0x33ab, (2222, 3)),
- (0xfef0, (3982, 1)),
- (0x2078, (327, 1)),
+ (0x1d434, (4343, 1)),
+ (0x1d4c1, (4473, 1)),
(0xfdbd, (3657, 3)),
- (0x3288, (1513, 1)),
- (0x32ca, (1605, 3)),
+ (0x1d6bd, (4966, 1)),
+ (0x1ee34, (5394, 1)),
(0x1d6cc, (4981, 1)),
- (0xfbdc, (2600, 1)),
- (0x1fbf2, (5665, 1)),
- (0x2004, (279, 1)),
- (0x1da9, (211, 1)),
- (0x1d5fa, (4773, 1)),
- (0xfc86, (2958, 2)),
- (0xff92, (4154, 1)),
- (0x1d48c, (4430, 1)),
- (0x326f, (1468, 2)),
- (0xfc5c, (2862, 2)),
+ (0x1f135, (5604, 1)),
+ (0xfc9f, (3013, 2)),
+ (0x1d556, (4609, 1)),
+ (0x33c7, (2292, 3)),
+ (0xfb00, (2451, 2)),
+ (0x1d765, (5134, 1)),
+ (0x1d748, (5105, 1)),
+ (0x2084, (339, 1)),
+ (0x1d44a, (4365, 1)),
+ (0x1d62, (187, 1)),
(0x318c, (1175, 1)),
- (0xfd38, (3324, 2)),
- (0x1d47, (161, 1)),
- (0x1d609, (4788, 1)),
- (0xfba1, (2570, 1)),
- (0x1eeb9, (5425, 1)),
- (0x1d4fc, (4531, 1)),
- (0x3349, (1962, 2)),
+ (0x2049, (314, 2)),
+ (0x32e4, (1641, 1)),
+ (0x1d552, (4605, 1)),
+ (0x1d546, (4597, 1)),
+ (0x1d624, (4815, 1)),
+ (0x1eeb9, (5487, 1)),
+ (0x1d4da, (4497, 1)),
(0x1ca, (50, 2)),
- (0x2f68, (961, 1)),
- (0x331c, (1790, 3)),
- (0xfd77, (3453, 3)),
- (0x1d2e, (138, 1)),
- (0x2f20, (889, 1)),
- (0x1ee3b, (5337, 1)),
+ (0x3240, (1403, 3)),
+ (0xfba8, (2579, 1)),
+ (0xffdc, (4219, 1)),
+ (0x3225, (1322, 3)),
+ (0x1d799, (5186, 1)),
+ (0x1d622, (4813, 1)),
+ (0xfb28, (2485, 1)),
(0x303a, (1075, 1)),
- (0x1ee6d, (5361, 1)),
- (0xfb8f, (2552, 1)),
- (0x332d, (1850, 5)),
- (0x1d682, (4909, 1)),
- (0xfd76, (3450, 3)),
- (0x333d, (1918, 5)),
- (0x1f217, (5597, 1)),
+ (0xffb2, (4186, 1)),
+ (0x1d592, (4669, 1)),
+ (0x207b, (330, 1)),
+ (0x1f12a, (5590, 3)),
+ (0xfd1f, (3274, 2)),
+ (0x1f217, (5659, 1)),
(0x1d575, (4640, 1)),
- (0xfe77, (3840, 2)),
+ (0xfcf1, (3179, 2)),
+ (0xfd6e, (3426, 3)),
(0x24dd, (826, 1)),
- (0x339c, (2182, 2)),
- (0x320a, (1222, 3)),
- (0x1f119, (5477, 3)),
- (0xfc57, (2852, 2)),
- (0x1f21f, (5605, 1)),
- (0x1d794, (5181, 1)),
- (0xfdb3, (3627, 3)),
- (0x107a0, (4265, 1)),
- (0x222d, (548, 3)),
- (0x2f8f, (1000, 1)),
- (0x1d553, (4606, 1)),
+ (0x1d605, (4784, 1)),
+ (0x1ee2f, (5390, 1)),
+ (0xfd27, (3290, 2)),
+ (0x1d52e, (4576, 1)),
+ (0x1d428, (4331, 1)),
+ (0x1ee36, (5396, 1)),
+ (0x32eb, (1648, 1)),
+ (0x1d678, (4899, 1)),
+ (0xfb14, (2469, 2)),
+ (0xff10, (4024, 1)),
+ (0x1d60e, (4793, 1)),
(0xfbad, (2584, 1)),
- (0x212f, (412, 1)),
- (0xfca6, (3027, 2)),
- (0x33c6, (2288, 4)),
- (0xfcd8, (3127, 2)),
- (0x1d40f, (4306, 1)),
- (0x1d423, (4326, 1)),
- (0x2f40, (921, 1)),
- (0x1d4f0, (4519, 1)),
- (0x2f75, (974, 1)),
+ (0x1d570, (4635, 1)),
+ (0x2f38, (913, 1)),
+ (0x2f4a, (931, 1)),
+ (0xff3a, (4066, 1)),
+ (0x1d741, (5098, 1)),
+ (0x1d788, (5169, 1)),
+ (0x320d, (1231, 3)),
+ (0x1d64b, (4854, 1)),
+ (0x2b1, (63, 1)),
(0x33a6, (2207, 3)),
- (0x1d425, (4328, 1)),
- (0x1d76d, (5142, 1)),
- (0x1da4, (206, 1)),
- (0x1ee57, (5348, 1)),
- (0xfea0, (3902, 1)),
- (0x1d49a, (4444, 1)),
- (0xfea1, (3903, 1)),
+ (0x1d774, (5149, 1)),
+ (0xfd2c, (3300, 2)),
+ (0x2109, (381, 2)),
+ (0x1f100, (5490, 2)),
+ (0xfc03, (2682, 3)),
+ (0x1d61, (186, 1)),
+ (0x1d7f2, (5273, 1)),
(0xfbab, (2582, 1)),
- (0x3300, (1670, 5)),
- (0x3145, (1104, 1)),
- (0x1d6c0, (4969, 1)),
- (0x1d539, (4587, 1)),
+ (0xffa7, (4175, 1)),
+ (0x1d664, (4879, 1)),
+ (0xfcdd, (3137, 2)),
+ (0x1d4be, (4470, 1)),
(0x33da, (2337, 2)),
- (0x2075, (324, 1)),
- (0x1d51e, (4560, 1)),
- (0x10782, (4236, 1)),
+ (0x1d67, (192, 1)),
+ (0x2f60, (953, 1)),
+ (0x24a0, (721, 3)),
(0xfb56, (2495, 1)),
(0x24bd, (794, 1)),
+ (0xfbdf, (2604, 1)),
(0xffb7, (4191, 1)),
- (0x1ee16, (5308, 1)),
- (0x1d6e2, (5003, 1)),
- (0xfdc7, (3687, 3)),
- (0x2fbc, (1045, 1)),
- (0xfc66, (2890, 3)),
- (0xfc6e, (2910, 2)),
- (0x1fcd, (247, 3)),
+ (0x1d77d, (5158, 1)),
+ (0x3296, (1527, 1)),
+ (0x1d5b7, (4706, 1)),
+ (0x1f23a, (5694, 1)),
+ (0x316e, (1145, 1)),
+ (0x336d, (2071, 3)),
+ (0xff7e, (4134, 1)),
(0x1d534, (4582, 1)),
(0x32a6, (1543, 1)),
- (0xfd84, (3492, 3)),
- (0x1ee7c, (5374, 1)),
- (0xfd6f, (3429, 3)),
- (0xfeef, (3981, 1)),
- (0xfd80, (3480, 3)),
+ (0x1ee7c, (5436, 1)),
+ (0x1ee2d, (5388, 1)),
+ (0xfd5b, (3369, 3)),
+ (0x331a, (1780, 6)),
+ (0x32f4, (1657, 1)),
(0x32bb, (1574, 2)),
- (0x3270, (1470, 2)),
- (0x333f, (1927, 2)),
+ (0x3343, (1940, 4)),
+ (0x2fd4, (1069, 1)),
(0xfcd2, (3115, 2)),
- (0x334c, (1973, 5)),
- (0x1d5bd, (4712, 1)),
- (0x1d7ec, (5267, 1)),
- (0x1d656, (4865, 1)),
- (0x2464, (560, 1)),
+ (0x2189, (543, 3)),
+ (0x107ae, (4279, 1)),
+ (0xffd3, (4212, 1)),
+ (0x2f2d, (902, 1)),
+ (0xfd56, (3354, 3)),
(0x2105, (374, 3)),
- (0x1d2d, (137, 1)),
- (0x1d66f, (4890, 1)),
- (0x329a, (1531, 1)),
- (0x1ee42, (5338, 1)),
- (0x208b, (346, 1)),
+ (0xfbff, (2672, 1)),
+ (0xfbea, (2615, 3)),
+ (0x1d71d, (5062, 1)),
+ (0x1ee42, (5400, 1)),
+ (0xfdfc, (3753, 4)),
(0x33d8, (2330, 4)),
- (0xfe19, (3766, 3)),
- (0x3358, (2018, 2)),
+ (0x675, (112, 2)),
+ (0x1cb, (52, 2)),
(0xfd6b, (3417, 3)),
- (0x1d711, (5050, 1)),
- (0x1ee80, (5376, 1)),
+ (0x332a, (1837, 3)),
+ (0x1d7a7, (5200, 1)),
(0xfb51, (2490, 1)),
(0x33fd, (2429, 3)),
- (0x1d729, (5074, 1)),
- (0x107a2, (4267, 1)),
- (0x1d66, (191, 1)),
- (0x1d497, (4441, 1)),
- (0x2498, (697, 3)),
+ (0x1ee57, (5410, 1)),
+ (0xa0, (0, 1)),
+ (0x2f2b, (900, 1)),
+ (0x1d404, (4295, 1)),
+ (0x2081, (336, 1)),
(0xf79, (132, 3)),
- (0x314f, (1114, 1)),
- (0x1d79b, (5188, 1)),
+ (0xfeec, (3978, 1)),
+ (0xfc2f, (2772, 2)),
(0x1d52, (171, 1)),
- (0x1d5d, (182, 1)),
- (0x246d, (573, 2)),
- (0x1d53d, (4590, 1)),
+ (0xff41, (4073, 1)),
+ (0x1d5ad, (4696, 1)),
+ (0x2133, (415, 1)),
(0x1d7ab, (5204, 1)),
- (0xfd94, (3534, 3)),
- (0xff75, (4125, 1)),
- (0x3350, (1989, 3)),
- (0x1f137, (5544, 1)),
+ (0x1d463, (4389, 1)),
+ (0xfe71, (3832, 2)),
+ (0xfbaf, (2586, 1)),
+ (0x1d736, (5087, 1)),
(0x1d5e, (183, 1)),
(0x2e3, (86, 1)),
- (0x1f244, (5646, 3)),
- (0xfb79, (2530, 1)),
- (0x2135, (417, 1)),
+ (0xfea4, (3906, 1)),
+ (0x1e035, (5292, 1)),
+ (0x3354, (2002, 5)),
(0x211a, (397, 1)),
- (0x1ee5f, (5352, 1)),
- (0xfe9b, (3897, 1)),
- (0x2fb9, (1042, 1)),
- (0x2f3b, (916, 1)),
- (0x1d54b, (4599, 1)),
- (0x1d5bb, (4710, 1)),
- (0xfd9f, (3567, 3)),
- (0xfe17, (3764, 1)),
- (0x1ee82, (5378, 1)),
- (0xfb6e, (2519, 1)),
- (0x248b, (664, 2)),
- (0x1f115, (5465, 3)),
- (0x335a, (2022, 2)),
+ (0xfe8b, (3879, 2)),
+ (0x1ee5f, (5414, 1)),
+ (0x1d74f, (5112, 1)),
+ (0x1d78, (196, 1)),
+ (0x1f13f, (5614, 1)),
+ (0xffc7, (4204, 1)),
+ (0x314b, (1110, 1)),
+ (0x1d5a6, (4689, 1)),
+ (0xfd0a, (3232, 2)),
+ (0x2476, (593, 3)),
+ (0x1e037, (5294, 1)),
+ (0x1d63, (188, 1)),
+ (0xfb62, (2507, 1)),
+ (0xfdf6, (3712, 4)),
(0xfd7a, (3462, 3)),
(0xffa2, (4170, 1)),
- (0x1d529, (4571, 1)),
- (0x3303, (1684, 3)),
- (0x1d7ad, (5206, 1)),
- (0x2f8c, (997, 1)),
- (0x10797, (4256, 1)),
- (0x2f52, (939, 1)),
- (0x3245, (1416, 1)),
- (0x336e, (2074, 3)),
- (0x1d696, (4929, 1)),
+ (0x1c4, (35, 3)),
+ (0x1d4f4, (4523, 1)),
+ (0x3388, (2135, 3)),
+ (0x1d5a2, (4685, 1)),
+ (0x2f90, (1001, 1)),
+ (0x3281, (1506, 1)),
+ (0x1d4b2, (4460, 1)),
+ (0x1d61a, (4805, 1)),
+ (0xfcc8, (3095, 2)),
(0x1d61e, (4809, 1)),
- (0xfe7a, (3846, 2)),
- (0xff85, (4141, 1)),
+ (0xfcb3, (3053, 2)),
+ (0xfd86, (3498, 3)),
(0x2096, (356, 1)),
(0x1d714, (5053, 1)),
(0xfed7, (3957, 1)),
- (0x1ee9b, (5402, 1)),
- (0x1d793, (5180, 1)),
- (0x1d494, (4438, 1)),
+ (0xff8c, (4148, 1)),
+ (0x2f77, (976, 1)),
+ (0x107b4, (4284, 1)),
(0x2089, (344, 1)),
- (0xfbd8, (2596, 1)),
- (0x1d6d2, (4987, 1)),
+ (0x3207, (1213, 3)),
+ (0xfd15, (3254, 2)),
(0x1d6b7, (4960, 1)),
- (0x1d6ed, (5014, 1)),
- (0x1d660, (4875, 1)),
+ (0x1f134, (5603, 1)),
+ (0xfe59, (3812, 1)),
(0x1d6d4, (4989, 1)),
- (0x2f6b, (964, 1)),
- (0x2f9d, (1014, 1)),
+ (0x1d708, (5041, 1)),
+ (0x1d7f6, (5277, 1)),
+ (0x1d74e, (5111, 1)),
(0x1d7db, (5250, 1)),
- (0x1ee74, (5367, 1)),
- (0x32ab, (1548, 1)),
- (0x2f50, (937, 1)),
+ (0xfcbe, (3075, 2)),
+ (0x2f86, (991, 1)),
(0x2f35, (910, 1)),
- (0xfb9c, (2565, 1)),
- (0x1ee06, (5292, 1)),
+ (0xfb81, (2538, 1)),
+ (0x1d569, (4628, 1)),
(0x3189, (1172, 1)),
- (0xfdc2, (3672, 3)),
+ (0xfc71, (2916, 2)),
(0x1d45b, (4381, 1)),
- (0x2b3, (65, 1)),
- (0x1d700, (5033, 1)),
- (0x149, (32, 2)),
- (0x3228, (1331, 3)),
- (0xfc6f, (2912, 2)),
- (0x2009, (284, 1)),
- (0x1e9b, (236, 2)),
+ (0xff4b, (4083, 1)),
+ (0xfbdb, (2599, 1)),
+ (0x3243, (1412, 3)),
+ (0x2b5, (67, 1)),
+ (0x1d564, (4623, 1)),
+ (0x3170, (1147, 1)),
+ (0xfbdd, (2601, 2)),
(0x2fce, (1063, 1)),
- (0x1d706, (5039, 1)),
- (0x1d6d0, (4985, 1)),
+ (0x215a, (466, 3)),
+ (0x2175, (522, 2)),
+ (0xfd7f, (3477, 3)),
(0x3380, (2119, 2)),
- (0x2150, (435, 3)),
- (0x1d7ae, (5207, 1)),
- (0xfc02, (2679, 3)),
- (0x24ba, (791, 1)),
- (0xfc62, (2878, 3)),
+ (0xff4c, (4084, 1)),
+ (0x1d6cb, (4980, 1)),
+ (0xfee2, (3968, 1)),
+ (0xffc5, (4202, 1)),
(0x32ae, (1551, 1)),
- (0x33c8, (2295, 2)),
+ (0xfe69, (3827, 1)),
(0x3235, (1370, 3)),
- (0x338f, (2152, 2)),
+ (0x24bc, (793, 1)),
+ (0x2fbb, (1044, 1)),
(0xffa3, (4171, 1)),
- (0x3036, (1072, 1)),
- (0x1f12b, (5531, 1)),
- (0xfdc3, (3675, 3)),
- (0x1dad, (215, 1)),
- (0xfced, (3171, 2)),
- (0x33d1, (2313, 2)),
- (0xfd88, (3504, 3)),
- (0x1d507, (4541, 1)),
- (0x1f146, (5559, 1)),
- (0x1eeb3, (5419, 1)),
- (0xfb5a, (2499, 1)),
- (0x1d404, (4295, 1)),
+ (0x3316, (1759, 6)),
+ (0x1f12b, (5593, 1)),
+ (0xfc11, (2712, 2)),
+ (0x2f44, (925, 1)),
+ (0xfbd3, (2591, 1)),
+ (0x1d63b, (4838, 1)),
+ (0xfd0f, (3242, 2)),
+ (0x1f146, (5621, 1)),
+ (0x328e, (1519, 1)),
+ (0x309c, (1078, 2)),
+ (0x1da6, (208, 1)),
+ (0x32bd, (1578, 2)),
(0xfba2, (2571, 1)),
- (0x1d4d6, (4493, 1)),
- (0x24c7, (804, 1)),
- (0x2f8e, (999, 1)),
- (0x2f07, (864, 1)),
- (0x1d435, (4344, 1)),
+ (0x1d527, (4569, 1)),
+ (0xfcc5, (3089, 2)),
+ (0x332d, (1850, 5)),
+ (0xfe5a, (3813, 1)),
+ (0x1d60c, (4791, 1)),
(0x2481, (630, 4)),
- (0x1ee69, (5358, 1)),
- (0x318d, (1176, 1)),
- (0xfc76, (2926, 2)),
- (0x1d4ea, (4513, 1)),
- (0x1d63a, (4837, 1)),
- (0x1d6e1, (5002, 1)),
- (0x1f117, (5471, 3)),
- (0x33bb, (2264, 2)),
- (0xff36, (4062, 1)),
- (0xfcb2, (3051, 2)),
- (0x1d614, (4799, 1)),
- (0xfec7, (3941, 1)),
- (0x1d59b, (4678, 1)),
- (0xfebe, (3932, 1)),
- (0x1d4f9, (4528, 1)),
- (0x1d605, (4784, 1)),
+ (0xfe4e, (3802, 1)),
+ (0xff45, (4077, 1)),
+ (0x32ef, (1652, 1)),
+ (0x1d2d, (137, 1)),
+ (0x3135, (1088, 1)),
+ (0x3342, (1937, 3)),
+ (0x1f117, (5533, 3)),
+ (0x1d72b, (5076, 1)),
+ (0x1d41, (155, 1)),
+ (0xff5d, (4101, 1)),
+ (0xfd03, (3218, 2)),
+ (0xfecc, (3946, 1)),
+ (0x1d52f, (4577, 1)),
+ (0xfc23, (2748, 2)),
+ (0x1d522, (4564, 1)),
+ (0x32f8, (1661, 1)),
(0x3143, (1102, 1)),
+ (0x1d450, (4371, 1)),
(0x2db, (77, 2)),
- (0x1ee00, (5287, 1)),
- (0x2137, (419, 1)),
- (0x1d77f, (5160, 1)),
+ (0xfccb, (3101, 2)),
+ (0x24b1, (772, 3)),
(0x1d7ee, (5269, 1)),
- (0x2166, (494, 3)),
- (0xfbd9, (2597, 1)),
+ (0x1d52d, (4575, 1)),
+ (0x1d792, (5179, 1)),
(0x2fa9, (1026, 1)),
(0x3206, (1210, 3)),
- (0xfbe2, (2607, 1)),
+ (0x2f22, (891, 1)),
+ (0x2f14, (877, 1)),
(0x309b, (1076, 2)),
- (0x1f200, (5584, 2)),
- (0x1eea9, (5410, 1)),
- (0x2037, (303, 3)),
- (0x1d559, (4612, 1)),
- (0x1d64d, (4856, 1)),
- (0x2495, (688, 3)),
- (0xfbac, (2583, 1)),
- (0x2f25, (894, 1)),
- (0x3179, (1156, 1)),
- (0xfeb0, (3918, 1)),
- (0x1d496, (4440, 1)),
+ (0x1eea9, (5472, 1)),
+ (0xfd74, (3444, 3)),
+ (0x1d6a, (195, 1)),
+ (0x1e05e, (5333, 1)),
+ (0x1d5d6, (4737, 1)),
+ (0x1d504, (4539, 1)),
+ (0xfc9e, (3011, 2)),
+ (0x2153, (445, 3)),
+ (0x1d421, (4324, 1)),
+ (0x1eea5, (5468, 1)),
+ (0x2f67, (960, 1)),
(0x3d4, (100, 2)),
(0xfc82, (2950, 2)),
- (0x1ee98, (5399, 1)),
- (0x3173, (1150, 1)),
- (0xfc16, (2722, 2)),
+ (0x1ee98, (5461, 1)),
+ (0x2f1f, (888, 1)),
+ (0x1d7d3, (5242, 1)),
(0x3313, (1745, 6)),
- (0x1d4c7, (4478, 1)),
- (0xfbd6, (2594, 1)),
- (0x1ee67, (5356, 1)),
- (0xff53, (4091, 1)),
+ (0x325e, (1448, 2)),
+ (0x2f74, (973, 1)),
+ (0x336c, (2068, 3)),
+ (0x2484, (642, 4)),
(0xfe66, (3825, 1)),
- (0x1d513, (4551, 1)),
- (0xab5c, (2446, 1)),
- (0xfbf4, (2645, 3)),
+ (0x1078b, (4244, 1)),
+ (0xfef6, (3990, 3)),
+ (0xfd85, (3495, 3)),
(0x1d48b, (4429, 1)),
- (0x24d8, (821, 1)),
- (0x1d666, (4881, 1)),
+ (0x2487, (654, 4)),
+ (0x1d64f, (4858, 1)),
(0xfe7d, (3852, 2)),
- (0x1d43a, (4349, 1)),
- (0x1ee8e, (5389, 1)),
- (0x24d3, (816, 1)),
+ (0xfd7c, (3468, 3)),
+ (0xfcc1, (3081, 2)),
+ (0x1d4a2, (4449, 1)),
(0x203e, (308, 2)),
- (0x2480, (626, 4)),
- (0x1d704, (5037, 1)),
- (0x1d762, (5131, 1)),
- (0xff0f, (4023, 1)),
- (0xfce0, (3144, 3)),
- (0x1d42, (156, 1)),
- (0xfccd, (3105, 2)),
- (0x2a0c, (840, 4)),
- (0x2189, (543, 3)),
- (0x3166, (1137, 1)),
+ (0x1d598, (4675, 1)),
+ (0x323c, (1391, 3)),
+ (0x247a, (605, 3)),
+ (0xfd12, (3248, 2)),
+ (0x1d429, (4332, 1)),
+ (0x1ee13, (5367, 1)),
+ (0xfc8d, (2972, 2)),
+ (0x2f29, (898, 1)),
+ (0x1d6a1, (4940, 1)),
+ (0x1f110, (5512, 3)),
(0x1d2c, (136, 1)),
(0x1d7b8, (5217, 1)),
- (0x1d42d, (4336, 1)),
- (0x24c2, (799, 1)),
- (0x1d79d, (5190, 1)),
- (0x2164, (491, 1)),
+ (0x32ec, (1649, 1)),
+ (0x3145, (1104, 1)),
+ (0xfdbf, (3663, 3)),
+ (0x1d54d, (4601, 1)),
(0x3181, (1164, 1)),
- (0xfd83, (3489, 3)),
- (0xb3, (7, 1)),
- (0xfc05, (2688, 2)),
- (0xfd2c, (3300, 2)),
- (0x1d6f6, (5023, 1)),
- (0x1d444, (4359, 1)),
- (0x33a7, (2210, 3)),
+ (0xfc67, (2893, 3)),
+ (0xff34, (4060, 1)),
+ (0x1d6e3, (5004, 1)),
+ (0xfd70, (3432, 3)),
+ (0x1d608, (4787, 1)),
+ (0x1d711, (5050, 1)),
+ (0xff9d, (4165, 1)),
(0x1d51f, (4561, 1)),
- (0x332e, (1855, 6)),
- (0x1d5b3, (4702, 1)),
- (0x1d488, (4426, 1)),
- (0x3393, (2162, 3)),
+ (0x1d773, (5148, 1)),
+ (0xfd95, (3537, 3)),
+ (0xff5f, (4103, 1)),
+ (0x2174, (521, 1)),
(0xfec4, (3938, 1)),
- (0x2f6c, (965, 1)),
+ (0x1d523, (4565, 1)),
(0x207c, (331, 1)),
- (0x1d65c, (4871, 1)),
+ (0x2faa, (1027, 1)),
+ (0x1d69e, (4937, 1)),
(0x2f55, (942, 1)),
- (0xfe9c, (3898, 1)),
- (0xff48, (4080, 1)),
- (0x1fce, (250, 3)),
+ (0x1d582, (4653, 1)),
+ (0x1d601, (4780, 1)),
+ (0x1d7aa, (5203, 1)),
(0x215f, (481, 2)),
- (0x1fbf, (240, 2)),
+ (0xff4a, (4082, 1)),
(0x1d477, (4409, 1)),
- (0x1d418, (4315, 1)),
(0x1d525, (4567, 1)),
- (0x2f6e, (967, 1)),
+ (0xfda2, (3576, 3)),
(0xff94, (4156, 1)),
- (0x1d744, (5101, 1)),
+ (0xff8e, (4150, 1)),
+ (0x1d43b, (4350, 1)),
(0x1d709, (5042, 1)),
- (0x1ee62, (5354, 1)),
- (0x2468, (564, 1)),
- (0x1ee77, (5370, 1)),
- (0x1eeac, (5412, 1)),
- (0x2f44, (925, 1)),
+ (0x1d56d, (4632, 1)),
+ (0x33ea, (2372, 3)),
+ (0x1ee77, (5432, 1)),
+ (0x1eeac, (5474, 1)),
+ (0x334d, (1978, 4)),
(0x1d6a5, (4944, 1)),
(0x33c2, (2278, 4)),
- (0x2f02, (859, 1)),
- (0x1d56f, (4634, 1)),
- (0x24c4, (801, 1)),
+ (0x1d661, (4876, 1)),
+ (0xfd01, (3214, 2)),
+ (0x1d5d2, (4733, 1)),
(0x2008, (283, 1)),
(0xfd8f, (3525, 3)),
(0x3227, (1328, 3)),
(0x1d447, (4362, 1)),
- (0xfc56, (2850, 2)),
- (0xfd93, (3531, 3)),
+ (0x249d, (712, 3)),
+ (0x1f14b, (5627, 2)),
(0x1d5fc, (4775, 1)),
(0x1d50a, (4544, 1)),
- (0xfe81, (3859, 2)),
+ (0xfb86, (2543, 1)),
(0x1d719, (5058, 1)),
- (0x2f3a, (915, 1)),
- (0x3319, (1774, 6)),
- (0x1d584, (4655, 1)),
+ (0x330f, (1729, 4)),
+ (0xfd6a, (3414, 3)),
+ (0xfc9d, (3009, 2)),
(0xfc3e, (2802, 2)),
- (0x323a, (1385, 3)),
- (0x2f38, (913, 1)),
+ (0x1e064, (5339, 1)),
+ (0x3d1, (96, 1)),
(0xffaf, (4183, 1)),
+ (0x1d433, (4342, 1)),
(0xfbfe, (2671, 1)),
- (0x1d59f, (4682, 1)),
- (0x1d646, (4849, 1)),
- (0x24cc, (809, 1)),
- (0xfd64, (3396, 3)),
- (0xfd3b, (3330, 2)),
+ (0x1d4dc, (4499, 1)),
+ (0xfbf0, (2633, 3)),
+ (0x33dd, (2343, 2)),
+ (0xfcf5, (3190, 2)),
(0xfce6, (3157, 2)),
(0x1d554, (4607, 1)),
- (0x1d791, (5178, 1)),
- (0x2f1d, (886, 1)),
- (0x1d5c0, (4715, 1)),
- (0xfc60, (2872, 3)),
- (0x1d60f, (4794, 1)),
+ (0x1fdf, (262, 3)),
+ (0x2082, (337, 1)),
+ (0xfeaf, (3917, 1)),
+ (0x1d43d, (4352, 1)),
+ (0x1c9, (48, 2)),
+ (0x1e060, (5335, 1)),
(0xff29, (4049, 1)),
- (0xff82, (4138, 1)),
- (0x1d7e4, (5259, 1)),
- (0x1d6ee, (5015, 1)),
- (0x327c, (1494, 5)),
- (0x3142, (1101, 1)),
- (0x2f7c, (981, 1)),
- (0x2120, (401, 2)),
- (0x32b5, (1562, 2)),
- (0x1d72c, (5077, 1)),
- (0x2f32, (907, 1)),
- (0xff25, (4045, 1)),
- (0x1ee85, (5381, 1)),
- (0xff84, (4140, 1)),
- (0x24e5, (834, 1)),
- (0x1f114, (5462, 3)),
- (0xfbf6, (2651, 3)),
+ (0x33b6, (2254, 2)),
+ (0xfb57, (2496, 1)),
+ (0xfeb2, (3920, 1)),
+ (0x1d703, (5036, 1)),
+ (0x1d5e9, (4756, 1)),
+ (0x24e1, (830, 1)),
+ (0x10794, (4253, 1)),
+ (0x328f, (1520, 1)),
+ (0x1e049, (5312, 1)),
+ (0x1d58c, (4663, 1)),
+ (0x335d, (2028, 2)),
+ (0x3039, (1074, 1)),
+ (0x1d46d, (4399, 1)),
+ (0x2f49, (930, 1)),
+ (0x1f222, (5670, 1)),
(0x32fe, (1667, 1)),
- (0xfe4c, (3799, 2)),
- (0x1f102, (5432, 2)),
- (0xfda0, (3570, 3)),
- (0x33f0, (2390, 3)),
- (0x318a, (1173, 1)),
- (0x2b2, (64, 1)),
- (0xfb90, (2553, 1)),
- (0x24d0, (813, 1)),
- (0x208a, (345, 1)),
- (0x1f132, (5539, 1)),
+ (0x1d79c, (5189, 1)),
+ (0x3179, (1156, 1)),
+ (0x1d697, (4930, 1)),
+ (0x1c8, (46, 2)),
+ (0x2138, (420, 1)),
+ (0x1d6ac, (4949, 1)),
+ (0xfc20, (2742, 2)),
+ (0x327e, (1503, 2)),
+ (0xfd24, (3284, 2)),
+ (0x32df, (1636, 1)),
(0xfc53, (2844, 2)),
+ (0xfeb9, (3927, 1)),
(0x1d76e, (5143, 1)),
- (0x1d657, (4866, 1)),
- (0x1d61f, (4810, 1)),
- (0x1f107, (5442, 2)),
- (0x2102, (371, 1)),
- (0xff2f, (4055, 1)),
+ (0x3378, (2099, 3)),
+ (0xff9f, (4167, 1)),
+ (0x1ee19, (5373, 1)),
+ (0x1f119, (5539, 3)),
+ (0x1d480, (4418, 1)),
(0xfc1d, (2736, 2)),
- (0x1d65b, (4870, 1)),
- (0x3286, (1511, 1)),
- (0x1f13a, (5547, 1)),
+ (0x30ff, (1082, 2)),
+ (0xfb63, (2508, 1)),
+ (0x1f13a, (5609, 1)),
(0x333c, (1914, 4)),
- (0xfc55, (2848, 2)),
- (0xfd26, (3288, 2)),
- (0x217a, (534, 2)),
+ (0xfc87, (2960, 2)),
+ (0x1d45c, (4382, 1)),
+ (0xfea9, (3911, 1)),
(0x1d41a, (4317, 1)),
- (0xfb70, (2521, 1)),
+ (0x1eebb, (5489, 1)),
(0x1d54e, (4602, 1)),
- (0x678, (118, 2)),
- (0x2465, (561, 1)),
- (0x1fcf, (253, 3)),
- (0x32e3, (1640, 1)),
- (0x1d5f6, (4769, 1)),
- (0x1d785, (5166, 1)),
+ (0xffc4, (4201, 1)),
+ (0x1d423, (4326, 1)),
+ (0xfcdc, (3135, 2)),
+ (0x1d58f, (4666, 1)),
+ (0x1d456, (4376, 1)),
+ (0xfd8c, (3516, 3)),
(0x1d5c2, (4717, 1)),
- (0x1d56e, (4633, 1)),
- (0x1d68, (193, 1)),
- (0x2b5, (67, 1)),
- (0xfea4, (3906, 1)),
- (0x3229, (1334, 3)),
- (0x2093, (353, 1)),
+ (0xfdbb, (3651, 3)),
+ (0x1d67c, (4903, 1)),
+ (0x1d4ab, (4454, 1)),
+ (0x1d557, (4610, 1)),
+ (0xfce4, (3153, 2)),
+ (0x322f, (1352, 3)),
+ (0x33bc, (2266, 2)),
(0xfe7e, (3854, 2)),
(0x1d44f, (4370, 1)),
- (0xfe74, (3836, 2)),
- (0xfb25, (2482, 1)),
- (0x315d, (1128, 1)),
- (0x2fa1, (1018, 1)),
- (0xfb7e, (2535, 1)),
- (0xfce7, (3159, 2)),
- (0x1d42f, (4338, 1)),
- (0x2f77, (976, 1)),
- (0x3363, (2041, 3)),
- (0x1eeb7, (5423, 1)),
- (0x2f86, (991, 1)),
- (0xfd60, (3384, 3)),
- (0x211b, (398, 1)),
+ (0x1d74a, (5107, 1)),
+ (0x3167, (1138, 1)),
+ (0xfb9e, (2567, 1)),
+ (0xff6e, (4118, 1)),
+ (0xff90, (4152, 1)),
+ (0x1d700, (5033, 1)),
+ (0x1d431, (4340, 1)),
+ (0x1d459, (4379, 1)),
+ (0x213b, (422, 3)),
+ (0x1d779, (5154, 1)),
+ (0xfc46, (2818, 2)),
+ (0x334b, (1970, 3)),
+ (0xfc41, (2808, 2)),
(0x3279, (1488, 2)),
- (0xfb7a, (2531, 1)),
(0x3294, (1525, 1)),
+ (0x1d4eb, (4514, 1)),
(0x1d71f, (5064, 1)),
- (0x2049, (314, 2)),
+ (0x2f28, (897, 1)),
(0xfbe8, (2613, 1)),
- (0x1ee39, (5336, 1)),
- (0x1d6d5, (4990, 1)),
- (0x1f131, (5538, 1)),
- (0x24a0, (721, 3)),
- (0x2f59, (946, 1)),
- (0x3301, (1675, 4)),
- (0x1d717, (5056, 1)),
- (0x2dc, (79, 2)),
- (0x1d5f3, (4766, 1)),
- (0x1d3a, (149, 1)),
+ (0x24a2, (727, 3)),
+ (0x1d759, (5122, 1)),
+ (0xfcba, (3067, 2)),
+ (0x1d2e, (138, 1)),
+ (0xfb97, (2560, 1)),
+ (0x248c, (666, 2)),
+ (0x1da5, (207, 1)),
+ (0x33d3, (2318, 2)),
+ (0xfdf4, (3704, 4)),
+ (0x107a3, (4268, 1)),
(0x2f8d, (998, 1)),
- (0x3171, (1148, 1)),
- (0xfc32, (2778, 2)),
- (0xfcf5, (3190, 2)),
+ (0x1fbf7, (5732, 1)),
+ (0x1ee7e, (5437, 1)),
+ (0xff31, (4057, 1)),
(0xfd04, (3220, 2)),
- (0x2f79, (978, 1)),
+ (0x323e, (1397, 3)),
(0x246c, (571, 2)),
- (0x1d64b, (4854, 1)),
- (0x1d589, (4660, 1)),
+ (0x1d7e9, (5264, 1)),
+ (0xfd76, (3450, 3)),
(0x3328, (1832, 2)),
- (0x1d679, (4900, 1)),
+ (0x1d602, (4781, 1)),
(0xfe60, (3819, 1)),
+ (0x1d58, (177, 1)),
(0xfd8e, (3522, 3)),
- (0x2f6d, (966, 1)),
- (0xfcb3, (3053, 2)),
- (0x33f3, (2399, 3)),
- (0x1ee86, (5382, 1)),
- (0x1d7eb, (5266, 1)),
- (0x1ee08, (5294, 1)),
+ (0x320b, (1225, 3)),
+ (0x2fa4, (1021, 1)),
+ (0xfcd8, (3127, 2)),
+ (0xfcd3, (3117, 2)),
+ (0x1d446, (4361, 1)),
(0x3310, (1733, 4)),
- (0x1d530, (4578, 1)),
- (0x2179, (533, 1)),
- (0x1d613, (4798, 1)),
- (0xfd54, (3348, 3)),
+ (0x1d66a, (4885, 1)),
+ (0x33ce, (2307, 2)),
+ (0xf77, (129, 3)),
+ (0x1d7b7, (5216, 1)),
(0xfb8a, (2547, 1)),
- (0x326d, (1465, 1)),
- (0xfbd4, (2592, 1)),
- (0xfec5, (3939, 1)),
- (0x1dbb, (229, 1)),
- (0xfc95, (2988, 2)),
- (0xfba6, (2577, 1)),
- (0x2070, (321, 1)),
- (0x33c3, (2282, 2)),
- (0x2131, (414, 1)),
- (0xfc09, (2696, 2)),
- (0x1ee8b, (5386, 1)),
- (0xfbaa, (2581, 1)),
- (0xffb9, (4193, 1)),
- (0x2109, (381, 2)),
+ (0x2f2f, (904, 1)),
+ (0x3372, (2086, 2)),
+ (0x2479, (602, 3)),
+ (0x24c8, (805, 1)),
+ (0x1d485, (4423, 1)),
+ (0x1d476, (4408, 1)),
+ (0x33c1, (2276, 2)),
+ (0x2f7a, (979, 1)),
+ (0x1d6f9, (5026, 1)),
+ (0x1d42b, (4334, 1)),
+ (0x1d475, (4407, 1)),
+ (0xfe51, (3805, 1)),
+ (0x1dbf, (233, 1)),
+ (0x3180, (1163, 1)),
(0x1d427, (4330, 1)),
- (0xfe96, (3892, 1)),
- (0x3273, (1476, 2)),
+ (0x2f08, (865, 1)),
+ (0x1e03a, (5297, 1)),
(0x3381, (2121, 2)),
- (0x1d4e4, (4507, 1)),
+ (0xff5e, (4102, 1)),
(0x1d75f, (5128, 1)),
- (0xfb16, (2473, 2)),
- (0x3246, (1417, 1)),
+ (0x1f2, (58, 2)),
+ (0x1d539, (4587, 1)),
+ (0x1d4f9, (4528, 1)),
(0x2f43, (924, 1)),
- (0x2fa7, (1024, 1)),
- (0x2f9e, (1015, 1)),
- (0xfc84, (2954, 2)),
- (0x2076, (325, 1)),
- (0x1d745, (5102, 1)),
- (0xff62, (4106, 1)),
- (0x24a6, (739, 3)),
- (0x1d6bd, (4966, 1)),
- (0xfd31, (3310, 2)),
+ (0xfd1d, (3270, 2)),
+ (0xfc1f, (2740, 2)),
+ (0x247d, (614, 4)),
+ (0xff3e, (4070, 1)),
+ (0x1d776, (5151, 1)),
+ (0x1d9f, (201, 1)),
+ (0x1ee16, (5370, 1)),
+ (0x3256, (1432, 2)),
(0xff7a, (4130, 1)),
- (0x1d5e4, (4751, 1)),
- (0x249b, (706, 3)),
- (0x3386, (2131, 2)),
- (0x1f12c, (5532, 1)),
+ (0x1d629, (4820, 1)),
+ (0x1ee54, (5409, 1)),
+ (0xff59, (4097, 1)),
+ (0x1d6cf, (4984, 1)),
+ (0x1d6f6, (5023, 1)),
(0x33b5, (2252, 2)),
- (0x24d9, (822, 1)),
+ (0x1d7b9, (5218, 1)),
(0xffd2, (4211, 1)),
- (0x1d9b, (197, 1)),
- (0x1d509, (4543, 1)),
- (0x32b0, (1553, 1)),
+ (0x3358, (2018, 2)),
+ (0x2f2a, (899, 1)),
+ (0x2e1, (84, 1)),
(0xfc68, (2896, 3)),
- (0x1f128, (5522, 3)),
- (0x1d7c1, (5226, 1)),
+ (0x3329, (1834, 3)),
+ (0xfce1, (3147, 2)),
+ (0x1d732, (5083, 1)),
(0xfb54, (2493, 1)),
- (0x1f235, (5627, 1)),
- (0xff55, (4093, 1)),
- (0xfbea, (2615, 3)),
- (0x2da, (75, 2)),
- (0x330d, (1721, 4)),
- (0x32ed, (1650, 1)),
+ (0x1d4e4, (4507, 1)),
+ (0x222d, (548, 3)),
+ (0xfdb1, (3621, 3)),
+ (0x1d794, (5181, 1)),
+ (0xfe88, (3873, 2)),
(0x1d7c8, (5233, 1)),
- (0x32b4, (1560, 2)),
- (0xfb88, (2545, 1)),
- (0x1d72d, (5078, 1)),
- (0x1d669, (4884, 1)),
- (0x3149, (1108, 1)),
- (0x1d5b0, (4699, 1)),
- (0x33e2, (2355, 2)),
- (0x1f140, (5553, 1)),
- (0xff8c, (4148, 1)),
- (0x1d55a, (4613, 1)),
+ (0xff43, (4075, 1)),
+ (0x1d420, (4323, 1)),
+ (0xfc3d, (2800, 2)),
+ (0xfd18, (3260, 2)),
+ (0xfe87, (3871, 2)),
+ (0x2fd0, (1065, 1)),
+ (0xfbf9, (2660, 3)),
+ (0x323b, (1388, 3)),
+ (0x1d685, (4912, 1)),
+ (0x2087, (342, 1)),
(0x1d75d, (5126, 1)),
- (0x107a8, (4273, 1)),
- (0x2f81, (986, 1)),
+ (0x1d47, (161, 1)),
+ (0xfc42, (2810, 2)),
+ (0x2f3f, (920, 1)),
(0xfe82, (3861, 2)),
- (0xfef9, (3999, 3)),
- (0x33f6, (2408, 3)),
- (0x1d44b, (4366, 1)),
+ (0x1d6c5, (4974, 1)),
+ (0x1ee88, (5446, 1)),
+ (0x32e9, (1646, 1)),
(0x1d44d, (4368, 1)),
- (0x327b, (1492, 2)),
- (0x1078d, (4246, 1)),
- (0xfbe4, (2609, 1)),
+ (0xfc52, (2842, 2)),
+ (0x321c, (1290, 4)),
+ (0x1fee, (268, 3)),
(0x1d448, (4363, 1)),
- (0x335e, (2030, 2)),
- (0x1d6f1, (5018, 1)),
- (0x1f214, (5594, 1)),
- (0x1d45d, (4383, 1)),
- (0x1d733, (5084, 1)),
- (0xfc33, (2780, 2)),
- (0x1f11e, (5492, 3)),
- (0x1d632, (4829, 1)),
- (0xfee4, (3970, 1)),
+ (0x3349, (1962, 2)),
+ (0x1d5e2, (4749, 1)),
+ (0x1f214, (5656, 1)),
+ (0x3239, (1382, 3)),
+ (0x2005, (280, 1)),
+ (0x1f11e, (5554, 3)),
+ (0x1f238, (5692, 1)),
+ (0x2f3b, (916, 1)),
+ (0xfdaf, (3615, 3)),
(0x1d6da, (4995, 1)),
- (0xfc8a, (2966, 2)),
- (0x1d746, (5103, 1)),
- (0x1f212, (5591, 1)),
+ (0xffec, (4232, 1)),
+ (0x1d62c, (4823, 1)),
+ (0x3226, (1325, 3)),
(0xff93, (4155, 1)),
- (0x1d7d2, (5241, 1)),
- (0x3388, (2135, 3)),
+ (0x3314, (1751, 2)),
+ (0x2079, (328, 1)),
(0xff8f, (4151, 1)),
- (0xfc1f, (2740, 2)),
+ (0x3173, (1150, 1)),
(0x1d583, (4654, 1)),
- (0x1d688, (4915, 1)),
+ (0x1fbf9, (5734, 1)),
(0xb4, (8, 2)),
- (0xfc4d, (2832, 2)),
- (0x1d7fc, (5283, 1)),
- (0x37a, (88, 2)),
- (0xfe7f, (3856, 2)),
- (0x1f240, (5634, 3)),
+ (0xfdc2, (3672, 3)),
+ (0x1d32, (141, 1)),
+ (0x1d418, (4315, 1)),
+ (0xff7f, (4135, 1)),
+ (0x1f133, (5602, 1)),
(0x32a0, (1537, 1)),
- (0x1d7c0, (5225, 1)),
- (0xfd16, (3256, 2)),
+ (0xfd63, (3393, 3)),
+ (0x1d771, (5146, 1)),
(0x33ad, (2228, 3)),
- (0x1d618, (4803, 1)),
- (0x1ee99, (5400, 1)),
- (0x1d792, (5179, 1)),
- (0x1d7a4, (5197, 1)),
+ (0x2b7, (69, 1)),
+ (0x1f211, (5652, 1)),
+ (0x1f16b, (5640, 2)),
+ (0xfb77, (2528, 1)),
(0xfefa, (4002, 3)),
- (0x32fd, (1666, 1)),
+ (0x1d461, (4387, 1)),
(0x32ea, (1647, 1)),
(0x1d555, (4608, 1)),
(0x1dab, (213, 1)),
- (0x2167, (497, 4)),
- (0x1d639, (4836, 1)),
+ (0xfebc, (3930, 1)),
+ (0x1d6b1, (4954, 1)),
(0x317e, (1161, 1)),
+ (0x1d5b1, (4700, 1)),
(0xfe95, (3891, 1)),
- (0x1d438, (4347, 1)),
- (0x3195, (1181, 1)),
- (0xfcc0, (3079, 2)),
+ (0x331f, (1800, 4)),
+ (0x1d70c, (5045, 1)),
(0x1d662, (4877, 1)),
- (0x2f4e, (935, 1)),
- (0x32a9, (1546, 1)),
+ (0x1d70e, (5047, 1)),
+ (0x1d417, (4314, 1)),
+ (0xfc10, (2710, 2)),
(0xfc1a, (2730, 2)),
(0x1d755, (5118, 1)),
(0x3134, (1087, 1)),
- (0x1d6fb, (5028, 1)),
- (0xfc69, (2899, 3)),
- (0x1d712, (5051, 1)),
- (0x1d780, (5161, 1)),
- (0xfe8a, (3877, 2)),
- (0x2c7c, (852, 1)),
- (0x1d70f, (5048, 1)),
- (0xff49, (4081, 1)),
- (0x33d2, (2315, 3)),
+ (0x3308, (1704, 4)),
+ (0x1d541, (4593, 1)),
+ (0x10787, (4240, 1)),
+ (0xfeac, (3914, 1)),
+ (0x1f229, (5677, 1)),
+ (0x1e046, (5309, 1)),
+ (0x24c3, (800, 1)),
+ (0x2026, (292, 3)),
+ (0x149, (32, 2)),
(0x33e7, (2365, 2)),
(0x211c, (399, 1)),
- (0x3377, (2097, 2)),
- (0x1d37, (146, 1)),
- (0x1d57f, (4650, 1)),
- (0x1d76b, (5140, 1)),
- (0xff09, (4017, 1)),
- (0x3392, (2159, 3)),
- (0x3152, (1117, 1)),
+ (0x2f58, (945, 1)),
+ (0x1d5ff, (4778, 1)),
+ (0xfe9b, (3897, 1)),
+ (0xfd2f, (3306, 2)),
+ (0x1d710, (5049, 1)),
+ (0x1d65, (190, 1)),
+ (0xfc1e, (2738, 2)),
(0xfd9d, (3561, 3)),
(0x2077, (326, 1)),
(0x24cb, (808, 1)),
- (0x1eeba, (5426, 1)),
- (0x3160, (1131, 1)),
- (0x677, (116, 2)),
- (0x1d56a, (4629, 1)),
+ (0x1eeba, (5488, 1)),
+ (0xff0e, (4022, 1)),
+ (0xfb7e, (2535, 1)),
+ (0x3337, (1895, 3)),
(0x248d, (668, 2)),
- (0xfd27, (3290, 2)),
+ (0xfd99, (3549, 3)),
(0xfd65, (3399, 3)),
- (0x1d566, (4625, 1)),
- (0x32da, (1631, 1)),
- (0xfcce, (3107, 2)),
- (0xff30, (4056, 1)),
- (0x1ee7a, (5372, 1)),
- (0xfe3d, (3783, 1)),
- (0x1d644, (4847, 1)),
- (0xfb5c, (2501, 1)),
+ (0x1d7ac, (5205, 1)),
+ (0x1f11c, (5548, 3)),
+ (0x32ff, (1668, 2)),
+ (0x1ee7a, (5434, 1)),
+ (0x1e06b, (5346, 1)),
+ (0xfe47, (3791, 1)),
+ (0x1d637, (4834, 1)),
+ (0x3264, (1456, 1)),
(0xfc58, (2854, 2)),
- (0xfdfc, (3753, 4)),
- (0xfee0, (3966, 1)),
- (0x1d5d4, (4735, 1)),
- (0x322a, (1337, 3)),
- (0x2f8a, (995, 1)),
- (0x1d64a, (4853, 1)),
- (0x32a2, (1539, 1)),
- (0x1ee76, (5369, 1)),
- (0xfd2b, (3298, 2)),
- (0x1f11a, (5480, 3)),
+ (0x1d603, (4782, 1)),
+ (0x1d478, (4410, 1)),
+ (0xff0a, (4018, 1)),
+ (0xfda3, (3579, 3)),
+ (0x1d44, (158, 1)),
+ (0x24d0, (813, 1)),
+ (0xab5e, (2448, 1)),
+ (0xfcfc, (3204, 2)),
+ (0xffe0, (4220, 1)),
+ (0x1ee0a, (5358, 1)),
+ (0x313d, (1096, 1)),
(0x3398, (2174, 2)),
- (0x2489, (660, 2)),
- (0x1d64, (189, 1)),
- (0x2f18, (881, 1)),
+ (0xfcd0, (3111, 2)),
+ (0x2f6e, (967, 1)),
(0x202f, (295, 1)),
- (0x1d73d, (5094, 1)),
- (0xfc36, (2786, 2)),
+ (0xfcaa, (3035, 2)),
+ (0x1d43a, (4349, 1)),
(0xfd23, (3282, 2)),
- (0x1d449, (4364, 1)),
+ (0x2ef3, (856, 1)),
(0xfe5f, (3818, 1)),
- (0xfbe7, (2612, 1)),
- (0x33aa, (2219, 3)),
- (0x107ab, (4276, 1)),
- (0x316d, (1144, 1)),
+ (0x2f93, (1004, 1)),
+ (0x2086, (341, 1)),
+ (0xfd6d, (3423, 3)),
+ (0x249f, (718, 3)),
(0x1d424, (4327, 1)),
- (0x1d677, (4898, 1)),
+ (0x1fbf8, (5733, 1)),
(0x1d462, (4388, 1)),
- (0x2079, (328, 1)),
- (0x1d7e7, (5262, 1)),
- (0x1d39, (148, 1)),
+ (0xfe4d, (3801, 1)),
+ (0x1d53b, (4588, 1)),
+ (0xfe49, (3793, 2)),
+ (0x1d6ab, (4948, 1)),
(0x3132, (1085, 1)),
- (0x3302, (1679, 5)),
- (0xfcd9, (3129, 2)),
- (0x3192, (1178, 1)),
- (0x337b, (2107, 2)),
- (0x3327, (1830, 2)),
- (0xff0c, (4020, 1)),
- (0x1eea2, (5404, 1)),
- (0x1f227, (5613, 1)),
- (0xfcfe, (3208, 2)),
+ (0x1d7c2, (5227, 1)),
+ (0xfd9c, (3558, 3)),
+ (0x2fc2, (1051, 1)),
+ (0x33f4, (2402, 3)),
+ (0x213c, (425, 1)),
+ (0x1d7e8, (5263, 1)),
+ (0xff88, (4144, 1)),
+ (0x1d79d, (5190, 1)),
(0x24c1, (798, 1)),
- (0x1eeb8, (5424, 1)),
- (0x10799, (4258, 1)),
+ (0x24e0, (829, 1)),
+ (0x1eeb8, (5486, 1)),
+ (0xfc70, (2914, 2)),
(0xfc6c, (2906, 2)),
(0x2fac, (1029, 1)),
- (0x1f202, (5588, 1)),
+ (0x1f202, (5650, 1)),
(0xfbf3, (2642, 3)),
- (0x1d430, (4339, 1)),
+ (0x2f78, (977, 1)),
(0x3255, (1430, 2)),
- (0x329f, (1536, 1)),
- (0x1c9, (48, 2)),
- (0xfef3, (3985, 1)),
+ (0x2f2e, (903, 1)),
+ (0xfb24, (2481, 1)),
+ (0x32af, (1552, 1)),
(0x1d4a, (164, 1)),
- (0x1d9d, (199, 1)),
- (0xfc3b, (2796, 2)),
- (0x2477, (596, 3)),
+ (0x2f25, (894, 1)),
+ (0x1ee6e, (5424, 1)),
+ (0xfd2d, (3302, 2)),
(0xff6a, (4114, 1)),
- (0xfcdf, (3141, 3)),
- (0x1d59e, (4681, 1)),
- (0x10fc, (135, 1)),
- (0xfea9, (3911, 1)),
+ (0x2466, (562, 1)),
+ (0x1d579, (4644, 1)),
+ (0x1f231, (5685, 1)),
+ (0xfc61, (2875, 3)),
(0x1d7fd, (5284, 1)),
(0xfd5f, (3381, 3)),
- (0xfdae, (3612, 3)),
- (0x32e9, (1646, 1)),
- (0x1d63c, (4839, 1)),
- (0x3365, (2047, 3)),
- (0xfcb7, (3061, 2)),
- (0x1d611, (4796, 1)),
- (0xfc6a, (2902, 2)),
- (0x17f, (34, 1)),
- (0x3260, (1452, 1)),
+ (0x1ee1a, (5374, 1)),
+ (0x3348, (1958, 4)),
+ (0xfba9, (2580, 1)),
+ (0x1d45f, (4385, 1)),
+ (0x1d66d, (4888, 1)),
+ (0xfce8, (3161, 2)),
+ (0xfb5b, (2500, 1)),
+ (0x1ee62, (5416, 1)),
+ (0x3146, (1105, 1)),
(0x33ac, (2225, 3)),
- (0x1f149, (5562, 1)),
+ (0x1f149, (5624, 1)),
+ (0x3295, (1526, 1)),
(0x3333, (1877, 4)),
- (0x1d60, (185, 1)),
- (0x2b6, (68, 1)),
- (0x1ee29, (5322, 1)),
+ (0xfc0f, (2708, 2)),
+ (0xff8a, (4146, 1)),
(0x3387, (2133, 2)),
- (0xfd00, (3212, 2)),
- (0x32ba, (1572, 2)),
- (0x1d742, (5099, 1)),
- (0x32c7, (1598, 2)),
- (0x216b, (506, 3)),
- (0xfc83, (2952, 2)),
- (0x24e7, (836, 1)),
- (0x3241, (1406, 3)),
+ (0x676, (114, 2)),
+ (0xffcd, (4208, 1)),
+ (0xfe86, (3869, 2)),
+ (0x1d6e8, (5009, 1)),
+ (0xfc40, (2806, 2)),
+ (0xfc0a, (2698, 2)),
+ (0x10788, (4241, 1)),
+ (0x2fc0, (1049, 1)),
+ (0x1d5b6, (4705, 1)),
(0xffa8, (4176, 1)),
- (0x3188, (1171, 1)),
- (0x1d69a, (4933, 1)),
- (0x1d62d, (4824, 1)),
- (0x3210, (1242, 4)),
- (0xff46, (4078, 1)),
- (0x1d7b7, (5216, 1)),
+ (0x3289, (1514, 1)),
+ (0xfd79, (3459, 3)),
+ (0x3300, (1670, 5)),
+ (0x1d55, (174, 1)),
+ (0x24b5, (784, 3)),
+ (0x2f4c, (933, 1)),
(0x3163, (1134, 1)),
- (0x33dd, (2343, 2)),
- (0x207b, (330, 1)),
+ (0x2002, (277, 1)),
+ (0x2f57, (944, 1)),
(0xfcdb, (3133, 2)),
(0x1d49f, (4448, 1)),
- (0xfbe9, (2614, 1)),
- (0x3144, (1103, 1)),
- (0x33c7, (2292, 3)),
- (0x1d77a, (5155, 1)),
- (0x1d58d, (4664, 1)),
- (0x1d4d1, (4488, 1)),
- (0xffb6, (4190, 1)),
- (0x1d58f, (4666, 1)),
- (0x1ee93, (5394, 1)),
- (0xffb8, (4192, 1)),
+ (0x1d688, (4915, 1)),
+ (0xff18, (4032, 1)),
+ (0x2f54, (941, 1)),
+ (0x1ee85, (5443, 1)),
+ (0x2fd1, (1066, 1)),
+ (0x33c5, (2286, 2)),
+ (0xfb53, (2492, 1)),
+ (0x3197, (1183, 1)),
+ (0x2fcf, (1064, 1)),
+ (0x1d516, (4553, 1)),
(0x3201, (1195, 3)),
(0xfd82, (3486, 3)),
- (0x1d503, (4538, 1)),
- (0x1d7d6, (5245, 1)),
- (0x210d, (386, 1)),
- (0xff3f, (4071, 1)),
- (0x1d556, (4609, 1)),
- (0x1d70e, (5047, 1)),
- (0x2f09, (866, 1)),
- (0xfbe5, (2610, 1)),
- (0xfcbc, (3071, 2)),
- (0x1d5b8, (4707, 1)),
- (0xfc7b, (2936, 2)),
- (0x3242, (1409, 3)),
- (0x1d40b, (4302, 1)),
+ (0xff16, (4030, 1)),
+ (0x2150, (435, 3)),
+ (0x1f109, (5508, 2)),
+ (0xfe9d, (3899, 1)),
+ (0x210f, (388, 1)),
+ (0x320e, (1234, 4)),
+ (0x1e040, (5303, 1)),
+ (0x330a, (1711, 3)),
+ (0x1ee0e, (5362, 1)),
+ (0xfc45, (2816, 2)),
+ (0xff48, (4080, 1)),
+ (0xfc47, (2820, 2)),
+ (0x1d505, (4540, 1)),
(0x2169, (503, 1)),
- (0x1d787, (5168, 1)),
+ (0x24dc, (825, 1)),
(0x1d7d8, (5247, 1)),
- (0x3293, (1524, 1)),
+ (0xfb55, (2494, 1)),
(0xfe84, (3865, 2)),
- (0x1f14b, (5565, 2)),
- (0x1d602, (4781, 1)),
- (0x2fc9, (1058, 1)),
- (0x107b0, (4281, 1)),
+ (0x1ee22, (5381, 1)),
+ (0x1d772, (5147, 1)),
+ (0x33f0, (2390, 3)),
+ (0x1d4b1, (4459, 1)),
(0xff99, (4161, 1)),
+ (0xfd2e, (3304, 2)),
(0x2159, (463, 3)),
- (0xfe76, (3838, 2)),
- (0x1d741, (5098, 1)),
+ (0x1d58d, (4664, 1)),
(0x1d627, (4818, 1)),
(0xfeeb, (3977, 1)),
- (0x1ee81, (5377, 1)),
- (0x2128, (409, 1)),
- (0x217e, (541, 1)),
- (0xfeab, (3913, 1)),
- (0x1f16c, (5580, 2)),
+ (0x3334, (1881, 6)),
+ (0x1f126, (5578, 3)),
+ (0x3144, (1103, 1)),
+ (0x1e036, (5293, 1)),
+ (0x1db9, (227, 1)),
(0x1d6ea, (5011, 1)),
+ (0x1d6ee, (5015, 1)),
(0xfec6, (3940, 1)),
- (0x1d51a, (4557, 1)),
- (0x107a3, (4268, 1)),
+ (0x1d64c, (4855, 1)),
+ (0xfcbb, (3069, 2)),
(0x2033, (296, 2)),
- (0xfe8c, (3881, 2)),
- (0x1d5a3, (4686, 1)),
- (0x3321, (1809, 5)),
- (0xfc22, (2746, 2)),
- (0x133, (26, 2)),
- (0x1d665, (4880, 1)),
+ (0x2009, (284, 1)),
+ (0x3377, (2097, 2)),
+ (0x3160, (1131, 1)),
+ (0x1d48c, (4430, 1)),
+ (0x24b3, (778, 3)),
(0x1d4d0, (4487, 1)),
- (0x1d7e0, (5255, 1)),
+ (0xffcb, (4206, 1)),
(0xfdad, (3609, 3)),
+ (0x1ee8b, (5448, 1)),
(0xfeb1, (3919, 1)),
- (0x1d757, (5120, 1)),
+ (0xfcea, (3165, 2)),
(0x2f76, (975, 1)),
- (0x1d7bb, (5220, 1)),
(0x32be, (1580, 2)),
- (0x2163, (489, 2)),
- (0x1d4ab, (4454, 1)),
+ (0x1d7b1, (5210, 1)),
+ (0x1d5f8, (4771, 1)),
+ (0xfd73, (3441, 3)),
(0xff1a, (4034, 1)),
- (0x2f66, (959, 1)),
- (0x1d7e2, (5257, 1)),
- (0xfebb, (3929, 1)),
- (0xb5, (10, 1)),
- (0xfdb9, (3645, 3)),
- (0xa7f8, (2444, 1)),
+ (0xfca2, (3019, 2)),
+ (0x211b, (398, 1)),
+ (0x1d5b2, (4701, 1)),
+ (0xfb60, (2505, 1)),
+ (0x1ee2e, (5389, 1)),
+ (0x2071, (322, 1)),
(0x1d4bb, (4468, 1)),
(0x33fc, (2426, 3)),
- (0x3153, (1118, 1)),
- (0x1d533, (4581, 1)),
- (0x1eea6, (5407, 1)),
- (0x2478, (599, 3)),
+ (0xfeef, (3981, 1)),
+ (0x1d4fb, (4530, 1)),
+ (0x1d728, (5073, 1)),
+ (0xfcff, (3210, 2)),
(0x1d6f8, (5025, 1)),
- (0x1d41c, (4319, 1)),
- (0x1d5bc, (4711, 1)),
+ (0x1d535, (4583, 1)),
+ (0x1d34, (143, 1)),
(0x2165, (492, 2)),
- (0x2134, (416, 1)),
- (0x3280, (1505, 1)),
- (0xff2a, (4050, 1)),
- (0x1dba, (228, 1)),
- (0xff3c, (4068, 1)),
- (0x2463, (559, 1)),
- (0xfce2, (3149, 2)),
- (0x1d7f9, (5280, 1)),
- (0x33dc, (2341, 2)),
+ (0x1ee2c, (5387, 1)),
+ (0x1d5dd, (4744, 1)),
+ (0x2140, (429, 1)),
+ (0x322d, (1346, 3)),
+ (0x1ee96, (5459, 1)),
+ (0xffbe, (4198, 1)),
+ (0x1eeb5, (5483, 1)),
+ (0x3311, (1737, 4)),
+ (0xfd89, (3507, 3)),
(0x32d7, (1628, 1)),
- (0x2146, (431, 1)),
- (0xfc72, (2918, 2)),
- (0xfb97, (2560, 1)),
- (0x107ad, (4278, 1)),
- (0xfd07, (3226, 2)),
- (0xfb62, (2507, 1)),
- (0x319d, (1189, 1)),
+ (0x2f91, (1002, 1)),
+ (0x10798, (4257, 1)),
+ (0x246b, (569, 2)),
+ (0x24c2, (799, 1)),
+ (0x1d50e, (4546, 1)),
+ (0xffbc, (4196, 1)),
+ (0xfd9e, (3564, 3)),
(0x2115, (393, 1)),
(0x1d715, (5054, 1)),
+ (0xfcac, (3039, 2)),
(0xfc98, (2995, 3)),
- (0x33bc, (2266, 2)),
- (0x1d401, (4292, 1)),
- (0xff0a, (4018, 1)),
- (0x1ee68, (5357, 1)),
- (0x1ee49, (5340, 1)),
+ (0xfc66, (2890, 3)),
+ (0x2d6f, (854, 1)),
+ (0x1d59c, (4679, 1)),
+ (0xfc01, (2676, 3)),
+ (0x1ee49, (5402, 1)),
(0x2119, (396, 1)),
- (0xfb82, (2539, 1)),
+ (0x24d7, (820, 1)),
(0x1d642, (4845, 1)),
- (0x1d5c6, (4721, 1)),
- (0x107b7, (4287, 1)),
- (0x1d42b, (4334, 1)),
- (0xffc6, (4203, 1)),
- (0x1ee24, (5320, 1)),
- (0xfd03, (3218, 2)),
- (0x1d732, (5083, 1)),
- (0x1ee07, (5293, 1)),
- (0x2082, (337, 1)),
- (0x1d5e3, (4750, 1)),
- (0x2106, (377, 3)),
- (0x1f126, (5516, 3)),
- (0x2f51, (938, 1)),
- (0x1f14f, (5574, 2)),
- (0x1d4ef, (4518, 1)),
- (0x33e6, (2363, 2)),
- (0xff0b, (4019, 1)),
- (0x33d7, (2328, 2)),
+ (0x3304, (1687, 5)),
+ (0x3198, (1184, 1)),
+ (0xfed4, (3954, 1)),
+ (0x2f6c, (965, 1)),
+ (0x1d406, (4297, 1)),
+ (0x1d61d, (4808, 1)),
+ (0x33d5, (2322, 3)),
+ (0x1ee07, (5355, 1)),
+ (0x1d4ce, (4485, 1)),
+ (0x1f101, (5492, 2)),
+ (0x10792, (4251, 1)),
+ (0x24be, (795, 1)),
+ (0x2fbc, (1045, 1)),
+ (0x1f14f, (5636, 2)),
+ (0xfe12, (3759, 1)),
+ (0xfec7, (3941, 1)),
+ (0xfc2d, (2768, 2)),
+ (0x248a, (662, 2)),
(0x1fed, (265, 3)),
- (0x32f8, (1661, 1)),
+ (0x1d6d5, (4990, 1)),
(0x2fb2, (1035, 1)),
- (0x1d7ac, (5205, 1)),
- (0x32c4, (1592, 2)),
+ (0xfc8b, (2968, 2)),
+ (0x3158, (1123, 1)),
(0xffe3, (4223, 2)),
(0xfb84, (2541, 1)),
(0xfb65, (2510, 1)),
- (0xfcd1, (3113, 2)),
- (0x3d6, (103, 1)),
+ (0x1ee93, (5456, 1)),
+ (0x3208, (1216, 3)),
(0x32fc, (1665, 1)),
(0xfe94, (3890, 1)),
(0x2f4f, (936, 1)),
- (0x1d4ca, (4481, 1)),
- (0x200a, (285, 1)),
+ (0x2f87, (992, 1)),
+ (0x1ee75, (5430, 1)),
(0x2057, (316, 4)),
(0x1d617, (4802, 1)),
- (0x2fcb, (1060, 1)),
+ (0x1d5e1, (4748, 1)),
(0xfdac, (3606, 3)),
- (0x327e, (1503, 2)),
- (0xfcbf, (3077, 2)),
- (0xfd5d, (3375, 3)),
+ (0x2f0e, (871, 1)),
+ (0x211d, (400, 1)),
+ (0x331c, (1790, 3)),
(0x2f83, (988, 1)),
- (0xfce4, (3153, 2)),
+ (0x1d5c3, (4718, 1)),
(0x3373, (2088, 2)),
- (0x24d1, (814, 1)),
- (0xfce9, (3163, 2)),
- (0x24d6, (819, 1)),
- (0x32d2, (1623, 1)),
+ (0x1f13b, (5610, 1)),
+ (0x2486, (650, 4)),
+ (0x1d665, (4880, 1)),
+ (0xfce0, (3144, 3)),
(0x3d3, (98, 2)),
- (0x32a8, (1545, 1)),
- (0x1f250, (5661, 1)),
- (0x1d723, (5068, 1)),
- (0xfc75, (2924, 2)),
- (0xfbd7, (2595, 1)),
+ (0x1d403, (4294, 1)),
+ (0x1d640, (4843, 1)),
+ (0x24ac, (757, 3)),
+ (0x2f39, (914, 1)),
+ (0x1f140, (5615, 1)),
(0xfb6f, (2520, 1)),
- (0x1d5ba, (4709, 1)),
- (0xff70, (4120, 1)),
- (0x320e, (1234, 4)),
- (0x3390, (2154, 2)),
- (0xfeda, (3960, 1)),
- (0x2fad, (1030, 1)),
- (0xfb72, (2523, 1)),
- (0xff67, (4111, 1)),
- (0x1f223, (5609, 1)),
- (0x3234, (1367, 3)),
+ (0xfd13, (3250, 2)),
+ (0x1d4c6, (4477, 1)),
+ (0x1f248, (5720, 3)),
+ (0x3183, (1166, 1)),
+ (0x1d62e, (4825, 1)),
+ (0x1f148, (5623, 1)),
+ (0xfb89, (2546, 1)),
+ (0x1ee81, (5439, 1)),
+ (0xfc25, (2752, 2)),
+ (0x1f223, (5671, 1)),
+ (0x334e, (1982, 4)),
(0x2fd2, (1067, 1)),
- (0x1f243, (5643, 3)),
- (0x1ee21, (5318, 1)),
+ (0xfd54, (3348, 3)),
+ (0xff01, (4009, 1)),
(0x1d740, (5097, 1)),
- (0x1d468, (4394, 1)),
- (0x1f100, (5428, 2)),
- (0x1f241, (5637, 3)),
- (0x1d78d, (5174, 1)),
- (0x2b0, (62, 1)),
- (0x1db1, (219, 1)),
+ (0x1d7bc, (5221, 1)),
+ (0x1db4, (222, 1)),
+ (0x1d43e, (4353, 1)),
+ (0xfca9, (3033, 2)),
+ (0xfd22, (3280, 2)),
+ (0x2f23, (892, 1)),
(0x314e, (1113, 1)),
- (0x3304, (1687, 5)),
- (0x1d420, (4323, 1)),
- (0xfd7d, (3471, 3)),
- (0x328b, (1516, 1)),
- (0x1d67b, (4902, 1)),
- (0x1d62c, (4823, 1)),
- (0x317b, (1158, 1)),
+ (0xfe8a, (3877, 2)),
+ (0xff03, (4011, 1)),
+ (0x3292, (1523, 1)),
+ (0xfcf6, (3192, 2)),
+ (0x1d3f, (153, 1)),
+ (0x1db8, (226, 1)),
+ (0xfe68, (3826, 1)),
(0x1d69, (194, 1)),
(0x1079b, (4260, 1)),
- (0x2081, (336, 1)),
- (0x1d735, (5086, 1)),
- (0xfecc, (3946, 1)),
+ (0x331b, (1786, 4)),
+ (0xfda7, (3591, 3)),
+ (0xffdb, (4218, 1)),
(0xfc7c, (2938, 2)),
(0xfda5, (3585, 3)),
- (0x1d440, (4355, 1)),
+ (0x3341, (1934, 3)),
(0x24a7, (742, 3)),
- (0x2fa8, (1025, 1)),
+ (0x3216, (1266, 4)),
(0x2f3e, (919, 1)),
- (0xfc91, (2980, 2)),
+ (0xff9c, (4164, 1)),
(0xfb20, (2477, 1)),
- (0x1f116, (5468, 3)),
+ (0x1f116, (5530, 3)),
(0x325b, (1442, 2)),
- (0x1d4fe, (4533, 1)),
+ (0x1d5e6, (4753, 1)),
(0x1d79e, (5191, 1)),
- (0x1ee14, (5306, 1)),
- (0x32d3, (1624, 1)),
+ (0x1ee14, (5368, 1)),
+ (0x333f, (1927, 2)),
(0x32d4, (1625, 1)),
- (0xb8, (11, 2)),
- (0x24b1, (772, 3)),
- (0x1d5e7, (4754, 1)),
+ (0x1f22d, (5681, 1)),
+ (0xfd88, (3504, 3)),
+ (0x1d4d9, (4496, 1)),
(0xfdaa, (3600, 3)),
(0xfcc6, (3091, 2)),
- (0x2136, (418, 1)),
- (0x210c, (385, 1)),
- (0x32af, (1552, 1)),
- (0x1d3d, (151, 1)),
- (0x1f120, (5498, 3)),
+ (0x1d56e, (4633, 1)),
+ (0x1ee39, (5398, 1)),
+ (0x1d48a, (4428, 1)),
+ (0x1d7d0, (5239, 1)),
+ (0xb9, (13, 1)),
+ (0x1f120, (5560, 3)),
(0x1d60b, (4790, 1)),
- (0x2f2d, (902, 1)),
- (0x3368, (2056, 3)),
- (0x1eea1, (5403, 1)),
- (0x32f4, (1657, 1)),
- (0xff72, (4122, 1)),
- (0x24b6, (787, 1)),
- (0x1d630, (4827, 1)),
- (0x1d4cb, (4482, 1)),
- (0xfe47, (3791, 1)),
- (0x1d684, (4911, 1)),
+ (0x2f70, (969, 1)),
+ (0x1d4fa, (4529, 1)),
+ (0x2f5c, (949, 1)),
+ (0x32ab, (1548, 1)),
+ (0xfba3, (2572, 1)),
+ (0x2f02, (859, 1)),
+ (0x1f11f, (5557, 3)),
+ (0xfc69, (2899, 3)),
+ (0x24d4, (817, 1)),
(0x2491, (676, 3)),
- (0x32d0, (1621, 1)),
+ (0x326b, (1463, 1)),
(0xfc08, (2694, 2)),
+ (0x1d7b2, (5211, 1)),
(0x33ff, (2435, 3)),
- (0xfe65, (3824, 1)),
- (0x2f99, (1010, 1)),
- (0xfede, (3964, 1)),
- (0x1d471, (4403, 1)),
+ (0xfb8d, (2550, 1)),
+ (0x1fbf0, (5725, 1)),
+ (0x3252, (1424, 2)),
(0x1d6e5, (5006, 1)),
+ (0x1d5ac, (4695, 1)),
(0xfb94, (2557, 1)),
- (0xfe61, (3820, 1)),
(0x2f63, (956, 1)),
+ (0x107a2, (4267, 1)),
(0xfc06, (2690, 2)),
- (0x1d461, (4387, 1)),
- (0x1d5d3, (4734, 1)),
- (0x246e, (575, 2)),
+ (0xfc5a, (2858, 2)),
+ (0xff75, (4125, 1)),
+ (0xfeda, (3960, 1)),
(0xff79, (4129, 1)),
(0x2462, (558, 1)),
- (0x1d5b2, (4701, 1)),
- (0xfca1, (3017, 2)),
- (0x1d61b, (4806, 1)),
- (0xff12, (4026, 1)),
- (0x1ee51, (5345, 1)),
- (0x3f1, (105, 1)),
- (0x2145, (430, 1)),
- (0xfc48, (2822, 2)),
- (0x1d619, (4804, 1)),
- (0x323b, (1388, 3)),
- (0xfcc1, (3081, 2)),
- (0x1ee19, (5311, 1)),
- (0xfb26, (2483, 1)),
- (0x1d67e, (4905, 1)),
- (0x1d749, (5106, 1)),
+ (0xfc09, (2696, 2)),
+ (0x2111, (390, 1)),
+ (0x319e, (1190, 1)),
+ (0x1d451, (4372, 1)),
+ (0x2f20, (889, 1)),
+ (0x1d6a0, (4939, 1)),
+ (0x1d577, (4642, 1)),
+ (0x1d7b6, (5215, 1)),
+ (0xff15, (4029, 1)),
+ (0x1d744, (5101, 1)),
+ (0x1f21c, (5664, 1)),
+ (0x1fbf2, (5727, 1)),
+ (0xfc3a, (2794, 2)),
+ (0x337b, (2107, 2)),
+ (0xfdb8, (3642, 3)),
(0xffc3, (4200, 1)),
- (0x1d564, (4623, 1)),
+ (0x33db, (2339, 2)),
+ (0xff0c, (4020, 1)),
(0x1d52a, (4572, 1)),
- (0x1d500, (4535, 1)),
- (0x1d5d8, (4739, 1)),
- (0x1d7b1, (5210, 1)),
- (0x1d563, (4622, 1)),
- (0x2047, (310, 2)),
- (0x33eb, (2375, 3)),
- (0xfda3, (3579, 3)),
- (0x3317, (1765, 5)),
- (0xff74, (4124, 1)),
- (0x1ee1e, (5316, 1)),
- (0x3308, (1704, 4)),
- (0x33d6, (2325, 3)),
- (0x3269, (1461, 1)),
- (0x1ee27, (5321, 1)),
- (0x1d5c3, (4718, 1)),
- (0xfe3c, (3782, 1)),
- (0x1eeb0, (5416, 1)),
- (0x335f, (2032, 2)),
- (0x338b, (2144, 2)),
- (0x3318, (1770, 4)),
- (0xfe7c, (3850, 2)),
- (0xfedf, (3965, 1)),
- (0x1d32, (141, 1)),
- (0xfb63, (2508, 1)),
- (0xfe42, (3788, 1)),
+ (0x1ee9b, (5464, 1)),
+ (0x24e2, (831, 1)),
+ (0xff9e, (4166, 1)),
+ (0x32de, (1635, 1)),
+ (0x1d574, (4639, 1)),
+ (0x1ee76, (5431, 1)),
+ (0x1d59e, (4681, 1)),
+ (0x1f244, (5708, 3)),
+ (0x1f137, (5606, 1)),
+ (0xfea0, (3902, 1)),
+ (0xff2a, (4050, 1)),
+ (0x314f, (1114, 1)),
+ (0x1d47c, (4414, 1)),
+ (0x1d467, (4393, 1)),
+ (0xff4f, (4087, 1)),
+ (0xfea1, (3903, 1)),
+ (0x33a9, (2217, 2)),
+ (0x10799, (4258, 1)),
+ (0x1ee12, (5366, 1)),
+ (0x2492, (679, 3)),
+ (0x1d696, (4929, 1)),
+ (0xfcab, (3037, 2)),
+ (0xfd19, (3262, 2)),
+ (0x1d5e8, (4755, 1)),
+ (0x1ee1f, (5379, 1)),
(0xfe91, (3887, 1)),
(0x1c7, (44, 2)),
- (0x320b, (1225, 3)),
- (0x321a, (1282, 4)),
- (0x1d4c5, (4476, 1)),
+ (0x1d681, (4908, 1)),
+ (0x24b7, (788, 1)),
(0x1d784, (5165, 1)),
- (0x320d, (1231, 3)),
- (0x1d49e, (4447, 1)),
- (0x1d604, (4783, 1)),
- (0xfc71, (2916, 2)),
- (0x1d6ce, (4983, 1)),
- (0x1d752, (5115, 1)),
+ (0x1d742, (5099, 1)),
+ (0x33a2, (2196, 3)),
+ (0x1d645, (4848, 1)),
+ (0x1ee70, (5426, 1)),
+ (0x1d611, (4796, 1)),
+ (0x337c, (2109, 2)),
+ (0x1d442, (4357, 1)),
(0xfe32, (3772, 1)),
- (0x1ee11, (5303, 1)),
(0x1d31, (140, 1)),
+ (0x3138, (1091, 1)),
(0x2485, (646, 4)),
- (0xfedb, (3961, 1)),
- (0x1d50f, (4547, 1)),
- (0x313a, (1093, 1)),
- (0xfb66, (2511, 1)),
- (0xff64, (4108, 1)),
- (0x1d5ac, (4695, 1)),
- (0x1d4e2, (4505, 1)),
- (0x3f4, (107, 1)),
- (0xfecb, (3945, 1)),
+ (0x1f114, (5524, 3)),
+ (0x1d5d0, (4731, 1)),
+ (0x1d635, (4832, 1)),
+ (0x3309, (1708, 3)),
+ (0x1d408, (4299, 1)),
+ (0xfe50, (3804, 1)),
+ (0x1ee8d, (5450, 1)),
+ (0xfd93, (3531, 3)),
+ (0x1d67b, (4902, 1)),
(0x1d4db, (4498, 1)),
- (0x2fc3, (1052, 1)),
- (0x1ee4e, (5343, 1)),
- (0xfcd6, (3123, 2)),
+ (0x1f136, (5605, 1)),
+ (0x1f22f, (5683, 1)),
+ (0x1d7ed, (5268, 1)),
+ (0x32f9, (1662, 1)),
(0x32aa, (1547, 1)),
- (0x3354, (2002, 5)),
- (0x1d5f7, (4770, 1)),
+ (0x33af, (2236, 6)),
(0x24e4, (833, 1)),
- (0x32e0, (1637, 1)),
- (0x1d421, (4324, 1)),
- (0x1d587, (4658, 1)),
+ (0x2003, (278, 1)),
+ (0xfd80, (3480, 3)),
+ (0x1e04e, (5317, 1)),
+ (0x1d59b, (4678, 1)),
(0x3285, (1510, 1)),
- (0x1fee, (268, 3)),
(0x1d78e, (5175, 1)),
- (0x2007, (282, 1)),
+ (0x3379, (2102, 3)),
(0x107b2, (4282, 1)),
(0xfeb7, (3925, 1)),
- (0x32e4, (1641, 1)),
+ (0x2470, (579, 2)),
(0x1d620, (4811, 1)),
- (0x1d6ca, (4979, 1)),
- (0x1d725, (5070, 1)),
- (0xfdbe, (3660, 3)),
+ (0x1d4b4, (4462, 1)),
+ (0x1d754, (5117, 1)),
+ (0x1f246, (5714, 3)),
(0x2160, (483, 1)),
- (0xfc52, (2842, 2)),
- (0xfc73, (2920, 2)),
- (0x2171, (514, 2)),
- (0x1d528, (4570, 1)),
+ (0x1d72f, (5080, 1)),
+ (0xfe4f, (3803, 1)),
+ (0x1d47a, (4412, 1)),
+ (0x1fcd, (247, 3)),
+ (0x327d, (1499, 4)),
(0x338e, (2150, 2)),
- (0xfdf4, (3704, 4)),
- (0x33f2, (2396, 3)),
- (0x3222, (1313, 3)),
- (0x1f22b, (5617, 1)),
- (0x1d453, (4374, 1)),
- (0x1d41b, (4318, 1)),
- (0xffcc, (4207, 1)),
- (0x1d58e, (4665, 1)),
- (0xfd19, (3262, 2)),
- (0x1d6bb, (4964, 1)),
- (0x1d41d, (4320, 1)),
- (0x2f7e, (983, 1)),
- (0xfe8d, (3883, 1)),
- (0xff58, (4096, 1)),
- (0x24dc, (825, 1)),
- (0xfe55, (3808, 1)),
- (0x3231, (1358, 3)),
+ (0x33b3, (2248, 2)),
+ (0xfd10, (3244, 2)),
+ (0x2f37, (912, 1)),
+ (0x3187, (1170, 1)),
+ (0xff5c, (4100, 1)),
+ (0x2135, (417, 1)),
+ (0x1d73b, (5092, 1)),
+ (0x3178, (1155, 1)),
+ (0xfc86, (2958, 2)),
+ (0x2fa5, (1022, 1)),
+ (0x1d6f1, (5018, 1)),
+ (0x1db5, (223, 1)),
+ (0xfb7d, (2534, 1)),
+ (0xfc48, (2822, 2)),
+ (0x1d56, (175, 1)),
+ (0x1d647, (4850, 1)),
+ (0xfe65, (3824, 1)),
(0xfc18, (2726, 2)),
(0x33f1, (2393, 3)),
- (0x32f1, (1654, 1)),
- (0x209c, (362, 1)),
- (0xfe8b, (3879, 2)),
- (0x24e0, (829, 1)),
- (0x1d4b6, (4464, 1)),
- (0x1d622, (4813, 1)),
+ (0x328c, (1517, 1)),
+ (0x32b9, (1570, 2)),
+ (0xfb79, (2530, 1)),
+ (0x1d4ee, (4517, 1)),
+ (0x338f, (2152, 2)),
+ (0x1d663, (4878, 1)),
(0x33b7, (2256, 2)),
- (0x1d487, (4425, 1)),
+ (0x1d55a, (4613, 1)),
(0xfcb1, (3049, 2)),
- (0x331e, (1796, 4)),
+ (0x3254, (1428, 2)),
(0xfbde, (2603, 1)),
(0x2f73, (972, 1)),
- (0x32f6, (1659, 1)),
+ (0x1d497, (4441, 1)),
(0xff89, (4145, 1)),
(0x1d5f5, (4768, 1)),
];
@@ -28460,403 +28666,410 @@ pub(crate) const CJK_COMPAT_VARIANTS_DECOMPOSED_KV: &[(u32, (u16, u16))] = &[
pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x0,
0x0,
+ 0xd,
+ 0x4,
+ 0xc,
+ 0x5,
+ 0x689,
+ 0x7,
+ 0x0,
0x2,
- 0x2,
- 0x6,
- 0x9,
- 0xb02,
- 0x15,
0x0,
- 0x8,
- 0x1c,
0x2,
- 0x206,
+ 0x3,
0x0,
0x0,
- 0x82,
+ 0xab,
0x0,
- 0x269,
+ 0x158,
0x0,
- 0x24,
- 0x11a,
+ 0x5a,
+ 0x1c6,
+ 0x143,
0x0,
+ 0x1,
0x0,
- 0x7,
- 0x2a,
- 0xe,
+ 0x4,
0x0,
0x0,
0x0,
- 0x1,
+ 0x6,
+ 0x4,
0x0,
- 0x235,
+ 0x92,
0x0,
0x0,
- 0x1a6,
+ 0x24d,
0x0,
- 0x5,
+ 0x7,
0x0,
- 0xa5,
+ 0x7f,
0xc,
0x0,
+ 0xc7,
0x0,
- 0xfa,
- 0x32b,
- 0x0,
+ 0x16d,
0x0,
0x0,
- 0x1b,
- 0x5c,
- 0x1,
- 0x1,
0x0,
- 0x8f,
- 0xd,
- 0x15b,
- 0x63,
+ 0xda,
+ 0x4,
0x19,
+ 0x5,
+ 0x0,
+ 0x93,
+ 0x6,
+ 0x7c,
+ 0x13,
+ 0x11b,
0x0,
0x1,
- 0x11,
- 0x43,
+ 0x8,
+ 0x58,
+ 0x0,
+ 0x5c,
+ 0xa5,
0x0,
- 0x36,
- 0x3f,
0x1,
- 0x17,
0x0,
0x0,
0x0,
0xb4,
0x1,
- 0x53,
- 0x0,
0x1,
- 0x7e,
- 0xb,
- 0x0,
- 0x73,
- 0x4b,
0x0,
- 0x4e,
- 0x1e,
- 0x9b,
- 0x3,
- 0x15,
+ 0x1,
+ 0x8,
0x0,
+ 0x79,
+ 0x7,
0x0,
+ 0xa0,
+ 0x37,
0x0,
0x7,
+ 0x36,
+ 0x5,
+ 0x39,
0x0,
0x0,
- 0x22,
0x2,
- 0x0,
- 0x89,
+ 0x9,
0x0,
0x0,
- 0x25,
+ 0x73,
0x1,
+ 0x5,
0x0,
0x0,
- 0x41,
0x0,
+ 0x3d,
0x1,
0x0,
- 0x0,
0x4,
- 0x23,
+ 0x0,
+ 0x54,
+ 0x1,
+ 0x0,
+ 0x27,
+ 0x4d,
+ 0xfa,
+ 0x4d,
0x3,
- 0x10,
0x1c,
- 0x66,
- 0xc,
- 0x7,
- 0x36,
- 0x40,
- 0x0,
+ 0xdd,
+ 0x6,
+ 0x1,
+ 0x24,
+ 0x41,
0x0,
0x0,
- 0x1d,
0x0,
- 0x12,
- 0xa,
- 0x4,
+ 0xb,
0x0,
- 0xc,
- 0x7,
- 0x4,
0x5,
+ 0x3,
+ 0xb6,
0x0,
- 0x8a,
- 0x6d,
- 0x1e,
- 0x0,
- 0x15,
+ 0xf,
0x0,
- 0x10,
- 0x3,
- 0x3b,
- 0xa3,
- 0xd,
- 0x2,
- 0x37,
- 0x25,
- 0x17,
+ 0x1,
0x16,
0x0,
- 0x6,
0x0,
+ 0x9e,
0x1,
0x0,
+ 0x21,
+ 0x0,
+ 0x25,
+ 0x4,
+ 0x10,
+ 0x4,
+ 0x15,
+ 0x2,
0x1,
- 0x47,
- 0x24,
- 0x12,
+ 0x23,
+ 0x5,
+ 0x84,
0x0,
0x0,
+ 0xf,
+ 0xa,
+ 0x2,
+ 0x37,
0x1,
0x0,
+ 0x46,
+ 0xd,
+ 0x12,
0x0,
+ 0x4,
0x0,
0x0,
- 0x1,
- 0x34,
0x0,
- 0x1,
+ 0x24,
+ 0xc,
+ 0x4a,
+ 0x2,
+ 0x4,
0x0,
- 0x1e,
+ 0x42,
0x0,
- 0x3,
+ 0x4,
0x13,
- 0x8,
- 0x28,
- 0x2b,
- 0x57,
+ 0x2,
+ 0x13,
+ 0x7b,
+ 0x3e,
0x0,
- 0x1d,
- 0x3,
0x11,
- 0x8,
+ 0x2,
+ 0x7,
+ 0x1,
0x0,
+ 0x31,
0x3,
- 0x47,
0x0,
- 0x4,
+ 0x12,
0x0,
0x0,
0x0,
+ 0x35,
+ 0x6,
0xe,
- 0x3,
- 0x5,
- 0x0,
- 0x3f,
+ 0x1e,
+ 0xc1,
0x0,
0x0,
0x0,
0x0,
- 0x1,
0x5,
+ 0x2,
+ 0x1c,
0x0,
- 0x18,
- 0x32,
- 0x1,
+ 0x8,
0x0,
- 0x14,
- 0xa,
0x9,
- 0x23,
0x3,
- 0x0,
+ 0x8d,
+ 0x70,
+ 0x54,
+ 0x23,
+ 0x11,
+ 0x1f,
+ 0x5,
+ 0x17,
+ 0x4,
0x2,
0x0,
- 0x1,
- 0x3,
- 0x0,
- 0xe,
- 0x1a,
- 0x8,
- 0xf,
+ 0x47,
+ 0x17,
+ 0xc,
+ 0x2a,
0x0,
- 0x1,
+ 0x3,
0x0,
0x0,
0x0,
- 0x4,
- 0x4e,
- 0x2,
- 0x1b,
- 0x15,
0x5,
+ 0x38,
+ 0x11,
+ 0x15,
+ 0x39,
+ 0x6,
0x0,
0x3,
+ 0x3,
0x1,
- 0xd,
0x0,
0x0,
0x0,
- 0x5,
- 0x3,
- 0x0,
- 0x2,
+ 0x53,
+ 0x4,
0x1,
- 0x1b,
- 0x0,
- 0x20,
- 0x3,
+ 0x1,
+ 0x1,
+ 0x2,
0x0,
+ 0xf,
+ 0x6,
0x0,
0x0,
- 0x9,
- 0x6,
0x0,
+ 0x4,
+ 0x28,
+ 0x4,
0x0,
0x0,
- 0x1e,
- 0x31,
+ 0x11,
+ 0x2e,
+ 0x6,
+ 0x4,
0x1,
- 0xc,
- 0xb,
0x1,
+ 0x12,
0x0,
0x0,
0x0,
+ 0x2,
0x5,
- 0x1,
- 0x4,
- 0x11,
0x0,
- 0x3a,
- 0x1,
0x15,
+ 0x2e,
0x0,
- 0x12,
+ 0x1,
0x0,
0x0,
- 0x4,
- 0x13,
- 0x14,
+ 0x6,
0x0,
0x0,
- 0x11,
- 0x2,
- 0x8,
+ 0xd,
+ 0x3,
0x0,
0x0,
+ 0x3f,
0x8,
- 0x3,
0x0,
- 0x4,
- 0x0,
- 0x3,
- 0xb,
- 0x3,
- 0xc,
+ 0x8,
0x0,
0x0,
+ 0x1a,
+ 0x2,
0x0,
- 0x9,
+ 0x7,
0x0,
- 0x6,
- 0x1,
0xa,
+ 0x0,
0x3,
+ 0xc,
+ 0x0,
+ 0x14,
+ 0x0,
0x6,
- 0x2,
+ 0x0,
+ 0x19,
0x1,
0x3,
- 0x2,
- 0x2b,
- 0x9,
0x3,
+ 0x6,
+ 0x10,
+ 0x12,
+ 0x1,
+ 0x16,
+ 0x0,
+ 0x4,
+ 0x1,
0x0,
0x0,
0x0,
- 0x8,
- 0x30,
- 0x2,
0x0,
- 0x1,
- 0x1b,
+ 0x3,
0x2,
+ 0x21,
+ 0x1,
+ 0x3,
+ 0x13,
+ 0x16,
0x0,
0x0,
- 0x29,
- 0x4,
- 0xb,
- 0x5f,
+ 0x1,
+ 0x5,
0x0,
+ 0xe,
0x0,
0x0,
+ 0x38,
+ 0x2,
+ 0x20,
0x3,
- 0xb,
- 0x1,
0x0,
- 0x9,
0xa,
+ 0xe,
0x1,
- 0x8,
- 0x4,
+ 0x3,
0x0,
- 0x8,
- 0x1,
0x0,
+ 0xa,
+ 0x6,
0x0,
- 0x1f,
+ 0x0,
+ 0x2,
0x0,
0x0,
- 0x8,
- 0x28,
+ 0x0,
+ 0x2,
0x0,
0x4,
0x18,
- 0x1e,
+ 0x1,
+ 0x0,
0x2,
0x0,
+ 0xc,
0x0,
- 0xa,
0x0,
0x1,
+ 0x1,
0x0,
0x1,
- 0x9,
+ 0x0,
0xb,
0x0,
- 0x2,
- 0x1e,
- 0x18,
+ 0x1,
0x2,
0x0,
0x0,
- 0xd,
- 0xb,
- 0x25,
+ 0x1b,
+ 0x6,
0x0,
+ 0x4,
0x0,
0x0,
- 0x4,
+ 0x5,
+ 0x20,
0x0,
- 0x1,
- 0xc,
+ 0x9,
0x0,
0x0,
0x0,
- 0x4,
0x0,
- 0x1,
+ 0x2,
0x0,
+ 0x1,
0x3,
- 0xa,
0x0,
- 0xf,
+ 0xc,
0x0,
+ 0x16,
0x0,
- 0xb,
0x0,
- 0x5,
+ 0x3,
+ 0x0,
+ 0x7,
0x0,
+ 0x8,
0x4,
- 0x3,
0x0,
0x0,
0x0,
@@ -28868,1022 +29081,1040 @@ pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x0,
0x0,
0x0,
- 0x4,
+ 0x1f,
+ 0xa,
+ 0x28,
0x0,
- 0xe,
+ 0x1,
0x0,
0x0,
+ 0x8,
+ 0xd,
0x0,
0x0,
0x0,
- 0x11,
0x0,
0x0,
+ 0x1,
0x0,
+ 0x2,
0x0,
0x0,
- 0x1,
- 0x21,
+ 0x3a,
+ 0x4,
+ 0x8,
+ 0xb,
+ 0x0,
0x17,
0x0,
+ 0x2,
0x0,
- 0x1,
- 0x7,
- 0x16,
- 0xc,
- 0x1,
0x0,
0x22,
- 0x5,
0x0,
- 0x3,
- 0x0,
- 0x24,
- 0xc,
- 0x3,
0x4,
- 0x5,
- 0x1f,
- 0x7,
- 0x1,
- 0xa,
0x0,
0x1,
- 0x3a,
+ 0x2,
+ 0x6,
+ 0x17,
+ 0x7,
0x9,
+ 0x27,
0x0,
0x1,
- 0x5,
- 0x0,
- 0x0,
+ 0x11,
+ 0x7,
+ 0x23,
0x1,
0x1,
- 0x3,
- 0x27,
- 0x9,
- 0x0,
- 0xf,
- 0x18,
- 0x3,
- 0x4,
0x0,
0x0,
0x9,
- 0x5,
- 0x4,
- 0x0,
- 0xf,
- 0x1,
- 0x1,
- 0x7,
+ 0x8,
0x2,
- 0x1,
- 0x7,
- 0x1,
- 0x5,
+ 0x27,
0x8,
0x0,
- 0x3e,
- 0x2,
- 0xb,
- 0xd,
- 0x1,
- 0xf,
+ 0x17,
+ 0xc,
+ 0x3b,
+ 0x6,
0x0,
0x0,
- 0x9,
- 0x1d,
- 0x12,
+ 0xc,
+ 0x0,
+ 0x4,
0x0,
+ 0x2e,
+ 0x5,
+ 0x7,
+ 0x7,
0x0,
- 0xc,
0x3,
- 0x6,
- 0x19,
+ 0xf,
+ 0x1,
0x0,
- 0x15,
- 0x6,
- 0x14,
0x2,
0x0,
0x6,
+ 0x2,
+ 0x2,
+ 0x4,
0x0,
- 0x9,
- 0x0,
+ 0x3,
+ 0xf,
0x0,
- 0xe,
- 0x1,
0x1,
+ 0x12,
+ 0x24,
0x0,
- 0x2,
- 0x3,
0x0,
0x0,
+ 0xb,
0x1f,
- 0xa,
+ 0x15,
+ 0xd,
0x0,
- 0x8,
+ 0x1,
0x0,
- 0x3,
+ 0x1,
+ 0x2,
0x0,
0x1,
0x0,
- 0x2,
- 0x1b,
+ 0x8,
+ 0x0,
0x0,
- 0x4,
0xc,
0x1,
+ 0xe,
+ 0x0,
0x4,
+ 0x4,
+ 0x0,
0x0,
0x1,
+ 0x3,
+ 0x0,
+ 0x2,
+ 0x0,
+ 0x2e,
+ 0x0,
+ 0x11,
+ 0x0,
+ 0x1b,
+ 0xa,
+ 0x13,
+ 0x12,
+ 0x2,
0x9,
- 0x7,
- 0x7,
+ 0x1,
+ 0xd,
0x0,
- 0x3,
0x1,
+ 0x2,
+ 0x0,
+ 0xd,
0x0,
+ 0xb,
+ 0x6,
0x0,
0x0,
+ 0xb,
0x1,
0x0,
0x0,
- 0x6,
0x2,
- 0x0,
+ 0x13,
+ 0x16,
+ 0xd,
+ 0xe,
+ 0x4,
+ 0xf,
+ 0xb,
0x2,
0x0,
- 0x1,
- 0xa,
- 0x1,
0x0,
- 0x5,
+ 0xa,
0x0,
- 0x1c,
+ 0x3,
0x0,
0xd,
- 0x6,
- 0x3,
0x2,
- 0xe,
+ 0xb,
0x0,
- 0x10,
+ 0x1d,
0x0,
- 0x1,
- 0x3d,
+ 0x2,
+ 0x7,
0x0,
0x0,
- 0x6,
+ 0x1,
0x0,
0x0,
0x0,
- 0x3,
0x7,
+ 0x6,
+ 0xe,
0x4,
- 0x20,
- 0xc,
- 0x1,
0x0,
- 0x15,
+ 0x1,
+ 0x8,
+ 0x14,
0x0,
- 0x2,
0x0,
+ 0x15,
0x0,
- 0x5,
+ 0x1,
0x0,
0x0,
0x0,
- 0xd,
+ 0x10,
0x0,
0x0,
- 0x2,
- 0x3,
+ 0x6,
+ 0x17,
0x0,
0x1,
0x0,
- 0x4,
+ 0x10,
0x0,
0x0,
0x0,
- 0xd,
+ 0xa,
0x0,
0x0,
- 0x5,
- 0x2c,
+ 0x1,
+ 0x6,
+ 0x4,
+ 0x0,
0x4,
- 0x2,
0x1,
- 0x7,
0x1,
- 0xa,
- 0xf,
+ 0x2,
+ 0x2,
0x0,
- 0x8,
+ 0x1,
+ 0x7,
0x0,
0x0,
- 0x13,
- 0x1,
- 0x19,
0x2,
- 0x1,
- 0xf,
+ 0x2,
+ 0x7,
+ 0x2,
+ 0x1f,
+ 0x9,
0x0,
0x4,
- 0x19,
+ 0x7,
0x0,
- 0xc,
+ 0x1,
0x0,
0x0,
0x0,
- 0x1,
+ 0x4,
+ 0x3,
+ 0x4,
0x0,
- 0x5,
0x0,
0x0,
- 0x1,
+ 0x4,
0x0,
0x0,
0x1,
- 0xd,
- 0x1,
- 0x5,
+ 0x9,
+ 0x17,
+ 0x6,
+ 0xf,
+ 0xc,
0x0,
- 0x2,
- 0xb,
0x0,
0x0,
+ 0x10,
0x0,
- 0x18,
- 0x6,
- 0x1,
- 0x1,
+ 0x2,
+ 0x2,
0x0,
- 0x3,
- 0x4,
0x6,
+ 0x2,
0x0,
0x3,
- 0x8,
- 0x4,
- 0x6,
0x2,
+ 0x9,
+ 0x3,
+ 0x2,
+ 0x3,
+ 0x1,
0x0,
0x0,
0x0,
+ 0x12,
+ 0x4,
0x0,
- 0x6,
- 0x0,
+ 0x8,
0x0,
- 0x2,
0x3,
- 0xb,
+ 0x18,
0x0,
0x3,
- 0x0,
0xc,
- 0x3,
- 0x17,
0x0,
+ 0x2,
+ 0x26,
0x0,
- 0x4,
- 0xa,
- 0x11,
+ 0x0,
+ 0x2,
+ 0x6,
+ 0x2,
0x0,
0x1,
- 0x3,
- 0x3,
+ 0x9,
0x8,
- 0xd,
+ 0x16,
0x1,
+ 0x3,
0x11,
0x0,
- 0x9,
+ 0x13,
0x0,
+ 0x2,
0x7,
0x0,
- 0x2,
+ 0x3,
0x0,
0x0,
0x0,
- 0x7,
- 0x2,
+ 0xc,
+ 0x1a,
0x0,
0x0,
- 0x7,
0x1,
- 0x7,
- 0x6,
+ 0x2,
0x0,
- 0x3,
- 0x5,
- 0xa,
+ 0x2,
+ 0x9,
+ 0x4,
+ 0x12,
0x0,
0x0,
- 0x3,
- 0xe,
+ 0x11,
+ 0x8,
+ 0x0,
0x0,
0x1,
- 0x8,
0x3,
- 0x2,
+ 0x0,
+ 0x3,
+ 0x6,
+ 0xf,
0x4,
- 0x5,
- 0x1d,
- 0x7,
0x1,
+ 0x3,
0x0,
- 0x4,
0x7,
+ 0x4,
0x9,
+ 0x4,
+ 0x1,
+ 0x0,
0x5,
- 0x3,
+ 0x4,
0x0,
- 0xd,
- 0x3,
+ 0x1,
0x0,
- 0x4,
0x0,
+ 0x3,
+ 0x2,
+ 0x15,
+ 0x2,
+ 0x0,
+ 0x8,
0x0,
0x2,
- 0x1,
0x0,
- 0x14,
- 0x15,
- 0x4,
0x3,
- 0x4,
- 0x0,
- 0x17,
- 0xc,
+ 0x11,
+ 0x6,
+ 0x6,
+ 0xd,
0x1,
0x0,
- 0x4,
0x1,
- 0x5,
0x3,
- 0x5,
- 0xb,
0x6,
- 0x5,
- 0x7,
- 0x3,
- 0x0,
- 0x3,
+ 0x20,
+ 0x4,
+ 0x1,
+ 0x2,
+ 0xb,
+ 0x1,
0x0,
0x0,
+ 0x1,
+ 0x1,
0x11,
- 0x21,
0x0,
- 0x10,
- 0x4,
- 0x4,
- 0x0,
- 0x4,
+ 0x1,
0x0,
- 0x15,
- 0x3,
+ 0x2,
0x1,
+ 0x0,
+ 0x0,
+ 0x7,
0x4,
+ 0x5,
+ 0x3,
0x0,
0x0,
0x0,
- 0x1,
- 0x8,
- 0x3,
- 0x2,
+ 0x5,
0x0,
+ 0x2,
0x3,
0x0,
- 0x1,
+ 0x3,
0x0,
+ 0x4,
+ 0x4,
0x2,
0x0,
- 0xc,
- 0x6,
- 0x5,
- 0x2,
- 0x1b,
- 0x2,
- 0x2,
- 0x1,
0x2,
- 0xf,
+ 0x19,
+ 0x4,
0x1,
- 0x0,
- 0x16,
- 0x0,
+ 0x13,
0x1,
+ 0x2,
0x9,
+ 0xb,
+ 0x6,
+ 0x4,
0x0,
0x1,
0x0,
+ 0x1,
+ 0x1a,
0x0,
0x2,
+ 0x5,
0x0,
0xf,
0x0,
- 0x1,
- 0x17,
- 0x4,
- 0x2,
+ 0x8,
+ 0x0,
+ 0x0,
0x2,
+ 0x4,
+ 0x10,
0x1,
0x1,
+ 0x2,
+ 0x12,
0x0,
0x0,
+ 0x9,
0x0,
- 0xc,
- 0x0,
- 0x3,
- 0x0,
+ 0x13,
0x1,
- 0x6,
- 0x5,
0x2,
- 0x0,
- 0x8,
- 0x5,
+ 0x4,
0x6,
+ 0x4,
+ 0x4,
0x0,
- 0x3,
- 0x9,
+ 0x6,
+ 0x2,
0x15,
0x0,
- 0xb,
+ 0x1,
+ 0x9,
+ 0xe,
+ 0x2,
0x3,
0x3,
+ 0x0,
+ 0x1,
0x4,
- 0x3,
0x0,
0x0,
- 0x2,
- 0xb,
+ 0x5,
+ 0xe,
+ 0x0,
+ 0x7,
0x0,
0x2,
0x0,
+ 0xb,
0x2,
- 0x8,
- 0x1,
- 0x15,
0x0,
- 0x3,
+ 0x1,
0x4,
- 0x2,
+ 0x9,
0x2,
0x0,
0x0,
- 0x4,
+ 0x0,
0x1,
0x1,
- 0xf,
- 0x8,
- 0xe,
- 0x6,
- 0x3,
0x0,
+ 0x4,
0x1,
+ 0xd,
+ 0x3,
0x0,
0x1,
- 0x1,
- 0x1,
- 0x0,
0x0,
+ 0x4,
+ 0x3,
0x1,
- 0x0,
- 0x8,
0x2,
0x0,
- 0x4,
+ 0x2,
+ 0x5,
0x0,
+ 0x3,
+ 0x2c,
+ 0xa,
+ 0x3,
0x0,
- 0x1,
+ 0x9,
0x0,
- 0x3,
0x0,
0x2,
0x0,
- 0x0,
- 0x1,
0x1,
0x0,
0x0,
+ 0x27,
+ 0x2,
0x0,
0x0,
+ 0x0,
+ 0x15,
0x1,
+ 0x2,
+ 0x4,
+ 0x0,
+ 0x2,
+ 0x0,
0x3,
0x3,
- 0x0,
0x1,
0x0,
- 0x7,
- 0x7,
+ 0x2,
+ 0x5,
+ 0xa,
0x9,
- 0x0,
- 0x1,
- 0x1,
- 0x4,
- 0x4,
0x1,
0x2,
0x3,
- 0x16,
- 0x3,
0x1,
- 0xd,
- 0x3,
- 0xb,
0x5,
- 0x4,
- 0x0,
- 0x7,
- 0x4,
- 0x0,
+ 0x1,
0x8,
- 0xc,
- 0x0,
+ 0x1,
+ 0x1,
+ 0xf,
0x0,
+ 0x3,
+ 0xa,
+ 0x3,
0x4,
- 0x7,
- 0x1,
0xd,
+ 0x3,
+ 0x1,
0x0,
+ 0xc,
+ 0x1e,
0x1,
0x1,
+ 0xa,
0x1,
- 0x6,
+ 0x3,
0x0,
- 0x4,
- 0x9,
- 0x9,
- 0x8,
- 0x1,
0x1,
+ 0x0,
0x6,
- 0x2,
- 0x1,
0x0,
+ 0x3,
0x2,
- 0x1,
+ 0x7,
+ 0x3,
+ 0xe,
+ 0x3,
+ 0x4,
+ 0xf,
+ 0x4,
0x2,
+ 0x3,
+ 0x8,
0x0,
0x2,
0x3,
0x1,
+ 0x10,
+ 0x2,
+ 0x2,
0x2,
- 0x1,
- 0x1,
- 0x4,
0x0,
0x0,
- 0x1,
- 0x3,
+ 0x5,
+ 0x2,
0x0,
- 0x4,
0x0,
+ 0x5,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
- 0x3,
0x7,
+ 0x8,
0x0,
0x0,
0x0,
- 0x2,
+ 0x4,
0x0,
0x0,
0x0,
0x1,
- 0x8,
+ 0x3,
0x0,
0x0,
0x1,
+ 0x2,
0x1,
- 0xa,
- 0x0,
+ 0xb,
0x7,
- 0x1,
- 0x1,
- 0x0,
0x0,
+ 0x3,
+ 0x5,
0x0,
0x0,
0x0,
0x0,
- 0x7,
- 0x0,
0x0,
0x0,
0x1,
- 0x4,
+ 0x0,
0x2,
+ 0xa,
+ 0xa,
+ 0x5,
+ 0x1,
0x0,
0x0,
0x0,
- 0x4,
+ 0x2,
0x1,
- 0x4,
+ 0x9,
0x0,
0x2,
- 0x4,
- 0x5,
+ 0xb,
+ 0x2,
0x0,
0x0,
0x0,
0x0,
0x8,
0x1,
- 0x2,
- 0xe,
- 0xa,
+ 0xc,
+ 0xc,
+ 0x4,
0x0,
0x1,
- 0x1,
- 0x1,
- 0x2,
0x4,
- 0x2,
+ 0x3,
+ 0x4,
+ 0x3,
+ 0x1,
+ 0x7,
0x5,
+ 0x2,
0x4,
- 0x0,
- 0x8,
- 0x14,
+ 0x1,
0x1,
0x2,
0x0,
0x0,
- 0x5,
+ 0x8,
0x1,
0x0,
0x0,
0x0,
0x1,
+ 0x2,
0x1,
+ 0x2,
0x0,
- 0x6,
- 0x0,
- 0x4,
- 0x0,
+ 0xc,
+ 0x5,
0x1,
0x0,
0x2,
- 0xa,
- 0x17,
- 0x3,
+ 0x2,
0x6,
- 0x4,
0x0,
+ 0x1,
+ 0x2,
+ 0x2,
0x0,
0x0,
+ 0x6,
+ 0x2,
+ 0x7,
0x1,
0x0,
- 0x1,
0x0,
+ 0x5,
+ 0x1,
+ 0xa,
0x0,
- 0x8,
- 0x2,
0x2,
0x0,
0x1,
0x0,
- 0x2,
- 0x0,
0x0,
0x1,
- 0x9,
- 0x6,
+ 0x1,
+ 0xc,
0x0,
0x3,
0x2,
- 0x0,
+ 0x9,
0x0,
0x2,
- 0x2,
+ 0x3,
0x0,
0x1,
- 0x8,
- 0x6,
0x1,
- 0x7,
+ 0x5,
0x4,
- 0x2,
0x7,
- 0x5,
- 0x8,
- 0x5,
- 0x0,
- 0x8,
- 0x0,
+ 0x1,
0x1,
0x1,
0x2,
- 0x7,
0x1,
+ 0x3,
+ 0x3,
+ 0x0,
0x1,
- 0x8,
+ 0x3,
0x0,
0x2,
+ 0x2,
0x0,
+ 0x1,
0x6,
+ 0x1,
+ 0xa,
0x0,
- 0xb,
0x0,
- 0x2,
+ 0x8,
+ 0x0,
0x5,
0x0,
+ 0x1,
+ 0x2,
0x0,
0x0,
- 0x4,
0x0,
- 0x8,
+ 0x7,
+ 0x0,
+ 0x2,
0x0,
0x0,
0x0,
0x0,
0x0,
- 0x1,
- 0x14,
- 0x9,
- 0x10,
- 0xa,
0x2,
+ 0x10,
+ 0x7,
+ 0x1,
+ 0x5,
+ 0xe,
0x0,
0x0,
0x0,
- 0xc,
- 0x3,
+ 0x5,
+ 0x7,
+ 0x5,
0x1,
- 0x3,
0x0,
- 0x1,
- 0x16,
+ 0x4,
+ 0x0,
0x5,
- 0x9,
- 0x1,
- 0xa,
- 0x1,
+ 0x3,
+ 0x2,
0x0,
0x1,
0x0,
0x0,
- 0x3,
- 0x3,
- 0xd,
+ 0x9,
0x0,
+ 0x4,
+ 0x2,
+ 0x3,
0x6,
- 0x1,
+ 0x5,
0x0,
0x1,
+ 0x1,
+ 0x1,
+ 0x3,
+ 0x2,
+ 0x4,
+ 0x2,
0x2,
- 0x6,
0x2,
- 0x9,
- 0x9,
- 0xf,
- 0x0,
- 0x0,
- 0xd,
- 0x1,
0x0,
0x3,
- 0x4,
+ 0x6,
0x0,
0x1,
0x1,
0x0,
- 0x0,
- 0x1,
- 0x1,
0x1,
+ 0x2,
+ 0x14,
+ 0x0,
0x0,
0x7,
+ 0x5,
+ 0x2,
+ 0x0,
+ 0x1,
0x0,
0x0,
0x0,
0x1,
+ 0x6,
+ 0xb,
+ 0x5,
0x0,
- 0xc,
- 0x8,
+ 0xf,
+ 0x1,
0x0,
- 0x5,
+ 0x6,
+ 0x9,
+ 0x1,
+ 0x7,
0x2,
0x0,
- 0x4,
- 0x2,
0x1,
- 0x3,
- 0xb,
- 0x0,
- 0x3,
- 0x4,
+ 0x1,
0x0,
0x0,
0x1,
0x1,
+ 0x1,
0x5,
0x7,
- 0x7,
0x0,
0x0,
0x0,
- 0x3,
0x0,
- 0x5,
- 0x5,
+ 0x6,
+ 0x6,
0x0,
- 0x1,
0x7,
0x0,
- 0x0,
0x1,
+ 0x0,
+ 0x0,
0x3,
+ 0x8,
+ 0x0,
0x0,
- 0x4,
0x1,
- 0xe,
0x1,
- 0x4,
+ 0x6,
+ 0xb,
+ 0x7,
0x0,
0x0,
- 0xa,
+ 0x3,
0x0,
0x1,
- 0x2,
- 0x3,
+ 0x8,
0x1,
- 0x7,
0x1,
+ 0x5,
+ 0x2,
0x1,
- 0x4,
- 0x7,
- 0x0,
0x2,
- 0x0,
- 0x0,
- 0xc,
+ 0xa,
0x0,
0x1,
- 0x1,
0x0,
0x0,
+ 0x3,
0x0,
- 0xe,
- 0x9,
- 0x2,
- 0x6,
0x2,
0x2,
- 0x1,
- 0x1,
- 0x2,
0x0,
- 0x8,
- 0xb,
+ 0x0,
0x0,
0x0,
0x1,
- 0x2,
0x3,
- 0x1,
+ 0x6,
0x2,
0x0,
- 0x5,
- 0x6,
0x2,
0x1,
- 0x1,
0x4,
0x1,
+ 0x2,
+ 0x2,
0x0,
- 0x3,
0x0,
- 0x5,
- 0x7,
0x1,
- 0x0,
- 0x13,
+ 0x4,
+ 0x2,
0x1,
- 0x3,
- 0x9,
0x1,
0x1,
0x0,
+ 0x2,
0x4,
+ 0x3,
+ 0x2,
+ 0x3,
0x1,
0x0,
- 0x5,
0x1,
- 0x5,
- 0x10,
- 0x7,
+ 0x0,
+ 0x0,
+ 0x4,
0x0,
0x3,
- 0xc,
0x3,
+ 0x0,
+ 0x5,
0x5,
0x1,
+ 0x3,
+ 0x6,
0x0,
+ 0x1,
0x2,
- 0xd,
- 0x4,
0x0,
+ 0xa,
+ 0x3,
+ 0x1,
+ 0x1,
0x2,
- 0x6,
0x0,
0x0,
- 0x9,
+ 0x2,
+ 0x4,
0x3,
+ 0x2,
+ 0x0,
+ 0x2,
+ 0x5,
0x1,
0x0,
+ 0xb,
+ 0xa,
+ 0x0,
+ 0x0,
+ 0x1,
0x3,
0x0,
0x3,
- 0x2,
- 0x2,
0x0,
+ 0x1,
0x0,
+ 0x3,
+ 0x8,
0x2,
- 0x1,
0x0,
0x4,
0x0,
- 0x2,
0x1,
0x0,
+ 0x8,
+ 0x2,
+ 0x0,
+ 0x1,
0x1,
0x1,
0x0,
0x0,
- 0x8,
- 0x6,
+ 0x0,
+ 0x5,
0x3,
- 0x8,
- 0x7,
+ 0x6,
+ 0x2,
+ 0x14,
0x0,
0x1,
0x0,
- 0x1,
+ 0x2,
+ 0x3,
0x3,
0x1,
- 0x2,
+ 0x3,
+ 0x6,
+ 0x8,
0x1,
0x1,
- 0x2,
- 0x3,
- 0x2,
0x1,
0x1,
+ 0x3,
0x8,
- 0x1,
0x0,
0x0,
+ 0x4,
+ 0x6,
0x3,
- 0x1,
- 0x9,
0x0,
0x3,
0x0,
- 0x7,
0x0,
+ 0x9,
+ 0xa,
+ 0x3,
+ 0x3,
0x2,
+ 0x5,
+ 0x7,
0x2,
0x0,
- 0x3,
- 0x1,
- 0x1,
- 0xe,
+ 0xa,
0x1,
0x2,
0x1,
0x1,
- 0x1,
0x0,
0x2,
+ 0x2,
0x0,
- 0x5,
+ 0x1,
+ 0x6,
0x1,
0x0,
- 0xe,
+ 0x0,
+ 0xb,
+ 0x3,
0x2,
+ 0x3,
0x0,
0x0,
- 0x3,
- 0x6,
- 0x1,
- 0x6,
0x0,
+ 0x6,
0x0,
- 0x1,
- 0x1,
- 0x3,
+ 0x2,
0x12,
0x1,
0x0,
0x0,
- 0x3,
+ 0x2,
0x0,
0x0,
0x0,
@@ -29891,219 +30122,223 @@ pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x0,
0x0,
0x6,
- 0x6,
+ 0x1,
0x0,
0x0,
- 0x1,
+ 0x2,
+ 0x0,
0x3,
- 0x9,
- 0x1,
+ 0x4,
+ 0x0,
0x0,
0x0,
0x1,
+ 0xf,
0x3,
- 0x5,
- 0xc,
0x2,
+ 0xe,
+ 0x9,
0x0,
- 0x7,
+ 0x1,
+ 0x6,
0x0,
0x1,
- 0x3,
0x0,
- 0x4,
0x0,
+ 0x1,
+ 0x3,
0x0,
- 0x2,
- 0x5,
0x0,
+ 0x7,
+ 0x5,
0x0,
0x3,
0x0,
- 0x1,
0x0,
+ 0xc,
0x0,
+ 0x3,
0x0,
- 0x7,
- 0x8,
0x4,
- 0x9,
- 0x1,
+ 0x6,
+ 0x5,
0x1,
- 0x2,
+ 0x0,
+ 0x3,
0x0,
0x1,
+ 0x4,
+ 0x3,
0x0,
+ 0x3,
0x4,
- 0x1,
0x0,
0x3,
0x0,
- 0x12,
- 0x6,
- 0x2,
- 0xa,
0x0,
- 0x7,
+ 0x1,
0x0,
- 0x2,
+ 0x6,
0x0,
- 0x5,
+ 0x6,
0x0,
0x2,
0x0,
+ 0x2,
+ 0x3,
+ 0x3,
0x5,
- 0x7,
- 0x1,
0x1,
- 0x9,
- 0x3,
0x0,
0x5,
+ 0x5,
+ 0x3,
0x1,
0x1,
- 0x2,
- 0x6,
- 0x2,
- 0x3,
+ 0x1,
+ 0x1,
+ 0x4,
0x0,
0x0,
0x0,
+ 0x4,
0x1,
- 0x0,
0x1,
0x2,
- 0x5,
+ 0x0,
0x1,
+ 0x7,
0x0,
+ 0x2,
0x0,
- 0x12,
0x0,
0x1,
0x0,
0x0,
- 0x1,
+ 0x3,
0x0,
0x0,
0x1,
0x2,
0x0,
- 0x0,
0x1,
- 0x3,
0x1,
+ 0x3,
0x0,
- 0xb,
- 0x1,
- 0x1,
- 0x9,
+ 0x0,
+ 0x4,
0x2,
+ 0x5,
0x1,
+ 0x2,
+ 0x3,
0x0,
- 0x7,
0x3,
+ 0x1,
0x0,
0x0,
0x1,
- 0x2,
- 0x2,
- 0x3,
+ 0x6,
+ 0x1,
+ 0x1,
0x0,
0x0,
0x3,
- 0x2,
+ 0x5,
0x0,
0x0,
- 0x2,
0x0,
- 0xb,
+ 0x1,
+ 0x3,
0x0,
- 0x4,
+ 0x11,
0x0,
- 0xe,
- 0x6,
+ 0x2,
+ 0x5,
+ 0x1,
0x9,
0x1,
0x0,
- 0x0,
- 0x4,
+ 0x5,
+ 0x3,
0x2,
+ 0x1,
0x0,
- 0x5,
0x0,
+ 0x6,
0x0,
- 0x1,
+ 0x4,
0x0,
- 0x8,
- 0x1,
+ 0x2,
0x1,
- 0x5,
0x0,
0x0,
0x0,
- 0x6,
0x0,
+ 0x8,
0x0,
- 0x1,
0x0,
- 0x2,
0x1,
0x0,
- 0x2,
- 0x6,
+ 0x7,
+ 0x1,
0x0,
0x1,
+ 0x5,
0x0,
+ 0x1,
0x6,
+ 0x2,
0x3,
- 0x1,
0x5,
- 0x2,
- 0x1,
- 0x1,
0x4,
- 0x6,
0x2,
- 0xb,
0x1,
- 0x0,
- 0x2,
+ 0x1,
+ 0x7,
0x3,
0x2,
+ 0x3,
0x1,
0x0,
0x2,
- 0x9,
+ 0x8,
+ 0x4,
0x1,
0x0,
- 0x0,
0x1,
- 0x0,
- 0x0,
0x1,
- 0x0,
+ 0x2,
0x0,
0x0,
0x1,
+ 0x2,
+ 0x0,
0x1,
- 0x7,
+ 0x3,
0x0,
- 0x4,
+ 0x0,
+ 0xb,
0x2,
- 0x3,
+ 0x2,
+ 0xf,
0x0,
0x2,
+ 0x1,
0x0,
0x0,
+ 0x5,
+ 0x0,
+ 0x2,
0x1,
0x0,
0x0,
0x0,
0x1,
- 0x1,
0x2,
- 0x1,
- 0x5,
+ 0x0,
+ 0x3,
+ 0x2,
0x0,
0x0,
0x1,
@@ -30111,204 +30346,207 @@ pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x0,
0x0,
0x1,
- 0x3,
- 0x0,
- 0x9,
- 0x5,
0x2,
- 0x1,
- 0x1,
0x0,
- 0x2,
- 0x1,
- 0x8,
- 0x1,
+ 0x6,
0x2,
0x2,
+ 0x3,
0x1,
+ 0xc,
0x0,
+ 0x1,
+ 0x6,
0x2,
0x3,
+ 0x2,
0x1,
- 0x0,
+ 0x2,
0x1,
0x3,
+ 0x2,
+ 0x3,
0x1,
- 0x0,
- 0x1,
+ 0x2,
0x1,
0x0,
+ 0x4,
+ 0x5,
0x0,
0x0,
- 0x3,
0x0,
0x1,
+ 0x0,
+ 0x3,
0x4,
- 0x5,
- 0x1,
- 0x4,
+ 0x2,
+ 0xb,
+ 0x0,
+ 0x2,
0x0,
0x0,
0x0,
- 0x2,
- 0x8,
0x1,
- 0x4,
0x0,
- 0x2,
+ 0x1,
+ 0x4,
0x2,
0x5,
0x2,
- 0x3,
+ 0x7,
+ 0x0,
+ 0x1,
0x0,
0x0,
0x0,
0x1,
0x0,
- 0x5,
0x6,
0x0,
- 0x2,
- 0x2,
- 0x0,
0x0,
0x1,
+ 0x4,
0x0,
0x0,
- 0x1,
0x2,
- 0x9,
0x0,
- 0x1,
- 0x2,
0x0,
- 0x3,
- 0x4,
+ 0x5,
+ 0x6,
0x1,
- 0x4,
+ 0x0,
0x1,
+ 0x5,
+ 0x0,
0x0,
0x4,
0x2,
0x3,
- 0x4,
- 0x2,
0x1,
+ 0x0,
+ 0xa,
+ 0x3,
+ 0xa,
+ 0x2,
0x2,
0x1,
0x1,
- 0x4,
- 0x5,
- 0x4,
- 0x0,
+ 0x2,
0x2,
0x3,
+ 0x4,
0x2,
- 0x0,
+ 0x1,
0x0,
0x2,
- 0x6,
+ 0x1,
+ 0x7,
0x0,
- 0x2,
+ 0x3,
+ 0x1,
0x1,
0x0,
+ 0x2,
+ 0x4,
0x1,
0x0,
0x0,
- 0x1,
- 0x9,
+ 0x2,
+ 0x6,
+ 0x3,
0x0,
0x1,
0x0,
0x3,
+ 0xa,
0x1,
- 0x0,
- 0x0,
- 0x2,
- 0x2,
+ 0x6,
0x2,
0x0,
+ 0x3,
0x0,
0x0,
- 0x4,
- 0x5,
0x0,
+ 0x6,
0x3,
+ 0x0,
0x2,
- 0x2,
+ 0x6,
+ 0x3,
0x4,
0x0,
- 0x1,
- 0x0,
- 0x3,
+ 0xa,
0x0,
- 0x5,
+ 0x2,
0x0,
+ 0x4,
0x0,
- 0x6,
- 0x1,
0x0,
+ 0x4,
0x3,
+ 0x2,
+ 0x2,
0x0,
- 0x1,
- 0x0,
- 0x6,
+ 0x8,
0x1,
0x4,
+ 0x4,
+ 0x1,
0x1,
0x1,
- 0x2,
0x1,
0x2,
+ 0x1,
0x0,
+ 0x1,
0x2,
- 0x2,
- 0x0,
+ 0x1,
0x0,
0x0,
0x3,
0x0,
- 0x5,
- 0x2,
0x0,
+ 0x5,
0x1,
+ 0x0,
+ 0xa,
+ 0x6,
0x1,
0x2,
- 0x0,
+ 0x4,
0x2,
0x1,
0x1,
+ 0x0,
+ 0x5,
0x1,
+ 0x3,
+ 0x3,
+ 0x0,
+ 0x0,
0x1,
- 0x1,
- 0x1,
- 0xa,
+ 0x6,
0x5,
- 0x1,
+ 0xc,
+ 0x0,
0x0,
+ 0xa,
+ 0x1,
0x1,
0x1,
- 0x4,
- 0x5,
0x0,
0x0,
0x2,
+ 0x0,
+ 0x4,
0x1,
0x2,
- 0x4,
- 0x0,
+ 0x3,
0x2,
+ 0x4,
0x0,
- 0x0,
- 0x3,
- 0x1,
0x1,
0x1,
- 0x1,
- 0x4,
- 0x0,
- 0x2,
- 0x0,
0x0,
0x0,
0x0,
@@ -30319,22 +30557,23 @@ pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x0,
0x0,
0x0,
- 0x1,
+ 0x0,
+ 0x2,
0x0,
0x0,
0x4,
- 0x4,
+ 0x0,
0x0,
0x0,
0x0,
0x3,
0x0,
0x0,
+ 0x2,
+ 0x2,
0x7,
- 0x0,
- 0x1,
- 0x1,
0x1,
+ 0x4,
0x2,
0x1,
0x0,
@@ -30344,70 +30583,71 @@ pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x0,
0x5,
0x2,
- 0x4,
+ 0x1,
+ 0x0,
+ 0x1,
+ 0xa,
0x0,
- 0x2,
- 0x5,
0x0,
0x0,
- 0x1,
- 0x1,
0x1,
0x2,
- 0x7,
+ 0x2,
+ 0x1,
0x0,
0x0,
+ 0x2,
0x1,
- 0x1,
- 0x0,
0x0,
0x0,
- 0x6,
- 0x7,
- 0x5,
- 0xf,
- 0x2,
0x0,
+ 0x4,
+ 0x4,
0x1,
- 0x1,
- 0x3,
- 0x0,
+ 0x4,
+ 0x4,
0x0,
0x1,
- 0x2,
0x1,
0x0,
0x3,
+ 0x0,
+ 0x4,
+ 0x3,
0x1,
+ 0x0,
+ 0x6,
0x1,
- 0x3,
+ 0x0,
0x1,
+ 0x0,
+ 0x2,
0x1,
0x3,
0x0,
0x0,
- 0x4,
- 0x2,
+ 0x3,
+ 0x3,
0x0,
0x1,
+ 0x2,
+ 0x2,
0x1,
- 0x1,
- 0x6,
- 0x1,
+ 0x3,
0x0,
- 0x4,
+ 0x1,
0x0,
- 0x4,
- 0x4,
+ 0xb,
+ 0x7,
0x0,
- 0x2,
0x1,
0x5,
+ 0x1,
0x0,
0x0,
- 0x2,
+ 0x9,
0x1,
- 0x2,
+ 0x3,
0x0,
0x0,
0x0,
@@ -30415,165 +30655,168 @@ pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x1,
0x0,
0x0,
- 0x3,
- 0x0,
- 0x0,
+ 0xe,
0x2,
- 0x8,
- 0x1,
+ 0x0,
+ 0x4,
0x3,
+ 0x1,
+ 0x6,
0x0,
0x0,
- 0x3,
+ 0x4,
0x0,
- 0x6,
+ 0x5,
+ 0x3,
0x1,
- 0x4,
- 0x2,
- 0x6,
+ 0x0,
0x2,
0x1,
- 0x2,
+ 0x0,
+ 0x1,
0x1,
- 0x2,
0x3,
- 0x7,
0x1,
- 0x6,
+ 0x0,
+ 0x1,
+ 0x5,
0x1,
+ 0x2,
0x1,
0x0,
+ 0x1,
0x0,
+ 0x2,
0x1,
- 0x3,
- 0x3,
0x1,
- 0x9,
+ 0x7,
0x1,
- 0x3,
- 0x8,
- 0x0,
- 0x2,
0x1,
0x2,
+ 0x6,
+ 0x4,
0x2,
+ 0x3,
+ 0x1,
0x1,
- 0x6,
- 0x0,
0x1,
0x0,
- 0x2,
0x1,
+ 0x0,
0x1,
0x2,
- 0x2,
+ 0x1,
+ 0x3,
0x0,
0x1,
+ 0x5,
0x0,
- 0x4,
0x0,
- 0x2,
0x6,
- 0x3,
+ 0x2,
+ 0x2,
+ 0x1,
0x0,
0x2,
0x1,
- 0x5,
- 0x7,
+ 0x1,
+ 0x1,
0x2,
0x4,
0x2,
0x0,
0x0,
0x0,
- 0x1,
0x0,
- 0x8,
+ 0x1,
0x3,
- 0x5,
- 0x0,
0x2,
+ 0x0,
+ 0x4,
0x1,
+ 0x4,
+ 0x2,
0x0,
0x0,
+ 0x3,
+ 0x0,
0x2,
- 0x6,
- 0x1,
- 0x1,
- 0x1,
+ 0x0,
0x3,
+ 0x0,
0x1,
0x0,
0x1,
- 0x2,
+ 0x1,
0x0,
0x0,
0x5,
+ 0x3,
0x1,
0x1,
0x1,
- 0x1,
- 0x0,
0x0,
0x1,
- 0x0,
0x2,
- 0x3,
+ 0x0,
+ 0x7,
+ 0x4,
0x0,
0x1,
0x1,
0x0,
- 0x5,
- 0x0,
- 0x4,
- 0x2,
+ 0x1,
0x0,
- 0x3,
0x5,
- 0x0,
- 0x0,
0x1,
0x0,
0x1,
- 0x1,
- 0x2,
0x0,
0x2,
- 0x1,
- 0x1,
+ 0x0,
0x1,
0x2,
- 0x0,
+ 0x2,
0x2,
0x1,
- 0x0,
- 0x4,
0x2,
- 0x0,
- 0x0,
+ 0x5,
0x2,
0x1,
0x1,
0x3,
0x0,
+ 0x3,
+ 0x1,
+ 0x0,
0x2,
+ 0x3,
+ 0x6,
+ 0x0,
+ 0x3,
0x2,
- 0x1,
0x0,
- 0x1,
0x5,
0x0,
- 0x0,
0x4,
+ 0x4,
+ 0x3,
+ 0x1,
0x0,
+ 0x2,
+ 0x8,
0x0,
+ 0x3,
0x0,
- 0x1,
0x0,
- 0x4,
- 0x2,
+ 0x0,
+ 0x0,
+ 0x3,
+ 0x0,
0x2,
0x2,
+ 0x1,
+ 0x1,
0x0,
0x3,
0x0,
@@ -30582,133 +30825,135 @@ pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x0,
0x0,
0x0,
- 0x5,
+ 0x1,
0x3,
- 0x8,
- 0x0,
- 0x7,
+ 0x1,
+ 0x4,
+ 0x1,
0x2,
0x2,
- 0x1,
0x2,
0x2,
+ 0x0,
+ 0x2,
0x4,
- 0x9,
0x1,
- 0x0,
- 0x0,
0x1,
0x0,
- 0x5,
0x2,
0x0,
- 0x1,
0x0,
0x2,
+ 0x4,
+ 0x4,
0x1,
+ 0x2,
0x0,
- 0x4,
+ 0x1,
0x2,
0x1,
- 0x9,
- 0x6,
+ 0x4,
0x2,
0x3,
- 0x2,
0x6,
0x0,
+ 0x1,
+ 0x5,
+ 0x0,
+ 0x0,
0x0,
0x0,
0x0,
0x2,
- 0x1,
0x2,
+ 0x1,
0x0,
0x0,
0x0,
- 0x1,
+ 0x2,
+ 0x2,
0x4,
- 0x1,
0x0,
0x0,
0x0,
0x4,
- 0xc,
- 0x0,
0x3,
- 0x2,
- 0x4,
- 0x0,
- 0x0,
0x1,
- 0x0,
- 0x0,
+ 0x1,
+ 0x9,
0x1,
0x0,
0x0,
+ 0x3,
+ 0x0,
0x0,
- 0x1,
0x2,
+ 0x1,
0x0,
- 0x8,
0x0,
0x1,
- 0x2,
0x3,
0x0,
- 0x0,
- 0x1,
- 0x4,
0x1,
+ 0x0,
0x2,
- 0x1,
0x2,
0x1,
+ 0x0,
+ 0x0,
0x1,
- 0x1,
- 0x1,
+ 0x3,
0x2,
- 0x1,
0x2,
0x0,
- 0x0,
0x1,
0x1,
0x0,
+ 0x2,
0x1,
+ 0x5,
0x2,
+ 0x4,
+ 0x1,
+ 0x0,
0x2,
+ 0x0,
0x8,
- 0x1,
+ 0x0,
0x3,
0x1,
+ 0x3,
0x1,
+ 0x2,
0x1,
0x1,
- 0x4,
- 0x3,
0x2,
- 0x0,
0x1,
0x1,
+ 0x3,
+ 0x3,
+ 0x1,
+ 0x0,
+ 0x3,
0x1,
0x2,
+ 0x2,
0x1,
0x0,
+ 0x0,
0x1,
- 0x1,
- 0x3,
+ 0x4,
+ 0x0,
+ 0x2,
0x0,
- 0x7,
0x0,
0x0,
- 0x7,
0x1,
+ 0x3,
0x1,
- 0x2,
0x0,
+ 0x1,
0x3,
- 0x0,
0x1,
0x0,
0x2,
@@ -30721,6 +30966,7 @@ pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x0,
0x0,
0x0,
+ 0x0,
0x1,
0x0,
0x0,
@@ -30733,18 +30979,18 @@ pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x0,
0x0,
0x1,
- 0x3,
+ 0x5,
0x2,
0x0,
0x0,
- 0x0,
+ 0x1,
0x2,
+ 0x8,
0x0,
- 0x3,
0x0,
0x1,
0x0,
- 0x1,
+ 0x11,
0x1,
0x0,
0x0,
@@ -30755,2523 +31001,2567 @@ pub(crate) const COMBINING_MARK_SALT: &[u16] = &[
0x0,
0x0,
0x2,
- 0x3,
- 0x0,
- 0x0,
- 0x0,
- 0x0,
0x1,
0x0,
- 0x4,
- 0x2,
0x0,
- 0x1,
- 0x8,
0x0,
0x0,
- 0x3,
- 0x7,
+ 0x1,
0x0,
0x1,
0x1,
0x0,
0x1,
0x5,
- 0x1,
- 0x4,
0x0,
0x0,
- 0x0,
- 0x3,
- 0x5,
+ 0x6,
0x3,
0x0,
0x2,
0x2,
0x1,
- 0x3,
- 0x1,
0x1,
- 0x3,
0x5,
0x3,
- 0x5,
+ 0x2,
+ 0x2,
+ 0x0,
+ 0x0,
+ 0x0,
+ 0x2,
+ 0x0,
+ 0x1,
+ 0x4,
0x1,
0x2,
+ 0x2,
0x0,
0x1,
- 0x7,
0x2,
- 0x3,
- 0xc,
- 0x8,
0x2,
0x1,
0x1,
- 0x0,
- 0x5,
- 0x3,
- 0x0,
+ 0xa,
+ 0x1,
0x1,
0x0,
0x2,
- 0x0,
- 0x3,
+ 0x2,
+ 0x1,
+ 0x4,
+ 0x6,
+ 0x1,
+ 0x1,
+ 0x1,
0x1,
0x0,
0x4,
0x1,
+ 0x0,
0x1,
0x0,
- 0x9,
0x0,
+ 0x2,
+ 0xb,
0x1,
+ 0x8,
0x1,
0x1,
- 0x2,
0x1,
0x0,
0x1,
+ 0x0,
+ 0x5,
+ 0x0,
0x3,
+ 0xf,
+ 0x1,
+ 0x1,
0x0,
0x1,
+ 0x2,
+ 0x1,
0x0,
0x1,
0x1,
0x1,
- 0x0,
0x1,
- 0x0,
+ 0x1,
+ 0x2,
+ 0x8,
0x1,
0x1,
- 0x4,
0x0,
0x1,
0x1,
0x1,
0x0,
0x0,
+ 0x0,
0x1,
0x1,
- 0x4,
+ 0x0,
0x1,
0x0,
0x2,
0x0,
0x0,
0x0,
- 0x1,
0x2,
+ 0x1,
0x0,
0x1,
- 0x2,
+ 0x3,
0x0,
];
pub(crate) const COMBINING_MARK_KV: &[u32] = &[
- 0x0f9c,
+ 0xe01cb,
0x115dd,
- 0x09fe,
- 0x0d83,
- 0x0d48,
- 0x1da10,
- 0x0ac1,
- 0x08fb,
+ 0x0e3a,
+ 0x11441,
+ 0xe0134,
+ 0x11cb1,
+ 0x115bd,
+ 0x0faf,
0xe01dc,
- 0x0368,
- 0xe018b,
- 0x0315,
- 0x1cf7,
+ 0x11181,
+ 0x11934,
+ 0x11374,
+ 0x0823,
0xa67c,
- 0x1c36,
- 0x0b42,
- 0x1da3f,
+ 0x0a4d,
+ 0xa952,
+ 0x1e003,
0x0e49,
- 0xe0119,
- 0x1c27,
- 0x0593,
- 0xa981,
+ 0x17b5,
+ 0x1074,
+ 0x2dfe,
+ 0xa8be,
+ 0x101fd,
0x102e0,
- 0xa9b5,
- 0x102f,
- 0x1e021,
- 0xaa2f,
- 0x0fa2,
- 0xe015e,
- 0x1a63,
- 0x06e3,
- 0x0308,
- 0x0f79,
- 0x1ba4,
- 0x112e7,
- 0x16f70,
- 0x1bf3,
+ 0x0fb1,
+ 0xa9ba,
+ 0x0c00,
+ 0x1daa6,
+ 0x05a2,
+ 0xfe26,
+ 0x0a41,
+ 0x07a6,
+ 0x0898,
+ 0x0b82,
+ 0x0afb,
+ 0x0fbb,
+ 0x1a7a,
+ 0x1cf1a,
0x16f6b,
- 0x1e00a,
0xa675,
- 0x1136a,
- 0xfe0e,
- 0x11ef3,
- 0x1d243,
- 0x11a97,
- 0xa806,
- 0x1daae,
- 0x11831,
+ 0x1cf45,
+ 0xe012f,
+ 0xe014f,
+ 0x11c3b,
+ 0x2df7,
+ 0xa9bf,
+ 0xa8eb,
+ 0x1bc9e,
0x1a74,
- 0x1cf10,
- 0x111b7,
- 0x1925,
+ 0x0eb8,
+ 0x302c,
+ 0x0c4d,
+ 0x064f,
0x105e,
- 0xe0112,
- 0x0656,
- 0x1e006,
+ 0x0741,
+ 0x1da44,
+ 0x0b44,
0x1924,
- 0x0f80,
+ 0x1da1d,
0x09c0,
0xfe2d,
- 0xe015c,
- 0x0a4b,
- 0x11146,
+ 0x0330,
+ 0xe01c3,
+ 0x109d,
+ 0x0322,
0x1cf18,
- 0x0c56,
- 0x0346,
- 0x1e023,
- 0xe017d,
+ 0x0c02,
+ 0xe0128,
+ 0x17cb,
0x1acb,
- 0x1da19,
+ 0xe01e3,
0xa802,
- 0x1d242,
+ 0x16f72,
+ 0x11001,
0x11634,
- 0x1da84,
+ 0x1da9b,
0x08ce,
0x0eb7,
- 0x17dd,
+ 0x11041,
0x1a7b,
- 0x0b4d,
0x1057,
+ 0xe0150,
0x1b6d,
- 0x0fa9,
+ 0x0ce2,
0xa8e6,
- 0x103b,
+ 0x1103e,
0x0619,
- 0x073a,
- 0x030d,
- 0x1daa7,
- 0x1cf04,
- 0x112df,
- 0x0f7a,
+ 0x11081,
+ 0x0fa3,
+ 0x114c3,
+ 0x11a90,
+ 0x082c,
+ 0x11173,
0x1a66,
- 0x0f78,
- 0x065d,
+ 0x1e8d4,
+ 0x1d16e,
0x111b8,
- 0x115af,
- 0xa92a,
- 0x0982,
+ 0x1934,
+ 0x1cf0c,
+ 0xe01ce,
0x1cf39,
- 0x115b5,
0x111be,
- 0xa8b6,
+ 0xe01d2,
+ 0x1da08,
0xe0141,
0x11236,
- 0x11180,
- 0x1d165,
- 0x0741,
+ 0x110c2,
+ 0xfe25,
+ 0x16b36,
0x0657,
0x0749,
- 0x0486,
- 0x114bd,
- 0x1a75,
- 0x08de,
+ 0x0311,
+ 0xe01c4,
+ 0x20d3,
+ 0x1da21,
0x1be9,
- 0x07f1,
- 0x1e02a,
+ 0x1cf0e,
+ 0x16f5d,
0x1d182,
- 0x1dea,
- 0x0822,
+ 0x1cf41,
+ 0x08fe,
0xfe05,
- 0xa8ec,
- 0x1036,
- 0x115ba,
- 0x1ba1,
- 0x116b0,
+ 0x11a59,
+ 0x1de6,
+ 0x1ac6,
+ 0xe0120,
+ 0x11a38,
0x110b7,
0x1dec,
- 0x11a8f,
- 0x1e8d1,
- 0xaa2b,
- 0x0f8e,
- 0x1cf03,
- 0x1dc7,
+ 0x0351,
+ 0x0309,
+ 0x1dcd,
+ 0x115bc,
+ 0x114b5,
+ 0x16f80,
0x11182,
- 0x2de9,
+ 0x16f6e,
0x11caa,
0xe0198,
0x0dd8,
- 0x10a39,
+ 0xa80b,
0x0eca,
- 0x0363,
+ 0x1df0,
0xa8c5,
0x0fbc,
- 0x0a4d,
+ 0x1136c,
+ 0x1064,
0x1c29,
- 0xa8e2,
- 0x0fb4,
- 0x1ab9,
+ 0x114c0,
+ 0x1030,
0x1abd,
- 0x11935,
- 0x102d,
- 0x1acc,
- 0x0654,
+ 0x0e4c,
+ 0x0a02,
+ 0x1143d,
+ 0x1e4ed,
+ 0x20d8,
0x11a04,
0x1cf26,
0xe0116,
0x0acc,
0x10f4d,
0xaaed,
- 0xe012e,
- 0x17cc,
- 0x0825,
- 0xabe4,
+ 0x07aa,
+ 0x0902,
+ 0x11442,
+ 0xe012c,
0x0ac7,
- 0xe0122,
- 0x0615,
- 0x16f72,
- 0xe01c7,
- 0x110b3,
- 0x0820,
+ 0xaabe,
+ 0x1921,
+ 0x11c9c,
+ 0x11f3e,
+ 0x11102,
+ 0x0953,
0x1da5b,
- 0x180f,
+ 0xa8e9,
0x11044,
- 0x1cf45,
+ 0x16b33,
0x08e3,
0xe0158,
0xa826,
- 0x2de4,
- 0x06d6,
- 0x1dd3,
- 0x0f37,
- 0xe0139,
- 0xe0113,
- 0x1a71,
+ 0x11f41,
+ 0x0f19,
+ 0x1058,
+ 0xe01ef,
+ 0xe011d,
+ 0x17bb,
+ 0x1171f,
0x11232,
+ 0x1cd7,
0x0364,
- 0xe016d,
- 0x0c81,
+ 0x1c35,
0x0a3f,
- 0xfe0a,
- 0xe01bf,
- 0xaab7,
- 0x11937,
- 0x1e131,
+ 0x1a5a,
+ 0x13453,
+ 0x11a55,
+ 0x1def,
+ 0x0342,
+ 0x0b4c,
0xe01ea,
- 0x05bc,
- 0xe0149,
+ 0x1cf32,
0x1082,
- 0xfe08,
- 0x11357,
+ 0x0b63,
+ 0x1ac5,
0x11635,
- 0x1da30,
+ 0x1a69,
+ 0x0487,
0xe0164,
- 0x1a67,
0x1da33,
- 0x1ab1,
- 0x11c39,
+ 0xe0107,
+ 0x0bc0,
0x11c3e,
- 0x0e3a,
- 0xabe7,
+ 0xe01c1,
+ 0x1daae,
+ 0x0fa1,
0x11c95,
- 0x11233,
- 0xa8ee,
- 0xaa2e,
+ 0xa671,
+ 0x1c36,
+ 0x1b71,
0x1b80,
- 0x11a59,
- 0xfe04,
- 0xe01c2,
- 0x1da34,
+ 0x033c,
+ 0x20d5,
+ 0x116ae,
0x1da54,
- 0x10f4b,
+ 0x0819,
+ 0x1e01f,
0x0301,
- 0x16b30,
- 0x11a91,
- 0x16af3,
+ 0x119dc,
+ 0x11726,
+ 0x031c,
0x17b8,
0xe015b,
- 0x0d63,
- 0x112e3,
+ 0x1dd0,
+ 0x0f9e,
0x0f94,
0x0f7f,
0x11d32,
0x11a8b,
0x1dda,
- 0xa9be,
- 0x1cf42,
- 0x119d7,
- 0x1ddd,
+ 0xe017a,
+ 0x116b6,
+ 0x11c9b,
+ 0x0f8e,
0x11720,
- 0x11039,
- 0x081c,
+ 0xaa7d,
+ 0x10f82,
+ 0xa9b6,
0x0744,
- 0xe0140,
- 0x09c1,
- 0x11231,
- 0x110ba,
+ 0x11f01,
+ 0x16f73,
+ 0x11632,
0x0e38,
- 0x110b4,
- 0x119da,
+ 0x0bcc,
+ 0x11f37,
+ 0x07f1,
0x0340,
- 0x0ecb,
+ 0x116b3,
0x11002,
- 0x2dff,
- 0x0331,
+ 0x1e946,
0x1cf1d,
- 0x103d,
+ 0x1da49,
0x1da2e,
- 0x1037,
- 0x1ab6,
- 0x0337,
+ 0x1b3e,
+ 0xe010a,
+ 0x09e2,
0x1cf2d,
- 0x11a90,
- 0x11d3c,
+ 0x0b03,
+ 0x094f,
0x11373,
- 0x1133e,
+ 0x13449,
+ 0x11838,
0xaa36,
- 0x20e4,
+ 0x0ccc,
0xe01b0,
0x07ad,
0x1df1,
0x17cd,
- 0x11237,
+ 0x13455,
0x0ae2,
- 0x11ca5,
- 0x07ef,
- 0x1073,
- 0x11340,
- 0x081d,
- 0xe018f,
- 0x17c7,
- 0x1aba,
- 0x1933,
+ 0x1cf3c,
+ 0x1cf27,
+ 0x16f85,
+ 0x1e00a,
+ 0x11c9f,
+ 0x1d168,
+ 0x119de,
+ 0x11932,
+ 0x1dc0,
0x110b0,
- 0x11a56,
- 0x1da03,
- 0xe01cd,
- 0x0367,
- 0x036d,
+ 0x1e948,
+ 0x1da27,
+ 0x10378,
+ 0x0310,
+ 0x0df2,
0x11038,
- 0x11830,
+ 0x114b4,
0x093a,
0x1ce0,
- 0x1c32,
- 0x0c3f,
- 0x1da50,
+ 0x094c,
+ 0x16f64,
+ 0xa8ec,
0x111bf,
- 0x2df7,
- 0x1cda,
- 0x1ba2,
- 0x0b02,
- 0x0735,
+ 0x11133,
+ 0x1bec,
+ 0x1da35,
+ 0xa94d,
+ 0x1cf00,
0x032f,
- 0xe014c,
+ 0xa928,
0x05c7,
- 0x20de,
- 0x1bee,
- 0x0599,
- 0xe0114,
- 0xa94d,
- 0x11a34,
- 0x0598,
- 0xe01d7,
- 0x081f,
+ 0x1a19,
+ 0x0354,
+ 0x11942,
+ 0x1cf34,
+ 0x07b0,
+ 0x0afa,
+ 0x1c32,
+ 0x1da0d,
+ 0x1cf25,
+ 0x11d8b,
0x116b4,
- 0x1e01c,
- 0x10ae6,
+ 0x1ac7,
0xa9bc,
+ 0x1d18a,
0xfe21,
- 0x20e8,
0xe0183,
- 0x0c62,
+ 0x07ac,
+ 0x13450,
0xe012d,
0x119d6,
- 0x07ae,
+ 0x1de1,
0x0cbe,
- 0x1da44,
- 0x1cf0c,
- 0x089e,
- 0x1a7c,
+ 0x065b,
+ 0x0316,
+ 0x1a59,
+ 0x1e004,
0xa670,
- 0x11a05,
- 0x06ed,
- 0x1cf1b,
- 0x20d7,
- 0x16f5a,
+ 0x1da4b,
+ 0x17dd,
+ 0x1e008,
+ 0xe0191,
0x0f18,
- 0x085b,
- 0x119d2,
- 0x09be,
- 0x11a38,
- 0x17c6,
- 0x0cd6,
- 0x1dee,
- 0x17d3,
- 0x1a1b,
+ 0x1143f,
+ 0xe0190,
+ 0xabe3,
+ 0x1da4d,
+ 0x0cd5,
+ 0x0dda,
+ 0x0d63,
+ 0x0e35,
+ 0x1cf1e,
+ 0x1da1e,
0xe01e8,
- 0xe01ab,
- 0x1ac6,
- 0x2de1,
- 0x17d2,
- 0x11a99,
+ 0x114bf,
+ 0x0746,
+ 0x1cd1,
+ 0x1da75,
+ 0x1e2ec,
0x0596,
- 0x08f1,
- 0x11cb3,
+ 0x1dfa,
+ 0x0334,
+ 0x16f77,
0x09e3,
- 0x0b43,
- 0x0f7c,
+ 0xe019f,
0x17ba,
- 0x1d185,
+ 0x0ac1,
0x1de3,
0x1e130,
+ 0x1ba1,
0xe01a8,
- 0xa8b9,
- 0x1939,
- 0x0f71,
- 0x11728,
- 0x116ae,
+ 0x1ac3,
+ 0x11c38,
+ 0x111b3,
+ 0x0357,
+ 0xe012a,
0x116ac,
- 0x0ce3,
- 0x1c2c,
+ 0x0f76,
0x119e0,
- 0xe0106,
- 0x1b41,
- 0x2df9,
- 0x033e,
+ 0x1a72,
+ 0x0fa2,
+ 0x1772,
+ 0x05b3,
+ 0x1df7,
0x11cb6,
- 0xfe29,
0x1da63,
- 0x1ce6,
+ 0x16f70,
0x1cf8,
- 0x2def,
- 0x1da32,
- 0x16f78,
- 0x0b4c,
- 0xa950,
- 0x0611,
+ 0x0747,
+ 0x112e4,
+ 0x1e8d3,
+ 0xaa31,
+ 0x0cc3,
+ 0xfe0d,
+ 0x11a37,
0x1dcb,
0x0317,
- 0x1928,
+ 0x1dc8,
0x1c2b,
- 0x09cc,
- 0x17c4,
- 0x0f99,
- 0x119d5,
+ 0x0eba,
+ 0x085a,
+ 0x11835,
+ 0x036c,
0x05af,
- 0x108b,
- 0xe01da,
- 0xe01d8,
+ 0x1143b,
+ 0x1da10,
+ 0x11c9e,
0xa8e1,
- 0x11832,
- 0x0591,
+ 0x035c,
+ 0x1b03,
0x0366,
0x05c4,
- 0x10f50,
- 0x1d17d,
- 0x10a05,
+ 0x1cf0d,
+ 0x11a8a,
+ 0xe01c8,
0xe01a9,
0x06e1,
- 0x0319,
- 0x0e31,
- 0x06df,
- 0x20e7,
+ 0xfe24,
+ 0xa926,
+ 0xa824,
+ 0xa92d,
0x111bc,
- 0x081e,
- 0x1072,
- 0x1da75,
+ 0xabea,
+ 0x0afc,
+ 0x1ded,
+ 0x065a,
0x0952,
- 0xe01d0,
- 0x1da27,
- 0x115c0,
- 0x1e009,
- 0x0334,
- 0x11127,
+ 0x1da5d,
+ 0x0956,
+ 0x1ce1,
+ 0x11933,
+ 0x1d167,
0xa69f,
+ 0x0d3e,
0x110b5,
- 0xe0196,
- 0x11073,
+ 0x116b2,
0x1e017,
- 0x08d2,
+ 0xe013e,
+ 0x1d180,
0x1da67,
0xaaeb,
- 0x0abe,
0x1dd1,
+ 0xaab8,
0x1cf22,
- 0x20dc,
- 0x0ae3,
+ 0x2cf1,
+ 0x06d7,
0x1930,
- 0x20e9,
+ 0x1da34,
0x0326,
0x1032,
- 0x0f76,
- 0xe01ef,
+ 0x1be7,
+ 0x09c4,
0x1da57,
- 0x108a,
- 0x0a48,
+ 0x1136a,
0x1daa1,
- 0x08f9,
- 0x0d3f,
+ 0xe0179,
+ 0x0cc1,
+ 0x11129,
0x10f83,
- 0x11ca4,
- 0x11368,
- 0x05b2,
- 0x0acd,
- 0xa67b,
- 0x11130,
- 0x1da0c,
- 0x11001,
+ 0x1034,
+ 0x0a82,
+ 0xa951,
+ 0x1344b,
+ 0x2d7f,
+ 0x09c7,
+ 0x11f39,
+ 0x11f34,
0x16f5b,
- 0x1bf2,
- 0x0f90,
+ 0x0bbe,
+ 0x031a,
0x11d8e,
- 0x1da11,
- 0xe01db,
- 0x11344,
- 0x1da4f,
- 0x1e00c,
+ 0x1e949,
+ 0x1ab6,
+ 0x1b40,
+ 0x1d16d,
+ 0x0d82,
+ 0x1134c,
0x033f,
- 0x11369,
0x11d3f,
- 0xa928,
- 0xe0142,
+ 0x0dd6,
+ 0x11445,
0x1a58,
- 0x16f65,
- 0x11d93,
- 0x11a36,
- 0x16f80,
- 0x309a,
- 0x036c,
- 0x1a73,
- 0x1112b,
- 0x1a5e,
+ 0x08de,
+ 0x1ac2,
+ 0x1b34,
+ 0x11ef4,
+ 0x11d35,
+ 0xe0195,
+ 0x1c37,
+ 0xa9e5,
+ 0xa980,
+ 0xe0185,
0xe018e,
- 0x119df,
- 0x1dc0,
+ 0xa8ba,
+ 0x193b,
0x1da3b,
- 0xe0187,
- 0x11c93,
- 0x0d4a,
+ 0x094b,
+ 0x10f48,
+ 0x0d3c,
0x1dc9,
- 0x1cf37,
0x11046,
- 0x2df1,
- 0x11633,
+ 0x1926,
+ 0x05b0,
+ 0x0c55,
0x11c3c,
- 0x0304,
0x08e6,
+ 0x0617,
0xe0109,
- 0xe0181,
0x1e134,
0xfe2c,
- 0x1cd8,
- 0x0324,
- 0x081b,
- 0x1da1b,
- 0x16af0,
- 0xaab0,
- 0x05ac,
+ 0xabe6,
+ 0xfe0f,
+ 0x1df6,
+ 0x1ac9,
+ 0x103c,
+ 0x093c,
+ 0xe0154,
+ 0x0ddb,
0x1cf13,
- 0x111cf,
+ 0x114c2,
0x20ea,
- 0x0fa1,
+ 0xe01de,
0x06ec,
- 0x1a77,
- 0x112e1,
- 0x1beb,
+ 0x105f,
+ 0x1d16f,
+ 0xfe27,
0xe01c5,
- 0xe0167,
- 0x16f77,
- 0x0afa,
- 0x1ac7,
+ 0xe0182,
+ 0x05b5,
+ 0xe0104,
+ 0xa9be,
0x1e002,
0x0cbf,
0x1886,
- 0xe0169,
- 0x0fab,
- 0x0a51,
- 0x10a3f,
+ 0x1b82,
+ 0x0fc6,
+ 0x032a,
+ 0x0670,
0x0981,
0x0595,
- 0x05aa,
- 0x06db,
+ 0x08df,
+ 0x08ca,
0x1715,
- 0xa8bc,
+ 0x0b41,
0x0658,
- 0x11a37,
+ 0x1dc2,
0x065c,
- 0x1da46,
+ 0xe0130,
0x1bac,
- 0xe011b,
+ 0x1c24,
+ 0x20de,
0x111bd,
- 0x1133c,
- 0x08f0,
- 0x08cf,
- 0x20d6,
- 0x16f52,
- 0x1ced,
- 0xe0127,
- 0x0d82,
+ 0xa8b4,
+ 0x0486,
+ 0x0302,
+ 0xe0102,
+ 0x1145e,
+ 0x1da3d,
+ 0x1cf11,
0xe0151,
- 0x05bd,
- 0x07a7,
+ 0xe01b4,
+ 0x05b7,
0x1ab4,
- 0x1712,
- 0x11d95,
- 0x0d57,
+ 0x1ba2,
+ 0x1d1ad,
+ 0x1182d,
0x1d18b,
- 0x11d3a,
- 0x0dd9,
- 0x1e014,
- 0x11ef6,
- 0x115bd,
+ 0x17bd,
+ 0x1cf1f,
+ 0x0ac9,
+ 0x11ca7,
+ 0x1deb,
0x1d17b,
- 0xa8e5,
- 0x05a0,
- 0x0fa7,
- 0x089f,
- 0x08fa,
- 0x10ae5,
+ 0x1da68,
+ 0x0ecc,
+ 0x1c30,
+ 0x116b5,
+ 0xa8e7,
+ 0x1112a,
+ 0x11a3d,
0x1136b,
- 0x11181,
- 0x11070,
- 0x16f87,
- 0x1143e,
- 0x0b01,
+ 0x05c5,
+ 0x11363,
+ 0x08f6,
+ 0x1ab0,
+ 0x1163d,
0x0c82,
- 0x1da0b,
+ 0x1cf40,
0x0f3f,
0xe0100,
0x0dd3,
- 0x0fb7,
- 0xe0182,
+ 0x1035,
+ 0x1a76,
+ 0x1daa4,
0x0314,
- 0x0d42,
- 0x08e1,
- 0x0b63,
+ 0x10f46,
+ 0x16f79,
0xe0159,
- 0xaa4d,
- 0x06dc,
- 0x1d166,
- 0xe0155,
- 0x1da26,
+ 0x0f9c,
+ 0xe013c,
+ 0x1183a,
+ 0x1e000,
+ 0x1da41,
+ 0x11a47,
0x0733,
- 0x0d4d,
- 0x16f62,
- 0x108c,
+ 0x1da60,
+ 0x11440,
0x1b72,
0x07af,
+ 0x0f73,
0xa827,
- 0x089d,
- 0x1cde,
- 0x1a79,
+ 0xe01e9,
+ 0x11a96,
0x1e012,
- 0x094f,
- 0x115be,
- 0x10f4c,
+ 0x11830,
+ 0x1da46,
+ 0x2de6,
+ 0x1cdb,
0x0616,
0xfe01,
- 0x115b8,
0x11300,
0x0951,
- 0x1b6e,
- 0x1dcd,
- 0x1e004,
- 0x08d8,
- 0x11631,
+ 0x0abc,
+ 0xaa29,
+ 0x1931,
+ 0x1da17,
+ 0x1a6d,
0x11723,
- 0x1cf16,
- 0xfe2e,
- 0x1c2f,
- 0x064f,
- 0xaaec,
- 0x08d4,
- 0x11c31,
- 0x0bc0,
- 0xe019e,
- 0x11d34,
- 0x0746,
- 0xe01d5,
- 0x11caf,
- 0x0fa8,
- 0x1b44,
- 0x1de8,
+ 0x10f4a,
+ 0xe011e,
+ 0x06e4,
+ 0x0343,
+ 0x1cd2,
+ 0x20d9,
+ 0x1163e,
+ 0x05a8,
+ 0x1122e,
+ 0x1de0,
+ 0x103e,
+ 0x102d,
+ 0x1da0b,
+ 0xaac1,
+ 0x16f7c,
+ 0x20da,
+ 0xa948,
0xa67a,
- 0x1cf2a,
- 0x11000,
- 0xe0103,
- 0x06d7,
- 0x030c,
- 0x1ddf,
- 0x11a3e,
+ 0x1cf23,
+ 0xaa35,
+ 0xa8bc,
+ 0x1da55,
+ 0xe01b3,
+ 0x16f57,
+ 0x10a05,
0x1172a,
+ 0x1a77,
0x116b1,
- 0x1de1,
- 0x11102,
- 0x1d189,
- 0xfe24,
- 0x0983,
- 0xe012a,
- 0x17ce,
+ 0x1dc1,
+ 0x1cf06,
+ 0x0a75,
+ 0x16f75,
+ 0x11d45,
+ 0x1b3c,
+ 0x1037,
0xe01be,
- 0xabea,
- 0x11c34,
- 0x082d,
- 0x1e8d4,
- 0xe0121,
- 0x1baa,
+ 0xe01a5,
+ 0x11833,
+ 0x0954,
+ 0xfe0b,
+ 0x16f6f,
+ 0x10eff,
0x064e,
- 0x1df0,
- 0x05b3,
- 0x0afb,
- 0x08ec,
+ 0x0320,
+ 0x1dcf,
+ 0xfe29,
+ 0x09be,
0x0f35,
- 0x1b35,
+ 0x0cd6,
0x0489,
- 0x08cc,
+ 0x0d4a,
0x17b7,
- 0x2df0,
0x1dfc,
- 0x111b3,
+ 0xabe8,
+ 0x1dce,
0x1b6c,
- 0x0ecc,
- 0xe019a,
- 0x0a41,
- 0x1d16e,
- 0x0d62,
- 0xe010a,
- 0x032d,
- 0x059f,
- 0x1da59,
- 0x1a56,
- 0xe0173,
+ 0x0ddf,
+ 0x16f90,
+ 0x11633,
+ 0x11a94,
+ 0xa94f,
+ 0x11837,
+ 0x0d00,
+ 0x1d171,
+ 0x108b,
+ 0x0732,
+ 0x11a99,
0x1d186,
- 0x11cb4,
+ 0x0303,
0x10377,
- 0x11a3c,
- 0x0fae,
+ 0x114b3,
+ 0x1e015,
0x0f9f,
- 0x11235,
+ 0x0acd,
0xa8c1,
- 0xabe8,
+ 0x1daa3,
0x11c98,
- 0x112e4,
+ 0x115ba,
0xe017b,
- 0x11a5b,
- 0x1dc3,
- 0x1acd,
- 0xa8c2,
- 0x16f69,
- 0x1dde,
- 0x0fb2,
- 0x11942,
+ 0x0bc7,
+ 0x11368,
+ 0x08e7,
+ 0x0ae3,
+ 0x0c4c,
+ 0x1cf37,
+ 0x1cf3d,
+ 0x112e3,
0x1bf1,
- 0x1cf21,
- 0xe0145,
+ 0x112e2,
+ 0x1d170,
+ 0xa9b3,
0x0362,
- 0x114bf,
0x0f84,
0xe013f,
0x0483,
- 0x11835,
- 0x1732,
+ 0x05b2,
+ 0xe0160,
0x11cae,
0x10f4f,
+ 0x16f61,
0xaaef,
- 0x11041,
- 0x1da0e,
+ 0xe01d8,
0x11a06,
- 0x05c2,
- 0x1143b,
- 0x2cef,
- 0x1cf0d,
+ 0x0339,
+ 0x11636,
+ 0x114b2,
+ 0x11c2f,
0x0b3e,
- 0x11ca2,
+ 0x1163a,
0x10f49,
- 0xa8e4,
- 0x0650,
- 0x0e36,
- 0xe01a4,
+ 0xa8ea,
+ 0x0c41,
+ 0x0655,
+ 0x11234,
0x032c,
- 0x11c9a,
- 0xe0172,
+ 0xe01af,
+ 0x1d17f,
0x0d3b,
- 0xa824,
+ 0x1da23,
+ 0xfb1e,
0x0ac2,
0x1bad,
- 0x0c4b,
+ 0x1163c,
0x0f95,
- 0x1714,
+ 0xa8bf,
0x1cf28,
- 0x0fb6,
+ 0xe0139,
0x10f85,
- 0xaaf6,
- 0x07b0,
+ 0x1abb,
+ 0x1da29,
0x1cf4,
- 0x1cd7,
- 0x11c33,
+ 0x06e8,
+ 0x1e8d1,
0x0b3c,
- 0xaabe,
+ 0xe011c,
0x1e013,
- 0x1cf43,
- 0x16f5d,
- 0x0ec8,
- 0x0dcf,
- 0x1b00,
- 0x1163d,
+ 0x1ace,
+ 0x05ab,
+ 0x10ae6,
+ 0x20e1,
+ 0x1cf3f,
+ 0x1dfb,
0x08cd,
- 0xe0133,
- 0x1a1a,
+ 0x11c36,
+ 0x073b,
0x082a,
- 0x1ac0,
+ 0x17b6,
+ 0x0e48,
0x20ee,
- 0x0dde,
- 0x17c5,
- 0x115bc,
- 0x0349,
+ 0x11937,
+ 0x1cdf,
+ 0xe0162,
0x1cf3a,
+ 0x08d9,
0x11637,
- 0x1cdd,
+ 0x2dfb,
0xe018c,
- 0x0fb0,
- 0x114be,
- 0x094b,
- 0x119d3,
+ 0x1df9,
+ 0x11073,
+ 0x135f,
0x08d7,
0x1773,
- 0x302b,
- 0x0f81,
+ 0x08e0,
+ 0x16af3,
0x0610,
- 0x1cf2b,
+ 0xe019c,
+ 0x0901,
0x1e018,
- 0x1171d,
+ 0x1e027,
0x1da2c,
- 0x11367,
+ 0x0b43,
0x180c,
- 0xe01a5,
+ 0x1753,
0x114b1,
0x115b2,
- 0x1daa5,
- 0x1134c,
- 0x0bd7,
- 0x1dd8,
- 0xe0189,
- 0x1cf09,
+ 0xabe7,
+ 0x031d,
+ 0x0c01,
+ 0x111b4,
+ 0xe01e2,
+ 0x08f5,
0x11cb5,
0x0cbc,
- 0x0dd6,
- 0x082b,
- 0xe0110,
+ 0x1a1a,
+ 0x1da14,
+ 0x1dc7,
0x1a18,
- 0xfb1e,
- 0x0949,
+ 0x0d62,
+ 0x0742,
0x1da58,
0x111b9,
0x11a35,
- 0x08ff,
- 0x11436,
- 0x11c36,
+ 0x115b9,
+ 0x0369,
+ 0x05a6,
0xa8f0,
+ 0xe0169,
0x116ab,
- 0x031a,
- 0x05ba,
- 0xabe3,
- 0x110b8,
- 0x0bbe,
+ 0x0ecb,
+ 0x0599,
+ 0x1da59,
+ 0x2dec,
0x11c99,
- 0x1ba9,
- 0xa983,
+ 0x0358,
+ 0x11128,
0xa8b5,
- 0x1ac9,
+ 0x1cf17,
0x16af2,
- 0x036e,
- 0x1b3d,
- 0xfe0f,
- 0x1cf30,
- 0xe014b,
+ 0x1133c,
+ 0x0711,
+ 0x11369,
+ 0x1a70,
+ 0x1062,
0xa94e,
- 0x1122d,
+ 0x1da11,
+ 0x059c,
0x0fb9,
0x11d42,
- 0x11a51,
- 0x1ac4,
+ 0xa92a,
0x11d91,
- 0x0cc8,
+ 0x1aba,
0x1a6b,
+ 0x1122c,
0xe0136,
- 0x112e9,
- 0x17c9,
- 0x16f92,
- 0x11a07,
+ 0x1086,
+ 0x1067,
+ 0xe01a2,
+ 0x0afd,
0x1da15,
- 0x1e010,
- 0xe01df,
- 0x1b04,
- 0xe0146,
- 0x11938,
- 0x116ad,
- 0x11c94,
- 0xa679,
+ 0x16f83,
+ 0x1da2a,
+ 0x1cf29,
+ 0x1da28,
+ 0x1b70,
+ 0x17b4,
+ 0x0ebb,
+ 0x0947,
0x11371,
- 0x05c5,
+ 0x1a1b,
0x0361,
- 0x10f47,
+ 0x11d34,
0x1cd4,
- 0xe0143,
- 0x1e029,
- 0x1e2ec,
+ 0x1cf3e,
+ 0x11935,
+ 0x11130,
0x1a5b,
0x11134,
- 0x05bf,
- 0x0355,
- 0x102c,
+ 0xe0149,
+ 0x11446,
+ 0x0363,
0xe0180,
- 0x1cf34,
+ 0xfe0c,
0x11c35,
+ 0x0eb6,
0x0fa4,
- 0xa825,
- 0x1dcc,
- 0x2de7,
+ 0x0fa0,
+ 0x08ff,
0x114ba,
- 0x05b9,
- 0x0f7d,
+ 0x11439,
+ 0xe0170,
0x0d40,
0xe015f,
- 0x1183a,
+ 0x06dc,
0x111c9,
0x0c48,
+ 0x1734,
0x1da43,
- 0x0323,
- 0x20d2,
+ 0xaa2c,
0x0ecd,
- 0x0333,
- 0x1b3a,
- 0x1be8,
- 0x18a9,
+ 0xe01b1,
+ 0x1e023,
+ 0x16f60,
+ 0x089d,
0x0e4d,
+ 0x07ee,
0x0312,
- 0xe01d2,
- 0x1da08,
+ 0xa8c4,
0x034c,
0x1103c,
0x0829,
- 0xe012c,
+ 0x1cf42,
0x1daa2,
0x11729,
- 0x16f81,
+ 0x0957,
0x119d1,
- 0x11ca3,
+ 0x1dc6,
0x1cf08,
- 0x0ac3,
- 0x11838,
+ 0x1abf,
+ 0x059e,
+ 0x0d81,
0xe01d3,
0x1da09,
- 0x0f7e,
+ 0x1d17d,
0x112e5,
- 0x0c02,
+ 0x11d90,
0x1e01e,
- 0x1cf9,
0x1e135,
- 0x1b42,
+ 0x030f,
0x110b2,
- 0x0659,
+ 0x111ce,
+ 0x17c6,
0xa8e3,
0x16f66,
0x0a3e,
- 0x1bef,
- 0x0732,
- 0xe011d,
+ 0x1e132,
+ 0xe0155,
+ 0x1e4ee,
0x07ab,
- 0x2de3,
- 0x05bb,
- 0xaab3,
- 0xa9b3,
+ 0x20ed,
+ 0x0963,
+ 0xe01d0,
+ 0xe01bf,
0x08d3,
- 0x16f84,
- 0x1e028,
- 0x08f6,
+ 0x1cde,
+ 0x1ba4,
+ 0x0ce3,
0x11437,
- 0x114b0,
- 0xe010d,
- 0x08e7,
- 0xe0186,
+ 0x0b02,
+ 0x0c40,
+ 0x08f4,
+ 0x11f38,
0x1088,
- 0x0d81,
- 0x0d03,
- 0x073c,
- 0x11374,
- 0x036f,
+ 0xa950,
+ 0x1bee,
+ 0xa881,
+ 0xe01a0,
+ 0x0900,
+ 0x1e8d6,
0x1171e,
- 0x0b3f,
0xe01b5,
- 0x1da2d,
+ 0x05ac,
+ 0xe0125,
0x20ef,
- 0x11c9c,
- 0x2deb,
+ 0x05b6,
+ 0xe01a7,
0x11d8d,
- 0x1063,
- 0x11c9b,
- 0x1daa6,
+ 0xe017c,
+ 0x0ccb,
0x1b3f,
+ 0x20eb,
0x0a3c,
- 0x0740,
+ 0xe0157,
0x1a57,
- 0x1d244,
+ 0x1d1ac,
0xa8ef,
- 0xe016e,
+ 0x0598,
0x112e0,
- 0x1da29,
- 0x20df,
+ 0xe012b,
+ 0x0f80,
0x1ddc,
- 0x1934,
- 0x0e4e,
+ 0x034b,
+ 0x1a68,
0xa6f0,
0x059b,
0x1b81,
- 0x11636,
+ 0x16b32,
0x0faa,
0x109c,
0x034d,
- 0x1da45,
- 0x1cf3f,
- 0x16f6e,
- 0x10a03,
+ 0xe010c,
+ 0x0319,
+ 0x1925,
+ 0x11a3b,
0x031b,
- 0xe014a,
- 0x11a03,
+ 0x1a64,
+ 0x08d4,
0xa677,
0x0b62,
- 0x1e003,
- 0x193b,
+ 0x11045,
+ 0x0acb,
0x1112f,
- 0x0dca,
- 0x1885,
- 0xa9b7,
- 0x11c30,
+ 0xe01d4,
+ 0x1da0a,
+ 0x115af,
+ 0x0613,
0xaaf5,
- 0x0c01,
- 0x0f8f,
- 0x1103e,
+ 0x08f1,
+ 0x11a56,
+ 0x0bbf,
0xaa4c,
- 0x1e947,
+ 0x1037a,
0x1dff,
- 0xe0175,
- 0x2df5,
+ 0x0abe,
+ 0x302e,
0x1b39,
- 0x1da14,
- 0x1136c,
- 0xe01de,
- 0x302a,
- 0x2de5,
- 0xe01b9,
- 0x1a6d,
- 0x1cf23,
- 0x2dfb,
+ 0x1da9d,
+ 0x1a6a,
+ 0x11ef6,
+ 0xe01aa,
+ 0x112ea,
+ 0x1e01c,
+ 0x1039,
+ 0x05b8,
+ 0x11c34,
+ 0x20db,
0x11230,
0x0c83,
- 0x0bc6,
- 0xe0150,
- 0xe016f,
- 0x193a,
- 0x0e39,
- 0x1068,
- 0xe017f,
- 0x10d27,
- 0xe01a3,
- 0x20e5,
- 0x0afc,
- 0x1cf07,
- 0x1da40,
+ 0x1036,
+ 0x0948,
+ 0x119db,
+ 0xe01ed,
+ 0x1c31,
+ 0x10a3f,
+ 0x1ab5,
+ 0x11d94,
+ 0xa983,
+ 0x0ccd,
+ 0x17c4,
+ 0x11931,
+ 0x11f42,
0x1c28,
- 0x0cc3,
- 0x0954,
- 0xabec,
+ 0x1da32,
+ 0x11145,
+ 0x302a,
0xe0135,
0x0ac8,
0x0cc7,
- 0x1ac3,
+ 0xe01ad,
0x1da00,
0x1b37,
- 0x0e35,
+ 0x036f,
0x11d43,
- 0xe01ee,
- 0x1143d,
+ 0x116ad,
+ 0x11ef5,
0xa8ff,
- 0x2cf1,
- 0x1cf3d,
- 0xa82c,
+ 0x1da19,
+ 0x030a,
+ 0x09cc,
0x10eac,
0x11d8c,
0x11a0a,
- 0x0dd0,
- 0x20d9,
+ 0xaab4,
+ 0xfe2f,
0x0ac0,
0xe0194,
0x065f,
- 0x11940,
- 0xaa31,
- 0x0ce2,
- 0xe0190,
+ 0x11a07,
+ 0xe015a,
+ 0xe0173,
+ 0x1c27,
0x17c8,
- 0x10f4a,
- 0x2dfd,
- 0x0ac9,
- 0x11080,
- 0xa671,
- 0x1193c,
+ 0x0820,
+ 0x065d,
+ 0x0bcb,
+ 0xe01dd,
+ 0x11343,
+ 0x1e009,
0x0941,
- 0x0c3c,
+ 0x1752,
+ 0x1ce4,
0x0329,
- 0x11d8a,
- 0x0fb3,
- 0x17b4,
- 0x1a5d,
+ 0x1713,
+ 0xe0118,
+ 0x119da,
+ 0x1da6a,
0x08f2,
- 0x1df6,
- 0x08d5,
+ 0x0f71,
0x16f51,
+ 0x089e,
0x2df8,
- 0x302c,
0x10a0e,
- 0xe01c0,
- 0x2cf0,
- 0x16f55,
- 0x1de7,
- 0x10f48,
+ 0x2de4,
+ 0xaa2a,
+ 0xe0192,
+ 0x0dd2,
+ 0x0c81,
+ 0xe01c7,
0x10a38,
0xe0176,
- 0x16f60,
+ 0x20e9,
0xe019d,
- 0x1cd5,
- 0x0d44,
- 0x111ce,
- 0x0bbf,
- 0x1cf44,
- 0x0345,
- 0x11a96,
- 0x1931,
- 0xe01c1,
- 0x116b5,
+ 0x20e7,
+ 0x032e,
+ 0x1e01d,
+ 0x1cf24,
+ 0x0731,
+ 0x0ac4,
+ 0xe017d,
+ 0x16f7b,
+ 0x1c34,
+ 0x115b5,
0x0306,
- 0x08ea,
+ 0x16f76,
0x0bc8,
- 0x0fba,
+ 0x061a,
0xa949,
- 0x0fa6,
- 0x0bca,
+ 0x08f0,
+ 0x11cb2,
0x1133f,
- 0x11301,
- 0x0738,
- 0x1e944,
- 0xa672,
+ 0x111b5,
+ 0x11344,
+ 0x082d,
+ 0x1dd3,
+ 0x1d172,
0xe010b,
- 0x114c1,
- 0xfe2a,
- 0x1daa9,
- 0x0fad,
- 0x11ca9,
- 0x0bc1,
- 0x1ac8,
- 0x1163a,
+ 0x2df6,
+ 0x06e0,
+ 0x1107f,
+ 0x16f74,
+ 0x11d47,
+ 0x11943,
+ 0x16b30,
0x11a01,
0x0d4b,
0xaa7b,
- 0xe012b,
- 0x0823,
- 0x0ccc,
- 0x16f56,
+ 0x1da22,
+ 0xe01ec,
+ 0x13447,
+ 0x1cf0b,
+ 0x11c9a,
0x2dfa,
- 0x030a,
+ 0xe01c2,
0x11724,
- 0x114c3,
- 0x08ed,
- 0x115b4,
- 0x0487,
- 0x0903,
- 0x1dc2,
+ 0x0485,
+ 0x11a52,
+ 0xe01cd,
+ 0x1da03,
+ 0xa8bb,
0x11722,
- 0x16f83,
- 0x11d40,
- 0x064b,
+ 0x11930,
+ 0x06ed,
+ 0x0615,
0x1daa8,
+ 0xe0132,
0x1cf33,
0x11042,
- 0x05b4,
+ 0x1cd8,
0x1a17,
- 0x0352,
- 0x11c3f,
- 0x1112a,
+ 0xe0171,
+ 0x089f,
+ 0x119dd,
0x1da5e,
- 0x11c3b,
- 0x17d1,
- 0x1ab0,
- 0x11a5a,
- 0x08e4,
+ 0x1d1aa,
+ 0x1da24,
+ 0x0b01,
+ 0x1a5e,
+ 0x11d3d,
0xe0165,
- 0x11cac,
+ 0x0367,
0x110b6,
- 0x1da49,
+ 0x11074,
0x1cf38,
- 0x1cf32,
- 0x1df9,
+ 0x11237,
+ 0x1df3,
0x1de5,
- 0xa823,
- 0x114bc,
- 0x0f75,
+ 0xe0140,
+ 0xa672,
+ 0x074a,
0x10376,
+ 0x180d,
0xe01c9,
- 0xaa2c,
0x0c63,
- 0x1056,
- 0xe019f,
- 0x0eb9,
- 0x1da9d,
- 0x0a75,
- 0xaa7d,
- 0x11c9f,
- 0x0d46,
- 0x110c2,
+ 0x064c,
+ 0x1ba8,
+ 0x0f7c,
+ 0x16f55,
+ 0xe010d,
+ 0x0484,
+ 0x11caf,
+ 0xe0106,
+ 0x0318,
+ 0x119e4,
0x032b,
- 0x0350,
- 0x1e8d0,
+ 0xe016e,
0x11438,
0x116af,
- 0xa881,
- 0x0327,
- 0x1a70,
- 0x1058,
+ 0x17cf,
+ 0x1344d,
+ 0x1e4ef,
+ 0x11f03,
+ 0x1da47,
0x106d,
- 0x103e,
- 0x0748,
- 0x06e8,
- 0xa927,
- 0x17c3,
- 0x1dce,
+ 0x1ddf,
+ 0x0d47,
+ 0x0c4a,
+ 0x0a4c,
+ 0x1cda,
+ 0x0591,
0x0b56,
0x1d187,
0x0a47,
- 0x1c35,
- 0x20e2,
+ 0x10a0c,
0x0a81,
- 0x1dd0,
- 0xfe00,
- 0xe017a,
- 0x11d97,
+ 0xa8b6,
+ 0x11d95,
+ 0x0cc0,
+ 0x0a83,
+ 0x1927,
0x06d8,
- 0x1b34,
- 0x1e8d3,
+ 0xe011b,
+ 0x06d6,
0x2dea,
- 0x0df2,
+ 0x1a61,
0xe0117,
- 0x17bd,
+ 0x20e4,
0xa9b8,
0x10f84,
0x08dd,
0xe01bb,
0x1dd2,
- 0x16f75,
- 0x1e8d6,
- 0x11c38,
- 0xe01ad,
- 0x16f73,
- 0x17bf,
- 0x1a68,
- 0x0ccd,
- 0x11074,
- 0xfe0b,
- 0x2df2,
- 0x11133,
- 0x1da4b,
+ 0x1da05,
+ 0x0f87,
+ 0x1bea,
+ 0x17d1,
+ 0x11728,
+ 0x1dc3,
+ 0x114b0,
+ 0xa8b9,
+ 0x073c,
+ 0x0a48,
+ 0x094e,
+ 0xa94b,
+ 0x0fb6,
+ 0x17c1,
0x05a7,
0x1df2,
- 0x16f86,
- 0x1c2a,
- 0x1da69,
- 0x0fa3,
+ 0x0bd7,
+ 0x0d83,
+ 0x1cf3b,
0x16fe4,
+ 0x10efd,
0x0365,
- 0x1a6a,
- 0x1086,
- 0x0a03,
- 0x3099,
- 0x119de,
+ 0x089a,
+ 0x0fa6,
+ 0x1da3c,
+ 0x11c9d,
+ 0xe0114,
0x1ab7,
- 0x1da5c,
- 0x1a59,
- 0xaa29,
- 0x0303,
- 0x0bc7,
+ 0x081f,
+ 0xa8e8,
+ 0x1193b,
+ 0x0eb1,
+ 0x032d,
0x1cf2c,
- 0xe0134,
- 0x1da0d,
- 0x0ddf,
- 0x0316,
+ 0xa8e4,
+ 0xe01d7,
+ 0x059d,
0xabed,
- 0x0fac,
- 0x0d47,
+ 0x16f78,
+ 0x1b04,
+ 0x08f3,
0x11101,
- 0x0342,
- 0x1172b,
- 0xe0177,
- 0x0743,
- 0x16b32,
- 0xe0195,
- 0x1e008,
+ 0x115be,
+ 0x11d31,
+ 0x1c33,
+ 0x1cf07,
+ 0x0307,
+ 0x0651,
+ 0x1ce5,
0x1dd9,
- 0xe01c8,
- 0x1cf14,
- 0x0f87,
- 0xa926,
+ 0x115b8,
+ 0xe01ac,
+ 0x033e,
+ 0x1920,
0x08e9,
- 0xe01e9,
- 0x08cb,
- 0x10d26,
+ 0x2df9,
+ 0x16f58,
+ 0xe01d5,
0x16f6d,
- 0x16b36,
- 0x05b6,
- 0xe0123,
+ 0xe014a,
+ 0x0d4d,
+ 0x11ca0,
0x1cf0a,
- 0x1cd1,
- 0x065a,
+ 0x1ce8,
+ 0x1060,
0x11c96,
0x035e,
- 0x16b35,
+ 0xe0186,
0x115bb,
- 0xe0137,
- 0x0ac4,
- 0x0947,
- 0x1da55,
- 0x0818,
- 0xe01ec,
- 0x1123e,
- 0xe0132,
- 0x0357,
- 0x1182f,
- 0x094e,
- 0x11c9e,
- 0x11343,
+ 0x119d7,
+ 0x16af4,
+ 0x1daa9,
+ 0x0982,
+ 0x11cb3,
+ 0x1cf2a,
+ 0x11ca4,
+ 0x033b,
+ 0x135d,
+ 0x11435,
+ 0x114b8,
+ 0x09bc,
+ 0x1e005,
+ 0x11082,
0x1d1ab,
- 0x1abf,
- 0x1cdb,
- 0x05b5,
- 0xfe0d,
- 0x111cc,
- 0x1937,
- 0x089a,
+ 0x10a03,
+ 0xa8f1,
+ 0x0e4a,
+ 0x11ca2,
+ 0xabec,
+ 0x081c,
0x1ce2,
- 0x11d96,
- 0x0948,
- 0x1b82,
- 0x0cc4,
+ 0x1da0e,
+ 0x06df,
+ 0xfe22,
+ 0x1ce6,
0x1087,
- 0x1a5a,
- 0x16f67,
- 0x1c34,
+ 0x0f8f,
+ 0x11a8f,
+ 0x09c2,
0x1da4e,
- 0x1a7f,
- 0xe0138,
- 0x20dd,
+ 0x1e006,
+ 0x08d0,
+ 0x1dd8,
+ 0x1714,
0x0a40,
- 0x1ac5,
0xe0126,
- 0x1923,
- 0x11372,
- 0x11303,
- 0x11833,
+ 0x11a53,
+ 0x13451,
+ 0x1059,
+ 0x1da61,
+ 0x1e2ed,
0x1d17c,
0xa678,
- 0x0dda,
- 0x1be7,
- 0x1bc9e,
+ 0x3099,
+ 0x16f65,
+ 0xe0131,
0x0826,
- 0x1182c,
+ 0x11c3d,
0x0df3,
- 0xaa2d,
- 0x09c4,
- 0x102b,
+ 0x180f,
+ 0x1a56,
+ 0x11d8a,
0x1cd9,
0xa8e0,
- 0x1ce7,
- 0x11933,
- 0x11a8a,
- 0xe0179,
- 0x1da24,
+ 0xe0129,
+ 0x1938,
+ 0x11f00,
+ 0x0345,
+ 0x1b02,
0xa9bd,
0x11443,
- 0xaa7c,
- 0xfe27,
+ 0xa806,
+ 0xa9b9,
+ 0x1da0c,
0xe01d6,
- 0x1b73,
0x1e00f,
- 0x11129,
- 0x07ac,
- 0x1d167,
- 0x030f,
- 0x2dee,
+ 0x1932,
+ 0x13454,
+ 0x1134b,
+ 0x192a,
+ 0x0f79,
0x1a60,
- 0xa952,
- 0x1e949,
- 0x10a0d,
+ 0x0659,
+ 0x11f3a,
+ 0x1e8d5,
0x0d01,
- 0x031d,
- 0x135f,
- 0xe01e4,
- 0x11ef4,
+ 0x0734,
+ 0x11146,
+ 0xe0108,
+ 0xe0153,
+ 0x06eb,
0xe013b,
- 0x0956,
- 0x0816,
- 0x1da65,
- 0x16f6f,
+ 0x1a73,
+ 0xe0167,
+ 0x11a98,
0x0f72,
- 0x16f79,
- 0xaab4,
- 0x105f,
- 0x1d180,
- 0x1e132,
- 0x059c,
- 0xe0185,
- 0xa9b6,
+ 0x11831,
+ 0x1dcc,
+ 0x0f81,
+ 0x119d5,
+ 0x16f68,
+ 0x0f90,
+ 0x114bb,
+ 0x2dfd,
+ 0xfe00,
0x08f7,
0x1da56,
- 0xe016a,
- 0x16f7b,
- 0x034e,
- 0x1030,
+ 0xe0187,
+ 0xa9c0,
+ 0x0f93,
+ 0xa67b,
0x0344,
- 0xe0118,
- 0x0336,
- 0x1752,
+ 0x20e2,
+ 0x08fa,
+ 0x082b,
0x05a1,
0x1ba3,
- 0x08eb,
- 0x0b4b,
+ 0x1da42,
+ 0x0313,
0x11366,
- 0x11ca6,
- 0x1d16d,
+ 0x1a6c,
+ 0xe01db,
0xa929,
- 0x16f6c,
- 0x112e8,
- 0x0dd2,
- 0xe0192,
- 0x093c,
+ 0xe01e5,
+ 0x1da1b,
+ 0x116b0,
+ 0x0324,
+ 0x17be,
0x17c0,
- 0x1cf1a,
+ 0x20dd,
0x11836,
+ 0x10f50,
0x073d,
- 0x10379,
- 0x1c26,
+ 0xe01bd,
0x0dd1,
- 0x1da0f,
- 0xe01d9,
- 0x16b31,
- 0x114c2,
+ 0x1933,
+ 0x1cf1b,
+ 0x081b,
+ 0xaa43,
+ 0xe01ee,
0x115dc,
0x1de4,
- 0x1e01d,
- 0xfe25,
+ 0x0349,
+ 0x11c32,
0xe0184,
- 0x05b0,
- 0x10378,
+ 0xa953,
+ 0x20ec,
0xe0147,
- 0x17cf,
- 0x1e01b,
- 0xe01af,
- 0x0c55,
- 0x2d7f,
+ 0x1cf31,
+ 0xaa2d,
+ 0x0b47,
+ 0x08cf,
+ 0xa92c,
0x1e024,
- 0x135d,
- 0x1da35,
- 0x0313,
- 0xa92b,
- 0xe0160,
+ 0x1e01b,
+ 0x1acd,
+ 0xe0181,
+ 0xe0124,
+ 0x1a62,
0x09bf,
0x059a,
0x0d4c,
0x11727,
- 0x1daad,
0x109b,
- 0xa947,
- 0x1e2ae,
- 0x1c2d,
+ 0x115c0,
+ 0x2def,
+ 0xe010e,
+ 0x1ced,
0xaa30,
- 0xe010c,
+ 0x1baa,
0xaabf,
- 0xe01b4,
+ 0x1da18,
0x1daaf,
0x1da1a,
0x1d181,
0x1ba6,
- 0x1dcf,
- 0x06eb,
- 0x11a3b,
- 0x0953,
+ 0x1cf02,
+ 0x11ca9,
+ 0xe01ba,
+ 0x0903,
0x1cf05,
0x0abf,
- 0x05a8,
+ 0x108c,
0x115bf,
- 0x11d8b,
+ 0x0d46,
0xe0111,
- 0xe01cf,
- 0x1da05,
- 0x1c30,
+ 0x05a0,
+ 0x11c3a,
+ 0x11725,
0x0c04,
- 0x20d0,
- 0x08df,
- 0x1b01,
- 0x0fbb,
- 0x11128,
- 0x0b41,
+ 0x08d5,
+ 0x10379,
+ 0x0308,
+ 0x1e020,
+ 0x0f9a,
+ 0x17c3,
+ 0xfe06,
0x1a55,
- 0x0d3e,
- 0x08e8,
- 0x05ab,
- 0x1d16f,
- 0x1a76,
- 0x1da0a,
- 0xaa32,
- 0xe0130,
+ 0x115b0,
+ 0x111b7,
+ 0x20d4,
+ 0x16f87,
+ 0x0a03,
+ 0xe0163,
+ 0x102b,
+ 0x06e2,
0xa9bb,
0x07a9,
- 0x0739,
- 0x1b70,
- 0x10f46,
- 0x1e000,
- 0x0a83,
- 0xe018d,
- 0x11a47,
+ 0xaa4d,
+ 0x10f4c,
+ 0x11d97,
+ 0x114bc,
+ 0x2cf0,
+ 0x1ab8,
+ 0x1a67,
0x106b,
- 0x1a61,
- 0x192b,
- 0xa8ba,
- 0x11145,
+ 0x0f75,
+ 0x11348,
+ 0x1cf9,
+ 0x11070,
0x065e,
0xe0199,
0x0f7b,
- 0xe013c,
- 0xa980,
- 0x0aff,
+ 0xa679,
+ 0x11a05,
+ 0x1ab2,
0x034a,
- 0x1df8,
- 0x030e,
- 0xa8e7,
- 0xa8c0,
+ 0xa82c,
+ 0x1e136,
+ 0x10f4b,
+ 0x20d2,
0x1cf46,
0x1da9e,
0x08db,
- 0x11363,
- 0xe0115,
- 0x0faf,
- 0x08f5,
- 0x1035,
- 0x0943,
- 0x1dc4,
- 0x114c0,
- 0x08fc,
- 0x2de6,
+ 0x0f39,
+ 0x111bb,
+ 0x1da26,
+ 0x10d26,
+ 0x1e00c,
+ 0x102c,
+ 0x16f86,
+ 0xe012e,
+ 0x1e944,
+ 0x0fb7,
0x1b36,
0x0c47,
0x180b,
- 0x0899,
- 0x302f,
- 0x1da5f,
- 0x109d,
- 0x16f90,
- 0x0fb1,
+ 0x0654,
+ 0x11cad,
+ 0x08ec,
+ 0x16f6c,
+ 0x1b44,
+ 0x0ece,
0x0ddc,
- 0xe015a,
+ 0xe01e7,
+ 0xe0177,
0x1dd7,
- 0xaa35,
+ 0xe015e,
0x0b55,
- 0xa880,
- 0x1df7,
- 0x1a5c,
+ 0x0aff,
+ 0x0cca,
0x1163b,
- 0x1074,
- 0x119d4,
- 0xe0153,
- 0xe01a6,
- 0xfe02,
- 0x035c,
- 0x1cf0f,
- 0xa8eb,
- 0x0a01,
- 0x11a08,
+ 0x1b01,
+ 0x112e7,
+ 0x10a01,
+ 0x0f99,
+ 0x11a3e,
+ 0x1da01,
+ 0x1143c,
+ 0x11a97,
+ 0xe019e,
+ 0xe019a,
0x135e,
+ 0xe018b,
0x034f,
0x1193d,
- 0x0940,
- 0x16f74,
+ 0x0368,
0xaaee,
- 0x1da13,
+ 0xaa2b,
+ 0x10f47,
0x10f4e,
- 0x114b8,
- 0xe0166,
- 0x115b3,
- 0xe01c3,
- 0x11a57,
- 0x1da3d,
- 0x0b47,
- 0x0f93,
- 0x302d,
+ 0x0f91,
+ 0xe0112,
+ 0x11640,
+ 0x08ee,
+ 0x11080,
+ 0x11c33,
+ 0x16f7f,
+ 0x1dde,
+ 0x1daab,
0xe017e,
0x0945,
- 0x1cf3c,
+ 0x0593,
0x1da5a,
- 0x11446,
- 0x1932,
- 0xa948,
- 0x033b,
- 0xe012f,
- 0x0afd,
+ 0x05bb,
+ 0x0942,
+ 0x1da30,
+ 0xaaf6,
+ 0x1da50,
+ 0x16ff0,
0xa8b7,
- 0x1dd5,
+ 0x11940,
0x0360,
- 0xe01ba,
- 0x0359,
+ 0x2df5,
+ 0x073f,
0x1a78,
- 0x11c3a,
- 0x0eb5,
- 0x0339,
- 0x1b3c,
- 0x1cf25,
+ 0x09fe,
+ 0x08e5,
+ 0x17ce,
+ 0x16f52,
+ 0xfe2e,
+ 0x1c2f,
0x1182e,
- 0x11081,
- 0x1034,
- 0x119db,
- 0x11c92,
- 0x11725,
- 0x0302,
- 0x0b44,
- 0x1d171,
+ 0xe017f,
+ 0x2df4,
+ 0xe01a3,
+ 0x11631,
+ 0x07f0,
+ 0x11ef3,
+ 0x05bd,
0x1dfe,
+ 0x1133e,
0x11a02,
- 0x114b4,
- 0x11173,
+ 0xe0110,
0x0afe,
- 0x20eb,
+ 0x2dee,
0x05a5,
- 0xe01d4,
+ 0x0594,
0x1da04,
- 0x11445,
- 0x11d33,
+ 0x08ef,
+ 0xe0145,
+ 0x030e,
0x0347,
- 0x1df4,
+ 0x0c62,
0xfe09,
- 0xe01e3,
- 0x0e4a,
- 0x0eb8,
- 0x0f83,
+ 0x1133b,
+ 0x114bd,
+ 0x111b6,
+ 0x1cf10,
0x1da3e,
- 0x0e48,
+ 0xe01b9,
0x1da48,
- 0x06ea,
- 0xe0154,
+ 0x0b4d,
+ 0x1dc5,
0x0dd4,
- 0x11348,
+ 0x1e945,
0x0618,
0x0f74,
0x11043,
- 0x1929,
+ 0x1a7f,
0x08d6,
- 0x1de6,
- 0x11a52,
+ 0x1e08f,
+ 0x11c30,
0x11a8c,
0xe01ca,
0x0332,
- 0x1daac,
- 0x082c,
+ 0x16af0,
+ 0x0dde,
0x16f7a,
- 0xa94f,
+ 0x10a0f,
+ 0x20d0,
0x11362,
- 0x1da9b,
0x1e00d,
- 0x2dfe,
+ 0x1112b,
0x05a3,
- 0x116b6,
- 0x17ca,
- 0x034b,
- 0x1083,
+ 0x0a70,
+ 0x1da65,
+ 0x11a5b,
+ 0xa9b7,
+ 0x11ca3,
0x0fb8,
- 0x1a6f,
- 0x1cd2,
+ 0x1033,
+ 0x111cf,
0xe011a,
- 0x1cf1e,
- 0x16f7e,
- 0x1936,
- 0x11d90,
- 0x16f59,
- 0x1e005,
- 0x1da42,
- 0x07ee,
+ 0x0822,
+ 0x05c2,
+ 0x1733,
+ 0xe0175,
+ 0x1ab9,
+ 0xe014e,
+ 0x1e02a,
+ 0x0f3e,
0x106c,
- 0x09c8,
0x093b,
- 0x103c,
+ 0x2de5,
+ 0x17cc,
0x20e3,
- 0xe01e5,
0x1da9f,
+ 0x11938,
0x0736,
- 0x1b6b,
- 0x07aa,
+ 0x1e029,
+ 0x0d03,
0x0bcd,
- 0x1cf01,
- 0x036b,
- 0x114b5,
- 0x111c0,
- 0x0321,
- 0x1163c,
- 0xa9e5,
- 0x1a6c,
- 0x0f73,
- 0xa8e9,
- 0x085a,
+ 0x11cab,
+ 0x11039,
+ 0x1e4ec,
+ 0x1cf03,
+ 0x030d,
+ 0x1089,
+ 0x302b,
+ 0x11301,
+ 0x11131,
+ 0xa92b,
+ 0x1d17e,
0x111ca,
- 0x0eb4,
- 0x05a6,
+ 0x1e8d0,
+ 0x0650,
0x2df3,
0x08dc,
- 0x05b7,
+ 0x102e,
0xa94c,
0x0c03,
- 0x17b6,
- 0x0819,
- 0x1143c,
- 0x1d1ad,
- 0x0b48,
- 0xfe2f,
- 0xa8ea,
+ 0xaab2,
+ 0x0eb5,
+ 0xa8e2,
+ 0x0f77,
+ 0xe0138,
+ 0x1bed,
+ 0xe01cf,
+ 0x112e9,
0xe0144,
- 0x1da20,
- 0x1de0,
- 0x1037a,
- 0x05ad,
+ 0x11d33,
+ 0x1ac0,
+ 0xe01b6,
0x17c2,
+ 0x0ac5,
0x11d44,
- 0x16f85,
- 0x0ccb,
- 0x11370,
- 0x11930,
+ 0x0739,
+ 0x11839,
+ 0x1885,
0x11100,
+ 0x064b,
0x1ba5,
- 0x1e8d5,
+ 0x110b3,
0x0e47,
- 0x1069,
- 0x1cdf,
- 0xfe20,
+ 0x08d2,
+ 0x07ef,
0x0335,
- 0x11ca7,
- 0x07f0,
- 0x10a0f,
+ 0x0f86,
+ 0x1a5d,
+ 0x030c,
0xa67d,
+ 0x1d165,
0x11cb0,
0x033d,
- 0x08d9,
+ 0x1beb,
0x16f8f,
- 0x108f,
- 0x1122e,
- 0x1b6f,
- 0xe01dd,
- 0x033a,
- 0x1dc8,
- 0x16b33,
- 0xa8bd,
- 0x11d3d,
- 0x11a55,
+ 0x11a5a,
+ 0x10ae5,
+ 0x1da13,
+ 0x103d,
+ 0x1cf12,
+ 0x0e36,
+ 0x11630,
+ 0x0944,
+ 0xaab7,
+ 0x10a3a,
0x1da31,
- 0x1daa3,
- 0x1da41,
- 0x20d8,
- 0x2df6,
+ 0x1cf30,
+ 0x07f2,
+ 0x1cf09,
+ 0xe014c,
0x1cf15,
- 0x1da4c,
+ 0x0d42,
0x0946,
- 0xe0162,
- 0x1a69,
- 0x1cf17,
+ 0x1da40,
+ 0x0cc6,
+ 0x09c1,
0x06e7,
- 0x1d17f,
+ 0x0fa9,
0x1ba7,
- 0x0369,
+ 0x0cf3,
0x0341,
- 0xe01e2,
- 0x1da18,
- 0x0c42,
- 0xfe26,
- 0x1ab2,
- 0x11d31,
- 0x033c,
- 0x0d43,
- 0xe0168,
- 0xabe5,
+ 0x05ba,
+ 0x1acc,
+ 0x0bc6,
+ 0x1ddb,
+ 0x0327,
+ 0x1da2d,
+ 0xe0178,
+ 0x2dff,
+ 0x16b34,
+ 0x0bca,
+ 0x1939,
0x1be6,
- 0x1e948,
- 0x20f0,
- 0x11943,
+ 0x0fad,
+ 0x119d3,
0xa9b4,
- 0x0b03,
+ 0x11d3a,
0x0488,
0x20e0,
- 0x0d00,
- 0x119dc,
+ 0x1cf36,
+ 0x0337,
+ 0x1abe,
0x1031,
- 0x09bc,
- 0x073b,
- 0x16f58,
- 0x10f82,
- 0x1067,
- 0x035d,
- 0x1059,
- 0x0817,
- 0x1da2b,
+ 0x1dd4,
+ 0x09d7,
+ 0x1163f,
+ 0x1cf21,
+ 0x1dc4,
+ 0xfe04,
+ 0xe0189,
+ 0x036a,
+ 0x1ddd,
0x114b6,
- 0x1a7a,
- 0x0f96,
+ 0x11180,
+ 0xe016a,
0x16f6a,
0x16ff1,
- 0x0485,
- 0xe014f,
- 0x16f63,
- 0x1734,
+ 0xe0127,
+ 0x11231,
+ 0x11241,
+ 0x0656,
0xe0161,
- 0x11d45,
- 0x0bcc,
- 0x0c40,
- 0xa6f1,
- 0x1da6a,
- 0x0310,
- 0x0ddb,
- 0x1cf27,
- 0x16f7f,
- 0x0f92,
- 0x11c97,
- 0x0859,
- 0x1cf02,
+ 0x0346,
+ 0x1143a,
+ 0x1cd6,
+ 0x0949,
+ 0x1c26,
+ 0x110b1,
+ 0x11436,
+ 0x11a03,
+ 0x11367,
+ 0x1e2ae,
+ 0xfe0a,
+ 0x1e00e,
+ 0x0325,
0x1da9c,
0x1a65,
- 0x11cab,
+ 0x0983,
+ 0x11a08,
0x17b9,
- 0x1deb,
- 0xe0191,
- 0x0f9e,
- 0x16f5e,
- 0x1abc,
+ 0x0c4b,
+ 0xe0174,
+ 0x1d244,
+ 0x1344f,
+ 0x2de7,
0x1b38,
- 0x1071,
0xe013a,
+ 0x20dc,
0xe011f,
- 0x0c4a,
- 0x1da28,
- 0xabe9,
+ 0x1cf19,
+ 0x08d1,
+ 0x1e010,
0x0955,
- 0x089b,
+ 0x16f69,
0x10eab,
- 0xa92c,
- 0x1ba8,
- 0x11721,
- 0x20e1,
- 0xa69e,
- 0xa9bf,
+ 0x17c7,
+ 0x11340,
+ 0x081d,
+ 0x0328,
+ 0x1e028,
0x17bc,
- 0x059d,
+ 0xaab3,
0xe01b7,
- 0xe013e,
- 0x0e4c,
+ 0x0e4e,
+ 0x1abc,
0x1da66,
- 0x0325,
- 0x08f4,
- 0xa92d,
- 0x1927,
- 0x111b5,
- 0x1a72,
- 0x1dc6,
+ 0x1732,
+ 0xe01ae,
+ 0x1cf43,
+ 0x1d243,
+ 0x1712,
+ 0x0c42,
+ 0x0b3f,
+ 0x302d,
0xe01e6,
0x1da1c,
- 0x16b34,
0x2ded,
- 0x0a70,
+ 0x1b41,
+ 0x11cb4,
0xe0148,
- 0x0fa0,
- 0x08e0,
- 0x20ed,
- 0x0902,
- 0xe019c,
- 0x11726,
- 0xe0193,
+ 0xe0123,
+ 0x11d93,
+ 0x1072,
+ 0x1936,
+ 0x1063,
+ 0x0c56,
+ 0x11a39,
0x1e2ef,
- 0x1bec,
+ 0xe01ab,
0x17d0,
- 0x0c4c,
- 0x1cf00,
- 0x11ca0,
- 0x16f64,
- 0x094c,
+ 0x1d242,
+ 0x0359,
+ 0x1123e,
+ 0x11639,
+ 0x1b73,
0xe0152,
- 0x08ef,
+ 0x11a8d,
0x16af1,
0x035b,
0x0bc2,
0x1da12,
- 0x1e00b,
+ 0xe01da,
+ 0x11c93,
0x094a,
- 0x1143f,
0x073e,
- 0x20d4,
- 0x064c,
- 0xfe06,
- 0x09c3,
- 0x1bf0,
- 0x17b5,
- 0x1e001,
+ 0x11372,
+ 0x0d48,
+ 0x1de9,
+ 0x114c1,
+ 0x07ae,
+ 0x11a54,
+ 0x10a39,
0x11638,
- 0x11045,
- 0x1a64,
- 0x0484,
- 0x0c00,
- 0x08fe,
- 0x0f82,
- 0x0cd5,
- 0x112e2,
+ 0x2deb,
+ 0x073a,
+ 0x1cf0f,
+ 0x0fab,
+ 0x1aca,
+ 0xa8c3,
+ 0xa981,
+ 0x1ac4,
0x1e133,
+ 0xabe5,
0x1da52,
- 0x05b8,
+ 0x0e37,
0xe0105,
- 0x1d18a,
- 0xa674,
- 0x0737,
- 0x0d41,
+ 0x11357,
+ 0x0336,
+ 0x0c3e,
+ 0xe010f,
0xe0188,
- 0x0eba,
0x111cb,
0x11444,
- 0x1d1aa,
+ 0x0940,
+ 0x11cac,
0xa8ed,
0x114b7,
- 0x2de8,
- 0x0307,
- 0x0f3e,
+ 0x11832,
+ 0x0743,
+ 0x08d8,
0x1e026,
0x1da53,
- 0xe0120,
+ 0x11c3f,
0x1da06,
- 0x16af4,
- 0x1b43,
- 0x0351,
- 0x1dc1,
+ 0xe019b,
+ 0x119d2,
+ 0xaa34,
+ 0x1b00,
0x0730,
- 0x06e4,
- 0x1163e,
- 0x1938,
+ 0x13440,
+ 0x0cc4,
+ 0xe0146,
0x1c25,
- 0xa94a,
- 0x0eb6,
- 0x1134b,
- 0xe0108,
- 0x1ab5,
- 0x11234,
- 0x1ddb,
+ 0x030b,
+ 0x11a95,
+ 0x0323,
+ 0x1e00b,
+ 0x0943,
+ 0x0f8d,
+ 0x0dca,
0x10d25,
- 0x2df4,
- 0x0322,
+ 0x2de9,
+ 0x1bab,
0x115b1,
+ 0x1da2b,
0x0ebc,
- 0x16f76,
- 0xa9b9,
+ 0x1e131,
0xe018a,
+ 0x1923,
0x05c1,
- 0x11d35,
+ 0x20df,
0x1103d,
- 0xfe0c,
- 0xa676,
+ 0xa927,
+ 0x1c2e,
0x07ec,
- 0x1cf24,
0x16f82,
- 0x112ea,
+ 0xe01e4,
0x1da25,
- 0xe014e,
- 0x11630,
+ 0x0f7a,
+ 0x1cf20,
+ 0x1171d,
0x11347,
- 0x07fd,
0x112e6,
+ 0x1d188,
0x11d41,
- 0x032e,
+ 0x1068,
0x089c,
- 0x065b,
- 0xfe22,
- 0x09c2,
- 0xe01b1,
- 0x115b9,
- 0x0354,
- 0xaab2,
+ 0x11f36,
+ 0x11341,
+ 0xaa2f,
+ 0x0356,
+ 0xe0137,
+ 0x1344c,
+ 0x0fb0,
0xe016b,
- 0xaab8,
- 0xa982,
- 0x08d0,
- 0x1926,
+ 0x1df4,
+ 0x1112d,
+ 0x1de2,
0x1103b,
- 0x1cf31,
- 0xe01ce,
- 0x0898,
- 0x11a09,
+ 0x08f9,
+ 0xe01c0,
+ 0x11f40,
+ 0x119df,
+ 0x1083,
0xaa33,
- 0x1b3e,
- 0x17be,
- 0x1dca,
- 0x16f71,
- 0x0acb,
+ 0x13448,
+ 0x0fb4,
+ 0x0ac3,
+ 0xabe4,
+ 0x11a3c,
0x1134d,
0x114b9,
0x103a,
- 0x1ac2,
- 0xe01a2,
- 0xe0129,
- 0x0309,
+ 0x1da20,
+ 0x08da,
+ 0x16f56,
+ 0x309a,
+ 0x11127,
0x11a93,
- 0x1b3b,
- 0x1cf36,
+ 0x192b,
0x0f97,
- 0x1def,
- 0x11a39,
+ 0x1cd5,
+ 0x1da5f,
0x1084,
- 0x1da22,
- 0xe01a0,
- 0x0fc6,
- 0x1cf1f,
- 0xe0157,
- 0xe0107,
- 0x0f86,
+ 0x0eb4,
+ 0x11370,
+ 0x10efe,
+ 0x1069,
+ 0x111c0,
+ 0x11834,
+ 0x119d4,
+ 0x1193c,
0x1cf1c,
- 0x1daaa,
- 0xa80b,
+ 0x1928,
+ 0x17bf,
0x1da6c,
- 0x1a62,
- 0x1da1d,
- 0x1064,
- 0xe01e7,
+ 0xe0156,
+ 0x1bf2,
+ 0x0304,
0x11ca1,
- 0x0731,
+ 0x11233,
+ 0x0859,
0x0a42,
- 0x1107f,
- 0x192a,
+ 0x1c2d,
+ 0x0738,
0x0592,
- 0x0f39,
- 0x11d47,
+ 0x1b6f,
+ 0x0355,
0x0ddd,
- 0x16f5c,
- 0x0338,
- 0x1103f,
- 0x1b40,
- 0x1182d,
- 0x1aca,
- 0x1cf0b,
- 0x1ace,
+ 0x1a71,
+ 0x0bc1,
+ 0x112df,
+ 0x1344e,
+ 0x1daac,
+ 0x1e014,
+ 0x0d44,
+ 0x1df8,
0x16f4f,
0xe01e0,
- 0xe0174,
0x1da16,
- 0x0670,
- 0x0963,
- 0x11a3d,
- 0x1921,
- 0x0320,
+ 0x11721,
+ 0x0d02,
+ 0x20e5,
+ 0x115b4,
+ 0x1b42,
+ 0x1b43,
0x0b40,
- 0xe01cb,
- 0x1da01,
+ 0xe016c,
+ 0x08ed,
0x109a,
+ 0x11303,
0x1cf35,
- 0x032a,
- 0xe013d,
- 0x11341,
- 0x0c44,
- 0x1cf11,
- 0x1ce4,
- 0x0942,
- 0xe0171,
- 0x0617,
- 0xe01b3,
- 0x1d172,
+ 0x1344a,
+ 0x17c5,
+ 0x11c39,
+ 0xa66f,
+ 0x093f,
+ 0x20d7,
+ 0x05ae,
+ 0x1cf14,
+ 0x1e016,
+ 0x08eb,
0x16f53,
0x0745,
- 0x1da36,
- 0x031f,
- 0x06e2,
+ 0x0353,
+ 0x0c3c,
+ 0x0315,
0x16f54,
- 0x180d,
- 0x09d7,
- 0xe01ae,
- 0x1da1e,
- 0x1df3,
- 0x0747,
+ 0x0eb9,
+ 0x114be,
+ 0x08cb,
+ 0x16f81,
+ 0x06db,
+ 0x07a7,
+ 0x0a4b,
0x20e6,
0x1df5,
- 0x074a,
+ 0xe01a4,
0xfe23,
- 0x1da68,
- 0x1ab8,
- 0x1ce8,
- 0x1cf0e,
+ 0x1172b,
+ 0x0dd9,
+ 0x1929,
+ 0x302f,
0x064d,
- 0x08ca,
- 0x1ded,
+ 0x0a01,
+ 0x09c8,
0x20d1,
- 0x1163f,
- 0xa953,
- 0x0318,
- 0x1a6e,
- 0x11a8e,
- 0x0a71,
- 0x116b7,
+ 0xe018f,
+ 0xa8e5,
+ 0xa8c2,
+ 0x16b31,
+ 0xa6f1,
+ 0x0f92,
+ 0x07fd,
0x094d,
0x0e4b,
0x1193e,
- 0x1143a,
+ 0xe0115,
0x093e,
0x0821,
- 0x0300,
- 0x1da47,
- 0x1cf40,
- 0xe0102,
+ 0x1cd0,
+ 0x1c2a,
+ 0x0735,
+ 0xa823,
0x05a4,
- 0x1e01f,
- 0x0311,
- 0xe01b2,
- 0x1da51,
- 0xe0178,
- 0xaac1,
- 0x0f9a,
+ 0xe0121,
+ 0xe015c,
+ 0x1a79,
+ 0x0f83,
+ 0x112e1,
+ 0xa947,
+ 0x16f5e,
0x10a06,
- 0x11cad,
- 0xa9ba,
- 0xe01b6,
- 0x1de9,
- 0x16f68,
- 0x2dec,
- 0x08d1,
- 0x0900,
+ 0x17d3,
+ 0x1d185,
+ 0x0d57,
+ 0x16f62,
+ 0x0f96,
+ 0x115b3,
+ 0x11f35,
+ 0xe0119,
0x16f7d,
- 0x11a54,
- 0xe017c,
- 0x1dd4,
- 0x1da60,
- 0xa8bb,
- 0x116b3,
+ 0xfe02,
+ 0x0c46,
+ 0x1cf44,
+ 0x2de0,
+ 0xaa2e,
+ 0x111ba,
+ 0x110b4,
0x1e8d2,
- 0x11c9d,
+ 0x11c92,
0x1d169,
- 0x1713,
- 0xa8be,
- 0x11a94,
+ 0x035f,
+ 0x0740,
0x1cdc,
- 0x1e00e,
- 0x10d24,
+ 0x1122d,
+ 0x2de8,
+ 0x0748,
0x0ec9,
- 0x05a2,
- 0x0711,
- 0xaa2a,
- 0x0e37,
+ 0x1a63,
+ 0x1da5c,
+ 0x1b35,
+ 0x0cc2,
0x1112c,
- 0x08ee,
+ 0xe0113,
0x06da,
0x1922,
- 0x10a01,
- 0x1da62,
- 0x1ce5,
- 0x1cf3b,
- 0x11435,
- 0x0cc0,
- 0x17c1,
+ 0x2de3,
+ 0x18a9,
+ 0x1ba9,
+ 0x08cc,
+ 0x11a57,
+ 0x102f,
+ 0x0737,
0x0652,
- 0x1da3c,
- 0x1daab,
- 0x0cc1,
- 0x0b82,
- 0x07a6,
- 0x11640,
- 0x1b71,
- 0x0655,
+ 0x10a0d,
+ 0x05b4,
+ 0x11000,
+ 0x0fa7,
+ 0x06e3,
+ 0x1bf3,
+ 0xe01a6,
+ 0x0352,
0x0305,
- 0x1c2e,
- 0x0cca,
- 0x1cf20,
- 0x1c31,
+ 0x0f82,
+ 0xe0172,
+ 0x11235,
+ 0x0d43,
0x106a,
- 0x08e5,
- 0x1d1ac,
- 0x1da21,
- 0xe01eb,
+ 0x20e8,
+ 0x11c94,
+ 0x1b6e,
+ 0x05b1,
0x0614,
+ 0x08fb,
0x11132,
- 0x11931,
- 0x0343,
+ 0x103b,
0x110b9,
- 0x1039,
- 0xa94b,
+ 0x112e8,
+ 0x1b6b,
0x1da6b,
- 0xa8f1,
+ 0x1c2c,
+ 0x1b3a,
0xe01bc,
- 0x0a82,
+ 0x1da64,
0x1085,
- 0x101fd,
- 0x05b1,
+ 0x1da45,
0x11d36,
- 0xa66f,
- 0x0bcb,
- 0x1060,
- 0x16f57,
+ 0x20f0,
+ 0x1da0f,
+ 0x0899,
+ 0xe01d9,
0x031e,
0x0fa5,
+ 0x1182c,
0xe01a1,
0xe01c6,
- 0x11cb1,
- 0xe010e,
+ 0x0350,
+ 0x13452,
0x1ce3,
- 0x1de2,
+ 0x2de1,
0x2dfc,
- 0xe0128,
0x1da4a,
- 0x1e015,
- 0xe019b,
- 0x20db,
+ 0x1cf04,
+ 0x16f63,
+ 0x1d189,
+ 0xe0101,
0xe014d,
0x11a92,
- 0x0eb1,
- 0xe01a7,
+ 0x0817,
+ 0x11c31,
0x11040,
- 0x11c3d,
- 0x1da4d,
+ 0xe01df,
+ 0x1e021,
0x11302,
0xe01e1,
- 0x0651,
- 0x1da17,
- 0x1920,
- 0x11cb2,
+ 0xe0166,
+ 0x11a34,
+ 0x111cc,
+ 0xaaec,
0x0962,
- 0x1abe,
- 0xe0163,
- 0x031c,
- 0x0356,
+ 0xfe07,
+ 0x1cf16,
+ 0x1bef,
+ 0x08ea,
0x1e011,
- 0x1cf06,
- 0x1d170,
- 0x07f3,
- 0x116b2,
- 0x1ce1,
+ 0x0f7e,
+ 0x1daa7,
+ 0x1937,
+ 0xe016d,
+ 0x1dee,
0xfe28,
- 0xe01c4,
- 0x08da,
- 0x20d5,
- 0x1cf12,
- 0xabe6,
+ 0x085b,
+ 0xa94a,
+ 0x1dd5,
+ 0x1dea,
+ 0x1a6f,
0xfe03,
- 0x1dfa,
- 0x11439,
- 0x11837,
- 0x093f,
- 0x1cf41,
- 0xe0131,
- 0x1145e,
- 0x1daa4,
- 0x0a02,
- 0x07a8,
- 0x0734,
- 0x1112e,
- 0x114b3,
- 0x1122c,
- 0x0594,
- 0x1e020,
- 0xe0125,
- 0x1e2ed,
- 0xe0104,
- 0x07f2,
- 0x0c4d,
- 0x1772,
- 0x1bab,
- 0x17cb,
- 0x0613,
- 0x0f91,
- 0x111ba,
- 0x1abb,
- 0x16f7c,
+ 0x1a75,
+ 0x06ea,
+ 0x16f7e,
+ 0x0f37,
+ 0x1182f,
+ 0x059f,
+ 0x1da69,
+ 0x0fac,
+ 0x0c3f,
+ 0x0d41,
+ 0x16f84,
+ 0x0fae,
+ 0xe0168,
+ 0x0c44,
+ 0x034e,
+ 0x08fc,
+ 0x05bf,
+ 0x0dd0,
+ 0x1bf0,
+ 0x2cef,
+ 0x1ab3,
+ 0x0d3f,
+ 0x1cf2b,
+ 0xa8c0,
+ 0x1a5c,
+ 0x16f67,
+ 0x1daaa,
+ 0xe016f,
+ 0x1da84,
+ 0x2df2,
0x05a9,
- 0x1d188,
+ 0xe013d,
0x0c43,
- 0xa8c3,
- 0x08f3,
+ 0x1da36,
+ 0xe0103,
0x08fd,
- 0x1193b,
- 0x0a4c,
- 0x1089,
- 0x11839,
- 0xa8e8,
+ 0x0fba,
+ 0x0ec8,
+ 0x1da1f,
+ 0xa9b5,
+ 0x1be8,
0xfe2b,
0x108d,
0x06d9,
- 0x11a95,
- 0x16f61,
- 0xe011c,
- 0x1753,
+ 0x1cdd,
+ 0x0816,
+ 0xa676,
+ 0x0818,
0x16f5f,
- 0x1133b,
+ 0x0fa8,
0x0f9b,
0x0f9d,
- 0x1bed,
- 0x0330,
- 0xe011e,
- 0x1062,
+ 0x0e31,
+ 0x11a91,
+ 0x0611,
+ 0x0b4b,
0x0b57,
- 0xa8bf,
- 0xe0156,
- 0x1da5d,
- 0x1cd0,
+ 0xe015d,
+ 0x108f,
+ 0x1e001,
+ 0x17ca,
+ 0x08e1,
0x1bc9d,
- 0xe01ed,
- 0x1da23,
- 0x035f,
- 0x11d94,
- 0x1dc5,
+ 0x2df1,
+ 0x0b42,
+ 0x081e,
+ 0x16f59,
+ 0xfe20,
0x0597,
- 0x030b,
- 0x114bb,
+ 0x1cf01,
0x1038,
0x035a,
- 0x1e027,
- 0x1c37,
- 0xaa43,
- 0x11441,
- 0x302e,
- 0x10a0c,
- 0xe015d,
- 0x1dfb,
- 0x11a53,
- 0xe01ac,
- 0x0f19,
- 0x1d168,
- 0x1b02,
+ 0xe0196,
+ 0x1a6e,
+ 0x1daa5,
+ 0x0321,
+ 0x1da51,
+ 0x17d2,
+ 0x1daad,
+ 0x033a,
+ 0x1056,
+ 0x1ab1,
+ 0x0dcf,
+ 0x1e947,
+ 0x0300,
+ 0x10d24,
0x10a02,
0x11342,
- 0x1ab3,
- 0x11442,
- 0x0c46,
+ 0x1ce7,
+ 0x031f,
+ 0x1073,
0x0653,
- 0x111bb,
+ 0x0fb2,
0x11a33,
0xe01cc,
0x1da02,
- 0x11440,
+ 0xe0133,
0x2de2,
- 0xa9c0,
- 0x11082,
- 0xe0101,
- 0x0abc,
+ 0x0333,
+ 0x0a71,
+ 0xe01eb,
+ 0x11d96,
0x0612,
0xa8b8,
- 0xe0124,
- 0xa951,
- 0x059e,
- 0x11632,
- 0x1cd6,
- 0x17bb,
- 0x119e4,
- 0x1112d,
- 0x0cc2,
+ 0x08e8,
+ 0x11ca6,
+ 0x1de8,
+ 0x1da4f,
+ 0x07a8,
+ 0x0e39,
+ 0xa982,
+ 0x036e,
+ 0x193a,
0x16f91,
- 0x20d3,
- 0x0c41,
- 0x1171f,
+ 0x10d27,
+ 0x0f78,
+ 0x035d,
0x1da2f,
- 0x1e945,
- 0x1033,
- 0x111b4,
+ 0x11a36,
+ 0xaab0,
+ 0xfe0e,
+ 0x05ad,
0x1dd6,
- 0x1733,
+ 0xe0142,
0x1dfd,
- 0x119dd,
0x1122f,
- 0x111b6,
- 0x1b03,
- 0x11c32,
- 0xa8b4,
- 0x0742,
- 0x0358,
- 0xe01bd,
- 0x036a,
- 0x0f8d,
- 0x11131,
+ 0x08e4,
+ 0xaa7c,
+ 0x1b3b,
+ 0x0b48,
+ 0x05bc,
+ 0xa8ee,
+ 0x11c97,
+ 0x110b8,
+ 0xe01b2,
+ 0xe0122,
+ 0x11a8e,
0x11a58,
- 0xfe07,
- 0x11c2f,
- 0x0ebb,
- 0x11934,
- 0x2de0,
- 0x11639,
- 0x1e946,
- 0x11ef5,
+ 0x036b,
+ 0x0331,
+ 0x16f71,
+ 0x1143e,
+ 0x110ba,
+ 0x1112e,
+ 0x089b,
0x1ac1,
+ 0xe0143,
0x07ed,
- 0x114b2,
- 0x0944,
- 0x11a98,
- 0x115b0,
- 0x1d17e,
- 0x09e2,
- 0x1da61,
- 0x0353,
- 0x1e016,
- 0xe01aa,
- 0x20da,
- 0xe0170,
+ 0xa674,
+ 0x2df0,
+ 0x1da62,
+ 0xa8bd,
+ 0x1b3d,
+ 0x11d3c,
+ 0xe014b,
+ 0xaa32,
+ 0x11a51,
+ 0x16f92,
+ 0x1d166,
+ 0x0cc8,
+ 0x1dca,
0xe01b8,
- 0x10a3a,
- 0x11a8d,
- 0x073f,
- 0x06e0,
- 0x1c33,
- 0x0328,
- 0x1da2a,
- 0xe010f,
- 0x1cf19,
- 0x16ff0,
- 0x1e136,
- 0x1da1f,
- 0x1cf29,
- 0x20ec,
- 0x0cc6,
+ 0x1ac8,
+ 0x17c9,
+ 0xfe08,
+ 0x0338,
+ 0x1de7,
+ 0xe018d,
+ 0xa69e,
+ 0x1da4c,
+ 0x07f3,
+ 0x16b35,
+ 0x0a51,
+ 0xa825,
+ 0x1071,
+ 0x11f3f,
0x0348,
- 0x0c3e,
+ 0x116b7,
+ 0x09c3,
0x1e2ee,
- 0x05ae,
0x0e34,
- 0x09c7,
- 0x1a19,
- 0x1bea,
+ 0x036d,
+ 0xabe9,
+ 0x1cf7,
0x1935,
- 0x1cf3e,
- 0x061a,
- 0x0f77,
- 0x0ac5,
- 0xa8c4,
- 0x1c24,
+ 0x05aa,
+ 0x1103f,
+ 0x11a09,
+ 0x1da3f,
+ 0x108a,
+ 0x16f5c,
+ 0x20d6,
0x07eb,
- 0x0957,
- 0x1da64,
- 0x0d02,
- 0xaa34,
- 0x0d3c,
- 0x0901,
+ 0xfe2a,
+ 0xe0193,
+ 0x11d40,
+ 0x05b9,
+ 0x0f7d,
+ 0x16f5a,
0xe0197,
0x09cd,
0x0fb5,
0x1da07,
0xe01d1,
- 0x102e,
- 0xe016c,
- 0x110b1,
+ 0xa880,
+ 0x1a7c,
+ 0x11ca5,
0x09cb,
- 0x11834,
- 0x11932,
+ 0x0fb3,
+ 0x0825,
0x1103a,
0x0827,
0x1e94a,
@@ -33403,7 +33693,7 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{0CDD}'..='\u{0CDE}'
| '\u{0CE0}'..='\u{0CE3}'
| '\u{0CE6}'..='\u{0CEF}'
- | '\u{0CF1}'..='\u{0CF2}'
+ | '\u{0CF1}'..='\u{0CF3}'
| '\u{0D00}'..='\u{0D0C}'
| '\u{0D0E}'..='\u{0D10}'
| '\u{0D12}'..='\u{0D44}'
@@ -33433,7 +33723,7 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{0EA7}'..='\u{0EBD}'
| '\u{0EC0}'..='\u{0EC4}'
| '\u{0EC6}'
- | '\u{0EC8}'..='\u{0ECD}'
+ | '\u{0EC8}'..='\u{0ECE}'
| '\u{0ED0}'..='\u{0ED9}'
| '\u{0EDC}'..='\u{0EDF}'
| '\u{0F00}'..='\u{0F47}'
@@ -33704,7 +33994,7 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{10E80}'..='\u{10EA9}'
| '\u{10EAB}'..='\u{10EAD}'
| '\u{10EB0}'..='\u{10EB1}'
- | '\u{10F00}'..='\u{10F27}'
+ | '\u{10EFD}'..='\u{10F27}'
| '\u{10F30}'..='\u{10F59}'
| '\u{10F70}'..='\u{10F89}'
| '\u{10FB0}'..='\u{10FCB}'
@@ -33721,7 +34011,7 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{11180}'..='\u{111DF}'
| '\u{111E1}'..='\u{111F4}'
| '\u{11200}'..='\u{11211}'
- | '\u{11213}'..='\u{1123E}'
+ | '\u{11213}'..='\u{11241}'
| '\u{11280}'..='\u{11286}'
| '\u{11288}'
| '\u{1128A}'..='\u{1128D}'
@@ -33774,6 +34064,7 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{11A00}'..='\u{11A47}'
| '\u{11A50}'..='\u{11AA2}'
| '\u{11AB0}'..='\u{11AF8}'
+ | '\u{11B00}'..='\u{11B09}'
| '\u{11C00}'..='\u{11C08}'
| '\u{11C0A}'..='\u{11C36}'
| '\u{11C38}'..='\u{11C45}'
@@ -33795,6 +34086,9 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{11D93}'..='\u{11D98}'
| '\u{11DA0}'..='\u{11DA9}'
| '\u{11EE0}'..='\u{11EF8}'
+ | '\u{11F00}'..='\u{11F10}'
+ | '\u{11F12}'..='\u{11F3A}'
+ | '\u{11F3E}'..='\u{11F59}'
| '\u{11FB0}'
| '\u{11FC0}'..='\u{11FF1}'
| '\u{11FFF}'..='\u{12399}'
@@ -33802,8 +34096,7 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{12470}'..='\u{12474}'
| '\u{12480}'..='\u{12543}'
| '\u{12F90}'..='\u{12FF2}'
- | '\u{13000}'..='\u{1342E}'
- | '\u{13430}'..='\u{13438}'
+ | '\u{13000}'..='\u{13455}'
| '\u{14400}'..='\u{14646}'
| '\u{16800}'..='\u{16A38}'
| '\u{16A40}'..='\u{16A5E}'
@@ -33830,7 +34123,9 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{1AFF5}'..='\u{1AFFB}'
| '\u{1AFFD}'..='\u{1AFFE}'
| '\u{1B000}'..='\u{1B122}'
+ | '\u{1B132}'
| '\u{1B150}'..='\u{1B152}'
+ | '\u{1B155}'
| '\u{1B164}'..='\u{1B167}'
| '\u{1B170}'..='\u{1B2FB}'
| '\u{1BC00}'..='\u{1BC6A}'
@@ -33845,6 +34140,7 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{1D100}'..='\u{1D126}'
| '\u{1D129}'..='\u{1D1EA}'
| '\u{1D200}'..='\u{1D245}'
+ | '\u{1D2C0}'..='\u{1D2D3}'
| '\u{1D2E0}'..='\u{1D2F3}'
| '\u{1D300}'..='\u{1D356}'
| '\u{1D360}'..='\u{1D378}'
@@ -33872,11 +34168,14 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{1DA9B}'..='\u{1DA9F}'
| '\u{1DAA1}'..='\u{1DAAF}'
| '\u{1DF00}'..='\u{1DF1E}'
+ | '\u{1DF25}'..='\u{1DF2A}'
| '\u{1E000}'..='\u{1E006}'
| '\u{1E008}'..='\u{1E018}'
| '\u{1E01B}'..='\u{1E021}'
| '\u{1E023}'..='\u{1E024}'
| '\u{1E026}'..='\u{1E02A}'
+ | '\u{1E030}'..='\u{1E06D}'
+ | '\u{1E08F}'
| '\u{1E100}'..='\u{1E12C}'
| '\u{1E130}'..='\u{1E13D}'
| '\u{1E140}'..='\u{1E149}'
@@ -33884,6 +34183,7 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{1E290}'..='\u{1E2AE}'
| '\u{1E2C0}'..='\u{1E2F9}'
| '\u{1E2FF}'
+ | '\u{1E4D0}'..='\u{1E4F9}'
| '\u{1E7E0}'..='\u{1E7E6}'
| '\u{1E7E8}'..='\u{1E7EB}'
| '\u{1E7ED}'..='\u{1E7EE}'
@@ -33942,10 +34242,10 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{1F250}'..='\u{1F251}'
| '\u{1F260}'..='\u{1F265}'
| '\u{1F300}'..='\u{1F6D7}'
- | '\u{1F6DD}'..='\u{1F6EC}'
+ | '\u{1F6DC}'..='\u{1F6EC}'
| '\u{1F6F0}'..='\u{1F6FC}'
- | '\u{1F700}'..='\u{1F773}'
- | '\u{1F780}'..='\u{1F7D8}'
+ | '\u{1F700}'..='\u{1F776}'
+ | '\u{1F77B}'..='\u{1F7D9}'
| '\u{1F7E0}'..='\u{1F7EB}'
| '\u{1F7F0}'
| '\u{1F800}'..='\u{1F80B}'
@@ -33956,25 +34256,24 @@ pub fn is_public_assigned(c: char) -> bool {
| '\u{1F8B0}'..='\u{1F8B1}'
| '\u{1F900}'..='\u{1FA53}'
| '\u{1FA60}'..='\u{1FA6D}'
- | '\u{1FA70}'..='\u{1FA74}'
- | '\u{1FA78}'..='\u{1FA7C}'
- | '\u{1FA80}'..='\u{1FA86}'
- | '\u{1FA90}'..='\u{1FAAC}'
- | '\u{1FAB0}'..='\u{1FABA}'
- | '\u{1FAC0}'..='\u{1FAC5}'
- | '\u{1FAD0}'..='\u{1FAD9}'
- | '\u{1FAE0}'..='\u{1FAE7}'
- | '\u{1FAF0}'..='\u{1FAF6}'
+ | '\u{1FA70}'..='\u{1FA7C}'
+ | '\u{1FA80}'..='\u{1FA88}'
+ | '\u{1FA90}'..='\u{1FABD}'
+ | '\u{1FABF}'..='\u{1FAC5}'
+ | '\u{1FACE}'..='\u{1FADB}'
+ | '\u{1FAE0}'..='\u{1FAE8}'
+ | '\u{1FAF0}'..='\u{1FAF8}'
| '\u{1FB00}'..='\u{1FB92}'
| '\u{1FB94}'..='\u{1FBCA}'
| '\u{1FBF0}'..='\u{1FBF9}'
| '\u{20000}'..='\u{2A6DF}'
- | '\u{2A700}'..='\u{2B738}'
+ | '\u{2A700}'..='\u{2B739}'
| '\u{2B740}'..='\u{2B81D}'
| '\u{2B820}'..='\u{2CEA1}'
| '\u{2CEB0}'..='\u{2EBE0}'
| '\u{2F800}'..='\u{2FA1D}'
| '\u{30000}'..='\u{3134A}'
+ | '\u{31350}'..='\u{323AF}'
| '\u{E0001}'
| '\u{E0020}'..='\u{E007F}'
| '\u{E0100}'..='\u{E01EF}'
@@ -34461,6 +34760,7 @@ pub fn qc_nfkc(c: char) -> IsNormalized {
'\u{1D7C3}' => No,
'\u{1D7C4}'...'\u{1D7CB}' => No,
'\u{1D7CE}'...'\u{1D7FF}' => No,
+ '\u{1E030}'...'\u{1E06D}' => No,
'\u{1EE00}'...'\u{1EE03}' => No,
'\u{1EE05}'...'\u{1EE1F}' => No,
'\u{1EE21}'...'\u{1EE22}' => No,
@@ -35310,6 +35610,7 @@ pub fn qc_nfkd(c: char) -> IsNormalized {
'\u{1D7C3}' => No,
'\u{1D7C4}'...'\u{1D7CB}' => No,
'\u{1D7CE}'...'\u{1D7FF}' => No,
+ '\u{1E030}'...'\u{1E06D}' => No,
'\u{1EE00}'...'\u{1EE03}' => No,
'\u{1EE05}'...'\u{1EE1F}' => No,
'\u{1EE21}'...'\u{1EE22}' => No,
diff --git a/vendor/unicode-script/.cargo-checksum.json b/vendor/unicode-script/.cargo-checksum.json
index 44c6c80d2..1bd2141e0 100644
--- a/vendor/unicode-script/.cargo-checksum.json
+++ b/vendor/unicode-script/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"3b6e9ba98b2f20b8b8a13f2e961a78691a064dcd1ae0d5bcfaf26216b2bb9c68","README.md":"14f5fffdc485176a2ab2e04555231042d0f7d818dbf1a0749a1ecbd8a0d4d500","scripts/unicode.py":"53803e407327679983929fbbdaf874c44c21b6f775eb48690dd52528dd3f4a51","src/lib.rs":"1e67da407be73a423a1de030f1397864aa454925a8582e027e9a9246529bf0b6","src/tables.rs":"6303916c60cee9abfa380b345536177415f042f36df3479d35c17b3587e65479"},"package":"098ec66172ce21cd55f8bcc786ee209dd20e04eff70acfca30cb79924d173ae9"} \ No newline at end of file
+{"files":{"Cargo.toml":"dce5bd5ce9da2e852b95c7c96ef36d7e70c36bf15eff3052a3fcb9ba9f8d3af5","LICENSE-APACHE":"7cbb56d1b5d83d735056b363ab20958524120afafc4ad8206e6be98cdec5d737","LICENSE-MIT":"7ad3ea8ca3caf894db98c3f31d5d4949173ffa93c883ef19a9e529ad48960f8c","README.md":"9d922b2906be36f007f89c6f4eae8976d90a01be8181928698a121b154bbb016","scripts/unicode.py":"ce98a6f184b6d4c44c855b80d92d6d570a42535df840a44be4eecd47d6320aea","src/lib.rs":"d2476ef2fbc805c9a34110dce7415b4ba21de7da6e19470a1b856966564e905f","src/tables.rs":"e78188904a06dc06a59ad4e8c30990060f06c3d8e5871437d531389fa5aabade"},"package":"7d817255e1bed6dfd4ca47258685d14d2bdcfbc64fdc9e3819bd5848057b8ecc"} \ No newline at end of file
diff --git a/vendor/unicode-script/Cargo.toml b/vendor/unicode-script/Cargo.toml
index 6dfc01148..c2647d3ab 100644
--- a/vendor/unicode-script/Cargo.toml
+++ b/vendor/unicode-script/Cargo.toml
@@ -3,26 +3,38 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
name = "unicode-script"
-version = "0.5.3"
+version = "0.5.5"
authors = ["Manish Goregaokar <manishsmail@gmail.com>"]
-exclude = ["target/*", "Cargo.lock", "scripts/tmp", "*.txt"]
-description = "This crate exposes the Unicode `Script` and `Script_Extension` properties from [UAX #24](http://www.unicode.org/reports/tr24/)\n"
+exclude = [
+ "target/*",
+ "Cargo.lock",
+ "scripts/tmp",
+ "*.txt",
+]
+description = """
+This crate exposes the Unicode `Script` and `Script_Extension` properties from [UAX #24](http://www.unicode.org/reports/tr24/)
+"""
homepage = "https://github.com/unicode-rs/unicode-script"
documentation = "https://docs.rs/unicode-script"
readme = "README.md"
-keywords = ["text", "unicode", "script", "language"]
+keywords = [
+ "text",
+ "unicode",
+ "script",
+ "language",
+]
license = "MIT/Apache-2.0"
repository = "https://github.com/unicode-rs/unicode-script"
+
[dependencies.compiler_builtins]
version = "0.1"
optional = true
@@ -39,4 +51,8 @@ package = "rustc-std-workspace-std"
[features]
bench = []
-rustc-dep-of-std = ["std", "core", "compiler_builtins"]
+rustc-dep-of-std = [
+ "std",
+ "core",
+ "compiler_builtins",
+]
diff --git a/vendor/block-buffer-0.7.3/LICENSE-APACHE b/vendor/unicode-script/LICENSE-APACHE
index 78173fa2e..aa718b553 100644
--- a/vendor/block-buffer-0.7.3/LICENSE-APACHE
+++ b/vendor/unicode-script/LICENSE-APACHE
@@ -1,201 +1,201 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+Copyright 2021 The Unicode-rs Developers
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/vendor/crossbeam/LICENSE-MIT b/vendor/unicode-script/LICENSE-MIT
index 068d491fd..20c28a2ce 100644
--- a/vendor/crossbeam/LICENSE-MIT
+++ b/vendor/unicode-script/LICENSE-MIT
@@ -1,27 +1,27 @@
-The MIT License (MIT)
-
-Copyright (c) 2019 The Crossbeam Project Developers
-
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
+MIT License
+
+Copyright (c) 2019 Manish Goregaokar
+
+Permission is hereby granted, free of charge, to any
+person obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without
+limitation the rights to use, copy, modify, merge,
+publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software
+is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice
+shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
+SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
diff --git a/vendor/unicode-script/README.md b/vendor/unicode-script/README.md
index 85fd60b11..0afbce69b 100644
--- a/vendor/unicode-script/README.md
+++ b/vendor/unicode-script/README.md
@@ -1,7 +1,7 @@
# unicode-script
[![Build Status](https://github.com/unicode-rs/unicode-script/workflows/Tests/badge.svg)](https://github.com/unicode-rs/unicode-script/actions)
-[![Current Version](https://meritbadge.herokuapp.com/unicode-script)](https://crates.io/crates/unicode-script)
+[![Current Version](https://img.shields.io/crates/v/unicode-script.svg)](https://crates.io/crates/unicode-script)
[![License: MIT/Apache-2.0](https://img.shields.io/crates/l/unicode-script.svg)](#license)
-This crate exposes the Unicode `Script` and `Script_Extension` properties from [UAX #24](http://www.unicode.org/reports/tr24/) \ No newline at end of file
+This crate exposes the Unicode `Script` and `Script_Extension` properties from [UAX #24](http://www.unicode.org/reports/tr24/)
diff --git a/vendor/unicode-script/scripts/unicode.py b/vendor/unicode-script/scripts/unicode.py
index e40a92c6d..7b5c75c72 100644
--- a/vendor/unicode-script/scripts/unicode.py
+++ b/vendor/unicode-script/scripts/unicode.py
@@ -46,7 +46,7 @@ ending='''
}
'''
-UNICODE_VERSION = (13, 0, 0)
+UNICODE_VERSION = (15, 0, 0)
UNICODE_VERSION_NUMBER = "%s.%s.%s" %UNICODE_VERSION
@@ -59,7 +59,7 @@ def fetch(f):
os.system("curl -O https://www.unicode.org/Public/emoji/%s.%s/%s"
% (UNICODE_VERSION[0], UNICODE_VERSION[1], f))
else:
- os.system("curl -O http://www.unicode.org/Public/%s/ucd/%s"
+ os.system("curl -O https://www.unicode.org/Public/%s/ucd/%s"
% (UNICODE_VERSION_NUMBER, f))
if not os.path.exists(os.path.basename(f)):
diff --git a/vendor/unicode-script/src/lib.rs b/vendor/unicode-script/src/lib.rs
index d650ee0b2..63f129069 100644
--- a/vendor/unicode-script/src/lib.rs
+++ b/vendor/unicode-script/src/lib.rs
@@ -144,20 +144,20 @@ pub struct ScriptExtension {
// A bitset for the scripts 65-128
second: u64,
// A bitset for scripts after 128
- third: u32,
+ third: u64,
// Both Common and Inherited are represented by all used bits being set,
// this flag lets us distinguish the two.
common: bool,
}
impl ScriptExtension {
- // We don't use the complete u32 of `third`, so the "all" value is not just u32::MAX
+ // We don't use the complete u64 of `third`, so the "all" value is not just u32::MAX
// Instead, we take the number of the next (unused) script bit, subtract 128 to bring
- // it in the range of `third`, create a u32 with just that bit set, and subtract 1
+ // it in the range of `third`, create a u64 with just that bit set, and subtract 1
// to create one with all the lower bits set.
- const THIRD_MAX: u32 = ((1 << (NEXT_SCRIPT - 128)) - 1);
+ const THIRD_MAX: u64 = ((1 << (NEXT_SCRIPT - 128)) - 1);
- pub(crate) const fn new(first: u64, second: u64, third: u32) -> Self {
+ pub(crate) const fn new(first: u64, second: u64, third: u64) -> Self {
ScriptExtension {
first,
second,
diff --git a/vendor/unicode-script/src/tables.rs b/vendor/unicode-script/src/tables.rs
index e31a7229f..41035fcdc 100644
--- a/vendor/unicode-script/src/tables.rs
+++ b/vendor/unicode-script/src/tables.rs
@@ -20,7 +20,7 @@ use crate::ScriptExtension;
/// The version of [Unicode](http://www.unicode.org/)
/// that this version of unicode-script is based on.
-pub const UNICODE_VERSION: (u64, u64, u64) = (13, 0, 0);
+pub const UNICODE_VERSION: (u64, u64, u64) = (15, 0, 0);
#[derive(Clone, Copy, PartialEq, Eq, Debug, Hash)]
#[non_exhaustive]
@@ -84,266 +84,280 @@ pub enum Script {
Chorasmian = 23,
/// Copt
Coptic = 24,
+ /// Cpmn
+ Cypro_Minoan = 25,
/// Cprt
- Cypriot = 25,
+ Cypriot = 26,
/// Cyrl
- Cyrillic = 26,
+ Cyrillic = 27,
/// Deva
- Devanagari = 27,
+ Devanagari = 28,
/// Diak
- Dives_Akuru = 28,
+ Dives_Akuru = 29,
/// Dogr
- Dogra = 29,
+ Dogra = 30,
/// Dsrt
- Deseret = 30,
+ Deseret = 31,
/// Dupl
- Duployan = 31,
+ Duployan = 32,
/// Egyp
- Egyptian_Hieroglyphs = 32,
+ Egyptian_Hieroglyphs = 33,
/// Elba
- Elbasan = 33,
+ Elbasan = 34,
/// Elym
- Elymaic = 34,
+ Elymaic = 35,
/// Ethi
- Ethiopic = 35,
+ Ethiopic = 36,
/// Geor
- Georgian = 36,
+ Georgian = 37,
/// Glag
- Glagolitic = 37,
+ Glagolitic = 38,
/// Gong
- Gunjala_Gondi = 38,
+ Gunjala_Gondi = 39,
/// Gonm
- Masaram_Gondi = 39,
+ Masaram_Gondi = 40,
/// Goth
- Gothic = 40,
+ Gothic = 41,
/// Gran
- Grantha = 41,
+ Grantha = 42,
/// Grek
- Greek = 42,
+ Greek = 43,
/// Gujr
- Gujarati = 43,
+ Gujarati = 44,
/// Guru
- Gurmukhi = 44,
+ Gurmukhi = 45,
/// Hang
- Hangul = 45,
+ Hangul = 46,
/// Hani
- Han = 46,
+ Han = 47,
/// Hano
- Hanunoo = 47,
+ Hanunoo = 48,
/// Hatr
- Hatran = 48,
+ Hatran = 49,
/// Hebr
- Hebrew = 49,
+ Hebrew = 50,
/// Hira
- Hiragana = 50,
+ Hiragana = 51,
/// Hluw
- Anatolian_Hieroglyphs = 51,
+ Anatolian_Hieroglyphs = 52,
/// Hmng
- Pahawh_Hmong = 52,
+ Pahawh_Hmong = 53,
/// Hmnp
- Nyiakeng_Puachue_Hmong = 53,
+ Nyiakeng_Puachue_Hmong = 54,
/// Hung
- Old_Hungarian = 54,
+ Old_Hungarian = 55,
/// Ital
- Old_Italic = 55,
+ Old_Italic = 56,
/// Java
- Javanese = 56,
+ Javanese = 57,
/// Kali
- Kayah_Li = 57,
+ Kayah_Li = 58,
/// Kana
- Katakana = 58,
+ Katakana = 59,
+ /// Kawi
+ Kawi = 60,
/// Khar
- Kharoshthi = 59,
+ Kharoshthi = 61,
/// Khmr
- Khmer = 60,
+ Khmer = 62,
/// Khoj
- Khojki = 61,
+ Khojki = 63,
/// Kits
- Khitan_Small_Script = 62,
+ Khitan_Small_Script = 64,
/// Knda
- Kannada = 63,
+ Kannada = 65,
/// Kthi
- Kaithi = 64,
+ Kaithi = 66,
/// Lana
- Tai_Tham = 65,
+ Tai_Tham = 67,
/// Laoo
- Lao = 66,
+ Lao = 68,
/// Latn
- Latin = 67,
+ Latin = 69,
/// Lepc
- Lepcha = 68,
+ Lepcha = 70,
/// Limb
- Limbu = 69,
+ Limbu = 71,
/// Lina
- Linear_A = 70,
+ Linear_A = 72,
/// Linb
- Linear_B = 71,
+ Linear_B = 73,
/// Lisu
- Lisu = 72,
+ Lisu = 74,
/// Lyci
- Lycian = 73,
+ Lycian = 75,
/// Lydi
- Lydian = 74,
+ Lydian = 76,
/// Mahj
- Mahajani = 75,
+ Mahajani = 77,
/// Maka
- Makasar = 76,
+ Makasar = 78,
/// Mand
- Mandaic = 77,
+ Mandaic = 79,
/// Mani
- Manichaean = 78,
+ Manichaean = 80,
/// Marc
- Marchen = 79,
+ Marchen = 81,
/// Medf
- Medefaidrin = 80,
+ Medefaidrin = 82,
/// Mend
- Mende_Kikakui = 81,
+ Mende_Kikakui = 83,
/// Merc
- Meroitic_Cursive = 82,
+ Meroitic_Cursive = 84,
/// Mero
- Meroitic_Hieroglyphs = 83,
+ Meroitic_Hieroglyphs = 85,
/// Mlym
- Malayalam = 84,
+ Malayalam = 86,
/// Modi
- Modi = 85,
+ Modi = 87,
/// Mong
- Mongolian = 86,
+ Mongolian = 88,
/// Mroo
- Mro = 87,
+ Mro = 89,
/// Mtei
- Meetei_Mayek = 88,
+ Meetei_Mayek = 90,
/// Mult
- Multani = 89,
+ Multani = 91,
/// Mymr
- Myanmar = 90,
+ Myanmar = 92,
+ /// Nagm
+ Nag_Mundari = 93,
/// Nand
- Nandinagari = 91,
+ Nandinagari = 94,
/// Narb
- Old_North_Arabian = 92,
+ Old_North_Arabian = 95,
/// Nbat
- Nabataean = 93,
+ Nabataean = 96,
/// Newa
- Newa = 94,
+ Newa = 97,
/// Nkoo
- Nko = 95,
+ Nko = 98,
/// Nshu
- Nushu = 96,
+ Nushu = 99,
/// Ogam
- Ogham = 97,
+ Ogham = 100,
/// Olck
- Ol_Chiki = 98,
+ Ol_Chiki = 101,
/// Orkh
- Old_Turkic = 99,
+ Old_Turkic = 102,
/// Orya
- Oriya = 100,
+ Oriya = 103,
/// Osge
- Osage = 101,
+ Osage = 104,
/// Osma
- Osmanya = 102,
+ Osmanya = 105,
+ /// Ougr
+ Old_Uyghur = 106,
/// Palm
- Palmyrene = 103,
+ Palmyrene = 107,
/// Pauc
- Pau_Cin_Hau = 104,
+ Pau_Cin_Hau = 108,
/// Perm
- Old_Permic = 105,
+ Old_Permic = 109,
/// Phag
- Phags_Pa = 106,
+ Phags_Pa = 110,
/// Phli
- Inscriptional_Pahlavi = 107,
+ Inscriptional_Pahlavi = 111,
/// Phlp
- Psalter_Pahlavi = 108,
+ Psalter_Pahlavi = 112,
/// Phnx
- Phoenician = 109,
+ Phoenician = 113,
/// Plrd
- Miao = 110,
+ Miao = 114,
/// Prti
- Inscriptional_Parthian = 111,
+ Inscriptional_Parthian = 115,
/// Rjng
- Rejang = 112,
+ Rejang = 116,
/// Rohg
- Hanifi_Rohingya = 113,
+ Hanifi_Rohingya = 117,
/// Runr
- Runic = 114,
+ Runic = 118,
/// Samr
- Samaritan = 115,
+ Samaritan = 119,
/// Sarb
- Old_South_Arabian = 116,
+ Old_South_Arabian = 120,
/// Saur
- Saurashtra = 117,
+ Saurashtra = 121,
/// Sgnw
- SignWriting = 118,
+ SignWriting = 122,
/// Shaw
- Shavian = 119,
+ Shavian = 123,
/// Shrd
- Sharada = 120,
+ Sharada = 124,
/// Sidd
- Siddham = 121,
+ Siddham = 125,
/// Sind
- Khudawadi = 122,
+ Khudawadi = 126,
/// Sinh
- Sinhala = 123,
+ Sinhala = 127,
/// Sogd
- Sogdian = 124,
+ Sogdian = 128,
/// Sogo
- Old_Sogdian = 125,
+ Old_Sogdian = 129,
/// Sora
- Sora_Sompeng = 126,
+ Sora_Sompeng = 130,
/// Soyo
- Soyombo = 127,
+ Soyombo = 131,
/// Sund
- Sundanese = 128,
+ Sundanese = 132,
/// Sylo
- Syloti_Nagri = 129,
+ Syloti_Nagri = 133,
/// Syrc
- Syriac = 130,
+ Syriac = 134,
/// Tagb
- Tagbanwa = 131,
+ Tagbanwa = 135,
/// Takr
- Takri = 132,
+ Takri = 136,
/// Tale
- Tai_Le = 133,
+ Tai_Le = 137,
/// Talu
- New_Tai_Lue = 134,
+ New_Tai_Lue = 138,
/// Taml
- Tamil = 135,
+ Tamil = 139,
/// Tang
- Tangut = 136,
+ Tangut = 140,
/// Tavt
- Tai_Viet = 137,
+ Tai_Viet = 141,
/// Telu
- Telugu = 138,
+ Telugu = 142,
/// Tfng
- Tifinagh = 139,
+ Tifinagh = 143,
/// Tglg
- Tagalog = 140,
+ Tagalog = 144,
/// Thaa
- Thaana = 141,
+ Thaana = 145,
/// Thai
- Thai = 142,
+ Thai = 146,
/// Tibt
- Tibetan = 143,
+ Tibetan = 147,
/// Tirh
- Tirhuta = 144,
+ Tirhuta = 148,
+ /// Tnsa
+ Tangsa = 149,
+ /// Toto
+ Toto = 150,
/// Ugar
- Ugaritic = 145,
+ Ugaritic = 151,
/// Vaii
- Vai = 146,
+ Vai = 152,
+ /// Vith
+ Vithkuqi = 153,
/// Wara
- Warang_Citi = 147,
+ Warang_Citi = 154,
/// Wcho
- Wancho = 148,
+ Wancho = 155,
/// Xpeo
- Old_Persian = 149,
+ Old_Persian = 156,
/// Xsux
- Cuneiform = 150,
+ Cuneiform = 157,
/// Yezi
- Yezidi = 151,
+ Yezidi = 158,
/// Yiii
- Yi = 152,
+ Yi = 159,
/// Zanb
- Zanabazar_Square = 153,
+ Zanabazar_Square = 160,
}
-pub const NEXT_SCRIPT: u8 = 154;
+pub const NEXT_SCRIPT: u8 = 161;
pub mod script_extensions {
use crate::ScriptExtension;
@@ -446,518 +460,544 @@ pub mod script_extensions {
pub const COPTIC: ScriptExtension = ScriptExtension::new(0x1000000, 0, 0);
/// Coptic
pub const COPT: ScriptExtension = COPTIC;
+ /// Cypro_Minoan
+ pub const CYPRO_MINOAN: ScriptExtension = ScriptExtension::new(0x2000000, 0, 0);
+ /// Cypro_Minoan
+ pub const CPMN: ScriptExtension = CYPRO_MINOAN;
/// Cypriot
- pub const CYPRIOT: ScriptExtension = ScriptExtension::new(0x2000000, 0, 0);
+ pub const CYPRIOT: ScriptExtension = ScriptExtension::new(0x4000000, 0, 0);
/// Cypriot
pub const CPRT: ScriptExtension = CYPRIOT;
/// Cyrillic
- pub const CYRILLIC: ScriptExtension = ScriptExtension::new(0x4000000, 0, 0);
+ pub const CYRILLIC: ScriptExtension = ScriptExtension::new(0x8000000, 0, 0);
/// Cyrillic
pub const CYRL: ScriptExtension = CYRILLIC;
/// Devanagari
- pub const DEVANAGARI: ScriptExtension = ScriptExtension::new(0x8000000, 0, 0);
+ pub const DEVANAGARI: ScriptExtension = ScriptExtension::new(0x10000000, 0, 0);
/// Devanagari
pub const DEVA: ScriptExtension = DEVANAGARI;
/// Dives_Akuru
- pub const DIVES_AKURU: ScriptExtension = ScriptExtension::new(0x10000000, 0, 0);
+ pub const DIVES_AKURU: ScriptExtension = ScriptExtension::new(0x20000000, 0, 0);
/// Dives_Akuru
pub const DIAK: ScriptExtension = DIVES_AKURU;
/// Dogra
- pub const DOGRA: ScriptExtension = ScriptExtension::new(0x20000000, 0, 0);
+ pub const DOGRA: ScriptExtension = ScriptExtension::new(0x40000000, 0, 0);
/// Dogra
pub const DOGR: ScriptExtension = DOGRA;
/// Deseret
- pub const DESERET: ScriptExtension = ScriptExtension::new(0x40000000, 0, 0);
+ pub const DESERET: ScriptExtension = ScriptExtension::new(0x80000000, 0, 0);
/// Deseret
pub const DSRT: ScriptExtension = DESERET;
/// Duployan
- pub const DUPLOYAN: ScriptExtension = ScriptExtension::new(0x80000000, 0, 0);
+ pub const DUPLOYAN: ScriptExtension = ScriptExtension::new(0x100000000, 0, 0);
/// Duployan
pub const DUPL: ScriptExtension = DUPLOYAN;
/// Egyptian_Hieroglyphs
- pub const EGYPTIAN_HIEROGLYPHS: ScriptExtension = ScriptExtension::new(0x100000000, 0, 0);
+ pub const EGYPTIAN_HIEROGLYPHS: ScriptExtension = ScriptExtension::new(0x200000000, 0, 0);
/// Egyptian_Hieroglyphs
pub const EGYP: ScriptExtension = EGYPTIAN_HIEROGLYPHS;
/// Elbasan
- pub const ELBASAN: ScriptExtension = ScriptExtension::new(0x200000000, 0, 0);
+ pub const ELBASAN: ScriptExtension = ScriptExtension::new(0x400000000, 0, 0);
/// Elbasan
pub const ELBA: ScriptExtension = ELBASAN;
/// Elymaic
- pub const ELYMAIC: ScriptExtension = ScriptExtension::new(0x400000000, 0, 0);
+ pub const ELYMAIC: ScriptExtension = ScriptExtension::new(0x800000000, 0, 0);
/// Elymaic
pub const ELYM: ScriptExtension = ELYMAIC;
/// Ethiopic
- pub const ETHIOPIC: ScriptExtension = ScriptExtension::new(0x800000000, 0, 0);
+ pub const ETHIOPIC: ScriptExtension = ScriptExtension::new(0x1000000000, 0, 0);
/// Ethiopic
pub const ETHI: ScriptExtension = ETHIOPIC;
/// Georgian
- pub const GEORGIAN: ScriptExtension = ScriptExtension::new(0x1000000000, 0, 0);
+ pub const GEORGIAN: ScriptExtension = ScriptExtension::new(0x2000000000, 0, 0);
/// Georgian
pub const GEOR: ScriptExtension = GEORGIAN;
/// Glagolitic
- pub const GLAGOLITIC: ScriptExtension = ScriptExtension::new(0x2000000000, 0, 0);
+ pub const GLAGOLITIC: ScriptExtension = ScriptExtension::new(0x4000000000, 0, 0);
/// Glagolitic
pub const GLAG: ScriptExtension = GLAGOLITIC;
/// Gunjala_Gondi
- pub const GUNJALA_GONDI: ScriptExtension = ScriptExtension::new(0x4000000000, 0, 0);
+ pub const GUNJALA_GONDI: ScriptExtension = ScriptExtension::new(0x8000000000, 0, 0);
/// Gunjala_Gondi
pub const GONG: ScriptExtension = GUNJALA_GONDI;
/// Masaram_Gondi
- pub const MASARAM_GONDI: ScriptExtension = ScriptExtension::new(0x8000000000, 0, 0);
+ pub const MASARAM_GONDI: ScriptExtension = ScriptExtension::new(0x10000000000, 0, 0);
/// Masaram_Gondi
pub const GONM: ScriptExtension = MASARAM_GONDI;
/// Gothic
- pub const GOTHIC: ScriptExtension = ScriptExtension::new(0x10000000000, 0, 0);
+ pub const GOTHIC: ScriptExtension = ScriptExtension::new(0x20000000000, 0, 0);
/// Gothic
pub const GOTH: ScriptExtension = GOTHIC;
/// Grantha
- pub const GRANTHA: ScriptExtension = ScriptExtension::new(0x20000000000, 0, 0);
+ pub const GRANTHA: ScriptExtension = ScriptExtension::new(0x40000000000, 0, 0);
/// Grantha
pub const GRAN: ScriptExtension = GRANTHA;
/// Greek
- pub const GREEK: ScriptExtension = ScriptExtension::new(0x40000000000, 0, 0);
+ pub const GREEK: ScriptExtension = ScriptExtension::new(0x80000000000, 0, 0);
/// Greek
pub const GREK: ScriptExtension = GREEK;
/// Gujarati
- pub const GUJARATI: ScriptExtension = ScriptExtension::new(0x80000000000, 0, 0);
+ pub const GUJARATI: ScriptExtension = ScriptExtension::new(0x100000000000, 0, 0);
/// Gujarati
pub const GUJR: ScriptExtension = GUJARATI;
/// Gurmukhi
- pub const GURMUKHI: ScriptExtension = ScriptExtension::new(0x100000000000, 0, 0);
+ pub const GURMUKHI: ScriptExtension = ScriptExtension::new(0x200000000000, 0, 0);
/// Gurmukhi
pub const GURU: ScriptExtension = GURMUKHI;
/// Hangul
- pub const HANGUL: ScriptExtension = ScriptExtension::new(0x200000000000, 0, 0);
+ pub const HANGUL: ScriptExtension = ScriptExtension::new(0x400000000000, 0, 0);
/// Hangul
pub const HANG: ScriptExtension = HANGUL;
/// Han
- pub const HAN: ScriptExtension = ScriptExtension::new(0x400000000000, 0, 0);
+ pub const HAN: ScriptExtension = ScriptExtension::new(0x800000000000, 0, 0);
/// Han
pub const HANI: ScriptExtension = HAN;
/// Hanunoo
- pub const HANUNOO: ScriptExtension = ScriptExtension::new(0x800000000000, 0, 0);
+ pub const HANUNOO: ScriptExtension = ScriptExtension::new(0x1000000000000, 0, 0);
/// Hanunoo
pub const HANO: ScriptExtension = HANUNOO;
/// Hatran
- pub const HATRAN: ScriptExtension = ScriptExtension::new(0x1000000000000, 0, 0);
+ pub const HATRAN: ScriptExtension = ScriptExtension::new(0x2000000000000, 0, 0);
/// Hatran
pub const HATR: ScriptExtension = HATRAN;
/// Hebrew
- pub const HEBREW: ScriptExtension = ScriptExtension::new(0x2000000000000, 0, 0);
+ pub const HEBREW: ScriptExtension = ScriptExtension::new(0x4000000000000, 0, 0);
/// Hebrew
pub const HEBR: ScriptExtension = HEBREW;
/// Hiragana
- pub const HIRAGANA: ScriptExtension = ScriptExtension::new(0x4000000000000, 0, 0);
+ pub const HIRAGANA: ScriptExtension = ScriptExtension::new(0x8000000000000, 0, 0);
/// Hiragana
pub const HIRA: ScriptExtension = HIRAGANA;
/// Anatolian_Hieroglyphs
- pub const ANATOLIAN_HIEROGLYPHS: ScriptExtension = ScriptExtension::new(0x8000000000000, 0, 0);
+ pub const ANATOLIAN_HIEROGLYPHS: ScriptExtension = ScriptExtension::new(0x10000000000000, 0, 0);
/// Anatolian_Hieroglyphs
pub const HLUW: ScriptExtension = ANATOLIAN_HIEROGLYPHS;
/// Pahawh_Hmong
- pub const PAHAWH_HMONG: ScriptExtension = ScriptExtension::new(0x10000000000000, 0, 0);
+ pub const PAHAWH_HMONG: ScriptExtension = ScriptExtension::new(0x20000000000000, 0, 0);
/// Pahawh_Hmong
pub const HMNG: ScriptExtension = PAHAWH_HMONG;
/// Nyiakeng_Puachue_Hmong
- pub const NYIAKENG_PUACHUE_HMONG: ScriptExtension = ScriptExtension::new(0x20000000000000, 0, 0);
+ pub const NYIAKENG_PUACHUE_HMONG: ScriptExtension = ScriptExtension::new(0x40000000000000, 0, 0);
/// Nyiakeng_Puachue_Hmong
pub const HMNP: ScriptExtension = NYIAKENG_PUACHUE_HMONG;
/// Old_Hungarian
- pub const OLD_HUNGARIAN: ScriptExtension = ScriptExtension::new(0x40000000000000, 0, 0);
+ pub const OLD_HUNGARIAN: ScriptExtension = ScriptExtension::new(0x80000000000000, 0, 0);
/// Old_Hungarian
pub const HUNG: ScriptExtension = OLD_HUNGARIAN;
/// Old_Italic
- pub const OLD_ITALIC: ScriptExtension = ScriptExtension::new(0x80000000000000, 0, 0);
+ pub const OLD_ITALIC: ScriptExtension = ScriptExtension::new(0x100000000000000, 0, 0);
/// Old_Italic
pub const ITAL: ScriptExtension = OLD_ITALIC;
/// Javanese
- pub const JAVANESE: ScriptExtension = ScriptExtension::new(0x100000000000000, 0, 0);
+ pub const JAVANESE: ScriptExtension = ScriptExtension::new(0x200000000000000, 0, 0);
/// Javanese
pub const JAVA: ScriptExtension = JAVANESE;
/// Kayah_Li
- pub const KAYAH_LI: ScriptExtension = ScriptExtension::new(0x200000000000000, 0, 0);
+ pub const KAYAH_LI: ScriptExtension = ScriptExtension::new(0x400000000000000, 0, 0);
/// Kayah_Li
pub const KALI: ScriptExtension = KAYAH_LI;
/// Katakana
- pub const KATAKANA: ScriptExtension = ScriptExtension::new(0x400000000000000, 0, 0);
+ pub const KATAKANA: ScriptExtension = ScriptExtension::new(0x800000000000000, 0, 0);
/// Katakana
pub const KANA: ScriptExtension = KATAKANA;
+ /// Kawi
+ pub const KAWI: ScriptExtension = ScriptExtension::new(0x1000000000000000, 0, 0);
/// Kharoshthi
- pub const KHAROSHTHI: ScriptExtension = ScriptExtension::new(0x800000000000000, 0, 0);
+ pub const KHAROSHTHI: ScriptExtension = ScriptExtension::new(0x2000000000000000, 0, 0);
/// Kharoshthi
pub const KHAR: ScriptExtension = KHAROSHTHI;
/// Khmer
- pub const KHMER: ScriptExtension = ScriptExtension::new(0x1000000000000000, 0, 0);
+ pub const KHMER: ScriptExtension = ScriptExtension::new(0x4000000000000000, 0, 0);
/// Khmer
pub const KHMR: ScriptExtension = KHMER;
/// Khojki
- pub const KHOJKI: ScriptExtension = ScriptExtension::new(0x2000000000000000, 0, 0);
+ pub const KHOJKI: ScriptExtension = ScriptExtension::new(0x8000000000000000, 0, 0);
/// Khojki
pub const KHOJ: ScriptExtension = KHOJKI;
/// Khitan_Small_Script
- pub const KHITAN_SMALL_SCRIPT: ScriptExtension = ScriptExtension::new(0x4000000000000000, 0, 0);
+ pub const KHITAN_SMALL_SCRIPT: ScriptExtension = ScriptExtension::new(0, 0x1, 0);
/// Khitan_Small_Script
pub const KITS: ScriptExtension = KHITAN_SMALL_SCRIPT;
/// Kannada
- pub const KANNADA: ScriptExtension = ScriptExtension::new(0x8000000000000000, 0, 0);
+ pub const KANNADA: ScriptExtension = ScriptExtension::new(0, 0x2, 0);
/// Kannada
pub const KNDA: ScriptExtension = KANNADA;
/// Kaithi
- pub const KAITHI: ScriptExtension = ScriptExtension::new(0, 0x1, 0);
+ pub const KAITHI: ScriptExtension = ScriptExtension::new(0, 0x4, 0);
/// Kaithi
pub const KTHI: ScriptExtension = KAITHI;
/// Tai_Tham
- pub const TAI_THAM: ScriptExtension = ScriptExtension::new(0, 0x2, 0);
+ pub const TAI_THAM: ScriptExtension = ScriptExtension::new(0, 0x8, 0);
/// Tai_Tham
pub const LANA: ScriptExtension = TAI_THAM;
/// Lao
- pub const LAO: ScriptExtension = ScriptExtension::new(0, 0x4, 0);
+ pub const LAO: ScriptExtension = ScriptExtension::new(0, 0x10, 0);
/// Lao
pub const LAOO: ScriptExtension = LAO;
/// Latin
- pub const LATIN: ScriptExtension = ScriptExtension::new(0, 0x8, 0);
+ pub const LATIN: ScriptExtension = ScriptExtension::new(0, 0x20, 0);
/// Latin
pub const LATN: ScriptExtension = LATIN;
/// Lepcha
- pub const LEPCHA: ScriptExtension = ScriptExtension::new(0, 0x10, 0);
+ pub const LEPCHA: ScriptExtension = ScriptExtension::new(0, 0x40, 0);
/// Lepcha
pub const LEPC: ScriptExtension = LEPCHA;
/// Limbu
- pub const LIMBU: ScriptExtension = ScriptExtension::new(0, 0x20, 0);
+ pub const LIMBU: ScriptExtension = ScriptExtension::new(0, 0x80, 0);
/// Limbu
pub const LIMB: ScriptExtension = LIMBU;
/// Linear_A
- pub const LINEAR_A: ScriptExtension = ScriptExtension::new(0, 0x40, 0);
+ pub const LINEAR_A: ScriptExtension = ScriptExtension::new(0, 0x100, 0);
/// Linear_A
pub const LINA: ScriptExtension = LINEAR_A;
/// Linear_B
- pub const LINEAR_B: ScriptExtension = ScriptExtension::new(0, 0x80, 0);
+ pub const LINEAR_B: ScriptExtension = ScriptExtension::new(0, 0x200, 0);
/// Linear_B
pub const LINB: ScriptExtension = LINEAR_B;
/// Lisu
- pub const LISU: ScriptExtension = ScriptExtension::new(0, 0x100, 0);
+ pub const LISU: ScriptExtension = ScriptExtension::new(0, 0x400, 0);
/// Lycian
- pub const LYCIAN: ScriptExtension = ScriptExtension::new(0, 0x200, 0);
+ pub const LYCIAN: ScriptExtension = ScriptExtension::new(0, 0x800, 0);
/// Lycian
pub const LYCI: ScriptExtension = LYCIAN;
/// Lydian
- pub const LYDIAN: ScriptExtension = ScriptExtension::new(0, 0x400, 0);
+ pub const LYDIAN: ScriptExtension = ScriptExtension::new(0, 0x1000, 0);
/// Lydian
pub const LYDI: ScriptExtension = LYDIAN;
/// Mahajani
- pub const MAHAJANI: ScriptExtension = ScriptExtension::new(0, 0x800, 0);
+ pub const MAHAJANI: ScriptExtension = ScriptExtension::new(0, 0x2000, 0);
/// Mahajani
pub const MAHJ: ScriptExtension = MAHAJANI;
/// Makasar
- pub const MAKASAR: ScriptExtension = ScriptExtension::new(0, 0x1000, 0);
+ pub const MAKASAR: ScriptExtension = ScriptExtension::new(0, 0x4000, 0);
/// Makasar
pub const MAKA: ScriptExtension = MAKASAR;
/// Mandaic
- pub const MANDAIC: ScriptExtension = ScriptExtension::new(0, 0x2000, 0);
+ pub const MANDAIC: ScriptExtension = ScriptExtension::new(0, 0x8000, 0);
/// Mandaic
pub const MAND: ScriptExtension = MANDAIC;
/// Manichaean
- pub const MANICHAEAN: ScriptExtension = ScriptExtension::new(0, 0x4000, 0);
+ pub const MANICHAEAN: ScriptExtension = ScriptExtension::new(0, 0x10000, 0);
/// Manichaean
pub const MANI: ScriptExtension = MANICHAEAN;
/// Marchen
- pub const MARCHEN: ScriptExtension = ScriptExtension::new(0, 0x8000, 0);
+ pub const MARCHEN: ScriptExtension = ScriptExtension::new(0, 0x20000, 0);
/// Marchen
pub const MARC: ScriptExtension = MARCHEN;
/// Medefaidrin
- pub const MEDEFAIDRIN: ScriptExtension = ScriptExtension::new(0, 0x10000, 0);
+ pub const MEDEFAIDRIN: ScriptExtension = ScriptExtension::new(0, 0x40000, 0);
/// Medefaidrin
pub const MEDF: ScriptExtension = MEDEFAIDRIN;
/// Mende_Kikakui
- pub const MENDE_KIKAKUI: ScriptExtension = ScriptExtension::new(0, 0x20000, 0);
+ pub const MENDE_KIKAKUI: ScriptExtension = ScriptExtension::new(0, 0x80000, 0);
/// Mende_Kikakui
pub const MEND: ScriptExtension = MENDE_KIKAKUI;
/// Meroitic_Cursive
- pub const MEROITIC_CURSIVE: ScriptExtension = ScriptExtension::new(0, 0x40000, 0);
+ pub const MEROITIC_CURSIVE: ScriptExtension = ScriptExtension::new(0, 0x100000, 0);
/// Meroitic_Cursive
pub const MERC: ScriptExtension = MEROITIC_CURSIVE;
/// Meroitic_Hieroglyphs
- pub const MEROITIC_HIEROGLYPHS: ScriptExtension = ScriptExtension::new(0, 0x80000, 0);
+ pub const MEROITIC_HIEROGLYPHS: ScriptExtension = ScriptExtension::new(0, 0x200000, 0);
/// Meroitic_Hieroglyphs
pub const MERO: ScriptExtension = MEROITIC_HIEROGLYPHS;
/// Malayalam
- pub const MALAYALAM: ScriptExtension = ScriptExtension::new(0, 0x100000, 0);
+ pub const MALAYALAM: ScriptExtension = ScriptExtension::new(0, 0x400000, 0);
/// Malayalam
pub const MLYM: ScriptExtension = MALAYALAM;
/// Modi
- pub const MODI: ScriptExtension = ScriptExtension::new(0, 0x200000, 0);
+ pub const MODI: ScriptExtension = ScriptExtension::new(0, 0x800000, 0);
/// Mongolian
- pub const MONGOLIAN: ScriptExtension = ScriptExtension::new(0, 0x400000, 0);
+ pub const MONGOLIAN: ScriptExtension = ScriptExtension::new(0, 0x1000000, 0);
/// Mongolian
pub const MONG: ScriptExtension = MONGOLIAN;
/// Mro
- pub const MRO: ScriptExtension = ScriptExtension::new(0, 0x800000, 0);
+ pub const MRO: ScriptExtension = ScriptExtension::new(0, 0x2000000, 0);
/// Mro
pub const MROO: ScriptExtension = MRO;
/// Meetei_Mayek
- pub const MEETEI_MAYEK: ScriptExtension = ScriptExtension::new(0, 0x1000000, 0);
+ pub const MEETEI_MAYEK: ScriptExtension = ScriptExtension::new(0, 0x4000000, 0);
/// Meetei_Mayek
pub const MTEI: ScriptExtension = MEETEI_MAYEK;
/// Multani
- pub const MULTANI: ScriptExtension = ScriptExtension::new(0, 0x2000000, 0);
+ pub const MULTANI: ScriptExtension = ScriptExtension::new(0, 0x8000000, 0);
/// Multani
pub const MULT: ScriptExtension = MULTANI;
/// Myanmar
- pub const MYANMAR: ScriptExtension = ScriptExtension::new(0, 0x4000000, 0);
+ pub const MYANMAR: ScriptExtension = ScriptExtension::new(0, 0x10000000, 0);
/// Myanmar
pub const MYMR: ScriptExtension = MYANMAR;
+ /// Nag_Mundari
+ pub const NAG_MUNDARI: ScriptExtension = ScriptExtension::new(0, 0x20000000, 0);
+ /// Nag_Mundari
+ pub const NAGM: ScriptExtension = NAG_MUNDARI;
/// Nandinagari
- pub const NANDINAGARI: ScriptExtension = ScriptExtension::new(0, 0x8000000, 0);
+ pub const NANDINAGARI: ScriptExtension = ScriptExtension::new(0, 0x40000000, 0);
/// Nandinagari
pub const NAND: ScriptExtension = NANDINAGARI;
/// Old_North_Arabian
- pub const OLD_NORTH_ARABIAN: ScriptExtension = ScriptExtension::new(0, 0x10000000, 0);
+ pub const OLD_NORTH_ARABIAN: ScriptExtension = ScriptExtension::new(0, 0x80000000, 0);
/// Old_North_Arabian
pub const NARB: ScriptExtension = OLD_NORTH_ARABIAN;
/// Nabataean
- pub const NABATAEAN: ScriptExtension = ScriptExtension::new(0, 0x20000000, 0);
+ pub const NABATAEAN: ScriptExtension = ScriptExtension::new(0, 0x100000000, 0);
/// Nabataean
pub const NBAT: ScriptExtension = NABATAEAN;
/// Newa
- pub const NEWA: ScriptExtension = ScriptExtension::new(0, 0x40000000, 0);
+ pub const NEWA: ScriptExtension = ScriptExtension::new(0, 0x200000000, 0);
/// Nko
- pub const NKO: ScriptExtension = ScriptExtension::new(0, 0x80000000, 0);
+ pub const NKO: ScriptExtension = ScriptExtension::new(0, 0x400000000, 0);
/// Nko
pub const NKOO: ScriptExtension = NKO;
/// Nushu
- pub const NUSHU: ScriptExtension = ScriptExtension::new(0, 0x100000000, 0);
+ pub const NUSHU: ScriptExtension = ScriptExtension::new(0, 0x800000000, 0);
/// Nushu
pub const NSHU: ScriptExtension = NUSHU;
/// Ogham
- pub const OGHAM: ScriptExtension = ScriptExtension::new(0, 0x200000000, 0);
+ pub const OGHAM: ScriptExtension = ScriptExtension::new(0, 0x1000000000, 0);
/// Ogham
pub const OGAM: ScriptExtension = OGHAM;
/// Ol_Chiki
- pub const OL_CHIKI: ScriptExtension = ScriptExtension::new(0, 0x400000000, 0);
+ pub const OL_CHIKI: ScriptExtension = ScriptExtension::new(0, 0x2000000000, 0);
/// Ol_Chiki
pub const OLCK: ScriptExtension = OL_CHIKI;
/// Old_Turkic
- pub const OLD_TURKIC: ScriptExtension = ScriptExtension::new(0, 0x800000000, 0);
+ pub const OLD_TURKIC: ScriptExtension = ScriptExtension::new(0, 0x4000000000, 0);
/// Old_Turkic
pub const ORKH: ScriptExtension = OLD_TURKIC;
/// Oriya
- pub const ORIYA: ScriptExtension = ScriptExtension::new(0, 0x1000000000, 0);
+ pub const ORIYA: ScriptExtension = ScriptExtension::new(0, 0x8000000000, 0);
/// Oriya
pub const ORYA: ScriptExtension = ORIYA;
/// Osage
- pub const OSAGE: ScriptExtension = ScriptExtension::new(0, 0x2000000000, 0);
+ pub const OSAGE: ScriptExtension = ScriptExtension::new(0, 0x10000000000, 0);
/// Osage
pub const OSGE: ScriptExtension = OSAGE;
/// Osmanya
- pub const OSMANYA: ScriptExtension = ScriptExtension::new(0, 0x4000000000, 0);
+ pub const OSMANYA: ScriptExtension = ScriptExtension::new(0, 0x20000000000, 0);
/// Osmanya
pub const OSMA: ScriptExtension = OSMANYA;
+ /// Old_Uyghur
+ pub const OLD_UYGHUR: ScriptExtension = ScriptExtension::new(0, 0x40000000000, 0);
+ /// Old_Uyghur
+ pub const OUGR: ScriptExtension = OLD_UYGHUR;
/// Palmyrene
- pub const PALMYRENE: ScriptExtension = ScriptExtension::new(0, 0x8000000000, 0);
+ pub const PALMYRENE: ScriptExtension = ScriptExtension::new(0, 0x80000000000, 0);
/// Palmyrene
pub const PALM: ScriptExtension = PALMYRENE;
/// Pau_Cin_Hau
- pub const PAU_CIN_HAU: ScriptExtension = ScriptExtension::new(0, 0x10000000000, 0);
+ pub const PAU_CIN_HAU: ScriptExtension = ScriptExtension::new(0, 0x100000000000, 0);
/// Pau_Cin_Hau
pub const PAUC: ScriptExtension = PAU_CIN_HAU;
/// Old_Permic
- pub const OLD_PERMIC: ScriptExtension = ScriptExtension::new(0, 0x20000000000, 0);
+ pub const OLD_PERMIC: ScriptExtension = ScriptExtension::new(0, 0x200000000000, 0);
/// Old_Permic
pub const PERM: ScriptExtension = OLD_PERMIC;
/// Phags_Pa
- pub const PHAGS_PA: ScriptExtension = ScriptExtension::new(0, 0x40000000000, 0);
+ pub const PHAGS_PA: ScriptExtension = ScriptExtension::new(0, 0x400000000000, 0);
/// Phags_Pa
pub const PHAG: ScriptExtension = PHAGS_PA;
/// Inscriptional_Pahlavi
- pub const INSCRIPTIONAL_PAHLAVI: ScriptExtension = ScriptExtension::new(0, 0x80000000000, 0);
+ pub const INSCRIPTIONAL_PAHLAVI: ScriptExtension = ScriptExtension::new(0, 0x800000000000, 0);
/// Inscriptional_Pahlavi
pub const PHLI: ScriptExtension = INSCRIPTIONAL_PAHLAVI;
/// Psalter_Pahlavi
- pub const PSALTER_PAHLAVI: ScriptExtension = ScriptExtension::new(0, 0x100000000000, 0);
+ pub const PSALTER_PAHLAVI: ScriptExtension = ScriptExtension::new(0, 0x1000000000000, 0);
/// Psalter_Pahlavi
pub const PHLP: ScriptExtension = PSALTER_PAHLAVI;
/// Phoenician
- pub const PHOENICIAN: ScriptExtension = ScriptExtension::new(0, 0x200000000000, 0);
+ pub const PHOENICIAN: ScriptExtension = ScriptExtension::new(0, 0x2000000000000, 0);
/// Phoenician
pub const PHNX: ScriptExtension = PHOENICIAN;
/// Miao
- pub const MIAO: ScriptExtension = ScriptExtension::new(0, 0x400000000000, 0);
+ pub const MIAO: ScriptExtension = ScriptExtension::new(0, 0x4000000000000, 0);
/// Miao
pub const PLRD: ScriptExtension = MIAO;
/// Inscriptional_Parthian
- pub const INSCRIPTIONAL_PARTHIAN: ScriptExtension = ScriptExtension::new(0, 0x800000000000, 0);
+ pub const INSCRIPTIONAL_PARTHIAN: ScriptExtension = ScriptExtension::new(0, 0x8000000000000, 0);
/// Inscriptional_Parthian
pub const PRTI: ScriptExtension = INSCRIPTIONAL_PARTHIAN;
/// Rejang
- pub const REJANG: ScriptExtension = ScriptExtension::new(0, 0x1000000000000, 0);
+ pub const REJANG: ScriptExtension = ScriptExtension::new(0, 0x10000000000000, 0);
/// Rejang
pub const RJNG: ScriptExtension = REJANG;
/// Hanifi_Rohingya
- pub const HANIFI_ROHINGYA: ScriptExtension = ScriptExtension::new(0, 0x2000000000000, 0);
+ pub const HANIFI_ROHINGYA: ScriptExtension = ScriptExtension::new(0, 0x20000000000000, 0);
/// Hanifi_Rohingya
pub const ROHG: ScriptExtension = HANIFI_ROHINGYA;
/// Runic
- pub const RUNIC: ScriptExtension = ScriptExtension::new(0, 0x4000000000000, 0);
+ pub const RUNIC: ScriptExtension = ScriptExtension::new(0, 0x40000000000000, 0);
/// Runic
pub const RUNR: ScriptExtension = RUNIC;
/// Samaritan
- pub const SAMARITAN: ScriptExtension = ScriptExtension::new(0, 0x8000000000000, 0);
+ pub const SAMARITAN: ScriptExtension = ScriptExtension::new(0, 0x80000000000000, 0);
/// Samaritan
pub const SAMR: ScriptExtension = SAMARITAN;
/// Old_South_Arabian
- pub const OLD_SOUTH_ARABIAN: ScriptExtension = ScriptExtension::new(0, 0x10000000000000, 0);
+ pub const OLD_SOUTH_ARABIAN: ScriptExtension = ScriptExtension::new(0, 0x100000000000000, 0);
/// Old_South_Arabian
pub const SARB: ScriptExtension = OLD_SOUTH_ARABIAN;
/// Saurashtra
- pub const SAURASHTRA: ScriptExtension = ScriptExtension::new(0, 0x20000000000000, 0);
+ pub const SAURASHTRA: ScriptExtension = ScriptExtension::new(0, 0x200000000000000, 0);
/// Saurashtra
pub const SAUR: ScriptExtension = SAURASHTRA;
/// SignWriting
- pub const SIGNWRITING: ScriptExtension = ScriptExtension::new(0, 0x40000000000000, 0);
+ pub const SIGNWRITING: ScriptExtension = ScriptExtension::new(0, 0x400000000000000, 0);
/// SignWriting
pub const SGNW: ScriptExtension = SIGNWRITING;
/// Shavian
- pub const SHAVIAN: ScriptExtension = ScriptExtension::new(0, 0x80000000000000, 0);
+ pub const SHAVIAN: ScriptExtension = ScriptExtension::new(0, 0x800000000000000, 0);
/// Shavian
pub const SHAW: ScriptExtension = SHAVIAN;
/// Sharada
- pub const SHARADA: ScriptExtension = ScriptExtension::new(0, 0x100000000000000, 0);
+ pub const SHARADA: ScriptExtension = ScriptExtension::new(0, 0x1000000000000000, 0);
/// Sharada
pub const SHRD: ScriptExtension = SHARADA;
/// Siddham
- pub const SIDDHAM: ScriptExtension = ScriptExtension::new(0, 0x200000000000000, 0);
+ pub const SIDDHAM: ScriptExtension = ScriptExtension::new(0, 0x2000000000000000, 0);
/// Siddham
pub const SIDD: ScriptExtension = SIDDHAM;
/// Khudawadi
- pub const KHUDAWADI: ScriptExtension = ScriptExtension::new(0, 0x400000000000000, 0);
+ pub const KHUDAWADI: ScriptExtension = ScriptExtension::new(0, 0x4000000000000000, 0);
/// Khudawadi
pub const SIND: ScriptExtension = KHUDAWADI;
/// Sinhala
- pub const SINHALA: ScriptExtension = ScriptExtension::new(0, 0x800000000000000, 0);
+ pub const SINHALA: ScriptExtension = ScriptExtension::new(0, 0x8000000000000000, 0);
/// Sinhala
pub const SINH: ScriptExtension = SINHALA;
/// Sogdian
- pub const SOGDIAN: ScriptExtension = ScriptExtension::new(0, 0x1000000000000000, 0);
+ pub const SOGDIAN: ScriptExtension = ScriptExtension::new(0, 0, 0x1);
/// Sogdian
pub const SOGD: ScriptExtension = SOGDIAN;
/// Old_Sogdian
- pub const OLD_SOGDIAN: ScriptExtension = ScriptExtension::new(0, 0x2000000000000000, 0);
+ pub const OLD_SOGDIAN: ScriptExtension = ScriptExtension::new(0, 0, 0x2);
/// Old_Sogdian
pub const SOGO: ScriptExtension = OLD_SOGDIAN;
/// Sora_Sompeng
- pub const SORA_SOMPENG: ScriptExtension = ScriptExtension::new(0, 0x4000000000000000, 0);
+ pub const SORA_SOMPENG: ScriptExtension = ScriptExtension::new(0, 0, 0x4);
/// Sora_Sompeng
pub const SORA: ScriptExtension = SORA_SOMPENG;
/// Soyombo
- pub const SOYOMBO: ScriptExtension = ScriptExtension::new(0, 0x8000000000000000, 0);
+ pub const SOYOMBO: ScriptExtension = ScriptExtension::new(0, 0, 0x8);
/// Soyombo
pub const SOYO: ScriptExtension = SOYOMBO;
/// Sundanese
- pub const SUNDANESE: ScriptExtension = ScriptExtension::new(0, 0, 0x1);
+ pub const SUNDANESE: ScriptExtension = ScriptExtension::new(0, 0, 0x10);
/// Sundanese
pub const SUND: ScriptExtension = SUNDANESE;
/// Syloti_Nagri
- pub const SYLOTI_NAGRI: ScriptExtension = ScriptExtension::new(0, 0, 0x2);
+ pub const SYLOTI_NAGRI: ScriptExtension = ScriptExtension::new(0, 0, 0x20);
/// Syloti_Nagri
pub const SYLO: ScriptExtension = SYLOTI_NAGRI;
/// Syriac
- pub const SYRIAC: ScriptExtension = ScriptExtension::new(0, 0, 0x4);
+ pub const SYRIAC: ScriptExtension = ScriptExtension::new(0, 0, 0x40);
/// Syriac
pub const SYRC: ScriptExtension = SYRIAC;
/// Tagbanwa
- pub const TAGBANWA: ScriptExtension = ScriptExtension::new(0, 0, 0x8);
+ pub const TAGBANWA: ScriptExtension = ScriptExtension::new(0, 0, 0x80);
/// Tagbanwa
pub const TAGB: ScriptExtension = TAGBANWA;
/// Takri
- pub const TAKRI: ScriptExtension = ScriptExtension::new(0, 0, 0x10);
+ pub const TAKRI: ScriptExtension = ScriptExtension::new(0, 0, 0x100);
/// Takri
pub const TAKR: ScriptExtension = TAKRI;
/// Tai_Le
- pub const TAI_LE: ScriptExtension = ScriptExtension::new(0, 0, 0x20);
+ pub const TAI_LE: ScriptExtension = ScriptExtension::new(0, 0, 0x200);
/// Tai_Le
pub const TALE: ScriptExtension = TAI_LE;
/// New_Tai_Lue
- pub const NEW_TAI_LUE: ScriptExtension = ScriptExtension::new(0, 0, 0x40);
+ pub const NEW_TAI_LUE: ScriptExtension = ScriptExtension::new(0, 0, 0x400);
/// New_Tai_Lue
pub const TALU: ScriptExtension = NEW_TAI_LUE;
/// Tamil
- pub const TAMIL: ScriptExtension = ScriptExtension::new(0, 0, 0x80);
+ pub const TAMIL: ScriptExtension = ScriptExtension::new(0, 0, 0x800);
/// Tamil
pub const TAML: ScriptExtension = TAMIL;
/// Tangut
- pub const TANGUT: ScriptExtension = ScriptExtension::new(0, 0, 0x100);
+ pub const TANGUT: ScriptExtension = ScriptExtension::new(0, 0, 0x1000);
/// Tangut
pub const TANG: ScriptExtension = TANGUT;
/// Tai_Viet
- pub const TAI_VIET: ScriptExtension = ScriptExtension::new(0, 0, 0x200);
+ pub const TAI_VIET: ScriptExtension = ScriptExtension::new(0, 0, 0x2000);
/// Tai_Viet
pub const TAVT: ScriptExtension = TAI_VIET;
/// Telugu
- pub const TELUGU: ScriptExtension = ScriptExtension::new(0, 0, 0x400);
+ pub const TELUGU: ScriptExtension = ScriptExtension::new(0, 0, 0x4000);
/// Telugu
pub const TELU: ScriptExtension = TELUGU;
/// Tifinagh
- pub const TIFINAGH: ScriptExtension = ScriptExtension::new(0, 0, 0x800);
+ pub const TIFINAGH: ScriptExtension = ScriptExtension::new(0, 0, 0x8000);
/// Tifinagh
pub const TFNG: ScriptExtension = TIFINAGH;
/// Tagalog
- pub const TAGALOG: ScriptExtension = ScriptExtension::new(0, 0, 0x1000);
+ pub const TAGALOG: ScriptExtension = ScriptExtension::new(0, 0, 0x10000);
/// Tagalog
pub const TGLG: ScriptExtension = TAGALOG;
/// Thaana
- pub const THAANA: ScriptExtension = ScriptExtension::new(0, 0, 0x2000);
+ pub const THAANA: ScriptExtension = ScriptExtension::new(0, 0, 0x20000);
/// Thaana
pub const THAA: ScriptExtension = THAANA;
/// Thai
- pub const THAI: ScriptExtension = ScriptExtension::new(0, 0, 0x4000);
+ pub const THAI: ScriptExtension = ScriptExtension::new(0, 0, 0x40000);
/// Tibetan
- pub const TIBETAN: ScriptExtension = ScriptExtension::new(0, 0, 0x8000);
+ pub const TIBETAN: ScriptExtension = ScriptExtension::new(0, 0, 0x80000);
/// Tibetan
pub const TIBT: ScriptExtension = TIBETAN;
/// Tirhuta
- pub const TIRHUTA: ScriptExtension = ScriptExtension::new(0, 0, 0x10000);
+ pub const TIRHUTA: ScriptExtension = ScriptExtension::new(0, 0, 0x100000);
/// Tirhuta
pub const TIRH: ScriptExtension = TIRHUTA;
+ /// Tangsa
+ pub const TANGSA: ScriptExtension = ScriptExtension::new(0, 0, 0x200000);
+ /// Tangsa
+ pub const TNSA: ScriptExtension = TANGSA;
+ /// Toto
+ pub const TOTO: ScriptExtension = ScriptExtension::new(0, 0, 0x400000);
/// Ugaritic
- pub const UGARITIC: ScriptExtension = ScriptExtension::new(0, 0, 0x20000);
+ pub const UGARITIC: ScriptExtension = ScriptExtension::new(0, 0, 0x800000);
/// Ugaritic
pub const UGAR: ScriptExtension = UGARITIC;
/// Vai
- pub const VAI: ScriptExtension = ScriptExtension::new(0, 0, 0x40000);
+ pub const VAI: ScriptExtension = ScriptExtension::new(0, 0, 0x1000000);
/// Vai
pub const VAII: ScriptExtension = VAI;
+ /// Vithkuqi
+ pub const VITHKUQI: ScriptExtension = ScriptExtension::new(0, 0, 0x2000000);
+ /// Vithkuqi
+ pub const VITH: ScriptExtension = VITHKUQI;
/// Warang_Citi
- pub const WARANG_CITI: ScriptExtension = ScriptExtension::new(0, 0, 0x80000);
+ pub const WARANG_CITI: ScriptExtension = ScriptExtension::new(0, 0, 0x4000000);
/// Warang_Citi
pub const WARA: ScriptExtension = WARANG_CITI;
/// Wancho
- pub const WANCHO: ScriptExtension = ScriptExtension::new(0, 0, 0x100000);
+ pub const WANCHO: ScriptExtension = ScriptExtension::new(0, 0, 0x8000000);
/// Wancho
pub const WCHO: ScriptExtension = WANCHO;
/// Old_Persian
- pub const OLD_PERSIAN: ScriptExtension = ScriptExtension::new(0, 0, 0x200000);
+ pub const OLD_PERSIAN: ScriptExtension = ScriptExtension::new(0, 0, 0x10000000);
/// Old_Persian
pub const XPEO: ScriptExtension = OLD_PERSIAN;
/// Cuneiform
- pub const CUNEIFORM: ScriptExtension = ScriptExtension::new(0, 0, 0x400000);
+ pub const CUNEIFORM: ScriptExtension = ScriptExtension::new(0, 0, 0x20000000);
/// Cuneiform
pub const XSUX: ScriptExtension = CUNEIFORM;
/// Yezidi
- pub const YEZIDI: ScriptExtension = ScriptExtension::new(0, 0, 0x800000);
+ pub const YEZIDI: ScriptExtension = ScriptExtension::new(0, 0, 0x40000000);
/// Yezidi
pub const YEZI: ScriptExtension = YEZIDI;
/// Yi
- pub const YI: ScriptExtension = ScriptExtension::new(0, 0, 0x1000000);
+ pub const YI: ScriptExtension = ScriptExtension::new(0, 0, 0x80000000);
/// Yi
pub const YIII: ScriptExtension = YI;
/// Zanabazar_Square
- pub const ZANABAZAR_SQUARE: ScriptExtension = ScriptExtension::new(0, 0, 0x2000000);
+ pub const ZANABAZAR_SQUARE: ScriptExtension = ScriptExtension::new(0, 0, 0x100000000);
/// Zanabazar_Square
pub const ZANB: ScriptExtension = ZANABAZAR_SQUARE;
/// Arabic, Coptic
pub const ARAB_COPT: ScriptExtension = ARAB.union(COPT);
/// Arabic, Hanifi_Rohingya
pub const ARAB_ROHG: ScriptExtension = ARAB.union(ROHG);
+ /// Arabic, Nko
+ pub const ARAB_NKOO: ScriptExtension = ARAB.union(NKOO);
/// Arabic, Syriac
pub const ARAB_SYRC: ScriptExtension = ARAB.union(SYRC);
/// Arabic, Thaana
@@ -1002,6 +1042,8 @@ pub mod script_extensions {
pub const KNDA_NAND: ScriptExtension = KNDA.union(NAND);
/// Latin, Mongolian
pub const LATN_MONG: ScriptExtension = LATN.union(MONG);
+ /// Manichaean, Old_Uyghur
+ pub const MANI_OUGR: ScriptExtension = MANI.union(OUGR);
/// Mongolian, Phags_Pa
pub const MONG_PHAG: ScriptExtension = MONG.union(PHAG);
/// Arabic, Syriac, Thaana
@@ -1012,6 +1054,8 @@ pub mod script_extensions {
pub const BENG_CAKM_SYLO: ScriptExtension = BENG.union(CAKM).union(SYLO);
/// Chakma, Myanmar, Tai_Le
pub const CAKM_MYMR_TALE: ScriptExtension = CAKM.union(MYMR).union(TALE);
+ /// Cypro_Minoan, Cypriot, Linear_B
+ pub const CPMN_CPRT_LINB: ScriptExtension = CPMN.union(CPRT).union(LINB);
/// Cypriot, Linear_A, Linear_B
pub const CPRT_LINA_LINB: ScriptExtension = CPRT.union(LINA).union(LINB);
/// Devanagari, Grantha, Kannada
@@ -1028,18 +1072,20 @@ pub mod script_extensions {
pub const BUHD_HANO_TAGB_TGLG: ScriptExtension = BUHD.union(HANO).union(TAGB).union(TGLG);
/// Devanagari, Dogra, Kaithi, Mahajani
pub const DEVA_DOGR_KTHI_MAHJ: ScriptExtension = DEVA.union(DOGR).union(KTHI).union(MAHJ);
- /// Arabic, Hanifi_Rohingya, Syriac, Thaana, Yezidi
- pub const ARAB_ROHG_SYRC_THAA_YEZI: ScriptExtension = ARAB.union(ROHG).union(SYRC).union(THAA).union(YEZI);
/// Bopomofo, Hangul, Han, Hiragana, Katakana
pub const BOPO_HANG_HANI_HIRA_KANA: ScriptExtension = BOPO.union(HANG).union(HANI).union(HIRA).union(KANA);
+ /// Arabic, Nko, Hanifi_Rohingya, Syriac, Thaana, Yezidi
+ pub const ARAB_NKOO_ROHG_SYRC_THAA_YEZI: ScriptExtension = ARAB.union(NKOO).union(ROHG).union(SYRC).union(THAA).union(YEZI);
/// Bopomofo, Hangul, Han, Hiragana, Katakana, Yi
pub const BOPO_HANG_HANI_HIRA_KANA_YIII: ScriptExtension = BOPO.union(HANG).union(HANI).union(HIRA).union(KANA).union(YIII);
/// Devanagari, Kannada, Malayalam, Oriya, Tamil, Telugu
pub const DEVA_KNDA_MLYM_ORYA_TAML_TELU: ScriptExtension = DEVA.union(KNDA).union(MLYM).union(ORYA).union(TAML).union(TELU);
- /// Adlam, Arabic, Mandaic, Manichaean, Psalter_Pahlavi, Hanifi_Rohingya, Sogdian, Syriac
- pub const ADLM_ARAB_MAND_MANI_PHLP_ROHG_SOGD_SYRC: ScriptExtension = ADLM.union(ARAB).union(MAND).union(MANI).union(PHLP).union(ROHG).union(SOGD).union(SYRC);
+ /// Adlam, Arabic, Nko, Hanifi_Rohingya, Syriac, Thaana, Yezidi
+ pub const ADLM_ARAB_NKOO_ROHG_SYRC_THAA_YEZI: ScriptExtension = ADLM.union(ARAB).union(NKOO).union(ROHG).union(SYRC).union(THAA).union(YEZI);
/// Bengali, Devanagari, Grantha, Kannada, Nandinagari, Oriya, Telugu, Tirhuta
pub const BENG_DEVA_GRAN_KNDA_NAND_ORYA_TELU_TIRH: ScriptExtension = BENG.union(DEVA).union(GRAN).union(KNDA).union(NAND).union(ORYA).union(TELU).union(TIRH);
+ /// Adlam, Arabic, Mandaic, Manichaean, Old_Uyghur, Psalter_Pahlavi, Hanifi_Rohingya, Sogdian, Syriac
+ pub const ADLM_ARAB_MAND_MANI_OUGR_PHLP_ROHG_SOGD_SYRC: ScriptExtension = ADLM.union(ARAB).union(MAND).union(MANI).union(OUGR).union(PHLP).union(ROHG).union(SOGD).union(SYRC);
/// Devanagari, Dogra, Gujarati, Gurmukhi, Khojki, Kaithi, Mahajani, Modi, Khudawadi, Takri, Tirhuta
pub const DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH: ScriptExtension = DEVA.union(DOGR).union(GUJR).union(GURU).union(KHOJ).union(KTHI).union(MAHJ).union(MODI).union(SIND).union(TAKR).union(TIRH);
/// Bengali, Devanagari, Grantha, Gujarati, Gurmukhi, Kannada, Latin, Malayalam, Oriya, Tamil, Telugu, Tirhuta
@@ -1089,6 +1135,7 @@ impl Script {
Script::Cherokee => "Cherokee",
Script::Chorasmian => "Chorasmian",
Script::Coptic => "Coptic",
+ Script::Cypro_Minoan => "Cypro_Minoan",
Script::Cypriot => "Cypriot",
Script::Cyrillic => "Cyrillic",
Script::Devanagari => "Devanagari",
@@ -1123,6 +1170,7 @@ impl Script {
Script::Javanese => "Javanese",
Script::Kayah_Li => "Kayah_Li",
Script::Katakana => "Katakana",
+ Script::Kawi => "Kawi",
Script::Kharoshthi => "Kharoshthi",
Script::Khmer => "Khmer",
Script::Khojki => "Khojki",
@@ -1155,6 +1203,7 @@ impl Script {
Script::Meetei_Mayek => "Meetei_Mayek",
Script::Multani => "Multani",
Script::Myanmar => "Myanmar",
+ Script::Nag_Mundari => "Nag_Mundari",
Script::Nandinagari => "Nandinagari",
Script::Old_North_Arabian => "Old_North_Arabian",
Script::Nabataean => "Nabataean",
@@ -1167,6 +1216,7 @@ impl Script {
Script::Oriya => "Oriya",
Script::Osage => "Osage",
Script::Osmanya => "Osmanya",
+ Script::Old_Uyghur => "Old_Uyghur",
Script::Palmyrene => "Palmyrene",
Script::Pau_Cin_Hau => "Pau_Cin_Hau",
Script::Old_Permic => "Old_Permic",
@@ -1209,8 +1259,11 @@ impl Script {
Script::Thai => "Thai",
Script::Tibetan => "Tibetan",
Script::Tirhuta => "Tirhuta",
+ Script::Tangsa => "Tangsa",
+ Script::Toto => "Toto",
Script::Ugaritic => "Ugaritic",
Script::Vai => "Vai",
+ Script::Vithkuqi => "Vithkuqi",
Script::Warang_Citi => "Warang_Citi",
Script::Wancho => "Wancho",
Script::Old_Persian => "Old_Persian",
@@ -1252,6 +1305,7 @@ impl Script {
"Cherokee" => Some(Script::Cherokee),
"Chorasmian" => Some(Script::Chorasmian),
"Coptic" => Some(Script::Coptic),
+ "Cypro_Minoan" => Some(Script::Cypro_Minoan),
"Cypriot" => Some(Script::Cypriot),
"Cyrillic" => Some(Script::Cyrillic),
"Devanagari" => Some(Script::Devanagari),
@@ -1286,6 +1340,7 @@ impl Script {
"Javanese" => Some(Script::Javanese),
"Kayah_Li" => Some(Script::Kayah_Li),
"Katakana" => Some(Script::Katakana),
+ "Kawi" => Some(Script::Kawi),
"Kharoshthi" => Some(Script::Kharoshthi),
"Khmer" => Some(Script::Khmer),
"Khojki" => Some(Script::Khojki),
@@ -1318,6 +1373,7 @@ impl Script {
"Meetei_Mayek" => Some(Script::Meetei_Mayek),
"Multani" => Some(Script::Multani),
"Myanmar" => Some(Script::Myanmar),
+ "Nag_Mundari" => Some(Script::Nag_Mundari),
"Nandinagari" => Some(Script::Nandinagari),
"Old_North_Arabian" => Some(Script::Old_North_Arabian),
"Nabataean" => Some(Script::Nabataean),
@@ -1330,6 +1386,7 @@ impl Script {
"Oriya" => Some(Script::Oriya),
"Osage" => Some(Script::Osage),
"Osmanya" => Some(Script::Osmanya),
+ "Old_Uyghur" => Some(Script::Old_Uyghur),
"Palmyrene" => Some(Script::Palmyrene),
"Pau_Cin_Hau" => Some(Script::Pau_Cin_Hau),
"Old_Permic" => Some(Script::Old_Permic),
@@ -1372,8 +1429,11 @@ impl Script {
"Thai" => Some(Script::Thai),
"Tibetan" => Some(Script::Tibetan),
"Tirhuta" => Some(Script::Tirhuta),
+ "Tangsa" => Some(Script::Tangsa),
+ "Toto" => Some(Script::Toto),
"Ugaritic" => Some(Script::Ugaritic),
"Vai" => Some(Script::Vai),
+ "Vithkuqi" => Some(Script::Vithkuqi),
"Warang_Citi" => Some(Script::Warang_Citi),
"Wancho" => Some(Script::Wancho),
"Old_Persian" => Some(Script::Old_Persian),
@@ -1416,6 +1476,7 @@ impl Script {
Script::Cherokee => "Cher",
Script::Chorasmian => "Chrs",
Script::Coptic => "Copt",
+ Script::Cypro_Minoan => "Cpmn",
Script::Cypriot => "Cprt",
Script::Cyrillic => "Cyrl",
Script::Devanagari => "Deva",
@@ -1450,6 +1511,7 @@ impl Script {
Script::Javanese => "Java",
Script::Kayah_Li => "Kali",
Script::Katakana => "Kana",
+ Script::Kawi => "Kawi",
Script::Kharoshthi => "Khar",
Script::Khmer => "Khmr",
Script::Khojki => "Khoj",
@@ -1482,6 +1544,7 @@ impl Script {
Script::Meetei_Mayek => "Mtei",
Script::Multani => "Mult",
Script::Myanmar => "Mymr",
+ Script::Nag_Mundari => "Nagm",
Script::Nandinagari => "Nand",
Script::Old_North_Arabian => "Narb",
Script::Nabataean => "Nbat",
@@ -1494,6 +1557,7 @@ impl Script {
Script::Oriya => "Orya",
Script::Osage => "Osge",
Script::Osmanya => "Osma",
+ Script::Old_Uyghur => "Ougr",
Script::Palmyrene => "Palm",
Script::Pau_Cin_Hau => "Pauc",
Script::Old_Permic => "Perm",
@@ -1536,8 +1600,11 @@ impl Script {
Script::Thai => "Thai",
Script::Tibetan => "Tibt",
Script::Tirhuta => "Tirh",
+ Script::Tangsa => "Tnsa",
+ Script::Toto => "Toto",
Script::Ugaritic => "Ugar",
Script::Vai => "Vaii",
+ Script::Vithkuqi => "Vith",
Script::Warang_Citi => "Wara",
Script::Wancho => "Wcho",
Script::Old_Persian => "Xpeo",
@@ -1578,6 +1645,7 @@ impl Script {
"Cher" => Some(Script::Cherokee),
"Chrs" => Some(Script::Chorasmian),
"Copt" => Some(Script::Coptic),
+ "Cpmn" => Some(Script::Cypro_Minoan),
"Cprt" => Some(Script::Cypriot),
"Cyrl" => Some(Script::Cyrillic),
"Deva" => Some(Script::Devanagari),
@@ -1612,6 +1680,7 @@ impl Script {
"Java" => Some(Script::Javanese),
"Kali" => Some(Script::Kayah_Li),
"Kana" => Some(Script::Katakana),
+ "Kawi" => Some(Script::Kawi),
"Khar" => Some(Script::Kharoshthi),
"Khmr" => Some(Script::Khmer),
"Khoj" => Some(Script::Khojki),
@@ -1644,6 +1713,7 @@ impl Script {
"Mtei" => Some(Script::Meetei_Mayek),
"Mult" => Some(Script::Multani),
"Mymr" => Some(Script::Myanmar),
+ "Nagm" => Some(Script::Nag_Mundari),
"Nand" => Some(Script::Nandinagari),
"Narb" => Some(Script::Old_North_Arabian),
"Nbat" => Some(Script::Nabataean),
@@ -1656,6 +1726,7 @@ impl Script {
"Orya" => Some(Script::Oriya),
"Osge" => Some(Script::Osage),
"Osma" => Some(Script::Osmanya),
+ "Ougr" => Some(Script::Old_Uyghur),
"Palm" => Some(Script::Palmyrene),
"Pauc" => Some(Script::Pau_Cin_Hau),
"Perm" => Some(Script::Old_Permic),
@@ -1698,8 +1769,11 @@ impl Script {
"Thai" => Some(Script::Thai),
"Tibt" => Some(Script::Tibetan),
"Tirh" => Some(Script::Tirhuta),
+ "Tnsa" => Some(Script::Tangsa),
+ "Toto" => Some(Script::Toto),
"Ugar" => Some(Script::Ugaritic),
"Vaii" => Some(Script::Vai),
+ "Vith" => Some(Script::Vithkuqi),
"Wara" => Some(Script::Warang_Citi),
"Wcho" => Some(Script::Wancho),
"Xpeo" => Some(Script::Old_Persian),
@@ -1739,135 +1813,142 @@ impl Script {
22 => Script::Cherokee,
23 => Script::Chorasmian,
24 => Script::Coptic,
- 25 => Script::Cypriot,
- 26 => Script::Cyrillic,
- 27 => Script::Devanagari,
- 28 => Script::Dives_Akuru,
- 29 => Script::Dogra,
- 30 => Script::Deseret,
- 31 => Script::Duployan,
- 32 => Script::Egyptian_Hieroglyphs,
- 33 => Script::Elbasan,
- 34 => Script::Elymaic,
- 35 => Script::Ethiopic,
- 36 => Script::Georgian,
- 37 => Script::Glagolitic,
- 38 => Script::Gunjala_Gondi,
- 39 => Script::Masaram_Gondi,
- 40 => Script::Gothic,
- 41 => Script::Grantha,
- 42 => Script::Greek,
- 43 => Script::Gujarati,
- 44 => Script::Gurmukhi,
- 45 => Script::Hangul,
- 46 => Script::Han,
- 47 => Script::Hanunoo,
- 48 => Script::Hatran,
- 49 => Script::Hebrew,
- 50 => Script::Hiragana,
- 51 => Script::Anatolian_Hieroglyphs,
- 52 => Script::Pahawh_Hmong,
- 53 => Script::Nyiakeng_Puachue_Hmong,
- 54 => Script::Old_Hungarian,
- 55 => Script::Old_Italic,
- 56 => Script::Javanese,
- 57 => Script::Kayah_Li,
- 58 => Script::Katakana,
- 59 => Script::Kharoshthi,
- 60 => Script::Khmer,
- 61 => Script::Khojki,
- 62 => Script::Khitan_Small_Script,
- 63 => Script::Kannada,
- 64 => Script::Kaithi,
- 65 => Script::Tai_Tham,
- 66 => Script::Lao,
- 67 => Script::Latin,
- 68 => Script::Lepcha,
- 69 => Script::Limbu,
- 70 => Script::Linear_A,
- 71 => Script::Linear_B,
- 72 => Script::Lisu,
- 73 => Script::Lycian,
- 74 => Script::Lydian,
- 75 => Script::Mahajani,
- 76 => Script::Makasar,
- 77 => Script::Mandaic,
- 78 => Script::Manichaean,
- 79 => Script::Marchen,
- 80 => Script::Medefaidrin,
- 81 => Script::Mende_Kikakui,
- 82 => Script::Meroitic_Cursive,
- 83 => Script::Meroitic_Hieroglyphs,
- 84 => Script::Malayalam,
- 85 => Script::Modi,
- 86 => Script::Mongolian,
- 87 => Script::Mro,
- 88 => Script::Meetei_Mayek,
- 89 => Script::Multani,
- 90 => Script::Myanmar,
- 91 => Script::Nandinagari,
- 92 => Script::Old_North_Arabian,
- 93 => Script::Nabataean,
- 94 => Script::Newa,
- 95 => Script::Nko,
- 96 => Script::Nushu,
- 97 => Script::Ogham,
- 98 => Script::Ol_Chiki,
- 99 => Script::Old_Turkic,
- 100 => Script::Oriya,
- 101 => Script::Osage,
- 102 => Script::Osmanya,
- 103 => Script::Palmyrene,
- 104 => Script::Pau_Cin_Hau,
- 105 => Script::Old_Permic,
- 106 => Script::Phags_Pa,
- 107 => Script::Inscriptional_Pahlavi,
- 108 => Script::Psalter_Pahlavi,
- 109 => Script::Phoenician,
- 110 => Script::Miao,
- 111 => Script::Inscriptional_Parthian,
- 112 => Script::Rejang,
- 113 => Script::Hanifi_Rohingya,
- 114 => Script::Runic,
- 115 => Script::Samaritan,
- 116 => Script::Old_South_Arabian,
- 117 => Script::Saurashtra,
- 118 => Script::SignWriting,
- 119 => Script::Shavian,
- 120 => Script::Sharada,
- 121 => Script::Siddham,
- 122 => Script::Khudawadi,
- 123 => Script::Sinhala,
- 124 => Script::Sogdian,
- 125 => Script::Old_Sogdian,
- 126 => Script::Sora_Sompeng,
- 127 => Script::Soyombo,
- 128 => Script::Sundanese,
- 129 => Script::Syloti_Nagri,
- 130 => Script::Syriac,
- 131 => Script::Tagbanwa,
- 132 => Script::Takri,
- 133 => Script::Tai_Le,
- 134 => Script::New_Tai_Lue,
- 135 => Script::Tamil,
- 136 => Script::Tangut,
- 137 => Script::Tai_Viet,
- 138 => Script::Telugu,
- 139 => Script::Tifinagh,
- 140 => Script::Tagalog,
- 141 => Script::Thaana,
- 142 => Script::Thai,
- 143 => Script::Tibetan,
- 144 => Script::Tirhuta,
- 145 => Script::Ugaritic,
- 146 => Script::Vai,
- 147 => Script::Warang_Citi,
- 148 => Script::Wancho,
- 149 => Script::Old_Persian,
- 150 => Script::Cuneiform,
- 151 => Script::Yezidi,
- 152 => Script::Yi,
- 153 => Script::Zanabazar_Square,
+ 25 => Script::Cypro_Minoan,
+ 26 => Script::Cypriot,
+ 27 => Script::Cyrillic,
+ 28 => Script::Devanagari,
+ 29 => Script::Dives_Akuru,
+ 30 => Script::Dogra,
+ 31 => Script::Deseret,
+ 32 => Script::Duployan,
+ 33 => Script::Egyptian_Hieroglyphs,
+ 34 => Script::Elbasan,
+ 35 => Script::Elymaic,
+ 36 => Script::Ethiopic,
+ 37 => Script::Georgian,
+ 38 => Script::Glagolitic,
+ 39 => Script::Gunjala_Gondi,
+ 40 => Script::Masaram_Gondi,
+ 41 => Script::Gothic,
+ 42 => Script::Grantha,
+ 43 => Script::Greek,
+ 44 => Script::Gujarati,
+ 45 => Script::Gurmukhi,
+ 46 => Script::Hangul,
+ 47 => Script::Han,
+ 48 => Script::Hanunoo,
+ 49 => Script::Hatran,
+ 50 => Script::Hebrew,
+ 51 => Script::Hiragana,
+ 52 => Script::Anatolian_Hieroglyphs,
+ 53 => Script::Pahawh_Hmong,
+ 54 => Script::Nyiakeng_Puachue_Hmong,
+ 55 => Script::Old_Hungarian,
+ 56 => Script::Old_Italic,
+ 57 => Script::Javanese,
+ 58 => Script::Kayah_Li,
+ 59 => Script::Katakana,
+ 60 => Script::Kawi,
+ 61 => Script::Kharoshthi,
+ 62 => Script::Khmer,
+ 63 => Script::Khojki,
+ 64 => Script::Khitan_Small_Script,
+ 65 => Script::Kannada,
+ 66 => Script::Kaithi,
+ 67 => Script::Tai_Tham,
+ 68 => Script::Lao,
+ 69 => Script::Latin,
+ 70 => Script::Lepcha,
+ 71 => Script::Limbu,
+ 72 => Script::Linear_A,
+ 73 => Script::Linear_B,
+ 74 => Script::Lisu,
+ 75 => Script::Lycian,
+ 76 => Script::Lydian,
+ 77 => Script::Mahajani,
+ 78 => Script::Makasar,
+ 79 => Script::Mandaic,
+ 80 => Script::Manichaean,
+ 81 => Script::Marchen,
+ 82 => Script::Medefaidrin,
+ 83 => Script::Mende_Kikakui,
+ 84 => Script::Meroitic_Cursive,
+ 85 => Script::Meroitic_Hieroglyphs,
+ 86 => Script::Malayalam,
+ 87 => Script::Modi,
+ 88 => Script::Mongolian,
+ 89 => Script::Mro,
+ 90 => Script::Meetei_Mayek,
+ 91 => Script::Multani,
+ 92 => Script::Myanmar,
+ 93 => Script::Nag_Mundari,
+ 94 => Script::Nandinagari,
+ 95 => Script::Old_North_Arabian,
+ 96 => Script::Nabataean,
+ 97 => Script::Newa,
+ 98 => Script::Nko,
+ 99 => Script::Nushu,
+ 100 => Script::Ogham,
+ 101 => Script::Ol_Chiki,
+ 102 => Script::Old_Turkic,
+ 103 => Script::Oriya,
+ 104 => Script::Osage,
+ 105 => Script::Osmanya,
+ 106 => Script::Old_Uyghur,
+ 107 => Script::Palmyrene,
+ 108 => Script::Pau_Cin_Hau,
+ 109 => Script::Old_Permic,
+ 110 => Script::Phags_Pa,
+ 111 => Script::Inscriptional_Pahlavi,
+ 112 => Script::Psalter_Pahlavi,
+ 113 => Script::Phoenician,
+ 114 => Script::Miao,
+ 115 => Script::Inscriptional_Parthian,
+ 116 => Script::Rejang,
+ 117 => Script::Hanifi_Rohingya,
+ 118 => Script::Runic,
+ 119 => Script::Samaritan,
+ 120 => Script::Old_South_Arabian,
+ 121 => Script::Saurashtra,
+ 122 => Script::SignWriting,
+ 123 => Script::Shavian,
+ 124 => Script::Sharada,
+ 125 => Script::Siddham,
+ 126 => Script::Khudawadi,
+ 127 => Script::Sinhala,
+ 128 => Script::Sogdian,
+ 129 => Script::Old_Sogdian,
+ 130 => Script::Sora_Sompeng,
+ 131 => Script::Soyombo,
+ 132 => Script::Sundanese,
+ 133 => Script::Syloti_Nagri,
+ 134 => Script::Syriac,
+ 135 => Script::Tagbanwa,
+ 136 => Script::Takri,
+ 137 => Script::Tai_Le,
+ 138 => Script::New_Tai_Lue,
+ 139 => Script::Tamil,
+ 140 => Script::Tangut,
+ 141 => Script::Tai_Viet,
+ 142 => Script::Telugu,
+ 143 => Script::Tifinagh,
+ 144 => Script::Tagalog,
+ 145 => Script::Thaana,
+ 146 => Script::Thai,
+ 147 => Script::Tibetan,
+ 148 => Script::Tirhuta,
+ 149 => Script::Tangsa,
+ 150 => Script::Toto,
+ 151 => Script::Ugaritic,
+ 152 => Script::Vai,
+ 153 => Script::Vithkuqi,
+ 154 => Script::Warang_Citi,
+ 155 => Script::Wancho,
+ 156 => Script::Old_Persian,
+ 157 => Script::Cuneiform,
+ 158 => Script::Yezidi,
+ 159 => Script::Yi,
+ 160 => Script::Zanabazar_Square,
_ => unreachable!(),
}
}
@@ -1966,7 +2047,7 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
Script::Arabic), ('\u{60b}', '\u{60b}', Script::Arabic), ('\u{60c}', '\u{60c}',
Script::Common), ('\u{60d}', '\u{60d}', Script::Arabic), ('\u{60e}', '\u{60f}',
Script::Arabic), ('\u{610}', '\u{61a}', Script::Arabic), ('\u{61b}', '\u{61b}',
- Script::Common), ('\u{61c}', '\u{61c}', Script::Arabic), ('\u{61e}', '\u{61e}',
+ Script::Common), ('\u{61c}', '\u{61c}', Script::Arabic), ('\u{61d}', '\u{61e}',
Script::Arabic), ('\u{61f}', '\u{61f}', Script::Common), ('\u{620}', '\u{63f}',
Script::Arabic), ('\u{640}', '\u{640}', Script::Common), ('\u{641}', '\u{64a}',
Script::Arabic), ('\u{64b}', '\u{655}', Script::Inherited), ('\u{656}', '\u{65f}',
@@ -1996,105 +2077,109 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
Script::Samaritan), ('\u{829}', '\u{82d}', Script::Samaritan), ('\u{830}', '\u{83e}',
Script::Samaritan), ('\u{840}', '\u{858}', Script::Mandaic), ('\u{859}', '\u{85b}',
Script::Mandaic), ('\u{85e}', '\u{85e}', Script::Mandaic), ('\u{860}', '\u{86a}',
- Script::Syriac), ('\u{8a0}', '\u{8b4}', Script::Arabic), ('\u{8b6}', '\u{8c7}',
- Script::Arabic), ('\u{8d3}', '\u{8e1}', Script::Arabic), ('\u{8e2}', '\u{8e2}',
- Script::Common), ('\u{8e3}', '\u{8ff}', Script::Arabic), ('\u{900}', '\u{902}',
- Script::Devanagari), ('\u{903}', '\u{903}', Script::Devanagari), ('\u{904}', '\u{939}',
- Script::Devanagari), ('\u{93a}', '\u{93a}', Script::Devanagari), ('\u{93b}', '\u{93b}',
- Script::Devanagari), ('\u{93c}', '\u{93c}', Script::Devanagari), ('\u{93d}', '\u{93d}',
- Script::Devanagari), ('\u{93e}', '\u{940}', Script::Devanagari), ('\u{941}', '\u{948}',
- Script::Devanagari), ('\u{949}', '\u{94c}', Script::Devanagari), ('\u{94d}', '\u{94d}',
- Script::Devanagari), ('\u{94e}', '\u{94f}', Script::Devanagari), ('\u{950}', '\u{950}',
- Script::Devanagari), ('\u{951}', '\u{954}', Script::Inherited), ('\u{955}', '\u{957}',
- Script::Devanagari), ('\u{958}', '\u{961}', Script::Devanagari), ('\u{962}', '\u{963}',
- Script::Devanagari), ('\u{964}', '\u{965}', Script::Common), ('\u{966}', '\u{96f}',
- Script::Devanagari), ('\u{970}', '\u{970}', Script::Devanagari), ('\u{971}', '\u{971}',
- Script::Devanagari), ('\u{972}', '\u{97f}', Script::Devanagari), ('\u{980}', '\u{980}',
- Script::Bengali), ('\u{981}', '\u{981}', Script::Bengali), ('\u{982}', '\u{983}',
- Script::Bengali), ('\u{985}', '\u{98c}', Script::Bengali), ('\u{98f}', '\u{990}',
- Script::Bengali), ('\u{993}', '\u{9a8}', Script::Bengali), ('\u{9aa}', '\u{9b0}',
- Script::Bengali), ('\u{9b2}', '\u{9b2}', Script::Bengali), ('\u{9b6}', '\u{9b9}',
- Script::Bengali), ('\u{9bc}', '\u{9bc}', Script::Bengali), ('\u{9bd}', '\u{9bd}',
- Script::Bengali), ('\u{9be}', '\u{9c0}', Script::Bengali), ('\u{9c1}', '\u{9c4}',
- Script::Bengali), ('\u{9c7}', '\u{9c8}', Script::Bengali), ('\u{9cb}', '\u{9cc}',
- Script::Bengali), ('\u{9cd}', '\u{9cd}', Script::Bengali), ('\u{9ce}', '\u{9ce}',
- Script::Bengali), ('\u{9d7}', '\u{9d7}', Script::Bengali), ('\u{9dc}', '\u{9dd}',
- Script::Bengali), ('\u{9df}', '\u{9e1}', Script::Bengali), ('\u{9e2}', '\u{9e3}',
- Script::Bengali), ('\u{9e6}', '\u{9ef}', Script::Bengali), ('\u{9f0}', '\u{9f1}',
- Script::Bengali), ('\u{9f2}', '\u{9f3}', Script::Bengali), ('\u{9f4}', '\u{9f9}',
- Script::Bengali), ('\u{9fa}', '\u{9fa}', Script::Bengali), ('\u{9fb}', '\u{9fb}',
- Script::Bengali), ('\u{9fc}', '\u{9fc}', Script::Bengali), ('\u{9fd}', '\u{9fd}',
- Script::Bengali), ('\u{9fe}', '\u{9fe}', Script::Bengali), ('\u{a01}', '\u{a02}',
- Script::Gurmukhi), ('\u{a03}', '\u{a03}', Script::Gurmukhi), ('\u{a05}', '\u{a0a}',
- Script::Gurmukhi), ('\u{a0f}', '\u{a10}', Script::Gurmukhi), ('\u{a13}', '\u{a28}',
- Script::Gurmukhi), ('\u{a2a}', '\u{a30}', Script::Gurmukhi), ('\u{a32}', '\u{a33}',
- Script::Gurmukhi), ('\u{a35}', '\u{a36}', Script::Gurmukhi), ('\u{a38}', '\u{a39}',
- Script::Gurmukhi), ('\u{a3c}', '\u{a3c}', Script::Gurmukhi), ('\u{a3e}', '\u{a40}',
- Script::Gurmukhi), ('\u{a41}', '\u{a42}', Script::Gurmukhi), ('\u{a47}', '\u{a48}',
- Script::Gurmukhi), ('\u{a4b}', '\u{a4d}', Script::Gurmukhi), ('\u{a51}', '\u{a51}',
- Script::Gurmukhi), ('\u{a59}', '\u{a5c}', Script::Gurmukhi), ('\u{a5e}', '\u{a5e}',
- Script::Gurmukhi), ('\u{a66}', '\u{a6f}', Script::Gurmukhi), ('\u{a70}', '\u{a71}',
- Script::Gurmukhi), ('\u{a72}', '\u{a74}', Script::Gurmukhi), ('\u{a75}', '\u{a75}',
- Script::Gurmukhi), ('\u{a76}', '\u{a76}', Script::Gurmukhi), ('\u{a81}', '\u{a82}',
- Script::Gujarati), ('\u{a83}', '\u{a83}', Script::Gujarati), ('\u{a85}', '\u{a8d}',
- Script::Gujarati), ('\u{a8f}', '\u{a91}', Script::Gujarati), ('\u{a93}', '\u{aa8}',
- Script::Gujarati), ('\u{aaa}', '\u{ab0}', Script::Gujarati), ('\u{ab2}', '\u{ab3}',
- Script::Gujarati), ('\u{ab5}', '\u{ab9}', Script::Gujarati), ('\u{abc}', '\u{abc}',
- Script::Gujarati), ('\u{abd}', '\u{abd}', Script::Gujarati), ('\u{abe}', '\u{ac0}',
- Script::Gujarati), ('\u{ac1}', '\u{ac5}', Script::Gujarati), ('\u{ac7}', '\u{ac8}',
- Script::Gujarati), ('\u{ac9}', '\u{ac9}', Script::Gujarati), ('\u{acb}', '\u{acc}',
- Script::Gujarati), ('\u{acd}', '\u{acd}', Script::Gujarati), ('\u{ad0}', '\u{ad0}',
- Script::Gujarati), ('\u{ae0}', '\u{ae1}', Script::Gujarati), ('\u{ae2}', '\u{ae3}',
- Script::Gujarati), ('\u{ae6}', '\u{aef}', Script::Gujarati), ('\u{af0}', '\u{af0}',
- Script::Gujarati), ('\u{af1}', '\u{af1}', Script::Gujarati), ('\u{af9}', '\u{af9}',
- Script::Gujarati), ('\u{afa}', '\u{aff}', Script::Gujarati), ('\u{b01}', '\u{b01}',
- Script::Oriya), ('\u{b02}', '\u{b03}', Script::Oriya), ('\u{b05}', '\u{b0c}',
- Script::Oriya), ('\u{b0f}', '\u{b10}', Script::Oriya), ('\u{b13}', '\u{b28}',
- Script::Oriya), ('\u{b2a}', '\u{b30}', Script::Oriya), ('\u{b32}', '\u{b33}',
- Script::Oriya), ('\u{b35}', '\u{b39}', Script::Oriya), ('\u{b3c}', '\u{b3c}',
- Script::Oriya), ('\u{b3d}', '\u{b3d}', Script::Oriya), ('\u{b3e}', '\u{b3e}',
- Script::Oriya), ('\u{b3f}', '\u{b3f}', Script::Oriya), ('\u{b40}', '\u{b40}',
- Script::Oriya), ('\u{b41}', '\u{b44}', Script::Oriya), ('\u{b47}', '\u{b48}',
- Script::Oriya), ('\u{b4b}', '\u{b4c}', Script::Oriya), ('\u{b4d}', '\u{b4d}',
- Script::Oriya), ('\u{b55}', '\u{b56}', Script::Oriya), ('\u{b57}', '\u{b57}',
- Script::Oriya), ('\u{b5c}', '\u{b5d}', Script::Oriya), ('\u{b5f}', '\u{b61}',
- Script::Oriya), ('\u{b62}', '\u{b63}', Script::Oriya), ('\u{b66}', '\u{b6f}',
- Script::Oriya), ('\u{b70}', '\u{b70}', Script::Oriya), ('\u{b71}', '\u{b71}',
- Script::Oriya), ('\u{b72}', '\u{b77}', Script::Oriya), ('\u{b82}', '\u{b82}',
- Script::Tamil), ('\u{b83}', '\u{b83}', Script::Tamil), ('\u{b85}', '\u{b8a}',
- Script::Tamil), ('\u{b8e}', '\u{b90}', Script::Tamil), ('\u{b92}', '\u{b95}',
- Script::Tamil), ('\u{b99}', '\u{b9a}', Script::Tamil), ('\u{b9c}', '\u{b9c}',
- Script::Tamil), ('\u{b9e}', '\u{b9f}', Script::Tamil), ('\u{ba3}', '\u{ba4}',
- Script::Tamil), ('\u{ba8}', '\u{baa}', Script::Tamil), ('\u{bae}', '\u{bb9}',
- Script::Tamil), ('\u{bbe}', '\u{bbf}', Script::Tamil), ('\u{bc0}', '\u{bc0}',
- Script::Tamil), ('\u{bc1}', '\u{bc2}', Script::Tamil), ('\u{bc6}', '\u{bc8}',
- Script::Tamil), ('\u{bca}', '\u{bcc}', Script::Tamil), ('\u{bcd}', '\u{bcd}',
- Script::Tamil), ('\u{bd0}', '\u{bd0}', Script::Tamil), ('\u{bd7}', '\u{bd7}',
- Script::Tamil), ('\u{be6}', '\u{bef}', Script::Tamil), ('\u{bf0}', '\u{bf2}',
- Script::Tamil), ('\u{bf3}', '\u{bf8}', Script::Tamil), ('\u{bf9}', '\u{bf9}',
- Script::Tamil), ('\u{bfa}', '\u{bfa}', Script::Tamil), ('\u{c00}', '\u{c00}',
- Script::Telugu), ('\u{c01}', '\u{c03}', Script::Telugu), ('\u{c04}', '\u{c04}',
- Script::Telugu), ('\u{c05}', '\u{c0c}', Script::Telugu), ('\u{c0e}', '\u{c10}',
- Script::Telugu), ('\u{c12}', '\u{c28}', Script::Telugu), ('\u{c2a}', '\u{c39}',
+ Script::Syriac), ('\u{870}', '\u{887}', Script::Arabic), ('\u{888}', '\u{888}',
+ Script::Arabic), ('\u{889}', '\u{88e}', Script::Arabic), ('\u{890}', '\u{891}',
+ Script::Arabic), ('\u{898}', '\u{89f}', Script::Arabic), ('\u{8a0}', '\u{8c8}',
+ Script::Arabic), ('\u{8c9}', '\u{8c9}', Script::Arabic), ('\u{8ca}', '\u{8e1}',
+ Script::Arabic), ('\u{8e2}', '\u{8e2}', Script::Common), ('\u{8e3}', '\u{8ff}',
+ Script::Arabic), ('\u{900}', '\u{902}', Script::Devanagari), ('\u{903}', '\u{903}',
+ Script::Devanagari), ('\u{904}', '\u{939}', Script::Devanagari), ('\u{93a}', '\u{93a}',
+ Script::Devanagari), ('\u{93b}', '\u{93b}', Script::Devanagari), ('\u{93c}', '\u{93c}',
+ Script::Devanagari), ('\u{93d}', '\u{93d}', Script::Devanagari), ('\u{93e}', '\u{940}',
+ Script::Devanagari), ('\u{941}', '\u{948}', Script::Devanagari), ('\u{949}', '\u{94c}',
+ Script::Devanagari), ('\u{94d}', '\u{94d}', Script::Devanagari), ('\u{94e}', '\u{94f}',
+ Script::Devanagari), ('\u{950}', '\u{950}', Script::Devanagari), ('\u{951}', '\u{954}',
+ Script::Inherited), ('\u{955}', '\u{957}', Script::Devanagari), ('\u{958}', '\u{961}',
+ Script::Devanagari), ('\u{962}', '\u{963}', Script::Devanagari), ('\u{964}', '\u{965}',
+ Script::Common), ('\u{966}', '\u{96f}', Script::Devanagari), ('\u{970}', '\u{970}',
+ Script::Devanagari), ('\u{971}', '\u{971}', Script::Devanagari), ('\u{972}', '\u{97f}',
+ Script::Devanagari), ('\u{980}', '\u{980}', Script::Bengali), ('\u{981}', '\u{981}',
+ Script::Bengali), ('\u{982}', '\u{983}', Script::Bengali), ('\u{985}', '\u{98c}',
+ Script::Bengali), ('\u{98f}', '\u{990}', Script::Bengali), ('\u{993}', '\u{9a8}',
+ Script::Bengali), ('\u{9aa}', '\u{9b0}', Script::Bengali), ('\u{9b2}', '\u{9b2}',
+ Script::Bengali), ('\u{9b6}', '\u{9b9}', Script::Bengali), ('\u{9bc}', '\u{9bc}',
+ Script::Bengali), ('\u{9bd}', '\u{9bd}', Script::Bengali), ('\u{9be}', '\u{9c0}',
+ Script::Bengali), ('\u{9c1}', '\u{9c4}', Script::Bengali), ('\u{9c7}', '\u{9c8}',
+ Script::Bengali), ('\u{9cb}', '\u{9cc}', Script::Bengali), ('\u{9cd}', '\u{9cd}',
+ Script::Bengali), ('\u{9ce}', '\u{9ce}', Script::Bengali), ('\u{9d7}', '\u{9d7}',
+ Script::Bengali), ('\u{9dc}', '\u{9dd}', Script::Bengali), ('\u{9df}', '\u{9e1}',
+ Script::Bengali), ('\u{9e2}', '\u{9e3}', Script::Bengali), ('\u{9e6}', '\u{9ef}',
+ Script::Bengali), ('\u{9f0}', '\u{9f1}', Script::Bengali), ('\u{9f2}', '\u{9f3}',
+ Script::Bengali), ('\u{9f4}', '\u{9f9}', Script::Bengali), ('\u{9fa}', '\u{9fa}',
+ Script::Bengali), ('\u{9fb}', '\u{9fb}', Script::Bengali), ('\u{9fc}', '\u{9fc}',
+ Script::Bengali), ('\u{9fd}', '\u{9fd}', Script::Bengali), ('\u{9fe}', '\u{9fe}',
+ Script::Bengali), ('\u{a01}', '\u{a02}', Script::Gurmukhi), ('\u{a03}', '\u{a03}',
+ Script::Gurmukhi), ('\u{a05}', '\u{a0a}', Script::Gurmukhi), ('\u{a0f}', '\u{a10}',
+ Script::Gurmukhi), ('\u{a13}', '\u{a28}', Script::Gurmukhi), ('\u{a2a}', '\u{a30}',
+ Script::Gurmukhi), ('\u{a32}', '\u{a33}', Script::Gurmukhi), ('\u{a35}', '\u{a36}',
+ Script::Gurmukhi), ('\u{a38}', '\u{a39}', Script::Gurmukhi), ('\u{a3c}', '\u{a3c}',
+ Script::Gurmukhi), ('\u{a3e}', '\u{a40}', Script::Gurmukhi), ('\u{a41}', '\u{a42}',
+ Script::Gurmukhi), ('\u{a47}', '\u{a48}', Script::Gurmukhi), ('\u{a4b}', '\u{a4d}',
+ Script::Gurmukhi), ('\u{a51}', '\u{a51}', Script::Gurmukhi), ('\u{a59}', '\u{a5c}',
+ Script::Gurmukhi), ('\u{a5e}', '\u{a5e}', Script::Gurmukhi), ('\u{a66}', '\u{a6f}',
+ Script::Gurmukhi), ('\u{a70}', '\u{a71}', Script::Gurmukhi), ('\u{a72}', '\u{a74}',
+ Script::Gurmukhi), ('\u{a75}', '\u{a75}', Script::Gurmukhi), ('\u{a76}', '\u{a76}',
+ Script::Gurmukhi), ('\u{a81}', '\u{a82}', Script::Gujarati), ('\u{a83}', '\u{a83}',
+ Script::Gujarati), ('\u{a85}', '\u{a8d}', Script::Gujarati), ('\u{a8f}', '\u{a91}',
+ Script::Gujarati), ('\u{a93}', '\u{aa8}', Script::Gujarati), ('\u{aaa}', '\u{ab0}',
+ Script::Gujarati), ('\u{ab2}', '\u{ab3}', Script::Gujarati), ('\u{ab5}', '\u{ab9}',
+ Script::Gujarati), ('\u{abc}', '\u{abc}', Script::Gujarati), ('\u{abd}', '\u{abd}',
+ Script::Gujarati), ('\u{abe}', '\u{ac0}', Script::Gujarati), ('\u{ac1}', '\u{ac5}',
+ Script::Gujarati), ('\u{ac7}', '\u{ac8}', Script::Gujarati), ('\u{ac9}', '\u{ac9}',
+ Script::Gujarati), ('\u{acb}', '\u{acc}', Script::Gujarati), ('\u{acd}', '\u{acd}',
+ Script::Gujarati), ('\u{ad0}', '\u{ad0}', Script::Gujarati), ('\u{ae0}', '\u{ae1}',
+ Script::Gujarati), ('\u{ae2}', '\u{ae3}', Script::Gujarati), ('\u{ae6}', '\u{aef}',
+ Script::Gujarati), ('\u{af0}', '\u{af0}', Script::Gujarati), ('\u{af1}', '\u{af1}',
+ Script::Gujarati), ('\u{af9}', '\u{af9}', Script::Gujarati), ('\u{afa}', '\u{aff}',
+ Script::Gujarati), ('\u{b01}', '\u{b01}', Script::Oriya), ('\u{b02}', '\u{b03}',
+ Script::Oriya), ('\u{b05}', '\u{b0c}', Script::Oriya), ('\u{b0f}', '\u{b10}',
+ Script::Oriya), ('\u{b13}', '\u{b28}', Script::Oriya), ('\u{b2a}', '\u{b30}',
+ Script::Oriya), ('\u{b32}', '\u{b33}', Script::Oriya), ('\u{b35}', '\u{b39}',
+ Script::Oriya), ('\u{b3c}', '\u{b3c}', Script::Oriya), ('\u{b3d}', '\u{b3d}',
+ Script::Oriya), ('\u{b3e}', '\u{b3e}', Script::Oriya), ('\u{b3f}', '\u{b3f}',
+ Script::Oriya), ('\u{b40}', '\u{b40}', Script::Oriya), ('\u{b41}', '\u{b44}',
+ Script::Oriya), ('\u{b47}', '\u{b48}', Script::Oriya), ('\u{b4b}', '\u{b4c}',
+ Script::Oriya), ('\u{b4d}', '\u{b4d}', Script::Oriya), ('\u{b55}', '\u{b56}',
+ Script::Oriya), ('\u{b57}', '\u{b57}', Script::Oriya), ('\u{b5c}', '\u{b5d}',
+ Script::Oriya), ('\u{b5f}', '\u{b61}', Script::Oriya), ('\u{b62}', '\u{b63}',
+ Script::Oriya), ('\u{b66}', '\u{b6f}', Script::Oriya), ('\u{b70}', '\u{b70}',
+ Script::Oriya), ('\u{b71}', '\u{b71}', Script::Oriya), ('\u{b72}', '\u{b77}',
+ Script::Oriya), ('\u{b82}', '\u{b82}', Script::Tamil), ('\u{b83}', '\u{b83}',
+ Script::Tamil), ('\u{b85}', '\u{b8a}', Script::Tamil), ('\u{b8e}', '\u{b90}',
+ Script::Tamil), ('\u{b92}', '\u{b95}', Script::Tamil), ('\u{b99}', '\u{b9a}',
+ Script::Tamil), ('\u{b9c}', '\u{b9c}', Script::Tamil), ('\u{b9e}', '\u{b9f}',
+ Script::Tamil), ('\u{ba3}', '\u{ba4}', Script::Tamil), ('\u{ba8}', '\u{baa}',
+ Script::Tamil), ('\u{bae}', '\u{bb9}', Script::Tamil), ('\u{bbe}', '\u{bbf}',
+ Script::Tamil), ('\u{bc0}', '\u{bc0}', Script::Tamil), ('\u{bc1}', '\u{bc2}',
+ Script::Tamil), ('\u{bc6}', '\u{bc8}', Script::Tamil), ('\u{bca}', '\u{bcc}',
+ Script::Tamil), ('\u{bcd}', '\u{bcd}', Script::Tamil), ('\u{bd0}', '\u{bd0}',
+ Script::Tamil), ('\u{bd7}', '\u{bd7}', Script::Tamil), ('\u{be6}', '\u{bef}',
+ Script::Tamil), ('\u{bf0}', '\u{bf2}', Script::Tamil), ('\u{bf3}', '\u{bf8}',
+ Script::Tamil), ('\u{bf9}', '\u{bf9}', Script::Tamil), ('\u{bfa}', '\u{bfa}',
+ Script::Tamil), ('\u{c00}', '\u{c00}', Script::Telugu), ('\u{c01}', '\u{c03}',
+ Script::Telugu), ('\u{c04}', '\u{c04}', Script::Telugu), ('\u{c05}', '\u{c0c}',
+ Script::Telugu), ('\u{c0e}', '\u{c10}', Script::Telugu), ('\u{c12}', '\u{c28}',
+ Script::Telugu), ('\u{c2a}', '\u{c39}', Script::Telugu), ('\u{c3c}', '\u{c3c}',
Script::Telugu), ('\u{c3d}', '\u{c3d}', Script::Telugu), ('\u{c3e}', '\u{c40}',
Script::Telugu), ('\u{c41}', '\u{c44}', Script::Telugu), ('\u{c46}', '\u{c48}',
Script::Telugu), ('\u{c4a}', '\u{c4d}', Script::Telugu), ('\u{c55}', '\u{c56}',
- Script::Telugu), ('\u{c58}', '\u{c5a}', Script::Telugu), ('\u{c60}', '\u{c61}',
- Script::Telugu), ('\u{c62}', '\u{c63}', Script::Telugu), ('\u{c66}', '\u{c6f}',
- Script::Telugu), ('\u{c77}', '\u{c77}', Script::Telugu), ('\u{c78}', '\u{c7e}',
- Script::Telugu), ('\u{c7f}', '\u{c7f}', Script::Telugu), ('\u{c80}', '\u{c80}',
- Script::Kannada), ('\u{c81}', '\u{c81}', Script::Kannada), ('\u{c82}', '\u{c83}',
- Script::Kannada), ('\u{c84}', '\u{c84}', Script::Kannada), ('\u{c85}', '\u{c8c}',
- Script::Kannada), ('\u{c8e}', '\u{c90}', Script::Kannada), ('\u{c92}', '\u{ca8}',
- Script::Kannada), ('\u{caa}', '\u{cb3}', Script::Kannada), ('\u{cb5}', '\u{cb9}',
- Script::Kannada), ('\u{cbc}', '\u{cbc}', Script::Kannada), ('\u{cbd}', '\u{cbd}',
- Script::Kannada), ('\u{cbe}', '\u{cbe}', Script::Kannada), ('\u{cbf}', '\u{cbf}',
- Script::Kannada), ('\u{cc0}', '\u{cc4}', Script::Kannada), ('\u{cc6}', '\u{cc6}',
- Script::Kannada), ('\u{cc7}', '\u{cc8}', Script::Kannada), ('\u{cca}', '\u{ccb}',
- Script::Kannada), ('\u{ccc}', '\u{ccd}', Script::Kannada), ('\u{cd5}', '\u{cd6}',
- Script::Kannada), ('\u{cde}', '\u{cde}', Script::Kannada), ('\u{ce0}', '\u{ce1}',
- Script::Kannada), ('\u{ce2}', '\u{ce3}', Script::Kannada), ('\u{ce6}', '\u{cef}',
- Script::Kannada), ('\u{cf1}', '\u{cf2}', Script::Kannada), ('\u{d00}', '\u{d01}',
+ Script::Telugu), ('\u{c58}', '\u{c5a}', Script::Telugu), ('\u{c5d}', '\u{c5d}',
+ Script::Telugu), ('\u{c60}', '\u{c61}', Script::Telugu), ('\u{c62}', '\u{c63}',
+ Script::Telugu), ('\u{c66}', '\u{c6f}', Script::Telugu), ('\u{c77}', '\u{c77}',
+ Script::Telugu), ('\u{c78}', '\u{c7e}', Script::Telugu), ('\u{c7f}', '\u{c7f}',
+ Script::Telugu), ('\u{c80}', '\u{c80}', Script::Kannada), ('\u{c81}', '\u{c81}',
+ Script::Kannada), ('\u{c82}', '\u{c83}', Script::Kannada), ('\u{c84}', '\u{c84}',
+ Script::Kannada), ('\u{c85}', '\u{c8c}', Script::Kannada), ('\u{c8e}', '\u{c90}',
+ Script::Kannada), ('\u{c92}', '\u{ca8}', Script::Kannada), ('\u{caa}', '\u{cb3}',
+ Script::Kannada), ('\u{cb5}', '\u{cb9}', Script::Kannada), ('\u{cbc}', '\u{cbc}',
+ Script::Kannada), ('\u{cbd}', '\u{cbd}', Script::Kannada), ('\u{cbe}', '\u{cbe}',
+ Script::Kannada), ('\u{cbf}', '\u{cbf}', Script::Kannada), ('\u{cc0}', '\u{cc4}',
+ Script::Kannada), ('\u{cc6}', '\u{cc6}', Script::Kannada), ('\u{cc7}', '\u{cc8}',
+ Script::Kannada), ('\u{cca}', '\u{ccb}', Script::Kannada), ('\u{ccc}', '\u{ccd}',
+ Script::Kannada), ('\u{cd5}', '\u{cd6}', Script::Kannada), ('\u{cdd}', '\u{cde}',
+ Script::Kannada), ('\u{ce0}', '\u{ce1}', Script::Kannada), ('\u{ce2}', '\u{ce3}',
+ Script::Kannada), ('\u{ce6}', '\u{cef}', Script::Kannada), ('\u{cf1}', '\u{cf2}',
+ Script::Kannada), ('\u{cf3}', '\u{cf3}', Script::Kannada), ('\u{d00}', '\u{d01}',
Script::Malayalam), ('\u{d02}', '\u{d03}', Script::Malayalam), ('\u{d04}', '\u{d0c}',
Script::Malayalam), ('\u{d0e}', '\u{d10}', Script::Malayalam), ('\u{d12}', '\u{d3a}',
Script::Malayalam), ('\u{d3b}', '\u{d3c}', Script::Malayalam), ('\u{d3d}', '\u{d3d}',
@@ -2124,7 +2209,7 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
'\u{ea5}', Script::Lao), ('\u{ea7}', '\u{eb0}', Script::Lao), ('\u{eb1}', '\u{eb1}',
Script::Lao), ('\u{eb2}', '\u{eb3}', Script::Lao), ('\u{eb4}', '\u{ebc}', Script::Lao),
('\u{ebd}', '\u{ebd}', Script::Lao), ('\u{ec0}', '\u{ec4}', Script::Lao), ('\u{ec6}',
- '\u{ec6}', Script::Lao), ('\u{ec8}', '\u{ecd}', Script::Lao), ('\u{ed0}', '\u{ed9}',
+ '\u{ec6}', Script::Lao), ('\u{ec8}', '\u{ece}', Script::Lao), ('\u{ed0}', '\u{ed9}',
Script::Lao), ('\u{edc}', '\u{edf}', Script::Lao), ('\u{f00}', '\u{f00}',
Script::Tibetan), ('\u{f01}', '\u{f03}', Script::Tibetan), ('\u{f04}', '\u{f12}',
Script::Tibetan), ('\u{f13}', '\u{f13}', Script::Tibetan), ('\u{f14}', '\u{f14}',
@@ -2185,9 +2270,10 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
('\u{169b}', '\u{169b}', Script::Ogham), ('\u{169c}', '\u{169c}', Script::Ogham),
('\u{16a0}', '\u{16ea}', Script::Runic), ('\u{16eb}', '\u{16ed}', Script::Common),
('\u{16ee}', '\u{16f0}', Script::Runic), ('\u{16f1}', '\u{16f8}', Script::Runic),
- ('\u{1700}', '\u{170c}', Script::Tagalog), ('\u{170e}', '\u{1711}', Script::Tagalog),
- ('\u{1712}', '\u{1714}', Script::Tagalog), ('\u{1720}', '\u{1731}', Script::Hanunoo),
- ('\u{1732}', '\u{1734}', Script::Hanunoo), ('\u{1735}', '\u{1736}', Script::Common),
+ ('\u{1700}', '\u{1711}', Script::Tagalog), ('\u{1712}', '\u{1714}', Script::Tagalog),
+ ('\u{1715}', '\u{1715}', Script::Tagalog), ('\u{171f}', '\u{171f}', Script::Tagalog),
+ ('\u{1720}', '\u{1731}', Script::Hanunoo), ('\u{1732}', '\u{1733}', Script::Hanunoo),
+ ('\u{1734}', '\u{1734}', Script::Hanunoo), ('\u{1735}', '\u{1736}', Script::Common),
('\u{1740}', '\u{1751}', Script::Buhid), ('\u{1752}', '\u{1753}', Script::Buhid),
('\u{1760}', '\u{176c}', Script::Tagbanwa), ('\u{176e}', '\u{1770}', Script::Tagbanwa),
('\u{1772}', '\u{1773}', Script::Tagbanwa), ('\u{1780}', '\u{17b3}', Script::Khmer),
@@ -2202,197 +2288,197 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
('\u{1802}', '\u{1803}', Script::Common), ('\u{1804}', '\u{1804}', Script::Mongolian),
('\u{1805}', '\u{1805}', Script::Common), ('\u{1806}', '\u{1806}', Script::Mongolian),
('\u{1807}', '\u{180a}', Script::Mongolian), ('\u{180b}', '\u{180d}', Script::Mongolian),
- ('\u{180e}', '\u{180e}', Script::Mongolian), ('\u{1810}', '\u{1819}', Script::Mongolian),
- ('\u{1820}', '\u{1842}', Script::Mongolian), ('\u{1843}', '\u{1843}', Script::Mongolian),
- ('\u{1844}', '\u{1878}', Script::Mongolian), ('\u{1880}', '\u{1884}', Script::Mongolian),
- ('\u{1885}', '\u{1886}', Script::Mongolian), ('\u{1887}', '\u{18a8}', Script::Mongolian),
- ('\u{18a9}', '\u{18a9}', Script::Mongolian), ('\u{18aa}', '\u{18aa}', Script::Mongolian),
- ('\u{18b0}', '\u{18f5}', Script::Canadian_Aboriginal), ('\u{1900}', '\u{191e}',
- Script::Limbu), ('\u{1920}', '\u{1922}', Script::Limbu), ('\u{1923}', '\u{1926}',
- Script::Limbu), ('\u{1927}', '\u{1928}', Script::Limbu), ('\u{1929}', '\u{192b}',
- Script::Limbu), ('\u{1930}', '\u{1931}', Script::Limbu), ('\u{1932}', '\u{1932}',
- Script::Limbu), ('\u{1933}', '\u{1938}', Script::Limbu), ('\u{1939}', '\u{193b}',
- Script::Limbu), ('\u{1940}', '\u{1940}', Script::Limbu), ('\u{1944}', '\u{1945}',
- Script::Limbu), ('\u{1946}', '\u{194f}', Script::Limbu), ('\u{1950}', '\u{196d}',
- Script::Tai_Le), ('\u{1970}', '\u{1974}', Script::Tai_Le), ('\u{1980}', '\u{19ab}',
- Script::New_Tai_Lue), ('\u{19b0}', '\u{19c9}', Script::New_Tai_Lue), ('\u{19d0}',
- '\u{19d9}', Script::New_Tai_Lue), ('\u{19da}', '\u{19da}', Script::New_Tai_Lue),
- ('\u{19de}', '\u{19df}', Script::New_Tai_Lue), ('\u{19e0}', '\u{19ff}', Script::Khmer),
- ('\u{1a00}', '\u{1a16}', Script::Buginese), ('\u{1a17}', '\u{1a18}', Script::Buginese),
- ('\u{1a19}', '\u{1a1a}', Script::Buginese), ('\u{1a1b}', '\u{1a1b}', Script::Buginese),
- ('\u{1a1e}', '\u{1a1f}', Script::Buginese), ('\u{1a20}', '\u{1a54}', Script::Tai_Tham),
- ('\u{1a55}', '\u{1a55}', Script::Tai_Tham), ('\u{1a56}', '\u{1a56}', Script::Tai_Tham),
- ('\u{1a57}', '\u{1a57}', Script::Tai_Tham), ('\u{1a58}', '\u{1a5e}', Script::Tai_Tham),
- ('\u{1a60}', '\u{1a60}', Script::Tai_Tham), ('\u{1a61}', '\u{1a61}', Script::Tai_Tham),
- ('\u{1a62}', '\u{1a62}', Script::Tai_Tham), ('\u{1a63}', '\u{1a64}', Script::Tai_Tham),
- ('\u{1a65}', '\u{1a6c}', Script::Tai_Tham), ('\u{1a6d}', '\u{1a72}', Script::Tai_Tham),
- ('\u{1a73}', '\u{1a7c}', Script::Tai_Tham), ('\u{1a7f}', '\u{1a7f}', Script::Tai_Tham),
- ('\u{1a80}', '\u{1a89}', Script::Tai_Tham), ('\u{1a90}', '\u{1a99}', Script::Tai_Tham),
- ('\u{1aa0}', '\u{1aa6}', Script::Tai_Tham), ('\u{1aa7}', '\u{1aa7}', Script::Tai_Tham),
- ('\u{1aa8}', '\u{1aad}', Script::Tai_Tham), ('\u{1ab0}', '\u{1abd}', Script::Inherited),
- ('\u{1abe}', '\u{1abe}', Script::Inherited), ('\u{1abf}', '\u{1ac0}', Script::Inherited),
- ('\u{1b00}', '\u{1b03}', Script::Balinese), ('\u{1b04}', '\u{1b04}', Script::Balinese),
- ('\u{1b05}', '\u{1b33}', Script::Balinese), ('\u{1b34}', '\u{1b34}', Script::Balinese),
- ('\u{1b35}', '\u{1b35}', Script::Balinese), ('\u{1b36}', '\u{1b3a}', Script::Balinese),
- ('\u{1b3b}', '\u{1b3b}', Script::Balinese), ('\u{1b3c}', '\u{1b3c}', Script::Balinese),
- ('\u{1b3d}', '\u{1b41}', Script::Balinese), ('\u{1b42}', '\u{1b42}', Script::Balinese),
- ('\u{1b43}', '\u{1b44}', Script::Balinese), ('\u{1b45}', '\u{1b4b}', Script::Balinese),
- ('\u{1b50}', '\u{1b59}', Script::Balinese), ('\u{1b5a}', '\u{1b60}', Script::Balinese),
- ('\u{1b61}', '\u{1b6a}', Script::Balinese), ('\u{1b6b}', '\u{1b73}', Script::Balinese),
- ('\u{1b74}', '\u{1b7c}', Script::Balinese), ('\u{1b80}', '\u{1b81}', Script::Sundanese),
- ('\u{1b82}', '\u{1b82}', Script::Sundanese), ('\u{1b83}', '\u{1ba0}', Script::Sundanese),
- ('\u{1ba1}', '\u{1ba1}', Script::Sundanese), ('\u{1ba2}', '\u{1ba5}', Script::Sundanese),
- ('\u{1ba6}', '\u{1ba7}', Script::Sundanese), ('\u{1ba8}', '\u{1ba9}', Script::Sundanese),
- ('\u{1baa}', '\u{1baa}', Script::Sundanese), ('\u{1bab}', '\u{1bad}', Script::Sundanese),
- ('\u{1bae}', '\u{1baf}', Script::Sundanese), ('\u{1bb0}', '\u{1bb9}', Script::Sundanese),
- ('\u{1bba}', '\u{1bbf}', Script::Sundanese), ('\u{1bc0}', '\u{1be5}', Script::Batak),
- ('\u{1be6}', '\u{1be6}', Script::Batak), ('\u{1be7}', '\u{1be7}', Script::Batak),
- ('\u{1be8}', '\u{1be9}', Script::Batak), ('\u{1bea}', '\u{1bec}', Script::Batak),
- ('\u{1bed}', '\u{1bed}', Script::Batak), ('\u{1bee}', '\u{1bee}', Script::Batak),
- ('\u{1bef}', '\u{1bf1}', Script::Batak), ('\u{1bf2}', '\u{1bf3}', Script::Batak),
- ('\u{1bfc}', '\u{1bff}', Script::Batak), ('\u{1c00}', '\u{1c23}', Script::Lepcha),
- ('\u{1c24}', '\u{1c2b}', Script::Lepcha), ('\u{1c2c}', '\u{1c33}', Script::Lepcha),
- ('\u{1c34}', '\u{1c35}', Script::Lepcha), ('\u{1c36}', '\u{1c37}', Script::Lepcha),
- ('\u{1c3b}', '\u{1c3f}', Script::Lepcha), ('\u{1c40}', '\u{1c49}', Script::Lepcha),
- ('\u{1c4d}', '\u{1c4f}', Script::Lepcha), ('\u{1c50}', '\u{1c59}', Script::Ol_Chiki),
- ('\u{1c5a}', '\u{1c77}', Script::Ol_Chiki), ('\u{1c78}', '\u{1c7d}', Script::Ol_Chiki),
- ('\u{1c7e}', '\u{1c7f}', Script::Ol_Chiki), ('\u{1c80}', '\u{1c88}', Script::Cyrillic),
- ('\u{1c90}', '\u{1cba}', Script::Georgian), ('\u{1cbd}', '\u{1cbf}', Script::Georgian),
- ('\u{1cc0}', '\u{1cc7}', Script::Sundanese), ('\u{1cd0}', '\u{1cd2}', Script::Inherited),
- ('\u{1cd3}', '\u{1cd3}', Script::Common), ('\u{1cd4}', '\u{1ce0}', Script::Inherited),
- ('\u{1ce1}', '\u{1ce1}', Script::Common), ('\u{1ce2}', '\u{1ce8}', Script::Inherited),
- ('\u{1ce9}', '\u{1cec}', Script::Common), ('\u{1ced}', '\u{1ced}', Script::Inherited),
- ('\u{1cee}', '\u{1cf3}', Script::Common), ('\u{1cf4}', '\u{1cf4}', Script::Inherited),
- ('\u{1cf5}', '\u{1cf6}', Script::Common), ('\u{1cf7}', '\u{1cf7}', Script::Common),
- ('\u{1cf8}', '\u{1cf9}', Script::Inherited), ('\u{1cfa}', '\u{1cfa}', Script::Common),
- ('\u{1d00}', '\u{1d25}', Script::Latin), ('\u{1d26}', '\u{1d2a}', Script::Greek),
- ('\u{1d2b}', '\u{1d2b}', Script::Cyrillic), ('\u{1d2c}', '\u{1d5c}', Script::Latin),
- ('\u{1d5d}', '\u{1d61}', Script::Greek), ('\u{1d62}', '\u{1d65}', Script::Latin),
- ('\u{1d66}', '\u{1d6a}', Script::Greek), ('\u{1d6b}', '\u{1d77}', Script::Latin),
- ('\u{1d78}', '\u{1d78}', Script::Cyrillic), ('\u{1d79}', '\u{1d9a}', Script::Latin),
- ('\u{1d9b}', '\u{1dbe}', Script::Latin), ('\u{1dbf}', '\u{1dbf}', Script::Greek),
- ('\u{1dc0}', '\u{1df9}', Script::Inherited), ('\u{1dfb}', '\u{1dff}', Script::Inherited),
- ('\u{1e00}', '\u{1eff}', Script::Latin), ('\u{1f00}', '\u{1f15}', Script::Greek),
- ('\u{1f18}', '\u{1f1d}', Script::Greek), ('\u{1f20}', '\u{1f45}', Script::Greek),
- ('\u{1f48}', '\u{1f4d}', Script::Greek), ('\u{1f50}', '\u{1f57}', Script::Greek),
- ('\u{1f59}', '\u{1f59}', Script::Greek), ('\u{1f5b}', '\u{1f5b}', Script::Greek),
- ('\u{1f5d}', '\u{1f5d}', Script::Greek), ('\u{1f5f}', '\u{1f7d}', Script::Greek),
- ('\u{1f80}', '\u{1fb4}', Script::Greek), ('\u{1fb6}', '\u{1fbc}', Script::Greek),
- ('\u{1fbd}', '\u{1fbd}', Script::Greek), ('\u{1fbe}', '\u{1fbe}', Script::Greek),
- ('\u{1fbf}', '\u{1fc1}', Script::Greek), ('\u{1fc2}', '\u{1fc4}', Script::Greek),
- ('\u{1fc6}', '\u{1fcc}', Script::Greek), ('\u{1fcd}', '\u{1fcf}', Script::Greek),
- ('\u{1fd0}', '\u{1fd3}', Script::Greek), ('\u{1fd6}', '\u{1fdb}', Script::Greek),
- ('\u{1fdd}', '\u{1fdf}', Script::Greek), ('\u{1fe0}', '\u{1fec}', Script::Greek),
- ('\u{1fed}', '\u{1fef}', Script::Greek), ('\u{1ff2}', '\u{1ff4}', Script::Greek),
- ('\u{1ff6}', '\u{1ffc}', Script::Greek), ('\u{1ffd}', '\u{1ffe}', Script::Greek),
- ('\u{2000}', '\u{200a}', Script::Common), ('\u{200b}', '\u{200b}', Script::Common),
- ('\u{200c}', '\u{200d}', Script::Inherited), ('\u{200e}', '\u{200f}', Script::Common),
- ('\u{2010}', '\u{2015}', Script::Common), ('\u{2016}', '\u{2017}', Script::Common),
- ('\u{2018}', '\u{2018}', Script::Common), ('\u{2019}', '\u{2019}', Script::Common),
- ('\u{201a}', '\u{201a}', Script::Common), ('\u{201b}', '\u{201c}', Script::Common),
- ('\u{201d}', '\u{201d}', Script::Common), ('\u{201e}', '\u{201e}', Script::Common),
- ('\u{201f}', '\u{201f}', Script::Common), ('\u{2020}', '\u{2027}', Script::Common),
- ('\u{2028}', '\u{2028}', Script::Common), ('\u{2029}', '\u{2029}', Script::Common),
- ('\u{202a}', '\u{202e}', Script::Common), ('\u{202f}', '\u{202f}', Script::Common),
- ('\u{2030}', '\u{2038}', Script::Common), ('\u{2039}', '\u{2039}', Script::Common),
- ('\u{203a}', '\u{203a}', Script::Common), ('\u{203b}', '\u{203e}', Script::Common),
- ('\u{203f}', '\u{2040}', Script::Common), ('\u{2041}', '\u{2043}', Script::Common),
- ('\u{2044}', '\u{2044}', Script::Common), ('\u{2045}', '\u{2045}', Script::Common),
- ('\u{2046}', '\u{2046}', Script::Common), ('\u{2047}', '\u{2051}', Script::Common),
- ('\u{2052}', '\u{2052}', Script::Common), ('\u{2053}', '\u{2053}', Script::Common),
- ('\u{2054}', '\u{2054}', Script::Common), ('\u{2055}', '\u{205e}', Script::Common),
- ('\u{205f}', '\u{205f}', Script::Common), ('\u{2060}', '\u{2064}', Script::Common),
- ('\u{2066}', '\u{206f}', Script::Common), ('\u{2070}', '\u{2070}', Script::Common),
- ('\u{2071}', '\u{2071}', Script::Latin), ('\u{2074}', '\u{2079}', Script::Common),
- ('\u{207a}', '\u{207c}', Script::Common), ('\u{207d}', '\u{207d}', Script::Common),
- ('\u{207e}', '\u{207e}', Script::Common), ('\u{207f}', '\u{207f}', Script::Latin),
- ('\u{2080}', '\u{2089}', Script::Common), ('\u{208a}', '\u{208c}', Script::Common),
- ('\u{208d}', '\u{208d}', Script::Common), ('\u{208e}', '\u{208e}', Script::Common),
- ('\u{2090}', '\u{209c}', Script::Latin), ('\u{20a0}', '\u{20bf}', Script::Common),
- ('\u{20d0}', '\u{20dc}', Script::Inherited), ('\u{20dd}', '\u{20e0}', Script::Inherited),
- ('\u{20e1}', '\u{20e1}', Script::Inherited), ('\u{20e2}', '\u{20e4}', Script::Inherited),
- ('\u{20e5}', '\u{20f0}', Script::Inherited), ('\u{2100}', '\u{2101}', Script::Common),
- ('\u{2102}', '\u{2102}', Script::Common), ('\u{2103}', '\u{2106}', Script::Common),
- ('\u{2107}', '\u{2107}', Script::Common), ('\u{2108}', '\u{2109}', Script::Common),
- ('\u{210a}', '\u{2113}', Script::Common), ('\u{2114}', '\u{2114}', Script::Common),
- ('\u{2115}', '\u{2115}', Script::Common), ('\u{2116}', '\u{2117}', Script::Common),
- ('\u{2118}', '\u{2118}', Script::Common), ('\u{2119}', '\u{211d}', Script::Common),
- ('\u{211e}', '\u{2123}', Script::Common), ('\u{2124}', '\u{2124}', Script::Common),
- ('\u{2125}', '\u{2125}', Script::Common), ('\u{2126}', '\u{2126}', Script::Greek),
- ('\u{2127}', '\u{2127}', Script::Common), ('\u{2128}', '\u{2128}', Script::Common),
- ('\u{2129}', '\u{2129}', Script::Common), ('\u{212a}', '\u{212b}', Script::Latin),
- ('\u{212c}', '\u{212d}', Script::Common), ('\u{212e}', '\u{212e}', Script::Common),
- ('\u{212f}', '\u{2131}', Script::Common), ('\u{2132}', '\u{2132}', Script::Latin),
- ('\u{2133}', '\u{2134}', Script::Common), ('\u{2135}', '\u{2138}', Script::Common),
- ('\u{2139}', '\u{2139}', Script::Common), ('\u{213a}', '\u{213b}', Script::Common),
- ('\u{213c}', '\u{213f}', Script::Common), ('\u{2140}', '\u{2144}', Script::Common),
- ('\u{2145}', '\u{2149}', Script::Common), ('\u{214a}', '\u{214a}', Script::Common),
- ('\u{214b}', '\u{214b}', Script::Common), ('\u{214c}', '\u{214d}', Script::Common),
- ('\u{214e}', '\u{214e}', Script::Latin), ('\u{214f}', '\u{214f}', Script::Common),
- ('\u{2150}', '\u{215f}', Script::Common), ('\u{2160}', '\u{2182}', Script::Latin),
- ('\u{2183}', '\u{2184}', Script::Latin), ('\u{2185}', '\u{2188}', Script::Latin),
- ('\u{2189}', '\u{2189}', Script::Common), ('\u{218a}', '\u{218b}', Script::Common),
- ('\u{2190}', '\u{2194}', Script::Common), ('\u{2195}', '\u{2199}', Script::Common),
- ('\u{219a}', '\u{219b}', Script::Common), ('\u{219c}', '\u{219f}', Script::Common),
- ('\u{21a0}', '\u{21a0}', Script::Common), ('\u{21a1}', '\u{21a2}', Script::Common),
- ('\u{21a3}', '\u{21a3}', Script::Common), ('\u{21a4}', '\u{21a5}', Script::Common),
- ('\u{21a6}', '\u{21a6}', Script::Common), ('\u{21a7}', '\u{21ad}', Script::Common),
- ('\u{21ae}', '\u{21ae}', Script::Common), ('\u{21af}', '\u{21cd}', Script::Common),
- ('\u{21ce}', '\u{21cf}', Script::Common), ('\u{21d0}', '\u{21d1}', Script::Common),
- ('\u{21d2}', '\u{21d2}', Script::Common), ('\u{21d3}', '\u{21d3}', Script::Common),
- ('\u{21d4}', '\u{21d4}', Script::Common), ('\u{21d5}', '\u{21f3}', Script::Common),
- ('\u{21f4}', '\u{22ff}', Script::Common), ('\u{2300}', '\u{2307}', Script::Common),
- ('\u{2308}', '\u{2308}', Script::Common), ('\u{2309}', '\u{2309}', Script::Common),
- ('\u{230a}', '\u{230a}', Script::Common), ('\u{230b}', '\u{230b}', Script::Common),
- ('\u{230c}', '\u{231f}', Script::Common), ('\u{2320}', '\u{2321}', Script::Common),
- ('\u{2322}', '\u{2328}', Script::Common), ('\u{2329}', '\u{2329}', Script::Common),
- ('\u{232a}', '\u{232a}', Script::Common), ('\u{232b}', '\u{237b}', Script::Common),
- ('\u{237c}', '\u{237c}', Script::Common), ('\u{237d}', '\u{239a}', Script::Common),
- ('\u{239b}', '\u{23b3}', Script::Common), ('\u{23b4}', '\u{23db}', Script::Common),
- ('\u{23dc}', '\u{23e1}', Script::Common), ('\u{23e2}', '\u{2426}', Script::Common),
- ('\u{2440}', '\u{244a}', Script::Common), ('\u{2460}', '\u{249b}', Script::Common),
- ('\u{249c}', '\u{24e9}', Script::Common), ('\u{24ea}', '\u{24ff}', Script::Common),
- ('\u{2500}', '\u{25b6}', Script::Common), ('\u{25b7}', '\u{25b7}', Script::Common),
- ('\u{25b8}', '\u{25c0}', Script::Common), ('\u{25c1}', '\u{25c1}', Script::Common),
- ('\u{25c2}', '\u{25f7}', Script::Common), ('\u{25f8}', '\u{25ff}', Script::Common),
- ('\u{2600}', '\u{266e}', Script::Common), ('\u{266f}', '\u{266f}', Script::Common),
- ('\u{2670}', '\u{2767}', Script::Common), ('\u{2768}', '\u{2768}', Script::Common),
- ('\u{2769}', '\u{2769}', Script::Common), ('\u{276a}', '\u{276a}', Script::Common),
- ('\u{276b}', '\u{276b}', Script::Common), ('\u{276c}', '\u{276c}', Script::Common),
- ('\u{276d}', '\u{276d}', Script::Common), ('\u{276e}', '\u{276e}', Script::Common),
- ('\u{276f}', '\u{276f}', Script::Common), ('\u{2770}', '\u{2770}', Script::Common),
- ('\u{2771}', '\u{2771}', Script::Common), ('\u{2772}', '\u{2772}', Script::Common),
- ('\u{2773}', '\u{2773}', Script::Common), ('\u{2774}', '\u{2774}', Script::Common),
- ('\u{2775}', '\u{2775}', Script::Common), ('\u{2776}', '\u{2793}', Script::Common),
- ('\u{2794}', '\u{27bf}', Script::Common), ('\u{27c0}', '\u{27c4}', Script::Common),
- ('\u{27c5}', '\u{27c5}', Script::Common), ('\u{27c6}', '\u{27c6}', Script::Common),
- ('\u{27c7}', '\u{27e5}', Script::Common), ('\u{27e6}', '\u{27e6}', Script::Common),
- ('\u{27e7}', '\u{27e7}', Script::Common), ('\u{27e8}', '\u{27e8}', Script::Common),
- ('\u{27e9}', '\u{27e9}', Script::Common), ('\u{27ea}', '\u{27ea}', Script::Common),
- ('\u{27eb}', '\u{27eb}', Script::Common), ('\u{27ec}', '\u{27ec}', Script::Common),
- ('\u{27ed}', '\u{27ed}', Script::Common), ('\u{27ee}', '\u{27ee}', Script::Common),
- ('\u{27ef}', '\u{27ef}', Script::Common), ('\u{27f0}', '\u{27ff}', Script::Common),
- ('\u{2800}', '\u{28ff}', Script::Braille), ('\u{2900}', '\u{2982}', Script::Common),
- ('\u{2983}', '\u{2983}', Script::Common), ('\u{2984}', '\u{2984}', Script::Common),
- ('\u{2985}', '\u{2985}', Script::Common), ('\u{2986}', '\u{2986}', Script::Common),
- ('\u{2987}', '\u{2987}', Script::Common), ('\u{2988}', '\u{2988}', Script::Common),
- ('\u{2989}', '\u{2989}', Script::Common), ('\u{298a}', '\u{298a}', Script::Common),
- ('\u{298b}', '\u{298b}', Script::Common), ('\u{298c}', '\u{298c}', Script::Common),
- ('\u{298d}', '\u{298d}', Script::Common), ('\u{298e}', '\u{298e}', Script::Common),
- ('\u{298f}', '\u{298f}', Script::Common), ('\u{2990}', '\u{2990}', Script::Common),
- ('\u{2991}', '\u{2991}', Script::Common), ('\u{2992}', '\u{2992}', Script::Common),
- ('\u{2993}', '\u{2993}', Script::Common), ('\u{2994}', '\u{2994}', Script::Common),
- ('\u{2995}', '\u{2995}', Script::Common), ('\u{2996}', '\u{2996}', Script::Common),
- ('\u{2997}', '\u{2997}', Script::Common), ('\u{2998}', '\u{2998}', Script::Common),
- ('\u{2999}', '\u{29d7}', Script::Common), ('\u{29d8}', '\u{29d8}', Script::Common),
- ('\u{29d9}', '\u{29d9}', Script::Common), ('\u{29da}', '\u{29da}', Script::Common),
- ('\u{29db}', '\u{29db}', Script::Common), ('\u{29dc}', '\u{29fb}', Script::Common),
- ('\u{29fc}', '\u{29fc}', Script::Common), ('\u{29fd}', '\u{29fd}', Script::Common),
- ('\u{29fe}', '\u{2aff}', Script::Common), ('\u{2b00}', '\u{2b2f}', Script::Common),
- ('\u{2b30}', '\u{2b44}', Script::Common), ('\u{2b45}', '\u{2b46}', Script::Common),
- ('\u{2b47}', '\u{2b4c}', Script::Common), ('\u{2b4d}', '\u{2b73}', Script::Common),
- ('\u{2b76}', '\u{2b95}', Script::Common), ('\u{2b97}', '\u{2bff}', Script::Common),
- ('\u{2c00}', '\u{2c2e}', Script::Glagolitic), ('\u{2c30}', '\u{2c5e}',
+ ('\u{180e}', '\u{180e}', Script::Mongolian), ('\u{180f}', '\u{180f}', Script::Mongolian),
+ ('\u{1810}', '\u{1819}', Script::Mongolian), ('\u{1820}', '\u{1842}', Script::Mongolian),
+ ('\u{1843}', '\u{1843}', Script::Mongolian), ('\u{1844}', '\u{1878}', Script::Mongolian),
+ ('\u{1880}', '\u{1884}', Script::Mongolian), ('\u{1885}', '\u{1886}', Script::Mongolian),
+ ('\u{1887}', '\u{18a8}', Script::Mongolian), ('\u{18a9}', '\u{18a9}', Script::Mongolian),
+ ('\u{18aa}', '\u{18aa}', Script::Mongolian), ('\u{18b0}', '\u{18f5}',
+ Script::Canadian_Aboriginal), ('\u{1900}', '\u{191e}', Script::Limbu), ('\u{1920}',
+ '\u{1922}', Script::Limbu), ('\u{1923}', '\u{1926}', Script::Limbu), ('\u{1927}',
+ '\u{1928}', Script::Limbu), ('\u{1929}', '\u{192b}', Script::Limbu), ('\u{1930}',
+ '\u{1931}', Script::Limbu), ('\u{1932}', '\u{1932}', Script::Limbu), ('\u{1933}',
+ '\u{1938}', Script::Limbu), ('\u{1939}', '\u{193b}', Script::Limbu), ('\u{1940}',
+ '\u{1940}', Script::Limbu), ('\u{1944}', '\u{1945}', Script::Limbu), ('\u{1946}',
+ '\u{194f}', Script::Limbu), ('\u{1950}', '\u{196d}', Script::Tai_Le), ('\u{1970}',
+ '\u{1974}', Script::Tai_Le), ('\u{1980}', '\u{19ab}', Script::New_Tai_Lue), ('\u{19b0}',
+ '\u{19c9}', Script::New_Tai_Lue), ('\u{19d0}', '\u{19d9}', Script::New_Tai_Lue),
+ ('\u{19da}', '\u{19da}', Script::New_Tai_Lue), ('\u{19de}', '\u{19df}',
+ Script::New_Tai_Lue), ('\u{19e0}', '\u{19ff}', Script::Khmer), ('\u{1a00}', '\u{1a16}',
+ Script::Buginese), ('\u{1a17}', '\u{1a18}', Script::Buginese), ('\u{1a19}', '\u{1a1a}',
+ Script::Buginese), ('\u{1a1b}', '\u{1a1b}', Script::Buginese), ('\u{1a1e}', '\u{1a1f}',
+ Script::Buginese), ('\u{1a20}', '\u{1a54}', Script::Tai_Tham), ('\u{1a55}', '\u{1a55}',
+ Script::Tai_Tham), ('\u{1a56}', '\u{1a56}', Script::Tai_Tham), ('\u{1a57}', '\u{1a57}',
+ Script::Tai_Tham), ('\u{1a58}', '\u{1a5e}', Script::Tai_Tham), ('\u{1a60}', '\u{1a60}',
+ Script::Tai_Tham), ('\u{1a61}', '\u{1a61}', Script::Tai_Tham), ('\u{1a62}', '\u{1a62}',
+ Script::Tai_Tham), ('\u{1a63}', '\u{1a64}', Script::Tai_Tham), ('\u{1a65}', '\u{1a6c}',
+ Script::Tai_Tham), ('\u{1a6d}', '\u{1a72}', Script::Tai_Tham), ('\u{1a73}', '\u{1a7c}',
+ Script::Tai_Tham), ('\u{1a7f}', '\u{1a7f}', Script::Tai_Tham), ('\u{1a80}', '\u{1a89}',
+ Script::Tai_Tham), ('\u{1a90}', '\u{1a99}', Script::Tai_Tham), ('\u{1aa0}', '\u{1aa6}',
+ Script::Tai_Tham), ('\u{1aa7}', '\u{1aa7}', Script::Tai_Tham), ('\u{1aa8}', '\u{1aad}',
+ Script::Tai_Tham), ('\u{1ab0}', '\u{1abd}', Script::Inherited), ('\u{1abe}', '\u{1abe}',
+ Script::Inherited), ('\u{1abf}', '\u{1ace}', Script::Inherited), ('\u{1b00}', '\u{1b03}',
+ Script::Balinese), ('\u{1b04}', '\u{1b04}', Script::Balinese), ('\u{1b05}', '\u{1b33}',
+ Script::Balinese), ('\u{1b34}', '\u{1b34}', Script::Balinese), ('\u{1b35}', '\u{1b35}',
+ Script::Balinese), ('\u{1b36}', '\u{1b3a}', Script::Balinese), ('\u{1b3b}', '\u{1b3b}',
+ Script::Balinese), ('\u{1b3c}', '\u{1b3c}', Script::Balinese), ('\u{1b3d}', '\u{1b41}',
+ Script::Balinese), ('\u{1b42}', '\u{1b42}', Script::Balinese), ('\u{1b43}', '\u{1b44}',
+ Script::Balinese), ('\u{1b45}', '\u{1b4c}', Script::Balinese), ('\u{1b50}', '\u{1b59}',
+ Script::Balinese), ('\u{1b5a}', '\u{1b60}', Script::Balinese), ('\u{1b61}', '\u{1b6a}',
+ Script::Balinese), ('\u{1b6b}', '\u{1b73}', Script::Balinese), ('\u{1b74}', '\u{1b7c}',
+ Script::Balinese), ('\u{1b7d}', '\u{1b7e}', Script::Balinese), ('\u{1b80}', '\u{1b81}',
+ Script::Sundanese), ('\u{1b82}', '\u{1b82}', Script::Sundanese), ('\u{1b83}', '\u{1ba0}',
+ Script::Sundanese), ('\u{1ba1}', '\u{1ba1}', Script::Sundanese), ('\u{1ba2}', '\u{1ba5}',
+ Script::Sundanese), ('\u{1ba6}', '\u{1ba7}', Script::Sundanese), ('\u{1ba8}', '\u{1ba9}',
+ Script::Sundanese), ('\u{1baa}', '\u{1baa}', Script::Sundanese), ('\u{1bab}', '\u{1bad}',
+ Script::Sundanese), ('\u{1bae}', '\u{1baf}', Script::Sundanese), ('\u{1bb0}', '\u{1bb9}',
+ Script::Sundanese), ('\u{1bba}', '\u{1bbf}', Script::Sundanese), ('\u{1bc0}', '\u{1be5}',
+ Script::Batak), ('\u{1be6}', '\u{1be6}', Script::Batak), ('\u{1be7}', '\u{1be7}',
+ Script::Batak), ('\u{1be8}', '\u{1be9}', Script::Batak), ('\u{1bea}', '\u{1bec}',
+ Script::Batak), ('\u{1bed}', '\u{1bed}', Script::Batak), ('\u{1bee}', '\u{1bee}',
+ Script::Batak), ('\u{1bef}', '\u{1bf1}', Script::Batak), ('\u{1bf2}', '\u{1bf3}',
+ Script::Batak), ('\u{1bfc}', '\u{1bff}', Script::Batak), ('\u{1c00}', '\u{1c23}',
+ Script::Lepcha), ('\u{1c24}', '\u{1c2b}', Script::Lepcha), ('\u{1c2c}', '\u{1c33}',
+ Script::Lepcha), ('\u{1c34}', '\u{1c35}', Script::Lepcha), ('\u{1c36}', '\u{1c37}',
+ Script::Lepcha), ('\u{1c3b}', '\u{1c3f}', Script::Lepcha), ('\u{1c40}', '\u{1c49}',
+ Script::Lepcha), ('\u{1c4d}', '\u{1c4f}', Script::Lepcha), ('\u{1c50}', '\u{1c59}',
+ Script::Ol_Chiki), ('\u{1c5a}', '\u{1c77}', Script::Ol_Chiki), ('\u{1c78}', '\u{1c7d}',
+ Script::Ol_Chiki), ('\u{1c7e}', '\u{1c7f}', Script::Ol_Chiki), ('\u{1c80}', '\u{1c88}',
+ Script::Cyrillic), ('\u{1c90}', '\u{1cba}', Script::Georgian), ('\u{1cbd}', '\u{1cbf}',
+ Script::Georgian), ('\u{1cc0}', '\u{1cc7}', Script::Sundanese), ('\u{1cd0}', '\u{1cd2}',
+ Script::Inherited), ('\u{1cd3}', '\u{1cd3}', Script::Common), ('\u{1cd4}', '\u{1ce0}',
+ Script::Inherited), ('\u{1ce1}', '\u{1ce1}', Script::Common), ('\u{1ce2}', '\u{1ce8}',
+ Script::Inherited), ('\u{1ce9}', '\u{1cec}', Script::Common), ('\u{1ced}', '\u{1ced}',
+ Script::Inherited), ('\u{1cee}', '\u{1cf3}', Script::Common), ('\u{1cf4}', '\u{1cf4}',
+ Script::Inherited), ('\u{1cf5}', '\u{1cf6}', Script::Common), ('\u{1cf7}', '\u{1cf7}',
+ Script::Common), ('\u{1cf8}', '\u{1cf9}', Script::Inherited), ('\u{1cfa}', '\u{1cfa}',
+ Script::Common), ('\u{1d00}', '\u{1d25}', Script::Latin), ('\u{1d26}', '\u{1d2a}',
+ Script::Greek), ('\u{1d2b}', '\u{1d2b}', Script::Cyrillic), ('\u{1d2c}', '\u{1d5c}',
+ Script::Latin), ('\u{1d5d}', '\u{1d61}', Script::Greek), ('\u{1d62}', '\u{1d65}',
+ Script::Latin), ('\u{1d66}', '\u{1d6a}', Script::Greek), ('\u{1d6b}', '\u{1d77}',
+ Script::Latin), ('\u{1d78}', '\u{1d78}', Script::Cyrillic), ('\u{1d79}', '\u{1d9a}',
+ Script::Latin), ('\u{1d9b}', '\u{1dbe}', Script::Latin), ('\u{1dbf}', '\u{1dbf}',
+ Script::Greek), ('\u{1dc0}', '\u{1dff}', Script::Inherited), ('\u{1e00}', '\u{1eff}',
+ Script::Latin), ('\u{1f00}', '\u{1f15}', Script::Greek), ('\u{1f18}', '\u{1f1d}',
+ Script::Greek), ('\u{1f20}', '\u{1f45}', Script::Greek), ('\u{1f48}', '\u{1f4d}',
+ Script::Greek), ('\u{1f50}', '\u{1f57}', Script::Greek), ('\u{1f59}', '\u{1f59}',
+ Script::Greek), ('\u{1f5b}', '\u{1f5b}', Script::Greek), ('\u{1f5d}', '\u{1f5d}',
+ Script::Greek), ('\u{1f5f}', '\u{1f7d}', Script::Greek), ('\u{1f80}', '\u{1fb4}',
+ Script::Greek), ('\u{1fb6}', '\u{1fbc}', Script::Greek), ('\u{1fbd}', '\u{1fbd}',
+ Script::Greek), ('\u{1fbe}', '\u{1fbe}', Script::Greek), ('\u{1fbf}', '\u{1fc1}',
+ Script::Greek), ('\u{1fc2}', '\u{1fc4}', Script::Greek), ('\u{1fc6}', '\u{1fcc}',
+ Script::Greek), ('\u{1fcd}', '\u{1fcf}', Script::Greek), ('\u{1fd0}', '\u{1fd3}',
+ Script::Greek), ('\u{1fd6}', '\u{1fdb}', Script::Greek), ('\u{1fdd}', '\u{1fdf}',
+ Script::Greek), ('\u{1fe0}', '\u{1fec}', Script::Greek), ('\u{1fed}', '\u{1fef}',
+ Script::Greek), ('\u{1ff2}', '\u{1ff4}', Script::Greek), ('\u{1ff6}', '\u{1ffc}',
+ Script::Greek), ('\u{1ffd}', '\u{1ffe}', Script::Greek), ('\u{2000}', '\u{200a}',
+ Script::Common), ('\u{200b}', '\u{200b}', Script::Common), ('\u{200c}', '\u{200d}',
+ Script::Inherited), ('\u{200e}', '\u{200f}', Script::Common), ('\u{2010}', '\u{2015}',
+ Script::Common), ('\u{2016}', '\u{2017}', Script::Common), ('\u{2018}', '\u{2018}',
+ Script::Common), ('\u{2019}', '\u{2019}', Script::Common), ('\u{201a}', '\u{201a}',
+ Script::Common), ('\u{201b}', '\u{201c}', Script::Common), ('\u{201d}', '\u{201d}',
+ Script::Common), ('\u{201e}', '\u{201e}', Script::Common), ('\u{201f}', '\u{201f}',
+ Script::Common), ('\u{2020}', '\u{2027}', Script::Common), ('\u{2028}', '\u{2028}',
+ Script::Common), ('\u{2029}', '\u{2029}', Script::Common), ('\u{202a}', '\u{202e}',
+ Script::Common), ('\u{202f}', '\u{202f}', Script::Common), ('\u{2030}', '\u{2038}',
+ Script::Common), ('\u{2039}', '\u{2039}', Script::Common), ('\u{203a}', '\u{203a}',
+ Script::Common), ('\u{203b}', '\u{203e}', Script::Common), ('\u{203f}', '\u{2040}',
+ Script::Common), ('\u{2041}', '\u{2043}', Script::Common), ('\u{2044}', '\u{2044}',
+ Script::Common), ('\u{2045}', '\u{2045}', Script::Common), ('\u{2046}', '\u{2046}',
+ Script::Common), ('\u{2047}', '\u{2051}', Script::Common), ('\u{2052}', '\u{2052}',
+ Script::Common), ('\u{2053}', '\u{2053}', Script::Common), ('\u{2054}', '\u{2054}',
+ Script::Common), ('\u{2055}', '\u{205e}', Script::Common), ('\u{205f}', '\u{205f}',
+ Script::Common), ('\u{2060}', '\u{2064}', Script::Common), ('\u{2066}', '\u{206f}',
+ Script::Common), ('\u{2070}', '\u{2070}', Script::Common), ('\u{2071}', '\u{2071}',
+ Script::Latin), ('\u{2074}', '\u{2079}', Script::Common), ('\u{207a}', '\u{207c}',
+ Script::Common), ('\u{207d}', '\u{207d}', Script::Common), ('\u{207e}', '\u{207e}',
+ Script::Common), ('\u{207f}', '\u{207f}', Script::Latin), ('\u{2080}', '\u{2089}',
+ Script::Common), ('\u{208a}', '\u{208c}', Script::Common), ('\u{208d}', '\u{208d}',
+ Script::Common), ('\u{208e}', '\u{208e}', Script::Common), ('\u{2090}', '\u{209c}',
+ Script::Latin), ('\u{20a0}', '\u{20c0}', Script::Common), ('\u{20d0}', '\u{20dc}',
+ Script::Inherited), ('\u{20dd}', '\u{20e0}', Script::Inherited), ('\u{20e1}', '\u{20e1}',
+ Script::Inherited), ('\u{20e2}', '\u{20e4}', Script::Inherited), ('\u{20e5}', '\u{20f0}',
+ Script::Inherited), ('\u{2100}', '\u{2101}', Script::Common), ('\u{2102}', '\u{2102}',
+ Script::Common), ('\u{2103}', '\u{2106}', Script::Common), ('\u{2107}', '\u{2107}',
+ Script::Common), ('\u{2108}', '\u{2109}', Script::Common), ('\u{210a}', '\u{2113}',
+ Script::Common), ('\u{2114}', '\u{2114}', Script::Common), ('\u{2115}', '\u{2115}',
+ Script::Common), ('\u{2116}', '\u{2117}', Script::Common), ('\u{2118}', '\u{2118}',
+ Script::Common), ('\u{2119}', '\u{211d}', Script::Common), ('\u{211e}', '\u{2123}',
+ Script::Common), ('\u{2124}', '\u{2124}', Script::Common), ('\u{2125}', '\u{2125}',
+ Script::Common), ('\u{2126}', '\u{2126}', Script::Greek), ('\u{2127}', '\u{2127}',
+ Script::Common), ('\u{2128}', '\u{2128}', Script::Common), ('\u{2129}', '\u{2129}',
+ Script::Common), ('\u{212a}', '\u{212b}', Script::Latin), ('\u{212c}', '\u{212d}',
+ Script::Common), ('\u{212e}', '\u{212e}', Script::Common), ('\u{212f}', '\u{2131}',
+ Script::Common), ('\u{2132}', '\u{2132}', Script::Latin), ('\u{2133}', '\u{2134}',
+ Script::Common), ('\u{2135}', '\u{2138}', Script::Common), ('\u{2139}', '\u{2139}',
+ Script::Common), ('\u{213a}', '\u{213b}', Script::Common), ('\u{213c}', '\u{213f}',
+ Script::Common), ('\u{2140}', '\u{2144}', Script::Common), ('\u{2145}', '\u{2149}',
+ Script::Common), ('\u{214a}', '\u{214a}', Script::Common), ('\u{214b}', '\u{214b}',
+ Script::Common), ('\u{214c}', '\u{214d}', Script::Common), ('\u{214e}', '\u{214e}',
+ Script::Latin), ('\u{214f}', '\u{214f}', Script::Common), ('\u{2150}', '\u{215f}',
+ Script::Common), ('\u{2160}', '\u{2182}', Script::Latin), ('\u{2183}', '\u{2184}',
+ Script::Latin), ('\u{2185}', '\u{2188}', Script::Latin), ('\u{2189}', '\u{2189}',
+ Script::Common), ('\u{218a}', '\u{218b}', Script::Common), ('\u{2190}', '\u{2194}',
+ Script::Common), ('\u{2195}', '\u{2199}', Script::Common), ('\u{219a}', '\u{219b}',
+ Script::Common), ('\u{219c}', '\u{219f}', Script::Common), ('\u{21a0}', '\u{21a0}',
+ Script::Common), ('\u{21a1}', '\u{21a2}', Script::Common), ('\u{21a3}', '\u{21a3}',
+ Script::Common), ('\u{21a4}', '\u{21a5}', Script::Common), ('\u{21a6}', '\u{21a6}',
+ Script::Common), ('\u{21a7}', '\u{21ad}', Script::Common), ('\u{21ae}', '\u{21ae}',
+ Script::Common), ('\u{21af}', '\u{21cd}', Script::Common), ('\u{21ce}', '\u{21cf}',
+ Script::Common), ('\u{21d0}', '\u{21d1}', Script::Common), ('\u{21d2}', '\u{21d2}',
+ Script::Common), ('\u{21d3}', '\u{21d3}', Script::Common), ('\u{21d4}', '\u{21d4}',
+ Script::Common), ('\u{21d5}', '\u{21f3}', Script::Common), ('\u{21f4}', '\u{22ff}',
+ Script::Common), ('\u{2300}', '\u{2307}', Script::Common), ('\u{2308}', '\u{2308}',
+ Script::Common), ('\u{2309}', '\u{2309}', Script::Common), ('\u{230a}', '\u{230a}',
+ Script::Common), ('\u{230b}', '\u{230b}', Script::Common), ('\u{230c}', '\u{231f}',
+ Script::Common), ('\u{2320}', '\u{2321}', Script::Common), ('\u{2322}', '\u{2328}',
+ Script::Common), ('\u{2329}', '\u{2329}', Script::Common), ('\u{232a}', '\u{232a}',
+ Script::Common), ('\u{232b}', '\u{237b}', Script::Common), ('\u{237c}', '\u{237c}',
+ Script::Common), ('\u{237d}', '\u{239a}', Script::Common), ('\u{239b}', '\u{23b3}',
+ Script::Common), ('\u{23b4}', '\u{23db}', Script::Common), ('\u{23dc}', '\u{23e1}',
+ Script::Common), ('\u{23e2}', '\u{2426}', Script::Common), ('\u{2440}', '\u{244a}',
+ Script::Common), ('\u{2460}', '\u{249b}', Script::Common), ('\u{249c}', '\u{24e9}',
+ Script::Common), ('\u{24ea}', '\u{24ff}', Script::Common), ('\u{2500}', '\u{25b6}',
+ Script::Common), ('\u{25b7}', '\u{25b7}', Script::Common), ('\u{25b8}', '\u{25c0}',
+ Script::Common), ('\u{25c1}', '\u{25c1}', Script::Common), ('\u{25c2}', '\u{25f7}',
+ Script::Common), ('\u{25f8}', '\u{25ff}', Script::Common), ('\u{2600}', '\u{266e}',
+ Script::Common), ('\u{266f}', '\u{266f}', Script::Common), ('\u{2670}', '\u{2767}',
+ Script::Common), ('\u{2768}', '\u{2768}', Script::Common), ('\u{2769}', '\u{2769}',
+ Script::Common), ('\u{276a}', '\u{276a}', Script::Common), ('\u{276b}', '\u{276b}',
+ Script::Common), ('\u{276c}', '\u{276c}', Script::Common), ('\u{276d}', '\u{276d}',
+ Script::Common), ('\u{276e}', '\u{276e}', Script::Common), ('\u{276f}', '\u{276f}',
+ Script::Common), ('\u{2770}', '\u{2770}', Script::Common), ('\u{2771}', '\u{2771}',
+ Script::Common), ('\u{2772}', '\u{2772}', Script::Common), ('\u{2773}', '\u{2773}',
+ Script::Common), ('\u{2774}', '\u{2774}', Script::Common), ('\u{2775}', '\u{2775}',
+ Script::Common), ('\u{2776}', '\u{2793}', Script::Common), ('\u{2794}', '\u{27bf}',
+ Script::Common), ('\u{27c0}', '\u{27c4}', Script::Common), ('\u{27c5}', '\u{27c5}',
+ Script::Common), ('\u{27c6}', '\u{27c6}', Script::Common), ('\u{27c7}', '\u{27e5}',
+ Script::Common), ('\u{27e6}', '\u{27e6}', Script::Common), ('\u{27e7}', '\u{27e7}',
+ Script::Common), ('\u{27e8}', '\u{27e8}', Script::Common), ('\u{27e9}', '\u{27e9}',
+ Script::Common), ('\u{27ea}', '\u{27ea}', Script::Common), ('\u{27eb}', '\u{27eb}',
+ Script::Common), ('\u{27ec}', '\u{27ec}', Script::Common), ('\u{27ed}', '\u{27ed}',
+ Script::Common), ('\u{27ee}', '\u{27ee}', Script::Common), ('\u{27ef}', '\u{27ef}',
+ Script::Common), ('\u{27f0}', '\u{27ff}', Script::Common), ('\u{2800}', '\u{28ff}',
+ Script::Braille), ('\u{2900}', '\u{2982}', Script::Common), ('\u{2983}', '\u{2983}',
+ Script::Common), ('\u{2984}', '\u{2984}', Script::Common), ('\u{2985}', '\u{2985}',
+ Script::Common), ('\u{2986}', '\u{2986}', Script::Common), ('\u{2987}', '\u{2987}',
+ Script::Common), ('\u{2988}', '\u{2988}', Script::Common), ('\u{2989}', '\u{2989}',
+ Script::Common), ('\u{298a}', '\u{298a}', Script::Common), ('\u{298b}', '\u{298b}',
+ Script::Common), ('\u{298c}', '\u{298c}', Script::Common), ('\u{298d}', '\u{298d}',
+ Script::Common), ('\u{298e}', '\u{298e}', Script::Common), ('\u{298f}', '\u{298f}',
+ Script::Common), ('\u{2990}', '\u{2990}', Script::Common), ('\u{2991}', '\u{2991}',
+ Script::Common), ('\u{2992}', '\u{2992}', Script::Common), ('\u{2993}', '\u{2993}',
+ Script::Common), ('\u{2994}', '\u{2994}', Script::Common), ('\u{2995}', '\u{2995}',
+ Script::Common), ('\u{2996}', '\u{2996}', Script::Common), ('\u{2997}', '\u{2997}',
+ Script::Common), ('\u{2998}', '\u{2998}', Script::Common), ('\u{2999}', '\u{29d7}',
+ Script::Common), ('\u{29d8}', '\u{29d8}', Script::Common), ('\u{29d9}', '\u{29d9}',
+ Script::Common), ('\u{29da}', '\u{29da}', Script::Common), ('\u{29db}', '\u{29db}',
+ Script::Common), ('\u{29dc}', '\u{29fb}', Script::Common), ('\u{29fc}', '\u{29fc}',
+ Script::Common), ('\u{29fd}', '\u{29fd}', Script::Common), ('\u{29fe}', '\u{2aff}',
+ Script::Common), ('\u{2b00}', '\u{2b2f}', Script::Common), ('\u{2b30}', '\u{2b44}',
+ Script::Common), ('\u{2b45}', '\u{2b46}', Script::Common), ('\u{2b47}', '\u{2b4c}',
+ Script::Common), ('\u{2b4d}', '\u{2b73}', Script::Common), ('\u{2b76}', '\u{2b95}',
+ Script::Common), ('\u{2b97}', '\u{2bff}', Script::Common), ('\u{2c00}', '\u{2c5f}',
Script::Glagolitic), ('\u{2c60}', '\u{2c7b}', Script::Latin), ('\u{2c7c}', '\u{2c7d}',
Script::Latin), ('\u{2c7e}', '\u{2c7f}', Script::Latin), ('\u{2c80}', '\u{2ce4}',
Script::Coptic), ('\u{2ce5}', '\u{2cea}', Script::Coptic), ('\u{2ceb}', '\u{2cee}',
@@ -2426,68 +2512,74 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
Script::Common), ('\u{2e3a}', '\u{2e3b}', Script::Common), ('\u{2e3c}', '\u{2e3f}',
Script::Common), ('\u{2e40}', '\u{2e40}', Script::Common), ('\u{2e41}', '\u{2e41}',
Script::Common), ('\u{2e42}', '\u{2e42}', Script::Common), ('\u{2e43}', '\u{2e4f}',
- Script::Common), ('\u{2e50}', '\u{2e51}', Script::Common), ('\u{2e52}', '\u{2e52}',
- Script::Common), ('\u{2e80}', '\u{2e99}', Script::Han), ('\u{2e9b}', '\u{2ef3}',
- Script::Han), ('\u{2f00}', '\u{2fd5}', Script::Han), ('\u{2ff0}', '\u{2ffb}',
- Script::Common), ('\u{3000}', '\u{3000}', Script::Common), ('\u{3001}', '\u{3003}',
- Script::Common), ('\u{3004}', '\u{3004}', Script::Common), ('\u{3005}', '\u{3005}',
- Script::Han), ('\u{3006}', '\u{3006}', Script::Common), ('\u{3007}', '\u{3007}',
- Script::Han), ('\u{3008}', '\u{3008}', Script::Common), ('\u{3009}', '\u{3009}',
- Script::Common), ('\u{300a}', '\u{300a}', Script::Common), ('\u{300b}', '\u{300b}',
- Script::Common), ('\u{300c}', '\u{300c}', Script::Common), ('\u{300d}', '\u{300d}',
- Script::Common), ('\u{300e}', '\u{300e}', Script::Common), ('\u{300f}', '\u{300f}',
- Script::Common), ('\u{3010}', '\u{3010}', Script::Common), ('\u{3011}', '\u{3011}',
- Script::Common), ('\u{3012}', '\u{3013}', Script::Common), ('\u{3014}', '\u{3014}',
- Script::Common), ('\u{3015}', '\u{3015}', Script::Common), ('\u{3016}', '\u{3016}',
- Script::Common), ('\u{3017}', '\u{3017}', Script::Common), ('\u{3018}', '\u{3018}',
- Script::Common), ('\u{3019}', '\u{3019}', Script::Common), ('\u{301a}', '\u{301a}',
- Script::Common), ('\u{301b}', '\u{301b}', Script::Common), ('\u{301c}', '\u{301c}',
- Script::Common), ('\u{301d}', '\u{301d}', Script::Common), ('\u{301e}', '\u{301f}',
- Script::Common), ('\u{3020}', '\u{3020}', Script::Common), ('\u{3021}', '\u{3029}',
- Script::Han), ('\u{302a}', '\u{302d}', Script::Inherited), ('\u{302e}', '\u{302f}',
- Script::Hangul), ('\u{3030}', '\u{3030}', Script::Common), ('\u{3031}', '\u{3035}',
- Script::Common), ('\u{3036}', '\u{3037}', Script::Common), ('\u{3038}', '\u{303a}',
- Script::Han), ('\u{303b}', '\u{303b}', Script::Han), ('\u{303c}', '\u{303c}',
- Script::Common), ('\u{303d}', '\u{303d}', Script::Common), ('\u{303e}', '\u{303f}',
- Script::Common), ('\u{3041}', '\u{3096}', Script::Hiragana), ('\u{3099}', '\u{309a}',
- Script::Inherited), ('\u{309b}', '\u{309c}', Script::Common), ('\u{309d}', '\u{309e}',
- Script::Hiragana), ('\u{309f}', '\u{309f}', Script::Hiragana), ('\u{30a0}', '\u{30a0}',
- Script::Common), ('\u{30a1}', '\u{30fa}', Script::Katakana), ('\u{30fb}', '\u{30fb}',
- Script::Common), ('\u{30fc}', '\u{30fc}', Script::Common), ('\u{30fd}', '\u{30fe}',
- Script::Katakana), ('\u{30ff}', '\u{30ff}', Script::Katakana), ('\u{3105}', '\u{312f}',
- Script::Bopomofo), ('\u{3131}', '\u{318e}', Script::Hangul), ('\u{3190}', '\u{3191}',
- Script::Common), ('\u{3192}', '\u{3195}', Script::Common), ('\u{3196}', '\u{319f}',
- Script::Common), ('\u{31a0}', '\u{31bf}', Script::Bopomofo), ('\u{31c0}', '\u{31e3}',
- Script::Common), ('\u{31f0}', '\u{31ff}', Script::Katakana), ('\u{3200}', '\u{321e}',
- Script::Hangul), ('\u{3220}', '\u{3229}', Script::Common), ('\u{322a}', '\u{3247}',
- Script::Common), ('\u{3248}', '\u{324f}', Script::Common), ('\u{3250}', '\u{3250}',
- Script::Common), ('\u{3251}', '\u{325f}', Script::Common), ('\u{3260}', '\u{327e}',
- Script::Hangul), ('\u{327f}', '\u{327f}', Script::Common), ('\u{3280}', '\u{3289}',
- Script::Common), ('\u{328a}', '\u{32b0}', Script::Common), ('\u{32b1}', '\u{32bf}',
- Script::Common), ('\u{32c0}', '\u{32cf}', Script::Common), ('\u{32d0}', '\u{32fe}',
- Script::Katakana), ('\u{32ff}', '\u{32ff}', Script::Common), ('\u{3300}', '\u{3357}',
- Script::Katakana), ('\u{3358}', '\u{33ff}', Script::Common), ('\u{3400}', '\u{4dbf}',
- Script::Han), ('\u{4dc0}', '\u{4dff}', Script::Common), ('\u{4e00}', '\u{9ffc}',
- Script::Han), ('\u{a000}', '\u{a014}', Script::Yi), ('\u{a015}', '\u{a015}', Script::Yi),
- ('\u{a016}', '\u{a48c}', Script::Yi), ('\u{a490}', '\u{a4c6}', Script::Yi), ('\u{a4d0}',
- '\u{a4f7}', Script::Lisu), ('\u{a4f8}', '\u{a4fd}', Script::Lisu), ('\u{a4fe}',
- '\u{a4ff}', Script::Lisu), ('\u{a500}', '\u{a60b}', Script::Vai), ('\u{a60c}', '\u{a60c}',
- Script::Vai), ('\u{a60d}', '\u{a60f}', Script::Vai), ('\u{a610}', '\u{a61f}',
- Script::Vai), ('\u{a620}', '\u{a629}', Script::Vai), ('\u{a62a}', '\u{a62b}',
- Script::Vai), ('\u{a640}', '\u{a66d}', Script::Cyrillic), ('\u{a66e}', '\u{a66e}',
- Script::Cyrillic), ('\u{a66f}', '\u{a66f}', Script::Cyrillic), ('\u{a670}', '\u{a672}',
- Script::Cyrillic), ('\u{a673}', '\u{a673}', Script::Cyrillic), ('\u{a674}', '\u{a67d}',
- Script::Cyrillic), ('\u{a67e}', '\u{a67e}', Script::Cyrillic), ('\u{a67f}', '\u{a67f}',
- Script::Cyrillic), ('\u{a680}', '\u{a69b}', Script::Cyrillic), ('\u{a69c}', '\u{a69d}',
- Script::Cyrillic), ('\u{a69e}', '\u{a69f}', Script::Cyrillic), ('\u{a6a0}', '\u{a6e5}',
- Script::Bamum), ('\u{a6e6}', '\u{a6ef}', Script::Bamum), ('\u{a6f0}', '\u{a6f1}',
- Script::Bamum), ('\u{a6f2}', '\u{a6f7}', Script::Bamum), ('\u{a700}', '\u{a716}',
- Script::Common), ('\u{a717}', '\u{a71f}', Script::Common), ('\u{a720}', '\u{a721}',
- Script::Common), ('\u{a722}', '\u{a76f}', Script::Latin), ('\u{a770}', '\u{a770}',
- Script::Latin), ('\u{a771}', '\u{a787}', Script::Latin), ('\u{a788}', '\u{a788}',
- Script::Common), ('\u{a789}', '\u{a78a}', Script::Common), ('\u{a78b}', '\u{a78e}',
- Script::Latin), ('\u{a78f}', '\u{a78f}', Script::Latin), ('\u{a790}', '\u{a7bf}',
- Script::Latin), ('\u{a7c2}', '\u{a7ca}', Script::Latin), ('\u{a7f5}', '\u{a7f6}',
+ Script::Common), ('\u{2e50}', '\u{2e51}', Script::Common), ('\u{2e52}', '\u{2e54}',
+ Script::Common), ('\u{2e55}', '\u{2e55}', Script::Common), ('\u{2e56}', '\u{2e56}',
+ Script::Common), ('\u{2e57}', '\u{2e57}', Script::Common), ('\u{2e58}', '\u{2e58}',
+ Script::Common), ('\u{2e59}', '\u{2e59}', Script::Common), ('\u{2e5a}', '\u{2e5a}',
+ Script::Common), ('\u{2e5b}', '\u{2e5b}', Script::Common), ('\u{2e5c}', '\u{2e5c}',
+ Script::Common), ('\u{2e5d}', '\u{2e5d}', Script::Common), ('\u{2e80}', '\u{2e99}',
+ Script::Han), ('\u{2e9b}', '\u{2ef3}', Script::Han), ('\u{2f00}', '\u{2fd5}',
+ Script::Han), ('\u{2ff0}', '\u{2ffb}', Script::Common), ('\u{3000}', '\u{3000}',
+ Script::Common), ('\u{3001}', '\u{3003}', Script::Common), ('\u{3004}', '\u{3004}',
+ Script::Common), ('\u{3005}', '\u{3005}', Script::Han), ('\u{3006}', '\u{3006}',
+ Script::Common), ('\u{3007}', '\u{3007}', Script::Han), ('\u{3008}', '\u{3008}',
+ Script::Common), ('\u{3009}', '\u{3009}', Script::Common), ('\u{300a}', '\u{300a}',
+ Script::Common), ('\u{300b}', '\u{300b}', Script::Common), ('\u{300c}', '\u{300c}',
+ Script::Common), ('\u{300d}', '\u{300d}', Script::Common), ('\u{300e}', '\u{300e}',
+ Script::Common), ('\u{300f}', '\u{300f}', Script::Common), ('\u{3010}', '\u{3010}',
+ Script::Common), ('\u{3011}', '\u{3011}', Script::Common), ('\u{3012}', '\u{3013}',
+ Script::Common), ('\u{3014}', '\u{3014}', Script::Common), ('\u{3015}', '\u{3015}',
+ Script::Common), ('\u{3016}', '\u{3016}', Script::Common), ('\u{3017}', '\u{3017}',
+ Script::Common), ('\u{3018}', '\u{3018}', Script::Common), ('\u{3019}', '\u{3019}',
+ Script::Common), ('\u{301a}', '\u{301a}', Script::Common), ('\u{301b}', '\u{301b}',
+ Script::Common), ('\u{301c}', '\u{301c}', Script::Common), ('\u{301d}', '\u{301d}',
+ Script::Common), ('\u{301e}', '\u{301f}', Script::Common), ('\u{3020}', '\u{3020}',
+ Script::Common), ('\u{3021}', '\u{3029}', Script::Han), ('\u{302a}', '\u{302d}',
+ Script::Inherited), ('\u{302e}', '\u{302f}', Script::Hangul), ('\u{3030}', '\u{3030}',
+ Script::Common), ('\u{3031}', '\u{3035}', Script::Common), ('\u{3036}', '\u{3037}',
+ Script::Common), ('\u{3038}', '\u{303a}', Script::Han), ('\u{303b}', '\u{303b}',
+ Script::Han), ('\u{303c}', '\u{303c}', Script::Common), ('\u{303d}', '\u{303d}',
+ Script::Common), ('\u{303e}', '\u{303f}', Script::Common), ('\u{3041}', '\u{3096}',
+ Script::Hiragana), ('\u{3099}', '\u{309a}', Script::Inherited), ('\u{309b}', '\u{309c}',
+ Script::Common), ('\u{309d}', '\u{309e}', Script::Hiragana), ('\u{309f}', '\u{309f}',
+ Script::Hiragana), ('\u{30a0}', '\u{30a0}', Script::Common), ('\u{30a1}', '\u{30fa}',
+ Script::Katakana), ('\u{30fb}', '\u{30fb}', Script::Common), ('\u{30fc}', '\u{30fc}',
+ Script::Common), ('\u{30fd}', '\u{30fe}', Script::Katakana), ('\u{30ff}', '\u{30ff}',
+ Script::Katakana), ('\u{3105}', '\u{312f}', Script::Bopomofo), ('\u{3131}', '\u{318e}',
+ Script::Hangul), ('\u{3190}', '\u{3191}', Script::Common), ('\u{3192}', '\u{3195}',
+ Script::Common), ('\u{3196}', '\u{319f}', Script::Common), ('\u{31a0}', '\u{31bf}',
+ Script::Bopomofo), ('\u{31c0}', '\u{31e3}', Script::Common), ('\u{31f0}', '\u{31ff}',
+ Script::Katakana), ('\u{3200}', '\u{321e}', Script::Hangul), ('\u{3220}', '\u{3229}',
+ Script::Common), ('\u{322a}', '\u{3247}', Script::Common), ('\u{3248}', '\u{324f}',
+ Script::Common), ('\u{3250}', '\u{3250}', Script::Common), ('\u{3251}', '\u{325f}',
+ Script::Common), ('\u{3260}', '\u{327e}', Script::Hangul), ('\u{327f}', '\u{327f}',
+ Script::Common), ('\u{3280}', '\u{3289}', Script::Common), ('\u{328a}', '\u{32b0}',
+ Script::Common), ('\u{32b1}', '\u{32bf}', Script::Common), ('\u{32c0}', '\u{32cf}',
+ Script::Common), ('\u{32d0}', '\u{32fe}', Script::Katakana), ('\u{32ff}', '\u{32ff}',
+ Script::Common), ('\u{3300}', '\u{3357}', Script::Katakana), ('\u{3358}', '\u{33ff}',
+ Script::Common), ('\u{3400}', '\u{4dbf}', Script::Han), ('\u{4dc0}', '\u{4dff}',
+ Script::Common), ('\u{4e00}', '\u{9fff}', Script::Han), ('\u{a000}', '\u{a014}',
+ Script::Yi), ('\u{a015}', '\u{a015}', Script::Yi), ('\u{a016}', '\u{a48c}', Script::Yi),
+ ('\u{a490}', '\u{a4c6}', Script::Yi), ('\u{a4d0}', '\u{a4f7}', Script::Lisu), ('\u{a4f8}',
+ '\u{a4fd}', Script::Lisu), ('\u{a4fe}', '\u{a4ff}', Script::Lisu), ('\u{a500}',
+ '\u{a60b}', Script::Vai), ('\u{a60c}', '\u{a60c}', Script::Vai), ('\u{a60d}', '\u{a60f}',
+ Script::Vai), ('\u{a610}', '\u{a61f}', Script::Vai), ('\u{a620}', '\u{a629}',
+ Script::Vai), ('\u{a62a}', '\u{a62b}', Script::Vai), ('\u{a640}', '\u{a66d}',
+ Script::Cyrillic), ('\u{a66e}', '\u{a66e}', Script::Cyrillic), ('\u{a66f}', '\u{a66f}',
+ Script::Cyrillic), ('\u{a670}', '\u{a672}', Script::Cyrillic), ('\u{a673}', '\u{a673}',
+ Script::Cyrillic), ('\u{a674}', '\u{a67d}', Script::Cyrillic), ('\u{a67e}', '\u{a67e}',
+ Script::Cyrillic), ('\u{a67f}', '\u{a67f}', Script::Cyrillic), ('\u{a680}', '\u{a69b}',
+ Script::Cyrillic), ('\u{a69c}', '\u{a69d}', Script::Cyrillic), ('\u{a69e}', '\u{a69f}',
+ Script::Cyrillic), ('\u{a6a0}', '\u{a6e5}', Script::Bamum), ('\u{a6e6}', '\u{a6ef}',
+ Script::Bamum), ('\u{a6f0}', '\u{a6f1}', Script::Bamum), ('\u{a6f2}', '\u{a6f7}',
+ Script::Bamum), ('\u{a700}', '\u{a716}', Script::Common), ('\u{a717}', '\u{a71f}',
+ Script::Common), ('\u{a720}', '\u{a721}', Script::Common), ('\u{a722}', '\u{a76f}',
+ Script::Latin), ('\u{a770}', '\u{a770}', Script::Latin), ('\u{a771}', '\u{a787}',
+ Script::Latin), ('\u{a788}', '\u{a788}', Script::Common), ('\u{a789}', '\u{a78a}',
+ Script::Common), ('\u{a78b}', '\u{a78e}', Script::Latin), ('\u{a78f}', '\u{a78f}',
+ Script::Latin), ('\u{a790}', '\u{a7ca}', Script::Latin), ('\u{a7d0}', '\u{a7d1}',
+ Script::Latin), ('\u{a7d3}', '\u{a7d3}', Script::Latin), ('\u{a7d5}', '\u{a7d9}',
+ Script::Latin), ('\u{a7f2}', '\u{a7f4}', Script::Latin), ('\u{a7f5}', '\u{a7f6}',
Script::Latin), ('\u{a7f7}', '\u{a7f7}', Script::Latin), ('\u{a7f8}', '\u{a7f9}',
Script::Latin), ('\u{a7fa}', '\u{a7fa}', Script::Latin), ('\u{a7fb}', '\u{a7ff}',
Script::Latin), ('\u{a800}', '\u{a801}', Script::Syloti_Nagri), ('\u{a802}', '\u{a802}',
@@ -2568,11 +2660,12 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
'\u{fb3c}', Script::Hebrew), ('\u{fb3e}', '\u{fb3e}', Script::Hebrew), ('\u{fb40}',
'\u{fb41}', Script::Hebrew), ('\u{fb43}', '\u{fb44}', Script::Hebrew), ('\u{fb46}',
'\u{fb4f}', Script::Hebrew), ('\u{fb50}', '\u{fbb1}', Script::Arabic), ('\u{fbb2}',
- '\u{fbc1}', Script::Arabic), ('\u{fbd3}', '\u{fd3d}', Script::Arabic), ('\u{fd3e}',
- '\u{fd3e}', Script::Common), ('\u{fd3f}', '\u{fd3f}', Script::Common), ('\u{fd50}',
- '\u{fd8f}', Script::Arabic), ('\u{fd92}', '\u{fdc7}', Script::Arabic), ('\u{fdf0}',
+ '\u{fbc2}', Script::Arabic), ('\u{fbd3}', '\u{fd3d}', Script::Arabic), ('\u{fd3e}',
+ '\u{fd3e}', Script::Common), ('\u{fd3f}', '\u{fd3f}', Script::Common), ('\u{fd40}',
+ '\u{fd4f}', Script::Arabic), ('\u{fd50}', '\u{fd8f}', Script::Arabic), ('\u{fd92}',
+ '\u{fdc7}', Script::Arabic), ('\u{fdcf}', '\u{fdcf}', Script::Arabic), ('\u{fdf0}',
'\u{fdfb}', Script::Arabic), ('\u{fdfc}', '\u{fdfc}', Script::Arabic), ('\u{fdfd}',
- '\u{fdfd}', Script::Arabic), ('\u{fe00}', '\u{fe0f}', Script::Inherited), ('\u{fe10}',
+ '\u{fdff}', Script::Arabic), ('\u{fe00}', '\u{fe0f}', Script::Inherited), ('\u{fe10}',
'\u{fe16}', Script::Common), ('\u{fe17}', '\u{fe17}', Script::Common), ('\u{fe18}',
'\u{fe18}', Script::Common), ('\u{fe19}', '\u{fe19}', Script::Common), ('\u{fe20}',
'\u{fe2d}', Script::Inherited), ('\u{fe2e}', '\u{fe2f}', Script::Cyrillic), ('\u{fe30}',
@@ -2648,41 +2741,48 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
Script::Osmanya), ('\u{104a0}', '\u{104a9}', Script::Osmanya), ('\u{104b0}', '\u{104d3}',
Script::Osage), ('\u{104d8}', '\u{104fb}', Script::Osage), ('\u{10500}', '\u{10527}',
Script::Elbasan), ('\u{10530}', '\u{10563}', Script::Caucasian_Albanian), ('\u{1056f}',
- '\u{1056f}', Script::Caucasian_Albanian), ('\u{10600}', '\u{10736}', Script::Linear_A),
- ('\u{10740}', '\u{10755}', Script::Linear_A), ('\u{10760}', '\u{10767}',
- Script::Linear_A), ('\u{10800}', '\u{10805}', Script::Cypriot), ('\u{10808}', '\u{10808}',
- Script::Cypriot), ('\u{1080a}', '\u{10835}', Script::Cypriot), ('\u{10837}', '\u{10838}',
- Script::Cypriot), ('\u{1083c}', '\u{1083c}', Script::Cypriot), ('\u{1083f}', '\u{1083f}',
- Script::Cypriot), ('\u{10840}', '\u{10855}', Script::Imperial_Aramaic), ('\u{10857}',
- '\u{10857}', Script::Imperial_Aramaic), ('\u{10858}', '\u{1085f}',
- Script::Imperial_Aramaic), ('\u{10860}', '\u{10876}', Script::Palmyrene), ('\u{10877}',
- '\u{10878}', Script::Palmyrene), ('\u{10879}', '\u{1087f}', Script::Palmyrene),
- ('\u{10880}', '\u{1089e}', Script::Nabataean), ('\u{108a7}', '\u{108af}',
- Script::Nabataean), ('\u{108e0}', '\u{108f2}', Script::Hatran), ('\u{108f4}', '\u{108f5}',
- Script::Hatran), ('\u{108fb}', '\u{108ff}', Script::Hatran), ('\u{10900}', '\u{10915}',
- Script::Phoenician), ('\u{10916}', '\u{1091b}', Script::Phoenician), ('\u{1091f}',
- '\u{1091f}', Script::Phoenician), ('\u{10920}', '\u{10939}', Script::Lydian),
- ('\u{1093f}', '\u{1093f}', Script::Lydian), ('\u{10980}', '\u{1099f}',
- Script::Meroitic_Hieroglyphs), ('\u{109a0}', '\u{109b7}', Script::Meroitic_Cursive),
- ('\u{109bc}', '\u{109bd}', Script::Meroitic_Cursive), ('\u{109be}', '\u{109bf}',
- Script::Meroitic_Cursive), ('\u{109c0}', '\u{109cf}', Script::Meroitic_Cursive),
- ('\u{109d2}', '\u{109ff}', Script::Meroitic_Cursive), ('\u{10a00}', '\u{10a00}',
- Script::Kharoshthi), ('\u{10a01}', '\u{10a03}', Script::Kharoshthi), ('\u{10a05}',
- '\u{10a06}', Script::Kharoshthi), ('\u{10a0c}', '\u{10a0f}', Script::Kharoshthi),
- ('\u{10a10}', '\u{10a13}', Script::Kharoshthi), ('\u{10a15}', '\u{10a17}',
- Script::Kharoshthi), ('\u{10a19}', '\u{10a35}', Script::Kharoshthi), ('\u{10a38}',
- '\u{10a3a}', Script::Kharoshthi), ('\u{10a3f}', '\u{10a3f}', Script::Kharoshthi),
- ('\u{10a40}', '\u{10a48}', Script::Kharoshthi), ('\u{10a50}', '\u{10a58}',
- Script::Kharoshthi), ('\u{10a60}', '\u{10a7c}', Script::Old_South_Arabian), ('\u{10a7d}',
- '\u{10a7e}', Script::Old_South_Arabian), ('\u{10a7f}', '\u{10a7f}',
- Script::Old_South_Arabian), ('\u{10a80}', '\u{10a9c}', Script::Old_North_Arabian),
- ('\u{10a9d}', '\u{10a9f}', Script::Old_North_Arabian), ('\u{10ac0}', '\u{10ac7}',
- Script::Manichaean), ('\u{10ac8}', '\u{10ac8}', Script::Manichaean), ('\u{10ac9}',
- '\u{10ae4}', Script::Manichaean), ('\u{10ae5}', '\u{10ae6}', Script::Manichaean),
- ('\u{10aeb}', '\u{10aef}', Script::Manichaean), ('\u{10af0}', '\u{10af6}',
- Script::Manichaean), ('\u{10b00}', '\u{10b35}', Script::Avestan), ('\u{10b39}',
- '\u{10b3f}', Script::Avestan), ('\u{10b40}', '\u{10b55}', Script::Inscriptional_Parthian),
- ('\u{10b58}', '\u{10b5f}', Script::Inscriptional_Parthian), ('\u{10b60}', '\u{10b72}',
+ '\u{1056f}', Script::Caucasian_Albanian), ('\u{10570}', '\u{1057a}', Script::Vithkuqi),
+ ('\u{1057c}', '\u{1058a}', Script::Vithkuqi), ('\u{1058c}', '\u{10592}',
+ Script::Vithkuqi), ('\u{10594}', '\u{10595}', Script::Vithkuqi), ('\u{10597}',
+ '\u{105a1}', Script::Vithkuqi), ('\u{105a3}', '\u{105b1}', Script::Vithkuqi),
+ ('\u{105b3}', '\u{105b9}', Script::Vithkuqi), ('\u{105bb}', '\u{105bc}',
+ Script::Vithkuqi), ('\u{10600}', '\u{10736}', Script::Linear_A), ('\u{10740}',
+ '\u{10755}', Script::Linear_A), ('\u{10760}', '\u{10767}', Script::Linear_A),
+ ('\u{10780}', '\u{10785}', Script::Latin), ('\u{10787}', '\u{107b0}', Script::Latin),
+ ('\u{107b2}', '\u{107ba}', Script::Latin), ('\u{10800}', '\u{10805}', Script::Cypriot),
+ ('\u{10808}', '\u{10808}', Script::Cypriot), ('\u{1080a}', '\u{10835}', Script::Cypriot),
+ ('\u{10837}', '\u{10838}', Script::Cypriot), ('\u{1083c}', '\u{1083c}', Script::Cypriot),
+ ('\u{1083f}', '\u{1083f}', Script::Cypriot), ('\u{10840}', '\u{10855}',
+ Script::Imperial_Aramaic), ('\u{10857}', '\u{10857}', Script::Imperial_Aramaic),
+ ('\u{10858}', '\u{1085f}', Script::Imperial_Aramaic), ('\u{10860}', '\u{10876}',
+ Script::Palmyrene), ('\u{10877}', '\u{10878}', Script::Palmyrene), ('\u{10879}',
+ '\u{1087f}', Script::Palmyrene), ('\u{10880}', '\u{1089e}', Script::Nabataean),
+ ('\u{108a7}', '\u{108af}', Script::Nabataean), ('\u{108e0}', '\u{108f2}', Script::Hatran),
+ ('\u{108f4}', '\u{108f5}', Script::Hatran), ('\u{108fb}', '\u{108ff}', Script::Hatran),
+ ('\u{10900}', '\u{10915}', Script::Phoenician), ('\u{10916}', '\u{1091b}',
+ Script::Phoenician), ('\u{1091f}', '\u{1091f}', Script::Phoenician), ('\u{10920}',
+ '\u{10939}', Script::Lydian), ('\u{1093f}', '\u{1093f}', Script::Lydian), ('\u{10980}',
+ '\u{1099f}', Script::Meroitic_Hieroglyphs), ('\u{109a0}', '\u{109b7}',
+ Script::Meroitic_Cursive), ('\u{109bc}', '\u{109bd}', Script::Meroitic_Cursive),
+ ('\u{109be}', '\u{109bf}', Script::Meroitic_Cursive), ('\u{109c0}', '\u{109cf}',
+ Script::Meroitic_Cursive), ('\u{109d2}', '\u{109ff}', Script::Meroitic_Cursive),
+ ('\u{10a00}', '\u{10a00}', Script::Kharoshthi), ('\u{10a01}', '\u{10a03}',
+ Script::Kharoshthi), ('\u{10a05}', '\u{10a06}', Script::Kharoshthi), ('\u{10a0c}',
+ '\u{10a0f}', Script::Kharoshthi), ('\u{10a10}', '\u{10a13}', Script::Kharoshthi),
+ ('\u{10a15}', '\u{10a17}', Script::Kharoshthi), ('\u{10a19}', '\u{10a35}',
+ Script::Kharoshthi), ('\u{10a38}', '\u{10a3a}', Script::Kharoshthi), ('\u{10a3f}',
+ '\u{10a3f}', Script::Kharoshthi), ('\u{10a40}', '\u{10a48}', Script::Kharoshthi),
+ ('\u{10a50}', '\u{10a58}', Script::Kharoshthi), ('\u{10a60}', '\u{10a7c}',
+ Script::Old_South_Arabian), ('\u{10a7d}', '\u{10a7e}', Script::Old_South_Arabian),
+ ('\u{10a7f}', '\u{10a7f}', Script::Old_South_Arabian), ('\u{10a80}', '\u{10a9c}',
+ Script::Old_North_Arabian), ('\u{10a9d}', '\u{10a9f}', Script::Old_North_Arabian),
+ ('\u{10ac0}', '\u{10ac7}', Script::Manichaean), ('\u{10ac8}', '\u{10ac8}',
+ Script::Manichaean), ('\u{10ac9}', '\u{10ae4}', Script::Manichaean), ('\u{10ae5}',
+ '\u{10ae6}', Script::Manichaean), ('\u{10aeb}', '\u{10aef}', Script::Manichaean),
+ ('\u{10af0}', '\u{10af6}', Script::Manichaean), ('\u{10b00}', '\u{10b35}',
+ Script::Avestan), ('\u{10b39}', '\u{10b3f}', Script::Avestan), ('\u{10b40}', '\u{10b55}',
+ Script::Inscriptional_Parthian), ('\u{10b58}', '\u{10b5f}',
+ Script::Inscriptional_Parthian), ('\u{10b60}', '\u{10b72}',
Script::Inscriptional_Pahlavi), ('\u{10b78}', '\u{10b7f}', Script::Inscriptional_Pahlavi),
('\u{10b80}', '\u{10b91}', Script::Psalter_Pahlavi), ('\u{10b99}', '\u{10b9c}',
Script::Psalter_Pahlavi), ('\u{10ba9}', '\u{10baf}', Script::Psalter_Pahlavi),
@@ -2692,166 +2792,186 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
('\u{10d24}', '\u{10d27}', Script::Hanifi_Rohingya), ('\u{10d30}', '\u{10d39}',
Script::Hanifi_Rohingya), ('\u{10e60}', '\u{10e7e}', Script::Arabic), ('\u{10e80}',
'\u{10ea9}', Script::Yezidi), ('\u{10eab}', '\u{10eac}', Script::Yezidi), ('\u{10ead}',
- '\u{10ead}', Script::Yezidi), ('\u{10eb0}', '\u{10eb1}', Script::Yezidi), ('\u{10f00}',
- '\u{10f1c}', Script::Old_Sogdian), ('\u{10f1d}', '\u{10f26}', Script::Old_Sogdian),
- ('\u{10f27}', '\u{10f27}', Script::Old_Sogdian), ('\u{10f30}', '\u{10f45}',
- Script::Sogdian), ('\u{10f46}', '\u{10f50}', Script::Sogdian), ('\u{10f51}', '\u{10f54}',
- Script::Sogdian), ('\u{10f55}', '\u{10f59}', Script::Sogdian), ('\u{10fb0}', '\u{10fc4}',
- Script::Chorasmian), ('\u{10fc5}', '\u{10fcb}', Script::Chorasmian), ('\u{10fe0}',
- '\u{10ff6}', Script::Elymaic), ('\u{11000}', '\u{11000}', Script::Brahmi), ('\u{11001}',
- '\u{11001}', Script::Brahmi), ('\u{11002}', '\u{11002}', Script::Brahmi), ('\u{11003}',
- '\u{11037}', Script::Brahmi), ('\u{11038}', '\u{11046}', Script::Brahmi), ('\u{11047}',
- '\u{1104d}', Script::Brahmi), ('\u{11052}', '\u{11065}', Script::Brahmi), ('\u{11066}',
- '\u{1106f}', Script::Brahmi), ('\u{1107f}', '\u{1107f}', Script::Brahmi), ('\u{11080}',
- '\u{11081}', Script::Kaithi), ('\u{11082}', '\u{11082}', Script::Kaithi), ('\u{11083}',
- '\u{110af}', Script::Kaithi), ('\u{110b0}', '\u{110b2}', Script::Kaithi), ('\u{110b3}',
- '\u{110b6}', Script::Kaithi), ('\u{110b7}', '\u{110b8}', Script::Kaithi), ('\u{110b9}',
- '\u{110ba}', Script::Kaithi), ('\u{110bb}', '\u{110bc}', Script::Kaithi), ('\u{110bd}',
- '\u{110bd}', Script::Kaithi), ('\u{110be}', '\u{110c1}', Script::Kaithi), ('\u{110cd}',
- '\u{110cd}', Script::Kaithi), ('\u{110d0}', '\u{110e8}', Script::Sora_Sompeng),
- ('\u{110f0}', '\u{110f9}', Script::Sora_Sompeng), ('\u{11100}', '\u{11102}',
- Script::Chakma), ('\u{11103}', '\u{11126}', Script::Chakma), ('\u{11127}', '\u{1112b}',
- Script::Chakma), ('\u{1112c}', '\u{1112c}', Script::Chakma), ('\u{1112d}', '\u{11134}',
- Script::Chakma), ('\u{11136}', '\u{1113f}', Script::Chakma), ('\u{11140}', '\u{11143}',
- Script::Chakma), ('\u{11144}', '\u{11144}', Script::Chakma), ('\u{11145}', '\u{11146}',
- Script::Chakma), ('\u{11147}', '\u{11147}', Script::Chakma), ('\u{11150}', '\u{11172}',
- Script::Mahajani), ('\u{11173}', '\u{11173}', Script::Mahajani), ('\u{11174}',
- '\u{11175}', Script::Mahajani), ('\u{11176}', '\u{11176}', Script::Mahajani),
- ('\u{11180}', '\u{11181}', Script::Sharada), ('\u{11182}', '\u{11182}', Script::Sharada),
- ('\u{11183}', '\u{111b2}', Script::Sharada), ('\u{111b3}', '\u{111b5}', Script::Sharada),
- ('\u{111b6}', '\u{111be}', Script::Sharada), ('\u{111bf}', '\u{111c0}', Script::Sharada),
- ('\u{111c1}', '\u{111c4}', Script::Sharada), ('\u{111c5}', '\u{111c8}', Script::Sharada),
- ('\u{111c9}', '\u{111cc}', Script::Sharada), ('\u{111cd}', '\u{111cd}', Script::Sharada),
- ('\u{111ce}', '\u{111ce}', Script::Sharada), ('\u{111cf}', '\u{111cf}', Script::Sharada),
- ('\u{111d0}', '\u{111d9}', Script::Sharada), ('\u{111da}', '\u{111da}', Script::Sharada),
- ('\u{111db}', '\u{111db}', Script::Sharada), ('\u{111dc}', '\u{111dc}', Script::Sharada),
- ('\u{111dd}', '\u{111df}', Script::Sharada), ('\u{111e1}', '\u{111f4}', Script::Sinhala),
- ('\u{11200}', '\u{11211}', Script::Khojki), ('\u{11213}', '\u{1122b}', Script::Khojki),
- ('\u{1122c}', '\u{1122e}', Script::Khojki), ('\u{1122f}', '\u{11231}', Script::Khojki),
- ('\u{11232}', '\u{11233}', Script::Khojki), ('\u{11234}', '\u{11234}', Script::Khojki),
- ('\u{11235}', '\u{11235}', Script::Khojki), ('\u{11236}', '\u{11237}', Script::Khojki),
- ('\u{11238}', '\u{1123d}', Script::Khojki), ('\u{1123e}', '\u{1123e}', Script::Khojki),
- ('\u{11280}', '\u{11286}', Script::Multani), ('\u{11288}', '\u{11288}', Script::Multani),
- ('\u{1128a}', '\u{1128d}', Script::Multani), ('\u{1128f}', '\u{1129d}', Script::Multani),
- ('\u{1129f}', '\u{112a8}', Script::Multani), ('\u{112a9}', '\u{112a9}', Script::Multani),
- ('\u{112b0}', '\u{112de}', Script::Khudawadi), ('\u{112df}', '\u{112df}',
- Script::Khudawadi), ('\u{112e0}', '\u{112e2}', Script::Khudawadi), ('\u{112e3}',
- '\u{112ea}', Script::Khudawadi), ('\u{112f0}', '\u{112f9}', Script::Khudawadi),
- ('\u{11300}', '\u{11301}', Script::Grantha), ('\u{11302}', '\u{11303}', Script::Grantha),
- ('\u{11305}', '\u{1130c}', Script::Grantha), ('\u{1130f}', '\u{11310}', Script::Grantha),
- ('\u{11313}', '\u{11328}', Script::Grantha), ('\u{1132a}', '\u{11330}', Script::Grantha),
- ('\u{11332}', '\u{11333}', Script::Grantha), ('\u{11335}', '\u{11339}', Script::Grantha),
- ('\u{1133b}', '\u{1133b}', Script::Inherited), ('\u{1133c}', '\u{1133c}',
- Script::Grantha), ('\u{1133d}', '\u{1133d}', Script::Grantha), ('\u{1133e}', '\u{1133f}',
- Script::Grantha), ('\u{11340}', '\u{11340}', Script::Grantha), ('\u{11341}', '\u{11344}',
- Script::Grantha), ('\u{11347}', '\u{11348}', Script::Grantha), ('\u{1134b}', '\u{1134d}',
- Script::Grantha), ('\u{11350}', '\u{11350}', Script::Grantha), ('\u{11357}', '\u{11357}',
- Script::Grantha), ('\u{1135d}', '\u{11361}', Script::Grantha), ('\u{11362}', '\u{11363}',
- Script::Grantha), ('\u{11366}', '\u{1136c}', Script::Grantha), ('\u{11370}', '\u{11374}',
- Script::Grantha), ('\u{11400}', '\u{11434}', Script::Newa), ('\u{11435}', '\u{11437}',
- Script::Newa), ('\u{11438}', '\u{1143f}', Script::Newa), ('\u{11440}', '\u{11441}',
- Script::Newa), ('\u{11442}', '\u{11444}', Script::Newa), ('\u{11445}', '\u{11445}',
- Script::Newa), ('\u{11446}', '\u{11446}', Script::Newa), ('\u{11447}', '\u{1144a}',
- Script::Newa), ('\u{1144b}', '\u{1144f}', Script::Newa), ('\u{11450}', '\u{11459}',
- Script::Newa), ('\u{1145a}', '\u{1145b}', Script::Newa), ('\u{1145d}', '\u{1145d}',
- Script::Newa), ('\u{1145e}', '\u{1145e}', Script::Newa), ('\u{1145f}', '\u{11461}',
- Script::Newa), ('\u{11480}', '\u{114af}', Script::Tirhuta), ('\u{114b0}', '\u{114b2}',
- Script::Tirhuta), ('\u{114b3}', '\u{114b8}', Script::Tirhuta), ('\u{114b9}', '\u{114b9}',
- Script::Tirhuta), ('\u{114ba}', '\u{114ba}', Script::Tirhuta), ('\u{114bb}', '\u{114be}',
- Script::Tirhuta), ('\u{114bf}', '\u{114c0}', Script::Tirhuta), ('\u{114c1}', '\u{114c1}',
- Script::Tirhuta), ('\u{114c2}', '\u{114c3}', Script::Tirhuta), ('\u{114c4}', '\u{114c5}',
- Script::Tirhuta), ('\u{114c6}', '\u{114c6}', Script::Tirhuta), ('\u{114c7}', '\u{114c7}',
- Script::Tirhuta), ('\u{114d0}', '\u{114d9}', Script::Tirhuta), ('\u{11580}', '\u{115ae}',
- Script::Siddham), ('\u{115af}', '\u{115b1}', Script::Siddham), ('\u{115b2}', '\u{115b5}',
- Script::Siddham), ('\u{115b8}', '\u{115bb}', Script::Siddham), ('\u{115bc}', '\u{115bd}',
- Script::Siddham), ('\u{115be}', '\u{115be}', Script::Siddham), ('\u{115bf}', '\u{115c0}',
- Script::Siddham), ('\u{115c1}', '\u{115d7}', Script::Siddham), ('\u{115d8}', '\u{115db}',
- Script::Siddham), ('\u{115dc}', '\u{115dd}', Script::Siddham), ('\u{11600}', '\u{1162f}',
- Script::Modi), ('\u{11630}', '\u{11632}', Script::Modi), ('\u{11633}', '\u{1163a}',
- Script::Modi), ('\u{1163b}', '\u{1163c}', Script::Modi), ('\u{1163d}', '\u{1163d}',
- Script::Modi), ('\u{1163e}', '\u{1163e}', Script::Modi), ('\u{1163f}', '\u{11640}',
- Script::Modi), ('\u{11641}', '\u{11643}', Script::Modi), ('\u{11644}', '\u{11644}',
- Script::Modi), ('\u{11650}', '\u{11659}', Script::Modi), ('\u{11660}', '\u{1166c}',
- Script::Mongolian), ('\u{11680}', '\u{116aa}', Script::Takri), ('\u{116ab}', '\u{116ab}',
- Script::Takri), ('\u{116ac}', '\u{116ac}', Script::Takri), ('\u{116ad}', '\u{116ad}',
- Script::Takri), ('\u{116ae}', '\u{116af}', Script::Takri), ('\u{116b0}', '\u{116b5}',
- Script::Takri), ('\u{116b6}', '\u{116b6}', Script::Takri), ('\u{116b7}', '\u{116b7}',
- Script::Takri), ('\u{116b8}', '\u{116b8}', Script::Takri), ('\u{116c0}', '\u{116c9}',
- Script::Takri), ('\u{11700}', '\u{1171a}', Script::Ahom), ('\u{1171d}', '\u{1171f}',
- Script::Ahom), ('\u{11720}', '\u{11721}', Script::Ahom), ('\u{11722}', '\u{11725}',
- Script::Ahom), ('\u{11726}', '\u{11726}', Script::Ahom), ('\u{11727}', '\u{1172b}',
- Script::Ahom), ('\u{11730}', '\u{11739}', Script::Ahom), ('\u{1173a}', '\u{1173b}',
- Script::Ahom), ('\u{1173c}', '\u{1173e}', Script::Ahom), ('\u{1173f}', '\u{1173f}',
- Script::Ahom), ('\u{11800}', '\u{1182b}', Script::Dogra), ('\u{1182c}', '\u{1182e}',
- Script::Dogra), ('\u{1182f}', '\u{11837}', Script::Dogra), ('\u{11838}', '\u{11838}',
- Script::Dogra), ('\u{11839}', '\u{1183a}', Script::Dogra), ('\u{1183b}', '\u{1183b}',
- Script::Dogra), ('\u{118a0}', '\u{118df}', Script::Warang_Citi), ('\u{118e0}',
- '\u{118e9}', Script::Warang_Citi), ('\u{118ea}', '\u{118f2}', Script::Warang_Citi),
- ('\u{118ff}', '\u{118ff}', Script::Warang_Citi), ('\u{11900}', '\u{11906}',
- Script::Dives_Akuru), ('\u{11909}', '\u{11909}', Script::Dives_Akuru), ('\u{1190c}',
- '\u{11913}', Script::Dives_Akuru), ('\u{11915}', '\u{11916}', Script::Dives_Akuru),
- ('\u{11918}', '\u{1192f}', Script::Dives_Akuru), ('\u{11930}', '\u{11935}',
- Script::Dives_Akuru), ('\u{11937}', '\u{11938}', Script::Dives_Akuru), ('\u{1193b}',
- '\u{1193c}', Script::Dives_Akuru), ('\u{1193d}', '\u{1193d}', Script::Dives_Akuru),
- ('\u{1193e}', '\u{1193e}', Script::Dives_Akuru), ('\u{1193f}', '\u{1193f}',
- Script::Dives_Akuru), ('\u{11940}', '\u{11940}', Script::Dives_Akuru), ('\u{11941}',
- '\u{11941}', Script::Dives_Akuru), ('\u{11942}', '\u{11942}', Script::Dives_Akuru),
- ('\u{11943}', '\u{11943}', Script::Dives_Akuru), ('\u{11944}', '\u{11946}',
- Script::Dives_Akuru), ('\u{11950}', '\u{11959}', Script::Dives_Akuru), ('\u{119a0}',
- '\u{119a7}', Script::Nandinagari), ('\u{119aa}', '\u{119d0}', Script::Nandinagari),
- ('\u{119d1}', '\u{119d3}', Script::Nandinagari), ('\u{119d4}', '\u{119d7}',
- Script::Nandinagari), ('\u{119da}', '\u{119db}', Script::Nandinagari), ('\u{119dc}',
- '\u{119df}', Script::Nandinagari), ('\u{119e0}', '\u{119e0}', Script::Nandinagari),
- ('\u{119e1}', '\u{119e1}', Script::Nandinagari), ('\u{119e2}', '\u{119e2}',
- Script::Nandinagari), ('\u{119e3}', '\u{119e3}', Script::Nandinagari), ('\u{119e4}',
- '\u{119e4}', Script::Nandinagari), ('\u{11a00}', '\u{11a00}', Script::Zanabazar_Square),
- ('\u{11a01}', '\u{11a0a}', Script::Zanabazar_Square), ('\u{11a0b}', '\u{11a32}',
- Script::Zanabazar_Square), ('\u{11a33}', '\u{11a38}', Script::Zanabazar_Square),
- ('\u{11a39}', '\u{11a39}', Script::Zanabazar_Square), ('\u{11a3a}', '\u{11a3a}',
- Script::Zanabazar_Square), ('\u{11a3b}', '\u{11a3e}', Script::Zanabazar_Square),
- ('\u{11a3f}', '\u{11a46}', Script::Zanabazar_Square), ('\u{11a47}', '\u{11a47}',
- Script::Zanabazar_Square), ('\u{11a50}', '\u{11a50}', Script::Soyombo), ('\u{11a51}',
- '\u{11a56}', Script::Soyombo), ('\u{11a57}', '\u{11a58}', Script::Soyombo), ('\u{11a59}',
- '\u{11a5b}', Script::Soyombo), ('\u{11a5c}', '\u{11a89}', Script::Soyombo), ('\u{11a8a}',
- '\u{11a96}', Script::Soyombo), ('\u{11a97}', '\u{11a97}', Script::Soyombo), ('\u{11a98}',
- '\u{11a99}', Script::Soyombo), ('\u{11a9a}', '\u{11a9c}', Script::Soyombo), ('\u{11a9d}',
- '\u{11a9d}', Script::Soyombo), ('\u{11a9e}', '\u{11aa2}', Script::Soyombo), ('\u{11ac0}',
- '\u{11af8}', Script::Pau_Cin_Hau), ('\u{11c00}', '\u{11c08}', Script::Bhaiksuki),
- ('\u{11c0a}', '\u{11c2e}', Script::Bhaiksuki), ('\u{11c2f}', '\u{11c2f}',
- Script::Bhaiksuki), ('\u{11c30}', '\u{11c36}', Script::Bhaiksuki), ('\u{11c38}',
- '\u{11c3d}', Script::Bhaiksuki), ('\u{11c3e}', '\u{11c3e}', Script::Bhaiksuki),
- ('\u{11c3f}', '\u{11c3f}', Script::Bhaiksuki), ('\u{11c40}', '\u{11c40}',
- Script::Bhaiksuki), ('\u{11c41}', '\u{11c45}', Script::Bhaiksuki), ('\u{11c50}',
- '\u{11c59}', Script::Bhaiksuki), ('\u{11c5a}', '\u{11c6c}', Script::Bhaiksuki),
- ('\u{11c70}', '\u{11c71}', Script::Marchen), ('\u{11c72}', '\u{11c8f}', Script::Marchen),
- ('\u{11c92}', '\u{11ca7}', Script::Marchen), ('\u{11ca9}', '\u{11ca9}', Script::Marchen),
- ('\u{11caa}', '\u{11cb0}', Script::Marchen), ('\u{11cb1}', '\u{11cb1}', Script::Marchen),
- ('\u{11cb2}', '\u{11cb3}', Script::Marchen), ('\u{11cb4}', '\u{11cb4}', Script::Marchen),
- ('\u{11cb5}', '\u{11cb6}', Script::Marchen), ('\u{11d00}', '\u{11d06}',
- Script::Masaram_Gondi), ('\u{11d08}', '\u{11d09}', Script::Masaram_Gondi), ('\u{11d0b}',
- '\u{11d30}', Script::Masaram_Gondi), ('\u{11d31}', '\u{11d36}', Script::Masaram_Gondi),
- ('\u{11d3a}', '\u{11d3a}', Script::Masaram_Gondi), ('\u{11d3c}', '\u{11d3d}',
- Script::Masaram_Gondi), ('\u{11d3f}', '\u{11d45}', Script::Masaram_Gondi), ('\u{11d46}',
- '\u{11d46}', Script::Masaram_Gondi), ('\u{11d47}', '\u{11d47}', Script::Masaram_Gondi),
- ('\u{11d50}', '\u{11d59}', Script::Masaram_Gondi), ('\u{11d60}', '\u{11d65}',
- Script::Gunjala_Gondi), ('\u{11d67}', '\u{11d68}', Script::Gunjala_Gondi), ('\u{11d6a}',
- '\u{11d89}', Script::Gunjala_Gondi), ('\u{11d8a}', '\u{11d8e}', Script::Gunjala_Gondi),
- ('\u{11d90}', '\u{11d91}', Script::Gunjala_Gondi), ('\u{11d93}', '\u{11d94}',
- Script::Gunjala_Gondi), ('\u{11d95}', '\u{11d95}', Script::Gunjala_Gondi), ('\u{11d96}',
- '\u{11d96}', Script::Gunjala_Gondi), ('\u{11d97}', '\u{11d97}', Script::Gunjala_Gondi),
- ('\u{11d98}', '\u{11d98}', Script::Gunjala_Gondi), ('\u{11da0}', '\u{11da9}',
- Script::Gunjala_Gondi), ('\u{11ee0}', '\u{11ef2}', Script::Makasar), ('\u{11ef3}',
- '\u{11ef4}', Script::Makasar), ('\u{11ef5}', '\u{11ef6}', Script::Makasar), ('\u{11ef7}',
- '\u{11ef8}', Script::Makasar), ('\u{11fb0}', '\u{11fb0}', Script::Lisu), ('\u{11fc0}',
- '\u{11fd4}', Script::Tamil), ('\u{11fd5}', '\u{11fdc}', Script::Tamil), ('\u{11fdd}',
- '\u{11fe0}', Script::Tamil), ('\u{11fe1}', '\u{11ff1}', Script::Tamil), ('\u{11fff}',
- '\u{11fff}', Script::Tamil), ('\u{12000}', '\u{12399}', Script::Cuneiform), ('\u{12400}',
- '\u{1246e}', Script::Cuneiform), ('\u{12470}', '\u{12474}', Script::Cuneiform),
- ('\u{12480}', '\u{12543}', Script::Cuneiform), ('\u{13000}', '\u{1342e}',
- Script::Egyptian_Hieroglyphs), ('\u{13430}', '\u{13438}', Script::Egyptian_Hieroglyphs),
+ '\u{10ead}', Script::Yezidi), ('\u{10eb0}', '\u{10eb1}', Script::Yezidi), ('\u{10efd}',
+ '\u{10eff}', Script::Arabic), ('\u{10f00}', '\u{10f1c}', Script::Old_Sogdian),
+ ('\u{10f1d}', '\u{10f26}', Script::Old_Sogdian), ('\u{10f27}', '\u{10f27}',
+ Script::Old_Sogdian), ('\u{10f30}', '\u{10f45}', Script::Sogdian), ('\u{10f46}',
+ '\u{10f50}', Script::Sogdian), ('\u{10f51}', '\u{10f54}', Script::Sogdian), ('\u{10f55}',
+ '\u{10f59}', Script::Sogdian), ('\u{10f70}', '\u{10f81}', Script::Old_Uyghur),
+ ('\u{10f82}', '\u{10f85}', Script::Old_Uyghur), ('\u{10f86}', '\u{10f89}',
+ Script::Old_Uyghur), ('\u{10fb0}', '\u{10fc4}', Script::Chorasmian), ('\u{10fc5}',
+ '\u{10fcb}', Script::Chorasmian), ('\u{10fe0}', '\u{10ff6}', Script::Elymaic),
+ ('\u{11000}', '\u{11000}', Script::Brahmi), ('\u{11001}', '\u{11001}', Script::Brahmi),
+ ('\u{11002}', '\u{11002}', Script::Brahmi), ('\u{11003}', '\u{11037}', Script::Brahmi),
+ ('\u{11038}', '\u{11046}', Script::Brahmi), ('\u{11047}', '\u{1104d}', Script::Brahmi),
+ ('\u{11052}', '\u{11065}', Script::Brahmi), ('\u{11066}', '\u{1106f}', Script::Brahmi),
+ ('\u{11070}', '\u{11070}', Script::Brahmi), ('\u{11071}', '\u{11072}', Script::Brahmi),
+ ('\u{11073}', '\u{11074}', Script::Brahmi), ('\u{11075}', '\u{11075}', Script::Brahmi),
+ ('\u{1107f}', '\u{1107f}', Script::Brahmi), ('\u{11080}', '\u{11081}', Script::Kaithi),
+ ('\u{11082}', '\u{11082}', Script::Kaithi), ('\u{11083}', '\u{110af}', Script::Kaithi),
+ ('\u{110b0}', '\u{110b2}', Script::Kaithi), ('\u{110b3}', '\u{110b6}', Script::Kaithi),
+ ('\u{110b7}', '\u{110b8}', Script::Kaithi), ('\u{110b9}', '\u{110ba}', Script::Kaithi),
+ ('\u{110bb}', '\u{110bc}', Script::Kaithi), ('\u{110bd}', '\u{110bd}', Script::Kaithi),
+ ('\u{110be}', '\u{110c1}', Script::Kaithi), ('\u{110c2}', '\u{110c2}', Script::Kaithi),
+ ('\u{110cd}', '\u{110cd}', Script::Kaithi), ('\u{110d0}', '\u{110e8}',
+ Script::Sora_Sompeng), ('\u{110f0}', '\u{110f9}', Script::Sora_Sompeng), ('\u{11100}',
+ '\u{11102}', Script::Chakma), ('\u{11103}', '\u{11126}', Script::Chakma), ('\u{11127}',
+ '\u{1112b}', Script::Chakma), ('\u{1112c}', '\u{1112c}', Script::Chakma), ('\u{1112d}',
+ '\u{11134}', Script::Chakma), ('\u{11136}', '\u{1113f}', Script::Chakma), ('\u{11140}',
+ '\u{11143}', Script::Chakma), ('\u{11144}', '\u{11144}', Script::Chakma), ('\u{11145}',
+ '\u{11146}', Script::Chakma), ('\u{11147}', '\u{11147}', Script::Chakma), ('\u{11150}',
+ '\u{11172}', Script::Mahajani), ('\u{11173}', '\u{11173}', Script::Mahajani),
+ ('\u{11174}', '\u{11175}', Script::Mahajani), ('\u{11176}', '\u{11176}',
+ Script::Mahajani), ('\u{11180}', '\u{11181}', Script::Sharada), ('\u{11182}', '\u{11182}',
+ Script::Sharada), ('\u{11183}', '\u{111b2}', Script::Sharada), ('\u{111b3}', '\u{111b5}',
+ Script::Sharada), ('\u{111b6}', '\u{111be}', Script::Sharada), ('\u{111bf}', '\u{111c0}',
+ Script::Sharada), ('\u{111c1}', '\u{111c4}', Script::Sharada), ('\u{111c5}', '\u{111c8}',
+ Script::Sharada), ('\u{111c9}', '\u{111cc}', Script::Sharada), ('\u{111cd}', '\u{111cd}',
+ Script::Sharada), ('\u{111ce}', '\u{111ce}', Script::Sharada), ('\u{111cf}', '\u{111cf}',
+ Script::Sharada), ('\u{111d0}', '\u{111d9}', Script::Sharada), ('\u{111da}', '\u{111da}',
+ Script::Sharada), ('\u{111db}', '\u{111db}', Script::Sharada), ('\u{111dc}', '\u{111dc}',
+ Script::Sharada), ('\u{111dd}', '\u{111df}', Script::Sharada), ('\u{111e1}', '\u{111f4}',
+ Script::Sinhala), ('\u{11200}', '\u{11211}', Script::Khojki), ('\u{11213}', '\u{1122b}',
+ Script::Khojki), ('\u{1122c}', '\u{1122e}', Script::Khojki), ('\u{1122f}', '\u{11231}',
+ Script::Khojki), ('\u{11232}', '\u{11233}', Script::Khojki), ('\u{11234}', '\u{11234}',
+ Script::Khojki), ('\u{11235}', '\u{11235}', Script::Khojki), ('\u{11236}', '\u{11237}',
+ Script::Khojki), ('\u{11238}', '\u{1123d}', Script::Khojki), ('\u{1123e}', '\u{1123e}',
+ Script::Khojki), ('\u{1123f}', '\u{11240}', Script::Khojki), ('\u{11241}', '\u{11241}',
+ Script::Khojki), ('\u{11280}', '\u{11286}', Script::Multani), ('\u{11288}', '\u{11288}',
+ Script::Multani), ('\u{1128a}', '\u{1128d}', Script::Multani), ('\u{1128f}', '\u{1129d}',
+ Script::Multani), ('\u{1129f}', '\u{112a8}', Script::Multani), ('\u{112a9}', '\u{112a9}',
+ Script::Multani), ('\u{112b0}', '\u{112de}', Script::Khudawadi), ('\u{112df}',
+ '\u{112df}', Script::Khudawadi), ('\u{112e0}', '\u{112e2}', Script::Khudawadi),
+ ('\u{112e3}', '\u{112ea}', Script::Khudawadi), ('\u{112f0}', '\u{112f9}',
+ Script::Khudawadi), ('\u{11300}', '\u{11301}', Script::Grantha), ('\u{11302}',
+ '\u{11303}', Script::Grantha), ('\u{11305}', '\u{1130c}', Script::Grantha), ('\u{1130f}',
+ '\u{11310}', Script::Grantha), ('\u{11313}', '\u{11328}', Script::Grantha), ('\u{1132a}',
+ '\u{11330}', Script::Grantha), ('\u{11332}', '\u{11333}', Script::Grantha), ('\u{11335}',
+ '\u{11339}', Script::Grantha), ('\u{1133b}', '\u{1133b}', Script::Inherited),
+ ('\u{1133c}', '\u{1133c}', Script::Grantha), ('\u{1133d}', '\u{1133d}', Script::Grantha),
+ ('\u{1133e}', '\u{1133f}', Script::Grantha), ('\u{11340}', '\u{11340}', Script::Grantha),
+ ('\u{11341}', '\u{11344}', Script::Grantha), ('\u{11347}', '\u{11348}', Script::Grantha),
+ ('\u{1134b}', '\u{1134d}', Script::Grantha), ('\u{11350}', '\u{11350}', Script::Grantha),
+ ('\u{11357}', '\u{11357}', Script::Grantha), ('\u{1135d}', '\u{11361}', Script::Grantha),
+ ('\u{11362}', '\u{11363}', Script::Grantha), ('\u{11366}', '\u{1136c}', Script::Grantha),
+ ('\u{11370}', '\u{11374}', Script::Grantha), ('\u{11400}', '\u{11434}', Script::Newa),
+ ('\u{11435}', '\u{11437}', Script::Newa), ('\u{11438}', '\u{1143f}', Script::Newa),
+ ('\u{11440}', '\u{11441}', Script::Newa), ('\u{11442}', '\u{11444}', Script::Newa),
+ ('\u{11445}', '\u{11445}', Script::Newa), ('\u{11446}', '\u{11446}', Script::Newa),
+ ('\u{11447}', '\u{1144a}', Script::Newa), ('\u{1144b}', '\u{1144f}', Script::Newa),
+ ('\u{11450}', '\u{11459}', Script::Newa), ('\u{1145a}', '\u{1145b}', Script::Newa),
+ ('\u{1145d}', '\u{1145d}', Script::Newa), ('\u{1145e}', '\u{1145e}', Script::Newa),
+ ('\u{1145f}', '\u{11461}', Script::Newa), ('\u{11480}', '\u{114af}', Script::Tirhuta),
+ ('\u{114b0}', '\u{114b2}', Script::Tirhuta), ('\u{114b3}', '\u{114b8}', Script::Tirhuta),
+ ('\u{114b9}', '\u{114b9}', Script::Tirhuta), ('\u{114ba}', '\u{114ba}', Script::Tirhuta),
+ ('\u{114bb}', '\u{114be}', Script::Tirhuta), ('\u{114bf}', '\u{114c0}', Script::Tirhuta),
+ ('\u{114c1}', '\u{114c1}', Script::Tirhuta), ('\u{114c2}', '\u{114c3}', Script::Tirhuta),
+ ('\u{114c4}', '\u{114c5}', Script::Tirhuta), ('\u{114c6}', '\u{114c6}', Script::Tirhuta),
+ ('\u{114c7}', '\u{114c7}', Script::Tirhuta), ('\u{114d0}', '\u{114d9}', Script::Tirhuta),
+ ('\u{11580}', '\u{115ae}', Script::Siddham), ('\u{115af}', '\u{115b1}', Script::Siddham),
+ ('\u{115b2}', '\u{115b5}', Script::Siddham), ('\u{115b8}', '\u{115bb}', Script::Siddham),
+ ('\u{115bc}', '\u{115bd}', Script::Siddham), ('\u{115be}', '\u{115be}', Script::Siddham),
+ ('\u{115bf}', '\u{115c0}', Script::Siddham), ('\u{115c1}', '\u{115d7}', Script::Siddham),
+ ('\u{115d8}', '\u{115db}', Script::Siddham), ('\u{115dc}', '\u{115dd}', Script::Siddham),
+ ('\u{11600}', '\u{1162f}', Script::Modi), ('\u{11630}', '\u{11632}', Script::Modi),
+ ('\u{11633}', '\u{1163a}', Script::Modi), ('\u{1163b}', '\u{1163c}', Script::Modi),
+ ('\u{1163d}', '\u{1163d}', Script::Modi), ('\u{1163e}', '\u{1163e}', Script::Modi),
+ ('\u{1163f}', '\u{11640}', Script::Modi), ('\u{11641}', '\u{11643}', Script::Modi),
+ ('\u{11644}', '\u{11644}', Script::Modi), ('\u{11650}', '\u{11659}', Script::Modi),
+ ('\u{11660}', '\u{1166c}', Script::Mongolian), ('\u{11680}', '\u{116aa}', Script::Takri),
+ ('\u{116ab}', '\u{116ab}', Script::Takri), ('\u{116ac}', '\u{116ac}', Script::Takri),
+ ('\u{116ad}', '\u{116ad}', Script::Takri), ('\u{116ae}', '\u{116af}', Script::Takri),
+ ('\u{116b0}', '\u{116b5}', Script::Takri), ('\u{116b6}', '\u{116b6}', Script::Takri),
+ ('\u{116b7}', '\u{116b7}', Script::Takri), ('\u{116b8}', '\u{116b8}', Script::Takri),
+ ('\u{116b9}', '\u{116b9}', Script::Takri), ('\u{116c0}', '\u{116c9}', Script::Takri),
+ ('\u{11700}', '\u{1171a}', Script::Ahom), ('\u{1171d}', '\u{1171f}', Script::Ahom),
+ ('\u{11720}', '\u{11721}', Script::Ahom), ('\u{11722}', '\u{11725}', Script::Ahom),
+ ('\u{11726}', '\u{11726}', Script::Ahom), ('\u{11727}', '\u{1172b}', Script::Ahom),
+ ('\u{11730}', '\u{11739}', Script::Ahom), ('\u{1173a}', '\u{1173b}', Script::Ahom),
+ ('\u{1173c}', '\u{1173e}', Script::Ahom), ('\u{1173f}', '\u{1173f}', Script::Ahom),
+ ('\u{11740}', '\u{11746}', Script::Ahom), ('\u{11800}', '\u{1182b}', Script::Dogra),
+ ('\u{1182c}', '\u{1182e}', Script::Dogra), ('\u{1182f}', '\u{11837}', Script::Dogra),
+ ('\u{11838}', '\u{11838}', Script::Dogra), ('\u{11839}', '\u{1183a}', Script::Dogra),
+ ('\u{1183b}', '\u{1183b}', Script::Dogra), ('\u{118a0}', '\u{118df}',
+ Script::Warang_Citi), ('\u{118e0}', '\u{118e9}', Script::Warang_Citi), ('\u{118ea}',
+ '\u{118f2}', Script::Warang_Citi), ('\u{118ff}', '\u{118ff}', Script::Warang_Citi),
+ ('\u{11900}', '\u{11906}', Script::Dives_Akuru), ('\u{11909}', '\u{11909}',
+ Script::Dives_Akuru), ('\u{1190c}', '\u{11913}', Script::Dives_Akuru), ('\u{11915}',
+ '\u{11916}', Script::Dives_Akuru), ('\u{11918}', '\u{1192f}', Script::Dives_Akuru),
+ ('\u{11930}', '\u{11935}', Script::Dives_Akuru), ('\u{11937}', '\u{11938}',
+ Script::Dives_Akuru), ('\u{1193b}', '\u{1193c}', Script::Dives_Akuru), ('\u{1193d}',
+ '\u{1193d}', Script::Dives_Akuru), ('\u{1193e}', '\u{1193e}', Script::Dives_Akuru),
+ ('\u{1193f}', '\u{1193f}', Script::Dives_Akuru), ('\u{11940}', '\u{11940}',
+ Script::Dives_Akuru), ('\u{11941}', '\u{11941}', Script::Dives_Akuru), ('\u{11942}',
+ '\u{11942}', Script::Dives_Akuru), ('\u{11943}', '\u{11943}', Script::Dives_Akuru),
+ ('\u{11944}', '\u{11946}', Script::Dives_Akuru), ('\u{11950}', '\u{11959}',
+ Script::Dives_Akuru), ('\u{119a0}', '\u{119a7}', Script::Nandinagari), ('\u{119aa}',
+ '\u{119d0}', Script::Nandinagari), ('\u{119d1}', '\u{119d3}', Script::Nandinagari),
+ ('\u{119d4}', '\u{119d7}', Script::Nandinagari), ('\u{119da}', '\u{119db}',
+ Script::Nandinagari), ('\u{119dc}', '\u{119df}', Script::Nandinagari), ('\u{119e0}',
+ '\u{119e0}', Script::Nandinagari), ('\u{119e1}', '\u{119e1}', Script::Nandinagari),
+ ('\u{119e2}', '\u{119e2}', Script::Nandinagari), ('\u{119e3}', '\u{119e3}',
+ Script::Nandinagari), ('\u{119e4}', '\u{119e4}', Script::Nandinagari), ('\u{11a00}',
+ '\u{11a00}', Script::Zanabazar_Square), ('\u{11a01}', '\u{11a0a}',
+ Script::Zanabazar_Square), ('\u{11a0b}', '\u{11a32}', Script::Zanabazar_Square),
+ ('\u{11a33}', '\u{11a38}', Script::Zanabazar_Square), ('\u{11a39}', '\u{11a39}',
+ Script::Zanabazar_Square), ('\u{11a3a}', '\u{11a3a}', Script::Zanabazar_Square),
+ ('\u{11a3b}', '\u{11a3e}', Script::Zanabazar_Square), ('\u{11a3f}', '\u{11a46}',
+ Script::Zanabazar_Square), ('\u{11a47}', '\u{11a47}', Script::Zanabazar_Square),
+ ('\u{11a50}', '\u{11a50}', Script::Soyombo), ('\u{11a51}', '\u{11a56}', Script::Soyombo),
+ ('\u{11a57}', '\u{11a58}', Script::Soyombo), ('\u{11a59}', '\u{11a5b}', Script::Soyombo),
+ ('\u{11a5c}', '\u{11a89}', Script::Soyombo), ('\u{11a8a}', '\u{11a96}', Script::Soyombo),
+ ('\u{11a97}', '\u{11a97}', Script::Soyombo), ('\u{11a98}', '\u{11a99}', Script::Soyombo),
+ ('\u{11a9a}', '\u{11a9c}', Script::Soyombo), ('\u{11a9d}', '\u{11a9d}', Script::Soyombo),
+ ('\u{11a9e}', '\u{11aa2}', Script::Soyombo), ('\u{11ab0}', '\u{11abf}',
+ Script::Canadian_Aboriginal), ('\u{11ac0}', '\u{11af8}', Script::Pau_Cin_Hau),
+ ('\u{11b00}', '\u{11b09}', Script::Devanagari), ('\u{11c00}', '\u{11c08}',
+ Script::Bhaiksuki), ('\u{11c0a}', '\u{11c2e}', Script::Bhaiksuki), ('\u{11c2f}',
+ '\u{11c2f}', Script::Bhaiksuki), ('\u{11c30}', '\u{11c36}', Script::Bhaiksuki),
+ ('\u{11c38}', '\u{11c3d}', Script::Bhaiksuki), ('\u{11c3e}', '\u{11c3e}',
+ Script::Bhaiksuki), ('\u{11c3f}', '\u{11c3f}', Script::Bhaiksuki), ('\u{11c40}',
+ '\u{11c40}', Script::Bhaiksuki), ('\u{11c41}', '\u{11c45}', Script::Bhaiksuki),
+ ('\u{11c50}', '\u{11c59}', Script::Bhaiksuki), ('\u{11c5a}', '\u{11c6c}',
+ Script::Bhaiksuki), ('\u{11c70}', '\u{11c71}', Script::Marchen), ('\u{11c72}',
+ '\u{11c8f}', Script::Marchen), ('\u{11c92}', '\u{11ca7}', Script::Marchen), ('\u{11ca9}',
+ '\u{11ca9}', Script::Marchen), ('\u{11caa}', '\u{11cb0}', Script::Marchen), ('\u{11cb1}',
+ '\u{11cb1}', Script::Marchen), ('\u{11cb2}', '\u{11cb3}', Script::Marchen), ('\u{11cb4}',
+ '\u{11cb4}', Script::Marchen), ('\u{11cb5}', '\u{11cb6}', Script::Marchen), ('\u{11d00}',
+ '\u{11d06}', Script::Masaram_Gondi), ('\u{11d08}', '\u{11d09}', Script::Masaram_Gondi),
+ ('\u{11d0b}', '\u{11d30}', Script::Masaram_Gondi), ('\u{11d31}', '\u{11d36}',
+ Script::Masaram_Gondi), ('\u{11d3a}', '\u{11d3a}', Script::Masaram_Gondi), ('\u{11d3c}',
+ '\u{11d3d}', Script::Masaram_Gondi), ('\u{11d3f}', '\u{11d45}', Script::Masaram_Gondi),
+ ('\u{11d46}', '\u{11d46}', Script::Masaram_Gondi), ('\u{11d47}', '\u{11d47}',
+ Script::Masaram_Gondi), ('\u{11d50}', '\u{11d59}', Script::Masaram_Gondi), ('\u{11d60}',
+ '\u{11d65}', Script::Gunjala_Gondi), ('\u{11d67}', '\u{11d68}', Script::Gunjala_Gondi),
+ ('\u{11d6a}', '\u{11d89}', Script::Gunjala_Gondi), ('\u{11d8a}', '\u{11d8e}',
+ Script::Gunjala_Gondi), ('\u{11d90}', '\u{11d91}', Script::Gunjala_Gondi), ('\u{11d93}',
+ '\u{11d94}', Script::Gunjala_Gondi), ('\u{11d95}', '\u{11d95}', Script::Gunjala_Gondi),
+ ('\u{11d96}', '\u{11d96}', Script::Gunjala_Gondi), ('\u{11d97}', '\u{11d97}',
+ Script::Gunjala_Gondi), ('\u{11d98}', '\u{11d98}', Script::Gunjala_Gondi), ('\u{11da0}',
+ '\u{11da9}', Script::Gunjala_Gondi), ('\u{11ee0}', '\u{11ef2}', Script::Makasar),
+ ('\u{11ef3}', '\u{11ef4}', Script::Makasar), ('\u{11ef5}', '\u{11ef6}', Script::Makasar),
+ ('\u{11ef7}', '\u{11ef8}', Script::Makasar), ('\u{11f00}', '\u{11f01}', Script::Kawi),
+ ('\u{11f02}', '\u{11f02}', Script::Kawi), ('\u{11f03}', '\u{11f03}', Script::Kawi),
+ ('\u{11f04}', '\u{11f10}', Script::Kawi), ('\u{11f12}', '\u{11f33}', Script::Kawi),
+ ('\u{11f34}', '\u{11f35}', Script::Kawi), ('\u{11f36}', '\u{11f3a}', Script::Kawi),
+ ('\u{11f3e}', '\u{11f3f}', Script::Kawi), ('\u{11f40}', '\u{11f40}', Script::Kawi),
+ ('\u{11f41}', '\u{11f41}', Script::Kawi), ('\u{11f42}', '\u{11f42}', Script::Kawi),
+ ('\u{11f43}', '\u{11f4f}', Script::Kawi), ('\u{11f50}', '\u{11f59}', Script::Kawi),
+ ('\u{11fb0}', '\u{11fb0}', Script::Lisu), ('\u{11fc0}', '\u{11fd4}', Script::Tamil),
+ ('\u{11fd5}', '\u{11fdc}', Script::Tamil), ('\u{11fdd}', '\u{11fe0}', Script::Tamil),
+ ('\u{11fe1}', '\u{11ff1}', Script::Tamil), ('\u{11fff}', '\u{11fff}', Script::Tamil),
+ ('\u{12000}', '\u{12399}', Script::Cuneiform), ('\u{12400}', '\u{1246e}',
+ Script::Cuneiform), ('\u{12470}', '\u{12474}', Script::Cuneiform), ('\u{12480}',
+ '\u{12543}', Script::Cuneiform), ('\u{12f90}', '\u{12ff0}', Script::Cypro_Minoan),
+ ('\u{12ff1}', '\u{12ff2}', Script::Cypro_Minoan), ('\u{13000}', '\u{1342f}',
+ Script::Egyptian_Hieroglyphs), ('\u{13430}', '\u{1343f}', Script::Egyptian_Hieroglyphs),
+ ('\u{13440}', '\u{13440}', Script::Egyptian_Hieroglyphs), ('\u{13441}', '\u{13446}',
+ Script::Egyptian_Hieroglyphs), ('\u{13447}', '\u{13455}', Script::Egyptian_Hieroglyphs),
('\u{14400}', '\u{14646}', Script::Anatolian_Hieroglyphs), ('\u{16800}', '\u{16a38}',
Script::Bamum), ('\u{16a40}', '\u{16a5e}', Script::Mro), ('\u{16a60}', '\u{16a69}',
- Script::Mro), ('\u{16a6e}', '\u{16a6f}', Script::Mro), ('\u{16ad0}', '\u{16aed}',
+ Script::Mro), ('\u{16a6e}', '\u{16a6f}', Script::Mro), ('\u{16a70}', '\u{16abe}',
+ Script::Tangsa), ('\u{16ac0}', '\u{16ac9}', Script::Tangsa), ('\u{16ad0}', '\u{16aed}',
Script::Bassa_Vah), ('\u{16af0}', '\u{16af4}', Script::Bassa_Vah), ('\u{16af5}',
'\u{16af5}', Script::Bassa_Vah), ('\u{16b00}', '\u{16b2f}', Script::Pahawh_Hmong),
('\u{16b30}', '\u{16b36}', Script::Pahawh_Hmong), ('\u{16b37}', '\u{16b3b}',
@@ -2866,118 +2986,132 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
'\u{16f50}', Script::Miao), ('\u{16f51}', '\u{16f87}', Script::Miao), ('\u{16f8f}',
'\u{16f92}', Script::Miao), ('\u{16f93}', '\u{16f9f}', Script::Miao), ('\u{16fe0}',
'\u{16fe0}', Script::Tangut), ('\u{16fe1}', '\u{16fe1}', Script::Nushu), ('\u{16fe2}',
- '\u{16fe2}', Script::Common), ('\u{16fe3}', '\u{16fe3}', Script::Common), ('\u{16fe4}',
+ '\u{16fe2}', Script::Han), ('\u{16fe3}', '\u{16fe3}', Script::Han), ('\u{16fe4}',
'\u{16fe4}', Script::Khitan_Small_Script), ('\u{16ff0}', '\u{16ff1}', Script::Han),
('\u{17000}', '\u{187f7}', Script::Tangut), ('\u{18800}', '\u{18aff}', Script::Tangut),
('\u{18b00}', '\u{18cd5}', Script::Khitan_Small_Script), ('\u{18d00}', '\u{18d08}',
- Script::Tangut), ('\u{1b000}', '\u{1b000}', Script::Katakana), ('\u{1b001}', '\u{1b11e}',
- Script::Hiragana), ('\u{1b150}', '\u{1b152}', Script::Hiragana), ('\u{1b164}',
- '\u{1b167}', Script::Katakana), ('\u{1b170}', '\u{1b2fb}', Script::Nushu), ('\u{1bc00}',
- '\u{1bc6a}', Script::Duployan), ('\u{1bc70}', '\u{1bc7c}', Script::Duployan),
- ('\u{1bc80}', '\u{1bc88}', Script::Duployan), ('\u{1bc90}', '\u{1bc99}',
- Script::Duployan), ('\u{1bc9c}', '\u{1bc9c}', Script::Duployan), ('\u{1bc9d}',
- '\u{1bc9e}', Script::Duployan), ('\u{1bc9f}', '\u{1bc9f}', Script::Duployan),
- ('\u{1bca0}', '\u{1bca3}', Script::Common), ('\u{1d000}', '\u{1d0f5}', Script::Common),
- ('\u{1d100}', '\u{1d126}', Script::Common), ('\u{1d129}', '\u{1d164}', Script::Common),
- ('\u{1d165}', '\u{1d166}', Script::Common), ('\u{1d167}', '\u{1d169}', Script::Inherited),
- ('\u{1d16a}', '\u{1d16c}', Script::Common), ('\u{1d16d}', '\u{1d172}', Script::Common),
- ('\u{1d173}', '\u{1d17a}', Script::Common), ('\u{1d17b}', '\u{1d182}', Script::Inherited),
- ('\u{1d183}', '\u{1d184}', Script::Common), ('\u{1d185}', '\u{1d18b}', Script::Inherited),
- ('\u{1d18c}', '\u{1d1a9}', Script::Common), ('\u{1d1aa}', '\u{1d1ad}', Script::Inherited),
- ('\u{1d1ae}', '\u{1d1e8}', Script::Common), ('\u{1d200}', '\u{1d241}', Script::Greek),
- ('\u{1d242}', '\u{1d244}', Script::Greek), ('\u{1d245}', '\u{1d245}', Script::Greek),
- ('\u{1d2e0}', '\u{1d2f3}', Script::Common), ('\u{1d300}', '\u{1d356}', Script::Common),
- ('\u{1d360}', '\u{1d378}', Script::Common), ('\u{1d400}', '\u{1d454}', Script::Common),
- ('\u{1d456}', '\u{1d49c}', Script::Common), ('\u{1d49e}', '\u{1d49f}', Script::Common),
- ('\u{1d4a2}', '\u{1d4a2}', Script::Common), ('\u{1d4a5}', '\u{1d4a6}', Script::Common),
- ('\u{1d4a9}', '\u{1d4ac}', Script::Common), ('\u{1d4ae}', '\u{1d4b9}', Script::Common),
- ('\u{1d4bb}', '\u{1d4bb}', Script::Common), ('\u{1d4bd}', '\u{1d4c3}', Script::Common),
- ('\u{1d4c5}', '\u{1d505}', Script::Common), ('\u{1d507}', '\u{1d50a}', Script::Common),
- ('\u{1d50d}', '\u{1d514}', Script::Common), ('\u{1d516}', '\u{1d51c}', Script::Common),
- ('\u{1d51e}', '\u{1d539}', Script::Common), ('\u{1d53b}', '\u{1d53e}', Script::Common),
- ('\u{1d540}', '\u{1d544}', Script::Common), ('\u{1d546}', '\u{1d546}', Script::Common),
- ('\u{1d54a}', '\u{1d550}', Script::Common), ('\u{1d552}', '\u{1d6a5}', Script::Common),
- ('\u{1d6a8}', '\u{1d6c0}', Script::Common), ('\u{1d6c1}', '\u{1d6c1}', Script::Common),
- ('\u{1d6c2}', '\u{1d6da}', Script::Common), ('\u{1d6db}', '\u{1d6db}', Script::Common),
- ('\u{1d6dc}', '\u{1d6fa}', Script::Common), ('\u{1d6fb}', '\u{1d6fb}', Script::Common),
- ('\u{1d6fc}', '\u{1d714}', Script::Common), ('\u{1d715}', '\u{1d715}', Script::Common),
- ('\u{1d716}', '\u{1d734}', Script::Common), ('\u{1d735}', '\u{1d735}', Script::Common),
- ('\u{1d736}', '\u{1d74e}', Script::Common), ('\u{1d74f}', '\u{1d74f}', Script::Common),
- ('\u{1d750}', '\u{1d76e}', Script::Common), ('\u{1d76f}', '\u{1d76f}', Script::Common),
- ('\u{1d770}', '\u{1d788}', Script::Common), ('\u{1d789}', '\u{1d789}', Script::Common),
- ('\u{1d78a}', '\u{1d7a8}', Script::Common), ('\u{1d7a9}', '\u{1d7a9}', Script::Common),
- ('\u{1d7aa}', '\u{1d7c2}', Script::Common), ('\u{1d7c3}', '\u{1d7c3}', Script::Common),
- ('\u{1d7c4}', '\u{1d7cb}', Script::Common), ('\u{1d7ce}', '\u{1d7ff}', Script::Common),
- ('\u{1d800}', '\u{1d9ff}', Script::SignWriting), ('\u{1da00}', '\u{1da36}',
- Script::SignWriting), ('\u{1da37}', '\u{1da3a}', Script::SignWriting), ('\u{1da3b}',
- '\u{1da6c}', Script::SignWriting), ('\u{1da6d}', '\u{1da74}', Script::SignWriting),
- ('\u{1da75}', '\u{1da75}', Script::SignWriting), ('\u{1da76}', '\u{1da83}',
- Script::SignWriting), ('\u{1da84}', '\u{1da84}', Script::SignWriting), ('\u{1da85}',
- '\u{1da86}', Script::SignWriting), ('\u{1da87}', '\u{1da8b}', Script::SignWriting),
- ('\u{1da9b}', '\u{1da9f}', Script::SignWriting), ('\u{1daa1}', '\u{1daaf}',
- Script::SignWriting), ('\u{1e000}', '\u{1e006}', Script::Glagolitic), ('\u{1e008}',
- '\u{1e018}', Script::Glagolitic), ('\u{1e01b}', '\u{1e021}', Script::Glagolitic),
- ('\u{1e023}', '\u{1e024}', Script::Glagolitic), ('\u{1e026}', '\u{1e02a}',
- Script::Glagolitic), ('\u{1e100}', '\u{1e12c}', Script::Nyiakeng_Puachue_Hmong),
- ('\u{1e130}', '\u{1e136}', Script::Nyiakeng_Puachue_Hmong), ('\u{1e137}', '\u{1e13d}',
+ Script::Tangut), ('\u{1aff0}', '\u{1aff3}', Script::Katakana), ('\u{1aff5}', '\u{1affb}',
+ Script::Katakana), ('\u{1affd}', '\u{1affe}', Script::Katakana), ('\u{1b000}',
+ '\u{1b000}', Script::Katakana), ('\u{1b001}', '\u{1b11f}', Script::Hiragana),
+ ('\u{1b120}', '\u{1b122}', Script::Katakana), ('\u{1b132}', '\u{1b132}',
+ Script::Hiragana), ('\u{1b150}', '\u{1b152}', Script::Hiragana), ('\u{1b155}',
+ '\u{1b155}', Script::Katakana), ('\u{1b164}', '\u{1b167}', Script::Katakana),
+ ('\u{1b170}', '\u{1b2fb}', Script::Nushu), ('\u{1bc00}', '\u{1bc6a}', Script::Duployan),
+ ('\u{1bc70}', '\u{1bc7c}', Script::Duployan), ('\u{1bc80}', '\u{1bc88}',
+ Script::Duployan), ('\u{1bc90}', '\u{1bc99}', Script::Duployan), ('\u{1bc9c}',
+ '\u{1bc9c}', Script::Duployan), ('\u{1bc9d}', '\u{1bc9e}', Script::Duployan),
+ ('\u{1bc9f}', '\u{1bc9f}', Script::Duployan), ('\u{1bca0}', '\u{1bca3}', Script::Common),
+ ('\u{1cf00}', '\u{1cf2d}', Script::Inherited), ('\u{1cf30}', '\u{1cf46}',
+ Script::Inherited), ('\u{1cf50}', '\u{1cfc3}', Script::Common), ('\u{1d000}', '\u{1d0f5}',
+ Script::Common), ('\u{1d100}', '\u{1d126}', Script::Common), ('\u{1d129}', '\u{1d164}',
+ Script::Common), ('\u{1d165}', '\u{1d166}', Script::Common), ('\u{1d167}', '\u{1d169}',
+ Script::Inherited), ('\u{1d16a}', '\u{1d16c}', Script::Common), ('\u{1d16d}', '\u{1d172}',
+ Script::Common), ('\u{1d173}', '\u{1d17a}', Script::Common), ('\u{1d17b}', '\u{1d182}',
+ Script::Inherited), ('\u{1d183}', '\u{1d184}', Script::Common), ('\u{1d185}', '\u{1d18b}',
+ Script::Inherited), ('\u{1d18c}', '\u{1d1a9}', Script::Common), ('\u{1d1aa}', '\u{1d1ad}',
+ Script::Inherited), ('\u{1d1ae}', '\u{1d1ea}', Script::Common), ('\u{1d200}', '\u{1d241}',
+ Script::Greek), ('\u{1d242}', '\u{1d244}', Script::Greek), ('\u{1d245}', '\u{1d245}',
+ Script::Greek), ('\u{1d2c0}', '\u{1d2d3}', Script::Common), ('\u{1d2e0}', '\u{1d2f3}',
+ Script::Common), ('\u{1d300}', '\u{1d356}', Script::Common), ('\u{1d360}', '\u{1d378}',
+ Script::Common), ('\u{1d400}', '\u{1d454}', Script::Common), ('\u{1d456}', '\u{1d49c}',
+ Script::Common), ('\u{1d49e}', '\u{1d49f}', Script::Common), ('\u{1d4a2}', '\u{1d4a2}',
+ Script::Common), ('\u{1d4a5}', '\u{1d4a6}', Script::Common), ('\u{1d4a9}', '\u{1d4ac}',
+ Script::Common), ('\u{1d4ae}', '\u{1d4b9}', Script::Common), ('\u{1d4bb}', '\u{1d4bb}',
+ Script::Common), ('\u{1d4bd}', '\u{1d4c3}', Script::Common), ('\u{1d4c5}', '\u{1d505}',
+ Script::Common), ('\u{1d507}', '\u{1d50a}', Script::Common), ('\u{1d50d}', '\u{1d514}',
+ Script::Common), ('\u{1d516}', '\u{1d51c}', Script::Common), ('\u{1d51e}', '\u{1d539}',
+ Script::Common), ('\u{1d53b}', '\u{1d53e}', Script::Common), ('\u{1d540}', '\u{1d544}',
+ Script::Common), ('\u{1d546}', '\u{1d546}', Script::Common), ('\u{1d54a}', '\u{1d550}',
+ Script::Common), ('\u{1d552}', '\u{1d6a5}', Script::Common), ('\u{1d6a8}', '\u{1d6c0}',
+ Script::Common), ('\u{1d6c1}', '\u{1d6c1}', Script::Common), ('\u{1d6c2}', '\u{1d6da}',
+ Script::Common), ('\u{1d6db}', '\u{1d6db}', Script::Common), ('\u{1d6dc}', '\u{1d6fa}',
+ Script::Common), ('\u{1d6fb}', '\u{1d6fb}', Script::Common), ('\u{1d6fc}', '\u{1d714}',
+ Script::Common), ('\u{1d715}', '\u{1d715}', Script::Common), ('\u{1d716}', '\u{1d734}',
+ Script::Common), ('\u{1d735}', '\u{1d735}', Script::Common), ('\u{1d736}', '\u{1d74e}',
+ Script::Common), ('\u{1d74f}', '\u{1d74f}', Script::Common), ('\u{1d750}', '\u{1d76e}',
+ Script::Common), ('\u{1d76f}', '\u{1d76f}', Script::Common), ('\u{1d770}', '\u{1d788}',
+ Script::Common), ('\u{1d789}', '\u{1d789}', Script::Common), ('\u{1d78a}', '\u{1d7a8}',
+ Script::Common), ('\u{1d7a9}', '\u{1d7a9}', Script::Common), ('\u{1d7aa}', '\u{1d7c2}',
+ Script::Common), ('\u{1d7c3}', '\u{1d7c3}', Script::Common), ('\u{1d7c4}', '\u{1d7cb}',
+ Script::Common), ('\u{1d7ce}', '\u{1d7ff}', Script::Common), ('\u{1d800}', '\u{1d9ff}',
+ Script::SignWriting), ('\u{1da00}', '\u{1da36}', Script::SignWriting), ('\u{1da37}',
+ '\u{1da3a}', Script::SignWriting), ('\u{1da3b}', '\u{1da6c}', Script::SignWriting),
+ ('\u{1da6d}', '\u{1da74}', Script::SignWriting), ('\u{1da75}', '\u{1da75}',
+ Script::SignWriting), ('\u{1da76}', '\u{1da83}', Script::SignWriting), ('\u{1da84}',
+ '\u{1da84}', Script::SignWriting), ('\u{1da85}', '\u{1da86}', Script::SignWriting),
+ ('\u{1da87}', '\u{1da8b}', Script::SignWriting), ('\u{1da9b}', '\u{1da9f}',
+ Script::SignWriting), ('\u{1daa1}', '\u{1daaf}', Script::SignWriting), ('\u{1df00}',
+ '\u{1df09}', Script::Latin), ('\u{1df0a}', '\u{1df0a}', Script::Latin), ('\u{1df0b}',
+ '\u{1df1e}', Script::Latin), ('\u{1df25}', '\u{1df2a}', Script::Latin), ('\u{1e000}',
+ '\u{1e006}', Script::Glagolitic), ('\u{1e008}', '\u{1e018}', Script::Glagolitic),
+ ('\u{1e01b}', '\u{1e021}', Script::Glagolitic), ('\u{1e023}', '\u{1e024}',
+ Script::Glagolitic), ('\u{1e026}', '\u{1e02a}', Script::Glagolitic), ('\u{1e030}',
+ '\u{1e06d}', Script::Cyrillic), ('\u{1e08f}', '\u{1e08f}', Script::Cyrillic),
+ ('\u{1e100}', '\u{1e12c}', Script::Nyiakeng_Puachue_Hmong), ('\u{1e130}', '\u{1e136}',
+ Script::Nyiakeng_Puachue_Hmong), ('\u{1e137}', '\u{1e13d}',
Script::Nyiakeng_Puachue_Hmong), ('\u{1e140}', '\u{1e149}',
Script::Nyiakeng_Puachue_Hmong), ('\u{1e14e}', '\u{1e14e}',
Script::Nyiakeng_Puachue_Hmong), ('\u{1e14f}', '\u{1e14f}',
- Script::Nyiakeng_Puachue_Hmong), ('\u{1e2c0}', '\u{1e2eb}', Script::Wancho), ('\u{1e2ec}',
+ Script::Nyiakeng_Puachue_Hmong), ('\u{1e290}', '\u{1e2ad}', Script::Toto), ('\u{1e2ae}',
+ '\u{1e2ae}', Script::Toto), ('\u{1e2c0}', '\u{1e2eb}', Script::Wancho), ('\u{1e2ec}',
'\u{1e2ef}', Script::Wancho), ('\u{1e2f0}', '\u{1e2f9}', Script::Wancho), ('\u{1e2ff}',
- '\u{1e2ff}', Script::Wancho), ('\u{1e800}', '\u{1e8c4}', Script::Mende_Kikakui),
- ('\u{1e8c7}', '\u{1e8cf}', Script::Mende_Kikakui), ('\u{1e8d0}', '\u{1e8d6}',
- Script::Mende_Kikakui), ('\u{1e900}', '\u{1e943}', Script::Adlam), ('\u{1e944}',
- '\u{1e94a}', Script::Adlam), ('\u{1e94b}', '\u{1e94b}', Script::Adlam), ('\u{1e950}',
- '\u{1e959}', Script::Adlam), ('\u{1e95e}', '\u{1e95f}', Script::Adlam), ('\u{1ec71}',
- '\u{1ecab}', Script::Common), ('\u{1ecac}', '\u{1ecac}', Script::Common), ('\u{1ecad}',
- '\u{1ecaf}', Script::Common), ('\u{1ecb0}', '\u{1ecb0}', Script::Common), ('\u{1ecb1}',
- '\u{1ecb4}', Script::Common), ('\u{1ed01}', '\u{1ed2d}', Script::Common), ('\u{1ed2e}',
- '\u{1ed2e}', Script::Common), ('\u{1ed2f}', '\u{1ed3d}', Script::Common), ('\u{1ee00}',
- '\u{1ee03}', Script::Arabic), ('\u{1ee05}', '\u{1ee1f}', Script::Arabic), ('\u{1ee21}',
- '\u{1ee22}', Script::Arabic), ('\u{1ee24}', '\u{1ee24}', Script::Arabic), ('\u{1ee27}',
- '\u{1ee27}', Script::Arabic), ('\u{1ee29}', '\u{1ee32}', Script::Arabic), ('\u{1ee34}',
- '\u{1ee37}', Script::Arabic), ('\u{1ee39}', '\u{1ee39}', Script::Arabic), ('\u{1ee3b}',
- '\u{1ee3b}', Script::Arabic), ('\u{1ee42}', '\u{1ee42}', Script::Arabic), ('\u{1ee47}',
- '\u{1ee47}', Script::Arabic), ('\u{1ee49}', '\u{1ee49}', Script::Arabic), ('\u{1ee4b}',
- '\u{1ee4b}', Script::Arabic), ('\u{1ee4d}', '\u{1ee4f}', Script::Arabic), ('\u{1ee51}',
- '\u{1ee52}', Script::Arabic), ('\u{1ee54}', '\u{1ee54}', Script::Arabic), ('\u{1ee57}',
- '\u{1ee57}', Script::Arabic), ('\u{1ee59}', '\u{1ee59}', Script::Arabic), ('\u{1ee5b}',
- '\u{1ee5b}', Script::Arabic), ('\u{1ee5d}', '\u{1ee5d}', Script::Arabic), ('\u{1ee5f}',
- '\u{1ee5f}', Script::Arabic), ('\u{1ee61}', '\u{1ee62}', Script::Arabic), ('\u{1ee64}',
- '\u{1ee64}', Script::Arabic), ('\u{1ee67}', '\u{1ee6a}', Script::Arabic), ('\u{1ee6c}',
- '\u{1ee72}', Script::Arabic), ('\u{1ee74}', '\u{1ee77}', Script::Arabic), ('\u{1ee79}',
- '\u{1ee7c}', Script::Arabic), ('\u{1ee7e}', '\u{1ee7e}', Script::Arabic), ('\u{1ee80}',
- '\u{1ee89}', Script::Arabic), ('\u{1ee8b}', '\u{1ee9b}', Script::Arabic), ('\u{1eea1}',
- '\u{1eea3}', Script::Arabic), ('\u{1eea5}', '\u{1eea9}', Script::Arabic), ('\u{1eeab}',
- '\u{1eebb}', Script::Arabic), ('\u{1eef0}', '\u{1eef1}', Script::Arabic), ('\u{1f000}',
- '\u{1f02b}', Script::Common), ('\u{1f030}', '\u{1f093}', Script::Common), ('\u{1f0a0}',
- '\u{1f0ae}', Script::Common), ('\u{1f0b1}', '\u{1f0bf}', Script::Common), ('\u{1f0c1}',
- '\u{1f0cf}', Script::Common), ('\u{1f0d1}', '\u{1f0f5}', Script::Common), ('\u{1f100}',
- '\u{1f10c}', Script::Common), ('\u{1f10d}', '\u{1f1ad}', Script::Common), ('\u{1f1e6}',
- '\u{1f1ff}', Script::Common), ('\u{1f200}', '\u{1f200}', Script::Hiragana), ('\u{1f201}',
- '\u{1f202}', Script::Common), ('\u{1f210}', '\u{1f23b}', Script::Common), ('\u{1f240}',
- '\u{1f248}', Script::Common), ('\u{1f250}', '\u{1f251}', Script::Common), ('\u{1f260}',
- '\u{1f265}', Script::Common), ('\u{1f300}', '\u{1f3fa}', Script::Common), ('\u{1f3fb}',
- '\u{1f3ff}', Script::Common), ('\u{1f400}', '\u{1f6d7}', Script::Common), ('\u{1f6e0}',
- '\u{1f6ec}', Script::Common), ('\u{1f6f0}', '\u{1f6fc}', Script::Common), ('\u{1f700}',
- '\u{1f773}', Script::Common), ('\u{1f780}', '\u{1f7d8}', Script::Common), ('\u{1f7e0}',
- '\u{1f7eb}', Script::Common), ('\u{1f800}', '\u{1f80b}', Script::Common), ('\u{1f810}',
- '\u{1f847}', Script::Common), ('\u{1f850}', '\u{1f859}', Script::Common), ('\u{1f860}',
- '\u{1f887}', Script::Common), ('\u{1f890}', '\u{1f8ad}', Script::Common), ('\u{1f8b0}',
- '\u{1f8b1}', Script::Common), ('\u{1f900}', '\u{1f978}', Script::Common), ('\u{1f97a}',
- '\u{1f9cb}', Script::Common), ('\u{1f9cd}', '\u{1fa53}', Script::Common), ('\u{1fa60}',
- '\u{1fa6d}', Script::Common), ('\u{1fa70}', '\u{1fa74}', Script::Common), ('\u{1fa78}',
- '\u{1fa7a}', Script::Common), ('\u{1fa80}', '\u{1fa86}', Script::Common), ('\u{1fa90}',
- '\u{1faa8}', Script::Common), ('\u{1fab0}', '\u{1fab6}', Script::Common), ('\u{1fac0}',
- '\u{1fac2}', Script::Common), ('\u{1fad0}', '\u{1fad6}', Script::Common), ('\u{1fb00}',
- '\u{1fb92}', Script::Common), ('\u{1fb94}', '\u{1fbca}', Script::Common), ('\u{1fbf0}',
- '\u{1fbf9}', Script::Common), ('\u{20000}', '\u{2a6dd}', Script::Han), ('\u{2a700}',
- '\u{2b734}', Script::Han), ('\u{2b740}', '\u{2b81d}', Script::Han), ('\u{2b820}',
- '\u{2cea1}', Script::Han), ('\u{2ceb0}', '\u{2ebe0}', Script::Han), ('\u{2f800}',
- '\u{2fa1d}', Script::Han), ('\u{30000}', '\u{3134a}', Script::Han), ('\u{e0001}',
- '\u{e0001}', Script::Common), ('\u{e0020}', '\u{e007f}', Script::Common), ('\u{e0100}',
- '\u{e01ef}', Script::Inherited)
+ '\u{1e2ff}', Script::Wancho), ('\u{1e4d0}', '\u{1e4ea}', Script::Nag_Mundari),
+ ('\u{1e4eb}', '\u{1e4eb}', Script::Nag_Mundari), ('\u{1e4ec}', '\u{1e4ef}',
+ Script::Nag_Mundari), ('\u{1e4f0}', '\u{1e4f9}', Script::Nag_Mundari), ('\u{1e7e0}',
+ '\u{1e7e6}', Script::Ethiopic), ('\u{1e7e8}', '\u{1e7eb}', Script::Ethiopic),
+ ('\u{1e7ed}', '\u{1e7ee}', Script::Ethiopic), ('\u{1e7f0}', '\u{1e7fe}',
+ Script::Ethiopic), ('\u{1e800}', '\u{1e8c4}', Script::Mende_Kikakui), ('\u{1e8c7}',
+ '\u{1e8cf}', Script::Mende_Kikakui), ('\u{1e8d0}', '\u{1e8d6}', Script::Mende_Kikakui),
+ ('\u{1e900}', '\u{1e943}', Script::Adlam), ('\u{1e944}', '\u{1e94a}', Script::Adlam),
+ ('\u{1e94b}', '\u{1e94b}', Script::Adlam), ('\u{1e950}', '\u{1e959}', Script::Adlam),
+ ('\u{1e95e}', '\u{1e95f}', Script::Adlam), ('\u{1ec71}', '\u{1ecab}', Script::Common),
+ ('\u{1ecac}', '\u{1ecac}', Script::Common), ('\u{1ecad}', '\u{1ecaf}', Script::Common),
+ ('\u{1ecb0}', '\u{1ecb0}', Script::Common), ('\u{1ecb1}', '\u{1ecb4}', Script::Common),
+ ('\u{1ed01}', '\u{1ed2d}', Script::Common), ('\u{1ed2e}', '\u{1ed2e}', Script::Common),
+ ('\u{1ed2f}', '\u{1ed3d}', Script::Common), ('\u{1ee00}', '\u{1ee03}', Script::Arabic),
+ ('\u{1ee05}', '\u{1ee1f}', Script::Arabic), ('\u{1ee21}', '\u{1ee22}', Script::Arabic),
+ ('\u{1ee24}', '\u{1ee24}', Script::Arabic), ('\u{1ee27}', '\u{1ee27}', Script::Arabic),
+ ('\u{1ee29}', '\u{1ee32}', Script::Arabic), ('\u{1ee34}', '\u{1ee37}', Script::Arabic),
+ ('\u{1ee39}', '\u{1ee39}', Script::Arabic), ('\u{1ee3b}', '\u{1ee3b}', Script::Arabic),
+ ('\u{1ee42}', '\u{1ee42}', Script::Arabic), ('\u{1ee47}', '\u{1ee47}', Script::Arabic),
+ ('\u{1ee49}', '\u{1ee49}', Script::Arabic), ('\u{1ee4b}', '\u{1ee4b}', Script::Arabic),
+ ('\u{1ee4d}', '\u{1ee4f}', Script::Arabic), ('\u{1ee51}', '\u{1ee52}', Script::Arabic),
+ ('\u{1ee54}', '\u{1ee54}', Script::Arabic), ('\u{1ee57}', '\u{1ee57}', Script::Arabic),
+ ('\u{1ee59}', '\u{1ee59}', Script::Arabic), ('\u{1ee5b}', '\u{1ee5b}', Script::Arabic),
+ ('\u{1ee5d}', '\u{1ee5d}', Script::Arabic), ('\u{1ee5f}', '\u{1ee5f}', Script::Arabic),
+ ('\u{1ee61}', '\u{1ee62}', Script::Arabic), ('\u{1ee64}', '\u{1ee64}', Script::Arabic),
+ ('\u{1ee67}', '\u{1ee6a}', Script::Arabic), ('\u{1ee6c}', '\u{1ee72}', Script::Arabic),
+ ('\u{1ee74}', '\u{1ee77}', Script::Arabic), ('\u{1ee79}', '\u{1ee7c}', Script::Arabic),
+ ('\u{1ee7e}', '\u{1ee7e}', Script::Arabic), ('\u{1ee80}', '\u{1ee89}', Script::Arabic),
+ ('\u{1ee8b}', '\u{1ee9b}', Script::Arabic), ('\u{1eea1}', '\u{1eea3}', Script::Arabic),
+ ('\u{1eea5}', '\u{1eea9}', Script::Arabic), ('\u{1eeab}', '\u{1eebb}', Script::Arabic),
+ ('\u{1eef0}', '\u{1eef1}', Script::Arabic), ('\u{1f000}', '\u{1f02b}', Script::Common),
+ ('\u{1f030}', '\u{1f093}', Script::Common), ('\u{1f0a0}', '\u{1f0ae}', Script::Common),
+ ('\u{1f0b1}', '\u{1f0bf}', Script::Common), ('\u{1f0c1}', '\u{1f0cf}', Script::Common),
+ ('\u{1f0d1}', '\u{1f0f5}', Script::Common), ('\u{1f100}', '\u{1f10c}', Script::Common),
+ ('\u{1f10d}', '\u{1f1ad}', Script::Common), ('\u{1f1e6}', '\u{1f1ff}', Script::Common),
+ ('\u{1f200}', '\u{1f200}', Script::Hiragana), ('\u{1f201}', '\u{1f202}', Script::Common),
+ ('\u{1f210}', '\u{1f23b}', Script::Common), ('\u{1f240}', '\u{1f248}', Script::Common),
+ ('\u{1f250}', '\u{1f251}', Script::Common), ('\u{1f260}', '\u{1f265}', Script::Common),
+ ('\u{1f300}', '\u{1f3fa}', Script::Common), ('\u{1f3fb}', '\u{1f3ff}', Script::Common),
+ ('\u{1f400}', '\u{1f6d7}', Script::Common), ('\u{1f6dc}', '\u{1f6ec}', Script::Common),
+ ('\u{1f6f0}', '\u{1f6fc}', Script::Common), ('\u{1f700}', '\u{1f776}', Script::Common),
+ ('\u{1f77b}', '\u{1f7d9}', Script::Common), ('\u{1f7e0}', '\u{1f7eb}', Script::Common),
+ ('\u{1f7f0}', '\u{1f7f0}', Script::Common), ('\u{1f800}', '\u{1f80b}', Script::Common),
+ ('\u{1f810}', '\u{1f847}', Script::Common), ('\u{1f850}', '\u{1f859}', Script::Common),
+ ('\u{1f860}', '\u{1f887}', Script::Common), ('\u{1f890}', '\u{1f8ad}', Script::Common),
+ ('\u{1f8b0}', '\u{1f8b1}', Script::Common), ('\u{1f900}', '\u{1fa53}', Script::Common),
+ ('\u{1fa60}', '\u{1fa6d}', Script::Common), ('\u{1fa70}', '\u{1fa7c}', Script::Common),
+ ('\u{1fa80}', '\u{1fa88}', Script::Common), ('\u{1fa90}', '\u{1fabd}', Script::Common),
+ ('\u{1fabf}', '\u{1fac5}', Script::Common), ('\u{1face}', '\u{1fadb}', Script::Common),
+ ('\u{1fae0}', '\u{1fae8}', Script::Common), ('\u{1faf0}', '\u{1faf8}', Script::Common),
+ ('\u{1fb00}', '\u{1fb92}', Script::Common), ('\u{1fb94}', '\u{1fbca}', Script::Common),
+ ('\u{1fbf0}', '\u{1fbf9}', Script::Common), ('\u{20000}', '\u{2a6df}', Script::Han),
+ ('\u{2a700}', '\u{2b739}', Script::Han), ('\u{2b740}', '\u{2b81d}', Script::Han),
+ ('\u{2b820}', '\u{2cea1}', Script::Han), ('\u{2ceb0}', '\u{2ebe0}', Script::Han),
+ ('\u{2f800}', '\u{2fa1d}', Script::Han), ('\u{30000}', '\u{3134a}', Script::Han),
+ ('\u{31350}', '\u{323af}', Script::Han), ('\u{e0001}', '\u{e0001}', Script::Common),
+ ('\u{e0020}', '\u{e007f}', Script::Common), ('\u{e0100}', '\u{e01ef}', Script::Inherited)
];
const SCRIPT_EXTENSIONS: &'static [(char, char, ScriptExtension)] = &[
@@ -2986,11 +3120,11 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
'\u{483}', script_extensions::CYRL_PERM), ('\u{484}', '\u{484}',
script_extensions::CYRL_GLAG), ('\u{485}', '\u{486}', script_extensions::CYRL_LATN),
('\u{487}', '\u{487}', script_extensions::CYRL_GLAG), ('\u{60c}', '\u{60c}',
- script_extensions::ARAB_ROHG_SYRC_THAA_YEZI), ('\u{61b}', '\u{61b}',
- script_extensions::ARAB_ROHG_SYRC_THAA_YEZI), ('\u{61c}', '\u{61c}',
+ script_extensions::ARAB_NKOO_ROHG_SYRC_THAA_YEZI), ('\u{61b}', '\u{61b}',
+ script_extensions::ARAB_NKOO_ROHG_SYRC_THAA_YEZI), ('\u{61c}', '\u{61c}',
script_extensions::ARAB_SYRC_THAA), ('\u{61f}', '\u{61f}',
- script_extensions::ARAB_ROHG_SYRC_THAA_YEZI), ('\u{640}', '\u{640}',
- script_extensions::ADLM_ARAB_MAND_MANI_PHLP_ROHG_SOGD_SYRC), ('\u{64b}', '\u{655}',
+ script_extensions::ADLM_ARAB_NKOO_ROHG_SYRC_THAA_YEZI), ('\u{640}', '\u{640}',
+ script_extensions::ADLM_ARAB_MAND_MANI_OUGR_PHLP_ROHG_SOGD_SYRC), ('\u{64b}', '\u{655}',
script_extensions::ARAB_SYRC), ('\u{660}', '\u{669}', script_extensions::ARAB_THAA_YEZI),
('\u{670}', '\u{670}', script_extensions::ARAB_SYRC), ('\u{6d4}', '\u{6d4}',
script_extensions::ARAB_ROHG), ('\u{951}', '\u{951}',
@@ -3031,10 +3165,11 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
script_extensions::BENG), ('\u{1cf8}', '\u{1cf9}', script_extensions::DEVA_GRAN),
('\u{1cfa}', '\u{1cfa}', script_extensions::NAND), ('\u{1dc0}', '\u{1dc1}',
script_extensions::GREK), ('\u{1df8}', '\u{1df8}', script_extensions::CYRL_SYRC),
- ('\u{202f}', '\u{202f}', script_extensions::LATN_MONG), ('\u{20f0}', '\u{20f0}',
- script_extensions::DEVA_GRAN_LATN), ('\u{2e43}', '\u{2e43}', script_extensions::CYRL_GLAG),
- ('\u{3001}', '\u{3002}', script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3003}',
- '\u{3003}', script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{3006}', '\u{3006}',
+ ('\u{1dfa}', '\u{1dfa}', script_extensions::SYRC), ('\u{202f}', '\u{202f}',
+ script_extensions::LATN_MONG), ('\u{20f0}', '\u{20f0}', script_extensions::DEVA_GRAN_LATN),
+ ('\u{2e43}', '\u{2e43}', script_extensions::CYRL_GLAG), ('\u{3001}', '\u{3002}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3003}', '\u{3003}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{3006}', '\u{3006}',
script_extensions::HANI), ('\u{3008}', '\u{3008}',
script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{3009}', '\u{3009}',
script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{300a}', '\u{300a}',
@@ -3088,23 +3223,27 @@ pub fn get_script_extension(c: char) -> Option<ScriptExtension> {
script_extensions::DEVA_DOGR_GUJR_GURU_KHOJ_KTHI_MAHJ_MODI_SIND_TAKR_TIRH), ('\u{a8f1}',
'\u{a8f1}', script_extensions::BENG_DEVA), ('\u{a8f3}', '\u{a8f3}',
script_extensions::DEVA_TAML), ('\u{a92e}', '\u{a92e}', script_extensions::KALI_LATN_MYMR),
- ('\u{a9cf}', '\u{a9cf}', script_extensions::BUGI_JAVA), ('\u{fdf2}', '\u{fdf2}',
- script_extensions::ARAB_THAA), ('\u{fdfd}', '\u{fdfd}', script_extensions::ARAB_THAA),
- ('\u{fe45}', '\u{fe46}', script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{ff61}',
- '\u{ff61}', script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{ff62}', '\u{ff62}',
+ ('\u{a9cf}', '\u{a9cf}', script_extensions::BUGI_JAVA), ('\u{fd3e}', '\u{fd3e}',
+ script_extensions::ARAB_NKOO), ('\u{fd3f}', '\u{fd3f}', script_extensions::ARAB_NKOO),
+ ('\u{fdf2}', '\u{fdf2}', script_extensions::ARAB_THAA), ('\u{fdfd}', '\u{fdfd}',
+ script_extensions::ARAB_THAA), ('\u{fe45}', '\u{fe46}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA), ('\u{ff61}', '\u{ff61}',
+ script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{ff62}', '\u{ff62}',
script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{ff63}', '\u{ff63}',
script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{ff64}', '\u{ff65}',
script_extensions::BOPO_HANG_HANI_HIRA_KANA_YIII), ('\u{ff70}', '\u{ff70}',
script_extensions::HIRA_KANA), ('\u{ff9e}', '\u{ff9f}', script_extensions::HIRA_KANA),
- ('\u{10100}', '\u{10102}', script_extensions::CPRT_LINB), ('\u{10107}', '\u{10133}',
+ ('\u{10100}', '\u{10101}', script_extensions::CPMN_CPRT_LINB), ('\u{10102}', '\u{10102}',
+ script_extensions::CPRT_LINB), ('\u{10107}', '\u{10133}',
script_extensions::CPRT_LINA_LINB), ('\u{10137}', '\u{1013f}',
script_extensions::CPRT_LINB), ('\u{102e0}', '\u{102e0}', script_extensions::ARAB_COPT),
- ('\u{102e1}', '\u{102fb}', script_extensions::ARAB_COPT), ('\u{11301}', '\u{11301}',
- script_extensions::GRAN_TAML), ('\u{11303}', '\u{11303}', script_extensions::GRAN_TAML),
- ('\u{1133b}', '\u{1133c}', script_extensions::GRAN_TAML), ('\u{11fd0}', '\u{11fd1}',
- script_extensions::GRAN_TAML), ('\u{11fd3}', '\u{11fd3}', script_extensions::GRAN_TAML),
- ('\u{1bca0}', '\u{1bca3}', script_extensions::DUPL), ('\u{1d360}', '\u{1d371}',
- script_extensions::HANI), ('\u{1f250}', '\u{1f251}', script_extensions::HANI)
+ ('\u{102e1}', '\u{102fb}', script_extensions::ARAB_COPT), ('\u{10af2}', '\u{10af2}',
+ script_extensions::MANI_OUGR), ('\u{11301}', '\u{11301}', script_extensions::GRAN_TAML),
+ ('\u{11303}', '\u{11303}', script_extensions::GRAN_TAML), ('\u{1133b}', '\u{1133c}',
+ script_extensions::GRAN_TAML), ('\u{11fd0}', '\u{11fd1}', script_extensions::GRAN_TAML),
+ ('\u{11fd3}', '\u{11fd3}', script_extensions::GRAN_TAML), ('\u{1bca0}', '\u{1bca3}',
+ script_extensions::DUPL), ('\u{1d360}', '\u{1d371}', script_extensions::HANI), ('\u{1f250}',
+ '\u{1f251}', script_extensions::HANI)
];
diff --git a/vendor/unicode-security/.cargo-checksum.json b/vendor/unicode-security/.cargo-checksum.json
index a0a3c205d..286456775 100644
--- a/vendor/unicode-security/.cargo-checksum.json
+++ b/vendor/unicode-security/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"651b0fa8d5cbbdd756f4c54cf8f2c7ac0e2c443e3402684612babb2d0e745b5a","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"cf597d1e3c462dcac6a525aab647e7b6557e03b1d6a7623ddb571cbfffc089ab","scripts/unicode.py":"44c9110535ff74c16f73276d6b15b42c8b9c5b980ca685f07d32edb068abd5ca","src/confusable_detection.rs":"c837f2ed06e9df60a7111e25471b46e5f61d86858215f548ddd43973fd2a64c4","src/general_security_profile.rs":"e7e979876f9414cec50a58301f635bb4216089f2cb2cab83487fcafb0e13c0ac","src/lib.rs":"4d0fe431eab6b50fd7293b59773f71e07f2fd4232b09d79e040bcf33a824d335","src/mixed_script.rs":"b95a3d5316c0aa6144c6ded12bb6c479df2d513e43157fb29e8dc9a3674d0d93","src/restriction_level.rs":"0e35d97c6b5ac3cf40440e80677caf6724fae7beb5d0f0bf438614a76ab920b0","src/tables.rs":"1d7886386d82b42000f9d55ba2286949da190795e75949f23640e1b25ba4a0fe","src/tests.rs":"a9d4bc171dec6dc6a440c871fa49eb14ece9ef0c248b6742f1233ea5a1d393a0"},"package":"5d87c28edc5b263377e448d6cdcb935c06b95413d8013ba6fae470558ccab18f"} \ No newline at end of file
+{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"b719757f69f5e8a66d65f28780173e2a7d12d30ab2d4c636eeeef7cff6dc2256","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"9266090c1c7f321793aa0775763b499eb2f7aa819eb8c8d9a607503cb9487c8e","scripts/unicode.py":"25db65759b92a2f60ca2d4a6ec401a136895eca71732d903023a80c4b6cd5a7f","src/confusable_detection.rs":"c837f2ed06e9df60a7111e25471b46e5f61d86858215f548ddd43973fd2a64c4","src/general_security_profile.rs":"e7e979876f9414cec50a58301f635bb4216089f2cb2cab83487fcafb0e13c0ac","src/lib.rs":"4d0fe431eab6b50fd7293b59773f71e07f2fd4232b09d79e040bcf33a824d335","src/mixed_script.rs":"b95a3d5316c0aa6144c6ded12bb6c479df2d513e43157fb29e8dc9a3674d0d93","src/restriction_level.rs":"1f9831385cb20fda09d608390dc56a1866929104e7d694d4a5a486c60380a002","src/tables.rs":"5459b739f3a4b60bfa1ed4704a9d3a185a8808185842bd3cd8dff1ad2f9f7a70","src/tests.rs":"a9d4bc171dec6dc6a440c871fa49eb14ece9ef0c248b6742f1233ea5a1d393a0"},"package":"9ef5756b3097992b934b06608c69f48448a0fbe804bb1e72b982f6d7983e9e63"} \ No newline at end of file
diff --git a/vendor/unicode-security/Cargo.toml b/vendor/unicode-security/Cargo.toml
index cb2022812..090882aba 100644
--- a/vendor/unicode-security/Cargo.toml
+++ b/vendor/unicode-security/Cargo.toml
@@ -3,26 +3,39 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
name = "unicode-security"
-version = "0.0.5"
-authors = ["Charles Lew <crlf0710@gmail.com>", "Manish Goregaokar <manishsmail@gmail.com>"]
-exclude = ["target/*", "Cargo.lock"]
-description = "Detect possible security problems with Unicode usage\naccording to Unicode Technical Standard #39 rules.\n"
+version = "0.1.0"
+authors = [
+ "Charles Lew <crlf0710@gmail.com>",
+ "Manish Goregaokar <manishsmail@gmail.com>",
+]
+exclude = [
+ "target/*",
+ "Cargo.lock",
+]
+description = """
+Detect possible security problems with Unicode usage
+according to Unicode Technical Standard #39 rules.
+"""
homepage = "https://github.com/unicode-rs/unicode-security"
documentation = "https://docs.rs/unicode-security"
readme = "README.md"
-keywords = ["text", "security", "unicode"]
+keywords = [
+ "text",
+ "security",
+ "unicode",
+]
license = "MIT/Apache-2.0"
repository = "https://github.com/unicode-rs/unicode-security"
+
[dependencies.compiler_builtins]
version = "0.1"
optional = true
@@ -48,4 +61,8 @@ default-features = false
[features]
bench = []
default = []
-rustc-dep-of-std = ["std", "core", "compiler_builtins"]
+rustc-dep-of-std = [
+ "std",
+ "core",
+ "compiler_builtins",
+]
diff --git a/vendor/unicode-security/README.md b/vendor/unicode-security/README.md
index 22e8b6d35..bda8739d6 100644
--- a/vendor/unicode-security/README.md
+++ b/vendor/unicode-security/README.md
@@ -1,7 +1,7 @@
# unicode-security
[![Build Status](https://github.com/unicode-rs/unicode-security/workflows/Tests/badge.svg)](https://github.com/unicode-rs/unicode-security/actions)
-[![Current Version](https://meritbadge.herokuapp.com/unicode-security)](https://crates.io/crates/unicode-security)
+[![Current Version](https://img.shields.io/crates/v/unicode-security.svg)](https://crates.io/crates/unicode-security)
[![License: MIT/Apache-2.0](https://img.shields.io/crates/l/unicode-security.svg)](#license)
-This crate exposes various utilities from [UAX #39 Unicode Security Mechanisms](https://www.unicode.org/reports/tr39/) \ No newline at end of file
+This crate exposes various utilities from [UAX #39 Unicode Security Mechanisms](https://www.unicode.org/reports/tr39/)
diff --git a/vendor/unicode-security/scripts/unicode.py b/vendor/unicode-security/scripts/unicode.py
index 368b94c89..11ea31e53 100644
--- a/vendor/unicode-security/scripts/unicode.py
+++ b/vendor/unicode-security/scripts/unicode.py
@@ -39,14 +39,14 @@ preamble = '''// Copyright 2012-2015 The Rust Project Developers. See the COPYRI
#![allow(missing_docs, non_upper_case_globals, non_snake_case)]
'''
-UNICODE_VERSION = (13, 0, 0)
+UNICODE_VERSION = (15, 0, 0)
UNICODE_VERSION_NUMBER = "%s.%s.%s" %UNICODE_VERSION
# Download a Unicode security table file
def fetch(f):
if not os.path.exists(os.path.basename(f)):
- os.system("curl -O http://www.unicode.org/Public/security/%s/%s"
+ os.system("curl -O https://www.unicode.org/Public/security/%s/%s"
% (UNICODE_VERSION_NUMBER, f))
if not os.path.exists(os.path.basename(f)):
@@ -56,7 +56,7 @@ def fetch(f):
# Download a UCD table file
def fetch_unidata(f):
if not os.path.exists(os.path.basename(f)):
- os.system("curl -O http://www.unicode.org/Public/%s/ucd/%s"
+ os.system("curl -O https://www.unicode.org/Public/%s/ucd/%s"
% (UNICODE_VERSION_NUMBER, f))
if not os.path.exists(os.path.basename(f)):
diff --git a/vendor/unicode-security/src/restriction_level.rs b/vendor/unicode-security/src/restriction_level.rs
index adaf07460..b2feedbad 100644
--- a/vendor/unicode-security/src/restriction_level.rs
+++ b/vendor/unicode-security/src/restriction_level.rs
@@ -48,7 +48,7 @@ impl RestrictionLevelDetection for &'_ str {
if !GeneralSecurityProfile::identifier_allowed(ch) {
return RestrictionLevel::Unrestricted;
}
- if ch.is_ascii() {
+ if !ch.is_ascii() {
ascii_only = false;
}
let ch_set = ch.into();
diff --git a/vendor/unicode-security/src/tables.rs b/vendor/unicode-security/src/tables.rs
index 5e4bc1e03..6b72dbb0a 100644
--- a/vendor/unicode-security/src/tables.rs
+++ b/vendor/unicode-security/src/tables.rs
@@ -14,7 +14,7 @@
/// The version of [Unicode](http://www.unicode.org/)
/// that this version of unicode-security is based on.
-pub const UNICODE_VERSION: (u64, u64, u64) = (13, 0, 0);
+pub const UNICODE_VERSION: (u64, u64, u64) = (15, 0, 0);
pub mod util {
@@ -133,127 +133,135 @@ pub mod identifier {
'\u{6ce}'), ('\u{6cf}', '\u{6cf}'), ('\u{6d0}', '\u{6d3}'), ('\u{6d5}', '\u{6d5}'),
('\u{6e5}', '\u{6e6}'), ('\u{6ee}', '\u{6ef}'), ('\u{6f0}', '\u{6f9}'), ('\u{6fa}',
'\u{6fe}'), ('\u{6ff}', '\u{6ff}'), ('\u{750}', '\u{76d}'), ('\u{76e}', '\u{77f}'),
- ('\u{780}', '\u{7b0}'), ('\u{7b1}', '\u{7b1}'), ('\u{8a0}', '\u{8a0}'), ('\u{8a1}',
- '\u{8a1}'), ('\u{8a2}', '\u{8ac}'), ('\u{8b2}', '\u{8b2}'), ('\u{8b6}', '\u{8bd}'),
- ('\u{8be}', '\u{8c7}'), ('\u{901}', '\u{903}'), ('\u{904}', '\u{904}'), ('\u{905}',
- '\u{939}'), ('\u{93a}', '\u{93b}'), ('\u{93c}', '\u{94d}'), ('\u{94f}', '\u{94f}'),
- ('\u{950}', '\u{950}'), ('\u{956}', '\u{957}'), ('\u{960}', '\u{963}'), ('\u{966}',
- '\u{96f}'), ('\u{971}', '\u{972}'), ('\u{973}', '\u{977}'), ('\u{979}', '\u{97a}'),
- ('\u{97b}', '\u{97c}'), ('\u{97d}', '\u{97d}'), ('\u{97e}', '\u{97f}'), ('\u{981}',
- '\u{983}'), ('\u{985}', '\u{98c}'), ('\u{98f}', '\u{990}'), ('\u{993}', '\u{9a8}'),
- ('\u{9aa}', '\u{9b0}'), ('\u{9b2}', '\u{9b2}'), ('\u{9b6}', '\u{9b9}'), ('\u{9bc}',
- '\u{9bc}'), ('\u{9bd}', '\u{9bd}'), ('\u{9be}', '\u{9c4}'), ('\u{9c7}', '\u{9c8}'),
- ('\u{9cb}', '\u{9cd}'), ('\u{9ce}', '\u{9ce}'), ('\u{9d7}', '\u{9d7}'), ('\u{9e0}',
- '\u{9e3}'), ('\u{9e6}', '\u{9f1}'), ('\u{9fe}', '\u{9fe}'), ('\u{a01}', '\u{a01}'),
- ('\u{a02}', '\u{a02}'), ('\u{a03}', '\u{a03}'), ('\u{a05}', '\u{a0a}'), ('\u{a0f}',
- '\u{a10}'), ('\u{a13}', '\u{a28}'), ('\u{a2a}', '\u{a30}'), ('\u{a32}', '\u{a32}'),
- ('\u{a35}', '\u{a35}'), ('\u{a38}', '\u{a39}'), ('\u{a3c}', '\u{a3c}'), ('\u{a3e}',
- '\u{a42}'), ('\u{a47}', '\u{a48}'), ('\u{a4b}', '\u{a4d}'), ('\u{a5c}', '\u{a5c}'),
- ('\u{a66}', '\u{a74}'), ('\u{a81}', '\u{a83}'), ('\u{a85}', '\u{a8b}'), ('\u{a8c}',
- '\u{a8c}'), ('\u{a8d}', '\u{a8d}'), ('\u{a8f}', '\u{a91}'), ('\u{a93}', '\u{aa8}'),
- ('\u{aaa}', '\u{ab0}'), ('\u{ab2}', '\u{ab3}'), ('\u{ab5}', '\u{ab9}'), ('\u{abc}',
- '\u{ac5}'), ('\u{ac7}', '\u{ac9}'), ('\u{acb}', '\u{acd}'), ('\u{ad0}', '\u{ad0}'),
- ('\u{ae0}', '\u{ae0}'), ('\u{ae1}', '\u{ae3}'), ('\u{ae6}', '\u{aef}'), ('\u{afa}',
- '\u{aff}'), ('\u{b01}', '\u{b03}'), ('\u{b05}', '\u{b0c}'), ('\u{b0f}', '\u{b10}'),
- ('\u{b13}', '\u{b28}'), ('\u{b2a}', '\u{b30}'), ('\u{b32}', '\u{b33}'), ('\u{b35}',
- '\u{b35}'), ('\u{b36}', '\u{b39}'), ('\u{b3c}', '\u{b43}'), ('\u{b47}', '\u{b48}'),
- ('\u{b4b}', '\u{b4d}'), ('\u{b55}', '\u{b55}'), ('\u{b56}', '\u{b57}'), ('\u{b5f}',
- '\u{b61}'), ('\u{b66}', '\u{b6f}'), ('\u{b71}', '\u{b71}'), ('\u{b82}', '\u{b83}'),
- ('\u{b85}', '\u{b8a}'), ('\u{b8e}', '\u{b90}'), ('\u{b92}', '\u{b95}'), ('\u{b99}',
- '\u{b9a}'), ('\u{b9c}', '\u{b9c}'), ('\u{b9e}', '\u{b9f}'), ('\u{ba3}', '\u{ba4}'),
- ('\u{ba8}', '\u{baa}'), ('\u{bae}', '\u{bb5}'), ('\u{bb6}', '\u{bb6}'), ('\u{bb7}',
- '\u{bb9}'), ('\u{bbe}', '\u{bc2}'), ('\u{bc6}', '\u{bc8}'), ('\u{bca}', '\u{bcd}'),
- ('\u{bd0}', '\u{bd0}'), ('\u{bd7}', '\u{bd7}'), ('\u{be6}', '\u{be6}'), ('\u{be7}',
- '\u{bef}'), ('\u{c01}', '\u{c03}'), ('\u{c04}', '\u{c04}'), ('\u{c05}', '\u{c0c}'),
- ('\u{c0e}', '\u{c10}'), ('\u{c12}', '\u{c28}'), ('\u{c2a}', '\u{c33}'), ('\u{c35}',
- '\u{c39}'), ('\u{c3d}', '\u{c3d}'), ('\u{c3e}', '\u{c44}'), ('\u{c46}', '\u{c48}'),
- ('\u{c4a}', '\u{c4d}'), ('\u{c55}', '\u{c56}'), ('\u{c60}', '\u{c61}'), ('\u{c66}',
- '\u{c6f}'), ('\u{c80}', '\u{c80}'), ('\u{c82}', '\u{c83}'), ('\u{c85}', '\u{c8c}'),
- ('\u{c8e}', '\u{c90}'), ('\u{c92}', '\u{ca8}'), ('\u{caa}', '\u{cb3}'), ('\u{cb5}',
- '\u{cb9}'), ('\u{cbc}', '\u{cbd}'), ('\u{cbe}', '\u{cc4}'), ('\u{cc6}', '\u{cc8}'),
- ('\u{cca}', '\u{ccd}'), ('\u{cd5}', '\u{cd6}'), ('\u{ce0}', '\u{ce1}'), ('\u{ce2}',
- '\u{ce3}'), ('\u{ce6}', '\u{cef}'), ('\u{cf1}', '\u{cf2}'), ('\u{d00}', '\u{d00}'),
- ('\u{d02}', '\u{d03}'), ('\u{d05}', '\u{d0c}'), ('\u{d0e}', '\u{d10}'), ('\u{d12}',
- '\u{d28}'), ('\u{d29}', '\u{d29}'), ('\u{d2a}', '\u{d39}'), ('\u{d3a}', '\u{d3a}'),
- ('\u{d3d}', '\u{d3d}'), ('\u{d3e}', '\u{d43}'), ('\u{d46}', '\u{d48}'), ('\u{d4a}',
- '\u{d4d}'), ('\u{d4e}', '\u{d4e}'), ('\u{d54}', '\u{d56}'), ('\u{d57}', '\u{d57}'),
- ('\u{d60}', '\u{d61}'), ('\u{d66}', '\u{d6f}'), ('\u{d7a}', '\u{d7f}'), ('\u{d82}',
- '\u{d83}'), ('\u{d85}', '\u{d8e}'), ('\u{d91}', '\u{d96}'), ('\u{d9a}', '\u{da5}'),
- ('\u{da7}', '\u{db1}'), ('\u{db3}', '\u{dbb}'), ('\u{dbd}', '\u{dbd}'), ('\u{dc0}',
- '\u{dc6}'), ('\u{dca}', '\u{dca}'), ('\u{dcf}', '\u{dd4}'), ('\u{dd6}', '\u{dd6}'),
- ('\u{dd8}', '\u{dde}'), ('\u{df2}', '\u{df2}'), ('\u{e01}', '\u{e32}'), ('\u{e34}',
- '\u{e3a}'), ('\u{e40}', '\u{e4e}'), ('\u{e50}', '\u{e59}'), ('\u{e81}', '\u{e82}'),
- ('\u{e84}', '\u{e84}'), ('\u{e86}', '\u{e86}'), ('\u{e87}', '\u{e88}'), ('\u{e89}',
- '\u{e89}'), ('\u{e8a}', '\u{e8a}'), ('\u{e8c}', '\u{e8c}'), ('\u{e8d}', '\u{e8d}'),
- ('\u{e8e}', '\u{e93}'), ('\u{e94}', '\u{e97}'), ('\u{e98}', '\u{e98}'), ('\u{e99}',
- '\u{e9f}'), ('\u{ea0}', '\u{ea0}'), ('\u{ea1}', '\u{ea3}'), ('\u{ea5}', '\u{ea5}'),
- ('\u{ea7}', '\u{ea7}'), ('\u{ea8}', '\u{ea9}'), ('\u{eaa}', '\u{eab}'), ('\u{eac}',
- '\u{eac}'), ('\u{ead}', '\u{eb2}'), ('\u{eb4}', '\u{eb9}'), ('\u{eba}', '\u{eba}'),
- ('\u{ebb}', '\u{ebd}'), ('\u{ec0}', '\u{ec4}'), ('\u{ec6}', '\u{ec6}'), ('\u{ec8}',
- '\u{ecd}'), ('\u{ed0}', '\u{ed9}'), ('\u{ede}', '\u{edf}'), ('\u{f00}', '\u{f00}'),
- ('\u{f0b}', '\u{f0b}'), ('\u{f20}', '\u{f29}'), ('\u{f35}', '\u{f35}'), ('\u{f37}',
- '\u{f37}'), ('\u{f3e}', '\u{f42}'), ('\u{f44}', '\u{f47}'), ('\u{f49}', '\u{f4c}'),
- ('\u{f4e}', '\u{f51}'), ('\u{f53}', '\u{f56}'), ('\u{f58}', '\u{f5b}'), ('\u{f5d}',
- '\u{f68}'), ('\u{f6a}', '\u{f6a}'), ('\u{f6b}', '\u{f6c}'), ('\u{f71}', '\u{f72}'),
- ('\u{f74}', '\u{f74}'), ('\u{f7a}', '\u{f80}'), ('\u{f82}', '\u{f84}'), ('\u{f86}',
- '\u{f8b}'), ('\u{f8c}', '\u{f8f}'), ('\u{f90}', '\u{f92}'), ('\u{f94}', '\u{f95}'),
- ('\u{f96}', '\u{f96}'), ('\u{f97}', '\u{f97}'), ('\u{f99}', '\u{f9c}'), ('\u{f9e}',
- '\u{fa1}'), ('\u{fa3}', '\u{fa6}'), ('\u{fa8}', '\u{fab}'), ('\u{fad}', '\u{fad}'),
- ('\u{fae}', '\u{fb0}'), ('\u{fb1}', '\u{fb7}'), ('\u{fb8}', '\u{fb8}'), ('\u{fba}',
- '\u{fbc}'), ('\u{fc6}', '\u{fc6}'), ('\u{1000}', '\u{1021}'), ('\u{1022}', '\u{1022}'),
- ('\u{1023}', '\u{1027}'), ('\u{1028}', '\u{1028}'), ('\u{1029}', '\u{102a}'), ('\u{102b}',
- '\u{102b}'), ('\u{102c}', '\u{1032}'), ('\u{1033}', '\u{1035}'), ('\u{1036}', '\u{1039}'),
- ('\u{103a}', '\u{103f}'), ('\u{1040}', '\u{1049}'), ('\u{1050}', '\u{1059}'), ('\u{105a}',
- '\u{1099}'), ('\u{109a}', '\u{109d}'), ('\u{10c7}', '\u{10c7}'), ('\u{10cd}', '\u{10cd}'),
- ('\u{10d0}', '\u{10f0}'), ('\u{10f7}', '\u{10f8}'), ('\u{10f9}', '\u{10fa}'), ('\u{10fd}',
- '\u{10ff}'), ('\u{1200}', '\u{1206}'), ('\u{1207}', '\u{1207}'), ('\u{1208}', '\u{1246}'),
- ('\u{1247}', '\u{1247}'), ('\u{1248}', '\u{1248}'), ('\u{124a}', '\u{124d}'), ('\u{1250}',
- '\u{1256}'), ('\u{1258}', '\u{1258}'), ('\u{125a}', '\u{125d}'), ('\u{1260}', '\u{1286}'),
- ('\u{1287}', '\u{1287}'), ('\u{1288}', '\u{1288}'), ('\u{128a}', '\u{128d}'), ('\u{1290}',
- '\u{12ae}'), ('\u{12af}', '\u{12af}'), ('\u{12b0}', '\u{12b0}'), ('\u{12b2}', '\u{12b5}'),
- ('\u{12b8}', '\u{12be}'), ('\u{12c0}', '\u{12c0}'), ('\u{12c2}', '\u{12c5}'), ('\u{12c8}',
- '\u{12ce}'), ('\u{12cf}', '\u{12cf}'), ('\u{12d0}', '\u{12d6}'), ('\u{12d8}', '\u{12ee}'),
- ('\u{12ef}', '\u{12ef}'), ('\u{12f0}', '\u{130e}'), ('\u{130f}', '\u{130f}'), ('\u{1310}',
- '\u{1310}'), ('\u{1312}', '\u{1315}'), ('\u{1318}', '\u{131e}'), ('\u{131f}', '\u{131f}'),
- ('\u{1320}', '\u{1346}'), ('\u{1347}', '\u{1347}'), ('\u{1348}', '\u{135a}'), ('\u{135d}',
- '\u{135e}'), ('\u{135f}', '\u{135f}'), ('\u{1380}', '\u{138f}'), ('\u{1780}', '\u{17a2}'),
- ('\u{17a5}', '\u{17a7}'), ('\u{17a9}', '\u{17b3}'), ('\u{17b6}', '\u{17ca}'), ('\u{17d2}',
- '\u{17d2}'), ('\u{17d7}', '\u{17d7}'), ('\u{17dc}', '\u{17dc}'), ('\u{17e0}', '\u{17e9}'),
- ('\u{1c90}', '\u{1cba}'), ('\u{1cbd}', '\u{1cbf}'), ('\u{1e00}', '\u{1e99}'), ('\u{1e9e}',
- '\u{1e9e}'), ('\u{1ea0}', '\u{1ef9}'), ('\u{1f00}', '\u{1f15}'), ('\u{1f18}', '\u{1f1d}'),
- ('\u{1f20}', '\u{1f45}'), ('\u{1f48}', '\u{1f4d}'), ('\u{1f50}', '\u{1f57}'), ('\u{1f59}',
- '\u{1f59}'), ('\u{1f5b}', '\u{1f5b}'), ('\u{1f5d}', '\u{1f5d}'), ('\u{1f5f}', '\u{1f70}'),
- ('\u{1f72}', '\u{1f72}'), ('\u{1f74}', '\u{1f74}'), ('\u{1f76}', '\u{1f76}'), ('\u{1f78}',
- '\u{1f78}'), ('\u{1f7a}', '\u{1f7a}'), ('\u{1f7c}', '\u{1f7c}'), ('\u{1f80}', '\u{1fb4}'),
- ('\u{1fb6}', '\u{1fba}'), ('\u{1fbc}', '\u{1fbc}'), ('\u{1fc2}', '\u{1fc4}'), ('\u{1fc6}',
- '\u{1fc8}'), ('\u{1fca}', '\u{1fca}'), ('\u{1fcc}', '\u{1fcc}'), ('\u{1fd0}', '\u{1fd2}'),
- ('\u{1fd6}', '\u{1fda}'), ('\u{1fe0}', '\u{1fe2}'), ('\u{1fe4}', '\u{1fea}'), ('\u{1fec}',
- '\u{1fec}'), ('\u{1ff2}', '\u{1ff4}'), ('\u{1ff6}', '\u{1ff8}'), ('\u{1ffa}', '\u{1ffa}'),
- ('\u{1ffc}', '\u{1ffc}'), ('\u{200c}', '\u{200d}'), ('\u{2010}', '\u{2010}'), ('\u{2019}',
- '\u{2019}'), ('\u{2027}', '\u{2027}'), ('\u{2d27}', '\u{2d27}'), ('\u{2d2d}', '\u{2d2d}'),
- ('\u{2d80}', '\u{2d96}'), ('\u{2da0}', '\u{2da6}'), ('\u{2da8}', '\u{2dae}'), ('\u{2db0}',
- '\u{2db6}'), ('\u{2db8}', '\u{2dbe}'), ('\u{2dc0}', '\u{2dc6}'), ('\u{2dc8}', '\u{2dce}'),
- ('\u{2dd0}', '\u{2dd6}'), ('\u{2dd8}', '\u{2dde}'), ('\u{3005}', '\u{3007}'), ('\u{3041}',
- '\u{3094}'), ('\u{3095}', '\u{3096}'), ('\u{3099}', '\u{309a}'), ('\u{309d}', '\u{309e}'),
- ('\u{30a0}', '\u{30a0}'), ('\u{30a1}', '\u{30fe}'), ('\u{3105}', '\u{312c}'), ('\u{312d}',
- '\u{312d}'), ('\u{312f}', '\u{312f}'), ('\u{31a0}', '\u{31b7}'), ('\u{31b8}', '\u{31ba}'),
- ('\u{31bb}', '\u{31bf}'), ('\u{3400}', '\u{4db5}'), ('\u{4db6}', '\u{4dbf}'), ('\u{4e00}',
- '\u{9fa5}'), ('\u{9fa6}', '\u{9fbb}'), ('\u{9fbc}', '\u{9fc3}'), ('\u{9fc4}', '\u{9fcb}'),
- ('\u{9fcc}', '\u{9fcc}'), ('\u{9fcd}', '\u{9fd5}'), ('\u{9fd6}', '\u{9fea}'), ('\u{9feb}',
- '\u{9fef}'), ('\u{9ff0}', '\u{9ffc}'), ('\u{a67f}', '\u{a67f}'), ('\u{a717}', '\u{a71a}'),
- ('\u{a71b}', '\u{a71f}'), ('\u{a788}', '\u{a788}'), ('\u{a78d}', '\u{a78d}'), ('\u{a792}',
- '\u{a793}'), ('\u{a7aa}', '\u{a7aa}'), ('\u{a7ae}', '\u{a7ae}'), ('\u{a7b8}', '\u{a7b9}'),
- ('\u{a7c2}', '\u{a7c6}'), ('\u{a7c7}', '\u{a7ca}'), ('\u{a9e7}', '\u{a9fe}'), ('\u{aa60}',
- '\u{aa76}'), ('\u{aa7a}', '\u{aa7b}'), ('\u{aa7c}', '\u{aa7f}'), ('\u{ab01}', '\u{ab06}'),
- ('\u{ab09}', '\u{ab0e}'), ('\u{ab11}', '\u{ab16}'), ('\u{ab20}', '\u{ab26}'), ('\u{ab28}',
- '\u{ab2e}'), ('\u{ab66}', '\u{ab67}'), ('\u{ac00}', '\u{d7a3}'), ('\u{fa0e}', '\u{fa0f}'),
- ('\u{fa11}', '\u{fa11}'), ('\u{fa13}', '\u{fa14}'), ('\u{fa1f}', '\u{fa1f}'), ('\u{fa21}',
- '\u{fa21}'), ('\u{fa23}', '\u{fa24}'), ('\u{fa27}', '\u{fa29}'), ('\u{11301}', '\u{11301}'),
- ('\u{11303}', '\u{11303}'), ('\u{1133b}', '\u{1133b}'), ('\u{1133c}', '\u{1133c}'),
- ('\u{16ff0}', '\u{16ff1}'), ('\u{1b150}', '\u{1b152}'), ('\u{1b164}', '\u{1b167}'),
- ('\u{20000}', '\u{2a6d6}'), ('\u{2a6d7}', '\u{2a6dd}'), ('\u{2a700}', '\u{2b734}'),
- ('\u{2b740}', '\u{2b81d}'), ('\u{2b820}', '\u{2cea1}'), ('\u{2ceb0}', '\u{2ebe0}'),
- ('\u{30000}', '\u{3134a}')
+ ('\u{780}', '\u{7b0}'), ('\u{7b1}', '\u{7b1}'), ('\u{870}', '\u{887}'), ('\u{889}',
+ '\u{88e}'), ('\u{8a0}', '\u{8a0}'), ('\u{8a1}', '\u{8a1}'), ('\u{8a2}', '\u{8ac}'),
+ ('\u{8b2}', '\u{8b2}'), ('\u{8b5}', '\u{8b5}'), ('\u{8b6}', '\u{8bd}'), ('\u{8be}',
+ '\u{8c7}'), ('\u{8c8}', '\u{8c9}'), ('\u{901}', '\u{903}'), ('\u{904}', '\u{904}'),
+ ('\u{905}', '\u{939}'), ('\u{93a}', '\u{93b}'), ('\u{93c}', '\u{94d}'), ('\u{94f}',
+ '\u{94f}'), ('\u{950}', '\u{950}'), ('\u{956}', '\u{957}'), ('\u{960}', '\u{963}'),
+ ('\u{966}', '\u{96f}'), ('\u{971}', '\u{972}'), ('\u{973}', '\u{977}'), ('\u{979}',
+ '\u{97a}'), ('\u{97b}', '\u{97c}'), ('\u{97d}', '\u{97d}'), ('\u{97e}', '\u{97f}'),
+ ('\u{981}', '\u{983}'), ('\u{985}', '\u{98c}'), ('\u{98f}', '\u{990}'), ('\u{993}',
+ '\u{9a8}'), ('\u{9aa}', '\u{9b0}'), ('\u{9b2}', '\u{9b2}'), ('\u{9b6}', '\u{9b9}'),
+ ('\u{9bc}', '\u{9bc}'), ('\u{9bd}', '\u{9bd}'), ('\u{9be}', '\u{9c4}'), ('\u{9c7}',
+ '\u{9c8}'), ('\u{9cb}', '\u{9cd}'), ('\u{9ce}', '\u{9ce}'), ('\u{9d7}', '\u{9d7}'),
+ ('\u{9e0}', '\u{9e3}'), ('\u{9e6}', '\u{9f1}'), ('\u{9fe}', '\u{9fe}'), ('\u{a01}',
+ '\u{a01}'), ('\u{a02}', '\u{a02}'), ('\u{a03}', '\u{a03}'), ('\u{a05}', '\u{a0a}'),
+ ('\u{a0f}', '\u{a10}'), ('\u{a13}', '\u{a28}'), ('\u{a2a}', '\u{a30}'), ('\u{a32}',
+ '\u{a32}'), ('\u{a35}', '\u{a35}'), ('\u{a38}', '\u{a39}'), ('\u{a3c}', '\u{a3c}'),
+ ('\u{a3e}', '\u{a42}'), ('\u{a47}', '\u{a48}'), ('\u{a4b}', '\u{a4d}'), ('\u{a5c}',
+ '\u{a5c}'), ('\u{a66}', '\u{a74}'), ('\u{a81}', '\u{a83}'), ('\u{a85}', '\u{a8b}'),
+ ('\u{a8c}', '\u{a8c}'), ('\u{a8d}', '\u{a8d}'), ('\u{a8f}', '\u{a91}'), ('\u{a93}',
+ '\u{aa8}'), ('\u{aaa}', '\u{ab0}'), ('\u{ab2}', '\u{ab3}'), ('\u{ab5}', '\u{ab9}'),
+ ('\u{abc}', '\u{ac5}'), ('\u{ac7}', '\u{ac9}'), ('\u{acb}', '\u{acd}'), ('\u{ad0}',
+ '\u{ad0}'), ('\u{ae0}', '\u{ae0}'), ('\u{ae1}', '\u{ae3}'), ('\u{ae6}', '\u{aef}'),
+ ('\u{afa}', '\u{aff}'), ('\u{b01}', '\u{b03}'), ('\u{b05}', '\u{b0c}'), ('\u{b0f}',
+ '\u{b10}'), ('\u{b13}', '\u{b28}'), ('\u{b2a}', '\u{b30}'), ('\u{b32}', '\u{b33}'),
+ ('\u{b35}', '\u{b35}'), ('\u{b36}', '\u{b39}'), ('\u{b3c}', '\u{b43}'), ('\u{b47}',
+ '\u{b48}'), ('\u{b4b}', '\u{b4d}'), ('\u{b55}', '\u{b55}'), ('\u{b56}', '\u{b57}'),
+ ('\u{b5f}', '\u{b61}'), ('\u{b66}', '\u{b6f}'), ('\u{b71}', '\u{b71}'), ('\u{b82}',
+ '\u{b83}'), ('\u{b85}', '\u{b8a}'), ('\u{b8e}', '\u{b90}'), ('\u{b92}', '\u{b95}'),
+ ('\u{b99}', '\u{b9a}'), ('\u{b9c}', '\u{b9c}'), ('\u{b9e}', '\u{b9f}'), ('\u{ba3}',
+ '\u{ba4}'), ('\u{ba8}', '\u{baa}'), ('\u{bae}', '\u{bb5}'), ('\u{bb6}', '\u{bb6}'),
+ ('\u{bb7}', '\u{bb9}'), ('\u{bbe}', '\u{bc2}'), ('\u{bc6}', '\u{bc8}'), ('\u{bca}',
+ '\u{bcd}'), ('\u{bd0}', '\u{bd0}'), ('\u{bd7}', '\u{bd7}'), ('\u{be6}', '\u{be6}'),
+ ('\u{be7}', '\u{bef}'), ('\u{c01}', '\u{c03}'), ('\u{c04}', '\u{c04}'), ('\u{c05}',
+ '\u{c0c}'), ('\u{c0e}', '\u{c10}'), ('\u{c12}', '\u{c28}'), ('\u{c2a}', '\u{c33}'),
+ ('\u{c35}', '\u{c39}'), ('\u{c3c}', '\u{c3c}'), ('\u{c3d}', '\u{c3d}'), ('\u{c3e}',
+ '\u{c44}'), ('\u{c46}', '\u{c48}'), ('\u{c4a}', '\u{c4d}'), ('\u{c55}', '\u{c56}'),
+ ('\u{c5d}', '\u{c5d}'), ('\u{c60}', '\u{c61}'), ('\u{c66}', '\u{c6f}'), ('\u{c80}',
+ '\u{c80}'), ('\u{c82}', '\u{c83}'), ('\u{c85}', '\u{c8c}'), ('\u{c8e}', '\u{c90}'),
+ ('\u{c92}', '\u{ca8}'), ('\u{caa}', '\u{cb3}'), ('\u{cb5}', '\u{cb9}'), ('\u{cbc}',
+ '\u{cbd}'), ('\u{cbe}', '\u{cc4}'), ('\u{cc6}', '\u{cc8}'), ('\u{cca}', '\u{ccd}'),
+ ('\u{cd5}', '\u{cd6}'), ('\u{cdd}', '\u{cdd}'), ('\u{ce0}', '\u{ce1}'), ('\u{ce2}',
+ '\u{ce3}'), ('\u{ce6}', '\u{cef}'), ('\u{cf1}', '\u{cf2}'), ('\u{cf3}', '\u{cf3}'),
+ ('\u{d00}', '\u{d00}'), ('\u{d02}', '\u{d03}'), ('\u{d05}', '\u{d0c}'), ('\u{d0e}',
+ '\u{d10}'), ('\u{d12}', '\u{d28}'), ('\u{d29}', '\u{d29}'), ('\u{d2a}', '\u{d39}'),
+ ('\u{d3a}', '\u{d3a}'), ('\u{d3d}', '\u{d3d}'), ('\u{d3e}', '\u{d43}'), ('\u{d46}',
+ '\u{d48}'), ('\u{d4a}', '\u{d4d}'), ('\u{d4e}', '\u{d4e}'), ('\u{d54}', '\u{d56}'),
+ ('\u{d57}', '\u{d57}'), ('\u{d60}', '\u{d61}'), ('\u{d66}', '\u{d6f}'), ('\u{d7a}',
+ '\u{d7f}'), ('\u{d82}', '\u{d83}'), ('\u{d85}', '\u{d8e}'), ('\u{d91}', '\u{d96}'),
+ ('\u{d9a}', '\u{da5}'), ('\u{da7}', '\u{db1}'), ('\u{db3}', '\u{dbb}'), ('\u{dbd}',
+ '\u{dbd}'), ('\u{dc0}', '\u{dc6}'), ('\u{dca}', '\u{dca}'), ('\u{dcf}', '\u{dd4}'),
+ ('\u{dd6}', '\u{dd6}'), ('\u{dd8}', '\u{dde}'), ('\u{df2}', '\u{df2}'), ('\u{e01}',
+ '\u{e32}'), ('\u{e34}', '\u{e3a}'), ('\u{e40}', '\u{e4e}'), ('\u{e50}', '\u{e59}'),
+ ('\u{e81}', '\u{e82}'), ('\u{e84}', '\u{e84}'), ('\u{e86}', '\u{e86}'), ('\u{e87}',
+ '\u{e88}'), ('\u{e89}', '\u{e89}'), ('\u{e8a}', '\u{e8a}'), ('\u{e8c}', '\u{e8c}'),
+ ('\u{e8d}', '\u{e8d}'), ('\u{e8e}', '\u{e93}'), ('\u{e94}', '\u{e97}'), ('\u{e98}',
+ '\u{e98}'), ('\u{e99}', '\u{e9f}'), ('\u{ea0}', '\u{ea0}'), ('\u{ea1}', '\u{ea3}'),
+ ('\u{ea5}', '\u{ea5}'), ('\u{ea7}', '\u{ea7}'), ('\u{ea8}', '\u{ea9}'), ('\u{eaa}',
+ '\u{eab}'), ('\u{eac}', '\u{eac}'), ('\u{ead}', '\u{eb2}'), ('\u{eb4}', '\u{eb9}'),
+ ('\u{eba}', '\u{eba}'), ('\u{ebb}', '\u{ebd}'), ('\u{ec0}', '\u{ec4}'), ('\u{ec6}',
+ '\u{ec6}'), ('\u{ec8}', '\u{ecd}'), ('\u{ece}', '\u{ece}'), ('\u{ed0}', '\u{ed9}'),
+ ('\u{ede}', '\u{edf}'), ('\u{f00}', '\u{f00}'), ('\u{f0b}', '\u{f0b}'), ('\u{f20}',
+ '\u{f29}'), ('\u{f35}', '\u{f35}'), ('\u{f37}', '\u{f37}'), ('\u{f3e}', '\u{f42}'),
+ ('\u{f44}', '\u{f47}'), ('\u{f49}', '\u{f4c}'), ('\u{f4e}', '\u{f51}'), ('\u{f53}',
+ '\u{f56}'), ('\u{f58}', '\u{f5b}'), ('\u{f5d}', '\u{f68}'), ('\u{f6a}', '\u{f6a}'),
+ ('\u{f6b}', '\u{f6c}'), ('\u{f71}', '\u{f72}'), ('\u{f74}', '\u{f74}'), ('\u{f7a}',
+ '\u{f80}'), ('\u{f82}', '\u{f84}'), ('\u{f86}', '\u{f8b}'), ('\u{f8c}', '\u{f8f}'),
+ ('\u{f90}', '\u{f92}'), ('\u{f94}', '\u{f95}'), ('\u{f96}', '\u{f96}'), ('\u{f97}',
+ '\u{f97}'), ('\u{f99}', '\u{f9c}'), ('\u{f9e}', '\u{fa1}'), ('\u{fa3}', '\u{fa6}'),
+ ('\u{fa8}', '\u{fab}'), ('\u{fad}', '\u{fad}'), ('\u{fae}', '\u{fb0}'), ('\u{fb1}',
+ '\u{fb7}'), ('\u{fb8}', '\u{fb8}'), ('\u{fba}', '\u{fbc}'), ('\u{fc6}', '\u{fc6}'),
+ ('\u{1000}', '\u{1021}'), ('\u{1022}', '\u{1022}'), ('\u{1023}', '\u{1027}'), ('\u{1028}',
+ '\u{1028}'), ('\u{1029}', '\u{102a}'), ('\u{102b}', '\u{102b}'), ('\u{102c}', '\u{1032}'),
+ ('\u{1033}', '\u{1035}'), ('\u{1036}', '\u{1039}'), ('\u{103a}', '\u{103f}'), ('\u{1040}',
+ '\u{1049}'), ('\u{1050}', '\u{1059}'), ('\u{105a}', '\u{1099}'), ('\u{109a}', '\u{109d}'),
+ ('\u{10c7}', '\u{10c7}'), ('\u{10cd}', '\u{10cd}'), ('\u{10d0}', '\u{10f0}'), ('\u{10f7}',
+ '\u{10f8}'), ('\u{10f9}', '\u{10fa}'), ('\u{10fd}', '\u{10ff}'), ('\u{1200}', '\u{1206}'),
+ ('\u{1207}', '\u{1207}'), ('\u{1208}', '\u{1246}'), ('\u{1247}', '\u{1247}'), ('\u{1248}',
+ '\u{1248}'), ('\u{124a}', '\u{124d}'), ('\u{1250}', '\u{1256}'), ('\u{1258}', '\u{1258}'),
+ ('\u{125a}', '\u{125d}'), ('\u{1260}', '\u{1286}'), ('\u{1287}', '\u{1287}'), ('\u{1288}',
+ '\u{1288}'), ('\u{128a}', '\u{128d}'), ('\u{1290}', '\u{12ae}'), ('\u{12af}', '\u{12af}'),
+ ('\u{12b0}', '\u{12b0}'), ('\u{12b2}', '\u{12b5}'), ('\u{12b8}', '\u{12be}'), ('\u{12c0}',
+ '\u{12c0}'), ('\u{12c2}', '\u{12c5}'), ('\u{12c8}', '\u{12ce}'), ('\u{12cf}', '\u{12cf}'),
+ ('\u{12d0}', '\u{12d6}'), ('\u{12d8}', '\u{12ee}'), ('\u{12ef}', '\u{12ef}'), ('\u{12f0}',
+ '\u{130e}'), ('\u{130f}', '\u{130f}'), ('\u{1310}', '\u{1310}'), ('\u{1312}', '\u{1315}'),
+ ('\u{1318}', '\u{131e}'), ('\u{131f}', '\u{131f}'), ('\u{1320}', '\u{1346}'), ('\u{1347}',
+ '\u{1347}'), ('\u{1348}', '\u{135a}'), ('\u{135d}', '\u{135e}'), ('\u{135f}', '\u{135f}'),
+ ('\u{1380}', '\u{138f}'), ('\u{1780}', '\u{17a2}'), ('\u{17a5}', '\u{17a7}'), ('\u{17a9}',
+ '\u{17b3}'), ('\u{17b6}', '\u{17cd}'), ('\u{17d0}', '\u{17d0}'), ('\u{17d2}', '\u{17d2}'),
+ ('\u{17d7}', '\u{17d7}'), ('\u{17dc}', '\u{17dc}'), ('\u{17e0}', '\u{17e9}'), ('\u{1c90}',
+ '\u{1cba}'), ('\u{1cbd}', '\u{1cbf}'), ('\u{1e00}', '\u{1e99}'), ('\u{1e9e}', '\u{1e9e}'),
+ ('\u{1ea0}', '\u{1ef9}'), ('\u{1f00}', '\u{1f15}'), ('\u{1f18}', '\u{1f1d}'), ('\u{1f20}',
+ '\u{1f45}'), ('\u{1f48}', '\u{1f4d}'), ('\u{1f50}', '\u{1f57}'), ('\u{1f59}', '\u{1f59}'),
+ ('\u{1f5b}', '\u{1f5b}'), ('\u{1f5d}', '\u{1f5d}'), ('\u{1f5f}', '\u{1f70}'), ('\u{1f72}',
+ '\u{1f72}'), ('\u{1f74}', '\u{1f74}'), ('\u{1f76}', '\u{1f76}'), ('\u{1f78}', '\u{1f78}'),
+ ('\u{1f7a}', '\u{1f7a}'), ('\u{1f7c}', '\u{1f7c}'), ('\u{1f80}', '\u{1fb4}'), ('\u{1fb6}',
+ '\u{1fba}'), ('\u{1fbc}', '\u{1fbc}'), ('\u{1fc2}', '\u{1fc4}'), ('\u{1fc6}', '\u{1fc8}'),
+ ('\u{1fca}', '\u{1fca}'), ('\u{1fcc}', '\u{1fcc}'), ('\u{1fd0}', '\u{1fd2}'), ('\u{1fd6}',
+ '\u{1fda}'), ('\u{1fe0}', '\u{1fe2}'), ('\u{1fe4}', '\u{1fea}'), ('\u{1fec}', '\u{1fec}'),
+ ('\u{1ff2}', '\u{1ff4}'), ('\u{1ff6}', '\u{1ff8}'), ('\u{1ffa}', '\u{1ffa}'), ('\u{1ffc}',
+ '\u{1ffc}'), ('\u{2010}', '\u{2010}'), ('\u{2019}', '\u{2019}'), ('\u{2027}', '\u{2027}'),
+ ('\u{2d27}', '\u{2d27}'), ('\u{2d2d}', '\u{2d2d}'), ('\u{2d80}', '\u{2d96}'), ('\u{2da0}',
+ '\u{2da6}'), ('\u{2da8}', '\u{2dae}'), ('\u{2db0}', '\u{2db6}'), ('\u{2db8}', '\u{2dbe}'),
+ ('\u{2dc0}', '\u{2dc6}'), ('\u{2dc8}', '\u{2dce}'), ('\u{2dd0}', '\u{2dd6}'), ('\u{2dd8}',
+ '\u{2dde}'), ('\u{3005}', '\u{3007}'), ('\u{3041}', '\u{3094}'), ('\u{3095}', '\u{3096}'),
+ ('\u{3099}', '\u{309a}'), ('\u{309d}', '\u{309e}'), ('\u{30a0}', '\u{30a0}'), ('\u{30a1}',
+ '\u{30fe}'), ('\u{3105}', '\u{312c}'), ('\u{312d}', '\u{312d}'), ('\u{312f}', '\u{312f}'),
+ ('\u{31a0}', '\u{31b7}'), ('\u{31b8}', '\u{31ba}'), ('\u{31bb}', '\u{31bf}'), ('\u{3400}',
+ '\u{4db5}'), ('\u{4db6}', '\u{4dbf}'), ('\u{4e00}', '\u{9fa5}'), ('\u{9fa6}', '\u{9fbb}'),
+ ('\u{9fbc}', '\u{9fc3}'), ('\u{9fc4}', '\u{9fcb}'), ('\u{9fcc}', '\u{9fcc}'), ('\u{9fcd}',
+ '\u{9fd5}'), ('\u{9fd6}', '\u{9fea}'), ('\u{9feb}', '\u{9fef}'), ('\u{9ff0}', '\u{9ffc}'),
+ ('\u{9ffd}', '\u{9fff}'), ('\u{a67f}', '\u{a67f}'), ('\u{a717}', '\u{a71a}'), ('\u{a71b}',
+ '\u{a71f}'), ('\u{a788}', '\u{a788}'), ('\u{a78d}', '\u{a78d}'), ('\u{a792}', '\u{a793}'),
+ ('\u{a7aa}', '\u{a7aa}'), ('\u{a7c0}', '\u{a7c1}'), ('\u{a7c2}', '\u{a7c6}'), ('\u{a7c7}',
+ '\u{a7ca}'), ('\u{a7d0}', '\u{a7d1}'), ('\u{a7d3}', '\u{a7d3}'), ('\u{a7d5}', '\u{a7d9}'),
+ ('\u{a9e7}', '\u{a9fe}'), ('\u{aa60}', '\u{aa76}'), ('\u{aa7a}', '\u{aa7b}'), ('\u{aa7c}',
+ '\u{aa7f}'), ('\u{ab01}', '\u{ab06}'), ('\u{ab09}', '\u{ab0e}'), ('\u{ab11}', '\u{ab16}'),
+ ('\u{ab20}', '\u{ab26}'), ('\u{ab28}', '\u{ab2e}'), ('\u{ab66}', '\u{ab67}'), ('\u{ac00}',
+ '\u{d7a3}'), ('\u{fa0e}', '\u{fa0f}'), ('\u{fa11}', '\u{fa11}'), ('\u{fa13}', '\u{fa14}'),
+ ('\u{fa1f}', '\u{fa1f}'), ('\u{fa21}', '\u{fa21}'), ('\u{fa23}', '\u{fa24}'), ('\u{fa27}',
+ '\u{fa29}'), ('\u{11301}', '\u{11301}'), ('\u{11303}', '\u{11303}'), ('\u{1133b}',
+ '\u{1133b}'), ('\u{1133c}', '\u{1133c}'), ('\u{16ff0}', '\u{16ff1}'), ('\u{1b11f}',
+ '\u{1b122}'), ('\u{1b132}', '\u{1b132}'), ('\u{1b150}', '\u{1b152}'), ('\u{1b155}',
+ '\u{1b155}'), ('\u{1b164}', '\u{1b167}'), ('\u{1df00}', '\u{1df1e}'), ('\u{1df25}',
+ '\u{1df2a}'), ('\u{1e08f}', '\u{1e08f}'), ('\u{1e7e0}', '\u{1e7e6}'), ('\u{1e7e8}',
+ '\u{1e7eb}'), ('\u{1e7ed}', '\u{1e7ee}'), ('\u{1e7f0}', '\u{1e7fe}'), ('\u{20000}',
+ '\u{2a6d6}'), ('\u{2a6d7}', '\u{2a6dd}'), ('\u{2a6de}', '\u{2a6df}'), ('\u{2a700}',
+ '\u{2b734}'), ('\u{2b735}', '\u{2b738}'), ('\u{2b739}', '\u{2b739}'), ('\u{2b740}',
+ '\u{2b81d}'), ('\u{2b820}', '\u{2cea1}'), ('\u{2ceb0}', '\u{2ebe0}'), ('\u{30000}',
+ '\u{3134a}'), ('\u{31350}', '\u{323af}')
];
const IDENTIFIER_TYPE: &'static [(char, char, IdentifierType)] = &[
@@ -438,160 +446,167 @@ pub mod identifier {
IdentifierType::Not_XID), ('\u{60d}', '\u{60f}', IdentifierType::Not_XID), ('\u{610}',
'\u{615}', IdentifierType::Uncommon_Use), ('\u{616}', '\u{61a}',
IdentifierType::Uncommon_Use), ('\u{61b}', '\u{61b}', IdentifierType::Not_XID),
- ('\u{61c}', '\u{61c}', IdentifierType::Default_Ignorable), ('\u{61e}', '\u{61e}',
- IdentifierType::Not_XID), ('\u{61f}', '\u{61f}', IdentifierType::Not_XID), ('\u{620}',
- '\u{620}', IdentifierType::Recommended), ('\u{621}', '\u{63a}',
- IdentifierType::Recommended), ('\u{63b}', '\u{63f}', IdentifierType::Recommended),
- ('\u{640}', '\u{640}', IdentifierType::Obsolete), ('\u{641}', '\u{652}',
- IdentifierType::Recommended), ('\u{653}', '\u{655}', IdentifierType::Recommended),
- ('\u{656}', '\u{658}', IdentifierType::Uncommon_Use), ('\u{659}', '\u{65e}',
- IdentifierType::Uncommon_Use), ('\u{65f}', '\u{65f}', IdentifierType::Uncommon_Use),
- ('\u{660}', '\u{669}', IdentifierType::Recommended), ('\u{66a}', '\u{66d}',
- IdentifierType::Not_XID), ('\u{66e}', '\u{66f}', IdentifierType::Obsolete), ('\u{670}',
- '\u{672}', IdentifierType::Recommended), ('\u{673}', '\u{673}',
- IdentifierType::Deprecated), ('\u{674}', '\u{674}', IdentifierType::Recommended),
- ('\u{675}', '\u{678}', IdentifierType::Not_NFKC), ('\u{679}', '\u{68d}',
- IdentifierType::Recommended), ('\u{68e}', '\u{68e}', IdentifierType::Obsolete),
- ('\u{68f}', '\u{6a0}', IdentifierType::Recommended), ('\u{6a1}', '\u{6a1}',
- IdentifierType::Obsolete), ('\u{6a2}', '\u{6b7}', IdentifierType::Recommended),
- ('\u{6b8}', '\u{6b9}', IdentifierType::Recommended), ('\u{6ba}', '\u{6be}',
- IdentifierType::Recommended), ('\u{6bf}', '\u{6bf}', IdentifierType::Recommended),
- ('\u{6c0}', '\u{6ce}', IdentifierType::Recommended), ('\u{6cf}', '\u{6cf}',
- IdentifierType::Recommended), ('\u{6d0}', '\u{6d3}', IdentifierType::Recommended),
- ('\u{6d4}', '\u{6d4}', IdentifierType::Not_XID), ('\u{6d5}', '\u{6d5}',
- IdentifierType::Recommended), ('\u{6d6}', '\u{6dc}', IdentifierType::Uncommon_Use),
- ('\u{6dd}', '\u{6dd}', IdentifierType::Not_XID), ('\u{6de}', '\u{6de}',
- IdentifierType::Not_XID), ('\u{6df}', '\u{6e4}', IdentifierType::Uncommon_Use),
- ('\u{6e5}', '\u{6e6}', IdentifierType::Recommended), ('\u{6e7}', '\u{6e8}',
- IdentifierType::Uncommon_Use), ('\u{6e9}', '\u{6e9}', IdentifierType::Not_XID),
- ('\u{6ea}', '\u{6ed}', IdentifierType::Uncommon_Use), ('\u{6ee}', '\u{6ef}',
- IdentifierType::Recommended), ('\u{6f0}', '\u{6f9}', IdentifierType::Recommended),
- ('\u{6fa}', '\u{6fc}', IdentifierType::Recommended), ('\u{6fd}', '\u{6fe}',
- IdentifierType::Inclusion), ('\u{6ff}', '\u{6ff}', IdentifierType::Recommended),
- ('\u{700}', '\u{70d}', IdentifierType::Limited_Use), ('\u{70f}', '\u{70f}',
- IdentifierType::Limited_Use), ('\u{710}', '\u{72c}', IdentifierType::Limited_Use),
- ('\u{72d}', '\u{72f}', IdentifierType::Limited_Use), ('\u{730}', '\u{73f}',
- IdentifierType::Limited_Use), ('\u{740}', '\u{74a}', IdentifierType::Limited_Use),
- ('\u{74d}', '\u{74f}', IdentifierType::Limited_Use), ('\u{750}', '\u{76d}',
- IdentifierType::Recommended), ('\u{76e}', '\u{77f}', IdentifierType::Recommended),
- ('\u{780}', '\u{7b0}', IdentifierType::Recommended), ('\u{7b1}', '\u{7b1}',
- IdentifierType::Recommended), ('\u{7c0}', '\u{7e7}', IdentifierType::Limited_Use),
- ('\u{7e8}', '\u{7ea}', IdentifierType::Limited_Use), ('\u{7eb}', '\u{7f5}',
- IdentifierType::Limited_Use), ('\u{7f6}', '\u{7f9}', IdentifierType::Limited_Use),
- ('\u{7fa}', '\u{7fa}', IdentifierType::Limited_Use), ('\u{7fd}', '\u{7fd}',
- IdentifierType::Limited_Use), ('\u{7fe}', '\u{7ff}', IdentifierType::Limited_Use),
- ('\u{800}', '\u{82d}', IdentifierType::Exclusion), ('\u{830}', '\u{83e}',
- IdentifierType::Exclusion), ('\u{840}', '\u{85b}', IdentifierType::Limited_Use),
- ('\u{85e}', '\u{85e}', IdentifierType::Limited_Use), ('\u{860}', '\u{86a}',
- IdentifierType::Limited_Use), ('\u{8a0}', '\u{8a0}', IdentifierType::Recommended),
- ('\u{8a1}', '\u{8a1}', IdentifierType::Recommended), ('\u{8a2}', '\u{8ac}',
- IdentifierType::Recommended), ('\u{8ad}', '\u{8b1}', IdentifierType::Obsolete),
- ('\u{8b2}', '\u{8b2}', IdentifierType::Recommended), ('\u{8b3}', '\u{8b4}',
- IdentifierType::Uncommon_Use), ('\u{8b6}', '\u{8bd}', IdentifierType::Recommended),
- ('\u{8be}', '\u{8c7}', IdentifierType::Recommended), ('\u{8d3}', '\u{8d3}',
- IdentifierType::Uncommon_Use), ('\u{8d4}', '\u{8e1}', IdentifierType::Uncommon_Use),
- ('\u{8e2}', '\u{8e2}', IdentifierType::Not_XID), ('\u{8e3}', '\u{8e3}',
- IdentifierType::Uncommon_Use), ('\u{8e4}', '\u{8fe}', IdentifierType::Uncommon_Use),
- ('\u{8ff}', '\u{8ff}', IdentifierType::Uncommon_Use), ('\u{900}', '\u{900}',
- IdentifierType::Uncommon_Use), ('\u{901}', '\u{903}', IdentifierType::Recommended),
- ('\u{904}', '\u{904}', IdentifierType::Recommended), ('\u{905}', '\u{939}',
- IdentifierType::Recommended), ('\u{93a}', '\u{93b}', IdentifierType::Recommended),
- ('\u{93c}', '\u{94d}', IdentifierType::Recommended), ('\u{94e}', '\u{94e}',
- IdentifierType::Obsolete), ('\u{94f}', '\u{94f}', IdentifierType::Recommended),
- ('\u{950}', '\u{950}', IdentifierType::Recommended), ('\u{951}', '\u{952}',
- IdentifierType::Obsolete), ('\u{953}', '\u{954}', IdentifierType::Technical), ('\u{955}',
- '\u{955}', IdentifierType::Uncommon_Use), ('\u{956}', '\u{957}',
- IdentifierType::Recommended), ('\u{958}', '\u{95f}', IdentifierType::Not_NFKC),
- ('\u{960}', '\u{963}', IdentifierType::Recommended), ('\u{964}', '\u{965}',
- IdentifierType::Not_XID), ('\u{966}', '\u{96f}', IdentifierType::Recommended), ('\u{970}',
- '\u{970}', IdentifierType::Not_XID), ('\u{971}', '\u{972}', IdentifierType::Recommended),
- ('\u{973}', '\u{977}', IdentifierType::Recommended), ('\u{978}', '\u{978}',
- IdentifierType::Obsolete), ('\u{979}', '\u{97a}', IdentifierType::Recommended),
- ('\u{97b}', '\u{97c}', IdentifierType::Recommended), ('\u{97d}', '\u{97d}',
- IdentifierType::Recommended), ('\u{97e}', '\u{97f}', IdentifierType::Recommended),
- ('\u{980}', '\u{980}', IdentifierType::Obsolete), ('\u{981}', '\u{983}',
- IdentifierType::Recommended), ('\u{985}', '\u{98c}', IdentifierType::Recommended),
- ('\u{98f}', '\u{990}', IdentifierType::Recommended), ('\u{993}', '\u{9a8}',
- IdentifierType::Recommended), ('\u{9aa}', '\u{9b0}', IdentifierType::Recommended),
- ('\u{9b2}', '\u{9b2}', IdentifierType::Recommended), ('\u{9b6}', '\u{9b9}',
- IdentifierType::Recommended), ('\u{9bc}', '\u{9bc}', IdentifierType::Recommended),
- ('\u{9bd}', '\u{9bd}', IdentifierType::Recommended), ('\u{9be}', '\u{9c4}',
- IdentifierType::Recommended), ('\u{9c7}', '\u{9c8}', IdentifierType::Recommended),
- ('\u{9cb}', '\u{9cd}', IdentifierType::Recommended), ('\u{9ce}', '\u{9ce}',
- IdentifierType::Recommended), ('\u{9d7}', '\u{9d7}', IdentifierType::Recommended),
- ('\u{9dc}', '\u{9dd}', IdentifierType::Not_NFKC), ('\u{9df}', '\u{9df}',
- IdentifierType::Not_NFKC), ('\u{9e0}', '\u{9e3}', IdentifierType::Recommended),
- ('\u{9e6}', '\u{9f1}', IdentifierType::Recommended), ('\u{9f2}', '\u{9fa}',
- IdentifierType::Not_XID), ('\u{9fb}', '\u{9fb}', IdentifierType::Not_XID), ('\u{9fc}',
- '\u{9fc}', IdentifierType::Obsolete), ('\u{9fd}', '\u{9fd}', IdentifierType::Not_XID),
- ('\u{9fe}', '\u{9fe}', IdentifierType::Recommended), ('\u{a01}', '\u{a01}',
- IdentifierType::Recommended), ('\u{a02}', '\u{a02}', IdentifierType::Recommended),
- ('\u{a03}', '\u{a03}', IdentifierType::Recommended), ('\u{a05}', '\u{a0a}',
- IdentifierType::Recommended), ('\u{a0f}', '\u{a10}', IdentifierType::Recommended),
- ('\u{a13}', '\u{a28}', IdentifierType::Recommended), ('\u{a2a}', '\u{a30}',
- IdentifierType::Recommended), ('\u{a32}', '\u{a32}', IdentifierType::Recommended),
- ('\u{a33}', '\u{a33}', IdentifierType::Not_NFKC), ('\u{a35}', '\u{a35}',
- IdentifierType::Recommended), ('\u{a36}', '\u{a36}', IdentifierType::Not_NFKC),
- ('\u{a38}', '\u{a39}', IdentifierType::Recommended), ('\u{a3c}', '\u{a3c}',
- IdentifierType::Recommended), ('\u{a3e}', '\u{a42}', IdentifierType::Recommended),
- ('\u{a47}', '\u{a48}', IdentifierType::Recommended), ('\u{a4b}', '\u{a4d}',
- IdentifierType::Recommended), ('\u{a51}', '\u{a51}', IdentifierType::Uncommon_Use),
- ('\u{a59}', '\u{a5b}', IdentifierType::Not_NFKC), ('\u{a5c}', '\u{a5c}',
- IdentifierType::Recommended), ('\u{a5e}', '\u{a5e}', IdentifierType::Not_NFKC),
- ('\u{a66}', '\u{a74}', IdentifierType::Recommended), ('\u{a75}', '\u{a75}',
- IdentifierType::Uncommon_Use), ('\u{a76}', '\u{a76}', IdentifierType::Not_XID),
- ('\u{a81}', '\u{a83}', IdentifierType::Recommended), ('\u{a85}', '\u{a8b}',
- IdentifierType::Recommended), ('\u{a8c}', '\u{a8c}', IdentifierType::Recommended),
- ('\u{a8d}', '\u{a8d}', IdentifierType::Recommended), ('\u{a8f}', '\u{a91}',
- IdentifierType::Recommended), ('\u{a93}', '\u{aa8}', IdentifierType::Recommended),
- ('\u{aaa}', '\u{ab0}', IdentifierType::Recommended), ('\u{ab2}', '\u{ab3}',
- IdentifierType::Recommended), ('\u{ab5}', '\u{ab9}', IdentifierType::Recommended),
- ('\u{abc}', '\u{ac5}', IdentifierType::Recommended), ('\u{ac7}', '\u{ac9}',
- IdentifierType::Recommended), ('\u{acb}', '\u{acd}', IdentifierType::Recommended),
- ('\u{ad0}', '\u{ad0}', IdentifierType::Recommended), ('\u{ae0}', '\u{ae0}',
- IdentifierType::Recommended), ('\u{ae1}', '\u{ae3}', IdentifierType::Recommended),
- ('\u{ae6}', '\u{aef}', IdentifierType::Recommended), ('\u{af0}', '\u{af0}',
- IdentifierType::Not_XID), ('\u{af1}', '\u{af1}', IdentifierType::Not_XID), ('\u{af9}',
- '\u{af9}', IdentifierType::Uncommon_Use), ('\u{afa}', '\u{aff}',
- IdentifierType::Recommended), ('\u{b01}', '\u{b03}', IdentifierType::Recommended),
- ('\u{b05}', '\u{b0c}', IdentifierType::Recommended), ('\u{b0f}', '\u{b10}',
- IdentifierType::Recommended), ('\u{b13}', '\u{b28}', IdentifierType::Recommended),
- ('\u{b2a}', '\u{b30}', IdentifierType::Recommended), ('\u{b32}', '\u{b33}',
- IdentifierType::Recommended), ('\u{b35}', '\u{b35}', IdentifierType::Recommended),
- ('\u{b36}', '\u{b39}', IdentifierType::Recommended), ('\u{b3c}', '\u{b43}',
- IdentifierType::Recommended), ('\u{b44}', '\u{b44}', IdentifierType::Uncommon_Use),
- ('\u{b47}', '\u{b48}', IdentifierType::Recommended), ('\u{b4b}', '\u{b4d}',
- IdentifierType::Recommended), ('\u{b55}', '\u{b55}', IdentifierType::Recommended),
- ('\u{b56}', '\u{b57}', IdentifierType::Recommended), ('\u{b5c}', '\u{b5d}',
- IdentifierType::Not_NFKC), ('\u{b5f}', '\u{b61}', IdentifierType::Recommended),
- ('\u{b62}', '\u{b63}', IdentifierType::Uncommon_Use), ('\u{b66}', '\u{b6f}',
- IdentifierType::Recommended), ('\u{b70}', '\u{b70}', IdentifierType::Not_XID), ('\u{b71}',
- '\u{b71}', IdentifierType::Recommended), ('\u{b72}', '\u{b77}', IdentifierType::Not_XID),
- ('\u{b82}', '\u{b83}', IdentifierType::Recommended), ('\u{b85}', '\u{b8a}',
- IdentifierType::Recommended), ('\u{b8e}', '\u{b90}', IdentifierType::Recommended),
- ('\u{b92}', '\u{b95}', IdentifierType::Recommended), ('\u{b99}', '\u{b9a}',
- IdentifierType::Recommended), ('\u{b9c}', '\u{b9c}', IdentifierType::Recommended),
- ('\u{b9e}', '\u{b9f}', IdentifierType::Recommended), ('\u{ba3}', '\u{ba4}',
- IdentifierType::Recommended), ('\u{ba8}', '\u{baa}', IdentifierType::Recommended),
- ('\u{bae}', '\u{bb5}', IdentifierType::Recommended), ('\u{bb6}', '\u{bb6}',
- IdentifierType::Recommended), ('\u{bb7}', '\u{bb9}', IdentifierType::Recommended),
- ('\u{bbe}', '\u{bc2}', IdentifierType::Recommended), ('\u{bc6}', '\u{bc8}',
- IdentifierType::Recommended), ('\u{bca}', '\u{bcd}', IdentifierType::Recommended),
- ('\u{bd0}', '\u{bd0}', IdentifierType::Recommended), ('\u{bd7}', '\u{bd7}',
- IdentifierType::Recommended), ('\u{be6}', '\u{be6}', IdentifierType::Recommended),
- ('\u{be7}', '\u{bef}', IdentifierType::Recommended), ('\u{bf0}', '\u{bf2}',
- IdentifierType::Not_XID), ('\u{bf3}', '\u{bfa}', IdentifierType::Not_XID), ('\u{c00}',
- '\u{c00}', IdentifierType::Obsolete), ('\u{c01}', '\u{c03}', IdentifierType::Recommended),
- ('\u{c04}', '\u{c04}', IdentifierType::Recommended), ('\u{c05}', '\u{c0c}',
- IdentifierType::Recommended), ('\u{c0e}', '\u{c10}', IdentifierType::Recommended),
- ('\u{c12}', '\u{c28}', IdentifierType::Recommended), ('\u{c2a}', '\u{c33}',
- IdentifierType::Recommended), ('\u{c34}', '\u{c34}', IdentifierType::Obsolete),
- ('\u{c35}', '\u{c39}', IdentifierType::Recommended), ('\u{c3d}', '\u{c3d}',
- IdentifierType::Recommended), ('\u{c3e}', '\u{c44}', IdentifierType::Recommended),
- ('\u{c46}', '\u{c48}', IdentifierType::Recommended), ('\u{c4a}', '\u{c4d}',
- IdentifierType::Recommended), ('\u{c55}', '\u{c56}', IdentifierType::Recommended),
- ('\u{c58}', '\u{c59}', IdentifierType::Obsolete), ('\u{c5a}', '\u{c5a}',
- IdentifierType::Uncommon_Use), ('\u{c60}', '\u{c61}', IdentifierType::Recommended),
+ ('\u{61c}', '\u{61c}', IdentifierType::Default_Ignorable), ('\u{61d}', '\u{61d}',
+ IdentifierType::Not_XID), ('\u{61e}', '\u{61e}', IdentifierType::Not_XID), ('\u{61f}',
+ '\u{61f}', IdentifierType::Not_XID), ('\u{620}', '\u{620}', IdentifierType::Recommended),
+ ('\u{621}', '\u{63a}', IdentifierType::Recommended), ('\u{63b}', '\u{63f}',
+ IdentifierType::Recommended), ('\u{640}', '\u{640}', IdentifierType::Obsolete),
+ ('\u{641}', '\u{652}', IdentifierType::Recommended), ('\u{653}', '\u{655}',
+ IdentifierType::Recommended), ('\u{656}', '\u{658}', IdentifierType::Uncommon_Use),
+ ('\u{659}', '\u{65e}', IdentifierType::Uncommon_Use), ('\u{65f}', '\u{65f}',
+ IdentifierType::Uncommon_Use), ('\u{660}', '\u{669}', IdentifierType::Recommended),
+ ('\u{66a}', '\u{66d}', IdentifierType::Not_XID), ('\u{66e}', '\u{66f}',
+ IdentifierType::Obsolete), ('\u{670}', '\u{672}', IdentifierType::Recommended),
+ ('\u{673}', '\u{673}', IdentifierType::Deprecated), ('\u{674}', '\u{674}',
+ IdentifierType::Recommended), ('\u{675}', '\u{678}', IdentifierType::Not_NFKC),
+ ('\u{679}', '\u{68d}', IdentifierType::Recommended), ('\u{68e}', '\u{68e}',
+ IdentifierType::Obsolete), ('\u{68f}', '\u{6a0}', IdentifierType::Recommended),
+ ('\u{6a1}', '\u{6a1}', IdentifierType::Obsolete), ('\u{6a2}', '\u{6b7}',
+ IdentifierType::Recommended), ('\u{6b8}', '\u{6b9}', IdentifierType::Recommended),
+ ('\u{6ba}', '\u{6be}', IdentifierType::Recommended), ('\u{6bf}', '\u{6bf}',
+ IdentifierType::Recommended), ('\u{6c0}', '\u{6ce}', IdentifierType::Recommended),
+ ('\u{6cf}', '\u{6cf}', IdentifierType::Recommended), ('\u{6d0}', '\u{6d3}',
+ IdentifierType::Recommended), ('\u{6d4}', '\u{6d4}', IdentifierType::Not_XID), ('\u{6d5}',
+ '\u{6d5}', IdentifierType::Recommended), ('\u{6d6}', '\u{6dc}',
+ IdentifierType::Uncommon_Use), ('\u{6dd}', '\u{6dd}', IdentifierType::Not_XID),
+ ('\u{6de}', '\u{6de}', IdentifierType::Not_XID), ('\u{6df}', '\u{6e4}',
+ IdentifierType::Uncommon_Use), ('\u{6e5}', '\u{6e6}', IdentifierType::Recommended),
+ ('\u{6e7}', '\u{6e8}', IdentifierType::Uncommon_Use), ('\u{6e9}', '\u{6e9}',
+ IdentifierType::Not_XID), ('\u{6ea}', '\u{6ed}', IdentifierType::Uncommon_Use),
+ ('\u{6ee}', '\u{6ef}', IdentifierType::Recommended), ('\u{6f0}', '\u{6f9}',
+ IdentifierType::Recommended), ('\u{6fa}', '\u{6fc}', IdentifierType::Recommended),
+ ('\u{6fd}', '\u{6fe}', IdentifierType::Inclusion), ('\u{6ff}', '\u{6ff}',
+ IdentifierType::Recommended), ('\u{700}', '\u{70d}', IdentifierType::Limited_Use),
+ ('\u{70f}', '\u{70f}', IdentifierType::Limited_Use), ('\u{710}', '\u{72c}',
+ IdentifierType::Limited_Use), ('\u{72d}', '\u{72f}', IdentifierType::Limited_Use),
+ ('\u{730}', '\u{73f}', IdentifierType::Limited_Use), ('\u{740}', '\u{74a}',
+ IdentifierType::Limited_Use), ('\u{74d}', '\u{74f}', IdentifierType::Limited_Use),
+ ('\u{750}', '\u{76d}', IdentifierType::Recommended), ('\u{76e}', '\u{77f}',
+ IdentifierType::Recommended), ('\u{780}', '\u{7b0}', IdentifierType::Recommended),
+ ('\u{7b1}', '\u{7b1}', IdentifierType::Recommended), ('\u{7c0}', '\u{7e7}',
+ IdentifierType::Limited_Use), ('\u{7e8}', '\u{7ea}', IdentifierType::Limited_Use),
+ ('\u{7eb}', '\u{7f5}', IdentifierType::Limited_Use), ('\u{7f6}', '\u{7f9}',
+ IdentifierType::Limited_Use), ('\u{7fa}', '\u{7fa}', IdentifierType::Limited_Use),
+ ('\u{7fd}', '\u{7fd}', IdentifierType::Limited_Use), ('\u{7fe}', '\u{7ff}',
+ IdentifierType::Limited_Use), ('\u{800}', '\u{82d}', IdentifierType::Exclusion),
+ ('\u{830}', '\u{83e}', IdentifierType::Exclusion), ('\u{840}', '\u{85b}',
+ IdentifierType::Limited_Use), ('\u{85e}', '\u{85e}', IdentifierType::Limited_Use),
+ ('\u{860}', '\u{86a}', IdentifierType::Limited_Use), ('\u{870}', '\u{887}',
+ IdentifierType::Recommended), ('\u{888}', '\u{888}', IdentifierType::Not_XID), ('\u{889}',
+ '\u{88e}', IdentifierType::Recommended), ('\u{890}', '\u{891}', IdentifierType::Not_XID),
+ ('\u{898}', '\u{89f}', IdentifierType::Uncommon_Use), ('\u{8a0}', '\u{8a0}',
+ IdentifierType::Recommended), ('\u{8a1}', '\u{8a1}', IdentifierType::Recommended),
+ ('\u{8a2}', '\u{8ac}', IdentifierType::Recommended), ('\u{8ad}', '\u{8b1}',
+ IdentifierType::Obsolete), ('\u{8b2}', '\u{8b2}', IdentifierType::Recommended),
+ ('\u{8b3}', '\u{8b4}', IdentifierType::Uncommon_Use), ('\u{8b5}', '\u{8b5}',
+ IdentifierType::Recommended), ('\u{8b6}', '\u{8bd}', IdentifierType::Recommended),
+ ('\u{8be}', '\u{8c7}', IdentifierType::Recommended), ('\u{8c8}', '\u{8c9}',
+ IdentifierType::Recommended), ('\u{8ca}', '\u{8d2}', IdentifierType::Uncommon_Use),
+ ('\u{8d3}', '\u{8d3}', IdentifierType::Uncommon_Use), ('\u{8d4}', '\u{8e1}',
+ IdentifierType::Uncommon_Use), ('\u{8e2}', '\u{8e2}', IdentifierType::Not_XID),
+ ('\u{8e3}', '\u{8e3}', IdentifierType::Uncommon_Use), ('\u{8e4}', '\u{8fe}',
+ IdentifierType::Uncommon_Use), ('\u{8ff}', '\u{8ff}', IdentifierType::Uncommon_Use),
+ ('\u{900}', '\u{900}', IdentifierType::Uncommon_Use), ('\u{901}', '\u{903}',
+ IdentifierType::Recommended), ('\u{904}', '\u{904}', IdentifierType::Recommended),
+ ('\u{905}', '\u{939}', IdentifierType::Recommended), ('\u{93a}', '\u{93b}',
+ IdentifierType::Recommended), ('\u{93c}', '\u{94d}', IdentifierType::Recommended),
+ ('\u{94e}', '\u{94e}', IdentifierType::Obsolete), ('\u{94f}', '\u{94f}',
+ IdentifierType::Recommended), ('\u{950}', '\u{950}', IdentifierType::Recommended),
+ ('\u{951}', '\u{952}', IdentifierType::Obsolete), ('\u{953}', '\u{954}',
+ IdentifierType::Technical), ('\u{955}', '\u{955}', IdentifierType::Uncommon_Use),
+ ('\u{956}', '\u{957}', IdentifierType::Recommended), ('\u{958}', '\u{95f}',
+ IdentifierType::Not_NFKC), ('\u{960}', '\u{963}', IdentifierType::Recommended),
+ ('\u{964}', '\u{965}', IdentifierType::Not_XID), ('\u{966}', '\u{96f}',
+ IdentifierType::Recommended), ('\u{970}', '\u{970}', IdentifierType::Not_XID), ('\u{971}',
+ '\u{972}', IdentifierType::Recommended), ('\u{973}', '\u{977}',
+ IdentifierType::Recommended), ('\u{978}', '\u{978}', IdentifierType::Obsolete),
+ ('\u{979}', '\u{97a}', IdentifierType::Recommended), ('\u{97b}', '\u{97c}',
+ IdentifierType::Recommended), ('\u{97d}', '\u{97d}', IdentifierType::Recommended),
+ ('\u{97e}', '\u{97f}', IdentifierType::Recommended), ('\u{980}', '\u{980}',
+ IdentifierType::Obsolete), ('\u{981}', '\u{983}', IdentifierType::Recommended),
+ ('\u{985}', '\u{98c}', IdentifierType::Recommended), ('\u{98f}', '\u{990}',
+ IdentifierType::Recommended), ('\u{993}', '\u{9a8}', IdentifierType::Recommended),
+ ('\u{9aa}', '\u{9b0}', IdentifierType::Recommended), ('\u{9b2}', '\u{9b2}',
+ IdentifierType::Recommended), ('\u{9b6}', '\u{9b9}', IdentifierType::Recommended),
+ ('\u{9bc}', '\u{9bc}', IdentifierType::Recommended), ('\u{9bd}', '\u{9bd}',
+ IdentifierType::Recommended), ('\u{9be}', '\u{9c4}', IdentifierType::Recommended),
+ ('\u{9c7}', '\u{9c8}', IdentifierType::Recommended), ('\u{9cb}', '\u{9cd}',
+ IdentifierType::Recommended), ('\u{9ce}', '\u{9ce}', IdentifierType::Recommended),
+ ('\u{9d7}', '\u{9d7}', IdentifierType::Recommended), ('\u{9dc}', '\u{9dd}',
+ IdentifierType::Not_NFKC), ('\u{9df}', '\u{9df}', IdentifierType::Not_NFKC), ('\u{9e0}',
+ '\u{9e3}', IdentifierType::Recommended), ('\u{9e6}', '\u{9f1}',
+ IdentifierType::Recommended), ('\u{9f2}', '\u{9fa}', IdentifierType::Not_XID), ('\u{9fb}',
+ '\u{9fb}', IdentifierType::Not_XID), ('\u{9fc}', '\u{9fc}', IdentifierType::Obsolete),
+ ('\u{9fd}', '\u{9fd}', IdentifierType::Not_XID), ('\u{9fe}', '\u{9fe}',
+ IdentifierType::Recommended), ('\u{a01}', '\u{a01}', IdentifierType::Recommended),
+ ('\u{a02}', '\u{a02}', IdentifierType::Recommended), ('\u{a03}', '\u{a03}',
+ IdentifierType::Recommended), ('\u{a05}', '\u{a0a}', IdentifierType::Recommended),
+ ('\u{a0f}', '\u{a10}', IdentifierType::Recommended), ('\u{a13}', '\u{a28}',
+ IdentifierType::Recommended), ('\u{a2a}', '\u{a30}', IdentifierType::Recommended),
+ ('\u{a32}', '\u{a32}', IdentifierType::Recommended), ('\u{a33}', '\u{a33}',
+ IdentifierType::Not_NFKC), ('\u{a35}', '\u{a35}', IdentifierType::Recommended),
+ ('\u{a36}', '\u{a36}', IdentifierType::Not_NFKC), ('\u{a38}', '\u{a39}',
+ IdentifierType::Recommended), ('\u{a3c}', '\u{a3c}', IdentifierType::Recommended),
+ ('\u{a3e}', '\u{a42}', IdentifierType::Recommended), ('\u{a47}', '\u{a48}',
+ IdentifierType::Recommended), ('\u{a4b}', '\u{a4d}', IdentifierType::Recommended),
+ ('\u{a51}', '\u{a51}', IdentifierType::Uncommon_Use), ('\u{a59}', '\u{a5b}',
+ IdentifierType::Not_NFKC), ('\u{a5c}', '\u{a5c}', IdentifierType::Recommended),
+ ('\u{a5e}', '\u{a5e}', IdentifierType::Not_NFKC), ('\u{a66}', '\u{a74}',
+ IdentifierType::Recommended), ('\u{a75}', '\u{a75}', IdentifierType::Uncommon_Use),
+ ('\u{a76}', '\u{a76}', IdentifierType::Not_XID), ('\u{a81}', '\u{a83}',
+ IdentifierType::Recommended), ('\u{a85}', '\u{a8b}', IdentifierType::Recommended),
+ ('\u{a8c}', '\u{a8c}', IdentifierType::Recommended), ('\u{a8d}', '\u{a8d}',
+ IdentifierType::Recommended), ('\u{a8f}', '\u{a91}', IdentifierType::Recommended),
+ ('\u{a93}', '\u{aa8}', IdentifierType::Recommended), ('\u{aaa}', '\u{ab0}',
+ IdentifierType::Recommended), ('\u{ab2}', '\u{ab3}', IdentifierType::Recommended),
+ ('\u{ab5}', '\u{ab9}', IdentifierType::Recommended), ('\u{abc}', '\u{ac5}',
+ IdentifierType::Recommended), ('\u{ac7}', '\u{ac9}', IdentifierType::Recommended),
+ ('\u{acb}', '\u{acd}', IdentifierType::Recommended), ('\u{ad0}', '\u{ad0}',
+ IdentifierType::Recommended), ('\u{ae0}', '\u{ae0}', IdentifierType::Recommended),
+ ('\u{ae1}', '\u{ae3}', IdentifierType::Recommended), ('\u{ae6}', '\u{aef}',
+ IdentifierType::Recommended), ('\u{af0}', '\u{af0}', IdentifierType::Not_XID), ('\u{af1}',
+ '\u{af1}', IdentifierType::Not_XID), ('\u{af9}', '\u{af9}', IdentifierType::Uncommon_Use),
+ ('\u{afa}', '\u{aff}', IdentifierType::Recommended), ('\u{b01}', '\u{b03}',
+ IdentifierType::Recommended), ('\u{b05}', '\u{b0c}', IdentifierType::Recommended),
+ ('\u{b0f}', '\u{b10}', IdentifierType::Recommended), ('\u{b13}', '\u{b28}',
+ IdentifierType::Recommended), ('\u{b2a}', '\u{b30}', IdentifierType::Recommended),
+ ('\u{b32}', '\u{b33}', IdentifierType::Recommended), ('\u{b35}', '\u{b35}',
+ IdentifierType::Recommended), ('\u{b36}', '\u{b39}', IdentifierType::Recommended),
+ ('\u{b3c}', '\u{b43}', IdentifierType::Recommended), ('\u{b44}', '\u{b44}',
+ IdentifierType::Uncommon_Use), ('\u{b47}', '\u{b48}', IdentifierType::Recommended),
+ ('\u{b4b}', '\u{b4d}', IdentifierType::Recommended), ('\u{b55}', '\u{b55}',
+ IdentifierType::Recommended), ('\u{b56}', '\u{b57}', IdentifierType::Recommended),
+ ('\u{b5c}', '\u{b5d}', IdentifierType::Not_NFKC), ('\u{b5f}', '\u{b61}',
+ IdentifierType::Recommended), ('\u{b62}', '\u{b63}', IdentifierType::Uncommon_Use),
+ ('\u{b66}', '\u{b6f}', IdentifierType::Recommended), ('\u{b70}', '\u{b70}',
+ IdentifierType::Not_XID), ('\u{b71}', '\u{b71}', IdentifierType::Recommended), ('\u{b72}',
+ '\u{b77}', IdentifierType::Not_XID), ('\u{b82}', '\u{b83}', IdentifierType::Recommended),
+ ('\u{b85}', '\u{b8a}', IdentifierType::Recommended), ('\u{b8e}', '\u{b90}',
+ IdentifierType::Recommended), ('\u{b92}', '\u{b95}', IdentifierType::Recommended),
+ ('\u{b99}', '\u{b9a}', IdentifierType::Recommended), ('\u{b9c}', '\u{b9c}',
+ IdentifierType::Recommended), ('\u{b9e}', '\u{b9f}', IdentifierType::Recommended),
+ ('\u{ba3}', '\u{ba4}', IdentifierType::Recommended), ('\u{ba8}', '\u{baa}',
+ IdentifierType::Recommended), ('\u{bae}', '\u{bb5}', IdentifierType::Recommended),
+ ('\u{bb6}', '\u{bb6}', IdentifierType::Recommended), ('\u{bb7}', '\u{bb9}',
+ IdentifierType::Recommended), ('\u{bbe}', '\u{bc2}', IdentifierType::Recommended),
+ ('\u{bc6}', '\u{bc8}', IdentifierType::Recommended), ('\u{bca}', '\u{bcd}',
+ IdentifierType::Recommended), ('\u{bd0}', '\u{bd0}', IdentifierType::Recommended),
+ ('\u{bd7}', '\u{bd7}', IdentifierType::Recommended), ('\u{be6}', '\u{be6}',
+ IdentifierType::Recommended), ('\u{be7}', '\u{bef}', IdentifierType::Recommended),
+ ('\u{bf0}', '\u{bf2}', IdentifierType::Not_XID), ('\u{bf3}', '\u{bfa}',
+ IdentifierType::Not_XID), ('\u{c00}', '\u{c00}', IdentifierType::Obsolete), ('\u{c01}',
+ '\u{c03}', IdentifierType::Recommended), ('\u{c04}', '\u{c04}',
+ IdentifierType::Recommended), ('\u{c05}', '\u{c0c}', IdentifierType::Recommended),
+ ('\u{c0e}', '\u{c10}', IdentifierType::Recommended), ('\u{c12}', '\u{c28}',
+ IdentifierType::Recommended), ('\u{c2a}', '\u{c33}', IdentifierType::Recommended),
+ ('\u{c34}', '\u{c34}', IdentifierType::Obsolete), ('\u{c35}', '\u{c39}',
+ IdentifierType::Recommended), ('\u{c3c}', '\u{c3c}', IdentifierType::Recommended),
+ ('\u{c3d}', '\u{c3d}', IdentifierType::Recommended), ('\u{c3e}', '\u{c44}',
+ IdentifierType::Recommended), ('\u{c46}', '\u{c48}', IdentifierType::Recommended),
+ ('\u{c4a}', '\u{c4d}', IdentifierType::Recommended), ('\u{c55}', '\u{c56}',
+ IdentifierType::Recommended), ('\u{c58}', '\u{c59}', IdentifierType::Obsolete),
+ ('\u{c5a}', '\u{c5a}', IdentifierType::Uncommon_Use), ('\u{c5d}', '\u{c5d}',
+ IdentifierType::Recommended), ('\u{c60}', '\u{c61}', IdentifierType::Recommended),
('\u{c62}', '\u{c63}', IdentifierType::Uncommon_Use), ('\u{c66}', '\u{c6f}',
IdentifierType::Recommended), ('\u{c77}', '\u{c77}', IdentifierType::Not_XID), ('\u{c78}',
'\u{c7f}', IdentifierType::Not_XID), ('\u{c80}', '\u{c80}', IdentifierType::Recommended),
@@ -603,44 +618,45 @@ pub mod identifier {
IdentifierType::Recommended), ('\u{cbc}', '\u{cbd}', IdentifierType::Recommended),
('\u{cbe}', '\u{cc4}', IdentifierType::Recommended), ('\u{cc6}', '\u{cc8}',
IdentifierType::Recommended), ('\u{cca}', '\u{ccd}', IdentifierType::Recommended),
- ('\u{cd5}', '\u{cd6}', IdentifierType::Recommended), ('\u{cde}', '\u{cde}',
- IdentifierType::Obsolete), ('\u{ce0}', '\u{ce1}', IdentifierType::Recommended),
- ('\u{ce2}', '\u{ce3}', IdentifierType::Recommended), ('\u{ce6}', '\u{cef}',
- IdentifierType::Recommended), ('\u{cf1}', '\u{cf2}', IdentifierType::Recommended),
- ('\u{d00}', '\u{d00}', IdentifierType::Recommended), ('\u{d01}', '\u{d01}',
- IdentifierType::Obsolete), ('\u{d02}', '\u{d03}', IdentifierType::Recommended),
- ('\u{d04}', '\u{d04}', IdentifierType::Technical), ('\u{d05}', '\u{d0c}',
- IdentifierType::Recommended), ('\u{d0e}', '\u{d10}', IdentifierType::Recommended),
- ('\u{d12}', '\u{d28}', IdentifierType::Recommended), ('\u{d29}', '\u{d29}',
- IdentifierType::Recommended), ('\u{d2a}', '\u{d39}', IdentifierType::Recommended),
- ('\u{d3a}', '\u{d3a}', IdentifierType::Recommended), ('\u{d3b}', '\u{d3c}',
- IdentifierType::Obsolete), ('\u{d3d}', '\u{d3d}', IdentifierType::Recommended),
- ('\u{d3e}', '\u{d43}', IdentifierType::Recommended), ('\u{d44}', '\u{d44}',
- IdentifierType::Uncommon_Use), ('\u{d46}', '\u{d48}', IdentifierType::Recommended),
- ('\u{d4a}', '\u{d4d}', IdentifierType::Recommended), ('\u{d4e}', '\u{d4e}',
- IdentifierType::Recommended), ('\u{d4f}', '\u{d4f}', IdentifierType::Not_XID), ('\u{d54}',
- '\u{d56}', IdentifierType::Recommended), ('\u{d57}', '\u{d57}',
- IdentifierType::Recommended), ('\u{d58}', '\u{d5e}', IdentifierType::Not_XID), ('\u{d5f}',
- '\u{d5f}', IdentifierType::Obsolete), ('\u{d60}', '\u{d61}', IdentifierType::Recommended),
- ('\u{d62}', '\u{d63}', IdentifierType::Uncommon_Use), ('\u{d66}', '\u{d6f}',
- IdentifierType::Recommended), ('\u{d70}', '\u{d75}', IdentifierType::Not_XID), ('\u{d76}',
- '\u{d78}', IdentifierType::Not_XID), ('\u{d79}', '\u{d79}', IdentifierType::Not_XID),
- ('\u{d7a}', '\u{d7f}', IdentifierType::Recommended), ('\u{d81}', '\u{d81}',
- IdentifierType::Technical), ('\u{d82}', '\u{d83}', IdentifierType::Recommended),
- ('\u{d85}', '\u{d8e}', IdentifierType::Recommended), ('\u{d8f}', '\u{d90}',
- IdentifierType::Uncommon_Use), ('\u{d91}', '\u{d96}', IdentifierType::Recommended),
- ('\u{d9a}', '\u{da5}', IdentifierType::Recommended), ('\u{da6}', '\u{da6}',
- IdentifierType::Uncommon_Use), ('\u{da7}', '\u{db1}', IdentifierType::Recommended),
- ('\u{db3}', '\u{dbb}', IdentifierType::Recommended), ('\u{dbd}', '\u{dbd}',
- IdentifierType::Recommended), ('\u{dc0}', '\u{dc6}', IdentifierType::Recommended),
- ('\u{dca}', '\u{dca}', IdentifierType::Recommended), ('\u{dcf}', '\u{dd4}',
- IdentifierType::Recommended), ('\u{dd6}', '\u{dd6}', IdentifierType::Recommended),
- ('\u{dd8}', '\u{dde}', IdentifierType::Recommended), ('\u{ddf}', '\u{ddf}',
- IdentifierType::Uncommon_Use), ('\u{de6}', '\u{def}', IdentifierType::Obsolete),
- ('\u{df2}', '\u{df2}', IdentifierType::Recommended), ('\u{df3}', '\u{df3}',
- IdentifierType::Uncommon_Use), ('\u{df4}', '\u{df4}', IdentifierType::Not_XID),
- ('\u{e01}', '\u{e32}', IdentifierType::Recommended), ('\u{e33}', '\u{e33}',
- IdentifierType::Not_NFKC), ('\u{e34}', '\u{e3a}', IdentifierType::Recommended),
+ ('\u{cd5}', '\u{cd6}', IdentifierType::Recommended), ('\u{cdd}', '\u{cdd}',
+ IdentifierType::Recommended), ('\u{cde}', '\u{cde}', IdentifierType::Obsolete),
+ ('\u{ce0}', '\u{ce1}', IdentifierType::Recommended), ('\u{ce2}', '\u{ce3}',
+ IdentifierType::Recommended), ('\u{ce6}', '\u{cef}', IdentifierType::Recommended),
+ ('\u{cf1}', '\u{cf2}', IdentifierType::Recommended), ('\u{cf3}', '\u{cf3}',
+ IdentifierType::Recommended), ('\u{d00}', '\u{d00}', IdentifierType::Recommended),
+ ('\u{d01}', '\u{d01}', IdentifierType::Obsolete), ('\u{d02}', '\u{d03}',
+ IdentifierType::Recommended), ('\u{d04}', '\u{d04}', IdentifierType::Technical),
+ ('\u{d05}', '\u{d0c}', IdentifierType::Recommended), ('\u{d0e}', '\u{d10}',
+ IdentifierType::Recommended), ('\u{d12}', '\u{d28}', IdentifierType::Recommended),
+ ('\u{d29}', '\u{d29}', IdentifierType::Recommended), ('\u{d2a}', '\u{d39}',
+ IdentifierType::Recommended), ('\u{d3a}', '\u{d3a}', IdentifierType::Recommended),
+ ('\u{d3b}', '\u{d3c}', IdentifierType::Obsolete), ('\u{d3d}', '\u{d3d}',
+ IdentifierType::Recommended), ('\u{d3e}', '\u{d43}', IdentifierType::Recommended),
+ ('\u{d44}', '\u{d44}', IdentifierType::Uncommon_Use), ('\u{d46}', '\u{d48}',
+ IdentifierType::Recommended), ('\u{d4a}', '\u{d4d}', IdentifierType::Recommended),
+ ('\u{d4e}', '\u{d4e}', IdentifierType::Recommended), ('\u{d4f}', '\u{d4f}',
+ IdentifierType::Not_XID), ('\u{d54}', '\u{d56}', IdentifierType::Recommended), ('\u{d57}',
+ '\u{d57}', IdentifierType::Recommended), ('\u{d58}', '\u{d5e}', IdentifierType::Not_XID),
+ ('\u{d5f}', '\u{d5f}', IdentifierType::Obsolete), ('\u{d60}', '\u{d61}',
+ IdentifierType::Recommended), ('\u{d62}', '\u{d63}', IdentifierType::Uncommon_Use),
+ ('\u{d66}', '\u{d6f}', IdentifierType::Recommended), ('\u{d70}', '\u{d75}',
+ IdentifierType::Not_XID), ('\u{d76}', '\u{d78}', IdentifierType::Not_XID), ('\u{d79}',
+ '\u{d79}', IdentifierType::Not_XID), ('\u{d7a}', '\u{d7f}', IdentifierType::Recommended),
+ ('\u{d81}', '\u{d81}', IdentifierType::Technical), ('\u{d82}', '\u{d83}',
+ IdentifierType::Recommended), ('\u{d85}', '\u{d8e}', IdentifierType::Recommended),
+ ('\u{d8f}', '\u{d90}', IdentifierType::Uncommon_Use), ('\u{d91}', '\u{d96}',
+ IdentifierType::Recommended), ('\u{d9a}', '\u{da5}', IdentifierType::Recommended),
+ ('\u{da6}', '\u{da6}', IdentifierType::Uncommon_Use), ('\u{da7}', '\u{db1}',
+ IdentifierType::Recommended), ('\u{db3}', '\u{dbb}', IdentifierType::Recommended),
+ ('\u{dbd}', '\u{dbd}', IdentifierType::Recommended), ('\u{dc0}', '\u{dc6}',
+ IdentifierType::Recommended), ('\u{dca}', '\u{dca}', IdentifierType::Recommended),
+ ('\u{dcf}', '\u{dd4}', IdentifierType::Recommended), ('\u{dd6}', '\u{dd6}',
+ IdentifierType::Recommended), ('\u{dd8}', '\u{dde}', IdentifierType::Recommended),
+ ('\u{ddf}', '\u{ddf}', IdentifierType::Uncommon_Use), ('\u{de6}', '\u{def}',
+ IdentifierType::Obsolete), ('\u{df2}', '\u{df2}', IdentifierType::Recommended),
+ ('\u{df3}', '\u{df3}', IdentifierType::Uncommon_Use), ('\u{df4}', '\u{df4}',
+ IdentifierType::Not_XID), ('\u{e01}', '\u{e32}', IdentifierType::Recommended), ('\u{e33}',
+ '\u{e33}', IdentifierType::Not_NFKC), ('\u{e34}', '\u{e3a}', IdentifierType::Recommended),
('\u{e3f}', '\u{e3f}', IdentifierType::Not_XID), ('\u{e40}', '\u{e4e}',
IdentifierType::Recommended), ('\u{e4f}', '\u{e4f}', IdentifierType::Not_XID), ('\u{e50}',
'\u{e59}', IdentifierType::Recommended), ('\u{e5a}', '\u{e5b}', IdentifierType::Not_XID),
@@ -662,133 +678,137 @@ pub mod identifier {
IdentifierType::Recommended), ('\u{ebb}', '\u{ebd}', IdentifierType::Recommended),
('\u{ec0}', '\u{ec4}', IdentifierType::Recommended), ('\u{ec6}', '\u{ec6}',
IdentifierType::Recommended), ('\u{ec8}', '\u{ecd}', IdentifierType::Recommended),
- ('\u{ed0}', '\u{ed9}', IdentifierType::Recommended), ('\u{edc}', '\u{edd}',
- IdentifierType::Not_NFKC), ('\u{ede}', '\u{edf}', IdentifierType::Recommended),
- ('\u{f00}', '\u{f00}', IdentifierType::Recommended), ('\u{f01}', '\u{f0a}',
- IdentifierType::Not_XID), ('\u{f0b}', '\u{f0b}', IdentifierType::Inclusion), ('\u{f0c}',
- '\u{f0c}', IdentifierType::Not_NFKC), ('\u{f0d}', '\u{f17}', IdentifierType::Not_XID),
- ('\u{f18}', '\u{f19}', IdentifierType::Technical), ('\u{f1a}', '\u{f1f}',
- IdentifierType::Not_XID), ('\u{f20}', '\u{f29}', IdentifierType::Recommended), ('\u{f2a}',
- '\u{f34}', IdentifierType::Not_XID), ('\u{f35}', '\u{f35}', IdentifierType::Recommended),
- ('\u{f36}', '\u{f36}', IdentifierType::Not_XID), ('\u{f37}', '\u{f37}',
- IdentifierType::Recommended), ('\u{f38}', '\u{f38}', IdentifierType::Not_XID), ('\u{f39}',
- '\u{f39}', IdentifierType::Uncommon_Use), ('\u{f3a}', '\u{f3d}', IdentifierType::Not_XID),
- ('\u{f3e}', '\u{f42}', IdentifierType::Recommended), ('\u{f43}', '\u{f43}',
- IdentifierType::Not_NFKC), ('\u{f44}', '\u{f47}', IdentifierType::Recommended),
- ('\u{f49}', '\u{f4c}', IdentifierType::Recommended), ('\u{f4d}', '\u{f4d}',
- IdentifierType::Not_NFKC), ('\u{f4e}', '\u{f51}', IdentifierType::Recommended),
- ('\u{f52}', '\u{f52}', IdentifierType::Not_NFKC), ('\u{f53}', '\u{f56}',
- IdentifierType::Recommended), ('\u{f57}', '\u{f57}', IdentifierType::Not_NFKC),
- ('\u{f58}', '\u{f5b}', IdentifierType::Recommended), ('\u{f5c}', '\u{f5c}',
- IdentifierType::Not_NFKC), ('\u{f5d}', '\u{f68}', IdentifierType::Recommended),
- ('\u{f69}', '\u{f69}', IdentifierType::Not_NFKC), ('\u{f6a}', '\u{f6a}',
- IdentifierType::Recommended), ('\u{f6b}', '\u{f6c}', IdentifierType::Recommended),
- ('\u{f71}', '\u{f72}', IdentifierType::Recommended), ('\u{f73}', '\u{f73}',
- IdentifierType::Not_NFKC), ('\u{f74}', '\u{f74}', IdentifierType::Recommended),
- ('\u{f75}', '\u{f76}', IdentifierType::Not_NFKC), ('\u{f77}', '\u{f77}',
- IdentifierType::Deprecated), ('\u{f78}', '\u{f78}', IdentifierType::Not_NFKC), ('\u{f79}',
- '\u{f79}', IdentifierType::Deprecated), ('\u{f7a}', '\u{f80}',
- IdentifierType::Recommended), ('\u{f81}', '\u{f81}', IdentifierType::Not_NFKC),
- ('\u{f82}', '\u{f84}', IdentifierType::Recommended), ('\u{f85}', '\u{f85}',
- IdentifierType::Not_XID), ('\u{f86}', '\u{f8b}', IdentifierType::Recommended), ('\u{f8c}',
- '\u{f8f}', IdentifierType::Recommended), ('\u{f90}', '\u{f92}',
- IdentifierType::Recommended), ('\u{f93}', '\u{f93}', IdentifierType::Not_NFKC),
- ('\u{f94}', '\u{f95}', IdentifierType::Recommended), ('\u{f96}', '\u{f96}',
- IdentifierType::Recommended), ('\u{f97}', '\u{f97}', IdentifierType::Recommended),
- ('\u{f99}', '\u{f9c}', IdentifierType::Recommended), ('\u{f9d}', '\u{f9d}',
- IdentifierType::Not_NFKC), ('\u{f9e}', '\u{fa1}', IdentifierType::Recommended),
- ('\u{fa2}', '\u{fa2}', IdentifierType::Not_NFKC), ('\u{fa3}', '\u{fa6}',
- IdentifierType::Recommended), ('\u{fa7}', '\u{fa7}', IdentifierType::Not_NFKC),
- ('\u{fa8}', '\u{fab}', IdentifierType::Recommended), ('\u{fac}', '\u{fac}',
- IdentifierType::Not_NFKC), ('\u{fad}', '\u{fad}', IdentifierType::Recommended),
- ('\u{fae}', '\u{fb0}', IdentifierType::Recommended), ('\u{fb1}', '\u{fb7}',
- IdentifierType::Recommended), ('\u{fb8}', '\u{fb8}', IdentifierType::Recommended),
- ('\u{fb9}', '\u{fb9}', IdentifierType::Not_NFKC), ('\u{fba}', '\u{fbc}',
- IdentifierType::Recommended), ('\u{fbe}', '\u{fc5}', IdentifierType::Not_XID), ('\u{fc6}',
- '\u{fc6}', IdentifierType::Recommended), ('\u{fc7}', '\u{fcc}', IdentifierType::Not_XID),
- ('\u{fce}', '\u{fce}', IdentifierType::Not_XID), ('\u{fcf}', '\u{fcf}',
- IdentifierType::Not_XID), ('\u{fd0}', '\u{fd1}', IdentifierType::Not_XID), ('\u{fd2}',
- '\u{fd4}', IdentifierType::Not_XID), ('\u{fd5}', '\u{fd8}', IdentifierType::Not_XID),
- ('\u{fd9}', '\u{fda}', IdentifierType::Not_XID), ('\u{1000}', '\u{1021}',
- IdentifierType::Recommended), ('\u{1022}', '\u{1022}', IdentifierType::Recommended),
- ('\u{1023}', '\u{1027}', IdentifierType::Recommended), ('\u{1028}', '\u{1028}',
- IdentifierType::Recommended), ('\u{1029}', '\u{102a}', IdentifierType::Recommended),
- ('\u{102b}', '\u{102b}', IdentifierType::Recommended), ('\u{102c}', '\u{1032}',
- IdentifierType::Recommended), ('\u{1033}', '\u{1035}', IdentifierType::Recommended),
- ('\u{1036}', '\u{1039}', IdentifierType::Recommended), ('\u{103a}', '\u{103f}',
- IdentifierType::Recommended), ('\u{1040}', '\u{1049}', IdentifierType::Recommended),
- ('\u{104a}', '\u{104f}', IdentifierType::Not_XID), ('\u{1050}', '\u{1059}',
- IdentifierType::Recommended), ('\u{105a}', '\u{1099}', IdentifierType::Recommended),
- ('\u{109a}', '\u{109d}', IdentifierType::Recommended), ('\u{109e}', '\u{109f}',
- IdentifierType::Not_XID), ('\u{10a0}', '\u{10c5}', IdentifierType::Obsolete), ('\u{10c7}',
- '\u{10c7}', IdentifierType::Recommended), ('\u{10cd}', '\u{10cd}',
- IdentifierType::Recommended), ('\u{10d0}', '\u{10f0}', IdentifierType::Recommended),
- ('\u{10f1}', '\u{10f6}', IdentifierType::Obsolete), ('\u{10f7}', '\u{10f8}',
- IdentifierType::Recommended), ('\u{10f9}', '\u{10fa}', IdentifierType::Recommended),
- ('\u{10fb}', '\u{10fb}', IdentifierType::Not_XID), ('\u{10fc}', '\u{10fc}',
- IdentifierType::Not_NFKC), ('\u{10fd}', '\u{10ff}', IdentifierType::Recommended),
- ('\u{1100}', '\u{1159}', IdentifierType::Obsolete), ('\u{115a}', '\u{115e}',
- IdentifierType::Obsolete), ('\u{115f}', '\u{1160}', IdentifierType::Default_Ignorable),
- ('\u{1161}', '\u{11a2}', IdentifierType::Obsolete), ('\u{11a3}', '\u{11a7}',
- IdentifierType::Obsolete), ('\u{11a8}', '\u{11f9}', IdentifierType::Obsolete),
- ('\u{11fa}', '\u{11ff}', IdentifierType::Obsolete), ('\u{1200}', '\u{1206}',
- IdentifierType::Recommended), ('\u{1207}', '\u{1207}', IdentifierType::Recommended),
- ('\u{1208}', '\u{1246}', IdentifierType::Recommended), ('\u{1247}', '\u{1247}',
- IdentifierType::Recommended), ('\u{1248}', '\u{1248}', IdentifierType::Recommended),
- ('\u{124a}', '\u{124d}', IdentifierType::Recommended), ('\u{1250}', '\u{1256}',
- IdentifierType::Recommended), ('\u{1258}', '\u{1258}', IdentifierType::Recommended),
- ('\u{125a}', '\u{125d}', IdentifierType::Recommended), ('\u{1260}', '\u{1286}',
- IdentifierType::Recommended), ('\u{1287}', '\u{1287}', IdentifierType::Recommended),
- ('\u{1288}', '\u{1288}', IdentifierType::Recommended), ('\u{128a}', '\u{128d}',
- IdentifierType::Recommended), ('\u{1290}', '\u{12ae}', IdentifierType::Recommended),
- ('\u{12af}', '\u{12af}', IdentifierType::Recommended), ('\u{12b0}', '\u{12b0}',
- IdentifierType::Recommended), ('\u{12b2}', '\u{12b5}', IdentifierType::Recommended),
- ('\u{12b8}', '\u{12be}', IdentifierType::Recommended), ('\u{12c0}', '\u{12c0}',
- IdentifierType::Recommended), ('\u{12c2}', '\u{12c5}', IdentifierType::Recommended),
- ('\u{12c8}', '\u{12ce}', IdentifierType::Recommended), ('\u{12cf}', '\u{12cf}',
- IdentifierType::Recommended), ('\u{12d0}', '\u{12d6}', IdentifierType::Recommended),
- ('\u{12d8}', '\u{12ee}', IdentifierType::Recommended), ('\u{12ef}', '\u{12ef}',
- IdentifierType::Recommended), ('\u{12f0}', '\u{130e}', IdentifierType::Recommended),
- ('\u{130f}', '\u{130f}', IdentifierType::Recommended), ('\u{1310}', '\u{1310}',
- IdentifierType::Recommended), ('\u{1312}', '\u{1315}', IdentifierType::Recommended),
- ('\u{1318}', '\u{131e}', IdentifierType::Recommended), ('\u{131f}', '\u{131f}',
- IdentifierType::Recommended), ('\u{1320}', '\u{1346}', IdentifierType::Recommended),
- ('\u{1347}', '\u{1347}', IdentifierType::Recommended), ('\u{1348}', '\u{135a}',
- IdentifierType::Recommended), ('\u{135d}', '\u{135e}', IdentifierType::Recommended),
- ('\u{135f}', '\u{135f}', IdentifierType::Recommended), ('\u{1360}', '\u{1360}',
- IdentifierType::Not_XID), ('\u{1361}', '\u{1368}', IdentifierType::Not_XID), ('\u{1369}',
- '\u{1371}', IdentifierType::Obsolete), ('\u{1372}', '\u{137c}', IdentifierType::Not_XID),
- ('\u{1380}', '\u{138f}', IdentifierType::Recommended), ('\u{1390}', '\u{1399}',
- IdentifierType::Not_XID), ('\u{13a0}', '\u{13f4}', IdentifierType::Limited_Use),
- ('\u{13f5}', '\u{13f5}', IdentifierType::Limited_Use), ('\u{13f8}', '\u{13fd}',
- IdentifierType::Limited_Use), ('\u{1400}', '\u{1400}', IdentifierType::Limited_Use),
- ('\u{1401}', '\u{166c}', IdentifierType::Limited_Use), ('\u{166d}', '\u{166e}',
- IdentifierType::Limited_Use), ('\u{166f}', '\u{1676}', IdentifierType::Limited_Use),
- ('\u{1677}', '\u{167f}', IdentifierType::Limited_Use), ('\u{1680}', '\u{1680}',
- IdentifierType::Exclusion), ('\u{1681}', '\u{169a}', IdentifierType::Exclusion),
- ('\u{169b}', '\u{169c}', IdentifierType::Exclusion), ('\u{16a0}', '\u{16ea}',
- IdentifierType::Exclusion), ('\u{16eb}', '\u{16ed}', IdentifierType::Not_XID),
- ('\u{16ee}', '\u{16f0}', IdentifierType::Exclusion), ('\u{16f1}', '\u{16f8}',
- IdentifierType::Exclusion), ('\u{1700}', '\u{170c}', IdentifierType::Exclusion),
- ('\u{170e}', '\u{1714}', IdentifierType::Exclusion), ('\u{1720}', '\u{1734}',
- IdentifierType::Exclusion), ('\u{1735}', '\u{1736}', IdentifierType::Exclusion),
- ('\u{1740}', '\u{1753}', IdentifierType::Exclusion), ('\u{1760}', '\u{176c}',
- IdentifierType::Exclusion), ('\u{176e}', '\u{1770}', IdentifierType::Exclusion),
- ('\u{1772}', '\u{1773}', IdentifierType::Exclusion), ('\u{1780}', '\u{17a2}',
- IdentifierType::Recommended), ('\u{17a3}', '\u{17a4}', IdentifierType::Deprecated),
- ('\u{17a5}', '\u{17a7}', IdentifierType::Recommended), ('\u{17a8}', '\u{17a8}',
- IdentifierType::Obsolete), ('\u{17a9}', '\u{17b3}', IdentifierType::Recommended),
- ('\u{17b4}', '\u{17b5}', IdentifierType::Default_Ignorable), ('\u{17b6}', '\u{17ca}',
- IdentifierType::Recommended), ('\u{17cb}', '\u{17d0}', IdentifierType::Technical),
- ('\u{17d1}', '\u{17d1}', IdentifierType::Technical), ('\u{17d2}', '\u{17d2}',
- IdentifierType::Recommended), ('\u{17d3}', '\u{17d3}', IdentifierType::Obsolete),
- ('\u{17d4}', '\u{17d6}', IdentifierType::Not_XID), ('\u{17d7}', '\u{17d7}',
- IdentifierType::Recommended), ('\u{17d8}', '\u{17d8}', IdentifierType::Obsolete),
- ('\u{17d9}', '\u{17db}', IdentifierType::Not_XID), ('\u{17dc}', '\u{17dc}',
- IdentifierType::Recommended), ('\u{17dd}', '\u{17dd}', IdentifierType::Technical),
- ('\u{17e0}', '\u{17e9}', IdentifierType::Recommended), ('\u{17f0}', '\u{17f9}',
- IdentifierType::Not_XID), ('\u{1800}', '\u{180a}', IdentifierType::Exclusion),
- ('\u{180b}', '\u{180d}', IdentifierType::Default_Ignorable), ('\u{180e}', '\u{180e}',
+ ('\u{ece}', '\u{ece}', IdentifierType::Recommended), ('\u{ed0}', '\u{ed9}',
+ IdentifierType::Recommended), ('\u{edc}', '\u{edd}', IdentifierType::Not_NFKC),
+ ('\u{ede}', '\u{edf}', IdentifierType::Recommended), ('\u{f00}', '\u{f00}',
+ IdentifierType::Recommended), ('\u{f01}', '\u{f0a}', IdentifierType::Not_XID), ('\u{f0b}',
+ '\u{f0b}', IdentifierType::Inclusion), ('\u{f0c}', '\u{f0c}', IdentifierType::Not_NFKC),
+ ('\u{f0d}', '\u{f17}', IdentifierType::Not_XID), ('\u{f18}', '\u{f19}',
+ IdentifierType::Technical), ('\u{f1a}', '\u{f1f}', IdentifierType::Not_XID), ('\u{f20}',
+ '\u{f29}', IdentifierType::Recommended), ('\u{f2a}', '\u{f34}', IdentifierType::Not_XID),
+ ('\u{f35}', '\u{f35}', IdentifierType::Recommended), ('\u{f36}', '\u{f36}',
+ IdentifierType::Not_XID), ('\u{f37}', '\u{f37}', IdentifierType::Recommended), ('\u{f38}',
+ '\u{f38}', IdentifierType::Not_XID), ('\u{f39}', '\u{f39}', IdentifierType::Uncommon_Use),
+ ('\u{f3a}', '\u{f3d}', IdentifierType::Not_XID), ('\u{f3e}', '\u{f42}',
+ IdentifierType::Recommended), ('\u{f43}', '\u{f43}', IdentifierType::Not_NFKC),
+ ('\u{f44}', '\u{f47}', IdentifierType::Recommended), ('\u{f49}', '\u{f4c}',
+ IdentifierType::Recommended), ('\u{f4d}', '\u{f4d}', IdentifierType::Not_NFKC),
+ ('\u{f4e}', '\u{f51}', IdentifierType::Recommended), ('\u{f52}', '\u{f52}',
+ IdentifierType::Not_NFKC), ('\u{f53}', '\u{f56}', IdentifierType::Recommended),
+ ('\u{f57}', '\u{f57}', IdentifierType::Not_NFKC), ('\u{f58}', '\u{f5b}',
+ IdentifierType::Recommended), ('\u{f5c}', '\u{f5c}', IdentifierType::Not_NFKC),
+ ('\u{f5d}', '\u{f68}', IdentifierType::Recommended), ('\u{f69}', '\u{f69}',
+ IdentifierType::Not_NFKC), ('\u{f6a}', '\u{f6a}', IdentifierType::Recommended),
+ ('\u{f6b}', '\u{f6c}', IdentifierType::Recommended), ('\u{f71}', '\u{f72}',
+ IdentifierType::Recommended), ('\u{f73}', '\u{f73}', IdentifierType::Not_NFKC),
+ ('\u{f74}', '\u{f74}', IdentifierType::Recommended), ('\u{f75}', '\u{f76}',
+ IdentifierType::Not_NFKC), ('\u{f77}', '\u{f77}', IdentifierType::Deprecated), ('\u{f78}',
+ '\u{f78}', IdentifierType::Not_NFKC), ('\u{f79}', '\u{f79}', IdentifierType::Deprecated),
+ ('\u{f7a}', '\u{f80}', IdentifierType::Recommended), ('\u{f81}', '\u{f81}',
+ IdentifierType::Not_NFKC), ('\u{f82}', '\u{f84}', IdentifierType::Recommended),
+ ('\u{f85}', '\u{f85}', IdentifierType::Not_XID), ('\u{f86}', '\u{f8b}',
+ IdentifierType::Recommended), ('\u{f8c}', '\u{f8f}', IdentifierType::Recommended),
+ ('\u{f90}', '\u{f92}', IdentifierType::Recommended), ('\u{f93}', '\u{f93}',
+ IdentifierType::Not_NFKC), ('\u{f94}', '\u{f95}', IdentifierType::Recommended),
+ ('\u{f96}', '\u{f96}', IdentifierType::Recommended), ('\u{f97}', '\u{f97}',
+ IdentifierType::Recommended), ('\u{f99}', '\u{f9c}', IdentifierType::Recommended),
+ ('\u{f9d}', '\u{f9d}', IdentifierType::Not_NFKC), ('\u{f9e}', '\u{fa1}',
+ IdentifierType::Recommended), ('\u{fa2}', '\u{fa2}', IdentifierType::Not_NFKC),
+ ('\u{fa3}', '\u{fa6}', IdentifierType::Recommended), ('\u{fa7}', '\u{fa7}',
+ IdentifierType::Not_NFKC), ('\u{fa8}', '\u{fab}', IdentifierType::Recommended),
+ ('\u{fac}', '\u{fac}', IdentifierType::Not_NFKC), ('\u{fad}', '\u{fad}',
+ IdentifierType::Recommended), ('\u{fae}', '\u{fb0}', IdentifierType::Recommended),
+ ('\u{fb1}', '\u{fb7}', IdentifierType::Recommended), ('\u{fb8}', '\u{fb8}',
+ IdentifierType::Recommended), ('\u{fb9}', '\u{fb9}', IdentifierType::Not_NFKC),
+ ('\u{fba}', '\u{fbc}', IdentifierType::Recommended), ('\u{fbe}', '\u{fc5}',
+ IdentifierType::Not_XID), ('\u{fc6}', '\u{fc6}', IdentifierType::Recommended), ('\u{fc7}',
+ '\u{fcc}', IdentifierType::Not_XID), ('\u{fce}', '\u{fce}', IdentifierType::Not_XID),
+ ('\u{fcf}', '\u{fcf}', IdentifierType::Not_XID), ('\u{fd0}', '\u{fd1}',
+ IdentifierType::Not_XID), ('\u{fd2}', '\u{fd4}', IdentifierType::Not_XID), ('\u{fd5}',
+ '\u{fd8}', IdentifierType::Not_XID), ('\u{fd9}', '\u{fda}', IdentifierType::Not_XID),
+ ('\u{1000}', '\u{1021}', IdentifierType::Recommended), ('\u{1022}', '\u{1022}',
+ IdentifierType::Recommended), ('\u{1023}', '\u{1027}', IdentifierType::Recommended),
+ ('\u{1028}', '\u{1028}', IdentifierType::Recommended), ('\u{1029}', '\u{102a}',
+ IdentifierType::Recommended), ('\u{102b}', '\u{102b}', IdentifierType::Recommended),
+ ('\u{102c}', '\u{1032}', IdentifierType::Recommended), ('\u{1033}', '\u{1035}',
+ IdentifierType::Recommended), ('\u{1036}', '\u{1039}', IdentifierType::Recommended),
+ ('\u{103a}', '\u{103f}', IdentifierType::Recommended), ('\u{1040}', '\u{1049}',
+ IdentifierType::Recommended), ('\u{104a}', '\u{104f}', IdentifierType::Not_XID),
+ ('\u{1050}', '\u{1059}', IdentifierType::Recommended), ('\u{105a}', '\u{1099}',
+ IdentifierType::Recommended), ('\u{109a}', '\u{109d}', IdentifierType::Recommended),
+ ('\u{109e}', '\u{109f}', IdentifierType::Not_XID), ('\u{10a0}', '\u{10c5}',
+ IdentifierType::Obsolete), ('\u{10c7}', '\u{10c7}', IdentifierType::Recommended),
+ ('\u{10cd}', '\u{10cd}', IdentifierType::Recommended), ('\u{10d0}', '\u{10f0}',
+ IdentifierType::Recommended), ('\u{10f1}', '\u{10f6}', IdentifierType::Obsolete),
+ ('\u{10f7}', '\u{10f8}', IdentifierType::Recommended), ('\u{10f9}', '\u{10fa}',
+ IdentifierType::Recommended), ('\u{10fb}', '\u{10fb}', IdentifierType::Not_XID),
+ ('\u{10fc}', '\u{10fc}', IdentifierType::Not_NFKC), ('\u{10fd}', '\u{10ff}',
+ IdentifierType::Recommended), ('\u{1100}', '\u{1159}', IdentifierType::Obsolete),
+ ('\u{115a}', '\u{115e}', IdentifierType::Obsolete), ('\u{115f}', '\u{1160}',
+ IdentifierType::Default_Ignorable), ('\u{1161}', '\u{11a2}', IdentifierType::Obsolete),
+ ('\u{11a3}', '\u{11a7}', IdentifierType::Obsolete), ('\u{11a8}', '\u{11f9}',
+ IdentifierType::Obsolete), ('\u{11fa}', '\u{11ff}', IdentifierType::Obsolete),
+ ('\u{1200}', '\u{1206}', IdentifierType::Recommended), ('\u{1207}', '\u{1207}',
+ IdentifierType::Recommended), ('\u{1208}', '\u{1246}', IdentifierType::Recommended),
+ ('\u{1247}', '\u{1247}', IdentifierType::Recommended), ('\u{1248}', '\u{1248}',
+ IdentifierType::Recommended), ('\u{124a}', '\u{124d}', IdentifierType::Recommended),
+ ('\u{1250}', '\u{1256}', IdentifierType::Recommended), ('\u{1258}', '\u{1258}',
+ IdentifierType::Recommended), ('\u{125a}', '\u{125d}', IdentifierType::Recommended),
+ ('\u{1260}', '\u{1286}', IdentifierType::Recommended), ('\u{1287}', '\u{1287}',
+ IdentifierType::Recommended), ('\u{1288}', '\u{1288}', IdentifierType::Recommended),
+ ('\u{128a}', '\u{128d}', IdentifierType::Recommended), ('\u{1290}', '\u{12ae}',
+ IdentifierType::Recommended), ('\u{12af}', '\u{12af}', IdentifierType::Recommended),
+ ('\u{12b0}', '\u{12b0}', IdentifierType::Recommended), ('\u{12b2}', '\u{12b5}',
+ IdentifierType::Recommended), ('\u{12b8}', '\u{12be}', IdentifierType::Recommended),
+ ('\u{12c0}', '\u{12c0}', IdentifierType::Recommended), ('\u{12c2}', '\u{12c5}',
+ IdentifierType::Recommended), ('\u{12c8}', '\u{12ce}', IdentifierType::Recommended),
+ ('\u{12cf}', '\u{12cf}', IdentifierType::Recommended), ('\u{12d0}', '\u{12d6}',
+ IdentifierType::Recommended), ('\u{12d8}', '\u{12ee}', IdentifierType::Recommended),
+ ('\u{12ef}', '\u{12ef}', IdentifierType::Recommended), ('\u{12f0}', '\u{130e}',
+ IdentifierType::Recommended), ('\u{130f}', '\u{130f}', IdentifierType::Recommended),
+ ('\u{1310}', '\u{1310}', IdentifierType::Recommended), ('\u{1312}', '\u{1315}',
+ IdentifierType::Recommended), ('\u{1318}', '\u{131e}', IdentifierType::Recommended),
+ ('\u{131f}', '\u{131f}', IdentifierType::Recommended), ('\u{1320}', '\u{1346}',
+ IdentifierType::Recommended), ('\u{1347}', '\u{1347}', IdentifierType::Recommended),
+ ('\u{1348}', '\u{135a}', IdentifierType::Recommended), ('\u{135d}', '\u{135e}',
+ IdentifierType::Recommended), ('\u{135f}', '\u{135f}', IdentifierType::Recommended),
+ ('\u{1360}', '\u{1360}', IdentifierType::Not_XID), ('\u{1361}', '\u{1368}',
+ IdentifierType::Not_XID), ('\u{1369}', '\u{1371}', IdentifierType::Obsolete), ('\u{1372}',
+ '\u{137c}', IdentifierType::Not_XID), ('\u{1380}', '\u{138f}',
+ IdentifierType::Recommended), ('\u{1390}', '\u{1399}', IdentifierType::Not_XID),
+ ('\u{13a0}', '\u{13f4}', IdentifierType::Limited_Use), ('\u{13f5}', '\u{13f5}',
+ IdentifierType::Limited_Use), ('\u{13f8}', '\u{13fd}', IdentifierType::Limited_Use),
+ ('\u{1400}', '\u{1400}', IdentifierType::Limited_Use), ('\u{1401}', '\u{166c}',
+ IdentifierType::Limited_Use), ('\u{166d}', '\u{166e}', IdentifierType::Limited_Use),
+ ('\u{166f}', '\u{1676}', IdentifierType::Limited_Use), ('\u{1677}', '\u{167f}',
+ IdentifierType::Limited_Use), ('\u{1680}', '\u{1680}', IdentifierType::Exclusion),
+ ('\u{1681}', '\u{169a}', IdentifierType::Exclusion), ('\u{169b}', '\u{169c}',
+ IdentifierType::Exclusion), ('\u{16a0}', '\u{16ea}', IdentifierType::Exclusion),
+ ('\u{16eb}', '\u{16ed}', IdentifierType::Not_XID), ('\u{16ee}', '\u{16f0}',
+ IdentifierType::Exclusion), ('\u{16f1}', '\u{16f8}', IdentifierType::Exclusion),
+ ('\u{1700}', '\u{170c}', IdentifierType::Exclusion), ('\u{170d}', '\u{170d}',
+ IdentifierType::Exclusion), ('\u{170e}', '\u{1714}', IdentifierType::Exclusion),
+ ('\u{1715}', '\u{1715}', IdentifierType::Exclusion), ('\u{171f}', '\u{171f}',
+ IdentifierType::Exclusion), ('\u{1720}', '\u{1734}', IdentifierType::Exclusion),
+ ('\u{1735}', '\u{1736}', IdentifierType::Exclusion), ('\u{1740}', '\u{1753}',
+ IdentifierType::Exclusion), ('\u{1760}', '\u{176c}', IdentifierType::Exclusion),
+ ('\u{176e}', '\u{1770}', IdentifierType::Exclusion), ('\u{1772}', '\u{1773}',
+ IdentifierType::Exclusion), ('\u{1780}', '\u{17a2}', IdentifierType::Recommended),
+ ('\u{17a3}', '\u{17a4}', IdentifierType::Deprecated), ('\u{17a5}', '\u{17a7}',
+ IdentifierType::Recommended), ('\u{17a8}', '\u{17a8}', IdentifierType::Obsolete),
+ ('\u{17a9}', '\u{17b3}', IdentifierType::Recommended), ('\u{17b4}', '\u{17b5}',
+ IdentifierType::Default_Ignorable), ('\u{17b6}', '\u{17cd}', IdentifierType::Recommended),
+ ('\u{17ce}', '\u{17cf}', IdentifierType::Technical), ('\u{17d0}', '\u{17d0}',
+ IdentifierType::Recommended), ('\u{17d1}', '\u{17d1}', IdentifierType::Technical),
+ ('\u{17d2}', '\u{17d2}', IdentifierType::Recommended), ('\u{17d3}', '\u{17d3}',
+ IdentifierType::Obsolete), ('\u{17d4}', '\u{17d6}', IdentifierType::Not_XID), ('\u{17d7}',
+ '\u{17d7}', IdentifierType::Recommended), ('\u{17d8}', '\u{17d8}',
+ IdentifierType::Obsolete), ('\u{17d9}', '\u{17db}', IdentifierType::Not_XID), ('\u{17dc}',
+ '\u{17dc}', IdentifierType::Recommended), ('\u{17dd}', '\u{17dd}',
+ IdentifierType::Technical), ('\u{17e0}', '\u{17e9}', IdentifierType::Recommended),
+ ('\u{17f0}', '\u{17f9}', IdentifierType::Not_XID), ('\u{1800}', '\u{180a}',
+ IdentifierType::Exclusion), ('\u{180b}', '\u{180d}', IdentifierType::Default_Ignorable),
+ ('\u{180e}', '\u{180e}', IdentifierType::Default_Ignorable), ('\u{180f}', '\u{180f}',
IdentifierType::Default_Ignorable), ('\u{1810}', '\u{1819}', IdentifierType::Exclusion),
('\u{1820}', '\u{1877}', IdentifierType::Exclusion), ('\u{1878}', '\u{1878}',
IdentifierType::Exclusion), ('\u{1880}', '\u{18a8}', IdentifierType::Exclusion),
@@ -812,9 +832,11 @@ pub mod identifier {
IdentifierType::Limited_Use), ('\u{1aa8}', '\u{1aad}', IdentifierType::Limited_Use),
('\u{1ab0}', '\u{1abd}', IdentifierType::Obsolete), ('\u{1abe}', '\u{1abe}',
IdentifierType::Not_XID), ('\u{1abf}', '\u{1ac0}', IdentifierType::Technical),
- ('\u{1b00}', '\u{1b4b}', IdentifierType::Limited_Use), ('\u{1b50}', '\u{1b59}',
- IdentifierType::Limited_Use), ('\u{1b5a}', '\u{1b6a}', IdentifierType::Limited_Use),
- ('\u{1b6b}', '\u{1b73}', IdentifierType::Limited_Use), ('\u{1b74}', '\u{1b7c}',
+ ('\u{1ac1}', '\u{1ace}', IdentifierType::Uncommon_Use), ('\u{1b00}', '\u{1b4b}',
+ IdentifierType::Limited_Use), ('\u{1b4c}', '\u{1b4c}', IdentifierType::Limited_Use),
+ ('\u{1b50}', '\u{1b59}', IdentifierType::Limited_Use), ('\u{1b5a}', '\u{1b6a}',
+ IdentifierType::Limited_Use), ('\u{1b6b}', '\u{1b73}', IdentifierType::Limited_Use),
+ ('\u{1b74}', '\u{1b7c}', IdentifierType::Limited_Use), ('\u{1b7d}', '\u{1b7e}',
IdentifierType::Limited_Use), ('\u{1b80}', '\u{1baa}', IdentifierType::Limited_Use),
('\u{1bab}', '\u{1bad}', IdentifierType::Limited_Use), ('\u{1bae}', '\u{1bb9}',
IdentifierType::Limited_Use), ('\u{1bba}', '\u{1bbf}', IdentifierType::Limited_Use),
@@ -844,74 +866,73 @@ pub mod identifier {
IdentifierType::Technical), ('\u{1dcf}', '\u{1dd0}', IdentifierType::Technical),
('\u{1dd1}', '\u{1de6}', IdentifierType::Technical), ('\u{1de7}', '\u{1df5}',
IdentifierType::Technical), ('\u{1df6}', '\u{1df9}', IdentifierType::Technical),
- ('\u{1dfb}', '\u{1dfb}', IdentifierType::Technical), ('\u{1dfc}', '\u{1dfc}',
- IdentifierType::Technical), ('\u{1dfd}', '\u{1dfd}', IdentifierType::Technical),
- ('\u{1dfe}', '\u{1dff}', IdentifierType::Technical), ('\u{1e00}', '\u{1e99}',
- IdentifierType::Recommended), ('\u{1e9a}', '\u{1e9a}', IdentifierType::Not_NFKC),
- ('\u{1e9b}', '\u{1e9b}', IdentifierType::Not_NFKC), ('\u{1e9c}', '\u{1e9d}',
- IdentifierType::Technical), ('\u{1e9e}', '\u{1e9e}', IdentifierType::Recommended),
- ('\u{1e9f}', '\u{1e9f}', IdentifierType::Technical), ('\u{1ea0}', '\u{1ef9}',
- IdentifierType::Recommended), ('\u{1efa}', '\u{1eff}', IdentifierType::Technical),
- ('\u{1f00}', '\u{1f15}', IdentifierType::Recommended), ('\u{1f18}', '\u{1f1d}',
- IdentifierType::Recommended), ('\u{1f20}', '\u{1f45}', IdentifierType::Recommended),
- ('\u{1f48}', '\u{1f4d}', IdentifierType::Recommended), ('\u{1f50}', '\u{1f57}',
- IdentifierType::Recommended), ('\u{1f59}', '\u{1f59}', IdentifierType::Recommended),
- ('\u{1f5b}', '\u{1f5b}', IdentifierType::Recommended), ('\u{1f5d}', '\u{1f5d}',
- IdentifierType::Recommended), ('\u{1f5f}', '\u{1f70}', IdentifierType::Recommended),
- ('\u{1f71}', '\u{1f71}', IdentifierType::Not_NFKC), ('\u{1f72}', '\u{1f72}',
- IdentifierType::Recommended), ('\u{1f73}', '\u{1f73}', IdentifierType::Not_NFKC),
- ('\u{1f74}', '\u{1f74}', IdentifierType::Recommended), ('\u{1f75}', '\u{1f75}',
- IdentifierType::Not_NFKC), ('\u{1f76}', '\u{1f76}', IdentifierType::Recommended),
- ('\u{1f77}', '\u{1f77}', IdentifierType::Not_NFKC), ('\u{1f78}', '\u{1f78}',
- IdentifierType::Recommended), ('\u{1f79}', '\u{1f79}', IdentifierType::Not_NFKC),
- ('\u{1f7a}', '\u{1f7a}', IdentifierType::Recommended), ('\u{1f7b}', '\u{1f7b}',
- IdentifierType::Not_NFKC), ('\u{1f7c}', '\u{1f7c}', IdentifierType::Recommended),
- ('\u{1f7d}', '\u{1f7d}', IdentifierType::Not_NFKC), ('\u{1f80}', '\u{1fb4}',
- IdentifierType::Recommended), ('\u{1fb6}', '\u{1fba}', IdentifierType::Recommended),
- ('\u{1fbb}', '\u{1fbb}', IdentifierType::Not_NFKC), ('\u{1fbc}', '\u{1fbc}',
- IdentifierType::Recommended), ('\u{1fbd}', '\u{1fc1}', IdentifierType::Not_NFKC),
- ('\u{1fc2}', '\u{1fc4}', IdentifierType::Recommended), ('\u{1fc6}', '\u{1fc8}',
- IdentifierType::Recommended), ('\u{1fc9}', '\u{1fc9}', IdentifierType::Not_NFKC),
- ('\u{1fca}', '\u{1fca}', IdentifierType::Recommended), ('\u{1fcb}', '\u{1fcb}',
- IdentifierType::Not_NFKC), ('\u{1fcc}', '\u{1fcc}', IdentifierType::Recommended),
- ('\u{1fcd}', '\u{1fcf}', IdentifierType::Not_NFKC), ('\u{1fd0}', '\u{1fd2}',
- IdentifierType::Recommended), ('\u{1fd3}', '\u{1fd3}', IdentifierType::Not_NFKC),
- ('\u{1fd6}', '\u{1fda}', IdentifierType::Recommended), ('\u{1fdb}', '\u{1fdb}',
- IdentifierType::Not_NFKC), ('\u{1fdd}', '\u{1fdf}', IdentifierType::Not_NFKC),
- ('\u{1fe0}', '\u{1fe2}', IdentifierType::Recommended), ('\u{1fe3}', '\u{1fe3}',
- IdentifierType::Not_NFKC), ('\u{1fe4}', '\u{1fea}', IdentifierType::Recommended),
- ('\u{1feb}', '\u{1feb}', IdentifierType::Not_NFKC), ('\u{1fec}', '\u{1fec}',
- IdentifierType::Recommended), ('\u{1fed}', '\u{1fef}', IdentifierType::Not_NFKC),
- ('\u{1ff2}', '\u{1ff4}', IdentifierType::Recommended), ('\u{1ff6}', '\u{1ff8}',
- IdentifierType::Recommended), ('\u{1ff9}', '\u{1ff9}', IdentifierType::Not_NFKC),
- ('\u{1ffa}', '\u{1ffa}', IdentifierType::Recommended), ('\u{1ffb}', '\u{1ffb}',
- IdentifierType::Not_NFKC), ('\u{1ffc}', '\u{1ffc}', IdentifierType::Recommended),
- ('\u{1ffd}', '\u{1ffe}', IdentifierType::Not_NFKC), ('\u{2000}', '\u{200a}',
- IdentifierType::Not_NFKC), ('\u{200b}', '\u{200b}', IdentifierType::Default_Ignorable),
- ('\u{200c}', '\u{200d}', IdentifierType::Inclusion), ('\u{200e}', '\u{200f}',
- IdentifierType::Default_Ignorable), ('\u{2010}', '\u{2010}', IdentifierType::Inclusion),
- ('\u{2011}', '\u{2011}', IdentifierType::Not_NFKC), ('\u{2012}', '\u{2016}',
- IdentifierType::Not_XID), ('\u{2017}', '\u{2017}', IdentifierType::Not_NFKC), ('\u{2018}',
- '\u{2018}', IdentifierType::Not_XID), ('\u{2019}', '\u{2019}', IdentifierType::Inclusion),
- ('\u{201a}', '\u{2023}', IdentifierType::Not_XID), ('\u{2024}', '\u{2026}',
- IdentifierType::Not_NFKC), ('\u{2027}', '\u{2027}', IdentifierType::Inclusion),
- ('\u{2028}', '\u{2029}', IdentifierType::Not_XID), ('\u{202a}', '\u{202e}',
- IdentifierType::Default_Ignorable), ('\u{202f}', '\u{202f}', IdentifierType::Not_NFKC),
- ('\u{2030}', '\u{2032}', IdentifierType::Not_XID), ('\u{2033}', '\u{2034}',
- IdentifierType::Not_NFKC), ('\u{2035}', '\u{2035}', IdentifierType::Not_XID), ('\u{2036}',
- '\u{2037}', IdentifierType::Not_NFKC), ('\u{2038}', '\u{203b}', IdentifierType::Not_XID),
- ('\u{203c}', '\u{203c}', IdentifierType::Not_NFKC), ('\u{203d}', '\u{203d}',
- IdentifierType::Not_XID), ('\u{203e}', '\u{203e}', IdentifierType::Not_NFKC), ('\u{203f}',
- '\u{2040}', IdentifierType::Technical), ('\u{2041}', '\u{2046}', IdentifierType::Not_XID),
- ('\u{2047}', '\u{2047}', IdentifierType::Not_NFKC), ('\u{2048}', '\u{2049}',
- IdentifierType::Not_NFKC), ('\u{204a}', '\u{204d}', IdentifierType::Not_XID), ('\u{204e}',
- '\u{2052}', IdentifierType::Not_XID), ('\u{2053}', '\u{2053}', IdentifierType::Not_XID),
- ('\u{2054}', '\u{2054}', IdentifierType::Uncommon_Use), ('\u{2055}', '\u{2055}',
- IdentifierType::Not_XID), ('\u{2056}', '\u{2056}', IdentifierType::Obsolete), ('\u{2057}',
- '\u{2057}', IdentifierType::Not_NFKC), ('\u{2058}', '\u{205e}', IdentifierType::Obsolete),
- ('\u{205f}', '\u{205f}', IdentifierType::Not_NFKC), ('\u{2060}', '\u{2063}',
- IdentifierType::Default_Ignorable), ('\u{2064}', '\u{2064}',
- IdentifierType::Default_Ignorable), ('\u{2066}', '\u{2069}',
+ ('\u{1dfa}', '\u{1dfa}', IdentifierType::Limited_Use), ('\u{1dfb}', '\u{1dfb}',
+ IdentifierType::Technical), ('\u{1dfc}', '\u{1dfc}', IdentifierType::Technical),
+ ('\u{1dfd}', '\u{1dfd}', IdentifierType::Technical), ('\u{1dfe}', '\u{1dff}',
+ IdentifierType::Technical), ('\u{1e00}', '\u{1e99}', IdentifierType::Recommended),
+ ('\u{1e9a}', '\u{1e9a}', IdentifierType::Not_NFKC), ('\u{1e9b}', '\u{1e9b}',
+ IdentifierType::Not_NFKC), ('\u{1e9c}', '\u{1e9d}', IdentifierType::Technical),
+ ('\u{1e9e}', '\u{1e9e}', IdentifierType::Recommended), ('\u{1e9f}', '\u{1e9f}',
+ IdentifierType::Technical), ('\u{1ea0}', '\u{1ef9}', IdentifierType::Recommended),
+ ('\u{1efa}', '\u{1eff}', IdentifierType::Technical), ('\u{1f00}', '\u{1f15}',
+ IdentifierType::Recommended), ('\u{1f18}', '\u{1f1d}', IdentifierType::Recommended),
+ ('\u{1f20}', '\u{1f45}', IdentifierType::Recommended), ('\u{1f48}', '\u{1f4d}',
+ IdentifierType::Recommended), ('\u{1f50}', '\u{1f57}', IdentifierType::Recommended),
+ ('\u{1f59}', '\u{1f59}', IdentifierType::Recommended), ('\u{1f5b}', '\u{1f5b}',
+ IdentifierType::Recommended), ('\u{1f5d}', '\u{1f5d}', IdentifierType::Recommended),
+ ('\u{1f5f}', '\u{1f70}', IdentifierType::Recommended), ('\u{1f71}', '\u{1f71}',
+ IdentifierType::Not_NFKC), ('\u{1f72}', '\u{1f72}', IdentifierType::Recommended),
+ ('\u{1f73}', '\u{1f73}', IdentifierType::Not_NFKC), ('\u{1f74}', '\u{1f74}',
+ IdentifierType::Recommended), ('\u{1f75}', '\u{1f75}', IdentifierType::Not_NFKC),
+ ('\u{1f76}', '\u{1f76}', IdentifierType::Recommended), ('\u{1f77}', '\u{1f77}',
+ IdentifierType::Not_NFKC), ('\u{1f78}', '\u{1f78}', IdentifierType::Recommended),
+ ('\u{1f79}', '\u{1f79}', IdentifierType::Not_NFKC), ('\u{1f7a}', '\u{1f7a}',
+ IdentifierType::Recommended), ('\u{1f7b}', '\u{1f7b}', IdentifierType::Not_NFKC),
+ ('\u{1f7c}', '\u{1f7c}', IdentifierType::Recommended), ('\u{1f7d}', '\u{1f7d}',
+ IdentifierType::Not_NFKC), ('\u{1f80}', '\u{1fb4}', IdentifierType::Recommended),
+ ('\u{1fb6}', '\u{1fba}', IdentifierType::Recommended), ('\u{1fbb}', '\u{1fbb}',
+ IdentifierType::Not_NFKC), ('\u{1fbc}', '\u{1fbc}', IdentifierType::Recommended),
+ ('\u{1fbd}', '\u{1fc1}', IdentifierType::Not_NFKC), ('\u{1fc2}', '\u{1fc4}',
+ IdentifierType::Recommended), ('\u{1fc6}', '\u{1fc8}', IdentifierType::Recommended),
+ ('\u{1fc9}', '\u{1fc9}', IdentifierType::Not_NFKC), ('\u{1fca}', '\u{1fca}',
+ IdentifierType::Recommended), ('\u{1fcb}', '\u{1fcb}', IdentifierType::Not_NFKC),
+ ('\u{1fcc}', '\u{1fcc}', IdentifierType::Recommended), ('\u{1fcd}', '\u{1fcf}',
+ IdentifierType::Not_NFKC), ('\u{1fd0}', '\u{1fd2}', IdentifierType::Recommended),
+ ('\u{1fd3}', '\u{1fd3}', IdentifierType::Not_NFKC), ('\u{1fd6}', '\u{1fda}',
+ IdentifierType::Recommended), ('\u{1fdb}', '\u{1fdb}', IdentifierType::Not_NFKC),
+ ('\u{1fdd}', '\u{1fdf}', IdentifierType::Not_NFKC), ('\u{1fe0}', '\u{1fe2}',
+ IdentifierType::Recommended), ('\u{1fe3}', '\u{1fe3}', IdentifierType::Not_NFKC),
+ ('\u{1fe4}', '\u{1fea}', IdentifierType::Recommended), ('\u{1feb}', '\u{1feb}',
+ IdentifierType::Not_NFKC), ('\u{1fec}', '\u{1fec}', IdentifierType::Recommended),
+ ('\u{1fed}', '\u{1fef}', IdentifierType::Not_NFKC), ('\u{1ff2}', '\u{1ff4}',
+ IdentifierType::Recommended), ('\u{1ff6}', '\u{1ff8}', IdentifierType::Recommended),
+ ('\u{1ff9}', '\u{1ff9}', IdentifierType::Not_NFKC), ('\u{1ffa}', '\u{1ffa}',
+ IdentifierType::Recommended), ('\u{1ffb}', '\u{1ffb}', IdentifierType::Not_NFKC),
+ ('\u{1ffc}', '\u{1ffc}', IdentifierType::Recommended), ('\u{1ffd}', '\u{1ffe}',
+ IdentifierType::Not_NFKC), ('\u{2000}', '\u{200a}', IdentifierType::Not_NFKC),
+ ('\u{200b}', '\u{200f}', IdentifierType::Default_Ignorable), ('\u{2010}', '\u{2010}',
+ IdentifierType::Inclusion), ('\u{2011}', '\u{2011}', IdentifierType::Not_NFKC),
+ ('\u{2012}', '\u{2016}', IdentifierType::Not_XID), ('\u{2017}', '\u{2017}',
+ IdentifierType::Not_NFKC), ('\u{2018}', '\u{2018}', IdentifierType::Not_XID), ('\u{2019}',
+ '\u{2019}', IdentifierType::Inclusion), ('\u{201a}', '\u{2023}', IdentifierType::Not_XID),
+ ('\u{2024}', '\u{2026}', IdentifierType::Not_NFKC), ('\u{2027}', '\u{2027}',
+ IdentifierType::Inclusion), ('\u{2028}', '\u{2029}', IdentifierType::Not_XID),
+ ('\u{202a}', '\u{202e}', IdentifierType::Default_Ignorable), ('\u{202f}', '\u{202f}',
+ IdentifierType::Not_NFKC), ('\u{2030}', '\u{2032}', IdentifierType::Not_XID), ('\u{2033}',
+ '\u{2034}', IdentifierType::Not_NFKC), ('\u{2035}', '\u{2035}', IdentifierType::Not_XID),
+ ('\u{2036}', '\u{2037}', IdentifierType::Not_NFKC), ('\u{2038}', '\u{203b}',
+ IdentifierType::Not_XID), ('\u{203c}', '\u{203c}', IdentifierType::Not_NFKC), ('\u{203d}',
+ '\u{203d}', IdentifierType::Not_XID), ('\u{203e}', '\u{203e}', IdentifierType::Not_NFKC),
+ ('\u{203f}', '\u{2040}', IdentifierType::Technical), ('\u{2041}', '\u{2046}',
+ IdentifierType::Not_XID), ('\u{2047}', '\u{2047}', IdentifierType::Not_NFKC), ('\u{2048}',
+ '\u{2049}', IdentifierType::Not_NFKC), ('\u{204a}', '\u{204d}', IdentifierType::Not_XID),
+ ('\u{204e}', '\u{2052}', IdentifierType::Not_XID), ('\u{2053}', '\u{2053}',
+ IdentifierType::Not_XID), ('\u{2054}', '\u{2054}', IdentifierType::Uncommon_Use),
+ ('\u{2055}', '\u{2055}', IdentifierType::Not_XID), ('\u{2056}', '\u{2056}',
+ IdentifierType::Obsolete), ('\u{2057}', '\u{2057}', IdentifierType::Not_NFKC),
+ ('\u{2058}', '\u{205e}', IdentifierType::Obsolete), ('\u{205f}', '\u{205f}',
+ IdentifierType::Not_NFKC), ('\u{2060}', '\u{2063}', IdentifierType::Default_Ignorable),
+ ('\u{2064}', '\u{2064}', IdentifierType::Default_Ignorable), ('\u{2066}', '\u{2069}',
IdentifierType::Default_Ignorable), ('\u{206a}', '\u{206f}', IdentifierType::Deprecated),
('\u{2070}', '\u{2070}', IdentifierType::Not_NFKC), ('\u{2071}', '\u{2071}',
IdentifierType::Not_NFKC), ('\u{2074}', '\u{208e}', IdentifierType::Not_NFKC),
@@ -924,18 +945,19 @@ pub mod identifier {
('\u{20b6}', '\u{20b8}', IdentifierType::Not_XID), ('\u{20b9}', '\u{20b9}',
IdentifierType::Not_XID), ('\u{20ba}', '\u{20ba}', IdentifierType::Not_XID), ('\u{20bb}',
'\u{20bd}', IdentifierType::Not_XID), ('\u{20be}', '\u{20be}', IdentifierType::Not_XID),
- ('\u{20bf}', '\u{20bf}', IdentifierType::Not_XID), ('\u{20d0}', '\u{20dc}',
- IdentifierType::Technical), ('\u{20dd}', '\u{20e0}', IdentifierType::Technical),
- ('\u{20e1}', '\u{20e1}', IdentifierType::Technical), ('\u{20e2}', '\u{20e3}',
- IdentifierType::Technical), ('\u{20e4}', '\u{20e4}', IdentifierType::Technical),
- ('\u{20e5}', '\u{20ea}', IdentifierType::Technical), ('\u{20eb}', '\u{20eb}',
- IdentifierType::Technical), ('\u{20ec}', '\u{20ef}', IdentifierType::Technical),
- ('\u{20f0}', '\u{20f0}', IdentifierType::Technical), ('\u{2100}', '\u{2103}',
- IdentifierType::Not_NFKC), ('\u{2104}', '\u{2104}', IdentifierType::Not_XID), ('\u{2105}',
- '\u{2107}', IdentifierType::Not_NFKC), ('\u{2108}', '\u{2108}', IdentifierType::Not_XID),
- ('\u{2109}', '\u{2113}', IdentifierType::Not_NFKC), ('\u{2114}', '\u{2114}',
- IdentifierType::Not_XID), ('\u{2115}', '\u{2116}', IdentifierType::Not_NFKC), ('\u{2117}',
- '\u{2117}', IdentifierType::Not_XID), ('\u{2118}', '\u{2118}', IdentifierType::Technical),
+ ('\u{20bf}', '\u{20bf}', IdentifierType::Not_XID), ('\u{20c0}', '\u{20c0}',
+ IdentifierType::Not_XID), ('\u{20d0}', '\u{20dc}', IdentifierType::Technical),
+ ('\u{20dd}', '\u{20e0}', IdentifierType::Technical), ('\u{20e1}', '\u{20e1}',
+ IdentifierType::Technical), ('\u{20e2}', '\u{20e3}', IdentifierType::Technical),
+ ('\u{20e4}', '\u{20e4}', IdentifierType::Technical), ('\u{20e5}', '\u{20ea}',
+ IdentifierType::Technical), ('\u{20eb}', '\u{20eb}', IdentifierType::Technical),
+ ('\u{20ec}', '\u{20ef}', IdentifierType::Technical), ('\u{20f0}', '\u{20f0}',
+ IdentifierType::Technical), ('\u{2100}', '\u{2103}', IdentifierType::Not_NFKC),
+ ('\u{2104}', '\u{2104}', IdentifierType::Not_XID), ('\u{2105}', '\u{2107}',
+ IdentifierType::Not_NFKC), ('\u{2108}', '\u{2108}', IdentifierType::Not_XID), ('\u{2109}',
+ '\u{2113}', IdentifierType::Not_NFKC), ('\u{2114}', '\u{2114}', IdentifierType::Not_XID),
+ ('\u{2115}', '\u{2116}', IdentifierType::Not_NFKC), ('\u{2117}', '\u{2117}',
+ IdentifierType::Not_XID), ('\u{2118}', '\u{2118}', IdentifierType::Technical),
('\u{2119}', '\u{211d}', IdentifierType::Not_NFKC), ('\u{211e}', '\u{211f}',
IdentifierType::Not_XID), ('\u{2120}', '\u{2122}', IdentifierType::Not_NFKC), ('\u{2123}',
'\u{2123}', IdentifierType::Not_XID), ('\u{2124}', '\u{2124}', IdentifierType::Not_NFKC),
@@ -1036,42 +1058,44 @@ pub mod identifier {
'\u{2bd2}', IdentifierType::Not_XID), ('\u{2bd3}', '\u{2beb}', IdentifierType::Not_XID),
('\u{2bec}', '\u{2bef}', IdentifierType::Uncommon_Use), ('\u{2bf0}', '\u{2bfe}',
IdentifierType::Not_XID), ('\u{2bff}', '\u{2bff}', IdentifierType::Not_XID), ('\u{2c00}',
- '\u{2c2e}', IdentifierType::Exclusion), ('\u{2c30}', '\u{2c5e}',
- IdentifierType::Exclusion), ('\u{2c60}', '\u{2c67}', IdentifierType::Technical),
- ('\u{2c68}', '\u{2c6c}', IdentifierType::Uncommon_Use), ('\u{2c6d}', '\u{2c6f}',
- IdentifierType::Obsolete), ('\u{2c70}', '\u{2c70}', IdentifierType::Obsolete),
- ('\u{2c71}', '\u{2c73}', IdentifierType::Obsolete), ('\u{2c74}', '\u{2c76}',
- IdentifierType::Obsolete), ('\u{2c77}', '\u{2c77}', IdentifierType::Technical),
- ('\u{2c78}', '\u{2c7b}', IdentifierType::Technical), ('\u{2c7c}', '\u{2c7d}',
- IdentifierType::Not_NFKC), ('\u{2c7e}', '\u{2c7f}', IdentifierType::Obsolete),
- ('\u{2c80}', '\u{2ce4}', IdentifierType::Exclusion), ('\u{2ce5}', '\u{2cea}',
- IdentifierType::Exclusion), ('\u{2ceb}', '\u{2cef}', IdentifierType::Exclusion),
- ('\u{2cf0}', '\u{2cf1}', IdentifierType::Technical), ('\u{2cf2}', '\u{2cf3}',
- IdentifierType::Exclusion), ('\u{2cf9}', '\u{2cff}', IdentifierType::Exclusion),
- ('\u{2d00}', '\u{2d25}', IdentifierType::Obsolete), ('\u{2d27}', '\u{2d27}',
- IdentifierType::Recommended), ('\u{2d2d}', '\u{2d2d}', IdentifierType::Recommended),
- ('\u{2d30}', '\u{2d65}', IdentifierType::Limited_Use), ('\u{2d66}', '\u{2d67}',
- IdentifierType::Limited_Use), ('\u{2d6f}', '\u{2d6f}', IdentifierType::Not_NFKC),
- ('\u{2d70}', '\u{2d70}', IdentifierType::Limited_Use), ('\u{2d7f}', '\u{2d7f}',
- IdentifierType::Limited_Use), ('\u{2d80}', '\u{2d96}', IdentifierType::Recommended),
- ('\u{2da0}', '\u{2da6}', IdentifierType::Recommended), ('\u{2da8}', '\u{2dae}',
- IdentifierType::Recommended), ('\u{2db0}', '\u{2db6}', IdentifierType::Recommended),
- ('\u{2db8}', '\u{2dbe}', IdentifierType::Recommended), ('\u{2dc0}', '\u{2dc6}',
- IdentifierType::Recommended), ('\u{2dc8}', '\u{2dce}', IdentifierType::Recommended),
- ('\u{2dd0}', '\u{2dd6}', IdentifierType::Recommended), ('\u{2dd8}', '\u{2dde}',
- IdentifierType::Recommended), ('\u{2de0}', '\u{2dff}', IdentifierType::Obsolete),
- ('\u{2e00}', '\u{2e0d}', IdentifierType::Technical), ('\u{2e0e}', '\u{2e16}',
- IdentifierType::Obsolete), ('\u{2e17}', '\u{2e17}', IdentifierType::Not_XID), ('\u{2e18}',
- '\u{2e1b}', IdentifierType::Not_XID), ('\u{2e1c}', '\u{2e1d}', IdentifierType::Not_XID),
- ('\u{2e1e}', '\u{2e29}', IdentifierType::Not_XID), ('\u{2e2a}', '\u{2e30}',
- IdentifierType::Obsolete), ('\u{2e31}', '\u{2e31}', IdentifierType::Obsolete),
- ('\u{2e32}', '\u{2e32}', IdentifierType::Obsolete), ('\u{2e33}', '\u{2e34}',
- IdentifierType::Not_XID), ('\u{2e35}', '\u{2e35}', IdentifierType::Obsolete), ('\u{2e36}',
- '\u{2e38}', IdentifierType::Not_XID), ('\u{2e39}', '\u{2e39}', IdentifierType::Obsolete),
- ('\u{2e3a}', '\u{2e3b}', IdentifierType::Not_XID), ('\u{2e3c}', '\u{2e42}',
- IdentifierType::Not_XID), ('\u{2e43}', '\u{2e44}', IdentifierType::Not_XID), ('\u{2e45}',
- '\u{2e49}', IdentifierType::Not_XID), ('\u{2e4a}', '\u{2e4e}', IdentifierType::Not_XID),
- ('\u{2e4f}', '\u{2e4f}', IdentifierType::Not_XID), ('\u{2e50}', '\u{2e52}',
+ '\u{2c2e}', IdentifierType::Exclusion), ('\u{2c2f}', '\u{2c2f}',
+ IdentifierType::Exclusion), ('\u{2c30}', '\u{2c5e}', IdentifierType::Exclusion),
+ ('\u{2c5f}', '\u{2c5f}', IdentifierType::Exclusion), ('\u{2c60}', '\u{2c67}',
+ IdentifierType::Technical), ('\u{2c68}', '\u{2c6c}', IdentifierType::Uncommon_Use),
+ ('\u{2c6d}', '\u{2c6f}', IdentifierType::Obsolete), ('\u{2c70}', '\u{2c70}',
+ IdentifierType::Obsolete), ('\u{2c71}', '\u{2c73}', IdentifierType::Obsolete),
+ ('\u{2c74}', '\u{2c76}', IdentifierType::Obsolete), ('\u{2c77}', '\u{2c77}',
+ IdentifierType::Technical), ('\u{2c78}', '\u{2c7b}', IdentifierType::Technical),
+ ('\u{2c7c}', '\u{2c7d}', IdentifierType::Not_NFKC), ('\u{2c7e}', '\u{2c7f}',
+ IdentifierType::Obsolete), ('\u{2c80}', '\u{2ce4}', IdentifierType::Exclusion),
+ ('\u{2ce5}', '\u{2cea}', IdentifierType::Exclusion), ('\u{2ceb}', '\u{2cef}',
+ IdentifierType::Exclusion), ('\u{2cf0}', '\u{2cf1}', IdentifierType::Technical),
+ ('\u{2cf2}', '\u{2cf3}', IdentifierType::Exclusion), ('\u{2cf9}', '\u{2cff}',
+ IdentifierType::Exclusion), ('\u{2d00}', '\u{2d25}', IdentifierType::Obsolete),
+ ('\u{2d27}', '\u{2d27}', IdentifierType::Recommended), ('\u{2d2d}', '\u{2d2d}',
+ IdentifierType::Recommended), ('\u{2d30}', '\u{2d65}', IdentifierType::Limited_Use),
+ ('\u{2d66}', '\u{2d67}', IdentifierType::Limited_Use), ('\u{2d6f}', '\u{2d6f}',
+ IdentifierType::Not_NFKC), ('\u{2d70}', '\u{2d70}', IdentifierType::Limited_Use),
+ ('\u{2d7f}', '\u{2d7f}', IdentifierType::Limited_Use), ('\u{2d80}', '\u{2d96}',
+ IdentifierType::Recommended), ('\u{2da0}', '\u{2da6}', IdentifierType::Recommended),
+ ('\u{2da8}', '\u{2dae}', IdentifierType::Recommended), ('\u{2db0}', '\u{2db6}',
+ IdentifierType::Recommended), ('\u{2db8}', '\u{2dbe}', IdentifierType::Recommended),
+ ('\u{2dc0}', '\u{2dc6}', IdentifierType::Recommended), ('\u{2dc8}', '\u{2dce}',
+ IdentifierType::Recommended), ('\u{2dd0}', '\u{2dd6}', IdentifierType::Recommended),
+ ('\u{2dd8}', '\u{2dde}', IdentifierType::Recommended), ('\u{2de0}', '\u{2dff}',
+ IdentifierType::Obsolete), ('\u{2e00}', '\u{2e0d}', IdentifierType::Technical),
+ ('\u{2e0e}', '\u{2e16}', IdentifierType::Obsolete), ('\u{2e17}', '\u{2e17}',
+ IdentifierType::Not_XID), ('\u{2e18}', '\u{2e1b}', IdentifierType::Not_XID), ('\u{2e1c}',
+ '\u{2e1d}', IdentifierType::Not_XID), ('\u{2e1e}', '\u{2e29}', IdentifierType::Not_XID),
+ ('\u{2e2a}', '\u{2e30}', IdentifierType::Obsolete), ('\u{2e31}', '\u{2e31}',
+ IdentifierType::Obsolete), ('\u{2e32}', '\u{2e32}', IdentifierType::Obsolete),
+ ('\u{2e33}', '\u{2e34}', IdentifierType::Not_XID), ('\u{2e35}', '\u{2e35}',
+ IdentifierType::Obsolete), ('\u{2e36}', '\u{2e38}', IdentifierType::Not_XID), ('\u{2e39}',
+ '\u{2e39}', IdentifierType::Obsolete), ('\u{2e3a}', '\u{2e3b}', IdentifierType::Not_XID),
+ ('\u{2e3c}', '\u{2e42}', IdentifierType::Not_XID), ('\u{2e43}', '\u{2e44}',
+ IdentifierType::Not_XID), ('\u{2e45}', '\u{2e49}', IdentifierType::Not_XID), ('\u{2e4a}',
+ '\u{2e4e}', IdentifierType::Not_XID), ('\u{2e4f}', '\u{2e4f}', IdentifierType::Not_XID),
+ ('\u{2e50}', '\u{2e52}', IdentifierType::Not_XID), ('\u{2e53}', '\u{2e5d}',
IdentifierType::Not_XID), ('\u{2e80}', '\u{2e99}', IdentifierType::Not_XID), ('\u{2e9b}',
'\u{2e9e}', IdentifierType::Not_XID), ('\u{2e9f}', '\u{2e9f}', IdentifierType::Not_NFKC),
('\u{2ea0}', '\u{2ef2}', IdentifierType::Not_XID), ('\u{2ef3}', '\u{2ef3}',
@@ -1104,11 +1128,11 @@ pub mod identifier {
IdentifierType::Recommended), ('\u{31b8}', '\u{31ba}', IdentifierType::Recommended),
('\u{31bb}', '\u{31bf}', IdentifierType::Recommended), ('\u{31c0}', '\u{31cf}',
IdentifierType::Not_XID), ('\u{31d0}', '\u{31e3}', IdentifierType::Not_XID), ('\u{31f0}',
- '\u{31ff}', IdentifierType::Technical), ('\u{3200}', '\u{321c}',
- IdentifierType::Not_NFKC), ('\u{321d}', '\u{321e}', IdentifierType::Not_NFKC),
- ('\u{3220}', '\u{3243}', IdentifierType::Not_NFKC), ('\u{3244}', '\u{3247}',
- IdentifierType::Not_NFKC), ('\u{3248}', '\u{324f}', IdentifierType::Not_XID), ('\u{3250}',
- '\u{3250}', IdentifierType::Not_NFKC), ('\u{3251}', '\u{325f}', IdentifierType::Not_NFKC),
+ '\u{31ff}', IdentifierType::Obsolete), ('\u{3200}', '\u{321c}', IdentifierType::Not_NFKC),
+ ('\u{321d}', '\u{321e}', IdentifierType::Not_NFKC), ('\u{3220}', '\u{3243}',
+ IdentifierType::Not_NFKC), ('\u{3244}', '\u{3247}', IdentifierType::Not_NFKC),
+ ('\u{3248}', '\u{324f}', IdentifierType::Not_XID), ('\u{3250}', '\u{3250}',
+ IdentifierType::Not_NFKC), ('\u{3251}', '\u{325f}', IdentifierType::Not_NFKC),
('\u{3260}', '\u{327b}', IdentifierType::Not_NFKC), ('\u{327c}', '\u{327d}',
IdentifierType::Not_NFKC), ('\u{327e}', '\u{327e}', IdentifierType::Not_NFKC),
('\u{327f}', '\u{327f}', IdentifierType::Technical), ('\u{3280}', '\u{32b0}',
@@ -1127,48 +1151,52 @@ pub mod identifier {
IdentifierType::Recommended), ('\u{9fcc}', '\u{9fcc}', IdentifierType::Recommended),
('\u{9fcd}', '\u{9fd5}', IdentifierType::Recommended), ('\u{9fd6}', '\u{9fea}',
IdentifierType::Recommended), ('\u{9feb}', '\u{9fef}', IdentifierType::Recommended),
- ('\u{9ff0}', '\u{9ffc}', IdentifierType::Recommended), ('\u{a000}', '\u{a48c}',
- IdentifierType::Limited_Use), ('\u{a490}', '\u{a4a1}', IdentifierType::Limited_Use),
- ('\u{a4a2}', '\u{a4a3}', IdentifierType::Limited_Use), ('\u{a4a4}', '\u{a4b3}',
- IdentifierType::Limited_Use), ('\u{a4b4}', '\u{a4b4}', IdentifierType::Limited_Use),
- ('\u{a4b5}', '\u{a4c0}', IdentifierType::Limited_Use), ('\u{a4c1}', '\u{a4c1}',
- IdentifierType::Limited_Use), ('\u{a4c2}', '\u{a4c4}', IdentifierType::Limited_Use),
- ('\u{a4c5}', '\u{a4c5}', IdentifierType::Limited_Use), ('\u{a4c6}', '\u{a4c6}',
- IdentifierType::Limited_Use), ('\u{a4d0}', '\u{a4fd}', IdentifierType::Limited_Use),
- ('\u{a4fe}', '\u{a4ff}', IdentifierType::Limited_Use), ('\u{a500}', '\u{a60c}',
- IdentifierType::Limited_Use), ('\u{a60d}', '\u{a60f}', IdentifierType::Limited_Use),
- ('\u{a610}', '\u{a612}', IdentifierType::Limited_Use), ('\u{a613}', '\u{a629}',
- IdentifierType::Limited_Use), ('\u{a62a}', '\u{a62b}', IdentifierType::Limited_Use),
- ('\u{a640}', '\u{a65f}', IdentifierType::Obsolete), ('\u{a660}', '\u{a661}',
- IdentifierType::Obsolete), ('\u{a662}', '\u{a66e}', IdentifierType::Obsolete),
- ('\u{a66f}', '\u{a66f}', IdentifierType::Uncommon_Use), ('\u{a670}', '\u{a673}',
- IdentifierType::Obsolete), ('\u{a674}', '\u{a67b}', IdentifierType::Obsolete),
- ('\u{a67c}', '\u{a67d}', IdentifierType::Uncommon_Use), ('\u{a67e}', '\u{a67e}',
- IdentifierType::Not_XID), ('\u{a67f}', '\u{a67f}', IdentifierType::Recommended),
- ('\u{a680}', '\u{a697}', IdentifierType::Obsolete), ('\u{a698}', '\u{a69b}',
- IdentifierType::Obsolete), ('\u{a69c}', '\u{a69d}', IdentifierType::Not_NFKC),
- ('\u{a69e}', '\u{a69e}', IdentifierType::Uncommon_Use), ('\u{a69f}', '\u{a69f}',
- IdentifierType::Obsolete), ('\u{a6a0}', '\u{a6f1}', IdentifierType::Limited_Use),
- ('\u{a6f2}', '\u{a6f7}', IdentifierType::Limited_Use), ('\u{a700}', '\u{a707}',
- IdentifierType::Obsolete), ('\u{a708}', '\u{a716}', IdentifierType::Technical),
- ('\u{a717}', '\u{a71a}', IdentifierType::Recommended), ('\u{a71b}', '\u{a71f}',
- IdentifierType::Recommended), ('\u{a720}', '\u{a721}', IdentifierType::Not_XID),
- ('\u{a722}', '\u{a72f}', IdentifierType::Technical), ('\u{a730}', '\u{a76f}',
- IdentifierType::Obsolete), ('\u{a770}', '\u{a770}', IdentifierType::Not_NFKC),
- ('\u{a771}', '\u{a787}', IdentifierType::Obsolete), ('\u{a788}', '\u{a788}',
- IdentifierType::Recommended), ('\u{a789}', '\u{a78a}', IdentifierType::Not_XID),
- ('\u{a78b}', '\u{a78c}', IdentifierType::Uncommon_Use), ('\u{a78d}', '\u{a78d}',
- IdentifierType::Recommended), ('\u{a78e}', '\u{a78e}', IdentifierType::Technical),
- ('\u{a78f}', '\u{a78f}', IdentifierType::Uncommon_Use), ('\u{a790}', '\u{a791}',
- IdentifierType::Obsolete), ('\u{a792}', '\u{a793}', IdentifierType::Recommended),
- ('\u{a794}', '\u{a79f}', IdentifierType::Obsolete), ('\u{a7a0}', '\u{a7a9}',
- IdentifierType::Obsolete), ('\u{a7aa}', '\u{a7aa}', IdentifierType::Recommended),
- ('\u{a7ab}', '\u{a7ad}', IdentifierType::Obsolete), ('\u{a7ae}', '\u{a7ae}',
- IdentifierType::Recommended), ('\u{a7af}', '\u{a7af}', IdentifierType::Technical),
- ('\u{a7b0}', '\u{a7b1}', IdentifierType::Obsolete), ('\u{a7b2}', '\u{a7b7}',
- IdentifierType::Uncommon_Use), ('\u{a7b8}', '\u{a7b9}', IdentifierType::Recommended),
- ('\u{a7ba}', '\u{a7bf}', IdentifierType::Technical), ('\u{a7c2}', '\u{a7c6}',
- IdentifierType::Recommended), ('\u{a7c7}', '\u{a7ca}', IdentifierType::Recommended),
+ ('\u{9ff0}', '\u{9ffc}', IdentifierType::Recommended), ('\u{9ffd}', '\u{9fff}',
+ IdentifierType::Recommended), ('\u{a000}', '\u{a48c}', IdentifierType::Limited_Use),
+ ('\u{a490}', '\u{a4a1}', IdentifierType::Limited_Use), ('\u{a4a2}', '\u{a4a3}',
+ IdentifierType::Limited_Use), ('\u{a4a4}', '\u{a4b3}', IdentifierType::Limited_Use),
+ ('\u{a4b4}', '\u{a4b4}', IdentifierType::Limited_Use), ('\u{a4b5}', '\u{a4c0}',
+ IdentifierType::Limited_Use), ('\u{a4c1}', '\u{a4c1}', IdentifierType::Limited_Use),
+ ('\u{a4c2}', '\u{a4c4}', IdentifierType::Limited_Use), ('\u{a4c5}', '\u{a4c5}',
+ IdentifierType::Limited_Use), ('\u{a4c6}', '\u{a4c6}', IdentifierType::Limited_Use),
+ ('\u{a4d0}', '\u{a4fd}', IdentifierType::Limited_Use), ('\u{a4fe}', '\u{a4ff}',
+ IdentifierType::Limited_Use), ('\u{a500}', '\u{a60c}', IdentifierType::Limited_Use),
+ ('\u{a60d}', '\u{a60f}', IdentifierType::Limited_Use), ('\u{a610}', '\u{a612}',
+ IdentifierType::Limited_Use), ('\u{a613}', '\u{a629}', IdentifierType::Limited_Use),
+ ('\u{a62a}', '\u{a62b}', IdentifierType::Limited_Use), ('\u{a640}', '\u{a65f}',
+ IdentifierType::Obsolete), ('\u{a660}', '\u{a661}', IdentifierType::Obsolete),
+ ('\u{a662}', '\u{a66e}', IdentifierType::Obsolete), ('\u{a66f}', '\u{a66f}',
+ IdentifierType::Uncommon_Use), ('\u{a670}', '\u{a673}', IdentifierType::Obsolete),
+ ('\u{a674}', '\u{a67b}', IdentifierType::Obsolete), ('\u{a67c}', '\u{a67d}',
+ IdentifierType::Uncommon_Use), ('\u{a67e}', '\u{a67e}', IdentifierType::Not_XID),
+ ('\u{a67f}', '\u{a67f}', IdentifierType::Recommended), ('\u{a680}', '\u{a697}',
+ IdentifierType::Obsolete), ('\u{a698}', '\u{a69b}', IdentifierType::Obsolete),
+ ('\u{a69c}', '\u{a69d}', IdentifierType::Not_NFKC), ('\u{a69e}', '\u{a69e}',
+ IdentifierType::Uncommon_Use), ('\u{a69f}', '\u{a69f}', IdentifierType::Obsolete),
+ ('\u{a6a0}', '\u{a6f1}', IdentifierType::Limited_Use), ('\u{a6f2}', '\u{a6f7}',
+ IdentifierType::Limited_Use), ('\u{a700}', '\u{a707}', IdentifierType::Obsolete),
+ ('\u{a708}', '\u{a716}', IdentifierType::Technical), ('\u{a717}', '\u{a71a}',
+ IdentifierType::Recommended), ('\u{a71b}', '\u{a71f}', IdentifierType::Recommended),
+ ('\u{a720}', '\u{a721}', IdentifierType::Not_XID), ('\u{a722}', '\u{a72f}',
+ IdentifierType::Technical), ('\u{a730}', '\u{a76f}', IdentifierType::Obsolete),
+ ('\u{a770}', '\u{a770}', IdentifierType::Not_NFKC), ('\u{a771}', '\u{a787}',
+ IdentifierType::Obsolete), ('\u{a788}', '\u{a788}', IdentifierType::Recommended),
+ ('\u{a789}', '\u{a78a}', IdentifierType::Not_XID), ('\u{a78b}', '\u{a78c}',
+ IdentifierType::Uncommon_Use), ('\u{a78d}', '\u{a78d}', IdentifierType::Recommended),
+ ('\u{a78e}', '\u{a78e}', IdentifierType::Technical), ('\u{a78f}', '\u{a78f}',
+ IdentifierType::Uncommon_Use), ('\u{a790}', '\u{a791}', IdentifierType::Obsolete),
+ ('\u{a792}', '\u{a793}', IdentifierType::Recommended), ('\u{a794}', '\u{a79f}',
+ IdentifierType::Obsolete), ('\u{a7a0}', '\u{a7a9}', IdentifierType::Obsolete),
+ ('\u{a7aa}', '\u{a7aa}', IdentifierType::Recommended), ('\u{a7ab}', '\u{a7ad}',
+ IdentifierType::Obsolete), ('\u{a7ae}', '\u{a7ae}', IdentifierType::Technical),
+ ('\u{a7af}', '\u{a7af}', IdentifierType::Technical), ('\u{a7b0}', '\u{a7b1}',
+ IdentifierType::Obsolete), ('\u{a7b2}', '\u{a7b7}', IdentifierType::Uncommon_Use),
+ ('\u{a7b8}', '\u{a7b9}', IdentifierType::Uncommon_Use), ('\u{a7ba}', '\u{a7bf}',
+ IdentifierType::Technical), ('\u{a7c0}', '\u{a7c1}', IdentifierType::Recommended),
+ ('\u{a7c2}', '\u{a7c6}', IdentifierType::Recommended), ('\u{a7c7}', '\u{a7ca}',
+ IdentifierType::Recommended), ('\u{a7d0}', '\u{a7d1}', IdentifierType::Recommended),
+ ('\u{a7d3}', '\u{a7d3}', IdentifierType::Recommended), ('\u{a7d5}', '\u{a7d9}',
+ IdentifierType::Recommended), ('\u{a7f2}', '\u{a7f4}', IdentifierType::Not_NFKC),
('\u{a7f5}', '\u{a7f6}', IdentifierType::Obsolete), ('\u{a7f7}', '\u{a7f7}',
IdentifierType::Obsolete), ('\u{a7f8}', '\u{a7f9}', IdentifierType::Not_NFKC),
('\u{a7fa}', '\u{a7fa}', IdentifierType::Technical), ('\u{a7fb}', '\u{a7ff}',
@@ -1235,119 +1263,133 @@ pub mod identifier {
IdentifierType::Not_NFKC), ('\u{fb3e}', '\u{fb3e}', IdentifierType::Not_NFKC),
('\u{fb40}', '\u{fb41}', IdentifierType::Not_NFKC), ('\u{fb43}', '\u{fb44}',
IdentifierType::Not_NFKC), ('\u{fb46}', '\u{fbb1}', IdentifierType::Not_NFKC),
- ('\u{fbb2}', '\u{fbc1}', IdentifierType::Technical), ('\u{fbd3}', '\u{fd3d}',
- IdentifierType::Not_NFKC), ('\u{fd3e}', '\u{fd3f}', IdentifierType::Technical),
- ('\u{fd50}', '\u{fd8f}', IdentifierType::Not_NFKC), ('\u{fd92}', '\u{fdc7}',
- IdentifierType::Not_NFKC), ('\u{fdf0}', '\u{fdfb}', IdentifierType::Not_NFKC),
+ ('\u{fbb2}', '\u{fbc1}', IdentifierType::Technical), ('\u{fbc2}', '\u{fbc2}',
+ IdentifierType::Technical), ('\u{fbd3}', '\u{fd3d}', IdentifierType::Not_NFKC),
+ ('\u{fd3e}', '\u{fd3f}', IdentifierType::Technical), ('\u{fd40}', '\u{fd4f}',
+ IdentifierType::Technical), ('\u{fd50}', '\u{fd8f}', IdentifierType::Not_NFKC),
+ ('\u{fd92}', '\u{fdc7}', IdentifierType::Not_NFKC), ('\u{fdcf}', '\u{fdcf}',
+ IdentifierType::Technical), ('\u{fdf0}', '\u{fdfb}', IdentifierType::Not_NFKC),
('\u{fdfc}', '\u{fdfc}', IdentifierType::Not_NFKC), ('\u{fdfd}', '\u{fdfd}',
- IdentifierType::Technical), ('\u{fe00}', '\u{fe0f}', IdentifierType::Default_Ignorable),
- ('\u{fe10}', '\u{fe19}', IdentifierType::Not_NFKC), ('\u{fe20}', '\u{fe23}',
- IdentifierType::Technical), ('\u{fe24}', '\u{fe26}', IdentifierType::Technical),
- ('\u{fe27}', '\u{fe2d}', IdentifierType::Technical), ('\u{fe2e}', '\u{fe2f}',
- IdentifierType::Uncommon_Use), ('\u{fe30}', '\u{fe44}', IdentifierType::Not_NFKC),
- ('\u{fe45}', '\u{fe46}', IdentifierType::Technical), ('\u{fe47}', '\u{fe48}',
- IdentifierType::Not_NFKC), ('\u{fe49}', '\u{fe52}', IdentifierType::Not_NFKC),
- ('\u{fe54}', '\u{fe66}', IdentifierType::Not_NFKC), ('\u{fe68}', '\u{fe6b}',
- IdentifierType::Not_NFKC), ('\u{fe70}', '\u{fe72}', IdentifierType::Not_NFKC),
- ('\u{fe73}', '\u{fe73}', IdentifierType::Technical), ('\u{fe74}', '\u{fe74}',
- IdentifierType::Not_NFKC), ('\u{fe76}', '\u{fefc}', IdentifierType::Not_NFKC),
- ('\u{feff}', '\u{feff}', IdentifierType::Default_Ignorable), ('\u{ff01}', '\u{ff5e}',
- IdentifierType::Not_NFKC), ('\u{ff5f}', '\u{ff60}', IdentifierType::Not_NFKC),
- ('\u{ff61}', '\u{ff9f}', IdentifierType::Not_NFKC), ('\u{ffa0}', '\u{ffa0}',
- IdentifierType::Default_Ignorable), ('\u{ffa1}', '\u{ffbe}', IdentifierType::Not_NFKC),
- ('\u{ffc2}', '\u{ffc7}', IdentifierType::Not_NFKC), ('\u{ffca}', '\u{ffcf}',
- IdentifierType::Not_NFKC), ('\u{ffd2}', '\u{ffd7}', IdentifierType::Not_NFKC),
- ('\u{ffda}', '\u{ffdc}', IdentifierType::Not_NFKC), ('\u{ffe0}', '\u{ffe6}',
- IdentifierType::Not_NFKC), ('\u{ffe8}', '\u{ffee}', IdentifierType::Not_NFKC),
- ('\u{fff9}', '\u{fffb}', IdentifierType::Not_XID), ('\u{fffc}', '\u{fffc}',
- IdentifierType::Not_XID), ('\u{fffd}', '\u{fffd}', IdentifierType::Not_XID), ('\u{10000}',
- '\u{1000b}', IdentifierType::Exclusion), ('\u{1000d}', '\u{10026}',
- IdentifierType::Exclusion), ('\u{10028}', '\u{1003a}', IdentifierType::Exclusion),
- ('\u{1003c}', '\u{1003d}', IdentifierType::Exclusion), ('\u{1003f}', '\u{1004d}',
- IdentifierType::Exclusion), ('\u{10050}', '\u{1005d}', IdentifierType::Exclusion),
- ('\u{10080}', '\u{100fa}', IdentifierType::Exclusion), ('\u{10100}', '\u{10102}',
- IdentifierType::Exclusion), ('\u{10107}', '\u{10133}', IdentifierType::Exclusion),
- ('\u{10137}', '\u{1013f}', IdentifierType::Exclusion), ('\u{10140}', '\u{10174}',
- IdentifierType::Obsolete), ('\u{10175}', '\u{1018a}', IdentifierType::Not_XID),
- ('\u{1018b}', '\u{1018c}', IdentifierType::Not_XID), ('\u{1018d}', '\u{1018e}',
- IdentifierType::Not_XID), ('\u{10190}', '\u{1019b}', IdentifierType::Not_XID),
- ('\u{1019c}', '\u{1019c}', IdentifierType::Not_XID), ('\u{101a0}', '\u{101a0}',
- IdentifierType::Not_XID), ('\u{101d0}', '\u{101fc}', IdentifierType::Obsolete),
- ('\u{101fd}', '\u{101fd}', IdentifierType::Obsolete), ('\u{10280}', '\u{1029c}',
- IdentifierType::Exclusion), ('\u{102a0}', '\u{102d0}', IdentifierType::Exclusion),
- ('\u{102e0}', '\u{102e0}', IdentifierType::Obsolete), ('\u{102e1}', '\u{102fb}',
- IdentifierType::Obsolete), ('\u{10300}', '\u{1031e}', IdentifierType::Exclusion),
- ('\u{1031f}', '\u{1031f}', IdentifierType::Exclusion), ('\u{10320}', '\u{10323}',
- IdentifierType::Exclusion), ('\u{1032d}', '\u{1032f}', IdentifierType::Exclusion),
- ('\u{10330}', '\u{1034a}', IdentifierType::Exclusion), ('\u{10350}', '\u{1037a}',
- IdentifierType::Exclusion), ('\u{10380}', '\u{1039d}', IdentifierType::Exclusion),
- ('\u{1039f}', '\u{1039f}', IdentifierType::Exclusion), ('\u{103a0}', '\u{103c3}',
- IdentifierType::Exclusion), ('\u{103c8}', '\u{103cf}', IdentifierType::Exclusion),
- ('\u{103d0}', '\u{103d0}', IdentifierType::Exclusion), ('\u{103d1}', '\u{103d5}',
- IdentifierType::Exclusion), ('\u{10400}', '\u{10425}', IdentifierType::Exclusion),
- ('\u{10426}', '\u{10427}', IdentifierType::Exclusion), ('\u{10428}', '\u{1044d}',
- IdentifierType::Exclusion), ('\u{1044e}', '\u{1049d}', IdentifierType::Exclusion),
- ('\u{104a0}', '\u{104a9}', IdentifierType::Exclusion), ('\u{104b0}', '\u{104d3}',
- IdentifierType::Limited_Use), ('\u{104d8}', '\u{104fb}', IdentifierType::Limited_Use),
- ('\u{10500}', '\u{10527}', IdentifierType::Exclusion), ('\u{10530}', '\u{10563}',
- IdentifierType::Exclusion), ('\u{1056f}', '\u{1056f}', IdentifierType::Exclusion),
+ IdentifierType::Technical), ('\u{fdfe}', '\u{fdff}', IdentifierType::Technical),
+ ('\u{fe00}', '\u{fe0f}', IdentifierType::Default_Ignorable), ('\u{fe10}', '\u{fe19}',
+ IdentifierType::Not_NFKC), ('\u{fe20}', '\u{fe23}', IdentifierType::Technical),
+ ('\u{fe24}', '\u{fe26}', IdentifierType::Technical), ('\u{fe27}', '\u{fe2d}',
+ IdentifierType::Technical), ('\u{fe2e}', '\u{fe2f}', IdentifierType::Uncommon_Use),
+ ('\u{fe30}', '\u{fe44}', IdentifierType::Not_NFKC), ('\u{fe45}', '\u{fe46}',
+ IdentifierType::Technical), ('\u{fe47}', '\u{fe48}', IdentifierType::Not_NFKC),
+ ('\u{fe49}', '\u{fe52}', IdentifierType::Not_NFKC), ('\u{fe54}', '\u{fe66}',
+ IdentifierType::Not_NFKC), ('\u{fe68}', '\u{fe6b}', IdentifierType::Not_NFKC),
+ ('\u{fe70}', '\u{fe72}', IdentifierType::Not_NFKC), ('\u{fe73}', '\u{fe73}',
+ IdentifierType::Technical), ('\u{fe74}', '\u{fe74}', IdentifierType::Not_NFKC),
+ ('\u{fe76}', '\u{fefc}', IdentifierType::Not_NFKC), ('\u{feff}', '\u{feff}',
+ IdentifierType::Default_Ignorable), ('\u{ff01}', '\u{ff5e}', IdentifierType::Not_NFKC),
+ ('\u{ff5f}', '\u{ff60}', IdentifierType::Not_NFKC), ('\u{ff61}', '\u{ff9f}',
+ IdentifierType::Not_NFKC), ('\u{ffa0}', '\u{ffa0}', IdentifierType::Default_Ignorable),
+ ('\u{ffa1}', '\u{ffbe}', IdentifierType::Not_NFKC), ('\u{ffc2}', '\u{ffc7}',
+ IdentifierType::Not_NFKC), ('\u{ffca}', '\u{ffcf}', IdentifierType::Not_NFKC),
+ ('\u{ffd2}', '\u{ffd7}', IdentifierType::Not_NFKC), ('\u{ffda}', '\u{ffdc}',
+ IdentifierType::Not_NFKC), ('\u{ffe0}', '\u{ffe6}', IdentifierType::Not_NFKC),
+ ('\u{ffe8}', '\u{ffee}', IdentifierType::Not_NFKC), ('\u{fff9}', '\u{fffb}',
+ IdentifierType::Not_XID), ('\u{fffc}', '\u{fffc}', IdentifierType::Not_XID), ('\u{fffd}',
+ '\u{fffd}', IdentifierType::Not_XID), ('\u{10000}', '\u{1000b}',
+ IdentifierType::Exclusion), ('\u{1000d}', '\u{10026}', IdentifierType::Exclusion),
+ ('\u{10028}', '\u{1003a}', IdentifierType::Exclusion), ('\u{1003c}', '\u{1003d}',
+ IdentifierType::Exclusion), ('\u{1003f}', '\u{1004d}', IdentifierType::Exclusion),
+ ('\u{10050}', '\u{1005d}', IdentifierType::Exclusion), ('\u{10080}', '\u{100fa}',
+ IdentifierType::Exclusion), ('\u{10100}', '\u{10102}', IdentifierType::Exclusion),
+ ('\u{10107}', '\u{10133}', IdentifierType::Exclusion), ('\u{10137}', '\u{1013f}',
+ IdentifierType::Exclusion), ('\u{10140}', '\u{10174}', IdentifierType::Obsolete),
+ ('\u{10175}', '\u{1018a}', IdentifierType::Not_XID), ('\u{1018b}', '\u{1018c}',
+ IdentifierType::Not_XID), ('\u{1018d}', '\u{1018e}', IdentifierType::Not_XID),
+ ('\u{10190}', '\u{1019b}', IdentifierType::Not_XID), ('\u{1019c}', '\u{1019c}',
+ IdentifierType::Not_XID), ('\u{101a0}', '\u{101a0}', IdentifierType::Not_XID),
+ ('\u{101d0}', '\u{101fc}', IdentifierType::Obsolete), ('\u{101fd}', '\u{101fd}',
+ IdentifierType::Obsolete), ('\u{10280}', '\u{1029c}', IdentifierType::Exclusion),
+ ('\u{102a0}', '\u{102d0}', IdentifierType::Exclusion), ('\u{102e0}', '\u{102e0}',
+ IdentifierType::Obsolete), ('\u{102e1}', '\u{102fb}', IdentifierType::Obsolete),
+ ('\u{10300}', '\u{1031e}', IdentifierType::Exclusion), ('\u{1031f}', '\u{1031f}',
+ IdentifierType::Exclusion), ('\u{10320}', '\u{10323}', IdentifierType::Exclusion),
+ ('\u{1032d}', '\u{1032f}', IdentifierType::Exclusion), ('\u{10330}', '\u{1034a}',
+ IdentifierType::Exclusion), ('\u{10350}', '\u{1037a}', IdentifierType::Exclusion),
+ ('\u{10380}', '\u{1039d}', IdentifierType::Exclusion), ('\u{1039f}', '\u{1039f}',
+ IdentifierType::Exclusion), ('\u{103a0}', '\u{103c3}', IdentifierType::Exclusion),
+ ('\u{103c8}', '\u{103cf}', IdentifierType::Exclusion), ('\u{103d0}', '\u{103d0}',
+ IdentifierType::Exclusion), ('\u{103d1}', '\u{103d5}', IdentifierType::Exclusion),
+ ('\u{10400}', '\u{10425}', IdentifierType::Exclusion), ('\u{10426}', '\u{10427}',
+ IdentifierType::Exclusion), ('\u{10428}', '\u{1044d}', IdentifierType::Exclusion),
+ ('\u{1044e}', '\u{1049d}', IdentifierType::Exclusion), ('\u{104a0}', '\u{104a9}',
+ IdentifierType::Exclusion), ('\u{104b0}', '\u{104d3}', IdentifierType::Limited_Use),
+ ('\u{104d8}', '\u{104fb}', IdentifierType::Limited_Use), ('\u{10500}', '\u{10527}',
+ IdentifierType::Exclusion), ('\u{10530}', '\u{10563}', IdentifierType::Exclusion),
+ ('\u{1056f}', '\u{1056f}', IdentifierType::Exclusion), ('\u{10570}', '\u{1057a}',
+ IdentifierType::Exclusion), ('\u{1057c}', '\u{1058a}', IdentifierType::Exclusion),
+ ('\u{1058c}', '\u{10592}', IdentifierType::Exclusion), ('\u{10594}', '\u{10595}',
+ IdentifierType::Exclusion), ('\u{10597}', '\u{105a1}', IdentifierType::Exclusion),
+ ('\u{105a3}', '\u{105b1}', IdentifierType::Exclusion), ('\u{105b3}', '\u{105b9}',
+ IdentifierType::Exclusion), ('\u{105bb}', '\u{105bc}', IdentifierType::Exclusion),
('\u{10600}', '\u{10736}', IdentifierType::Exclusion), ('\u{10740}', '\u{10755}',
IdentifierType::Exclusion), ('\u{10760}', '\u{10767}', IdentifierType::Exclusion),
- ('\u{10800}', '\u{10805}', IdentifierType::Exclusion), ('\u{10808}', '\u{10808}',
- IdentifierType::Exclusion), ('\u{1080a}', '\u{10835}', IdentifierType::Exclusion),
- ('\u{10837}', '\u{10838}', IdentifierType::Exclusion), ('\u{1083c}', '\u{1083c}',
- IdentifierType::Exclusion), ('\u{1083f}', '\u{1083f}', IdentifierType::Exclusion),
- ('\u{10840}', '\u{10855}', IdentifierType::Exclusion), ('\u{10857}', '\u{1085f}',
- IdentifierType::Exclusion), ('\u{10860}', '\u{10876}', IdentifierType::Exclusion),
- ('\u{10877}', '\u{1087f}', IdentifierType::Exclusion), ('\u{10880}', '\u{1089e}',
- IdentifierType::Exclusion), ('\u{108a7}', '\u{108af}', IdentifierType::Exclusion),
- ('\u{108e0}', '\u{108f2}', IdentifierType::Exclusion), ('\u{108f4}', '\u{108f5}',
- IdentifierType::Exclusion), ('\u{108fb}', '\u{108ff}', IdentifierType::Exclusion),
- ('\u{10900}', '\u{10915}', IdentifierType::Exclusion), ('\u{10916}', '\u{10919}',
- IdentifierType::Exclusion), ('\u{1091a}', '\u{1091b}', IdentifierType::Exclusion),
- ('\u{1091f}', '\u{1091f}', IdentifierType::Exclusion), ('\u{10920}', '\u{10939}',
- IdentifierType::Exclusion), ('\u{1093f}', '\u{1093f}', IdentifierType::Exclusion),
- ('\u{10980}', '\u{109b7}', IdentifierType::Exclusion), ('\u{109bc}', '\u{109bd}',
- IdentifierType::Exclusion), ('\u{109be}', '\u{109bf}', IdentifierType::Exclusion),
- ('\u{109c0}', '\u{109cf}', IdentifierType::Exclusion), ('\u{109d2}', '\u{109ff}',
- IdentifierType::Exclusion), ('\u{10a00}', '\u{10a03}', IdentifierType::Exclusion),
- ('\u{10a05}', '\u{10a06}', IdentifierType::Exclusion), ('\u{10a0c}', '\u{10a13}',
- IdentifierType::Exclusion), ('\u{10a15}', '\u{10a17}', IdentifierType::Exclusion),
- ('\u{10a19}', '\u{10a33}', IdentifierType::Exclusion), ('\u{10a34}', '\u{10a35}',
- IdentifierType::Exclusion), ('\u{10a38}', '\u{10a3a}', IdentifierType::Exclusion),
- ('\u{10a3f}', '\u{10a3f}', IdentifierType::Exclusion), ('\u{10a40}', '\u{10a47}',
- IdentifierType::Exclusion), ('\u{10a48}', '\u{10a48}', IdentifierType::Exclusion),
- ('\u{10a50}', '\u{10a58}', IdentifierType::Exclusion), ('\u{10a60}', '\u{10a7c}',
- IdentifierType::Exclusion), ('\u{10a7d}', '\u{10a7f}', IdentifierType::Exclusion),
- ('\u{10a80}', '\u{10a9c}', IdentifierType::Exclusion), ('\u{10a9d}', '\u{10a9f}',
- IdentifierType::Exclusion), ('\u{10ac0}', '\u{10ac7}', IdentifierType::Exclusion),
- ('\u{10ac8}', '\u{10ac8}', IdentifierType::Exclusion), ('\u{10ac9}', '\u{10ae6}',
- IdentifierType::Exclusion), ('\u{10aeb}', '\u{10af6}', IdentifierType::Exclusion),
- ('\u{10b00}', '\u{10b35}', IdentifierType::Exclusion), ('\u{10b39}', '\u{10b3f}',
- IdentifierType::Exclusion), ('\u{10b40}', '\u{10b55}', IdentifierType::Exclusion),
- ('\u{10b58}', '\u{10b5f}', IdentifierType::Exclusion), ('\u{10b60}', '\u{10b72}',
- IdentifierType::Exclusion), ('\u{10b78}', '\u{10b7f}', IdentifierType::Exclusion),
- ('\u{10b80}', '\u{10b91}', IdentifierType::Exclusion), ('\u{10b99}', '\u{10b9c}',
- IdentifierType::Exclusion), ('\u{10ba9}', '\u{10baf}', IdentifierType::Exclusion),
- ('\u{10c00}', '\u{10c48}', IdentifierType::Exclusion), ('\u{10c80}', '\u{10cb2}',
- IdentifierType::Exclusion), ('\u{10cc0}', '\u{10cf2}', IdentifierType::Exclusion),
- ('\u{10cfa}', '\u{10cff}', IdentifierType::Exclusion), ('\u{10d00}', '\u{10d27}',
- IdentifierType::Limited_Use), ('\u{10d30}', '\u{10d39}', IdentifierType::Limited_Use),
- ('\u{10e60}', '\u{10e7e}', IdentifierType::Not_XID), ('\u{10e80}', '\u{10ea9}',
- IdentifierType::Exclusion), ('\u{10eab}', '\u{10eac}', IdentifierType::Exclusion),
- ('\u{10ead}', '\u{10ead}', IdentifierType::Exclusion), ('\u{10eb0}', '\u{10eb1}',
- IdentifierType::Exclusion), ('\u{10f00}', '\u{10f1c}', IdentifierType::Exclusion),
- ('\u{10f1d}', '\u{10f26}', IdentifierType::Exclusion), ('\u{10f27}', '\u{10f27}',
- IdentifierType::Exclusion), ('\u{10f30}', '\u{10f50}', IdentifierType::Exclusion),
- ('\u{10f51}', '\u{10f59}', IdentifierType::Exclusion), ('\u{10fb0}', '\u{10fc4}',
- IdentifierType::Exclusion), ('\u{10fc5}', '\u{10fcb}', IdentifierType::Exclusion),
- ('\u{10fe0}', '\u{10ff6}', IdentifierType::Exclusion), ('\u{11000}', '\u{11046}',
- IdentifierType::Exclusion), ('\u{11047}', '\u{1104d}', IdentifierType::Exclusion),
- ('\u{11052}', '\u{11065}', IdentifierType::Exclusion), ('\u{11066}', '\u{1106f}',
- IdentifierType::Exclusion), ('\u{1107f}', '\u{1107f}', IdentifierType::Exclusion),
- ('\u{11080}', '\u{110ba}', IdentifierType::Exclusion), ('\u{110bb}', '\u{110bc}',
- IdentifierType::Exclusion), ('\u{110bd}', '\u{110bd}', IdentifierType::Exclusion),
- ('\u{110be}', '\u{110c1}', IdentifierType::Exclusion), ('\u{110cd}', '\u{110cd}',
+ ('\u{10780}', '\u{10780}', IdentifierType::Uncommon_Use), ('\u{10781}', '\u{10785}',
+ IdentifierType::Not_NFKC), ('\u{10787}', '\u{107b0}', IdentifierType::Not_NFKC),
+ ('\u{107b2}', '\u{107ba}', IdentifierType::Not_NFKC), ('\u{10800}', '\u{10805}',
+ IdentifierType::Exclusion), ('\u{10808}', '\u{10808}', IdentifierType::Exclusion),
+ ('\u{1080a}', '\u{10835}', IdentifierType::Exclusion), ('\u{10837}', '\u{10838}',
+ IdentifierType::Exclusion), ('\u{1083c}', '\u{1083c}', IdentifierType::Exclusion),
+ ('\u{1083f}', '\u{1083f}', IdentifierType::Exclusion), ('\u{10840}', '\u{10855}',
+ IdentifierType::Exclusion), ('\u{10857}', '\u{1085f}', IdentifierType::Exclusion),
+ ('\u{10860}', '\u{10876}', IdentifierType::Exclusion), ('\u{10877}', '\u{1087f}',
+ IdentifierType::Exclusion), ('\u{10880}', '\u{1089e}', IdentifierType::Exclusion),
+ ('\u{108a7}', '\u{108af}', IdentifierType::Exclusion), ('\u{108e0}', '\u{108f2}',
+ IdentifierType::Exclusion), ('\u{108f4}', '\u{108f5}', IdentifierType::Exclusion),
+ ('\u{108fb}', '\u{108ff}', IdentifierType::Exclusion), ('\u{10900}', '\u{10915}',
+ IdentifierType::Exclusion), ('\u{10916}', '\u{10919}', IdentifierType::Exclusion),
+ ('\u{1091a}', '\u{1091b}', IdentifierType::Exclusion), ('\u{1091f}', '\u{1091f}',
+ IdentifierType::Exclusion), ('\u{10920}', '\u{10939}', IdentifierType::Exclusion),
+ ('\u{1093f}', '\u{1093f}', IdentifierType::Exclusion), ('\u{10980}', '\u{109b7}',
+ IdentifierType::Exclusion), ('\u{109bc}', '\u{109bd}', IdentifierType::Exclusion),
+ ('\u{109be}', '\u{109bf}', IdentifierType::Exclusion), ('\u{109c0}', '\u{109cf}',
+ IdentifierType::Exclusion), ('\u{109d2}', '\u{109ff}', IdentifierType::Exclusion),
+ ('\u{10a00}', '\u{10a03}', IdentifierType::Exclusion), ('\u{10a05}', '\u{10a06}',
+ IdentifierType::Exclusion), ('\u{10a0c}', '\u{10a13}', IdentifierType::Exclusion),
+ ('\u{10a15}', '\u{10a17}', IdentifierType::Exclusion), ('\u{10a19}', '\u{10a33}',
+ IdentifierType::Exclusion), ('\u{10a34}', '\u{10a35}', IdentifierType::Exclusion),
+ ('\u{10a38}', '\u{10a3a}', IdentifierType::Exclusion), ('\u{10a3f}', '\u{10a3f}',
+ IdentifierType::Exclusion), ('\u{10a40}', '\u{10a47}', IdentifierType::Exclusion),
+ ('\u{10a48}', '\u{10a48}', IdentifierType::Exclusion), ('\u{10a50}', '\u{10a58}',
+ IdentifierType::Exclusion), ('\u{10a60}', '\u{10a7c}', IdentifierType::Exclusion),
+ ('\u{10a7d}', '\u{10a7f}', IdentifierType::Exclusion), ('\u{10a80}', '\u{10a9c}',
+ IdentifierType::Exclusion), ('\u{10a9d}', '\u{10a9f}', IdentifierType::Exclusion),
+ ('\u{10ac0}', '\u{10ac7}', IdentifierType::Exclusion), ('\u{10ac8}', '\u{10ac8}',
+ IdentifierType::Exclusion), ('\u{10ac9}', '\u{10ae6}', IdentifierType::Exclusion),
+ ('\u{10aeb}', '\u{10af6}', IdentifierType::Exclusion), ('\u{10b00}', '\u{10b35}',
+ IdentifierType::Exclusion), ('\u{10b39}', '\u{10b3f}', IdentifierType::Exclusion),
+ ('\u{10b40}', '\u{10b55}', IdentifierType::Exclusion), ('\u{10b58}', '\u{10b5f}',
+ IdentifierType::Exclusion), ('\u{10b60}', '\u{10b72}', IdentifierType::Exclusion),
+ ('\u{10b78}', '\u{10b7f}', IdentifierType::Exclusion), ('\u{10b80}', '\u{10b91}',
+ IdentifierType::Exclusion), ('\u{10b99}', '\u{10b9c}', IdentifierType::Exclusion),
+ ('\u{10ba9}', '\u{10baf}', IdentifierType::Exclusion), ('\u{10c00}', '\u{10c48}',
+ IdentifierType::Exclusion), ('\u{10c80}', '\u{10cb2}', IdentifierType::Exclusion),
+ ('\u{10cc0}', '\u{10cf2}', IdentifierType::Exclusion), ('\u{10cfa}', '\u{10cff}',
+ IdentifierType::Exclusion), ('\u{10d00}', '\u{10d27}', IdentifierType::Limited_Use),
+ ('\u{10d30}', '\u{10d39}', IdentifierType::Limited_Use), ('\u{10e60}', '\u{10e7e}',
+ IdentifierType::Not_XID), ('\u{10e80}', '\u{10ea9}', IdentifierType::Exclusion),
+ ('\u{10eab}', '\u{10eac}', IdentifierType::Exclusion), ('\u{10ead}', '\u{10ead}',
+ IdentifierType::Exclusion), ('\u{10eb0}', '\u{10eb1}', IdentifierType::Exclusion),
+ ('\u{10efd}', '\u{10eff}', IdentifierType::Uncommon_Use), ('\u{10f00}', '\u{10f1c}',
+ IdentifierType::Exclusion), ('\u{10f1d}', '\u{10f26}', IdentifierType::Exclusion),
+ ('\u{10f27}', '\u{10f27}', IdentifierType::Exclusion), ('\u{10f30}', '\u{10f50}',
+ IdentifierType::Exclusion), ('\u{10f51}', '\u{10f59}', IdentifierType::Exclusion),
+ ('\u{10f70}', '\u{10f85}', IdentifierType::Exclusion), ('\u{10f86}', '\u{10f89}',
+ IdentifierType::Exclusion), ('\u{10fb0}', '\u{10fc4}', IdentifierType::Exclusion),
+ ('\u{10fc5}', '\u{10fcb}', IdentifierType::Exclusion), ('\u{10fe0}', '\u{10ff6}',
+ IdentifierType::Exclusion), ('\u{11000}', '\u{11046}', IdentifierType::Exclusion),
+ ('\u{11047}', '\u{1104d}', IdentifierType::Exclusion), ('\u{11052}', '\u{11065}',
+ IdentifierType::Exclusion), ('\u{11066}', '\u{1106f}', IdentifierType::Exclusion),
+ ('\u{11070}', '\u{11075}', IdentifierType::Exclusion), ('\u{1107f}', '\u{1107f}',
+ IdentifierType::Exclusion), ('\u{11080}', '\u{110ba}', IdentifierType::Exclusion),
+ ('\u{110bb}', '\u{110bc}', IdentifierType::Exclusion), ('\u{110bd}', '\u{110bd}',
+ IdentifierType::Exclusion), ('\u{110be}', '\u{110c1}', IdentifierType::Exclusion),
+ ('\u{110c2}', '\u{110c2}', IdentifierType::Exclusion), ('\u{110cd}', '\u{110cd}',
IdentifierType::Exclusion), ('\u{110d0}', '\u{110e8}', IdentifierType::Exclusion),
('\u{110f0}', '\u{110f9}', IdentifierType::Exclusion), ('\u{11100}', '\u{11134}',
IdentifierType::Limited_Use), ('\u{11136}', '\u{1113f}', IdentifierType::Limited_Use),
@@ -1365,45 +1407,47 @@ pub mod identifier {
IdentifierType::Not_XID), ('\u{11200}', '\u{11211}', IdentifierType::Exclusion),
('\u{11213}', '\u{11237}', IdentifierType::Exclusion), ('\u{11238}', '\u{1123d}',
IdentifierType::Exclusion), ('\u{1123e}', '\u{1123e}', IdentifierType::Exclusion),
- ('\u{11280}', '\u{11286}', IdentifierType::Exclusion), ('\u{11288}', '\u{11288}',
- IdentifierType::Exclusion), ('\u{1128a}', '\u{1128d}', IdentifierType::Exclusion),
- ('\u{1128f}', '\u{1129d}', IdentifierType::Exclusion), ('\u{1129f}', '\u{112a8}',
- IdentifierType::Exclusion), ('\u{112a9}', '\u{112a9}', IdentifierType::Exclusion),
- ('\u{112b0}', '\u{112ea}', IdentifierType::Exclusion), ('\u{112f0}', '\u{112f9}',
- IdentifierType::Exclusion), ('\u{11300}', '\u{11300}', IdentifierType::Exclusion),
- ('\u{11301}', '\u{11301}', IdentifierType::Recommended), ('\u{11302}', '\u{11302}',
- IdentifierType::Exclusion), ('\u{11303}', '\u{11303}', IdentifierType::Recommended),
- ('\u{11305}', '\u{1130c}', IdentifierType::Exclusion), ('\u{1130f}', '\u{11310}',
- IdentifierType::Exclusion), ('\u{11313}', '\u{11328}', IdentifierType::Exclusion),
- ('\u{1132a}', '\u{11330}', IdentifierType::Exclusion), ('\u{11332}', '\u{11333}',
- IdentifierType::Exclusion), ('\u{11335}', '\u{11339}', IdentifierType::Exclusion),
- ('\u{1133b}', '\u{1133b}', IdentifierType::Recommended), ('\u{1133c}', '\u{1133c}',
- IdentifierType::Recommended), ('\u{1133d}', '\u{11344}', IdentifierType::Exclusion),
- ('\u{11347}', '\u{11348}', IdentifierType::Exclusion), ('\u{1134b}', '\u{1134d}',
- IdentifierType::Exclusion), ('\u{11350}', '\u{11350}', IdentifierType::Exclusion),
- ('\u{11357}', '\u{11357}', IdentifierType::Exclusion), ('\u{1135d}', '\u{11363}',
- IdentifierType::Exclusion), ('\u{11366}', '\u{1136c}', IdentifierType::Exclusion),
- ('\u{11370}', '\u{11374}', IdentifierType::Exclusion), ('\u{11400}', '\u{1144a}',
- IdentifierType::Limited_Use), ('\u{1144b}', '\u{1144f}', IdentifierType::Limited_Use),
- ('\u{11450}', '\u{11459}', IdentifierType::Limited_Use), ('\u{1145a}', '\u{1145a}',
- IdentifierType::Limited_Use), ('\u{1145b}', '\u{1145b}', IdentifierType::Limited_Use),
- ('\u{1145d}', '\u{1145d}', IdentifierType::Limited_Use), ('\u{1145e}', '\u{1145e}',
- IdentifierType::Limited_Use), ('\u{1145f}', '\u{1145f}', IdentifierType::Limited_Use),
- ('\u{11460}', '\u{11461}', IdentifierType::Limited_Use), ('\u{11480}', '\u{114c5}',
- IdentifierType::Exclusion), ('\u{114c6}', '\u{114c6}', IdentifierType::Exclusion),
- ('\u{114c7}', '\u{114c7}', IdentifierType::Exclusion), ('\u{114d0}', '\u{114d9}',
- IdentifierType::Exclusion), ('\u{11580}', '\u{115b5}', IdentifierType::Exclusion),
- ('\u{115b8}', '\u{115c0}', IdentifierType::Exclusion), ('\u{115c1}', '\u{115c9}',
- IdentifierType::Exclusion), ('\u{115ca}', '\u{115d7}', IdentifierType::Exclusion),
- ('\u{115d8}', '\u{115dd}', IdentifierType::Exclusion), ('\u{11600}', '\u{11640}',
- IdentifierType::Exclusion), ('\u{11641}', '\u{11643}', IdentifierType::Exclusion),
- ('\u{11644}', '\u{11644}', IdentifierType::Exclusion), ('\u{11650}', '\u{11659}',
- IdentifierType::Exclusion), ('\u{11660}', '\u{1166c}', IdentifierType::Exclusion),
- ('\u{11680}', '\u{116b7}', IdentifierType::Exclusion), ('\u{116b8}', '\u{116b8}',
- IdentifierType::Exclusion), ('\u{116c0}', '\u{116c9}', IdentifierType::Exclusion),
- ('\u{11700}', '\u{11719}', IdentifierType::Exclusion), ('\u{1171a}', '\u{1171a}',
- IdentifierType::Exclusion), ('\u{1171d}', '\u{1172b}', IdentifierType::Exclusion),
- ('\u{11730}', '\u{11739}', IdentifierType::Exclusion), ('\u{1173a}', '\u{1173f}',
+ ('\u{1123f}', '\u{11241}', IdentifierType::Exclusion), ('\u{11280}', '\u{11286}',
+ IdentifierType::Exclusion), ('\u{11288}', '\u{11288}', IdentifierType::Exclusion),
+ ('\u{1128a}', '\u{1128d}', IdentifierType::Exclusion), ('\u{1128f}', '\u{1129d}',
+ IdentifierType::Exclusion), ('\u{1129f}', '\u{112a8}', IdentifierType::Exclusion),
+ ('\u{112a9}', '\u{112a9}', IdentifierType::Exclusion), ('\u{112b0}', '\u{112ea}',
+ IdentifierType::Exclusion), ('\u{112f0}', '\u{112f9}', IdentifierType::Exclusion),
+ ('\u{11300}', '\u{11300}', IdentifierType::Exclusion), ('\u{11301}', '\u{11301}',
+ IdentifierType::Recommended), ('\u{11302}', '\u{11302}', IdentifierType::Exclusion),
+ ('\u{11303}', '\u{11303}', IdentifierType::Recommended), ('\u{11305}', '\u{1130c}',
+ IdentifierType::Exclusion), ('\u{1130f}', '\u{11310}', IdentifierType::Exclusion),
+ ('\u{11313}', '\u{11328}', IdentifierType::Exclusion), ('\u{1132a}', '\u{11330}',
+ IdentifierType::Exclusion), ('\u{11332}', '\u{11333}', IdentifierType::Exclusion),
+ ('\u{11335}', '\u{11339}', IdentifierType::Exclusion), ('\u{1133b}', '\u{1133b}',
+ IdentifierType::Recommended), ('\u{1133c}', '\u{1133c}', IdentifierType::Recommended),
+ ('\u{1133d}', '\u{11344}', IdentifierType::Exclusion), ('\u{11347}', '\u{11348}',
+ IdentifierType::Exclusion), ('\u{1134b}', '\u{1134d}', IdentifierType::Exclusion),
+ ('\u{11350}', '\u{11350}', IdentifierType::Exclusion), ('\u{11357}', '\u{11357}',
+ IdentifierType::Exclusion), ('\u{1135d}', '\u{11363}', IdentifierType::Exclusion),
+ ('\u{11366}', '\u{1136c}', IdentifierType::Exclusion), ('\u{11370}', '\u{11374}',
+ IdentifierType::Exclusion), ('\u{11400}', '\u{1144a}', IdentifierType::Limited_Use),
+ ('\u{1144b}', '\u{1144f}', IdentifierType::Limited_Use), ('\u{11450}', '\u{11459}',
+ IdentifierType::Limited_Use), ('\u{1145a}', '\u{1145a}', IdentifierType::Limited_Use),
+ ('\u{1145b}', '\u{1145b}', IdentifierType::Limited_Use), ('\u{1145d}', '\u{1145d}',
+ IdentifierType::Limited_Use), ('\u{1145e}', '\u{1145e}', IdentifierType::Limited_Use),
+ ('\u{1145f}', '\u{1145f}', IdentifierType::Limited_Use), ('\u{11460}', '\u{11461}',
+ IdentifierType::Limited_Use), ('\u{11480}', '\u{114c5}', IdentifierType::Exclusion),
+ ('\u{114c6}', '\u{114c6}', IdentifierType::Exclusion), ('\u{114c7}', '\u{114c7}',
+ IdentifierType::Exclusion), ('\u{114d0}', '\u{114d9}', IdentifierType::Exclusion),
+ ('\u{11580}', '\u{115b5}', IdentifierType::Exclusion), ('\u{115b8}', '\u{115c0}',
+ IdentifierType::Exclusion), ('\u{115c1}', '\u{115c9}', IdentifierType::Exclusion),
+ ('\u{115ca}', '\u{115d7}', IdentifierType::Exclusion), ('\u{115d8}', '\u{115dd}',
+ IdentifierType::Exclusion), ('\u{11600}', '\u{11640}', IdentifierType::Exclusion),
+ ('\u{11641}', '\u{11643}', IdentifierType::Exclusion), ('\u{11644}', '\u{11644}',
+ IdentifierType::Exclusion), ('\u{11650}', '\u{11659}', IdentifierType::Exclusion),
+ ('\u{11660}', '\u{1166c}', IdentifierType::Exclusion), ('\u{11680}', '\u{116b7}',
+ IdentifierType::Exclusion), ('\u{116b8}', '\u{116b8}', IdentifierType::Exclusion),
+ ('\u{116b9}', '\u{116b9}', IdentifierType::Exclusion), ('\u{116c0}', '\u{116c9}',
+ IdentifierType::Exclusion), ('\u{11700}', '\u{11719}', IdentifierType::Exclusion),
+ ('\u{1171a}', '\u{1171a}', IdentifierType::Exclusion), ('\u{1171d}', '\u{1172b}',
+ IdentifierType::Exclusion), ('\u{11730}', '\u{11739}', IdentifierType::Exclusion),
+ ('\u{1173a}', '\u{1173f}', IdentifierType::Exclusion), ('\u{11740}', '\u{11746}',
IdentifierType::Exclusion), ('\u{11800}', '\u{1183a}', IdentifierType::Exclusion),
('\u{1183b}', '\u{1183b}', IdentifierType::Exclusion), ('\u{118a0}', '\u{118e9}',
IdentifierType::Exclusion), ('\u{118ea}', '\u{118f2}', IdentifierType::Exclusion),
@@ -1423,255 +1467,283 @@ pub mod identifier {
IdentifierType::Exclusion), ('\u{11a86}', '\u{11a99}', IdentifierType::Exclusion),
('\u{11a9a}', '\u{11a9c}', IdentifierType::Exclusion), ('\u{11a9d}', '\u{11a9d}',
IdentifierType::Exclusion), ('\u{11a9e}', '\u{11aa2}', IdentifierType::Exclusion),
- ('\u{11ac0}', '\u{11af8}', IdentifierType::Exclusion), ('\u{11c00}', '\u{11c08}',
- IdentifierType::Exclusion), ('\u{11c0a}', '\u{11c36}', IdentifierType::Exclusion),
- ('\u{11c38}', '\u{11c40}', IdentifierType::Exclusion), ('\u{11c41}', '\u{11c45}',
- IdentifierType::Exclusion), ('\u{11c50}', '\u{11c59}', IdentifierType::Exclusion),
- ('\u{11c5a}', '\u{11c6c}', IdentifierType::Exclusion), ('\u{11c70}', '\u{11c71}',
- IdentifierType::Exclusion), ('\u{11c72}', '\u{11c8f}', IdentifierType::Exclusion),
- ('\u{11c92}', '\u{11ca7}', IdentifierType::Exclusion), ('\u{11ca9}', '\u{11cb6}',
- IdentifierType::Exclusion), ('\u{11d00}', '\u{11d06}', IdentifierType::Exclusion),
- ('\u{11d08}', '\u{11d09}', IdentifierType::Exclusion), ('\u{11d0b}', '\u{11d36}',
- IdentifierType::Exclusion), ('\u{11d3a}', '\u{11d3a}', IdentifierType::Exclusion),
- ('\u{11d3c}', '\u{11d3d}', IdentifierType::Exclusion), ('\u{11d3f}', '\u{11d47}',
- IdentifierType::Exclusion), ('\u{11d50}', '\u{11d59}', IdentifierType::Exclusion),
- ('\u{11d60}', '\u{11d65}', IdentifierType::Limited_Use), ('\u{11d67}', '\u{11d68}',
- IdentifierType::Limited_Use), ('\u{11d6a}', '\u{11d8e}', IdentifierType::Limited_Use),
- ('\u{11d90}', '\u{11d91}', IdentifierType::Limited_Use), ('\u{11d93}', '\u{11d98}',
- IdentifierType::Limited_Use), ('\u{11da0}', '\u{11da9}', IdentifierType::Limited_Use),
- ('\u{11ee0}', '\u{11ef6}', IdentifierType::Exclusion), ('\u{11ef7}', '\u{11ef8}',
- IdentifierType::Exclusion), ('\u{11fb0}', '\u{11fb0}', IdentifierType::Limited_Use),
- ('\u{11fc0}', '\u{11ff1}', IdentifierType::Not_XID), ('\u{11fff}', '\u{11fff}',
- IdentifierType::Not_XID), ('\u{12000}', '\u{1236e}', IdentifierType::Exclusion),
- ('\u{1236f}', '\u{12398}', IdentifierType::Exclusion), ('\u{12399}', '\u{12399}',
- IdentifierType::Exclusion), ('\u{12400}', '\u{12462}', IdentifierType::Exclusion),
- ('\u{12463}', '\u{1246e}', IdentifierType::Exclusion), ('\u{12470}', '\u{12473}',
- IdentifierType::Exclusion), ('\u{12474}', '\u{12474}', IdentifierType::Exclusion),
- ('\u{12480}', '\u{12543}', IdentifierType::Exclusion), ('\u{13000}', '\u{1342e}',
- IdentifierType::Exclusion), ('\u{13430}', '\u{13438}', IdentifierType::Exclusion),
+ ('\u{11ab0}', '\u{11abf}', IdentifierType::Limited_Use), ('\u{11ac0}', '\u{11af8}',
+ IdentifierType::Exclusion), ('\u{11b00}', '\u{11b09}', IdentifierType::Not_XID),
+ ('\u{11c00}', '\u{11c08}', IdentifierType::Exclusion), ('\u{11c0a}', '\u{11c36}',
+ IdentifierType::Exclusion), ('\u{11c38}', '\u{11c40}', IdentifierType::Exclusion),
+ ('\u{11c41}', '\u{11c45}', IdentifierType::Exclusion), ('\u{11c50}', '\u{11c59}',
+ IdentifierType::Exclusion), ('\u{11c5a}', '\u{11c6c}', IdentifierType::Exclusion),
+ ('\u{11c70}', '\u{11c71}', IdentifierType::Exclusion), ('\u{11c72}', '\u{11c8f}',
+ IdentifierType::Exclusion), ('\u{11c92}', '\u{11ca7}', IdentifierType::Exclusion),
+ ('\u{11ca9}', '\u{11cb6}', IdentifierType::Exclusion), ('\u{11d00}', '\u{11d06}',
+ IdentifierType::Exclusion), ('\u{11d08}', '\u{11d09}', IdentifierType::Exclusion),
+ ('\u{11d0b}', '\u{11d36}', IdentifierType::Exclusion), ('\u{11d3a}', '\u{11d3a}',
+ IdentifierType::Exclusion), ('\u{11d3c}', '\u{11d3d}', IdentifierType::Exclusion),
+ ('\u{11d3f}', '\u{11d47}', IdentifierType::Exclusion), ('\u{11d50}', '\u{11d59}',
+ IdentifierType::Exclusion), ('\u{11d60}', '\u{11d65}', IdentifierType::Limited_Use),
+ ('\u{11d67}', '\u{11d68}', IdentifierType::Limited_Use), ('\u{11d6a}', '\u{11d8e}',
+ IdentifierType::Limited_Use), ('\u{11d90}', '\u{11d91}', IdentifierType::Limited_Use),
+ ('\u{11d93}', '\u{11d98}', IdentifierType::Limited_Use), ('\u{11da0}', '\u{11da9}',
+ IdentifierType::Limited_Use), ('\u{11ee0}', '\u{11ef6}', IdentifierType::Exclusion),
+ ('\u{11ef7}', '\u{11ef8}', IdentifierType::Exclusion), ('\u{11f00}', '\u{11f10}',
+ IdentifierType::Exclusion), ('\u{11f12}', '\u{11f3a}', IdentifierType::Exclusion),
+ ('\u{11f3e}', '\u{11f42}', IdentifierType::Exclusion), ('\u{11f43}', '\u{11f4f}',
+ IdentifierType::Exclusion), ('\u{11f50}', '\u{11f59}', IdentifierType::Exclusion),
+ ('\u{11fb0}', '\u{11fb0}', IdentifierType::Limited_Use), ('\u{11fc0}', '\u{11ff1}',
+ IdentifierType::Not_XID), ('\u{11fff}', '\u{11fff}', IdentifierType::Not_XID),
+ ('\u{12000}', '\u{1236e}', IdentifierType::Exclusion), ('\u{1236f}', '\u{12398}',
+ IdentifierType::Exclusion), ('\u{12399}', '\u{12399}', IdentifierType::Exclusion),
+ ('\u{12400}', '\u{12462}', IdentifierType::Exclusion), ('\u{12463}', '\u{1246e}',
+ IdentifierType::Exclusion), ('\u{12470}', '\u{12473}', IdentifierType::Exclusion),
+ ('\u{12474}', '\u{12474}', IdentifierType::Exclusion), ('\u{12480}', '\u{12543}',
+ IdentifierType::Exclusion), ('\u{12f90}', '\u{12ff0}', IdentifierType::Exclusion),
+ ('\u{12ff1}', '\u{12ff2}', IdentifierType::Exclusion), ('\u{13000}', '\u{1342e}',
+ IdentifierType::Exclusion), ('\u{1342f}', '\u{1342f}', IdentifierType::Exclusion),
+ ('\u{13430}', '\u{13438}', IdentifierType::Exclusion), ('\u{13439}', '\u{1343f}',
+ IdentifierType::Exclusion), ('\u{13440}', '\u{13455}', IdentifierType::Exclusion),
('\u{14400}', '\u{14646}', IdentifierType::Exclusion), ('\u{16800}', '\u{16a38}',
IdentifierType::Limited_Use), ('\u{16a40}', '\u{16a5e}', IdentifierType::Uncommon_Use),
('\u{16a60}', '\u{16a69}', IdentifierType::Uncommon_Use), ('\u{16a6e}', '\u{16a6f}',
- IdentifierType::Exclusion), ('\u{16ad0}', '\u{16aed}', IdentifierType::Exclusion),
- ('\u{16af0}', '\u{16af4}', IdentifierType::Exclusion), ('\u{16af5}', '\u{16af5}',
- IdentifierType::Exclusion), ('\u{16b00}', '\u{16b36}', IdentifierType::Exclusion),
- ('\u{16b37}', '\u{16b3f}', IdentifierType::Exclusion), ('\u{16b40}', '\u{16b43}',
- IdentifierType::Exclusion), ('\u{16b44}', '\u{16b45}', IdentifierType::Exclusion),
- ('\u{16b50}', '\u{16b59}', IdentifierType::Exclusion), ('\u{16b5b}', '\u{16b61}',
- IdentifierType::Exclusion), ('\u{16b63}', '\u{16b77}', IdentifierType::Exclusion),
- ('\u{16b7d}', '\u{16b8f}', IdentifierType::Exclusion), ('\u{16e40}', '\u{16e7f}',
- IdentifierType::Exclusion), ('\u{16e80}', '\u{16e9a}', IdentifierType::Exclusion),
- ('\u{16f00}', '\u{16f44}', IdentifierType::Limited_Use), ('\u{16f45}', '\u{16f4a}',
- IdentifierType::Limited_Use), ('\u{16f4f}', '\u{16f4f}', IdentifierType::Limited_Use),
- ('\u{16f50}', '\u{16f7e}', IdentifierType::Limited_Use), ('\u{16f7f}', '\u{16f87}',
- IdentifierType::Limited_Use), ('\u{16f8f}', '\u{16f9f}', IdentifierType::Limited_Use),
- ('\u{16fe0}', '\u{16fe0}', IdentifierType::Exclusion), ('\u{16fe1}', '\u{16fe1}',
- IdentifierType::Exclusion), ('\u{16fe2}', '\u{16fe2}', IdentifierType::Not_XID),
- ('\u{16fe3}', '\u{16fe3}', IdentifierType::Obsolete), ('\u{16fe4}', '\u{16fe4}',
- IdentifierType::Exclusion), ('\u{16ff0}', '\u{16ff1}', IdentifierType::Recommended),
- ('\u{17000}', '\u{187ec}', IdentifierType::Exclusion), ('\u{187ed}', '\u{187f1}',
- IdentifierType::Exclusion), ('\u{187f2}', '\u{187f7}', IdentifierType::Exclusion),
- ('\u{18800}', '\u{18af2}', IdentifierType::Exclusion), ('\u{18af3}', '\u{18cd5}',
- IdentifierType::Exclusion), ('\u{18d00}', '\u{18d08}', IdentifierType::Exclusion),
- ('\u{1b000}', '\u{1b001}', IdentifierType::Obsolete), ('\u{1b002}', '\u{1b11e}',
- IdentifierType::Obsolete), ('\u{1b150}', '\u{1b152}', IdentifierType::Recommended),
- ('\u{1b164}', '\u{1b167}', IdentifierType::Recommended), ('\u{1b170}', '\u{1b2fb}',
- IdentifierType::Exclusion), ('\u{1bc00}', '\u{1bc6a}', IdentifierType::Exclusion),
- ('\u{1bc70}', '\u{1bc7c}', IdentifierType::Exclusion), ('\u{1bc80}', '\u{1bc88}',
- IdentifierType::Exclusion), ('\u{1bc90}', '\u{1bc99}', IdentifierType::Exclusion),
- ('\u{1bc9c}', '\u{1bc9c}', IdentifierType::Exclusion), ('\u{1bc9d}', '\u{1bc9e}',
- IdentifierType::Exclusion), ('\u{1bc9f}', '\u{1bc9f}', IdentifierType::Exclusion),
- ('\u{1bca0}', '\u{1bca3}', IdentifierType::Default_Ignorable), ('\u{1d000}', '\u{1d0f5}',
- IdentifierType::Technical), ('\u{1d100}', '\u{1d126}', IdentifierType::Technical),
- ('\u{1d129}', '\u{1d129}', IdentifierType::Technical), ('\u{1d12a}', '\u{1d15d}',
- IdentifierType::Technical), ('\u{1d15e}', '\u{1d164}', IdentifierType::Not_NFKC),
- ('\u{1d165}', '\u{1d169}', IdentifierType::Technical), ('\u{1d16a}', '\u{1d16c}',
- IdentifierType::Technical), ('\u{1d16d}', '\u{1d172}', IdentifierType::Technical),
- ('\u{1d173}', '\u{1d17a}', IdentifierType::Default_Ignorable), ('\u{1d17b}', '\u{1d182}',
- IdentifierType::Technical), ('\u{1d183}', '\u{1d184}', IdentifierType::Technical),
- ('\u{1d185}', '\u{1d18b}', IdentifierType::Technical), ('\u{1d18c}', '\u{1d1a9}',
- IdentifierType::Technical), ('\u{1d1aa}', '\u{1d1ad}', IdentifierType::Technical),
- ('\u{1d1ae}', '\u{1d1ba}', IdentifierType::Technical), ('\u{1d1bb}', '\u{1d1c0}',
- IdentifierType::Not_NFKC), ('\u{1d1c1}', '\u{1d1dd}', IdentifierType::Technical),
- ('\u{1d1de}', '\u{1d1e8}', IdentifierType::Uncommon_Use), ('\u{1d200}', '\u{1d241}',
+ IdentifierType::Exclusion), ('\u{16a70}', '\u{16abe}', IdentifierType::Exclusion),
+ ('\u{16ac0}', '\u{16ac9}', IdentifierType::Exclusion), ('\u{16ad0}', '\u{16aed}',
+ IdentifierType::Exclusion), ('\u{16af0}', '\u{16af4}', IdentifierType::Exclusion),
+ ('\u{16af5}', '\u{16af5}', IdentifierType::Exclusion), ('\u{16b00}', '\u{16b36}',
+ IdentifierType::Exclusion), ('\u{16b37}', '\u{16b3f}', IdentifierType::Exclusion),
+ ('\u{16b40}', '\u{16b43}', IdentifierType::Exclusion), ('\u{16b44}', '\u{16b45}',
+ IdentifierType::Exclusion), ('\u{16b50}', '\u{16b59}', IdentifierType::Exclusion),
+ ('\u{16b5b}', '\u{16b61}', IdentifierType::Exclusion), ('\u{16b63}', '\u{16b77}',
+ IdentifierType::Exclusion), ('\u{16b7d}', '\u{16b8f}', IdentifierType::Exclusion),
+ ('\u{16e40}', '\u{16e7f}', IdentifierType::Exclusion), ('\u{16e80}', '\u{16e9a}',
+ IdentifierType::Exclusion), ('\u{16f00}', '\u{16f44}', IdentifierType::Limited_Use),
+ ('\u{16f45}', '\u{16f4a}', IdentifierType::Limited_Use), ('\u{16f4f}', '\u{16f4f}',
+ IdentifierType::Limited_Use), ('\u{16f50}', '\u{16f7e}', IdentifierType::Limited_Use),
+ ('\u{16f7f}', '\u{16f87}', IdentifierType::Limited_Use), ('\u{16f8f}', '\u{16f9f}',
+ IdentifierType::Limited_Use), ('\u{16fe0}', '\u{16fe0}', IdentifierType::Exclusion),
+ ('\u{16fe1}', '\u{16fe1}', IdentifierType::Exclusion), ('\u{16fe2}', '\u{16fe2}',
+ IdentifierType::Not_XID), ('\u{16fe3}', '\u{16fe3}', IdentifierType::Obsolete),
+ ('\u{16fe4}', '\u{16fe4}', IdentifierType::Exclusion), ('\u{16ff0}', '\u{16ff1}',
+ IdentifierType::Recommended), ('\u{17000}', '\u{187ec}', IdentifierType::Exclusion),
+ ('\u{187ed}', '\u{187f1}', IdentifierType::Exclusion), ('\u{187f2}', '\u{187f7}',
+ IdentifierType::Exclusion), ('\u{18800}', '\u{18af2}', IdentifierType::Exclusion),
+ ('\u{18af3}', '\u{18cd5}', IdentifierType::Exclusion), ('\u{18d00}', '\u{18d08}',
+ IdentifierType::Exclusion), ('\u{1aff0}', '\u{1aff3}', IdentifierType::Uncommon_Use),
+ ('\u{1aff5}', '\u{1affb}', IdentifierType::Uncommon_Use), ('\u{1affd}', '\u{1affe}',
+ IdentifierType::Uncommon_Use), ('\u{1b000}', '\u{1b001}', IdentifierType::Obsolete),
+ ('\u{1b002}', '\u{1b11e}', IdentifierType::Obsolete), ('\u{1b11f}', '\u{1b122}',
+ IdentifierType::Recommended), ('\u{1b132}', '\u{1b132}', IdentifierType::Recommended),
+ ('\u{1b150}', '\u{1b152}', IdentifierType::Recommended), ('\u{1b155}', '\u{1b155}',
+ IdentifierType::Recommended), ('\u{1b164}', '\u{1b167}', IdentifierType::Recommended),
+ ('\u{1b170}', '\u{1b2fb}', IdentifierType::Exclusion), ('\u{1bc00}', '\u{1bc6a}',
+ IdentifierType::Exclusion), ('\u{1bc70}', '\u{1bc7c}', IdentifierType::Exclusion),
+ ('\u{1bc80}', '\u{1bc88}', IdentifierType::Exclusion), ('\u{1bc90}', '\u{1bc99}',
+ IdentifierType::Exclusion), ('\u{1bc9c}', '\u{1bc9c}', IdentifierType::Exclusion),
+ ('\u{1bc9d}', '\u{1bc9e}', IdentifierType::Exclusion), ('\u{1bc9f}', '\u{1bc9f}',
+ IdentifierType::Exclusion), ('\u{1bca0}', '\u{1bca3}', IdentifierType::Default_Ignorable),
+ ('\u{1cf00}', '\u{1cf2d}', IdentifierType::Technical), ('\u{1cf30}', '\u{1cf46}',
+ IdentifierType::Technical), ('\u{1cf50}', '\u{1cfc3}', IdentifierType::Technical),
+ ('\u{1d000}', '\u{1d0f5}', IdentifierType::Technical), ('\u{1d100}', '\u{1d126}',
+ IdentifierType::Technical), ('\u{1d129}', '\u{1d129}', IdentifierType::Technical),
+ ('\u{1d12a}', '\u{1d15d}', IdentifierType::Technical), ('\u{1d15e}', '\u{1d164}',
+ IdentifierType::Not_NFKC), ('\u{1d165}', '\u{1d169}', IdentifierType::Technical),
+ ('\u{1d16a}', '\u{1d16c}', IdentifierType::Technical), ('\u{1d16d}', '\u{1d172}',
+ IdentifierType::Technical), ('\u{1d173}', '\u{1d17a}', IdentifierType::Default_Ignorable),
+ ('\u{1d17b}', '\u{1d182}', IdentifierType::Technical), ('\u{1d183}', '\u{1d184}',
+ IdentifierType::Technical), ('\u{1d185}', '\u{1d18b}', IdentifierType::Technical),
+ ('\u{1d18c}', '\u{1d1a9}', IdentifierType::Technical), ('\u{1d1aa}', '\u{1d1ad}',
+ IdentifierType::Technical), ('\u{1d1ae}', '\u{1d1ba}', IdentifierType::Technical),
+ ('\u{1d1bb}', '\u{1d1c0}', IdentifierType::Not_NFKC), ('\u{1d1c1}', '\u{1d1dd}',
+ IdentifierType::Technical), ('\u{1d1de}', '\u{1d1e8}', IdentifierType::Uncommon_Use),
+ ('\u{1d1e9}', '\u{1d1ea}', IdentifierType::Technical), ('\u{1d200}', '\u{1d241}',
IdentifierType::Obsolete), ('\u{1d242}', '\u{1d244}', IdentifierType::Technical),
- ('\u{1d245}', '\u{1d245}', IdentifierType::Obsolete), ('\u{1d2e0}', '\u{1d2f3}',
- IdentifierType::Not_XID), ('\u{1d300}', '\u{1d356}', IdentifierType::Technical),
- ('\u{1d360}', '\u{1d371}', IdentifierType::Not_XID), ('\u{1d372}', '\u{1d378}',
- IdentifierType::Not_XID), ('\u{1d400}', '\u{1d454}', IdentifierType::Not_NFKC),
- ('\u{1d456}', '\u{1d49c}', IdentifierType::Not_NFKC), ('\u{1d49e}', '\u{1d49f}',
- IdentifierType::Not_NFKC), ('\u{1d4a2}', '\u{1d4a2}', IdentifierType::Not_NFKC),
- ('\u{1d4a5}', '\u{1d4a6}', IdentifierType::Not_NFKC), ('\u{1d4a9}', '\u{1d4ac}',
- IdentifierType::Not_NFKC), ('\u{1d4ae}', '\u{1d4b9}', IdentifierType::Not_NFKC),
- ('\u{1d4bb}', '\u{1d4bb}', IdentifierType::Not_NFKC), ('\u{1d4bd}', '\u{1d4c0}',
- IdentifierType::Not_NFKC), ('\u{1d4c1}', '\u{1d4c1}', IdentifierType::Not_NFKC),
- ('\u{1d4c2}', '\u{1d4c3}', IdentifierType::Not_NFKC), ('\u{1d4c5}', '\u{1d505}',
- IdentifierType::Not_NFKC), ('\u{1d507}', '\u{1d50a}', IdentifierType::Not_NFKC),
- ('\u{1d50d}', '\u{1d514}', IdentifierType::Not_NFKC), ('\u{1d516}', '\u{1d51c}',
- IdentifierType::Not_NFKC), ('\u{1d51e}', '\u{1d539}', IdentifierType::Not_NFKC),
- ('\u{1d53b}', '\u{1d53e}', IdentifierType::Not_NFKC), ('\u{1d540}', '\u{1d544}',
- IdentifierType::Not_NFKC), ('\u{1d546}', '\u{1d546}', IdentifierType::Not_NFKC),
- ('\u{1d54a}', '\u{1d550}', IdentifierType::Not_NFKC), ('\u{1d552}', '\u{1d6a3}',
- IdentifierType::Not_NFKC), ('\u{1d6a4}', '\u{1d6a5}', IdentifierType::Not_NFKC),
- ('\u{1d6a8}', '\u{1d7c9}', IdentifierType::Not_NFKC), ('\u{1d7ca}', '\u{1d7cb}',
- IdentifierType::Not_NFKC), ('\u{1d7ce}', '\u{1d7ff}', IdentifierType::Not_NFKC),
- ('\u{1d800}', '\u{1d9ff}', IdentifierType::Exclusion), ('\u{1da00}', '\u{1da36}',
- IdentifierType::Exclusion), ('\u{1da37}', '\u{1da3a}', IdentifierType::Exclusion),
- ('\u{1da3b}', '\u{1da6c}', IdentifierType::Exclusion), ('\u{1da6d}', '\u{1da74}',
- IdentifierType::Exclusion), ('\u{1da75}', '\u{1da75}', IdentifierType::Exclusion),
- ('\u{1da76}', '\u{1da83}', IdentifierType::Exclusion), ('\u{1da84}', '\u{1da84}',
- IdentifierType::Exclusion), ('\u{1da85}', '\u{1da8b}', IdentifierType::Exclusion),
- ('\u{1da9b}', '\u{1da9f}', IdentifierType::Exclusion), ('\u{1daa1}', '\u{1daaf}',
- IdentifierType::Exclusion), ('\u{1e000}', '\u{1e006}', IdentifierType::Exclusion),
+ ('\u{1d245}', '\u{1d245}', IdentifierType::Obsolete), ('\u{1d2c0}', '\u{1d2d3}',
+ IdentifierType::Not_XID), ('\u{1d2e0}', '\u{1d2f3}', IdentifierType::Not_XID),
+ ('\u{1d300}', '\u{1d356}', IdentifierType::Technical), ('\u{1d360}', '\u{1d371}',
+ IdentifierType::Not_XID), ('\u{1d372}', '\u{1d378}', IdentifierType::Not_XID),
+ ('\u{1d400}', '\u{1d454}', IdentifierType::Not_NFKC), ('\u{1d456}', '\u{1d49c}',
+ IdentifierType::Not_NFKC), ('\u{1d49e}', '\u{1d49f}', IdentifierType::Not_NFKC),
+ ('\u{1d4a2}', '\u{1d4a2}', IdentifierType::Not_NFKC), ('\u{1d4a5}', '\u{1d4a6}',
+ IdentifierType::Not_NFKC), ('\u{1d4a9}', '\u{1d4ac}', IdentifierType::Not_NFKC),
+ ('\u{1d4ae}', '\u{1d4b9}', IdentifierType::Not_NFKC), ('\u{1d4bb}', '\u{1d4bb}',
+ IdentifierType::Not_NFKC), ('\u{1d4bd}', '\u{1d4c0}', IdentifierType::Not_NFKC),
+ ('\u{1d4c1}', '\u{1d4c1}', IdentifierType::Not_NFKC), ('\u{1d4c2}', '\u{1d4c3}',
+ IdentifierType::Not_NFKC), ('\u{1d4c5}', '\u{1d505}', IdentifierType::Not_NFKC),
+ ('\u{1d507}', '\u{1d50a}', IdentifierType::Not_NFKC), ('\u{1d50d}', '\u{1d514}',
+ IdentifierType::Not_NFKC), ('\u{1d516}', '\u{1d51c}', IdentifierType::Not_NFKC),
+ ('\u{1d51e}', '\u{1d539}', IdentifierType::Not_NFKC), ('\u{1d53b}', '\u{1d53e}',
+ IdentifierType::Not_NFKC), ('\u{1d540}', '\u{1d544}', IdentifierType::Not_NFKC),
+ ('\u{1d546}', '\u{1d546}', IdentifierType::Not_NFKC), ('\u{1d54a}', '\u{1d550}',
+ IdentifierType::Not_NFKC), ('\u{1d552}', '\u{1d6a3}', IdentifierType::Not_NFKC),
+ ('\u{1d6a4}', '\u{1d6a5}', IdentifierType::Not_NFKC), ('\u{1d6a8}', '\u{1d7c9}',
+ IdentifierType::Not_NFKC), ('\u{1d7ca}', '\u{1d7cb}', IdentifierType::Not_NFKC),
+ ('\u{1d7ce}', '\u{1d7ff}', IdentifierType::Not_NFKC), ('\u{1d800}', '\u{1d9ff}',
+ IdentifierType::Exclusion), ('\u{1da00}', '\u{1da36}', IdentifierType::Exclusion),
+ ('\u{1da37}', '\u{1da3a}', IdentifierType::Exclusion), ('\u{1da3b}', '\u{1da6c}',
+ IdentifierType::Exclusion), ('\u{1da6d}', '\u{1da74}', IdentifierType::Exclusion),
+ ('\u{1da75}', '\u{1da75}', IdentifierType::Exclusion), ('\u{1da76}', '\u{1da83}',
+ IdentifierType::Exclusion), ('\u{1da84}', '\u{1da84}', IdentifierType::Exclusion),
+ ('\u{1da85}', '\u{1da8b}', IdentifierType::Exclusion), ('\u{1da9b}', '\u{1da9f}',
+ IdentifierType::Exclusion), ('\u{1daa1}', '\u{1daaf}', IdentifierType::Exclusion),
+ ('\u{1df00}', '\u{1df1e}', IdentifierType::Recommended), ('\u{1df25}', '\u{1df2a}',
+ IdentifierType::Recommended), ('\u{1e000}', '\u{1e006}', IdentifierType::Exclusion),
('\u{1e008}', '\u{1e018}', IdentifierType::Exclusion), ('\u{1e01b}', '\u{1e021}',
IdentifierType::Exclusion), ('\u{1e023}', '\u{1e024}', IdentifierType::Exclusion),
- ('\u{1e026}', '\u{1e02a}', IdentifierType::Exclusion), ('\u{1e100}', '\u{1e12c}',
- IdentifierType::Limited_Use), ('\u{1e130}', '\u{1e13d}', IdentifierType::Limited_Use),
- ('\u{1e140}', '\u{1e149}', IdentifierType::Limited_Use), ('\u{1e14e}', '\u{1e14e}',
- IdentifierType::Limited_Use), ('\u{1e14f}', '\u{1e14f}', IdentifierType::Limited_Use),
+ ('\u{1e026}', '\u{1e02a}', IdentifierType::Exclusion), ('\u{1e030}', '\u{1e06d}',
+ IdentifierType::Not_NFKC), ('\u{1e08f}', '\u{1e08f}', IdentifierType::Recommended),
+ ('\u{1e100}', '\u{1e12c}', IdentifierType::Limited_Use), ('\u{1e130}', '\u{1e13d}',
+ IdentifierType::Limited_Use), ('\u{1e140}', '\u{1e149}', IdentifierType::Limited_Use),
+ ('\u{1e14e}', '\u{1e14e}', IdentifierType::Limited_Use), ('\u{1e14f}', '\u{1e14f}',
+ IdentifierType::Limited_Use), ('\u{1e290}', '\u{1e2ae}', IdentifierType::Exclusion),
('\u{1e2c0}', '\u{1e2f9}', IdentifierType::Limited_Use), ('\u{1e2ff}', '\u{1e2ff}',
- IdentifierType::Limited_Use), ('\u{1e800}', '\u{1e8c4}', IdentifierType::Exclusion),
- ('\u{1e8c7}', '\u{1e8cf}', IdentifierType::Exclusion), ('\u{1e8d0}', '\u{1e8d6}',
- IdentifierType::Exclusion), ('\u{1e900}', '\u{1e94a}', IdentifierType::Limited_Use),
- ('\u{1e94b}', '\u{1e94b}', IdentifierType::Limited_Use), ('\u{1e950}', '\u{1e959}',
- IdentifierType::Limited_Use), ('\u{1e95e}', '\u{1e95f}', IdentifierType::Limited_Use),
- ('\u{1ec71}', '\u{1ecb4}', IdentifierType::Not_XID), ('\u{1ed01}', '\u{1ed3d}',
- IdentifierType::Not_XID), ('\u{1ee00}', '\u{1ee03}', IdentifierType::Not_NFKC),
- ('\u{1ee05}', '\u{1ee1f}', IdentifierType::Not_NFKC), ('\u{1ee21}', '\u{1ee22}',
- IdentifierType::Not_NFKC), ('\u{1ee24}', '\u{1ee24}', IdentifierType::Not_NFKC),
- ('\u{1ee27}', '\u{1ee27}', IdentifierType::Not_NFKC), ('\u{1ee29}', '\u{1ee32}',
- IdentifierType::Not_NFKC), ('\u{1ee34}', '\u{1ee37}', IdentifierType::Not_NFKC),
- ('\u{1ee39}', '\u{1ee39}', IdentifierType::Not_NFKC), ('\u{1ee3b}', '\u{1ee3b}',
- IdentifierType::Not_NFKC), ('\u{1ee42}', '\u{1ee42}', IdentifierType::Not_NFKC),
- ('\u{1ee47}', '\u{1ee47}', IdentifierType::Not_NFKC), ('\u{1ee49}', '\u{1ee49}',
- IdentifierType::Not_NFKC), ('\u{1ee4b}', '\u{1ee4b}', IdentifierType::Not_NFKC),
- ('\u{1ee4d}', '\u{1ee4f}', IdentifierType::Not_NFKC), ('\u{1ee51}', '\u{1ee52}',
- IdentifierType::Not_NFKC), ('\u{1ee54}', '\u{1ee54}', IdentifierType::Not_NFKC),
- ('\u{1ee57}', '\u{1ee57}', IdentifierType::Not_NFKC), ('\u{1ee59}', '\u{1ee59}',
- IdentifierType::Not_NFKC), ('\u{1ee5b}', '\u{1ee5b}', IdentifierType::Not_NFKC),
- ('\u{1ee5d}', '\u{1ee5d}', IdentifierType::Not_NFKC), ('\u{1ee5f}', '\u{1ee5f}',
- IdentifierType::Not_NFKC), ('\u{1ee61}', '\u{1ee62}', IdentifierType::Not_NFKC),
- ('\u{1ee64}', '\u{1ee64}', IdentifierType::Not_NFKC), ('\u{1ee67}', '\u{1ee6a}',
- IdentifierType::Not_NFKC), ('\u{1ee6c}', '\u{1ee72}', IdentifierType::Not_NFKC),
- ('\u{1ee74}', '\u{1ee77}', IdentifierType::Not_NFKC), ('\u{1ee79}', '\u{1ee7c}',
- IdentifierType::Not_NFKC), ('\u{1ee7e}', '\u{1ee7e}', IdentifierType::Not_NFKC),
- ('\u{1ee80}', '\u{1ee89}', IdentifierType::Not_NFKC), ('\u{1ee8b}', '\u{1ee9b}',
- IdentifierType::Not_NFKC), ('\u{1eea1}', '\u{1eea3}', IdentifierType::Not_NFKC),
- ('\u{1eea5}', '\u{1eea9}', IdentifierType::Not_NFKC), ('\u{1eeab}', '\u{1eebb}',
- IdentifierType::Not_NFKC), ('\u{1eef0}', '\u{1eef1}', IdentifierType::Not_XID),
- ('\u{1f000}', '\u{1f02b}', IdentifierType::Not_XID), ('\u{1f030}', '\u{1f093}',
- IdentifierType::Not_XID), ('\u{1f0a0}', '\u{1f0ae}', IdentifierType::Not_XID),
- ('\u{1f0b1}', '\u{1f0be}', IdentifierType::Not_XID), ('\u{1f0bf}', '\u{1f0bf}',
- IdentifierType::Not_XID), ('\u{1f0c1}', '\u{1f0cf}', IdentifierType::Not_XID),
- ('\u{1f0d1}', '\u{1f0df}', IdentifierType::Not_XID), ('\u{1f0e0}', '\u{1f0f5}',
- IdentifierType::Not_XID), ('\u{1f100}', '\u{1f10a}', IdentifierType::Not_NFKC),
- ('\u{1f10b}', '\u{1f10c}', IdentifierType::Not_XID), ('\u{1f10d}', '\u{1f10f}',
- IdentifierType::Not_XID), ('\u{1f110}', '\u{1f12e}', IdentifierType::Not_NFKC),
- ('\u{1f12f}', '\u{1f12f}', IdentifierType::Not_XID), ('\u{1f130}', '\u{1f130}',
- IdentifierType::Not_NFKC), ('\u{1f131}', '\u{1f131}', IdentifierType::Not_NFKC),
- ('\u{1f132}', '\u{1f13c}', IdentifierType::Not_NFKC), ('\u{1f13d}', '\u{1f13d}',
- IdentifierType::Not_NFKC), ('\u{1f13e}', '\u{1f13e}', IdentifierType::Not_NFKC),
- ('\u{1f13f}', '\u{1f13f}', IdentifierType::Not_NFKC), ('\u{1f140}', '\u{1f141}',
- IdentifierType::Not_NFKC), ('\u{1f142}', '\u{1f142}', IdentifierType::Not_NFKC),
- ('\u{1f143}', '\u{1f145}', IdentifierType::Not_NFKC), ('\u{1f146}', '\u{1f146}',
- IdentifierType::Not_NFKC), ('\u{1f147}', '\u{1f149}', IdentifierType::Not_NFKC),
- ('\u{1f14a}', '\u{1f14e}', IdentifierType::Not_NFKC), ('\u{1f14f}', '\u{1f14f}',
- IdentifierType::Not_NFKC), ('\u{1f150}', '\u{1f156}', IdentifierType::Not_XID),
- ('\u{1f157}', '\u{1f157}', IdentifierType::Not_XID), ('\u{1f158}', '\u{1f15e}',
- IdentifierType::Not_XID), ('\u{1f15f}', '\u{1f15f}', IdentifierType::Not_XID),
- ('\u{1f160}', '\u{1f169}', IdentifierType::Not_XID), ('\u{1f16a}', '\u{1f16b}',
- IdentifierType::Not_NFKC), ('\u{1f16c}', '\u{1f16c}', IdentifierType::Not_NFKC),
- ('\u{1f16d}', '\u{1f16f}', IdentifierType::Not_XID), ('\u{1f170}', '\u{1f178}',
- IdentifierType::Not_XID), ('\u{1f179}', '\u{1f179}', IdentifierType::Not_XID),
- ('\u{1f17a}', '\u{1f17a}', IdentifierType::Not_XID), ('\u{1f17b}', '\u{1f17c}',
- IdentifierType::Not_XID), ('\u{1f17d}', '\u{1f17e}', IdentifierType::Not_XID),
- ('\u{1f17f}', '\u{1f17f}', IdentifierType::Not_XID), ('\u{1f180}', '\u{1f189}',
- IdentifierType::Not_XID), ('\u{1f18a}', '\u{1f18d}', IdentifierType::Not_XID),
- ('\u{1f18e}', '\u{1f18f}', IdentifierType::Not_XID), ('\u{1f190}', '\u{1f190}',
- IdentifierType::Not_NFKC), ('\u{1f191}', '\u{1f19a}', IdentifierType::Not_XID),
- ('\u{1f19b}', '\u{1f1ac}', IdentifierType::Not_XID), ('\u{1f1ad}', '\u{1f1ad}',
- IdentifierType::Not_XID), ('\u{1f1e6}', '\u{1f1ff}', IdentifierType::Not_XID),
- ('\u{1f200}', '\u{1f200}', IdentifierType::Not_NFKC), ('\u{1f201}', '\u{1f202}',
- IdentifierType::Not_NFKC), ('\u{1f210}', '\u{1f231}', IdentifierType::Not_NFKC),
- ('\u{1f232}', '\u{1f23a}', IdentifierType::Not_NFKC), ('\u{1f23b}', '\u{1f23b}',
- IdentifierType::Not_NFKC), ('\u{1f240}', '\u{1f248}', IdentifierType::Not_NFKC),
- ('\u{1f250}', '\u{1f251}', IdentifierType::Not_NFKC), ('\u{1f260}', '\u{1f265}',
- IdentifierType::Not_XID), ('\u{1f300}', '\u{1f320}', IdentifierType::Not_XID),
- ('\u{1f321}', '\u{1f32c}', IdentifierType::Not_XID), ('\u{1f32d}', '\u{1f32f}',
- IdentifierType::Not_XID), ('\u{1f330}', '\u{1f335}', IdentifierType::Not_XID),
- ('\u{1f336}', '\u{1f336}', IdentifierType::Not_XID), ('\u{1f337}', '\u{1f37c}',
- IdentifierType::Not_XID), ('\u{1f37d}', '\u{1f37d}', IdentifierType::Not_XID),
- ('\u{1f37e}', '\u{1f37f}', IdentifierType::Not_XID), ('\u{1f380}', '\u{1f393}',
- IdentifierType::Not_XID), ('\u{1f394}', '\u{1f39f}', IdentifierType::Not_XID),
- ('\u{1f3a0}', '\u{1f3c4}', IdentifierType::Not_XID), ('\u{1f3c5}', '\u{1f3c5}',
- IdentifierType::Not_XID), ('\u{1f3c6}', '\u{1f3ca}', IdentifierType::Not_XID),
- ('\u{1f3cb}', '\u{1f3ce}', IdentifierType::Not_XID), ('\u{1f3cf}', '\u{1f3d3}',
- IdentifierType::Not_XID), ('\u{1f3d4}', '\u{1f3df}', IdentifierType::Not_XID),
- ('\u{1f3e0}', '\u{1f3f0}', IdentifierType::Not_XID), ('\u{1f3f1}', '\u{1f3f7}',
- IdentifierType::Not_XID), ('\u{1f3f8}', '\u{1f3ff}', IdentifierType::Not_XID),
- ('\u{1f400}', '\u{1f43e}', IdentifierType::Not_XID), ('\u{1f43f}', '\u{1f43f}',
- IdentifierType::Not_XID), ('\u{1f440}', '\u{1f440}', IdentifierType::Not_XID),
- ('\u{1f441}', '\u{1f441}', IdentifierType::Not_XID), ('\u{1f442}', '\u{1f4f7}',
- IdentifierType::Not_XID), ('\u{1f4f8}', '\u{1f4f8}', IdentifierType::Not_XID),
- ('\u{1f4f9}', '\u{1f4fc}', IdentifierType::Not_XID), ('\u{1f4fd}', '\u{1f4fe}',
- IdentifierType::Not_XID), ('\u{1f4ff}', '\u{1f4ff}', IdentifierType::Not_XID),
- ('\u{1f500}', '\u{1f53d}', IdentifierType::Not_XID), ('\u{1f53e}', '\u{1f53f}',
- IdentifierType::Not_XID), ('\u{1f540}', '\u{1f543}', IdentifierType::Not_XID),
- ('\u{1f544}', '\u{1f54a}', IdentifierType::Not_XID), ('\u{1f54b}', '\u{1f54e}',
- IdentifierType::Not_XID), ('\u{1f54f}', '\u{1f54f}', IdentifierType::Uncommon_Use),
- ('\u{1f550}', '\u{1f567}', IdentifierType::Not_XID), ('\u{1f568}', '\u{1f579}',
- IdentifierType::Not_XID), ('\u{1f57a}', '\u{1f57a}', IdentifierType::Not_XID),
- ('\u{1f57b}', '\u{1f5a3}', IdentifierType::Not_XID), ('\u{1f5a4}', '\u{1f5a4}',
- IdentifierType::Not_XID), ('\u{1f5a5}', '\u{1f5fa}', IdentifierType::Not_XID),
- ('\u{1f5fb}', '\u{1f5ff}', IdentifierType::Not_XID), ('\u{1f600}', '\u{1f600}',
- IdentifierType::Not_XID), ('\u{1f601}', '\u{1f610}', IdentifierType::Not_XID),
- ('\u{1f611}', '\u{1f611}', IdentifierType::Not_XID), ('\u{1f612}', '\u{1f614}',
- IdentifierType::Not_XID), ('\u{1f615}', '\u{1f615}', IdentifierType::Not_XID),
- ('\u{1f616}', '\u{1f616}', IdentifierType::Not_XID), ('\u{1f617}', '\u{1f617}',
- IdentifierType::Not_XID), ('\u{1f618}', '\u{1f618}', IdentifierType::Not_XID),
- ('\u{1f619}', '\u{1f619}', IdentifierType::Not_XID), ('\u{1f61a}', '\u{1f61a}',
- IdentifierType::Not_XID), ('\u{1f61b}', '\u{1f61b}', IdentifierType::Not_XID),
- ('\u{1f61c}', '\u{1f61e}', IdentifierType::Not_XID), ('\u{1f61f}', '\u{1f61f}',
- IdentifierType::Not_XID), ('\u{1f620}', '\u{1f625}', IdentifierType::Not_XID),
- ('\u{1f626}', '\u{1f627}', IdentifierType::Not_XID), ('\u{1f628}', '\u{1f62b}',
- IdentifierType::Not_XID), ('\u{1f62c}', '\u{1f62c}', IdentifierType::Not_XID),
- ('\u{1f62d}', '\u{1f62d}', IdentifierType::Not_XID), ('\u{1f62e}', '\u{1f62f}',
- IdentifierType::Not_XID), ('\u{1f630}', '\u{1f633}', IdentifierType::Not_XID),
- ('\u{1f634}', '\u{1f634}', IdentifierType::Not_XID), ('\u{1f635}', '\u{1f640}',
- IdentifierType::Not_XID), ('\u{1f641}', '\u{1f642}', IdentifierType::Not_XID),
- ('\u{1f643}', '\u{1f644}', IdentifierType::Not_XID), ('\u{1f645}', '\u{1f64f}',
- IdentifierType::Not_XID), ('\u{1f650}', '\u{1f67f}', IdentifierType::Not_XID),
- ('\u{1f680}', '\u{1f6c5}', IdentifierType::Not_XID), ('\u{1f6c6}', '\u{1f6cf}',
- IdentifierType::Not_XID), ('\u{1f6d0}', '\u{1f6d0}', IdentifierType::Not_XID),
- ('\u{1f6d1}', '\u{1f6d2}', IdentifierType::Not_XID), ('\u{1f6d3}', '\u{1f6d4}',
- IdentifierType::Not_XID), ('\u{1f6d5}', '\u{1f6d5}', IdentifierType::Not_XID),
- ('\u{1f6d6}', '\u{1f6d7}', IdentifierType::Not_XID), ('\u{1f6e0}', '\u{1f6ec}',
- IdentifierType::Not_XID), ('\u{1f6f0}', '\u{1f6f3}', IdentifierType::Not_XID),
- ('\u{1f6f4}', '\u{1f6f6}', IdentifierType::Not_XID), ('\u{1f6f7}', '\u{1f6f8}',
- IdentifierType::Not_XID), ('\u{1f6f9}', '\u{1f6f9}', IdentifierType::Not_XID),
- ('\u{1f6fa}', '\u{1f6fa}', IdentifierType::Not_XID), ('\u{1f6fb}', '\u{1f6fc}',
- IdentifierType::Not_XID), ('\u{1f700}', '\u{1f773}', IdentifierType::Not_XID),
+ IdentifierType::Limited_Use), ('\u{1e4d0}', '\u{1e4f9}', IdentifierType::Exclusion),
+ ('\u{1e7e0}', '\u{1e7e6}', IdentifierType::Recommended), ('\u{1e7e8}', '\u{1e7eb}',
+ IdentifierType::Recommended), ('\u{1e7ed}', '\u{1e7ee}', IdentifierType::Recommended),
+ ('\u{1e7f0}', '\u{1e7fe}', IdentifierType::Recommended), ('\u{1e800}', '\u{1e8c4}',
+ IdentifierType::Exclusion), ('\u{1e8c7}', '\u{1e8cf}', IdentifierType::Exclusion),
+ ('\u{1e8d0}', '\u{1e8d6}', IdentifierType::Exclusion), ('\u{1e900}', '\u{1e94a}',
+ IdentifierType::Limited_Use), ('\u{1e94b}', '\u{1e94b}', IdentifierType::Limited_Use),
+ ('\u{1e950}', '\u{1e959}', IdentifierType::Limited_Use), ('\u{1e95e}', '\u{1e95f}',
+ IdentifierType::Limited_Use), ('\u{1ec71}', '\u{1ecb4}', IdentifierType::Not_XID),
+ ('\u{1ed01}', '\u{1ed3d}', IdentifierType::Not_XID), ('\u{1ee00}', '\u{1ee03}',
+ IdentifierType::Not_NFKC), ('\u{1ee05}', '\u{1ee1f}', IdentifierType::Not_NFKC),
+ ('\u{1ee21}', '\u{1ee22}', IdentifierType::Not_NFKC), ('\u{1ee24}', '\u{1ee24}',
+ IdentifierType::Not_NFKC), ('\u{1ee27}', '\u{1ee27}', IdentifierType::Not_NFKC),
+ ('\u{1ee29}', '\u{1ee32}', IdentifierType::Not_NFKC), ('\u{1ee34}', '\u{1ee37}',
+ IdentifierType::Not_NFKC), ('\u{1ee39}', '\u{1ee39}', IdentifierType::Not_NFKC),
+ ('\u{1ee3b}', '\u{1ee3b}', IdentifierType::Not_NFKC), ('\u{1ee42}', '\u{1ee42}',
+ IdentifierType::Not_NFKC), ('\u{1ee47}', '\u{1ee47}', IdentifierType::Not_NFKC),
+ ('\u{1ee49}', '\u{1ee49}', IdentifierType::Not_NFKC), ('\u{1ee4b}', '\u{1ee4b}',
+ IdentifierType::Not_NFKC), ('\u{1ee4d}', '\u{1ee4f}', IdentifierType::Not_NFKC),
+ ('\u{1ee51}', '\u{1ee52}', IdentifierType::Not_NFKC), ('\u{1ee54}', '\u{1ee54}',
+ IdentifierType::Not_NFKC), ('\u{1ee57}', '\u{1ee57}', IdentifierType::Not_NFKC),
+ ('\u{1ee59}', '\u{1ee59}', IdentifierType::Not_NFKC), ('\u{1ee5b}', '\u{1ee5b}',
+ IdentifierType::Not_NFKC), ('\u{1ee5d}', '\u{1ee5d}', IdentifierType::Not_NFKC),
+ ('\u{1ee5f}', '\u{1ee5f}', IdentifierType::Not_NFKC), ('\u{1ee61}', '\u{1ee62}',
+ IdentifierType::Not_NFKC), ('\u{1ee64}', '\u{1ee64}', IdentifierType::Not_NFKC),
+ ('\u{1ee67}', '\u{1ee6a}', IdentifierType::Not_NFKC), ('\u{1ee6c}', '\u{1ee72}',
+ IdentifierType::Not_NFKC), ('\u{1ee74}', '\u{1ee77}', IdentifierType::Not_NFKC),
+ ('\u{1ee79}', '\u{1ee7c}', IdentifierType::Not_NFKC), ('\u{1ee7e}', '\u{1ee7e}',
+ IdentifierType::Not_NFKC), ('\u{1ee80}', '\u{1ee89}', IdentifierType::Not_NFKC),
+ ('\u{1ee8b}', '\u{1ee9b}', IdentifierType::Not_NFKC), ('\u{1eea1}', '\u{1eea3}',
+ IdentifierType::Not_NFKC), ('\u{1eea5}', '\u{1eea9}', IdentifierType::Not_NFKC),
+ ('\u{1eeab}', '\u{1eebb}', IdentifierType::Not_NFKC), ('\u{1eef0}', '\u{1eef1}',
+ IdentifierType::Not_XID), ('\u{1f000}', '\u{1f02b}', IdentifierType::Not_XID),
+ ('\u{1f030}', '\u{1f093}', IdentifierType::Not_XID), ('\u{1f0a0}', '\u{1f0ae}',
+ IdentifierType::Not_XID), ('\u{1f0b1}', '\u{1f0be}', IdentifierType::Not_XID),
+ ('\u{1f0bf}', '\u{1f0bf}', IdentifierType::Not_XID), ('\u{1f0c1}', '\u{1f0cf}',
+ IdentifierType::Not_XID), ('\u{1f0d1}', '\u{1f0df}', IdentifierType::Not_XID),
+ ('\u{1f0e0}', '\u{1f0f5}', IdentifierType::Not_XID), ('\u{1f100}', '\u{1f10a}',
+ IdentifierType::Not_NFKC), ('\u{1f10b}', '\u{1f10c}', IdentifierType::Not_XID),
+ ('\u{1f10d}', '\u{1f10f}', IdentifierType::Not_XID), ('\u{1f110}', '\u{1f12e}',
+ IdentifierType::Not_NFKC), ('\u{1f12f}', '\u{1f12f}', IdentifierType::Not_XID),
+ ('\u{1f130}', '\u{1f130}', IdentifierType::Not_NFKC), ('\u{1f131}', '\u{1f131}',
+ IdentifierType::Not_NFKC), ('\u{1f132}', '\u{1f13c}', IdentifierType::Not_NFKC),
+ ('\u{1f13d}', '\u{1f13d}', IdentifierType::Not_NFKC), ('\u{1f13e}', '\u{1f13e}',
+ IdentifierType::Not_NFKC), ('\u{1f13f}', '\u{1f13f}', IdentifierType::Not_NFKC),
+ ('\u{1f140}', '\u{1f141}', IdentifierType::Not_NFKC), ('\u{1f142}', '\u{1f142}',
+ IdentifierType::Not_NFKC), ('\u{1f143}', '\u{1f145}', IdentifierType::Not_NFKC),
+ ('\u{1f146}', '\u{1f146}', IdentifierType::Not_NFKC), ('\u{1f147}', '\u{1f149}',
+ IdentifierType::Not_NFKC), ('\u{1f14a}', '\u{1f14e}', IdentifierType::Not_NFKC),
+ ('\u{1f14f}', '\u{1f14f}', IdentifierType::Not_NFKC), ('\u{1f150}', '\u{1f156}',
+ IdentifierType::Not_XID), ('\u{1f157}', '\u{1f157}', IdentifierType::Not_XID),
+ ('\u{1f158}', '\u{1f15e}', IdentifierType::Not_XID), ('\u{1f15f}', '\u{1f15f}',
+ IdentifierType::Not_XID), ('\u{1f160}', '\u{1f169}', IdentifierType::Not_XID),
+ ('\u{1f16a}', '\u{1f16b}', IdentifierType::Not_NFKC), ('\u{1f16c}', '\u{1f16c}',
+ IdentifierType::Not_NFKC), ('\u{1f16d}', '\u{1f16f}', IdentifierType::Not_XID),
+ ('\u{1f170}', '\u{1f178}', IdentifierType::Not_XID), ('\u{1f179}', '\u{1f179}',
+ IdentifierType::Not_XID), ('\u{1f17a}', '\u{1f17a}', IdentifierType::Not_XID),
+ ('\u{1f17b}', '\u{1f17c}', IdentifierType::Not_XID), ('\u{1f17d}', '\u{1f17e}',
+ IdentifierType::Not_XID), ('\u{1f17f}', '\u{1f17f}', IdentifierType::Not_XID),
+ ('\u{1f180}', '\u{1f189}', IdentifierType::Not_XID), ('\u{1f18a}', '\u{1f18d}',
+ IdentifierType::Not_XID), ('\u{1f18e}', '\u{1f18f}', IdentifierType::Not_XID),
+ ('\u{1f190}', '\u{1f190}', IdentifierType::Not_NFKC), ('\u{1f191}', '\u{1f19a}',
+ IdentifierType::Not_XID), ('\u{1f19b}', '\u{1f1ac}', IdentifierType::Not_XID),
+ ('\u{1f1ad}', '\u{1f1ad}', IdentifierType::Not_XID), ('\u{1f1e6}', '\u{1f1ff}',
+ IdentifierType::Not_XID), ('\u{1f200}', '\u{1f200}', IdentifierType::Not_NFKC),
+ ('\u{1f201}', '\u{1f202}', IdentifierType::Not_NFKC), ('\u{1f210}', '\u{1f231}',
+ IdentifierType::Not_NFKC), ('\u{1f232}', '\u{1f23a}', IdentifierType::Not_NFKC),
+ ('\u{1f23b}', '\u{1f23b}', IdentifierType::Not_NFKC), ('\u{1f240}', '\u{1f248}',
+ IdentifierType::Not_NFKC), ('\u{1f250}', '\u{1f251}', IdentifierType::Not_NFKC),
+ ('\u{1f260}', '\u{1f265}', IdentifierType::Not_XID), ('\u{1f300}', '\u{1f320}',
+ IdentifierType::Not_XID), ('\u{1f321}', '\u{1f32c}', IdentifierType::Not_XID),
+ ('\u{1f32d}', '\u{1f32f}', IdentifierType::Not_XID), ('\u{1f330}', '\u{1f335}',
+ IdentifierType::Not_XID), ('\u{1f336}', '\u{1f336}', IdentifierType::Not_XID),
+ ('\u{1f337}', '\u{1f37c}', IdentifierType::Not_XID), ('\u{1f37d}', '\u{1f37d}',
+ IdentifierType::Not_XID), ('\u{1f37e}', '\u{1f37f}', IdentifierType::Not_XID),
+ ('\u{1f380}', '\u{1f393}', IdentifierType::Not_XID), ('\u{1f394}', '\u{1f39f}',
+ IdentifierType::Not_XID), ('\u{1f3a0}', '\u{1f3c4}', IdentifierType::Not_XID),
+ ('\u{1f3c5}', '\u{1f3c5}', IdentifierType::Not_XID), ('\u{1f3c6}', '\u{1f3ca}',
+ IdentifierType::Not_XID), ('\u{1f3cb}', '\u{1f3ce}', IdentifierType::Not_XID),
+ ('\u{1f3cf}', '\u{1f3d3}', IdentifierType::Not_XID), ('\u{1f3d4}', '\u{1f3df}',
+ IdentifierType::Not_XID), ('\u{1f3e0}', '\u{1f3f0}', IdentifierType::Not_XID),
+ ('\u{1f3f1}', '\u{1f3f7}', IdentifierType::Not_XID), ('\u{1f3f8}', '\u{1f3ff}',
+ IdentifierType::Not_XID), ('\u{1f400}', '\u{1f43e}', IdentifierType::Not_XID),
+ ('\u{1f43f}', '\u{1f43f}', IdentifierType::Not_XID), ('\u{1f440}', '\u{1f440}',
+ IdentifierType::Not_XID), ('\u{1f441}', '\u{1f441}', IdentifierType::Not_XID),
+ ('\u{1f442}', '\u{1f4f7}', IdentifierType::Not_XID), ('\u{1f4f8}', '\u{1f4f8}',
+ IdentifierType::Not_XID), ('\u{1f4f9}', '\u{1f4fc}', IdentifierType::Not_XID),
+ ('\u{1f4fd}', '\u{1f4fe}', IdentifierType::Not_XID), ('\u{1f4ff}', '\u{1f4ff}',
+ IdentifierType::Not_XID), ('\u{1f500}', '\u{1f53d}', IdentifierType::Not_XID),
+ ('\u{1f53e}', '\u{1f53f}', IdentifierType::Not_XID), ('\u{1f540}', '\u{1f543}',
+ IdentifierType::Not_XID), ('\u{1f544}', '\u{1f54a}', IdentifierType::Not_XID),
+ ('\u{1f54b}', '\u{1f54e}', IdentifierType::Not_XID), ('\u{1f54f}', '\u{1f54f}',
+ IdentifierType::Uncommon_Use), ('\u{1f550}', '\u{1f567}', IdentifierType::Not_XID),
+ ('\u{1f568}', '\u{1f579}', IdentifierType::Not_XID), ('\u{1f57a}', '\u{1f57a}',
+ IdentifierType::Not_XID), ('\u{1f57b}', '\u{1f5a3}', IdentifierType::Not_XID),
+ ('\u{1f5a4}', '\u{1f5a4}', IdentifierType::Not_XID), ('\u{1f5a5}', '\u{1f5fa}',
+ IdentifierType::Not_XID), ('\u{1f5fb}', '\u{1f5ff}', IdentifierType::Not_XID),
+ ('\u{1f600}', '\u{1f600}', IdentifierType::Not_XID), ('\u{1f601}', '\u{1f610}',
+ IdentifierType::Not_XID), ('\u{1f611}', '\u{1f611}', IdentifierType::Not_XID),
+ ('\u{1f612}', '\u{1f614}', IdentifierType::Not_XID), ('\u{1f615}', '\u{1f615}',
+ IdentifierType::Not_XID), ('\u{1f616}', '\u{1f616}', IdentifierType::Not_XID),
+ ('\u{1f617}', '\u{1f617}', IdentifierType::Not_XID), ('\u{1f618}', '\u{1f618}',
+ IdentifierType::Not_XID), ('\u{1f619}', '\u{1f619}', IdentifierType::Not_XID),
+ ('\u{1f61a}', '\u{1f61a}', IdentifierType::Not_XID), ('\u{1f61b}', '\u{1f61b}',
+ IdentifierType::Not_XID), ('\u{1f61c}', '\u{1f61e}', IdentifierType::Not_XID),
+ ('\u{1f61f}', '\u{1f61f}', IdentifierType::Not_XID), ('\u{1f620}', '\u{1f625}',
+ IdentifierType::Not_XID), ('\u{1f626}', '\u{1f627}', IdentifierType::Not_XID),
+ ('\u{1f628}', '\u{1f62b}', IdentifierType::Not_XID), ('\u{1f62c}', '\u{1f62c}',
+ IdentifierType::Not_XID), ('\u{1f62d}', '\u{1f62d}', IdentifierType::Not_XID),
+ ('\u{1f62e}', '\u{1f62f}', IdentifierType::Not_XID), ('\u{1f630}', '\u{1f633}',
+ IdentifierType::Not_XID), ('\u{1f634}', '\u{1f634}', IdentifierType::Not_XID),
+ ('\u{1f635}', '\u{1f640}', IdentifierType::Not_XID), ('\u{1f641}', '\u{1f642}',
+ IdentifierType::Not_XID), ('\u{1f643}', '\u{1f644}', IdentifierType::Not_XID),
+ ('\u{1f645}', '\u{1f64f}', IdentifierType::Not_XID), ('\u{1f650}', '\u{1f67f}',
+ IdentifierType::Not_XID), ('\u{1f680}', '\u{1f6c5}', IdentifierType::Not_XID),
+ ('\u{1f6c6}', '\u{1f6cf}', IdentifierType::Not_XID), ('\u{1f6d0}', '\u{1f6d0}',
+ IdentifierType::Not_XID), ('\u{1f6d1}', '\u{1f6d2}', IdentifierType::Not_XID),
+ ('\u{1f6d3}', '\u{1f6d4}', IdentifierType::Not_XID), ('\u{1f6d5}', '\u{1f6d5}',
+ IdentifierType::Not_XID), ('\u{1f6d6}', '\u{1f6d7}', IdentifierType::Not_XID),
+ ('\u{1f6dc}', '\u{1f6dc}', IdentifierType::Not_XID), ('\u{1f6dd}', '\u{1f6df}',
+ IdentifierType::Not_XID), ('\u{1f6e0}', '\u{1f6ec}', IdentifierType::Not_XID),
+ ('\u{1f6f0}', '\u{1f6f3}', IdentifierType::Not_XID), ('\u{1f6f4}', '\u{1f6f6}',
+ IdentifierType::Not_XID), ('\u{1f6f7}', '\u{1f6f8}', IdentifierType::Not_XID),
+ ('\u{1f6f9}', '\u{1f6f9}', IdentifierType::Not_XID), ('\u{1f6fa}', '\u{1f6fa}',
+ IdentifierType::Not_XID), ('\u{1f6fb}', '\u{1f6fc}', IdentifierType::Not_XID),
+ ('\u{1f700}', '\u{1f773}', IdentifierType::Not_XID), ('\u{1f774}', '\u{1f776}',
+ IdentifierType::Not_XID), ('\u{1f77b}', '\u{1f77f}', IdentifierType::Not_XID),
('\u{1f780}', '\u{1f7d4}', IdentifierType::Not_XID), ('\u{1f7d5}', '\u{1f7d8}',
- IdentifierType::Not_XID), ('\u{1f7e0}', '\u{1f7eb}', IdentifierType::Not_XID),
- ('\u{1f800}', '\u{1f80b}', IdentifierType::Not_XID), ('\u{1f810}', '\u{1f847}',
- IdentifierType::Not_XID), ('\u{1f850}', '\u{1f859}', IdentifierType::Not_XID),
- ('\u{1f860}', '\u{1f887}', IdentifierType::Not_XID), ('\u{1f890}', '\u{1f8ad}',
- IdentifierType::Not_XID), ('\u{1f8b0}', '\u{1f8b1}', IdentifierType::Not_XID),
- ('\u{1f900}', '\u{1f90b}', IdentifierType::Not_XID), ('\u{1f90c}', '\u{1f90c}',
- IdentifierType::Not_XID), ('\u{1f90d}', '\u{1f90f}', IdentifierType::Not_XID),
- ('\u{1f910}', '\u{1f918}', IdentifierType::Not_XID), ('\u{1f919}', '\u{1f91e}',
- IdentifierType::Not_XID), ('\u{1f91f}', '\u{1f91f}', IdentifierType::Not_XID),
- ('\u{1f920}', '\u{1f927}', IdentifierType::Not_XID), ('\u{1f928}', '\u{1f92f}',
- IdentifierType::Not_XID), ('\u{1f930}', '\u{1f930}', IdentifierType::Not_XID),
- ('\u{1f931}', '\u{1f932}', IdentifierType::Not_XID), ('\u{1f933}', '\u{1f93e}',
- IdentifierType::Not_XID), ('\u{1f93f}', '\u{1f93f}', IdentifierType::Not_XID),
- ('\u{1f940}', '\u{1f94b}', IdentifierType::Not_XID), ('\u{1f94c}', '\u{1f94c}',
- IdentifierType::Not_XID), ('\u{1f94d}', '\u{1f94f}', IdentifierType::Not_XID),
- ('\u{1f950}', '\u{1f95e}', IdentifierType::Not_XID), ('\u{1f95f}', '\u{1f96b}',
- IdentifierType::Not_XID), ('\u{1f96c}', '\u{1f970}', IdentifierType::Not_XID),
- ('\u{1f971}', '\u{1f971}', IdentifierType::Not_XID), ('\u{1f972}', '\u{1f972}',
- IdentifierType::Not_XID), ('\u{1f973}', '\u{1f976}', IdentifierType::Not_XID),
- ('\u{1f977}', '\u{1f978}', IdentifierType::Not_XID), ('\u{1f97a}', '\u{1f97a}',
+ IdentifierType::Not_XID), ('\u{1f7d9}', '\u{1f7d9}', IdentifierType::Not_XID),
+ ('\u{1f7e0}', '\u{1f7eb}', IdentifierType::Not_XID), ('\u{1f7f0}', '\u{1f7f0}',
+ IdentifierType::Not_XID), ('\u{1f800}', '\u{1f80b}', IdentifierType::Not_XID),
+ ('\u{1f810}', '\u{1f847}', IdentifierType::Not_XID), ('\u{1f850}', '\u{1f859}',
+ IdentifierType::Not_XID), ('\u{1f860}', '\u{1f887}', IdentifierType::Not_XID),
+ ('\u{1f890}', '\u{1f8ad}', IdentifierType::Not_XID), ('\u{1f8b0}', '\u{1f8b1}',
+ IdentifierType::Not_XID), ('\u{1f900}', '\u{1f90b}', IdentifierType::Not_XID),
+ ('\u{1f90c}', '\u{1f90c}', IdentifierType::Not_XID), ('\u{1f90d}', '\u{1f90f}',
+ IdentifierType::Not_XID), ('\u{1f910}', '\u{1f918}', IdentifierType::Not_XID),
+ ('\u{1f919}', '\u{1f91e}', IdentifierType::Not_XID), ('\u{1f91f}', '\u{1f91f}',
+ IdentifierType::Not_XID), ('\u{1f920}', '\u{1f927}', IdentifierType::Not_XID),
+ ('\u{1f928}', '\u{1f92f}', IdentifierType::Not_XID), ('\u{1f930}', '\u{1f930}',
+ IdentifierType::Not_XID), ('\u{1f931}', '\u{1f932}', IdentifierType::Not_XID),
+ ('\u{1f933}', '\u{1f93e}', IdentifierType::Not_XID), ('\u{1f93f}', '\u{1f93f}',
+ IdentifierType::Not_XID), ('\u{1f940}', '\u{1f94b}', IdentifierType::Not_XID),
+ ('\u{1f94c}', '\u{1f94c}', IdentifierType::Not_XID), ('\u{1f94d}', '\u{1f94f}',
+ IdentifierType::Not_XID), ('\u{1f950}', '\u{1f95e}', IdentifierType::Not_XID),
+ ('\u{1f95f}', '\u{1f96b}', IdentifierType::Not_XID), ('\u{1f96c}', '\u{1f970}',
+ IdentifierType::Not_XID), ('\u{1f971}', '\u{1f971}', IdentifierType::Not_XID),
+ ('\u{1f972}', '\u{1f972}', IdentifierType::Not_XID), ('\u{1f973}', '\u{1f976}',
+ IdentifierType::Not_XID), ('\u{1f977}', '\u{1f978}', IdentifierType::Not_XID),
+ ('\u{1f979}', '\u{1f979}', IdentifierType::Not_XID), ('\u{1f97a}', '\u{1f97a}',
IdentifierType::Not_XID), ('\u{1f97b}', '\u{1f97b}', IdentifierType::Not_XID),
('\u{1f97c}', '\u{1f97f}', IdentifierType::Not_XID), ('\u{1f980}', '\u{1f984}',
IdentifierType::Not_XID), ('\u{1f985}', '\u{1f991}', IdentifierType::Not_XID),
@@ -1683,23 +1755,37 @@ pub mod identifier {
IdentifierType::Not_XID), ('\u{1f9c0}', '\u{1f9c0}', IdentifierType::Not_XID),
('\u{1f9c1}', '\u{1f9c2}', IdentifierType::Not_XID), ('\u{1f9c3}', '\u{1f9ca}',
IdentifierType::Not_XID), ('\u{1f9cb}', '\u{1f9cb}', IdentifierType::Not_XID),
- ('\u{1f9cd}', '\u{1f9cf}', IdentifierType::Not_XID), ('\u{1f9d0}', '\u{1f9e6}',
- IdentifierType::Not_XID), ('\u{1f9e7}', '\u{1f9ff}', IdentifierType::Not_XID),
- ('\u{1fa00}', '\u{1fa53}', IdentifierType::Not_XID), ('\u{1fa60}', '\u{1fa6d}',
- IdentifierType::Not_XID), ('\u{1fa70}', '\u{1fa73}', IdentifierType::Not_XID),
- ('\u{1fa74}', '\u{1fa74}', IdentifierType::Not_XID), ('\u{1fa78}', '\u{1fa7a}',
+ ('\u{1f9cc}', '\u{1f9cc}', IdentifierType::Not_XID), ('\u{1f9cd}', '\u{1f9cf}',
+ IdentifierType::Not_XID), ('\u{1f9d0}', '\u{1f9e6}', IdentifierType::Not_XID),
+ ('\u{1f9e7}', '\u{1f9ff}', IdentifierType::Not_XID), ('\u{1fa00}', '\u{1fa53}',
+ IdentifierType::Not_XID), ('\u{1fa60}', '\u{1fa6d}', IdentifierType::Not_XID),
+ ('\u{1fa70}', '\u{1fa73}', IdentifierType::Not_XID), ('\u{1fa74}', '\u{1fa74}',
+ IdentifierType::Not_XID), ('\u{1fa75}', '\u{1fa77}', IdentifierType::Not_XID),
+ ('\u{1fa78}', '\u{1fa7a}', IdentifierType::Not_XID), ('\u{1fa7b}', '\u{1fa7c}',
IdentifierType::Not_XID), ('\u{1fa80}', '\u{1fa82}', IdentifierType::Not_XID),
- ('\u{1fa83}', '\u{1fa86}', IdentifierType::Not_XID), ('\u{1fa90}', '\u{1fa95}',
- IdentifierType::Not_XID), ('\u{1fa96}', '\u{1faa8}', IdentifierType::Not_XID),
- ('\u{1fab0}', '\u{1fab6}', IdentifierType::Not_XID), ('\u{1fac0}', '\u{1fac2}',
- IdentifierType::Not_XID), ('\u{1fad0}', '\u{1fad6}', IdentifierType::Not_XID),
- ('\u{1fb00}', '\u{1fb92}', IdentifierType::Not_XID), ('\u{1fb94}', '\u{1fbca}',
- IdentifierType::Not_XID), ('\u{1fbf0}', '\u{1fbf9}', IdentifierType::Not_NFKC),
- ('\u{20000}', '\u{2a6d6}', IdentifierType::Recommended), ('\u{2a6d7}', '\u{2a6dd}',
+ ('\u{1fa83}', '\u{1fa86}', IdentifierType::Not_XID), ('\u{1fa87}', '\u{1fa88}',
+ IdentifierType::Not_XID), ('\u{1fa90}', '\u{1fa95}', IdentifierType::Not_XID),
+ ('\u{1fa96}', '\u{1faa8}', IdentifierType::Not_XID), ('\u{1faa9}', '\u{1faac}',
+ IdentifierType::Not_XID), ('\u{1faad}', '\u{1faaf}', IdentifierType::Not_XID),
+ ('\u{1fab0}', '\u{1fab6}', IdentifierType::Not_XID), ('\u{1fab7}', '\u{1faba}',
+ IdentifierType::Not_XID), ('\u{1fabb}', '\u{1fabd}', IdentifierType::Not_XID),
+ ('\u{1fabf}', '\u{1fabf}', IdentifierType::Not_XID), ('\u{1fac0}', '\u{1fac2}',
+ IdentifierType::Not_XID), ('\u{1fac3}', '\u{1fac5}', IdentifierType::Not_XID),
+ ('\u{1face}', '\u{1facf}', IdentifierType::Not_XID), ('\u{1fad0}', '\u{1fad6}',
+ IdentifierType::Not_XID), ('\u{1fad7}', '\u{1fad9}', IdentifierType::Not_XID),
+ ('\u{1fada}', '\u{1fadb}', IdentifierType::Not_XID), ('\u{1fae0}', '\u{1fae7}',
+ IdentifierType::Not_XID), ('\u{1fae8}', '\u{1fae8}', IdentifierType::Not_XID),
+ ('\u{1faf0}', '\u{1faf6}', IdentifierType::Not_XID), ('\u{1faf7}', '\u{1faf8}',
+ IdentifierType::Not_XID), ('\u{1fb00}', '\u{1fb92}', IdentifierType::Not_XID),
+ ('\u{1fb94}', '\u{1fbca}', IdentifierType::Not_XID), ('\u{1fbf0}', '\u{1fbf9}',
+ IdentifierType::Not_NFKC), ('\u{20000}', '\u{2a6d6}', IdentifierType::Recommended),
+ ('\u{2a6d7}', '\u{2a6dd}', IdentifierType::Recommended), ('\u{2a6de}', '\u{2a6df}',
IdentifierType::Recommended), ('\u{2a700}', '\u{2b734}', IdentifierType::Recommended),
- ('\u{2b740}', '\u{2b81d}', IdentifierType::Recommended), ('\u{2b820}', '\u{2cea1}',
- IdentifierType::Recommended), ('\u{2ceb0}', '\u{2ebe0}', IdentifierType::Recommended),
- ('\u{2f800}', '\u{2fa1d}', IdentifierType::Not_NFKC), ('\u{30000}', '\u{3134a}',
+ ('\u{2b735}', '\u{2b738}', IdentifierType::Recommended), ('\u{2b739}', '\u{2b739}',
+ IdentifierType::Recommended), ('\u{2b740}', '\u{2b81d}', IdentifierType::Recommended),
+ ('\u{2b820}', '\u{2cea1}', IdentifierType::Recommended), ('\u{2ceb0}', '\u{2ebe0}',
+ IdentifierType::Recommended), ('\u{2f800}', '\u{2fa1d}', IdentifierType::Not_NFKC),
+ ('\u{30000}', '\u{3134a}', IdentifierType::Recommended), ('\u{31350}', '\u{323af}',
IdentifierType::Recommended), ('\u{e0001}', '\u{e0001}', IdentifierType::Deprecated),
('\u{e0020}', '\u{e007f}', IdentifierType::Default_Ignorable), ('\u{e0100}', '\u{e01ef}',
IdentifierType::Default_Ignorable)
@@ -4281,10 +4367,10 @@ pub mod potential_mixed_script_confusable {
'\u{101d}', '\u{1036}', '\u{1038}', '\u{1040}', '\u{10e7}', '\u{10ff}', '\u{1200}',
'\u{1206}', '\u{1223}', '\u{1240}', '\u{1260}', '\u{1261}', '\u{1294}', '\u{12ae}',
'\u{12d0}', '\u{1323}', '\u{17b7}', '\u{17b8}', '\u{17b9}', '\u{17ba}', '\u{17c6}',
- '\u{3007}', '\u{304f}', '\u{3078}', '\u{30a4}', '\u{30a8}', '\u{30ab}', '\u{30bf}',
- '\u{30c8}', '\u{30cb}', '\u{30ce}', '\u{30cf}', '\u{30d8}', '\u{30ed}', '\u{4e00}',
- '\u{4e3f}', '\u{4e8c}', '\u{4ebb}', '\u{516b}', '\u{529b}', '\u{535c}', '\u{53e3}',
- '\u{56d7}', '\u{5915}', '\u{5de5}', '\u{a792}', '\u{a793}', '\u{21fe8}'
+ '\u{17cb}', '\u{3007}', '\u{304f}', '\u{3078}', '\u{30a4}', '\u{30a8}', '\u{30ab}',
+ '\u{30bf}', '\u{30c8}', '\u{30cb}', '\u{30ce}', '\u{30cf}', '\u{30d8}', '\u{30ed}',
+ '\u{4e00}', '\u{4e3f}', '\u{4e8c}', '\u{4ebb}', '\u{516b}', '\u{529b}', '\u{535c}',
+ '\u{53e3}', '\u{56d7}', '\u{5915}', '\u{5de5}', '\u{a792}', '\u{a793}', '\u{21fe8}'
];
}
diff --git a/vendor/unicode-segmentation/.cargo-checksum.json b/vendor/unicode-segmentation/.cargo-checksum.json
index f9b266839..acc5d5d0e 100644
--- a/vendor/unicode-segmentation/.cargo-checksum.json
+++ b/vendor/unicode-segmentation/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"56be6b873eab00a7504dc74b43b67b94945707ad5fb008b970ee55d3bb35faca","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"efe7aa058e004e12d683039dbc4440e2fec3088364201a620703acedbeef8cb2","benches/graphemes.rs":"88a9f672ea7a03cc15fae36ce544a6e7234e532359402483978858ccda47db3d","benches/unicode_words.rs":"95c3a178ebe07c8cb2c560546ee911bfc4f1e1db81a6cd2c1cef1c99ed2a421a","benches/word_bounds.rs":"66acf40c0a4b06cdb6dd97c1759aba8dea961bb30cd7f223de3ebff8198520b2","scripts/unicode.py":"772c3aba1ae87f4cee562e824a225a7a230a710d9ca21593bc7845f1fe70e7ef","scripts/unicode_gen_breaktests.py":"ee96982d8959bec75c2382233cfca7e239f12a89a1be5fbf942601a215bb9283","src/grapheme.rs":"b5a32bdbb529e9417e8ada8d92656339b6ffb4e9bed8e6d32a0409c13a03050b","src/lib.rs":"572789173717edd0fe037ae656530663406951636c548e6793711b7d5caad910","src/sentence.rs":"aac52f69207e0b68925ab0c6c18cc36ed3da8e918006d96d724f0f19d4d9d643","src/tables.rs":"117efdcf284aaf2b456a5da6a0948a65a9b0bde498a9aad687bebb551b5b061e","src/test.rs":"f039fa285d510244672a067bdbe98ce7ff940e4f2ff82926466e012ac48ad95a","src/testdata.rs":"2429f421557d0d65c9b167a5fd29c5e61f0d197c9221053adefc2f862311752c","src/word.rs":"6eeea9351c12f0a4404606596a487e0e8aa948ba4b134c7cb827ee41557a39fe"},"package":"7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"} \ No newline at end of file
+{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"55e5a65c91693dd47a27409e54ad6d5ce805ce003b822e4a568bfd070725e956","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"efe7aa058e004e12d683039dbc4440e2fec3088364201a620703acedbeef8cb2","benches/graphemes.rs":"88a9f672ea7a03cc15fae36ce544a6e7234e532359402483978858ccda47db3d","benches/unicode_words.rs":"95c3a178ebe07c8cb2c560546ee911bfc4f1e1db81a6cd2c1cef1c99ed2a421a","benches/word_bounds.rs":"66acf40c0a4b06cdb6dd97c1759aba8dea961bb30cd7f223de3ebff8198520b2","scripts/unicode.py":"d4ba970a0419f33d20f3deb888be12427bfbb40aa25a5719968600d45cf4dadb","scripts/unicode_gen_breaktests.py":"ee96982d8959bec75c2382233cfca7e239f12a89a1be5fbf942601a215bb9283","src/grapheme.rs":"b5a32bdbb529e9417e8ada8d92656339b6ffb4e9bed8e6d32a0409c13a03050b","src/lib.rs":"572789173717edd0fe037ae656530663406951636c548e6793711b7d5caad910","src/sentence.rs":"aac52f69207e0b68925ab0c6c18cc36ed3da8e918006d96d724f0f19d4d9d643","src/tables.rs":"ba9fa1774b6294ed14565ec6be0f2ec316759d54e3af7c002b6848973d7b1f3c","src/test.rs":"f039fa285d510244672a067bdbe98ce7ff940e4f2ff82926466e012ac48ad95a","src/testdata.rs":"533c02ecace1bec3d46b65d101c7619bc83a2fb2c187a2c960346533c09a0e3e","src/word.rs":"6eeea9351c12f0a4404606596a487e0e8aa948ba4b134c7cb827ee41557a39fe"},"package":"0fdbf052a0783de01e944a6ce7a8cb939e295b1e7be835a1112c3b9a7f047a5a"} \ No newline at end of file
diff --git a/vendor/unicode-segmentation/Cargo.toml b/vendor/unicode-segmentation/Cargo.toml
index 697beb38a..0da56c81e 100644
--- a/vendor/unicode-segmentation/Cargo.toml
+++ b/vendor/unicode-segmentation/Cargo.toml
@@ -12,14 +12,32 @@
[package]
edition = "2018"
name = "unicode-segmentation"
-version = "1.9.0"
-authors = ["kwantam <kwantam@gmail.com>", "Manish Goregaokar <manishsmail@gmail.com>"]
-exclude = ["target/*", "Cargo.lock", "scripts/tmp", "benches/texts/*", "*.txt"]
-description = "This crate provides Grapheme Cluster, Word and Sentence boundaries\naccording to Unicode Standard Annex #29 rules.\n"
+version = "1.10.0"
+authors = [
+ "kwantam <kwantam@gmail.com>",
+ "Manish Goregaokar <manishsmail@gmail.com>",
+]
+exclude = [
+ "target/*",
+ "Cargo.lock",
+ "scripts/tmp",
+ "benches/texts/*",
+ "*.txt",
+]
+description = """
+This crate provides Grapheme Cluster, Word and Sentence boundaries
+according to Unicode Standard Annex #29 rules.
+"""
homepage = "https://github.com/unicode-rs/unicode-segmentation"
documentation = "https://unicode-rs.github.io/unicode-segmentation"
readme = "README.md"
-keywords = ["text", "unicode", "grapheme", "word", "boundary"]
+keywords = [
+ "text",
+ "unicode",
+ "grapheme",
+ "word",
+ "boundary",
+]
license = "MIT/Apache-2.0"
repository = "https://github.com/unicode-rs/unicode-segmentation"
@@ -34,6 +52,7 @@ harness = false
[[bench]]
name = "word_bounds"
harness = false
+
[dev-dependencies.criterion]
version = "0.3"
diff --git a/vendor/unicode-segmentation/scripts/unicode.py b/vendor/unicode-segmentation/scripts/unicode.py
index 4976d62e3..7aed85e7c 100755
--- a/vendor/unicode-segmentation/scripts/unicode.py
+++ b/vendor/unicode-segmentation/scripts/unicode.py
@@ -54,7 +54,7 @@ expanded_categories = {
# these are the surrogate codepoints, which are not valid rust characters
surrogate_codepoints = (0xd800, 0xdfff)
-UNICODE_VERSION = (14, 0, 0)
+UNICODE_VERSION = (15, 0, 0)
UNICODE_VERSION_NUMBER = "%s.%s.%s" %UNICODE_VERSION
diff --git a/vendor/unicode-segmentation/src/tables.rs b/vendor/unicode-segmentation/src/tables.rs
index b96a01d56..5a811c922 100644
--- a/vendor/unicode-segmentation/src/tables.rs
+++ b/vendor/unicode-segmentation/src/tables.rs
@@ -14,7 +14,7 @@
/// The version of [Unicode](http://www.unicode.org/)
/// that this version of unicode-segmentation is based on.
-pub const UNICODE_VERSION: (u64, u64, u64) = (14, 0, 0);
+pub const UNICODE_VERSION: (u64, u64, u64) = (15, 0, 0);
pub mod util {
#[inline]
@@ -87,11 +87,12 @@ mod general_category {
('\u{11450}', '\u{11459}'), ('\u{114d0}', '\u{114d9}'), ('\u{11650}', '\u{11659}'),
('\u{116c0}', '\u{116c9}'), ('\u{11730}', '\u{1173b}'), ('\u{118e0}', '\u{118f2}'),
('\u{11950}', '\u{11959}'), ('\u{11c50}', '\u{11c6c}'), ('\u{11d50}', '\u{11d59}'),
- ('\u{11da0}', '\u{11da9}'), ('\u{11fc0}', '\u{11fd4}'), ('\u{12400}', '\u{1246e}'),
- ('\u{16a60}', '\u{16a69}'), ('\u{16ac0}', '\u{16ac9}'), ('\u{16b50}', '\u{16b59}'),
- ('\u{16b5b}', '\u{16b61}'), ('\u{16e80}', '\u{16e96}'), ('\u{1d2e0}', '\u{1d2f3}'),
- ('\u{1d360}', '\u{1d378}'), ('\u{1d7ce}', '\u{1d7ff}'), ('\u{1e140}', '\u{1e149}'),
- ('\u{1e2f0}', '\u{1e2f9}'), ('\u{1e8c7}', '\u{1e8cf}'), ('\u{1e950}', '\u{1e959}'),
+ ('\u{11da0}', '\u{11da9}'), ('\u{11f50}', '\u{11f59}'), ('\u{11fc0}', '\u{11fd4}'),
+ ('\u{12400}', '\u{1246e}'), ('\u{16a60}', '\u{16a69}'), ('\u{16ac0}', '\u{16ac9}'),
+ ('\u{16b50}', '\u{16b59}'), ('\u{16b5b}', '\u{16b61}'), ('\u{16e80}', '\u{16e96}'),
+ ('\u{1d2c0}', '\u{1d2d3}'), ('\u{1d2e0}', '\u{1d2f3}'), ('\u{1d360}', '\u{1d378}'),
+ ('\u{1d7ce}', '\u{1d7ff}'), ('\u{1e140}', '\u{1e149}'), ('\u{1e2f0}', '\u{1e2f9}'),
+ ('\u{1e4f0}', '\u{1e4f9}'), ('\u{1e8c7}', '\u{1e8cf}'), ('\u{1e950}', '\u{1e959}'),
('\u{1ec71}', '\u{1ecab}'), ('\u{1ecad}', '\u{1ecaf}'), ('\u{1ecb1}', '\u{1ecb4}'),
('\u{1ed01}', '\u{1ed2d}'), ('\u{1ed2f}', '\u{1ed3d}'), ('\u{1f100}', '\u{1f10c}'),
('\u{1fbf0}', '\u{1fbf9}')
@@ -144,189 +145,192 @@ mod derived_property {
'\u{b9a}'), ('\u{b9c}', '\u{b9c}'), ('\u{b9e}', '\u{b9f}'), ('\u{ba3}', '\u{ba4}'),
('\u{ba8}', '\u{baa}'), ('\u{bae}', '\u{bb9}'), ('\u{bbe}', '\u{bc2}'), ('\u{bc6}',
'\u{bc8}'), ('\u{bca}', '\u{bcc}'), ('\u{bd0}', '\u{bd0}'), ('\u{bd7}', '\u{bd7}'),
- ('\u{c00}', '\u{c03}'), ('\u{c05}', '\u{c0c}'), ('\u{c0e}', '\u{c10}'), ('\u{c12}',
- '\u{c28}'), ('\u{c2a}', '\u{c39}'), ('\u{c3d}', '\u{c44}'), ('\u{c46}', '\u{c48}'),
- ('\u{c4a}', '\u{c4c}'), ('\u{c55}', '\u{c56}'), ('\u{c58}', '\u{c5a}'), ('\u{c5d}',
- '\u{c5d}'), ('\u{c60}', '\u{c63}'), ('\u{c80}', '\u{c83}'), ('\u{c85}', '\u{c8c}'),
- ('\u{c8e}', '\u{c90}'), ('\u{c92}', '\u{ca8}'), ('\u{caa}', '\u{cb3}'), ('\u{cb5}',
- '\u{cb9}'), ('\u{cbd}', '\u{cc4}'), ('\u{cc6}', '\u{cc8}'), ('\u{cca}', '\u{ccc}'),
- ('\u{cd5}', '\u{cd6}'), ('\u{cdd}', '\u{cde}'), ('\u{ce0}', '\u{ce3}'), ('\u{cf1}',
- '\u{cf2}'), ('\u{d00}', '\u{d0c}'), ('\u{d0e}', '\u{d10}'), ('\u{d12}', '\u{d3a}'),
- ('\u{d3d}', '\u{d44}'), ('\u{d46}', '\u{d48}'), ('\u{d4a}', '\u{d4c}'), ('\u{d4e}',
- '\u{d4e}'), ('\u{d54}', '\u{d57}'), ('\u{d5f}', '\u{d63}'), ('\u{d7a}', '\u{d7f}'),
- ('\u{d81}', '\u{d83}'), ('\u{d85}', '\u{d96}'), ('\u{d9a}', '\u{db1}'), ('\u{db3}',
- '\u{dbb}'), ('\u{dbd}', '\u{dbd}'), ('\u{dc0}', '\u{dc6}'), ('\u{dcf}', '\u{dd4}'),
- ('\u{dd6}', '\u{dd6}'), ('\u{dd8}', '\u{ddf}'), ('\u{df2}', '\u{df3}'), ('\u{e01}',
- '\u{e3a}'), ('\u{e40}', '\u{e46}'), ('\u{e4d}', '\u{e4d}'), ('\u{e81}', '\u{e82}'),
- ('\u{e84}', '\u{e84}'), ('\u{e86}', '\u{e8a}'), ('\u{e8c}', '\u{ea3}'), ('\u{ea5}',
- '\u{ea5}'), ('\u{ea7}', '\u{eb9}'), ('\u{ebb}', '\u{ebd}'), ('\u{ec0}', '\u{ec4}'),
- ('\u{ec6}', '\u{ec6}'), ('\u{ecd}', '\u{ecd}'), ('\u{edc}', '\u{edf}'), ('\u{f00}',
- '\u{f00}'), ('\u{f40}', '\u{f47}'), ('\u{f49}', '\u{f6c}'), ('\u{f71}', '\u{f81}'),
- ('\u{f88}', '\u{f97}'), ('\u{f99}', '\u{fbc}'), ('\u{1000}', '\u{1036}'), ('\u{1038}',
- '\u{1038}'), ('\u{103b}', '\u{103f}'), ('\u{1050}', '\u{108f}'), ('\u{109a}', '\u{109d}'),
- ('\u{10a0}', '\u{10c5}'), ('\u{10c7}', '\u{10c7}'), ('\u{10cd}', '\u{10cd}'), ('\u{10d0}',
- '\u{10fa}'), ('\u{10fc}', '\u{1248}'), ('\u{124a}', '\u{124d}'), ('\u{1250}', '\u{1256}'),
- ('\u{1258}', '\u{1258}'), ('\u{125a}', '\u{125d}'), ('\u{1260}', '\u{1288}'), ('\u{128a}',
- '\u{128d}'), ('\u{1290}', '\u{12b0}'), ('\u{12b2}', '\u{12b5}'), ('\u{12b8}', '\u{12be}'),
- ('\u{12c0}', '\u{12c0}'), ('\u{12c2}', '\u{12c5}'), ('\u{12c8}', '\u{12d6}'), ('\u{12d8}',
- '\u{1310}'), ('\u{1312}', '\u{1315}'), ('\u{1318}', '\u{135a}'), ('\u{1380}', '\u{138f}'),
- ('\u{13a0}', '\u{13f5}'), ('\u{13f8}', '\u{13fd}'), ('\u{1401}', '\u{166c}'), ('\u{166f}',
- '\u{167f}'), ('\u{1681}', '\u{169a}'), ('\u{16a0}', '\u{16ea}'), ('\u{16ee}', '\u{16f8}'),
- ('\u{1700}', '\u{1713}'), ('\u{171f}', '\u{1733}'), ('\u{1740}', '\u{1753}'), ('\u{1760}',
- '\u{176c}'), ('\u{176e}', '\u{1770}'), ('\u{1772}', '\u{1773}'), ('\u{1780}', '\u{17b3}'),
- ('\u{17b6}', '\u{17c8}'), ('\u{17d7}', '\u{17d7}'), ('\u{17dc}', '\u{17dc}'), ('\u{1820}',
- '\u{1878}'), ('\u{1880}', '\u{18aa}'), ('\u{18b0}', '\u{18f5}'), ('\u{1900}', '\u{191e}'),
- ('\u{1920}', '\u{192b}'), ('\u{1930}', '\u{1938}'), ('\u{1950}', '\u{196d}'), ('\u{1970}',
- '\u{1974}'), ('\u{1980}', '\u{19ab}'), ('\u{19b0}', '\u{19c9}'), ('\u{1a00}', '\u{1a1b}'),
- ('\u{1a20}', '\u{1a5e}'), ('\u{1a61}', '\u{1a74}'), ('\u{1aa7}', '\u{1aa7}'), ('\u{1abf}',
- '\u{1ac0}'), ('\u{1acc}', '\u{1ace}'), ('\u{1b00}', '\u{1b33}'), ('\u{1b35}', '\u{1b43}'),
- ('\u{1b45}', '\u{1b4c}'), ('\u{1b80}', '\u{1ba9}'), ('\u{1bac}', '\u{1baf}'), ('\u{1bba}',
- '\u{1be5}'), ('\u{1be7}', '\u{1bf1}'), ('\u{1c00}', '\u{1c36}'), ('\u{1c4d}', '\u{1c4f}'),
- ('\u{1c5a}', '\u{1c7d}'), ('\u{1c80}', '\u{1c88}'), ('\u{1c90}', '\u{1cba}'), ('\u{1cbd}',
- '\u{1cbf}'), ('\u{1ce9}', '\u{1cec}'), ('\u{1cee}', '\u{1cf3}'), ('\u{1cf5}', '\u{1cf6}'),
- ('\u{1cfa}', '\u{1cfa}'), ('\u{1d00}', '\u{1dbf}'), ('\u{1de7}', '\u{1df4}'), ('\u{1e00}',
- '\u{1f15}'), ('\u{1f18}', '\u{1f1d}'), ('\u{1f20}', '\u{1f45}'), ('\u{1f48}', '\u{1f4d}'),
- ('\u{1f50}', '\u{1f57}'), ('\u{1f59}', '\u{1f59}'), ('\u{1f5b}', '\u{1f5b}'), ('\u{1f5d}',
- '\u{1f5d}'), ('\u{1f5f}', '\u{1f7d}'), ('\u{1f80}', '\u{1fb4}'), ('\u{1fb6}', '\u{1fbc}'),
- ('\u{1fbe}', '\u{1fbe}'), ('\u{1fc2}', '\u{1fc4}'), ('\u{1fc6}', '\u{1fcc}'), ('\u{1fd0}',
- '\u{1fd3}'), ('\u{1fd6}', '\u{1fdb}'), ('\u{1fe0}', '\u{1fec}'), ('\u{1ff2}', '\u{1ff4}'),
- ('\u{1ff6}', '\u{1ffc}'), ('\u{2071}', '\u{2071}'), ('\u{207f}', '\u{207f}'), ('\u{2090}',
- '\u{209c}'), ('\u{2102}', '\u{2102}'), ('\u{2107}', '\u{2107}'), ('\u{210a}', '\u{2113}'),
- ('\u{2115}', '\u{2115}'), ('\u{2119}', '\u{211d}'), ('\u{2124}', '\u{2124}'), ('\u{2126}',
- '\u{2126}'), ('\u{2128}', '\u{2128}'), ('\u{212a}', '\u{212d}'), ('\u{212f}', '\u{2139}'),
- ('\u{213c}', '\u{213f}'), ('\u{2145}', '\u{2149}'), ('\u{214e}', '\u{214e}'), ('\u{2160}',
- '\u{2188}'), ('\u{24b6}', '\u{24e9}'), ('\u{2c00}', '\u{2ce4}'), ('\u{2ceb}', '\u{2cee}'),
- ('\u{2cf2}', '\u{2cf3}'), ('\u{2d00}', '\u{2d25}'), ('\u{2d27}', '\u{2d27}'), ('\u{2d2d}',
- '\u{2d2d}'), ('\u{2d30}', '\u{2d67}'), ('\u{2d6f}', '\u{2d6f}'), ('\u{2d80}', '\u{2d96}'),
- ('\u{2da0}', '\u{2da6}'), ('\u{2da8}', '\u{2dae}'), ('\u{2db0}', '\u{2db6}'), ('\u{2db8}',
- '\u{2dbe}'), ('\u{2dc0}', '\u{2dc6}'), ('\u{2dc8}', '\u{2dce}'), ('\u{2dd0}', '\u{2dd6}'),
- ('\u{2dd8}', '\u{2dde}'), ('\u{2de0}', '\u{2dff}'), ('\u{2e2f}', '\u{2e2f}'), ('\u{3005}',
- '\u{3007}'), ('\u{3021}', '\u{3029}'), ('\u{3031}', '\u{3035}'), ('\u{3038}', '\u{303c}'),
- ('\u{3041}', '\u{3096}'), ('\u{309d}', '\u{309f}'), ('\u{30a1}', '\u{30fa}'), ('\u{30fc}',
- '\u{30ff}'), ('\u{3105}', '\u{312f}'), ('\u{3131}', '\u{318e}'), ('\u{31a0}', '\u{31bf}'),
- ('\u{31f0}', '\u{31ff}'), ('\u{3400}', '\u{4dbf}'), ('\u{4e00}', '\u{a48c}'), ('\u{a4d0}',
- '\u{a4fd}'), ('\u{a500}', '\u{a60c}'), ('\u{a610}', '\u{a61f}'), ('\u{a62a}', '\u{a62b}'),
- ('\u{a640}', '\u{a66e}'), ('\u{a674}', '\u{a67b}'), ('\u{a67f}', '\u{a6ef}'), ('\u{a717}',
- '\u{a71f}'), ('\u{a722}', '\u{a788}'), ('\u{a78b}', '\u{a7ca}'), ('\u{a7d0}', '\u{a7d1}'),
- ('\u{a7d3}', '\u{a7d3}'), ('\u{a7d5}', '\u{a7d9}'), ('\u{a7f2}', '\u{a805}'), ('\u{a807}',
- '\u{a827}'), ('\u{a840}', '\u{a873}'), ('\u{a880}', '\u{a8c3}'), ('\u{a8c5}', '\u{a8c5}'),
- ('\u{a8f2}', '\u{a8f7}'), ('\u{a8fb}', '\u{a8fb}'), ('\u{a8fd}', '\u{a8ff}'), ('\u{a90a}',
- '\u{a92a}'), ('\u{a930}', '\u{a952}'), ('\u{a960}', '\u{a97c}'), ('\u{a980}', '\u{a9b2}'),
- ('\u{a9b4}', '\u{a9bf}'), ('\u{a9cf}', '\u{a9cf}'), ('\u{a9e0}', '\u{a9ef}'), ('\u{a9fa}',
- '\u{a9fe}'), ('\u{aa00}', '\u{aa36}'), ('\u{aa40}', '\u{aa4d}'), ('\u{aa60}', '\u{aa76}'),
- ('\u{aa7a}', '\u{aabe}'), ('\u{aac0}', '\u{aac0}'), ('\u{aac2}', '\u{aac2}'), ('\u{aadb}',
- '\u{aadd}'), ('\u{aae0}', '\u{aaef}'), ('\u{aaf2}', '\u{aaf5}'), ('\u{ab01}', '\u{ab06}'),
- ('\u{ab09}', '\u{ab0e}'), ('\u{ab11}', '\u{ab16}'), ('\u{ab20}', '\u{ab26}'), ('\u{ab28}',
- '\u{ab2e}'), ('\u{ab30}', '\u{ab5a}'), ('\u{ab5c}', '\u{ab69}'), ('\u{ab70}', '\u{abea}'),
- ('\u{ac00}', '\u{d7a3}'), ('\u{d7b0}', '\u{d7c6}'), ('\u{d7cb}', '\u{d7fb}'), ('\u{f900}',
- '\u{fa6d}'), ('\u{fa70}', '\u{fad9}'), ('\u{fb00}', '\u{fb06}'), ('\u{fb13}', '\u{fb17}'),
- ('\u{fb1d}', '\u{fb28}'), ('\u{fb2a}', '\u{fb36}'), ('\u{fb38}', '\u{fb3c}'), ('\u{fb3e}',
- '\u{fb3e}'), ('\u{fb40}', '\u{fb41}'), ('\u{fb43}', '\u{fb44}'), ('\u{fb46}', '\u{fbb1}'),
- ('\u{fbd3}', '\u{fd3d}'), ('\u{fd50}', '\u{fd8f}'), ('\u{fd92}', '\u{fdc7}'), ('\u{fdf0}',
- '\u{fdfb}'), ('\u{fe70}', '\u{fe74}'), ('\u{fe76}', '\u{fefc}'), ('\u{ff21}', '\u{ff3a}'),
- ('\u{ff41}', '\u{ff5a}'), ('\u{ff66}', '\u{ffbe}'), ('\u{ffc2}', '\u{ffc7}'), ('\u{ffca}',
- '\u{ffcf}'), ('\u{ffd2}', '\u{ffd7}'), ('\u{ffda}', '\u{ffdc}'), ('\u{10000}', '\u{1000b}'),
- ('\u{1000d}', '\u{10026}'), ('\u{10028}', '\u{1003a}'), ('\u{1003c}', '\u{1003d}'),
- ('\u{1003f}', '\u{1004d}'), ('\u{10050}', '\u{1005d}'), ('\u{10080}', '\u{100fa}'),
- ('\u{10140}', '\u{10174}'), ('\u{10280}', '\u{1029c}'), ('\u{102a0}', '\u{102d0}'),
- ('\u{10300}', '\u{1031f}'), ('\u{1032d}', '\u{1034a}'), ('\u{10350}', '\u{1037a}'),
- ('\u{10380}', '\u{1039d}'), ('\u{103a0}', '\u{103c3}'), ('\u{103c8}', '\u{103cf}'),
- ('\u{103d1}', '\u{103d5}'), ('\u{10400}', '\u{1049d}'), ('\u{104b0}', '\u{104d3}'),
- ('\u{104d8}', '\u{104fb}'), ('\u{10500}', '\u{10527}'), ('\u{10530}', '\u{10563}'),
- ('\u{10570}', '\u{1057a}'), ('\u{1057c}', '\u{1058a}'), ('\u{1058c}', '\u{10592}'),
- ('\u{10594}', '\u{10595}'), ('\u{10597}', '\u{105a1}'), ('\u{105a3}', '\u{105b1}'),
- ('\u{105b3}', '\u{105b9}'), ('\u{105bb}', '\u{105bc}'), ('\u{10600}', '\u{10736}'),
- ('\u{10740}', '\u{10755}'), ('\u{10760}', '\u{10767}'), ('\u{10780}', '\u{10785}'),
- ('\u{10787}', '\u{107b0}'), ('\u{107b2}', '\u{107ba}'), ('\u{10800}', '\u{10805}'),
- ('\u{10808}', '\u{10808}'), ('\u{1080a}', '\u{10835}'), ('\u{10837}', '\u{10838}'),
- ('\u{1083c}', '\u{1083c}'), ('\u{1083f}', '\u{10855}'), ('\u{10860}', '\u{10876}'),
- ('\u{10880}', '\u{1089e}'), ('\u{108e0}', '\u{108f2}'), ('\u{108f4}', '\u{108f5}'),
- ('\u{10900}', '\u{10915}'), ('\u{10920}', '\u{10939}'), ('\u{10980}', '\u{109b7}'),
- ('\u{109be}', '\u{109bf}'), ('\u{10a00}', '\u{10a03}'), ('\u{10a05}', '\u{10a06}'),
- ('\u{10a0c}', '\u{10a13}'), ('\u{10a15}', '\u{10a17}'), ('\u{10a19}', '\u{10a35}'),
- ('\u{10a60}', '\u{10a7c}'), ('\u{10a80}', '\u{10a9c}'), ('\u{10ac0}', '\u{10ac7}'),
- ('\u{10ac9}', '\u{10ae4}'), ('\u{10b00}', '\u{10b35}'), ('\u{10b40}', '\u{10b55}'),
- ('\u{10b60}', '\u{10b72}'), ('\u{10b80}', '\u{10b91}'), ('\u{10c00}', '\u{10c48}'),
- ('\u{10c80}', '\u{10cb2}'), ('\u{10cc0}', '\u{10cf2}'), ('\u{10d00}', '\u{10d27}'),
- ('\u{10e80}', '\u{10ea9}'), ('\u{10eab}', '\u{10eac}'), ('\u{10eb0}', '\u{10eb1}'),
- ('\u{10f00}', '\u{10f1c}'), ('\u{10f27}', '\u{10f27}'), ('\u{10f30}', '\u{10f45}'),
- ('\u{10f70}', '\u{10f81}'), ('\u{10fb0}', '\u{10fc4}'), ('\u{10fe0}', '\u{10ff6}'),
- ('\u{11000}', '\u{11045}'), ('\u{11071}', '\u{11075}'), ('\u{11082}', '\u{110b8}'),
- ('\u{110c2}', '\u{110c2}'), ('\u{110d0}', '\u{110e8}'), ('\u{11100}', '\u{11132}'),
- ('\u{11144}', '\u{11147}'), ('\u{11150}', '\u{11172}'), ('\u{11176}', '\u{11176}'),
- ('\u{11180}', '\u{111bf}'), ('\u{111c1}', '\u{111c4}'), ('\u{111ce}', '\u{111cf}'),
- ('\u{111da}', '\u{111da}'), ('\u{111dc}', '\u{111dc}'), ('\u{11200}', '\u{11211}'),
- ('\u{11213}', '\u{11234}'), ('\u{11237}', '\u{11237}'), ('\u{1123e}', '\u{1123e}'),
- ('\u{11280}', '\u{11286}'), ('\u{11288}', '\u{11288}'), ('\u{1128a}', '\u{1128d}'),
- ('\u{1128f}', '\u{1129d}'), ('\u{1129f}', '\u{112a8}'), ('\u{112b0}', '\u{112e8}'),
- ('\u{11300}', '\u{11303}'), ('\u{11305}', '\u{1130c}'), ('\u{1130f}', '\u{11310}'),
- ('\u{11313}', '\u{11328}'), ('\u{1132a}', '\u{11330}'), ('\u{11332}', '\u{11333}'),
- ('\u{11335}', '\u{11339}'), ('\u{1133d}', '\u{11344}'), ('\u{11347}', '\u{11348}'),
- ('\u{1134b}', '\u{1134c}'), ('\u{11350}', '\u{11350}'), ('\u{11357}', '\u{11357}'),
- ('\u{1135d}', '\u{11363}'), ('\u{11400}', '\u{11441}'), ('\u{11443}', '\u{11445}'),
- ('\u{11447}', '\u{1144a}'), ('\u{1145f}', '\u{11461}'), ('\u{11480}', '\u{114c1}'),
- ('\u{114c4}', '\u{114c5}'), ('\u{114c7}', '\u{114c7}'), ('\u{11580}', '\u{115b5}'),
- ('\u{115b8}', '\u{115be}'), ('\u{115d8}', '\u{115dd}'), ('\u{11600}', '\u{1163e}'),
- ('\u{11640}', '\u{11640}'), ('\u{11644}', '\u{11644}'), ('\u{11680}', '\u{116b5}'),
- ('\u{116b8}', '\u{116b8}'), ('\u{11700}', '\u{1171a}'), ('\u{1171d}', '\u{1172a}'),
- ('\u{11740}', '\u{11746}'), ('\u{11800}', '\u{11838}'), ('\u{118a0}', '\u{118df}'),
- ('\u{118ff}', '\u{11906}'), ('\u{11909}', '\u{11909}'), ('\u{1190c}', '\u{11913}'),
- ('\u{11915}', '\u{11916}'), ('\u{11918}', '\u{11935}'), ('\u{11937}', '\u{11938}'),
- ('\u{1193b}', '\u{1193c}'), ('\u{1193f}', '\u{11942}'), ('\u{119a0}', '\u{119a7}'),
- ('\u{119aa}', '\u{119d7}'), ('\u{119da}', '\u{119df}'), ('\u{119e1}', '\u{119e1}'),
- ('\u{119e3}', '\u{119e4}'), ('\u{11a00}', '\u{11a32}'), ('\u{11a35}', '\u{11a3e}'),
- ('\u{11a50}', '\u{11a97}'), ('\u{11a9d}', '\u{11a9d}'), ('\u{11ab0}', '\u{11af8}'),
- ('\u{11c00}', '\u{11c08}'), ('\u{11c0a}', '\u{11c36}'), ('\u{11c38}', '\u{11c3e}'),
- ('\u{11c40}', '\u{11c40}'), ('\u{11c72}', '\u{11c8f}'), ('\u{11c92}', '\u{11ca7}'),
- ('\u{11ca9}', '\u{11cb6}'), ('\u{11d00}', '\u{11d06}'), ('\u{11d08}', '\u{11d09}'),
- ('\u{11d0b}', '\u{11d36}'), ('\u{11d3a}', '\u{11d3a}'), ('\u{11d3c}', '\u{11d3d}'),
- ('\u{11d3f}', '\u{11d41}'), ('\u{11d43}', '\u{11d43}'), ('\u{11d46}', '\u{11d47}'),
- ('\u{11d60}', '\u{11d65}'), ('\u{11d67}', '\u{11d68}'), ('\u{11d6a}', '\u{11d8e}'),
- ('\u{11d90}', '\u{11d91}'), ('\u{11d93}', '\u{11d96}'), ('\u{11d98}', '\u{11d98}'),
- ('\u{11ee0}', '\u{11ef6}'), ('\u{11fb0}', '\u{11fb0}'), ('\u{12000}', '\u{12399}'),
- ('\u{12400}', '\u{1246e}'), ('\u{12480}', '\u{12543}'), ('\u{12f90}', '\u{12ff0}'),
- ('\u{13000}', '\u{1342e}'), ('\u{14400}', '\u{14646}'), ('\u{16800}', '\u{16a38}'),
- ('\u{16a40}', '\u{16a5e}'), ('\u{16a70}', '\u{16abe}'), ('\u{16ad0}', '\u{16aed}'),
- ('\u{16b00}', '\u{16b2f}'), ('\u{16b40}', '\u{16b43}'), ('\u{16b63}', '\u{16b77}'),
- ('\u{16b7d}', '\u{16b8f}'), ('\u{16e40}', '\u{16e7f}'), ('\u{16f00}', '\u{16f4a}'),
- ('\u{16f4f}', '\u{16f87}'), ('\u{16f8f}', '\u{16f9f}'), ('\u{16fe0}', '\u{16fe1}'),
- ('\u{16fe3}', '\u{16fe3}'), ('\u{16ff0}', '\u{16ff1}'), ('\u{17000}', '\u{187f7}'),
- ('\u{18800}', '\u{18cd5}'), ('\u{18d00}', '\u{18d08}'), ('\u{1aff0}', '\u{1aff3}'),
- ('\u{1aff5}', '\u{1affb}'), ('\u{1affd}', '\u{1affe}'), ('\u{1b000}', '\u{1b122}'),
- ('\u{1b150}', '\u{1b152}'), ('\u{1b164}', '\u{1b167}'), ('\u{1b170}', '\u{1b2fb}'),
- ('\u{1bc00}', '\u{1bc6a}'), ('\u{1bc70}', '\u{1bc7c}'), ('\u{1bc80}', '\u{1bc88}'),
- ('\u{1bc90}', '\u{1bc99}'), ('\u{1bc9e}', '\u{1bc9e}'), ('\u{1d400}', '\u{1d454}'),
- ('\u{1d456}', '\u{1d49c}'), ('\u{1d49e}', '\u{1d49f}'), ('\u{1d4a2}', '\u{1d4a2}'),
- ('\u{1d4a5}', '\u{1d4a6}'), ('\u{1d4a9}', '\u{1d4ac}'), ('\u{1d4ae}', '\u{1d4b9}'),
- ('\u{1d4bb}', '\u{1d4bb}'), ('\u{1d4bd}', '\u{1d4c3}'), ('\u{1d4c5}', '\u{1d505}'),
- ('\u{1d507}', '\u{1d50a}'), ('\u{1d50d}', '\u{1d514}'), ('\u{1d516}', '\u{1d51c}'),
- ('\u{1d51e}', '\u{1d539}'), ('\u{1d53b}', '\u{1d53e}'), ('\u{1d540}', '\u{1d544}'),
- ('\u{1d546}', '\u{1d546}'), ('\u{1d54a}', '\u{1d550}'), ('\u{1d552}', '\u{1d6a5}'),
- ('\u{1d6a8}', '\u{1d6c0}'), ('\u{1d6c2}', '\u{1d6da}'), ('\u{1d6dc}', '\u{1d6fa}'),
- ('\u{1d6fc}', '\u{1d714}'), ('\u{1d716}', '\u{1d734}'), ('\u{1d736}', '\u{1d74e}'),
- ('\u{1d750}', '\u{1d76e}'), ('\u{1d770}', '\u{1d788}'), ('\u{1d78a}', '\u{1d7a8}'),
- ('\u{1d7aa}', '\u{1d7c2}'), ('\u{1d7c4}', '\u{1d7cb}'), ('\u{1df00}', '\u{1df1e}'),
- ('\u{1e000}', '\u{1e006}'), ('\u{1e008}', '\u{1e018}'), ('\u{1e01b}', '\u{1e021}'),
- ('\u{1e023}', '\u{1e024}'), ('\u{1e026}', '\u{1e02a}'), ('\u{1e100}', '\u{1e12c}'),
- ('\u{1e137}', '\u{1e13d}'), ('\u{1e14e}', '\u{1e14e}'), ('\u{1e290}', '\u{1e2ad}'),
- ('\u{1e2c0}', '\u{1e2eb}'), ('\u{1e7e0}', '\u{1e7e6}'), ('\u{1e7e8}', '\u{1e7eb}'),
- ('\u{1e7ed}', '\u{1e7ee}'), ('\u{1e7f0}', '\u{1e7fe}'), ('\u{1e800}', '\u{1e8c4}'),
- ('\u{1e900}', '\u{1e943}'), ('\u{1e947}', '\u{1e947}'), ('\u{1e94b}', '\u{1e94b}'),
- ('\u{1ee00}', '\u{1ee03}'), ('\u{1ee05}', '\u{1ee1f}'), ('\u{1ee21}', '\u{1ee22}'),
- ('\u{1ee24}', '\u{1ee24}'), ('\u{1ee27}', '\u{1ee27}'), ('\u{1ee29}', '\u{1ee32}'),
- ('\u{1ee34}', '\u{1ee37}'), ('\u{1ee39}', '\u{1ee39}'), ('\u{1ee3b}', '\u{1ee3b}'),
- ('\u{1ee42}', '\u{1ee42}'), ('\u{1ee47}', '\u{1ee47}'), ('\u{1ee49}', '\u{1ee49}'),
- ('\u{1ee4b}', '\u{1ee4b}'), ('\u{1ee4d}', '\u{1ee4f}'), ('\u{1ee51}', '\u{1ee52}'),
- ('\u{1ee54}', '\u{1ee54}'), ('\u{1ee57}', '\u{1ee57}'), ('\u{1ee59}', '\u{1ee59}'),
- ('\u{1ee5b}', '\u{1ee5b}'), ('\u{1ee5d}', '\u{1ee5d}'), ('\u{1ee5f}', '\u{1ee5f}'),
- ('\u{1ee61}', '\u{1ee62}'), ('\u{1ee64}', '\u{1ee64}'), ('\u{1ee67}', '\u{1ee6a}'),
- ('\u{1ee6c}', '\u{1ee72}'), ('\u{1ee74}', '\u{1ee77}'), ('\u{1ee79}', '\u{1ee7c}'),
- ('\u{1ee7e}', '\u{1ee7e}'), ('\u{1ee80}', '\u{1ee89}'), ('\u{1ee8b}', '\u{1ee9b}'),
- ('\u{1eea1}', '\u{1eea3}'), ('\u{1eea5}', '\u{1eea9}'), ('\u{1eeab}', '\u{1eebb}'),
- ('\u{1f130}', '\u{1f149}'), ('\u{1f150}', '\u{1f169}'), ('\u{1f170}', '\u{1f189}'),
- ('\u{20000}', '\u{2a6df}'), ('\u{2a700}', '\u{2b738}'), ('\u{2b740}', '\u{2b81d}'),
- ('\u{2b820}', '\u{2cea1}'), ('\u{2ceb0}', '\u{2ebe0}'), ('\u{2f800}', '\u{2fa1d}'),
- ('\u{30000}', '\u{3134a}')
+ ('\u{c00}', '\u{c0c}'), ('\u{c0e}', '\u{c10}'), ('\u{c12}', '\u{c28}'), ('\u{c2a}',
+ '\u{c39}'), ('\u{c3d}', '\u{c44}'), ('\u{c46}', '\u{c48}'), ('\u{c4a}', '\u{c4c}'),
+ ('\u{c55}', '\u{c56}'), ('\u{c58}', '\u{c5a}'), ('\u{c5d}', '\u{c5d}'), ('\u{c60}',
+ '\u{c63}'), ('\u{c80}', '\u{c83}'), ('\u{c85}', '\u{c8c}'), ('\u{c8e}', '\u{c90}'),
+ ('\u{c92}', '\u{ca8}'), ('\u{caa}', '\u{cb3}'), ('\u{cb5}', '\u{cb9}'), ('\u{cbd}',
+ '\u{cc4}'), ('\u{cc6}', '\u{cc8}'), ('\u{cca}', '\u{ccc}'), ('\u{cd5}', '\u{cd6}'),
+ ('\u{cdd}', '\u{cde}'), ('\u{ce0}', '\u{ce3}'), ('\u{cf1}', '\u{cf3}'), ('\u{d00}',
+ '\u{d0c}'), ('\u{d0e}', '\u{d10}'), ('\u{d12}', '\u{d3a}'), ('\u{d3d}', '\u{d44}'),
+ ('\u{d46}', '\u{d48}'), ('\u{d4a}', '\u{d4c}'), ('\u{d4e}', '\u{d4e}'), ('\u{d54}',
+ '\u{d57}'), ('\u{d5f}', '\u{d63}'), ('\u{d7a}', '\u{d7f}'), ('\u{d81}', '\u{d83}'),
+ ('\u{d85}', '\u{d96}'), ('\u{d9a}', '\u{db1}'), ('\u{db3}', '\u{dbb}'), ('\u{dbd}',
+ '\u{dbd}'), ('\u{dc0}', '\u{dc6}'), ('\u{dcf}', '\u{dd4}'), ('\u{dd6}', '\u{dd6}'),
+ ('\u{dd8}', '\u{ddf}'), ('\u{df2}', '\u{df3}'), ('\u{e01}', '\u{e3a}'), ('\u{e40}',
+ '\u{e46}'), ('\u{e4d}', '\u{e4d}'), ('\u{e81}', '\u{e82}'), ('\u{e84}', '\u{e84}'),
+ ('\u{e86}', '\u{e8a}'), ('\u{e8c}', '\u{ea3}'), ('\u{ea5}', '\u{ea5}'), ('\u{ea7}',
+ '\u{eb9}'), ('\u{ebb}', '\u{ebd}'), ('\u{ec0}', '\u{ec4}'), ('\u{ec6}', '\u{ec6}'),
+ ('\u{ecd}', '\u{ecd}'), ('\u{edc}', '\u{edf}'), ('\u{f00}', '\u{f00}'), ('\u{f40}',
+ '\u{f47}'), ('\u{f49}', '\u{f6c}'), ('\u{f71}', '\u{f83}'), ('\u{f88}', '\u{f97}'),
+ ('\u{f99}', '\u{fbc}'), ('\u{1000}', '\u{1036}'), ('\u{1038}', '\u{1038}'), ('\u{103b}',
+ '\u{103f}'), ('\u{1050}', '\u{108f}'), ('\u{109a}', '\u{109d}'), ('\u{10a0}', '\u{10c5}'),
+ ('\u{10c7}', '\u{10c7}'), ('\u{10cd}', '\u{10cd}'), ('\u{10d0}', '\u{10fa}'), ('\u{10fc}',
+ '\u{1248}'), ('\u{124a}', '\u{124d}'), ('\u{1250}', '\u{1256}'), ('\u{1258}', '\u{1258}'),
+ ('\u{125a}', '\u{125d}'), ('\u{1260}', '\u{1288}'), ('\u{128a}', '\u{128d}'), ('\u{1290}',
+ '\u{12b0}'), ('\u{12b2}', '\u{12b5}'), ('\u{12b8}', '\u{12be}'), ('\u{12c0}', '\u{12c0}'),
+ ('\u{12c2}', '\u{12c5}'), ('\u{12c8}', '\u{12d6}'), ('\u{12d8}', '\u{1310}'), ('\u{1312}',
+ '\u{1315}'), ('\u{1318}', '\u{135a}'), ('\u{1380}', '\u{138f}'), ('\u{13a0}', '\u{13f5}'),
+ ('\u{13f8}', '\u{13fd}'), ('\u{1401}', '\u{166c}'), ('\u{166f}', '\u{167f}'), ('\u{1681}',
+ '\u{169a}'), ('\u{16a0}', '\u{16ea}'), ('\u{16ee}', '\u{16f8}'), ('\u{1700}', '\u{1713}'),
+ ('\u{171f}', '\u{1733}'), ('\u{1740}', '\u{1753}'), ('\u{1760}', '\u{176c}'), ('\u{176e}',
+ '\u{1770}'), ('\u{1772}', '\u{1773}'), ('\u{1780}', '\u{17b3}'), ('\u{17b6}', '\u{17c8}'),
+ ('\u{17d7}', '\u{17d7}'), ('\u{17dc}', '\u{17dc}'), ('\u{1820}', '\u{1878}'), ('\u{1880}',
+ '\u{18aa}'), ('\u{18b0}', '\u{18f5}'), ('\u{1900}', '\u{191e}'), ('\u{1920}', '\u{192b}'),
+ ('\u{1930}', '\u{1938}'), ('\u{1950}', '\u{196d}'), ('\u{1970}', '\u{1974}'), ('\u{1980}',
+ '\u{19ab}'), ('\u{19b0}', '\u{19c9}'), ('\u{1a00}', '\u{1a1b}'), ('\u{1a20}', '\u{1a5e}'),
+ ('\u{1a61}', '\u{1a74}'), ('\u{1aa7}', '\u{1aa7}'), ('\u{1abf}', '\u{1ac0}'), ('\u{1acc}',
+ '\u{1ace}'), ('\u{1b00}', '\u{1b33}'), ('\u{1b35}', '\u{1b43}'), ('\u{1b45}', '\u{1b4c}'),
+ ('\u{1b80}', '\u{1ba9}'), ('\u{1bac}', '\u{1baf}'), ('\u{1bba}', '\u{1be5}'), ('\u{1be7}',
+ '\u{1bf1}'), ('\u{1c00}', '\u{1c36}'), ('\u{1c4d}', '\u{1c4f}'), ('\u{1c5a}', '\u{1c7d}'),
+ ('\u{1c80}', '\u{1c88}'), ('\u{1c90}', '\u{1cba}'), ('\u{1cbd}', '\u{1cbf}'), ('\u{1ce9}',
+ '\u{1cec}'), ('\u{1cee}', '\u{1cf3}'), ('\u{1cf5}', '\u{1cf6}'), ('\u{1cfa}', '\u{1cfa}'),
+ ('\u{1d00}', '\u{1dbf}'), ('\u{1de7}', '\u{1df4}'), ('\u{1e00}', '\u{1f15}'), ('\u{1f18}',
+ '\u{1f1d}'), ('\u{1f20}', '\u{1f45}'), ('\u{1f48}', '\u{1f4d}'), ('\u{1f50}', '\u{1f57}'),
+ ('\u{1f59}', '\u{1f59}'), ('\u{1f5b}', '\u{1f5b}'), ('\u{1f5d}', '\u{1f5d}'), ('\u{1f5f}',
+ '\u{1f7d}'), ('\u{1f80}', '\u{1fb4}'), ('\u{1fb6}', '\u{1fbc}'), ('\u{1fbe}', '\u{1fbe}'),
+ ('\u{1fc2}', '\u{1fc4}'), ('\u{1fc6}', '\u{1fcc}'), ('\u{1fd0}', '\u{1fd3}'), ('\u{1fd6}',
+ '\u{1fdb}'), ('\u{1fe0}', '\u{1fec}'), ('\u{1ff2}', '\u{1ff4}'), ('\u{1ff6}', '\u{1ffc}'),
+ ('\u{2071}', '\u{2071}'), ('\u{207f}', '\u{207f}'), ('\u{2090}', '\u{209c}'), ('\u{2102}',
+ '\u{2102}'), ('\u{2107}', '\u{2107}'), ('\u{210a}', '\u{2113}'), ('\u{2115}', '\u{2115}'),
+ ('\u{2119}', '\u{211d}'), ('\u{2124}', '\u{2124}'), ('\u{2126}', '\u{2126}'), ('\u{2128}',
+ '\u{2128}'), ('\u{212a}', '\u{212d}'), ('\u{212f}', '\u{2139}'), ('\u{213c}', '\u{213f}'),
+ ('\u{2145}', '\u{2149}'), ('\u{214e}', '\u{214e}'), ('\u{2160}', '\u{2188}'), ('\u{24b6}',
+ '\u{24e9}'), ('\u{2c00}', '\u{2ce4}'), ('\u{2ceb}', '\u{2cee}'), ('\u{2cf2}', '\u{2cf3}'),
+ ('\u{2d00}', '\u{2d25}'), ('\u{2d27}', '\u{2d27}'), ('\u{2d2d}', '\u{2d2d}'), ('\u{2d30}',
+ '\u{2d67}'), ('\u{2d6f}', '\u{2d6f}'), ('\u{2d80}', '\u{2d96}'), ('\u{2da0}', '\u{2da6}'),
+ ('\u{2da8}', '\u{2dae}'), ('\u{2db0}', '\u{2db6}'), ('\u{2db8}', '\u{2dbe}'), ('\u{2dc0}',
+ '\u{2dc6}'), ('\u{2dc8}', '\u{2dce}'), ('\u{2dd0}', '\u{2dd6}'), ('\u{2dd8}', '\u{2dde}'),
+ ('\u{2de0}', '\u{2dff}'), ('\u{2e2f}', '\u{2e2f}'), ('\u{3005}', '\u{3007}'), ('\u{3021}',
+ '\u{3029}'), ('\u{3031}', '\u{3035}'), ('\u{3038}', '\u{303c}'), ('\u{3041}', '\u{3096}'),
+ ('\u{309d}', '\u{309f}'), ('\u{30a1}', '\u{30fa}'), ('\u{30fc}', '\u{30ff}'), ('\u{3105}',
+ '\u{312f}'), ('\u{3131}', '\u{318e}'), ('\u{31a0}', '\u{31bf}'), ('\u{31f0}', '\u{31ff}'),
+ ('\u{3400}', '\u{4dbf}'), ('\u{4e00}', '\u{a48c}'), ('\u{a4d0}', '\u{a4fd}'), ('\u{a500}',
+ '\u{a60c}'), ('\u{a610}', '\u{a61f}'), ('\u{a62a}', '\u{a62b}'), ('\u{a640}', '\u{a66e}'),
+ ('\u{a674}', '\u{a67b}'), ('\u{a67f}', '\u{a6ef}'), ('\u{a717}', '\u{a71f}'), ('\u{a722}',
+ '\u{a788}'), ('\u{a78b}', '\u{a7ca}'), ('\u{a7d0}', '\u{a7d1}'), ('\u{a7d3}', '\u{a7d3}'),
+ ('\u{a7d5}', '\u{a7d9}'), ('\u{a7f2}', '\u{a805}'), ('\u{a807}', '\u{a827}'), ('\u{a840}',
+ '\u{a873}'), ('\u{a880}', '\u{a8c3}'), ('\u{a8c5}', '\u{a8c5}'), ('\u{a8f2}', '\u{a8f7}'),
+ ('\u{a8fb}', '\u{a8fb}'), ('\u{a8fd}', '\u{a8ff}'), ('\u{a90a}', '\u{a92a}'), ('\u{a930}',
+ '\u{a952}'), ('\u{a960}', '\u{a97c}'), ('\u{a980}', '\u{a9b2}'), ('\u{a9b4}', '\u{a9bf}'),
+ ('\u{a9cf}', '\u{a9cf}'), ('\u{a9e0}', '\u{a9ef}'), ('\u{a9fa}', '\u{a9fe}'), ('\u{aa00}',
+ '\u{aa36}'), ('\u{aa40}', '\u{aa4d}'), ('\u{aa60}', '\u{aa76}'), ('\u{aa7a}', '\u{aabe}'),
+ ('\u{aac0}', '\u{aac0}'), ('\u{aac2}', '\u{aac2}'), ('\u{aadb}', '\u{aadd}'), ('\u{aae0}',
+ '\u{aaef}'), ('\u{aaf2}', '\u{aaf5}'), ('\u{ab01}', '\u{ab06}'), ('\u{ab09}', '\u{ab0e}'),
+ ('\u{ab11}', '\u{ab16}'), ('\u{ab20}', '\u{ab26}'), ('\u{ab28}', '\u{ab2e}'), ('\u{ab30}',
+ '\u{ab5a}'), ('\u{ab5c}', '\u{ab69}'), ('\u{ab70}', '\u{abea}'), ('\u{ac00}', '\u{d7a3}'),
+ ('\u{d7b0}', '\u{d7c6}'), ('\u{d7cb}', '\u{d7fb}'), ('\u{f900}', '\u{fa6d}'), ('\u{fa70}',
+ '\u{fad9}'), ('\u{fb00}', '\u{fb06}'), ('\u{fb13}', '\u{fb17}'), ('\u{fb1d}', '\u{fb28}'),
+ ('\u{fb2a}', '\u{fb36}'), ('\u{fb38}', '\u{fb3c}'), ('\u{fb3e}', '\u{fb3e}'), ('\u{fb40}',
+ '\u{fb41}'), ('\u{fb43}', '\u{fb44}'), ('\u{fb46}', '\u{fbb1}'), ('\u{fbd3}', '\u{fd3d}'),
+ ('\u{fd50}', '\u{fd8f}'), ('\u{fd92}', '\u{fdc7}'), ('\u{fdf0}', '\u{fdfb}'), ('\u{fe70}',
+ '\u{fe74}'), ('\u{fe76}', '\u{fefc}'), ('\u{ff21}', '\u{ff3a}'), ('\u{ff41}', '\u{ff5a}'),
+ ('\u{ff66}', '\u{ffbe}'), ('\u{ffc2}', '\u{ffc7}'), ('\u{ffca}', '\u{ffcf}'), ('\u{ffd2}',
+ '\u{ffd7}'), ('\u{ffda}', '\u{ffdc}'), ('\u{10000}', '\u{1000b}'), ('\u{1000d}',
+ '\u{10026}'), ('\u{10028}', '\u{1003a}'), ('\u{1003c}', '\u{1003d}'), ('\u{1003f}',
+ '\u{1004d}'), ('\u{10050}', '\u{1005d}'), ('\u{10080}', '\u{100fa}'), ('\u{10140}',
+ '\u{10174}'), ('\u{10280}', '\u{1029c}'), ('\u{102a0}', '\u{102d0}'), ('\u{10300}',
+ '\u{1031f}'), ('\u{1032d}', '\u{1034a}'), ('\u{10350}', '\u{1037a}'), ('\u{10380}',
+ '\u{1039d}'), ('\u{103a0}', '\u{103c3}'), ('\u{103c8}', '\u{103cf}'), ('\u{103d1}',
+ '\u{103d5}'), ('\u{10400}', '\u{1049d}'), ('\u{104b0}', '\u{104d3}'), ('\u{104d8}',
+ '\u{104fb}'), ('\u{10500}', '\u{10527}'), ('\u{10530}', '\u{10563}'), ('\u{10570}',
+ '\u{1057a}'), ('\u{1057c}', '\u{1058a}'), ('\u{1058c}', '\u{10592}'), ('\u{10594}',
+ '\u{10595}'), ('\u{10597}', '\u{105a1}'), ('\u{105a3}', '\u{105b1}'), ('\u{105b3}',
+ '\u{105b9}'), ('\u{105bb}', '\u{105bc}'), ('\u{10600}', '\u{10736}'), ('\u{10740}',
+ '\u{10755}'), ('\u{10760}', '\u{10767}'), ('\u{10780}', '\u{10785}'), ('\u{10787}',
+ '\u{107b0}'), ('\u{107b2}', '\u{107ba}'), ('\u{10800}', '\u{10805}'), ('\u{10808}',
+ '\u{10808}'), ('\u{1080a}', '\u{10835}'), ('\u{10837}', '\u{10838}'), ('\u{1083c}',
+ '\u{1083c}'), ('\u{1083f}', '\u{10855}'), ('\u{10860}', '\u{10876}'), ('\u{10880}',
+ '\u{1089e}'), ('\u{108e0}', '\u{108f2}'), ('\u{108f4}', '\u{108f5}'), ('\u{10900}',
+ '\u{10915}'), ('\u{10920}', '\u{10939}'), ('\u{10980}', '\u{109b7}'), ('\u{109be}',
+ '\u{109bf}'), ('\u{10a00}', '\u{10a03}'), ('\u{10a05}', '\u{10a06}'), ('\u{10a0c}',
+ '\u{10a13}'), ('\u{10a15}', '\u{10a17}'), ('\u{10a19}', '\u{10a35}'), ('\u{10a60}',
+ '\u{10a7c}'), ('\u{10a80}', '\u{10a9c}'), ('\u{10ac0}', '\u{10ac7}'), ('\u{10ac9}',
+ '\u{10ae4}'), ('\u{10b00}', '\u{10b35}'), ('\u{10b40}', '\u{10b55}'), ('\u{10b60}',
+ '\u{10b72}'), ('\u{10b80}', '\u{10b91}'), ('\u{10c00}', '\u{10c48}'), ('\u{10c80}',
+ '\u{10cb2}'), ('\u{10cc0}', '\u{10cf2}'), ('\u{10d00}', '\u{10d27}'), ('\u{10e80}',
+ '\u{10ea9}'), ('\u{10eab}', '\u{10eac}'), ('\u{10eb0}', '\u{10eb1}'), ('\u{10f00}',
+ '\u{10f1c}'), ('\u{10f27}', '\u{10f27}'), ('\u{10f30}', '\u{10f45}'), ('\u{10f70}',
+ '\u{10f81}'), ('\u{10fb0}', '\u{10fc4}'), ('\u{10fe0}', '\u{10ff6}'), ('\u{11000}',
+ '\u{11045}'), ('\u{11071}', '\u{11075}'), ('\u{11080}', '\u{110b8}'), ('\u{110c2}',
+ '\u{110c2}'), ('\u{110d0}', '\u{110e8}'), ('\u{11100}', '\u{11132}'), ('\u{11144}',
+ '\u{11147}'), ('\u{11150}', '\u{11172}'), ('\u{11176}', '\u{11176}'), ('\u{11180}',
+ '\u{111bf}'), ('\u{111c1}', '\u{111c4}'), ('\u{111ce}', '\u{111cf}'), ('\u{111da}',
+ '\u{111da}'), ('\u{111dc}', '\u{111dc}'), ('\u{11200}', '\u{11211}'), ('\u{11213}',
+ '\u{11234}'), ('\u{11237}', '\u{11237}'), ('\u{1123e}', '\u{11241}'), ('\u{11280}',
+ '\u{11286}'), ('\u{11288}', '\u{11288}'), ('\u{1128a}', '\u{1128d}'), ('\u{1128f}',
+ '\u{1129d}'), ('\u{1129f}', '\u{112a8}'), ('\u{112b0}', '\u{112e8}'), ('\u{11300}',
+ '\u{11303}'), ('\u{11305}', '\u{1130c}'), ('\u{1130f}', '\u{11310}'), ('\u{11313}',
+ '\u{11328}'), ('\u{1132a}', '\u{11330}'), ('\u{11332}', '\u{11333}'), ('\u{11335}',
+ '\u{11339}'), ('\u{1133d}', '\u{11344}'), ('\u{11347}', '\u{11348}'), ('\u{1134b}',
+ '\u{1134c}'), ('\u{11350}', '\u{11350}'), ('\u{11357}', '\u{11357}'), ('\u{1135d}',
+ '\u{11363}'), ('\u{11400}', '\u{11441}'), ('\u{11443}', '\u{11445}'), ('\u{11447}',
+ '\u{1144a}'), ('\u{1145f}', '\u{11461}'), ('\u{11480}', '\u{114c1}'), ('\u{114c4}',
+ '\u{114c5}'), ('\u{114c7}', '\u{114c7}'), ('\u{11580}', '\u{115b5}'), ('\u{115b8}',
+ '\u{115be}'), ('\u{115d8}', '\u{115dd}'), ('\u{11600}', '\u{1163e}'), ('\u{11640}',
+ '\u{11640}'), ('\u{11644}', '\u{11644}'), ('\u{11680}', '\u{116b5}'), ('\u{116b8}',
+ '\u{116b8}'), ('\u{11700}', '\u{1171a}'), ('\u{1171d}', '\u{1172a}'), ('\u{11740}',
+ '\u{11746}'), ('\u{11800}', '\u{11838}'), ('\u{118a0}', '\u{118df}'), ('\u{118ff}',
+ '\u{11906}'), ('\u{11909}', '\u{11909}'), ('\u{1190c}', '\u{11913}'), ('\u{11915}',
+ '\u{11916}'), ('\u{11918}', '\u{11935}'), ('\u{11937}', '\u{11938}'), ('\u{1193b}',
+ '\u{1193c}'), ('\u{1193f}', '\u{11942}'), ('\u{119a0}', '\u{119a7}'), ('\u{119aa}',
+ '\u{119d7}'), ('\u{119da}', '\u{119df}'), ('\u{119e1}', '\u{119e1}'), ('\u{119e3}',
+ '\u{119e4}'), ('\u{11a00}', '\u{11a32}'), ('\u{11a35}', '\u{11a3e}'), ('\u{11a50}',
+ '\u{11a97}'), ('\u{11a9d}', '\u{11a9d}'), ('\u{11ab0}', '\u{11af8}'), ('\u{11c00}',
+ '\u{11c08}'), ('\u{11c0a}', '\u{11c36}'), ('\u{11c38}', '\u{11c3e}'), ('\u{11c40}',
+ '\u{11c40}'), ('\u{11c72}', '\u{11c8f}'), ('\u{11c92}', '\u{11ca7}'), ('\u{11ca9}',
+ '\u{11cb6}'), ('\u{11d00}', '\u{11d06}'), ('\u{11d08}', '\u{11d09}'), ('\u{11d0b}',
+ '\u{11d36}'), ('\u{11d3a}', '\u{11d3a}'), ('\u{11d3c}', '\u{11d3d}'), ('\u{11d3f}',
+ '\u{11d41}'), ('\u{11d43}', '\u{11d43}'), ('\u{11d46}', '\u{11d47}'), ('\u{11d60}',
+ '\u{11d65}'), ('\u{11d67}', '\u{11d68}'), ('\u{11d6a}', '\u{11d8e}'), ('\u{11d90}',
+ '\u{11d91}'), ('\u{11d93}', '\u{11d96}'), ('\u{11d98}', '\u{11d98}'), ('\u{11ee0}',
+ '\u{11ef6}'), ('\u{11f00}', '\u{11f10}'), ('\u{11f12}', '\u{11f3a}'), ('\u{11f3e}',
+ '\u{11f40}'), ('\u{11fb0}', '\u{11fb0}'), ('\u{12000}', '\u{12399}'), ('\u{12400}',
+ '\u{1246e}'), ('\u{12480}', '\u{12543}'), ('\u{12f90}', '\u{12ff0}'), ('\u{13000}',
+ '\u{1342f}'), ('\u{13441}', '\u{13446}'), ('\u{14400}', '\u{14646}'), ('\u{16800}',
+ '\u{16a38}'), ('\u{16a40}', '\u{16a5e}'), ('\u{16a70}', '\u{16abe}'), ('\u{16ad0}',
+ '\u{16aed}'), ('\u{16b00}', '\u{16b2f}'), ('\u{16b40}', '\u{16b43}'), ('\u{16b63}',
+ '\u{16b77}'), ('\u{16b7d}', '\u{16b8f}'), ('\u{16e40}', '\u{16e7f}'), ('\u{16f00}',
+ '\u{16f4a}'), ('\u{16f4f}', '\u{16f87}'), ('\u{16f8f}', '\u{16f9f}'), ('\u{16fe0}',
+ '\u{16fe1}'), ('\u{16fe3}', '\u{16fe3}'), ('\u{16ff0}', '\u{16ff1}'), ('\u{17000}',
+ '\u{187f7}'), ('\u{18800}', '\u{18cd5}'), ('\u{18d00}', '\u{18d08}'), ('\u{1aff0}',
+ '\u{1aff3}'), ('\u{1aff5}', '\u{1affb}'), ('\u{1affd}', '\u{1affe}'), ('\u{1b000}',
+ '\u{1b122}'), ('\u{1b132}', '\u{1b132}'), ('\u{1b150}', '\u{1b152}'), ('\u{1b155}',
+ '\u{1b155}'), ('\u{1b164}', '\u{1b167}'), ('\u{1b170}', '\u{1b2fb}'), ('\u{1bc00}',
+ '\u{1bc6a}'), ('\u{1bc70}', '\u{1bc7c}'), ('\u{1bc80}', '\u{1bc88}'), ('\u{1bc90}',
+ '\u{1bc99}'), ('\u{1bc9e}', '\u{1bc9e}'), ('\u{1d400}', '\u{1d454}'), ('\u{1d456}',
+ '\u{1d49c}'), ('\u{1d49e}', '\u{1d49f}'), ('\u{1d4a2}', '\u{1d4a2}'), ('\u{1d4a5}',
+ '\u{1d4a6}'), ('\u{1d4a9}', '\u{1d4ac}'), ('\u{1d4ae}', '\u{1d4b9}'), ('\u{1d4bb}',
+ '\u{1d4bb}'), ('\u{1d4bd}', '\u{1d4c3}'), ('\u{1d4c5}', '\u{1d505}'), ('\u{1d507}',
+ '\u{1d50a}'), ('\u{1d50d}', '\u{1d514}'), ('\u{1d516}', '\u{1d51c}'), ('\u{1d51e}',
+ '\u{1d539}'), ('\u{1d53b}', '\u{1d53e}'), ('\u{1d540}', '\u{1d544}'), ('\u{1d546}',
+ '\u{1d546}'), ('\u{1d54a}', '\u{1d550}'), ('\u{1d552}', '\u{1d6a5}'), ('\u{1d6a8}',
+ '\u{1d6c0}'), ('\u{1d6c2}', '\u{1d6da}'), ('\u{1d6dc}', '\u{1d6fa}'), ('\u{1d6fc}',
+ '\u{1d714}'), ('\u{1d716}', '\u{1d734}'), ('\u{1d736}', '\u{1d74e}'), ('\u{1d750}',
+ '\u{1d76e}'), ('\u{1d770}', '\u{1d788}'), ('\u{1d78a}', '\u{1d7a8}'), ('\u{1d7aa}',
+ '\u{1d7c2}'), ('\u{1d7c4}', '\u{1d7cb}'), ('\u{1df00}', '\u{1df1e}'), ('\u{1df25}',
+ '\u{1df2a}'), ('\u{1e000}', '\u{1e006}'), ('\u{1e008}', '\u{1e018}'), ('\u{1e01b}',
+ '\u{1e021}'), ('\u{1e023}', '\u{1e024}'), ('\u{1e026}', '\u{1e02a}'), ('\u{1e030}',
+ '\u{1e06d}'), ('\u{1e08f}', '\u{1e08f}'), ('\u{1e100}', '\u{1e12c}'), ('\u{1e137}',
+ '\u{1e13d}'), ('\u{1e14e}', '\u{1e14e}'), ('\u{1e290}', '\u{1e2ad}'), ('\u{1e2c0}',
+ '\u{1e2eb}'), ('\u{1e4d0}', '\u{1e4eb}'), ('\u{1e7e0}', '\u{1e7e6}'), ('\u{1e7e8}',
+ '\u{1e7eb}'), ('\u{1e7ed}', '\u{1e7ee}'), ('\u{1e7f0}', '\u{1e7fe}'), ('\u{1e800}',
+ '\u{1e8c4}'), ('\u{1e900}', '\u{1e943}'), ('\u{1e947}', '\u{1e947}'), ('\u{1e94b}',
+ '\u{1e94b}'), ('\u{1ee00}', '\u{1ee03}'), ('\u{1ee05}', '\u{1ee1f}'), ('\u{1ee21}',
+ '\u{1ee22}'), ('\u{1ee24}', '\u{1ee24}'), ('\u{1ee27}', '\u{1ee27}'), ('\u{1ee29}',
+ '\u{1ee32}'), ('\u{1ee34}', '\u{1ee37}'), ('\u{1ee39}', '\u{1ee39}'), ('\u{1ee3b}',
+ '\u{1ee3b}'), ('\u{1ee42}', '\u{1ee42}'), ('\u{1ee47}', '\u{1ee47}'), ('\u{1ee49}',
+ '\u{1ee49}'), ('\u{1ee4b}', '\u{1ee4b}'), ('\u{1ee4d}', '\u{1ee4f}'), ('\u{1ee51}',
+ '\u{1ee52}'), ('\u{1ee54}', '\u{1ee54}'), ('\u{1ee57}', '\u{1ee57}'), ('\u{1ee59}',
+ '\u{1ee59}'), ('\u{1ee5b}', '\u{1ee5b}'), ('\u{1ee5d}', '\u{1ee5d}'), ('\u{1ee5f}',
+ '\u{1ee5f}'), ('\u{1ee61}', '\u{1ee62}'), ('\u{1ee64}', '\u{1ee64}'), ('\u{1ee67}',
+ '\u{1ee6a}'), ('\u{1ee6c}', '\u{1ee72}'), ('\u{1ee74}', '\u{1ee77}'), ('\u{1ee79}',
+ '\u{1ee7c}'), ('\u{1ee7e}', '\u{1ee7e}'), ('\u{1ee80}', '\u{1ee89}'), ('\u{1ee8b}',
+ '\u{1ee9b}'), ('\u{1eea1}', '\u{1eea3}'), ('\u{1eea5}', '\u{1eea9}'), ('\u{1eeab}',
+ '\u{1eebb}'), ('\u{1f130}', '\u{1f149}'), ('\u{1f150}', '\u{1f169}'), ('\u{1f170}',
+ '\u{1f189}'), ('\u{20000}', '\u{2a6df}'), ('\u{2a700}', '\u{2b739}'), ('\u{2b740}',
+ '\u{2b81d}'), ('\u{2b820}', '\u{2cea1}'), ('\u{2ceb0}', '\u{2ebe0}'), ('\u{2f800}',
+ '\u{2fa1d}'), ('\u{30000}', '\u{3134a}'), ('\u{31350}', '\u{323af}')
];
#[inline]
@@ -441,55 +445,56 @@ pub mod grapheme {
GC_Extend), ('\u{cc3}', '\u{cc4}', GC_SpacingMark), ('\u{cc6}', '\u{cc6}', GC_Extend),
('\u{cc7}', '\u{cc8}', GC_SpacingMark), ('\u{cca}', '\u{ccb}', GC_SpacingMark), ('\u{ccc}',
'\u{ccd}', GC_Extend), ('\u{cd5}', '\u{cd6}', GC_Extend), ('\u{ce2}', '\u{ce3}', GC_Extend),
- ('\u{d00}', '\u{d01}', GC_Extend), ('\u{d02}', '\u{d03}', GC_SpacingMark), ('\u{d3b}',
- '\u{d3c}', GC_Extend), ('\u{d3e}', '\u{d3e}', GC_Extend), ('\u{d3f}', '\u{d40}',
- GC_SpacingMark), ('\u{d41}', '\u{d44}', GC_Extend), ('\u{d46}', '\u{d48}', GC_SpacingMark),
- ('\u{d4a}', '\u{d4c}', GC_SpacingMark), ('\u{d4d}', '\u{d4d}', GC_Extend), ('\u{d4e}',
- '\u{d4e}', GC_Prepend), ('\u{d57}', '\u{d57}', GC_Extend), ('\u{d62}', '\u{d63}',
- GC_Extend), ('\u{d81}', '\u{d81}', GC_Extend), ('\u{d82}', '\u{d83}', GC_SpacingMark),
- ('\u{dca}', '\u{dca}', GC_Extend), ('\u{dcf}', '\u{dcf}', GC_Extend), ('\u{dd0}', '\u{dd1}',
- GC_SpacingMark), ('\u{dd2}', '\u{dd4}', GC_Extend), ('\u{dd6}', '\u{dd6}', GC_Extend),
- ('\u{dd8}', '\u{dde}', GC_SpacingMark), ('\u{ddf}', '\u{ddf}', GC_Extend), ('\u{df2}',
- '\u{df3}', GC_SpacingMark), ('\u{e31}', '\u{e31}', GC_Extend), ('\u{e33}', '\u{e33}',
- GC_SpacingMark), ('\u{e34}', '\u{e3a}', GC_Extend), ('\u{e47}', '\u{e4e}', GC_Extend),
- ('\u{eb1}', '\u{eb1}', GC_Extend), ('\u{eb3}', '\u{eb3}', GC_SpacingMark), ('\u{eb4}',
- '\u{ebc}', GC_Extend), ('\u{ec8}', '\u{ecd}', GC_Extend), ('\u{f18}', '\u{f19}', GC_Extend),
- ('\u{f35}', '\u{f35}', GC_Extend), ('\u{f37}', '\u{f37}', GC_Extend), ('\u{f39}', '\u{f39}',
- GC_Extend), ('\u{f3e}', '\u{f3f}', GC_SpacingMark), ('\u{f71}', '\u{f7e}', GC_Extend),
- ('\u{f7f}', '\u{f7f}', GC_SpacingMark), ('\u{f80}', '\u{f84}', GC_Extend), ('\u{f86}',
- '\u{f87}', GC_Extend), ('\u{f8d}', '\u{f97}', GC_Extend), ('\u{f99}', '\u{fbc}', GC_Extend),
- ('\u{fc6}', '\u{fc6}', GC_Extend), ('\u{102d}', '\u{1030}', GC_Extend), ('\u{1031}',
- '\u{1031}', GC_SpacingMark), ('\u{1032}', '\u{1037}', GC_Extend), ('\u{1039}', '\u{103a}',
- GC_Extend), ('\u{103b}', '\u{103c}', GC_SpacingMark), ('\u{103d}', '\u{103e}', GC_Extend),
- ('\u{1056}', '\u{1057}', GC_SpacingMark), ('\u{1058}', '\u{1059}', GC_Extend), ('\u{105e}',
- '\u{1060}', GC_Extend), ('\u{1071}', '\u{1074}', GC_Extend), ('\u{1082}', '\u{1082}',
- GC_Extend), ('\u{1084}', '\u{1084}', GC_SpacingMark), ('\u{1085}', '\u{1086}', GC_Extend),
- ('\u{108d}', '\u{108d}', GC_Extend), ('\u{109d}', '\u{109d}', GC_Extend), ('\u{1100}',
- '\u{115f}', GC_L), ('\u{1160}', '\u{11a7}', GC_V), ('\u{11a8}', '\u{11ff}', GC_T),
- ('\u{135d}', '\u{135f}', GC_Extend), ('\u{1712}', '\u{1714}', GC_Extend), ('\u{1715}',
- '\u{1715}', GC_SpacingMark), ('\u{1732}', '\u{1733}', GC_Extend), ('\u{1734}', '\u{1734}',
- GC_SpacingMark), ('\u{1752}', '\u{1753}', GC_Extend), ('\u{1772}', '\u{1773}', GC_Extend),
- ('\u{17b4}', '\u{17b5}', GC_Extend), ('\u{17b6}', '\u{17b6}', GC_SpacingMark), ('\u{17b7}',
- '\u{17bd}', GC_Extend), ('\u{17be}', '\u{17c5}', GC_SpacingMark), ('\u{17c6}', '\u{17c6}',
- GC_Extend), ('\u{17c7}', '\u{17c8}', GC_SpacingMark), ('\u{17c9}', '\u{17d3}', GC_Extend),
- ('\u{17dd}', '\u{17dd}', GC_Extend), ('\u{180b}', '\u{180d}', GC_Extend), ('\u{180e}',
- '\u{180e}', GC_Control), ('\u{180f}', '\u{180f}', GC_Extend), ('\u{1885}', '\u{1886}',
- GC_Extend), ('\u{18a9}', '\u{18a9}', GC_Extend), ('\u{1920}', '\u{1922}', GC_Extend),
- ('\u{1923}', '\u{1926}', GC_SpacingMark), ('\u{1927}', '\u{1928}', GC_Extend), ('\u{1929}',
- '\u{192b}', GC_SpacingMark), ('\u{1930}', '\u{1931}', GC_SpacingMark), ('\u{1932}',
- '\u{1932}', GC_Extend), ('\u{1933}', '\u{1938}', GC_SpacingMark), ('\u{1939}', '\u{193b}',
- GC_Extend), ('\u{1a17}', '\u{1a18}', GC_Extend), ('\u{1a19}', '\u{1a1a}', GC_SpacingMark),
- ('\u{1a1b}', '\u{1a1b}', GC_Extend), ('\u{1a55}', '\u{1a55}', GC_SpacingMark), ('\u{1a56}',
- '\u{1a56}', GC_Extend), ('\u{1a57}', '\u{1a57}', GC_SpacingMark), ('\u{1a58}', '\u{1a5e}',
- GC_Extend), ('\u{1a60}', '\u{1a60}', GC_Extend), ('\u{1a62}', '\u{1a62}', GC_Extend),
- ('\u{1a65}', '\u{1a6c}', GC_Extend), ('\u{1a6d}', '\u{1a72}', GC_SpacingMark), ('\u{1a73}',
- '\u{1a7c}', GC_Extend), ('\u{1a7f}', '\u{1a7f}', GC_Extend), ('\u{1ab0}', '\u{1ace}',
- GC_Extend), ('\u{1b00}', '\u{1b03}', GC_Extend), ('\u{1b04}', '\u{1b04}', GC_SpacingMark),
- ('\u{1b34}', '\u{1b3a}', GC_Extend), ('\u{1b3b}', '\u{1b3b}', GC_SpacingMark), ('\u{1b3c}',
- '\u{1b3c}', GC_Extend), ('\u{1b3d}', '\u{1b41}', GC_SpacingMark), ('\u{1b42}', '\u{1b42}',
- GC_Extend), ('\u{1b43}', '\u{1b44}', GC_SpacingMark), ('\u{1b6b}', '\u{1b73}', GC_Extend),
- ('\u{1b80}', '\u{1b81}', GC_Extend), ('\u{1b82}', '\u{1b82}', GC_SpacingMark), ('\u{1ba1}',
- '\u{1ba1}', GC_SpacingMark), ('\u{1ba2}', '\u{1ba5}', GC_Extend), ('\u{1ba6}', '\u{1ba7}',
+ ('\u{cf3}', '\u{cf3}', GC_SpacingMark), ('\u{d00}', '\u{d01}', GC_Extend), ('\u{d02}',
+ '\u{d03}', GC_SpacingMark), ('\u{d3b}', '\u{d3c}', GC_Extend), ('\u{d3e}', '\u{d3e}',
+ GC_Extend), ('\u{d3f}', '\u{d40}', GC_SpacingMark), ('\u{d41}', '\u{d44}', GC_Extend),
+ ('\u{d46}', '\u{d48}', GC_SpacingMark), ('\u{d4a}', '\u{d4c}', GC_SpacingMark), ('\u{d4d}',
+ '\u{d4d}', GC_Extend), ('\u{d4e}', '\u{d4e}', GC_Prepend), ('\u{d57}', '\u{d57}',
+ GC_Extend), ('\u{d62}', '\u{d63}', GC_Extend), ('\u{d81}', '\u{d81}', GC_Extend),
+ ('\u{d82}', '\u{d83}', GC_SpacingMark), ('\u{dca}', '\u{dca}', GC_Extend), ('\u{dcf}',
+ '\u{dcf}', GC_Extend), ('\u{dd0}', '\u{dd1}', GC_SpacingMark), ('\u{dd2}', '\u{dd4}',
+ GC_Extend), ('\u{dd6}', '\u{dd6}', GC_Extend), ('\u{dd8}', '\u{dde}', GC_SpacingMark),
+ ('\u{ddf}', '\u{ddf}', GC_Extend), ('\u{df2}', '\u{df3}', GC_SpacingMark), ('\u{e31}',
+ '\u{e31}', GC_Extend), ('\u{e33}', '\u{e33}', GC_SpacingMark), ('\u{e34}', '\u{e3a}',
+ GC_Extend), ('\u{e47}', '\u{e4e}', GC_Extend), ('\u{eb1}', '\u{eb1}', GC_Extend),
+ ('\u{eb3}', '\u{eb3}', GC_SpacingMark), ('\u{eb4}', '\u{ebc}', GC_Extend), ('\u{ec8}',
+ '\u{ece}', GC_Extend), ('\u{f18}', '\u{f19}', GC_Extend), ('\u{f35}', '\u{f35}', GC_Extend),
+ ('\u{f37}', '\u{f37}', GC_Extend), ('\u{f39}', '\u{f39}', GC_Extend), ('\u{f3e}', '\u{f3f}',
+ GC_SpacingMark), ('\u{f71}', '\u{f7e}', GC_Extend), ('\u{f7f}', '\u{f7f}', GC_SpacingMark),
+ ('\u{f80}', '\u{f84}', GC_Extend), ('\u{f86}', '\u{f87}', GC_Extend), ('\u{f8d}', '\u{f97}',
+ GC_Extend), ('\u{f99}', '\u{fbc}', GC_Extend), ('\u{fc6}', '\u{fc6}', GC_Extend),
+ ('\u{102d}', '\u{1030}', GC_Extend), ('\u{1031}', '\u{1031}', GC_SpacingMark), ('\u{1032}',
+ '\u{1037}', GC_Extend), ('\u{1039}', '\u{103a}', GC_Extend), ('\u{103b}', '\u{103c}',
+ GC_SpacingMark), ('\u{103d}', '\u{103e}', GC_Extend), ('\u{1056}', '\u{1057}',
+ GC_SpacingMark), ('\u{1058}', '\u{1059}', GC_Extend), ('\u{105e}', '\u{1060}', GC_Extend),
+ ('\u{1071}', '\u{1074}', GC_Extend), ('\u{1082}', '\u{1082}', GC_Extend), ('\u{1084}',
+ '\u{1084}', GC_SpacingMark), ('\u{1085}', '\u{1086}', GC_Extend), ('\u{108d}', '\u{108d}',
+ GC_Extend), ('\u{109d}', '\u{109d}', GC_Extend), ('\u{1100}', '\u{115f}', GC_L),
+ ('\u{1160}', '\u{11a7}', GC_V), ('\u{11a8}', '\u{11ff}', GC_T), ('\u{135d}', '\u{135f}',
+ GC_Extend), ('\u{1712}', '\u{1714}', GC_Extend), ('\u{1715}', '\u{1715}', GC_SpacingMark),
+ ('\u{1732}', '\u{1733}', GC_Extend), ('\u{1734}', '\u{1734}', GC_SpacingMark), ('\u{1752}',
+ '\u{1753}', GC_Extend), ('\u{1772}', '\u{1773}', GC_Extend), ('\u{17b4}', '\u{17b5}',
+ GC_Extend), ('\u{17b6}', '\u{17b6}', GC_SpacingMark), ('\u{17b7}', '\u{17bd}', GC_Extend),
+ ('\u{17be}', '\u{17c5}', GC_SpacingMark), ('\u{17c6}', '\u{17c6}', GC_Extend), ('\u{17c7}',
+ '\u{17c8}', GC_SpacingMark), ('\u{17c9}', '\u{17d3}', GC_Extend), ('\u{17dd}', '\u{17dd}',
+ GC_Extend), ('\u{180b}', '\u{180d}', GC_Extend), ('\u{180e}', '\u{180e}', GC_Control),
+ ('\u{180f}', '\u{180f}', GC_Extend), ('\u{1885}', '\u{1886}', GC_Extend), ('\u{18a9}',
+ '\u{18a9}', GC_Extend), ('\u{1920}', '\u{1922}', GC_Extend), ('\u{1923}', '\u{1926}',
+ GC_SpacingMark), ('\u{1927}', '\u{1928}', GC_Extend), ('\u{1929}', '\u{192b}',
+ GC_SpacingMark), ('\u{1930}', '\u{1931}', GC_SpacingMark), ('\u{1932}', '\u{1932}',
+ GC_Extend), ('\u{1933}', '\u{1938}', GC_SpacingMark), ('\u{1939}', '\u{193b}', GC_Extend),
+ ('\u{1a17}', '\u{1a18}', GC_Extend), ('\u{1a19}', '\u{1a1a}', GC_SpacingMark), ('\u{1a1b}',
+ '\u{1a1b}', GC_Extend), ('\u{1a55}', '\u{1a55}', GC_SpacingMark), ('\u{1a56}', '\u{1a56}',
+ GC_Extend), ('\u{1a57}', '\u{1a57}', GC_SpacingMark), ('\u{1a58}', '\u{1a5e}', GC_Extend),
+ ('\u{1a60}', '\u{1a60}', GC_Extend), ('\u{1a62}', '\u{1a62}', GC_Extend), ('\u{1a65}',
+ '\u{1a6c}', GC_Extend), ('\u{1a6d}', '\u{1a72}', GC_SpacingMark), ('\u{1a73}', '\u{1a7c}',
+ GC_Extend), ('\u{1a7f}', '\u{1a7f}', GC_Extend), ('\u{1ab0}', '\u{1ace}', GC_Extend),
+ ('\u{1b00}', '\u{1b03}', GC_Extend), ('\u{1b04}', '\u{1b04}', GC_SpacingMark), ('\u{1b34}',
+ '\u{1b3a}', GC_Extend), ('\u{1b3b}', '\u{1b3b}', GC_SpacingMark), ('\u{1b3c}', '\u{1b3c}',
+ GC_Extend), ('\u{1b3d}', '\u{1b41}', GC_SpacingMark), ('\u{1b42}', '\u{1b42}', GC_Extend),
+ ('\u{1b43}', '\u{1b44}', GC_SpacingMark), ('\u{1b6b}', '\u{1b73}', GC_Extend), ('\u{1b80}',
+ '\u{1b81}', GC_Extend), ('\u{1b82}', '\u{1b82}', GC_SpacingMark), ('\u{1ba1}', '\u{1ba1}',
+ GC_SpacingMark), ('\u{1ba2}', '\u{1ba5}', GC_Extend), ('\u{1ba6}', '\u{1ba7}',
GC_SpacingMark), ('\u{1ba8}', '\u{1ba9}', GC_Extend), ('\u{1baa}', '\u{1baa}',
GC_SpacingMark), ('\u{1bab}', '\u{1bad}', GC_Extend), ('\u{1be6}', '\u{1be6}', GC_Extend),
('\u{1be7}', '\u{1be7}', GC_SpacingMark), ('\u{1be8}', '\u{1be9}', GC_Extend), ('\u{1bea}',
@@ -866,74 +871,75 @@ pub mod grapheme {
('\u{10a01}', '\u{10a03}', GC_Extend), ('\u{10a05}', '\u{10a06}', GC_Extend), ('\u{10a0c}',
'\u{10a0f}', GC_Extend), ('\u{10a38}', '\u{10a3a}', GC_Extend), ('\u{10a3f}', '\u{10a3f}',
GC_Extend), ('\u{10ae5}', '\u{10ae6}', GC_Extend), ('\u{10d24}', '\u{10d27}', GC_Extend),
- ('\u{10eab}', '\u{10eac}', GC_Extend), ('\u{10f46}', '\u{10f50}', GC_Extend), ('\u{10f82}',
- '\u{10f85}', GC_Extend), ('\u{11000}', '\u{11000}', GC_SpacingMark), ('\u{11001}',
- '\u{11001}', GC_Extend), ('\u{11002}', '\u{11002}', GC_SpacingMark), ('\u{11038}',
- '\u{11046}', GC_Extend), ('\u{11070}', '\u{11070}', GC_Extend), ('\u{11073}', '\u{11074}',
- GC_Extend), ('\u{1107f}', '\u{11081}', GC_Extend), ('\u{11082}', '\u{11082}',
- GC_SpacingMark), ('\u{110b0}', '\u{110b2}', GC_SpacingMark), ('\u{110b3}', '\u{110b6}',
- GC_Extend), ('\u{110b7}', '\u{110b8}', GC_SpacingMark), ('\u{110b9}', '\u{110ba}',
- GC_Extend), ('\u{110bd}', '\u{110bd}', GC_Prepend), ('\u{110c2}', '\u{110c2}', GC_Extend),
- ('\u{110cd}', '\u{110cd}', GC_Prepend), ('\u{11100}', '\u{11102}', GC_Extend), ('\u{11127}',
- '\u{1112b}', GC_Extend), ('\u{1112c}', '\u{1112c}', GC_SpacingMark), ('\u{1112d}',
- '\u{11134}', GC_Extend), ('\u{11145}', '\u{11146}', GC_SpacingMark), ('\u{11173}',
- '\u{11173}', GC_Extend), ('\u{11180}', '\u{11181}', GC_Extend), ('\u{11182}', '\u{11182}',
- GC_SpacingMark), ('\u{111b3}', '\u{111b5}', GC_SpacingMark), ('\u{111b6}', '\u{111be}',
- GC_Extend), ('\u{111bf}', '\u{111c0}', GC_SpacingMark), ('\u{111c2}', '\u{111c3}',
- GC_Prepend), ('\u{111c9}', '\u{111cc}', GC_Extend), ('\u{111ce}', '\u{111ce}',
- GC_SpacingMark), ('\u{111cf}', '\u{111cf}', GC_Extend), ('\u{1122c}', '\u{1122e}',
- GC_SpacingMark), ('\u{1122f}', '\u{11231}', GC_Extend), ('\u{11232}', '\u{11233}',
- GC_SpacingMark), ('\u{11234}', '\u{11234}', GC_Extend), ('\u{11235}', '\u{11235}',
- GC_SpacingMark), ('\u{11236}', '\u{11237}', GC_Extend), ('\u{1123e}', '\u{1123e}',
- GC_Extend), ('\u{112df}', '\u{112df}', GC_Extend), ('\u{112e0}', '\u{112e2}',
- GC_SpacingMark), ('\u{112e3}', '\u{112ea}', GC_Extend), ('\u{11300}', '\u{11301}',
- GC_Extend), ('\u{11302}', '\u{11303}', GC_SpacingMark), ('\u{1133b}', '\u{1133c}',
- GC_Extend), ('\u{1133e}', '\u{1133e}', GC_Extend), ('\u{1133f}', '\u{1133f}',
- GC_SpacingMark), ('\u{11340}', '\u{11340}', GC_Extend), ('\u{11341}', '\u{11344}',
- GC_SpacingMark), ('\u{11347}', '\u{11348}', GC_SpacingMark), ('\u{1134b}', '\u{1134d}',
- GC_SpacingMark), ('\u{11357}', '\u{11357}', GC_Extend), ('\u{11362}', '\u{11363}',
- GC_SpacingMark), ('\u{11366}', '\u{1136c}', GC_Extend), ('\u{11370}', '\u{11374}',
- GC_Extend), ('\u{11435}', '\u{11437}', GC_SpacingMark), ('\u{11438}', '\u{1143f}',
- GC_Extend), ('\u{11440}', '\u{11441}', GC_SpacingMark), ('\u{11442}', '\u{11444}',
- GC_Extend), ('\u{11445}', '\u{11445}', GC_SpacingMark), ('\u{11446}', '\u{11446}',
- GC_Extend), ('\u{1145e}', '\u{1145e}', GC_Extend), ('\u{114b0}', '\u{114b0}', GC_Extend),
- ('\u{114b1}', '\u{114b2}', GC_SpacingMark), ('\u{114b3}', '\u{114b8}', GC_Extend),
- ('\u{114b9}', '\u{114b9}', GC_SpacingMark), ('\u{114ba}', '\u{114ba}', GC_Extend),
- ('\u{114bb}', '\u{114bc}', GC_SpacingMark), ('\u{114bd}', '\u{114bd}', GC_Extend),
- ('\u{114be}', '\u{114be}', GC_SpacingMark), ('\u{114bf}', '\u{114c0}', GC_Extend),
- ('\u{114c1}', '\u{114c1}', GC_SpacingMark), ('\u{114c2}', '\u{114c3}', GC_Extend),
- ('\u{115af}', '\u{115af}', GC_Extend), ('\u{115b0}', '\u{115b1}', GC_SpacingMark),
- ('\u{115b2}', '\u{115b5}', GC_Extend), ('\u{115b8}', '\u{115bb}', GC_SpacingMark),
- ('\u{115bc}', '\u{115bd}', GC_Extend), ('\u{115be}', '\u{115be}', GC_SpacingMark),
- ('\u{115bf}', '\u{115c0}', GC_Extend), ('\u{115dc}', '\u{115dd}', GC_Extend), ('\u{11630}',
- '\u{11632}', GC_SpacingMark), ('\u{11633}', '\u{1163a}', GC_Extend), ('\u{1163b}',
- '\u{1163c}', GC_SpacingMark), ('\u{1163d}', '\u{1163d}', GC_Extend), ('\u{1163e}',
- '\u{1163e}', GC_SpacingMark), ('\u{1163f}', '\u{11640}', GC_Extend), ('\u{116ab}',
- '\u{116ab}', GC_Extend), ('\u{116ac}', '\u{116ac}', GC_SpacingMark), ('\u{116ad}',
- '\u{116ad}', GC_Extend), ('\u{116ae}', '\u{116af}', GC_SpacingMark), ('\u{116b0}',
- '\u{116b5}', GC_Extend), ('\u{116b6}', '\u{116b6}', GC_SpacingMark), ('\u{116b7}',
- '\u{116b7}', GC_Extend), ('\u{1171d}', '\u{1171f}', GC_Extend), ('\u{11722}', '\u{11725}',
- GC_Extend), ('\u{11726}', '\u{11726}', GC_SpacingMark), ('\u{11727}', '\u{1172b}',
- GC_Extend), ('\u{1182c}', '\u{1182e}', GC_SpacingMark), ('\u{1182f}', '\u{11837}',
- GC_Extend), ('\u{11838}', '\u{11838}', GC_SpacingMark), ('\u{11839}', '\u{1183a}',
- GC_Extend), ('\u{11930}', '\u{11930}', GC_Extend), ('\u{11931}', '\u{11935}',
- GC_SpacingMark), ('\u{11937}', '\u{11938}', GC_SpacingMark), ('\u{1193b}', '\u{1193c}',
- GC_Extend), ('\u{1193d}', '\u{1193d}', GC_SpacingMark), ('\u{1193e}', '\u{1193e}',
- GC_Extend), ('\u{1193f}', '\u{1193f}', GC_Prepend), ('\u{11940}', '\u{11940}',
- GC_SpacingMark), ('\u{11941}', '\u{11941}', GC_Prepend), ('\u{11942}', '\u{11942}',
- GC_SpacingMark), ('\u{11943}', '\u{11943}', GC_Extend), ('\u{119d1}', '\u{119d3}',
- GC_SpacingMark), ('\u{119d4}', '\u{119d7}', GC_Extend), ('\u{119da}', '\u{119db}',
- GC_Extend), ('\u{119dc}', '\u{119df}', GC_SpacingMark), ('\u{119e0}', '\u{119e0}',
- GC_Extend), ('\u{119e4}', '\u{119e4}', GC_SpacingMark), ('\u{11a01}', '\u{11a0a}',
- GC_Extend), ('\u{11a33}', '\u{11a38}', GC_Extend), ('\u{11a39}', '\u{11a39}',
- GC_SpacingMark), ('\u{11a3a}', '\u{11a3a}', GC_Prepend), ('\u{11a3b}', '\u{11a3e}',
- GC_Extend), ('\u{11a47}', '\u{11a47}', GC_Extend), ('\u{11a51}', '\u{11a56}', GC_Extend),
- ('\u{11a57}', '\u{11a58}', GC_SpacingMark), ('\u{11a59}', '\u{11a5b}', GC_Extend),
- ('\u{11a84}', '\u{11a89}', GC_Prepend), ('\u{11a8a}', '\u{11a96}', GC_Extend), ('\u{11a97}',
- '\u{11a97}', GC_SpacingMark), ('\u{11a98}', '\u{11a99}', GC_Extend), ('\u{11c2f}',
- '\u{11c2f}', GC_SpacingMark), ('\u{11c30}', '\u{11c36}', GC_Extend), ('\u{11c38}',
- '\u{11c3d}', GC_Extend), ('\u{11c3e}', '\u{11c3e}', GC_SpacingMark), ('\u{11c3f}',
- '\u{11c3f}', GC_Extend), ('\u{11c92}', '\u{11ca7}', GC_Extend), ('\u{11ca9}', '\u{11ca9}',
+ ('\u{10eab}', '\u{10eac}', GC_Extend), ('\u{10efd}', '\u{10eff}', GC_Extend), ('\u{10f46}',
+ '\u{10f50}', GC_Extend), ('\u{10f82}', '\u{10f85}', GC_Extend), ('\u{11000}', '\u{11000}',
+ GC_SpacingMark), ('\u{11001}', '\u{11001}', GC_Extend), ('\u{11002}', '\u{11002}',
+ GC_SpacingMark), ('\u{11038}', '\u{11046}', GC_Extend), ('\u{11070}', '\u{11070}',
+ GC_Extend), ('\u{11073}', '\u{11074}', GC_Extend), ('\u{1107f}', '\u{11081}', GC_Extend),
+ ('\u{11082}', '\u{11082}', GC_SpacingMark), ('\u{110b0}', '\u{110b2}', GC_SpacingMark),
+ ('\u{110b3}', '\u{110b6}', GC_Extend), ('\u{110b7}', '\u{110b8}', GC_SpacingMark),
+ ('\u{110b9}', '\u{110ba}', GC_Extend), ('\u{110bd}', '\u{110bd}', GC_Prepend), ('\u{110c2}',
+ '\u{110c2}', GC_Extend), ('\u{110cd}', '\u{110cd}', GC_Prepend), ('\u{11100}', '\u{11102}',
+ GC_Extend), ('\u{11127}', '\u{1112b}', GC_Extend), ('\u{1112c}', '\u{1112c}',
+ GC_SpacingMark), ('\u{1112d}', '\u{11134}', GC_Extend), ('\u{11145}', '\u{11146}',
+ GC_SpacingMark), ('\u{11173}', '\u{11173}', GC_Extend), ('\u{11180}', '\u{11181}',
+ GC_Extend), ('\u{11182}', '\u{11182}', GC_SpacingMark), ('\u{111b3}', '\u{111b5}',
+ GC_SpacingMark), ('\u{111b6}', '\u{111be}', GC_Extend), ('\u{111bf}', '\u{111c0}',
+ GC_SpacingMark), ('\u{111c2}', '\u{111c3}', GC_Prepend), ('\u{111c9}', '\u{111cc}',
+ GC_Extend), ('\u{111ce}', '\u{111ce}', GC_SpacingMark), ('\u{111cf}', '\u{111cf}',
+ GC_Extend), ('\u{1122c}', '\u{1122e}', GC_SpacingMark), ('\u{1122f}', '\u{11231}',
+ GC_Extend), ('\u{11232}', '\u{11233}', GC_SpacingMark), ('\u{11234}', '\u{11234}',
+ GC_Extend), ('\u{11235}', '\u{11235}', GC_SpacingMark), ('\u{11236}', '\u{11237}',
+ GC_Extend), ('\u{1123e}', '\u{1123e}', GC_Extend), ('\u{11241}', '\u{11241}', GC_Extend),
+ ('\u{112df}', '\u{112df}', GC_Extend), ('\u{112e0}', '\u{112e2}', GC_SpacingMark),
+ ('\u{112e3}', '\u{112ea}', GC_Extend), ('\u{11300}', '\u{11301}', GC_Extend), ('\u{11302}',
+ '\u{11303}', GC_SpacingMark), ('\u{1133b}', '\u{1133c}', GC_Extend), ('\u{1133e}',
+ '\u{1133e}', GC_Extend), ('\u{1133f}', '\u{1133f}', GC_SpacingMark), ('\u{11340}',
+ '\u{11340}', GC_Extend), ('\u{11341}', '\u{11344}', GC_SpacingMark), ('\u{11347}',
+ '\u{11348}', GC_SpacingMark), ('\u{1134b}', '\u{1134d}', GC_SpacingMark), ('\u{11357}',
+ '\u{11357}', GC_Extend), ('\u{11362}', '\u{11363}', GC_SpacingMark), ('\u{11366}',
+ '\u{1136c}', GC_Extend), ('\u{11370}', '\u{11374}', GC_Extend), ('\u{11435}', '\u{11437}',
+ GC_SpacingMark), ('\u{11438}', '\u{1143f}', GC_Extend), ('\u{11440}', '\u{11441}',
+ GC_SpacingMark), ('\u{11442}', '\u{11444}', GC_Extend), ('\u{11445}', '\u{11445}',
+ GC_SpacingMark), ('\u{11446}', '\u{11446}', GC_Extend), ('\u{1145e}', '\u{1145e}',
+ GC_Extend), ('\u{114b0}', '\u{114b0}', GC_Extend), ('\u{114b1}', '\u{114b2}',
+ GC_SpacingMark), ('\u{114b3}', '\u{114b8}', GC_Extend), ('\u{114b9}', '\u{114b9}',
+ GC_SpacingMark), ('\u{114ba}', '\u{114ba}', GC_Extend), ('\u{114bb}', '\u{114bc}',
+ GC_SpacingMark), ('\u{114bd}', '\u{114bd}', GC_Extend), ('\u{114be}', '\u{114be}',
+ GC_SpacingMark), ('\u{114bf}', '\u{114c0}', GC_Extend), ('\u{114c1}', '\u{114c1}',
+ GC_SpacingMark), ('\u{114c2}', '\u{114c3}', GC_Extend), ('\u{115af}', '\u{115af}',
+ GC_Extend), ('\u{115b0}', '\u{115b1}', GC_SpacingMark), ('\u{115b2}', '\u{115b5}',
+ GC_Extend), ('\u{115b8}', '\u{115bb}', GC_SpacingMark), ('\u{115bc}', '\u{115bd}',
+ GC_Extend), ('\u{115be}', '\u{115be}', GC_SpacingMark), ('\u{115bf}', '\u{115c0}',
+ GC_Extend), ('\u{115dc}', '\u{115dd}', GC_Extend), ('\u{11630}', '\u{11632}',
+ GC_SpacingMark), ('\u{11633}', '\u{1163a}', GC_Extend), ('\u{1163b}', '\u{1163c}',
+ GC_SpacingMark), ('\u{1163d}', '\u{1163d}', GC_Extend), ('\u{1163e}', '\u{1163e}',
+ GC_SpacingMark), ('\u{1163f}', '\u{11640}', GC_Extend), ('\u{116ab}', '\u{116ab}',
+ GC_Extend), ('\u{116ac}', '\u{116ac}', GC_SpacingMark), ('\u{116ad}', '\u{116ad}',
+ GC_Extend), ('\u{116ae}', '\u{116af}', GC_SpacingMark), ('\u{116b0}', '\u{116b5}',
+ GC_Extend), ('\u{116b6}', '\u{116b6}', GC_SpacingMark), ('\u{116b7}', '\u{116b7}',
+ GC_Extend), ('\u{1171d}', '\u{1171f}', GC_Extend), ('\u{11722}', '\u{11725}', GC_Extend),
+ ('\u{11726}', '\u{11726}', GC_SpacingMark), ('\u{11727}', '\u{1172b}', GC_Extend),
+ ('\u{1182c}', '\u{1182e}', GC_SpacingMark), ('\u{1182f}', '\u{11837}', GC_Extend),
+ ('\u{11838}', '\u{11838}', GC_SpacingMark), ('\u{11839}', '\u{1183a}', GC_Extend),
+ ('\u{11930}', '\u{11930}', GC_Extend), ('\u{11931}', '\u{11935}', GC_SpacingMark),
+ ('\u{11937}', '\u{11938}', GC_SpacingMark), ('\u{1193b}', '\u{1193c}', GC_Extend),
+ ('\u{1193d}', '\u{1193d}', GC_SpacingMark), ('\u{1193e}', '\u{1193e}', GC_Extend),
+ ('\u{1193f}', '\u{1193f}', GC_Prepend), ('\u{11940}', '\u{11940}', GC_SpacingMark),
+ ('\u{11941}', '\u{11941}', GC_Prepend), ('\u{11942}', '\u{11942}', GC_SpacingMark),
+ ('\u{11943}', '\u{11943}', GC_Extend), ('\u{119d1}', '\u{119d3}', GC_SpacingMark),
+ ('\u{119d4}', '\u{119d7}', GC_Extend), ('\u{119da}', '\u{119db}', GC_Extend), ('\u{119dc}',
+ '\u{119df}', GC_SpacingMark), ('\u{119e0}', '\u{119e0}', GC_Extend), ('\u{119e4}',
+ '\u{119e4}', GC_SpacingMark), ('\u{11a01}', '\u{11a0a}', GC_Extend), ('\u{11a33}',
+ '\u{11a38}', GC_Extend), ('\u{11a39}', '\u{11a39}', GC_SpacingMark), ('\u{11a3a}',
+ '\u{11a3a}', GC_Prepend), ('\u{11a3b}', '\u{11a3e}', GC_Extend), ('\u{11a47}', '\u{11a47}',
+ GC_Extend), ('\u{11a51}', '\u{11a56}', GC_Extend), ('\u{11a57}', '\u{11a58}',
+ GC_SpacingMark), ('\u{11a59}', '\u{11a5b}', GC_Extend), ('\u{11a84}', '\u{11a89}',
+ GC_Prepend), ('\u{11a8a}', '\u{11a96}', GC_Extend), ('\u{11a97}', '\u{11a97}',
+ GC_SpacingMark), ('\u{11a98}', '\u{11a99}', GC_Extend), ('\u{11c2f}', '\u{11c2f}',
+ GC_SpacingMark), ('\u{11c30}', '\u{11c36}', GC_Extend), ('\u{11c38}', '\u{11c3d}',
+ GC_Extend), ('\u{11c3e}', '\u{11c3e}', GC_SpacingMark), ('\u{11c3f}', '\u{11c3f}',
+ GC_Extend), ('\u{11c92}', '\u{11ca7}', GC_Extend), ('\u{11ca9}', '\u{11ca9}',
GC_SpacingMark), ('\u{11caa}', '\u{11cb0}', GC_Extend), ('\u{11cb1}', '\u{11cb1}',
GC_SpacingMark), ('\u{11cb2}', '\u{11cb3}', GC_Extend), ('\u{11cb4}', '\u{11cb4}',
GC_SpacingMark), ('\u{11cb5}', '\u{11cb6}', GC_Extend), ('\u{11d31}', '\u{11d36}',
@@ -943,45 +949,52 @@ pub mod grapheme {
'\u{11d91}', GC_Extend), ('\u{11d93}', '\u{11d94}', GC_SpacingMark), ('\u{11d95}',
'\u{11d95}', GC_Extend), ('\u{11d96}', '\u{11d96}', GC_SpacingMark), ('\u{11d97}',
'\u{11d97}', GC_Extend), ('\u{11ef3}', '\u{11ef4}', GC_Extend), ('\u{11ef5}', '\u{11ef6}',
- GC_SpacingMark), ('\u{13430}', '\u{13438}', GC_Control), ('\u{16af0}', '\u{16af4}',
- GC_Extend), ('\u{16b30}', '\u{16b36}', GC_Extend), ('\u{16f4f}', '\u{16f4f}', GC_Extend),
- ('\u{16f51}', '\u{16f87}', GC_SpacingMark), ('\u{16f8f}', '\u{16f92}', GC_Extend),
- ('\u{16fe4}', '\u{16fe4}', GC_Extend), ('\u{16ff0}', '\u{16ff1}', GC_SpacingMark),
- ('\u{1bc9d}', '\u{1bc9e}', GC_Extend), ('\u{1bca0}', '\u{1bca3}', GC_Control), ('\u{1cf00}',
- '\u{1cf2d}', GC_Extend), ('\u{1cf30}', '\u{1cf46}', GC_Extend), ('\u{1d165}', '\u{1d165}',
- GC_Extend), ('\u{1d166}', '\u{1d166}', GC_SpacingMark), ('\u{1d167}', '\u{1d169}',
- GC_Extend), ('\u{1d16d}', '\u{1d16d}', GC_SpacingMark), ('\u{1d16e}', '\u{1d172}',
- GC_Extend), ('\u{1d173}', '\u{1d17a}', GC_Control), ('\u{1d17b}', '\u{1d182}', GC_Extend),
- ('\u{1d185}', '\u{1d18b}', GC_Extend), ('\u{1d1aa}', '\u{1d1ad}', GC_Extend), ('\u{1d242}',
- '\u{1d244}', GC_Extend), ('\u{1da00}', '\u{1da36}', GC_Extend), ('\u{1da3b}', '\u{1da6c}',
- GC_Extend), ('\u{1da75}', '\u{1da75}', GC_Extend), ('\u{1da84}', '\u{1da84}', GC_Extend),
- ('\u{1da9b}', '\u{1da9f}', GC_Extend), ('\u{1daa1}', '\u{1daaf}', GC_Extend), ('\u{1e000}',
- '\u{1e006}', GC_Extend), ('\u{1e008}', '\u{1e018}', GC_Extend), ('\u{1e01b}', '\u{1e021}',
- GC_Extend), ('\u{1e023}', '\u{1e024}', GC_Extend), ('\u{1e026}', '\u{1e02a}', GC_Extend),
- ('\u{1e130}', '\u{1e136}', GC_Extend), ('\u{1e2ae}', '\u{1e2ae}', GC_Extend), ('\u{1e2ec}',
- '\u{1e2ef}', GC_Extend), ('\u{1e8d0}', '\u{1e8d6}', GC_Extend), ('\u{1e944}', '\u{1e94a}',
- GC_Extend), ('\u{1f000}', '\u{1f0ff}', GC_Extended_Pictographic), ('\u{1f10d}', '\u{1f10f}',
- GC_Extended_Pictographic), ('\u{1f12f}', '\u{1f12f}', GC_Extended_Pictographic),
- ('\u{1f16c}', '\u{1f171}', GC_Extended_Pictographic), ('\u{1f17e}', '\u{1f17f}',
- GC_Extended_Pictographic), ('\u{1f18e}', '\u{1f18e}', GC_Extended_Pictographic),
- ('\u{1f191}', '\u{1f19a}', GC_Extended_Pictographic), ('\u{1f1ad}', '\u{1f1e5}',
- GC_Extended_Pictographic), ('\u{1f1e6}', '\u{1f1ff}', GC_Regional_Indicator), ('\u{1f201}',
- '\u{1f20f}', GC_Extended_Pictographic), ('\u{1f21a}', '\u{1f21a}',
- GC_Extended_Pictographic), ('\u{1f22f}', '\u{1f22f}', GC_Extended_Pictographic),
- ('\u{1f232}', '\u{1f23a}', GC_Extended_Pictographic), ('\u{1f23c}', '\u{1f23f}',
- GC_Extended_Pictographic), ('\u{1f249}', '\u{1f3fa}', GC_Extended_Pictographic),
- ('\u{1f3fb}', '\u{1f3ff}', GC_Extend), ('\u{1f400}', '\u{1f53d}', GC_Extended_Pictographic),
- ('\u{1f546}', '\u{1f64f}', GC_Extended_Pictographic), ('\u{1f680}', '\u{1f6ff}',
- GC_Extended_Pictographic), ('\u{1f774}', '\u{1f77f}', GC_Extended_Pictographic),
- ('\u{1f7d5}', '\u{1f7ff}', GC_Extended_Pictographic), ('\u{1f80c}', '\u{1f80f}',
- GC_Extended_Pictographic), ('\u{1f848}', '\u{1f84f}', GC_Extended_Pictographic),
- ('\u{1f85a}', '\u{1f85f}', GC_Extended_Pictographic), ('\u{1f888}', '\u{1f88f}',
- GC_Extended_Pictographic), ('\u{1f8ae}', '\u{1f8ff}', GC_Extended_Pictographic),
- ('\u{1f90c}', '\u{1f93a}', GC_Extended_Pictographic), ('\u{1f93c}', '\u{1f945}',
- GC_Extended_Pictographic), ('\u{1f947}', '\u{1faff}', GC_Extended_Pictographic),
- ('\u{1fc00}', '\u{1fffd}', GC_Extended_Pictographic), ('\u{e0000}', '\u{e001f}',
- GC_Control), ('\u{e0020}', '\u{e007f}', GC_Extend), ('\u{e0080}', '\u{e00ff}', GC_Control),
- ('\u{e0100}', '\u{e01ef}', GC_Extend), ('\u{e01f0}', '\u{e0fff}', GC_Control)
+ GC_SpacingMark), ('\u{11f00}', '\u{11f01}', GC_Extend), ('\u{11f02}', '\u{11f02}',
+ GC_Prepend), ('\u{11f03}', '\u{11f03}', GC_SpacingMark), ('\u{11f34}', '\u{11f35}',
+ GC_SpacingMark), ('\u{11f36}', '\u{11f3a}', GC_Extend), ('\u{11f3e}', '\u{11f3f}',
+ GC_SpacingMark), ('\u{11f40}', '\u{11f40}', GC_Extend), ('\u{11f41}', '\u{11f41}',
+ GC_SpacingMark), ('\u{11f42}', '\u{11f42}', GC_Extend), ('\u{13430}', '\u{1343f}',
+ GC_Control), ('\u{13440}', '\u{13440}', GC_Extend), ('\u{13447}', '\u{13455}', GC_Extend),
+ ('\u{16af0}', '\u{16af4}', GC_Extend), ('\u{16b30}', '\u{16b36}', GC_Extend), ('\u{16f4f}',
+ '\u{16f4f}', GC_Extend), ('\u{16f51}', '\u{16f87}', GC_SpacingMark), ('\u{16f8f}',
+ '\u{16f92}', GC_Extend), ('\u{16fe4}', '\u{16fe4}', GC_Extend), ('\u{16ff0}', '\u{16ff1}',
+ GC_SpacingMark), ('\u{1bc9d}', '\u{1bc9e}', GC_Extend), ('\u{1bca0}', '\u{1bca3}',
+ GC_Control), ('\u{1cf00}', '\u{1cf2d}', GC_Extend), ('\u{1cf30}', '\u{1cf46}', GC_Extend),
+ ('\u{1d165}', '\u{1d165}', GC_Extend), ('\u{1d166}', '\u{1d166}', GC_SpacingMark),
+ ('\u{1d167}', '\u{1d169}', GC_Extend), ('\u{1d16d}', '\u{1d16d}', GC_SpacingMark),
+ ('\u{1d16e}', '\u{1d172}', GC_Extend), ('\u{1d173}', '\u{1d17a}', GC_Control), ('\u{1d17b}',
+ '\u{1d182}', GC_Extend), ('\u{1d185}', '\u{1d18b}', GC_Extend), ('\u{1d1aa}', '\u{1d1ad}',
+ GC_Extend), ('\u{1d242}', '\u{1d244}', GC_Extend), ('\u{1da00}', '\u{1da36}', GC_Extend),
+ ('\u{1da3b}', '\u{1da6c}', GC_Extend), ('\u{1da75}', '\u{1da75}', GC_Extend), ('\u{1da84}',
+ '\u{1da84}', GC_Extend), ('\u{1da9b}', '\u{1da9f}', GC_Extend), ('\u{1daa1}', '\u{1daaf}',
+ GC_Extend), ('\u{1e000}', '\u{1e006}', GC_Extend), ('\u{1e008}', '\u{1e018}', GC_Extend),
+ ('\u{1e01b}', '\u{1e021}', GC_Extend), ('\u{1e023}', '\u{1e024}', GC_Extend), ('\u{1e026}',
+ '\u{1e02a}', GC_Extend), ('\u{1e08f}', '\u{1e08f}', GC_Extend), ('\u{1e130}', '\u{1e136}',
+ GC_Extend), ('\u{1e2ae}', '\u{1e2ae}', GC_Extend), ('\u{1e2ec}', '\u{1e2ef}', GC_Extend),
+ ('\u{1e4ec}', '\u{1e4ef}', GC_Extend), ('\u{1e8d0}', '\u{1e8d6}', GC_Extend), ('\u{1e944}',
+ '\u{1e94a}', GC_Extend), ('\u{1f000}', '\u{1f0ff}', GC_Extended_Pictographic), ('\u{1f10d}',
+ '\u{1f10f}', GC_Extended_Pictographic), ('\u{1f12f}', '\u{1f12f}',
+ GC_Extended_Pictographic), ('\u{1f16c}', '\u{1f171}', GC_Extended_Pictographic),
+ ('\u{1f17e}', '\u{1f17f}', GC_Extended_Pictographic), ('\u{1f18e}', '\u{1f18e}',
+ GC_Extended_Pictographic), ('\u{1f191}', '\u{1f19a}', GC_Extended_Pictographic),
+ ('\u{1f1ad}', '\u{1f1e5}', GC_Extended_Pictographic), ('\u{1f1e6}', '\u{1f1ff}',
+ GC_Regional_Indicator), ('\u{1f201}', '\u{1f20f}', GC_Extended_Pictographic), ('\u{1f21a}',
+ '\u{1f21a}', GC_Extended_Pictographic), ('\u{1f22f}', '\u{1f22f}',
+ GC_Extended_Pictographic), ('\u{1f232}', '\u{1f23a}', GC_Extended_Pictographic),
+ ('\u{1f23c}', '\u{1f23f}', GC_Extended_Pictographic), ('\u{1f249}', '\u{1f3fa}',
+ GC_Extended_Pictographic), ('\u{1f3fb}', '\u{1f3ff}', GC_Extend), ('\u{1f400}', '\u{1f53d}',
+ GC_Extended_Pictographic), ('\u{1f546}', '\u{1f64f}', GC_Extended_Pictographic),
+ ('\u{1f680}', '\u{1f6ff}', GC_Extended_Pictographic), ('\u{1f774}', '\u{1f77f}',
+ GC_Extended_Pictographic), ('\u{1f7d5}', '\u{1f7ff}', GC_Extended_Pictographic),
+ ('\u{1f80c}', '\u{1f80f}', GC_Extended_Pictographic), ('\u{1f848}', '\u{1f84f}',
+ GC_Extended_Pictographic), ('\u{1f85a}', '\u{1f85f}', GC_Extended_Pictographic),
+ ('\u{1f888}', '\u{1f88f}', GC_Extended_Pictographic), ('\u{1f8ae}', '\u{1f8ff}',
+ GC_Extended_Pictographic), ('\u{1f90c}', '\u{1f93a}', GC_Extended_Pictographic),
+ ('\u{1f93c}', '\u{1f945}', GC_Extended_Pictographic), ('\u{1f947}', '\u{1faff}',
+ GC_Extended_Pictographic), ('\u{1fc00}', '\u{1fffd}', GC_Extended_Pictographic),
+ ('\u{e0000}', '\u{e001f}', GC_Control), ('\u{e0020}', '\u{e007f}', GC_Extend), ('\u{e0080}',
+ '\u{e00ff}', GC_Control), ('\u{e0100}', '\u{e01ef}', GC_Extend), ('\u{e01f0}', '\u{e0fff}',
+ GC_Control)
];
}
@@ -1146,171 +1159,171 @@ pub mod word {
'\u{cc8}', WC_Extend), ('\u{cca}', '\u{ccd}', WC_Extend), ('\u{cd5}', '\u{cd6}', WC_Extend),
('\u{cdd}', '\u{cde}', WC_ALetter), ('\u{ce0}', '\u{ce1}', WC_ALetter), ('\u{ce2}',
'\u{ce3}', WC_Extend), ('\u{ce6}', '\u{cef}', WC_Numeric), ('\u{cf1}', '\u{cf2}',
- WC_ALetter), ('\u{d00}', '\u{d03}', WC_Extend), ('\u{d04}', '\u{d0c}', WC_ALetter),
- ('\u{d0e}', '\u{d10}', WC_ALetter), ('\u{d12}', '\u{d3a}', WC_ALetter), ('\u{d3b}',
- '\u{d3c}', WC_Extend), ('\u{d3d}', '\u{d3d}', WC_ALetter), ('\u{d3e}', '\u{d44}',
- WC_Extend), ('\u{d46}', '\u{d48}', WC_Extend), ('\u{d4a}', '\u{d4d}', WC_Extend),
- ('\u{d4e}', '\u{d4e}', WC_ALetter), ('\u{d54}', '\u{d56}', WC_ALetter), ('\u{d57}',
- '\u{d57}', WC_Extend), ('\u{d5f}', '\u{d61}', WC_ALetter), ('\u{d62}', '\u{d63}',
- WC_Extend), ('\u{d66}', '\u{d6f}', WC_Numeric), ('\u{d7a}', '\u{d7f}', WC_ALetter),
- ('\u{d81}', '\u{d83}', WC_Extend), ('\u{d85}', '\u{d96}', WC_ALetter), ('\u{d9a}',
- '\u{db1}', WC_ALetter), ('\u{db3}', '\u{dbb}', WC_ALetter), ('\u{dbd}', '\u{dbd}',
- WC_ALetter), ('\u{dc0}', '\u{dc6}', WC_ALetter), ('\u{dca}', '\u{dca}', WC_Extend),
- ('\u{dcf}', '\u{dd4}', WC_Extend), ('\u{dd6}', '\u{dd6}', WC_Extend), ('\u{dd8}', '\u{ddf}',
- WC_Extend), ('\u{de6}', '\u{def}', WC_Numeric), ('\u{df2}', '\u{df3}', WC_Extend),
- ('\u{e31}', '\u{e31}', WC_Extend), ('\u{e34}', '\u{e3a}', WC_Extend), ('\u{e47}', '\u{e4e}',
- WC_Extend), ('\u{e50}', '\u{e59}', WC_Numeric), ('\u{eb1}', '\u{eb1}', WC_Extend),
- ('\u{eb4}', '\u{ebc}', WC_Extend), ('\u{ec8}', '\u{ecd}', WC_Extend), ('\u{ed0}', '\u{ed9}',
- WC_Numeric), ('\u{f00}', '\u{f00}', WC_ALetter), ('\u{f18}', '\u{f19}', WC_Extend),
- ('\u{f20}', '\u{f29}', WC_Numeric), ('\u{f35}', '\u{f35}', WC_Extend), ('\u{f37}',
- '\u{f37}', WC_Extend), ('\u{f39}', '\u{f39}', WC_Extend), ('\u{f3e}', '\u{f3f}', WC_Extend),
- ('\u{f40}', '\u{f47}', WC_ALetter), ('\u{f49}', '\u{f6c}', WC_ALetter), ('\u{f71}',
- '\u{f84}', WC_Extend), ('\u{f86}', '\u{f87}', WC_Extend), ('\u{f88}', '\u{f8c}',
- WC_ALetter), ('\u{f8d}', '\u{f97}', WC_Extend), ('\u{f99}', '\u{fbc}', WC_Extend),
- ('\u{fc6}', '\u{fc6}', WC_Extend), ('\u{102b}', '\u{103e}', WC_Extend), ('\u{1040}',
- '\u{1049}', WC_Numeric), ('\u{1056}', '\u{1059}', WC_Extend), ('\u{105e}', '\u{1060}',
- WC_Extend), ('\u{1062}', '\u{1064}', WC_Extend), ('\u{1067}', '\u{106d}', WC_Extend),
- ('\u{1071}', '\u{1074}', WC_Extend), ('\u{1082}', '\u{108d}', WC_Extend), ('\u{108f}',
- '\u{108f}', WC_Extend), ('\u{1090}', '\u{1099}', WC_Numeric), ('\u{109a}', '\u{109d}',
- WC_Extend), ('\u{10a0}', '\u{10c5}', WC_ALetter), ('\u{10c7}', '\u{10c7}', WC_ALetter),
- ('\u{10cd}', '\u{10cd}', WC_ALetter), ('\u{10d0}', '\u{10fa}', WC_ALetter), ('\u{10fc}',
- '\u{1248}', WC_ALetter), ('\u{124a}', '\u{124d}', WC_ALetter), ('\u{1250}', '\u{1256}',
- WC_ALetter), ('\u{1258}', '\u{1258}', WC_ALetter), ('\u{125a}', '\u{125d}', WC_ALetter),
- ('\u{1260}', '\u{1288}', WC_ALetter), ('\u{128a}', '\u{128d}', WC_ALetter), ('\u{1290}',
- '\u{12b0}', WC_ALetter), ('\u{12b2}', '\u{12b5}', WC_ALetter), ('\u{12b8}', '\u{12be}',
- WC_ALetter), ('\u{12c0}', '\u{12c0}', WC_ALetter), ('\u{12c2}', '\u{12c5}', WC_ALetter),
- ('\u{12c8}', '\u{12d6}', WC_ALetter), ('\u{12d8}', '\u{1310}', WC_ALetter), ('\u{1312}',
- '\u{1315}', WC_ALetter), ('\u{1318}', '\u{135a}', WC_ALetter), ('\u{135d}', '\u{135f}',
- WC_Extend), ('\u{1380}', '\u{138f}', WC_ALetter), ('\u{13a0}', '\u{13f5}', WC_ALetter),
- ('\u{13f8}', '\u{13fd}', WC_ALetter), ('\u{1401}', '\u{166c}', WC_ALetter), ('\u{166f}',
- '\u{167f}', WC_ALetter), ('\u{1680}', '\u{1680}', WC_WSegSpace), ('\u{1681}', '\u{169a}',
- WC_ALetter), ('\u{16a0}', '\u{16ea}', WC_ALetter), ('\u{16ee}', '\u{16f8}', WC_ALetter),
- ('\u{1700}', '\u{1711}', WC_ALetter), ('\u{1712}', '\u{1715}', WC_Extend), ('\u{171f}',
- '\u{1731}', WC_ALetter), ('\u{1732}', '\u{1734}', WC_Extend), ('\u{1740}', '\u{1751}',
- WC_ALetter), ('\u{1752}', '\u{1753}', WC_Extend), ('\u{1760}', '\u{176c}', WC_ALetter),
- ('\u{176e}', '\u{1770}', WC_ALetter), ('\u{1772}', '\u{1773}', WC_Extend), ('\u{17b4}',
- '\u{17d3}', WC_Extend), ('\u{17dd}', '\u{17dd}', WC_Extend), ('\u{17e0}', '\u{17e9}',
- WC_Numeric), ('\u{180b}', '\u{180d}', WC_Extend), ('\u{180e}', '\u{180e}', WC_Format),
- ('\u{180f}', '\u{180f}', WC_Extend), ('\u{1810}', '\u{1819}', WC_Numeric), ('\u{1820}',
- '\u{1878}', WC_ALetter), ('\u{1880}', '\u{1884}', WC_ALetter), ('\u{1885}', '\u{1886}',
- WC_Extend), ('\u{1887}', '\u{18a8}', WC_ALetter), ('\u{18a9}', '\u{18a9}', WC_Extend),
- ('\u{18aa}', '\u{18aa}', WC_ALetter), ('\u{18b0}', '\u{18f5}', WC_ALetter), ('\u{1900}',
- '\u{191e}', WC_ALetter), ('\u{1920}', '\u{192b}', WC_Extend), ('\u{1930}', '\u{193b}',
- WC_Extend), ('\u{1946}', '\u{194f}', WC_Numeric), ('\u{19d0}', '\u{19d9}', WC_Numeric),
- ('\u{1a00}', '\u{1a16}', WC_ALetter), ('\u{1a17}', '\u{1a1b}', WC_Extend), ('\u{1a55}',
- '\u{1a5e}', WC_Extend), ('\u{1a60}', '\u{1a7c}', WC_Extend), ('\u{1a7f}', '\u{1a7f}',
- WC_Extend), ('\u{1a80}', '\u{1a89}', WC_Numeric), ('\u{1a90}', '\u{1a99}', WC_Numeric),
- ('\u{1ab0}', '\u{1ace}', WC_Extend), ('\u{1b00}', '\u{1b04}', WC_Extend), ('\u{1b05}',
- '\u{1b33}', WC_ALetter), ('\u{1b34}', '\u{1b44}', WC_Extend), ('\u{1b45}', '\u{1b4c}',
- WC_ALetter), ('\u{1b50}', '\u{1b59}', WC_Numeric), ('\u{1b6b}', '\u{1b73}', WC_Extend),
- ('\u{1b80}', '\u{1b82}', WC_Extend), ('\u{1b83}', '\u{1ba0}', WC_ALetter), ('\u{1ba1}',
- '\u{1bad}', WC_Extend), ('\u{1bae}', '\u{1baf}', WC_ALetter), ('\u{1bb0}', '\u{1bb9}',
- WC_Numeric), ('\u{1bba}', '\u{1be5}', WC_ALetter), ('\u{1be6}', '\u{1bf3}', WC_Extend),
- ('\u{1c00}', '\u{1c23}', WC_ALetter), ('\u{1c24}', '\u{1c37}', WC_Extend), ('\u{1c40}',
- '\u{1c49}', WC_Numeric), ('\u{1c4d}', '\u{1c4f}', WC_ALetter), ('\u{1c50}', '\u{1c59}',
- WC_Numeric), ('\u{1c5a}', '\u{1c7d}', WC_ALetter), ('\u{1c80}', '\u{1c88}', WC_ALetter),
- ('\u{1c90}', '\u{1cba}', WC_ALetter), ('\u{1cbd}', '\u{1cbf}', WC_ALetter), ('\u{1cd0}',
- '\u{1cd2}', WC_Extend), ('\u{1cd4}', '\u{1ce8}', WC_Extend), ('\u{1ce9}', '\u{1cec}',
- WC_ALetter), ('\u{1ced}', '\u{1ced}', WC_Extend), ('\u{1cee}', '\u{1cf3}', WC_ALetter),
- ('\u{1cf4}', '\u{1cf4}', WC_Extend), ('\u{1cf5}', '\u{1cf6}', WC_ALetter), ('\u{1cf7}',
- '\u{1cf9}', WC_Extend), ('\u{1cfa}', '\u{1cfa}', WC_ALetter), ('\u{1d00}', '\u{1dbf}',
- WC_ALetter), ('\u{1dc0}', '\u{1dff}', WC_Extend), ('\u{1e00}', '\u{1f15}', WC_ALetter),
- ('\u{1f18}', '\u{1f1d}', WC_ALetter), ('\u{1f20}', '\u{1f45}', WC_ALetter), ('\u{1f48}',
- '\u{1f4d}', WC_ALetter), ('\u{1f50}', '\u{1f57}', WC_ALetter), ('\u{1f59}', '\u{1f59}',
- WC_ALetter), ('\u{1f5b}', '\u{1f5b}', WC_ALetter), ('\u{1f5d}', '\u{1f5d}', WC_ALetter),
- ('\u{1f5f}', '\u{1f7d}', WC_ALetter), ('\u{1f80}', '\u{1fb4}', WC_ALetter), ('\u{1fb6}',
- '\u{1fbc}', WC_ALetter), ('\u{1fbe}', '\u{1fbe}', WC_ALetter), ('\u{1fc2}', '\u{1fc4}',
- WC_ALetter), ('\u{1fc6}', '\u{1fcc}', WC_ALetter), ('\u{1fd0}', '\u{1fd3}', WC_ALetter),
- ('\u{1fd6}', '\u{1fdb}', WC_ALetter), ('\u{1fe0}', '\u{1fec}', WC_ALetter), ('\u{1ff2}',
- '\u{1ff4}', WC_ALetter), ('\u{1ff6}', '\u{1ffc}', WC_ALetter), ('\u{2000}', '\u{2006}',
- WC_WSegSpace), ('\u{2008}', '\u{200a}', WC_WSegSpace), ('\u{200c}', '\u{200c}', WC_Extend),
- ('\u{200d}', '\u{200d}', WC_ZWJ), ('\u{200e}', '\u{200f}', WC_Format), ('\u{2018}',
- '\u{2019}', WC_MidNumLet), ('\u{2024}', '\u{2024}', WC_MidNumLet), ('\u{2027}', '\u{2027}',
- WC_MidLetter), ('\u{2028}', '\u{2029}', WC_Newline), ('\u{202a}', '\u{202e}', WC_Format),
- ('\u{202f}', '\u{202f}', WC_ExtendNumLet), ('\u{203f}', '\u{2040}', WC_ExtendNumLet),
- ('\u{2044}', '\u{2044}', WC_MidNum), ('\u{2054}', '\u{2054}', WC_ExtendNumLet), ('\u{205f}',
- '\u{205f}', WC_WSegSpace), ('\u{2060}', '\u{2064}', WC_Format), ('\u{2066}', '\u{206f}',
- WC_Format), ('\u{2071}', '\u{2071}', WC_ALetter), ('\u{207f}', '\u{207f}', WC_ALetter),
- ('\u{2090}', '\u{209c}', WC_ALetter), ('\u{20d0}', '\u{20f0}', WC_Extend), ('\u{2102}',
- '\u{2102}', WC_ALetter), ('\u{2107}', '\u{2107}', WC_ALetter), ('\u{210a}', '\u{2113}',
- WC_ALetter), ('\u{2115}', '\u{2115}', WC_ALetter), ('\u{2119}', '\u{211d}', WC_ALetter),
- ('\u{2124}', '\u{2124}', WC_ALetter), ('\u{2126}', '\u{2126}', WC_ALetter), ('\u{2128}',
- '\u{2128}', WC_ALetter), ('\u{212a}', '\u{212d}', WC_ALetter), ('\u{212f}', '\u{2139}',
- WC_ALetter), ('\u{213c}', '\u{213f}', WC_ALetter), ('\u{2145}', '\u{2149}', WC_ALetter),
- ('\u{214e}', '\u{214e}', WC_ALetter), ('\u{2160}', '\u{2188}', WC_ALetter), ('\u{24b6}',
- '\u{24e9}', WC_ALetter), ('\u{2c00}', '\u{2ce4}', WC_ALetter), ('\u{2ceb}', '\u{2cee}',
- WC_ALetter), ('\u{2cef}', '\u{2cf1}', WC_Extend), ('\u{2cf2}', '\u{2cf3}', WC_ALetter),
- ('\u{2d00}', '\u{2d25}', WC_ALetter), ('\u{2d27}', '\u{2d27}', WC_ALetter), ('\u{2d2d}',
- '\u{2d2d}', WC_ALetter), ('\u{2d30}', '\u{2d67}', WC_ALetter), ('\u{2d6f}', '\u{2d6f}',
- WC_ALetter), ('\u{2d7f}', '\u{2d7f}', WC_Extend), ('\u{2d80}', '\u{2d96}', WC_ALetter),
- ('\u{2da0}', '\u{2da6}', WC_ALetter), ('\u{2da8}', '\u{2dae}', WC_ALetter), ('\u{2db0}',
- '\u{2db6}', WC_ALetter), ('\u{2db8}', '\u{2dbe}', WC_ALetter), ('\u{2dc0}', '\u{2dc6}',
- WC_ALetter), ('\u{2dc8}', '\u{2dce}', WC_ALetter), ('\u{2dd0}', '\u{2dd6}', WC_ALetter),
- ('\u{2dd8}', '\u{2dde}', WC_ALetter), ('\u{2de0}', '\u{2dff}', WC_Extend), ('\u{2e2f}',
- '\u{2e2f}', WC_ALetter), ('\u{3000}', '\u{3000}', WC_WSegSpace), ('\u{3005}', '\u{3005}',
- WC_ALetter), ('\u{302a}', '\u{302f}', WC_Extend), ('\u{3031}', '\u{3035}', WC_Katakana),
- ('\u{303b}', '\u{303c}', WC_ALetter), ('\u{3099}', '\u{309a}', WC_Extend), ('\u{309b}',
- '\u{309c}', WC_Katakana), ('\u{30a0}', '\u{30fa}', WC_Katakana), ('\u{30fc}', '\u{30ff}',
- WC_Katakana), ('\u{3105}', '\u{312f}', WC_ALetter), ('\u{3131}', '\u{318e}', WC_ALetter),
- ('\u{31a0}', '\u{31bf}', WC_ALetter), ('\u{31f0}', '\u{31ff}', WC_Katakana), ('\u{32d0}',
- '\u{32fe}', WC_Katakana), ('\u{3300}', '\u{3357}', WC_Katakana), ('\u{a000}', '\u{a48c}',
- WC_ALetter), ('\u{a4d0}', '\u{a4fd}', WC_ALetter), ('\u{a500}', '\u{a60c}', WC_ALetter),
- ('\u{a610}', '\u{a61f}', WC_ALetter), ('\u{a620}', '\u{a629}', WC_Numeric), ('\u{a62a}',
- '\u{a62b}', WC_ALetter), ('\u{a640}', '\u{a66e}', WC_ALetter), ('\u{a66f}', '\u{a672}',
- WC_Extend), ('\u{a674}', '\u{a67d}', WC_Extend), ('\u{a67f}', '\u{a69d}', WC_ALetter),
- ('\u{a69e}', '\u{a69f}', WC_Extend), ('\u{a6a0}', '\u{a6ef}', WC_ALetter), ('\u{a6f0}',
- '\u{a6f1}', WC_Extend), ('\u{a708}', '\u{a7ca}', WC_ALetter), ('\u{a7d0}', '\u{a7d1}',
- WC_ALetter), ('\u{a7d3}', '\u{a7d3}', WC_ALetter), ('\u{a7d5}', '\u{a7d9}', WC_ALetter),
- ('\u{a7f2}', '\u{a801}', WC_ALetter), ('\u{a802}', '\u{a802}', WC_Extend), ('\u{a803}',
- '\u{a805}', WC_ALetter), ('\u{a806}', '\u{a806}', WC_Extend), ('\u{a807}', '\u{a80a}',
- WC_ALetter), ('\u{a80b}', '\u{a80b}', WC_Extend), ('\u{a80c}', '\u{a822}', WC_ALetter),
- ('\u{a823}', '\u{a827}', WC_Extend), ('\u{a82c}', '\u{a82c}', WC_Extend), ('\u{a840}',
- '\u{a873}', WC_ALetter), ('\u{a880}', '\u{a881}', WC_Extend), ('\u{a882}', '\u{a8b3}',
- WC_ALetter), ('\u{a8b4}', '\u{a8c5}', WC_Extend), ('\u{a8d0}', '\u{a8d9}', WC_Numeric),
- ('\u{a8e0}', '\u{a8f1}', WC_Extend), ('\u{a8f2}', '\u{a8f7}', WC_ALetter), ('\u{a8fb}',
- '\u{a8fb}', WC_ALetter), ('\u{a8fd}', '\u{a8fe}', WC_ALetter), ('\u{a8ff}', '\u{a8ff}',
- WC_Extend), ('\u{a900}', '\u{a909}', WC_Numeric), ('\u{a90a}', '\u{a925}', WC_ALetter),
- ('\u{a926}', '\u{a92d}', WC_Extend), ('\u{a930}', '\u{a946}', WC_ALetter), ('\u{a947}',
- '\u{a953}', WC_Extend), ('\u{a960}', '\u{a97c}', WC_ALetter), ('\u{a980}', '\u{a983}',
- WC_Extend), ('\u{a984}', '\u{a9b2}', WC_ALetter), ('\u{a9b3}', '\u{a9c0}', WC_Extend),
- ('\u{a9cf}', '\u{a9cf}', WC_ALetter), ('\u{a9d0}', '\u{a9d9}', WC_Numeric), ('\u{a9e5}',
- '\u{a9e5}', WC_Extend), ('\u{a9f0}', '\u{a9f9}', WC_Numeric), ('\u{aa00}', '\u{aa28}',
- WC_ALetter), ('\u{aa29}', '\u{aa36}', WC_Extend), ('\u{aa40}', '\u{aa42}', WC_ALetter),
- ('\u{aa43}', '\u{aa43}', WC_Extend), ('\u{aa44}', '\u{aa4b}', WC_ALetter), ('\u{aa4c}',
- '\u{aa4d}', WC_Extend), ('\u{aa50}', '\u{aa59}', WC_Numeric), ('\u{aa7b}', '\u{aa7d}',
- WC_Extend), ('\u{aab0}', '\u{aab0}', WC_Extend), ('\u{aab2}', '\u{aab4}', WC_Extend),
- ('\u{aab7}', '\u{aab8}', WC_Extend), ('\u{aabe}', '\u{aabf}', WC_Extend), ('\u{aac1}',
- '\u{aac1}', WC_Extend), ('\u{aae0}', '\u{aaea}', WC_ALetter), ('\u{aaeb}', '\u{aaef}',
- WC_Extend), ('\u{aaf2}', '\u{aaf4}', WC_ALetter), ('\u{aaf5}', '\u{aaf6}', WC_Extend),
- ('\u{ab01}', '\u{ab06}', WC_ALetter), ('\u{ab09}', '\u{ab0e}', WC_ALetter), ('\u{ab11}',
- '\u{ab16}', WC_ALetter), ('\u{ab20}', '\u{ab26}', WC_ALetter), ('\u{ab28}', '\u{ab2e}',
- WC_ALetter), ('\u{ab30}', '\u{ab69}', WC_ALetter), ('\u{ab70}', '\u{abe2}', WC_ALetter),
- ('\u{abe3}', '\u{abea}', WC_Extend), ('\u{abec}', '\u{abed}', WC_Extend), ('\u{abf0}',
- '\u{abf9}', WC_Numeric), ('\u{ac00}', '\u{d7a3}', WC_ALetter), ('\u{d7b0}', '\u{d7c6}',
- WC_ALetter), ('\u{d7cb}', '\u{d7fb}', WC_ALetter), ('\u{fb00}', '\u{fb06}', WC_ALetter),
- ('\u{fb13}', '\u{fb17}', WC_ALetter), ('\u{fb1d}', '\u{fb1d}', WC_Hebrew_Letter),
- ('\u{fb1e}', '\u{fb1e}', WC_Extend), ('\u{fb1f}', '\u{fb28}', WC_Hebrew_Letter),
- ('\u{fb2a}', '\u{fb36}', WC_Hebrew_Letter), ('\u{fb38}', '\u{fb3c}', WC_Hebrew_Letter),
- ('\u{fb3e}', '\u{fb3e}', WC_Hebrew_Letter), ('\u{fb40}', '\u{fb41}', WC_Hebrew_Letter),
- ('\u{fb43}', '\u{fb44}', WC_Hebrew_Letter), ('\u{fb46}', '\u{fb4f}', WC_Hebrew_Letter),
- ('\u{fb50}', '\u{fbb1}', WC_ALetter), ('\u{fbd3}', '\u{fd3d}', WC_ALetter), ('\u{fd50}',
- '\u{fd8f}', WC_ALetter), ('\u{fd92}', '\u{fdc7}', WC_ALetter), ('\u{fdf0}', '\u{fdfb}',
- WC_ALetter), ('\u{fe00}', '\u{fe0f}', WC_Extend), ('\u{fe10}', '\u{fe10}', WC_MidNum),
- ('\u{fe13}', '\u{fe13}', WC_MidLetter), ('\u{fe14}', '\u{fe14}', WC_MidNum), ('\u{fe20}',
- '\u{fe2f}', WC_Extend), ('\u{fe33}', '\u{fe34}', WC_ExtendNumLet), ('\u{fe4d}', '\u{fe4f}',
- WC_ExtendNumLet), ('\u{fe50}', '\u{fe50}', WC_MidNum), ('\u{fe52}', '\u{fe52}',
- WC_MidNumLet), ('\u{fe54}', '\u{fe54}', WC_MidNum), ('\u{fe55}', '\u{fe55}', WC_MidLetter),
- ('\u{fe70}', '\u{fe74}', WC_ALetter), ('\u{fe76}', '\u{fefc}', WC_ALetter), ('\u{feff}',
- '\u{feff}', WC_Format), ('\u{ff07}', '\u{ff07}', WC_MidNumLet), ('\u{ff0c}', '\u{ff0c}',
- WC_MidNum), ('\u{ff0e}', '\u{ff0e}', WC_MidNumLet), ('\u{ff10}', '\u{ff19}', WC_Numeric),
- ('\u{ff1a}', '\u{ff1a}', WC_MidLetter), ('\u{ff1b}', '\u{ff1b}', WC_MidNum), ('\u{ff21}',
- '\u{ff3a}', WC_ALetter), ('\u{ff3f}', '\u{ff3f}', WC_ExtendNumLet), ('\u{ff41}', '\u{ff5a}',
- WC_ALetter), ('\u{ff66}', '\u{ff9d}', WC_Katakana), ('\u{ff9e}', '\u{ff9f}', WC_Extend),
- ('\u{ffa0}', '\u{ffbe}', WC_ALetter), ('\u{ffc2}', '\u{ffc7}', WC_ALetter), ('\u{ffca}',
- '\u{ffcf}', WC_ALetter), ('\u{ffd2}', '\u{ffd7}', WC_ALetter), ('\u{ffda}', '\u{ffdc}',
- WC_ALetter), ('\u{fff9}', '\u{fffb}', WC_Format), ('\u{10000}', '\u{1000b}', WC_ALetter),
- ('\u{1000d}', '\u{10026}', WC_ALetter), ('\u{10028}', '\u{1003a}', WC_ALetter),
- ('\u{1003c}', '\u{1003d}', WC_ALetter), ('\u{1003f}', '\u{1004d}', WC_ALetter),
+ WC_ALetter), ('\u{cf3}', '\u{cf3}', WC_Extend), ('\u{d00}', '\u{d03}', WC_Extend),
+ ('\u{d04}', '\u{d0c}', WC_ALetter), ('\u{d0e}', '\u{d10}', WC_ALetter), ('\u{d12}',
+ '\u{d3a}', WC_ALetter), ('\u{d3b}', '\u{d3c}', WC_Extend), ('\u{d3d}', '\u{d3d}',
+ WC_ALetter), ('\u{d3e}', '\u{d44}', WC_Extend), ('\u{d46}', '\u{d48}', WC_Extend),
+ ('\u{d4a}', '\u{d4d}', WC_Extend), ('\u{d4e}', '\u{d4e}', WC_ALetter), ('\u{d54}',
+ '\u{d56}', WC_ALetter), ('\u{d57}', '\u{d57}', WC_Extend), ('\u{d5f}', '\u{d61}',
+ WC_ALetter), ('\u{d62}', '\u{d63}', WC_Extend), ('\u{d66}', '\u{d6f}', WC_Numeric),
+ ('\u{d7a}', '\u{d7f}', WC_ALetter), ('\u{d81}', '\u{d83}', WC_Extend), ('\u{d85}',
+ '\u{d96}', WC_ALetter), ('\u{d9a}', '\u{db1}', WC_ALetter), ('\u{db3}', '\u{dbb}',
+ WC_ALetter), ('\u{dbd}', '\u{dbd}', WC_ALetter), ('\u{dc0}', '\u{dc6}', WC_ALetter),
+ ('\u{dca}', '\u{dca}', WC_Extend), ('\u{dcf}', '\u{dd4}', WC_Extend), ('\u{dd6}', '\u{dd6}',
+ WC_Extend), ('\u{dd8}', '\u{ddf}', WC_Extend), ('\u{de6}', '\u{def}', WC_Numeric),
+ ('\u{df2}', '\u{df3}', WC_Extend), ('\u{e31}', '\u{e31}', WC_Extend), ('\u{e34}', '\u{e3a}',
+ WC_Extend), ('\u{e47}', '\u{e4e}', WC_Extend), ('\u{e50}', '\u{e59}', WC_Numeric),
+ ('\u{eb1}', '\u{eb1}', WC_Extend), ('\u{eb4}', '\u{ebc}', WC_Extend), ('\u{ec8}', '\u{ece}',
+ WC_Extend), ('\u{ed0}', '\u{ed9}', WC_Numeric), ('\u{f00}', '\u{f00}', WC_ALetter),
+ ('\u{f18}', '\u{f19}', WC_Extend), ('\u{f20}', '\u{f29}', WC_Numeric), ('\u{f35}',
+ '\u{f35}', WC_Extend), ('\u{f37}', '\u{f37}', WC_Extend), ('\u{f39}', '\u{f39}', WC_Extend),
+ ('\u{f3e}', '\u{f3f}', WC_Extend), ('\u{f40}', '\u{f47}', WC_ALetter), ('\u{f49}',
+ '\u{f6c}', WC_ALetter), ('\u{f71}', '\u{f84}', WC_Extend), ('\u{f86}', '\u{f87}',
+ WC_Extend), ('\u{f88}', '\u{f8c}', WC_ALetter), ('\u{f8d}', '\u{f97}', WC_Extend),
+ ('\u{f99}', '\u{fbc}', WC_Extend), ('\u{fc6}', '\u{fc6}', WC_Extend), ('\u{102b}',
+ '\u{103e}', WC_Extend), ('\u{1040}', '\u{1049}', WC_Numeric), ('\u{1056}', '\u{1059}',
+ WC_Extend), ('\u{105e}', '\u{1060}', WC_Extend), ('\u{1062}', '\u{1064}', WC_Extend),
+ ('\u{1067}', '\u{106d}', WC_Extend), ('\u{1071}', '\u{1074}', WC_Extend), ('\u{1082}',
+ '\u{108d}', WC_Extend), ('\u{108f}', '\u{108f}', WC_Extend), ('\u{1090}', '\u{1099}',
+ WC_Numeric), ('\u{109a}', '\u{109d}', WC_Extend), ('\u{10a0}', '\u{10c5}', WC_ALetter),
+ ('\u{10c7}', '\u{10c7}', WC_ALetter), ('\u{10cd}', '\u{10cd}', WC_ALetter), ('\u{10d0}',
+ '\u{10fa}', WC_ALetter), ('\u{10fc}', '\u{1248}', WC_ALetter), ('\u{124a}', '\u{124d}',
+ WC_ALetter), ('\u{1250}', '\u{1256}', WC_ALetter), ('\u{1258}', '\u{1258}', WC_ALetter),
+ ('\u{125a}', '\u{125d}', WC_ALetter), ('\u{1260}', '\u{1288}', WC_ALetter), ('\u{128a}',
+ '\u{128d}', WC_ALetter), ('\u{1290}', '\u{12b0}', WC_ALetter), ('\u{12b2}', '\u{12b5}',
+ WC_ALetter), ('\u{12b8}', '\u{12be}', WC_ALetter), ('\u{12c0}', '\u{12c0}', WC_ALetter),
+ ('\u{12c2}', '\u{12c5}', WC_ALetter), ('\u{12c8}', '\u{12d6}', WC_ALetter), ('\u{12d8}',
+ '\u{1310}', WC_ALetter), ('\u{1312}', '\u{1315}', WC_ALetter), ('\u{1318}', '\u{135a}',
+ WC_ALetter), ('\u{135d}', '\u{135f}', WC_Extend), ('\u{1380}', '\u{138f}', WC_ALetter),
+ ('\u{13a0}', '\u{13f5}', WC_ALetter), ('\u{13f8}', '\u{13fd}', WC_ALetter), ('\u{1401}',
+ '\u{166c}', WC_ALetter), ('\u{166f}', '\u{167f}', WC_ALetter), ('\u{1680}', '\u{1680}',
+ WC_WSegSpace), ('\u{1681}', '\u{169a}', WC_ALetter), ('\u{16a0}', '\u{16ea}', WC_ALetter),
+ ('\u{16ee}', '\u{16f8}', WC_ALetter), ('\u{1700}', '\u{1711}', WC_ALetter), ('\u{1712}',
+ '\u{1715}', WC_Extend), ('\u{171f}', '\u{1731}', WC_ALetter), ('\u{1732}', '\u{1734}',
+ WC_Extend), ('\u{1740}', '\u{1751}', WC_ALetter), ('\u{1752}', '\u{1753}', WC_Extend),
+ ('\u{1760}', '\u{176c}', WC_ALetter), ('\u{176e}', '\u{1770}', WC_ALetter), ('\u{1772}',
+ '\u{1773}', WC_Extend), ('\u{17b4}', '\u{17d3}', WC_Extend), ('\u{17dd}', '\u{17dd}',
+ WC_Extend), ('\u{17e0}', '\u{17e9}', WC_Numeric), ('\u{180b}', '\u{180d}', WC_Extend),
+ ('\u{180e}', '\u{180e}', WC_Format), ('\u{180f}', '\u{180f}', WC_Extend), ('\u{1810}',
+ '\u{1819}', WC_Numeric), ('\u{1820}', '\u{1878}', WC_ALetter), ('\u{1880}', '\u{1884}',
+ WC_ALetter), ('\u{1885}', '\u{1886}', WC_Extend), ('\u{1887}', '\u{18a8}', WC_ALetter),
+ ('\u{18a9}', '\u{18a9}', WC_Extend), ('\u{18aa}', '\u{18aa}', WC_ALetter), ('\u{18b0}',
+ '\u{18f5}', WC_ALetter), ('\u{1900}', '\u{191e}', WC_ALetter), ('\u{1920}', '\u{192b}',
+ WC_Extend), ('\u{1930}', '\u{193b}', WC_Extend), ('\u{1946}', '\u{194f}', WC_Numeric),
+ ('\u{19d0}', '\u{19d9}', WC_Numeric), ('\u{1a00}', '\u{1a16}', WC_ALetter), ('\u{1a17}',
+ '\u{1a1b}', WC_Extend), ('\u{1a55}', '\u{1a5e}', WC_Extend), ('\u{1a60}', '\u{1a7c}',
+ WC_Extend), ('\u{1a7f}', '\u{1a7f}', WC_Extend), ('\u{1a80}', '\u{1a89}', WC_Numeric),
+ ('\u{1a90}', '\u{1a99}', WC_Numeric), ('\u{1ab0}', '\u{1ace}', WC_Extend), ('\u{1b00}',
+ '\u{1b04}', WC_Extend), ('\u{1b05}', '\u{1b33}', WC_ALetter), ('\u{1b34}', '\u{1b44}',
+ WC_Extend), ('\u{1b45}', '\u{1b4c}', WC_ALetter), ('\u{1b50}', '\u{1b59}', WC_Numeric),
+ ('\u{1b6b}', '\u{1b73}', WC_Extend), ('\u{1b80}', '\u{1b82}', WC_Extend), ('\u{1b83}',
+ '\u{1ba0}', WC_ALetter), ('\u{1ba1}', '\u{1bad}', WC_Extend), ('\u{1bae}', '\u{1baf}',
+ WC_ALetter), ('\u{1bb0}', '\u{1bb9}', WC_Numeric), ('\u{1bba}', '\u{1be5}', WC_ALetter),
+ ('\u{1be6}', '\u{1bf3}', WC_Extend), ('\u{1c00}', '\u{1c23}', WC_ALetter), ('\u{1c24}',
+ '\u{1c37}', WC_Extend), ('\u{1c40}', '\u{1c49}', WC_Numeric), ('\u{1c4d}', '\u{1c4f}',
+ WC_ALetter), ('\u{1c50}', '\u{1c59}', WC_Numeric), ('\u{1c5a}', '\u{1c7d}', WC_ALetter),
+ ('\u{1c80}', '\u{1c88}', WC_ALetter), ('\u{1c90}', '\u{1cba}', WC_ALetter), ('\u{1cbd}',
+ '\u{1cbf}', WC_ALetter), ('\u{1cd0}', '\u{1cd2}', WC_Extend), ('\u{1cd4}', '\u{1ce8}',
+ WC_Extend), ('\u{1ce9}', '\u{1cec}', WC_ALetter), ('\u{1ced}', '\u{1ced}', WC_Extend),
+ ('\u{1cee}', '\u{1cf3}', WC_ALetter), ('\u{1cf4}', '\u{1cf4}', WC_Extend), ('\u{1cf5}',
+ '\u{1cf6}', WC_ALetter), ('\u{1cf7}', '\u{1cf9}', WC_Extend), ('\u{1cfa}', '\u{1cfa}',
+ WC_ALetter), ('\u{1d00}', '\u{1dbf}', WC_ALetter), ('\u{1dc0}', '\u{1dff}', WC_Extend),
+ ('\u{1e00}', '\u{1f15}', WC_ALetter), ('\u{1f18}', '\u{1f1d}', WC_ALetter), ('\u{1f20}',
+ '\u{1f45}', WC_ALetter), ('\u{1f48}', '\u{1f4d}', WC_ALetter), ('\u{1f50}', '\u{1f57}',
+ WC_ALetter), ('\u{1f59}', '\u{1f59}', WC_ALetter), ('\u{1f5b}', '\u{1f5b}', WC_ALetter),
+ ('\u{1f5d}', '\u{1f5d}', WC_ALetter), ('\u{1f5f}', '\u{1f7d}', WC_ALetter), ('\u{1f80}',
+ '\u{1fb4}', WC_ALetter), ('\u{1fb6}', '\u{1fbc}', WC_ALetter), ('\u{1fbe}', '\u{1fbe}',
+ WC_ALetter), ('\u{1fc2}', '\u{1fc4}', WC_ALetter), ('\u{1fc6}', '\u{1fcc}', WC_ALetter),
+ ('\u{1fd0}', '\u{1fd3}', WC_ALetter), ('\u{1fd6}', '\u{1fdb}', WC_ALetter), ('\u{1fe0}',
+ '\u{1fec}', WC_ALetter), ('\u{1ff2}', '\u{1ff4}', WC_ALetter), ('\u{1ff6}', '\u{1ffc}',
+ WC_ALetter), ('\u{2000}', '\u{2006}', WC_WSegSpace), ('\u{2008}', '\u{200a}', WC_WSegSpace),
+ ('\u{200c}', '\u{200c}', WC_Extend), ('\u{200d}', '\u{200d}', WC_ZWJ), ('\u{200e}',
+ '\u{200f}', WC_Format), ('\u{2018}', '\u{2019}', WC_MidNumLet), ('\u{2024}', '\u{2024}',
+ WC_MidNumLet), ('\u{2027}', '\u{2027}', WC_MidLetter), ('\u{2028}', '\u{2029}', WC_Newline),
+ ('\u{202a}', '\u{202e}', WC_Format), ('\u{202f}', '\u{202f}', WC_ExtendNumLet), ('\u{203f}',
+ '\u{2040}', WC_ExtendNumLet), ('\u{2044}', '\u{2044}', WC_MidNum), ('\u{2054}', '\u{2054}',
+ WC_ExtendNumLet), ('\u{205f}', '\u{205f}', WC_WSegSpace), ('\u{2060}', '\u{2064}',
+ WC_Format), ('\u{2066}', '\u{206f}', WC_Format), ('\u{2071}', '\u{2071}', WC_ALetter),
+ ('\u{207f}', '\u{207f}', WC_ALetter), ('\u{2090}', '\u{209c}', WC_ALetter), ('\u{20d0}',
+ '\u{20f0}', WC_Extend), ('\u{2102}', '\u{2102}', WC_ALetter), ('\u{2107}', '\u{2107}',
+ WC_ALetter), ('\u{210a}', '\u{2113}', WC_ALetter), ('\u{2115}', '\u{2115}', WC_ALetter),
+ ('\u{2119}', '\u{211d}', WC_ALetter), ('\u{2124}', '\u{2124}', WC_ALetter), ('\u{2126}',
+ '\u{2126}', WC_ALetter), ('\u{2128}', '\u{2128}', WC_ALetter), ('\u{212a}', '\u{212d}',
+ WC_ALetter), ('\u{212f}', '\u{2139}', WC_ALetter), ('\u{213c}', '\u{213f}', WC_ALetter),
+ ('\u{2145}', '\u{2149}', WC_ALetter), ('\u{214e}', '\u{214e}', WC_ALetter), ('\u{2160}',
+ '\u{2188}', WC_ALetter), ('\u{24b6}', '\u{24e9}', WC_ALetter), ('\u{2c00}', '\u{2ce4}',
+ WC_ALetter), ('\u{2ceb}', '\u{2cee}', WC_ALetter), ('\u{2cef}', '\u{2cf1}', WC_Extend),
+ ('\u{2cf2}', '\u{2cf3}', WC_ALetter), ('\u{2d00}', '\u{2d25}', WC_ALetter), ('\u{2d27}',
+ '\u{2d27}', WC_ALetter), ('\u{2d2d}', '\u{2d2d}', WC_ALetter), ('\u{2d30}', '\u{2d67}',
+ WC_ALetter), ('\u{2d6f}', '\u{2d6f}', WC_ALetter), ('\u{2d7f}', '\u{2d7f}', WC_Extend),
+ ('\u{2d80}', '\u{2d96}', WC_ALetter), ('\u{2da0}', '\u{2da6}', WC_ALetter), ('\u{2da8}',
+ '\u{2dae}', WC_ALetter), ('\u{2db0}', '\u{2db6}', WC_ALetter), ('\u{2db8}', '\u{2dbe}',
+ WC_ALetter), ('\u{2dc0}', '\u{2dc6}', WC_ALetter), ('\u{2dc8}', '\u{2dce}', WC_ALetter),
+ ('\u{2dd0}', '\u{2dd6}', WC_ALetter), ('\u{2dd8}', '\u{2dde}', WC_ALetter), ('\u{2de0}',
+ '\u{2dff}', WC_Extend), ('\u{2e2f}', '\u{2e2f}', WC_ALetter), ('\u{3000}', '\u{3000}',
+ WC_WSegSpace), ('\u{3005}', '\u{3005}', WC_ALetter), ('\u{302a}', '\u{302f}', WC_Extend),
+ ('\u{3031}', '\u{3035}', WC_Katakana), ('\u{303b}', '\u{303c}', WC_ALetter), ('\u{3099}',
+ '\u{309a}', WC_Extend), ('\u{309b}', '\u{309c}', WC_Katakana), ('\u{30a0}', '\u{30fa}',
+ WC_Katakana), ('\u{30fc}', '\u{30ff}', WC_Katakana), ('\u{3105}', '\u{312f}', WC_ALetter),
+ ('\u{3131}', '\u{318e}', WC_ALetter), ('\u{31a0}', '\u{31bf}', WC_ALetter), ('\u{31f0}',
+ '\u{31ff}', WC_Katakana), ('\u{32d0}', '\u{32fe}', WC_Katakana), ('\u{3300}', '\u{3357}',
+ WC_Katakana), ('\u{a000}', '\u{a48c}', WC_ALetter), ('\u{a4d0}', '\u{a4fd}', WC_ALetter),
+ ('\u{a500}', '\u{a60c}', WC_ALetter), ('\u{a610}', '\u{a61f}', WC_ALetter), ('\u{a620}',
+ '\u{a629}', WC_Numeric), ('\u{a62a}', '\u{a62b}', WC_ALetter), ('\u{a640}', '\u{a66e}',
+ WC_ALetter), ('\u{a66f}', '\u{a672}', WC_Extend), ('\u{a674}', '\u{a67d}', WC_Extend),
+ ('\u{a67f}', '\u{a69d}', WC_ALetter), ('\u{a69e}', '\u{a69f}', WC_Extend), ('\u{a6a0}',
+ '\u{a6ef}', WC_ALetter), ('\u{a6f0}', '\u{a6f1}', WC_Extend), ('\u{a708}', '\u{a7ca}',
+ WC_ALetter), ('\u{a7d0}', '\u{a7d1}', WC_ALetter), ('\u{a7d3}', '\u{a7d3}', WC_ALetter),
+ ('\u{a7d5}', '\u{a7d9}', WC_ALetter), ('\u{a7f2}', '\u{a801}', WC_ALetter), ('\u{a802}',
+ '\u{a802}', WC_Extend), ('\u{a803}', '\u{a805}', WC_ALetter), ('\u{a806}', '\u{a806}',
+ WC_Extend), ('\u{a807}', '\u{a80a}', WC_ALetter), ('\u{a80b}', '\u{a80b}', WC_Extend),
+ ('\u{a80c}', '\u{a822}', WC_ALetter), ('\u{a823}', '\u{a827}', WC_Extend), ('\u{a82c}',
+ '\u{a82c}', WC_Extend), ('\u{a840}', '\u{a873}', WC_ALetter), ('\u{a880}', '\u{a881}',
+ WC_Extend), ('\u{a882}', '\u{a8b3}', WC_ALetter), ('\u{a8b4}', '\u{a8c5}', WC_Extend),
+ ('\u{a8d0}', '\u{a8d9}', WC_Numeric), ('\u{a8e0}', '\u{a8f1}', WC_Extend), ('\u{a8f2}',
+ '\u{a8f7}', WC_ALetter), ('\u{a8fb}', '\u{a8fb}', WC_ALetter), ('\u{a8fd}', '\u{a8fe}',
+ WC_ALetter), ('\u{a8ff}', '\u{a8ff}', WC_Extend), ('\u{a900}', '\u{a909}', WC_Numeric),
+ ('\u{a90a}', '\u{a925}', WC_ALetter), ('\u{a926}', '\u{a92d}', WC_Extend), ('\u{a930}',
+ '\u{a946}', WC_ALetter), ('\u{a947}', '\u{a953}', WC_Extend), ('\u{a960}', '\u{a97c}',
+ WC_ALetter), ('\u{a980}', '\u{a983}', WC_Extend), ('\u{a984}', '\u{a9b2}', WC_ALetter),
+ ('\u{a9b3}', '\u{a9c0}', WC_Extend), ('\u{a9cf}', '\u{a9cf}', WC_ALetter), ('\u{a9d0}',
+ '\u{a9d9}', WC_Numeric), ('\u{a9e5}', '\u{a9e5}', WC_Extend), ('\u{a9f0}', '\u{a9f9}',
+ WC_Numeric), ('\u{aa00}', '\u{aa28}', WC_ALetter), ('\u{aa29}', '\u{aa36}', WC_Extend),
+ ('\u{aa40}', '\u{aa42}', WC_ALetter), ('\u{aa43}', '\u{aa43}', WC_Extend), ('\u{aa44}',
+ '\u{aa4b}', WC_ALetter), ('\u{aa4c}', '\u{aa4d}', WC_Extend), ('\u{aa50}', '\u{aa59}',
+ WC_Numeric), ('\u{aa7b}', '\u{aa7d}', WC_Extend), ('\u{aab0}', '\u{aab0}', WC_Extend),
+ ('\u{aab2}', '\u{aab4}', WC_Extend), ('\u{aab7}', '\u{aab8}', WC_Extend), ('\u{aabe}',
+ '\u{aabf}', WC_Extend), ('\u{aac1}', '\u{aac1}', WC_Extend), ('\u{aae0}', '\u{aaea}',
+ WC_ALetter), ('\u{aaeb}', '\u{aaef}', WC_Extend), ('\u{aaf2}', '\u{aaf4}', WC_ALetter),
+ ('\u{aaf5}', '\u{aaf6}', WC_Extend), ('\u{ab01}', '\u{ab06}', WC_ALetter), ('\u{ab09}',
+ '\u{ab0e}', WC_ALetter), ('\u{ab11}', '\u{ab16}', WC_ALetter), ('\u{ab20}', '\u{ab26}',
+ WC_ALetter), ('\u{ab28}', '\u{ab2e}', WC_ALetter), ('\u{ab30}', '\u{ab69}', WC_ALetter),
+ ('\u{ab70}', '\u{abe2}', WC_ALetter), ('\u{abe3}', '\u{abea}', WC_Extend), ('\u{abec}',
+ '\u{abed}', WC_Extend), ('\u{abf0}', '\u{abf9}', WC_Numeric), ('\u{ac00}', '\u{d7a3}',
+ WC_ALetter), ('\u{d7b0}', '\u{d7c6}', WC_ALetter), ('\u{d7cb}', '\u{d7fb}', WC_ALetter),
+ ('\u{fb00}', '\u{fb06}', WC_ALetter), ('\u{fb13}', '\u{fb17}', WC_ALetter), ('\u{fb1d}',
+ '\u{fb1d}', WC_Hebrew_Letter), ('\u{fb1e}', '\u{fb1e}', WC_Extend), ('\u{fb1f}', '\u{fb28}',
+ WC_Hebrew_Letter), ('\u{fb2a}', '\u{fb36}', WC_Hebrew_Letter), ('\u{fb38}', '\u{fb3c}',
+ WC_Hebrew_Letter), ('\u{fb3e}', '\u{fb3e}', WC_Hebrew_Letter), ('\u{fb40}', '\u{fb41}',
+ WC_Hebrew_Letter), ('\u{fb43}', '\u{fb44}', WC_Hebrew_Letter), ('\u{fb46}', '\u{fb4f}',
+ WC_Hebrew_Letter), ('\u{fb50}', '\u{fbb1}', WC_ALetter), ('\u{fbd3}', '\u{fd3d}',
+ WC_ALetter), ('\u{fd50}', '\u{fd8f}', WC_ALetter), ('\u{fd92}', '\u{fdc7}', WC_ALetter),
+ ('\u{fdf0}', '\u{fdfb}', WC_ALetter), ('\u{fe00}', '\u{fe0f}', WC_Extend), ('\u{fe10}',
+ '\u{fe10}', WC_MidNum), ('\u{fe13}', '\u{fe13}', WC_MidLetter), ('\u{fe14}', '\u{fe14}',
+ WC_MidNum), ('\u{fe20}', '\u{fe2f}', WC_Extend), ('\u{fe33}', '\u{fe34}', WC_ExtendNumLet),
+ ('\u{fe4d}', '\u{fe4f}', WC_ExtendNumLet), ('\u{fe50}', '\u{fe50}', WC_MidNum), ('\u{fe52}',
+ '\u{fe52}', WC_MidNumLet), ('\u{fe54}', '\u{fe54}', WC_MidNum), ('\u{fe55}', '\u{fe55}',
+ WC_MidLetter), ('\u{fe70}', '\u{fe74}', WC_ALetter), ('\u{fe76}', '\u{fefc}', WC_ALetter),
+ ('\u{feff}', '\u{feff}', WC_Format), ('\u{ff07}', '\u{ff07}', WC_MidNumLet), ('\u{ff0c}',
+ '\u{ff0c}', WC_MidNum), ('\u{ff0e}', '\u{ff0e}', WC_MidNumLet), ('\u{ff10}', '\u{ff19}',
+ WC_Numeric), ('\u{ff1a}', '\u{ff1a}', WC_MidLetter), ('\u{ff1b}', '\u{ff1b}', WC_MidNum),
+ ('\u{ff21}', '\u{ff3a}', WC_ALetter), ('\u{ff3f}', '\u{ff3f}', WC_ExtendNumLet),
+ ('\u{ff41}', '\u{ff5a}', WC_ALetter), ('\u{ff66}', '\u{ff9d}', WC_Katakana), ('\u{ff9e}',
+ '\u{ff9f}', WC_Extend), ('\u{ffa0}', '\u{ffbe}', WC_ALetter), ('\u{ffc2}', '\u{ffc7}',
+ WC_ALetter), ('\u{ffca}', '\u{ffcf}', WC_ALetter), ('\u{ffd2}', '\u{ffd7}', WC_ALetter),
+ ('\u{ffda}', '\u{ffdc}', WC_ALetter), ('\u{fff9}', '\u{fffb}', WC_Format), ('\u{10000}',
+ '\u{1000b}', WC_ALetter), ('\u{1000d}', '\u{10026}', WC_ALetter), ('\u{10028}', '\u{1003a}',
+ WC_ALetter), ('\u{1003c}', '\u{1003d}', WC_ALetter), ('\u{1003f}', '\u{1004d}', WC_ALetter),
('\u{10050}', '\u{1005d}', WC_ALetter), ('\u{10080}', '\u{100fa}', WC_ALetter),
('\u{10140}', '\u{10174}', WC_ALetter), ('\u{101fd}', '\u{101fd}', WC_Extend), ('\u{10280}',
'\u{1029c}', WC_ALetter), ('\u{102a0}', '\u{102d0}', WC_ALetter), ('\u{102e0}', '\u{102e0}',
@@ -1346,53 +1359,55 @@ pub mod word {
('\u{10c80}', '\u{10cb2}', WC_ALetter), ('\u{10cc0}', '\u{10cf2}', WC_ALetter),
('\u{10d00}', '\u{10d23}', WC_ALetter), ('\u{10d24}', '\u{10d27}', WC_Extend), ('\u{10d30}',
'\u{10d39}', WC_Numeric), ('\u{10e80}', '\u{10ea9}', WC_ALetter), ('\u{10eab}', '\u{10eac}',
- WC_Extend), ('\u{10eb0}', '\u{10eb1}', WC_ALetter), ('\u{10f00}', '\u{10f1c}', WC_ALetter),
- ('\u{10f27}', '\u{10f27}', WC_ALetter), ('\u{10f30}', '\u{10f45}', WC_ALetter),
- ('\u{10f46}', '\u{10f50}', WC_Extend), ('\u{10f70}', '\u{10f81}', WC_ALetter), ('\u{10f82}',
- '\u{10f85}', WC_Extend), ('\u{10fb0}', '\u{10fc4}', WC_ALetter), ('\u{10fe0}', '\u{10ff6}',
- WC_ALetter), ('\u{11000}', '\u{11002}', WC_Extend), ('\u{11003}', '\u{11037}', WC_ALetter),
- ('\u{11038}', '\u{11046}', WC_Extend), ('\u{11066}', '\u{1106f}', WC_Numeric), ('\u{11070}',
- '\u{11070}', WC_Extend), ('\u{11071}', '\u{11072}', WC_ALetter), ('\u{11073}', '\u{11074}',
- WC_Extend), ('\u{11075}', '\u{11075}', WC_ALetter), ('\u{1107f}', '\u{11082}', WC_Extend),
- ('\u{11083}', '\u{110af}', WC_ALetter), ('\u{110b0}', '\u{110ba}', WC_Extend), ('\u{110bd}',
- '\u{110bd}', WC_Format), ('\u{110c2}', '\u{110c2}', WC_Extend), ('\u{110cd}', '\u{110cd}',
- WC_Format), ('\u{110d0}', '\u{110e8}', WC_ALetter), ('\u{110f0}', '\u{110f9}', WC_Numeric),
- ('\u{11100}', '\u{11102}', WC_Extend), ('\u{11103}', '\u{11126}', WC_ALetter), ('\u{11127}',
- '\u{11134}', WC_Extend), ('\u{11136}', '\u{1113f}', WC_Numeric), ('\u{11144}', '\u{11144}',
- WC_ALetter), ('\u{11145}', '\u{11146}', WC_Extend), ('\u{11147}', '\u{11147}', WC_ALetter),
- ('\u{11150}', '\u{11172}', WC_ALetter), ('\u{11173}', '\u{11173}', WC_Extend), ('\u{11176}',
- '\u{11176}', WC_ALetter), ('\u{11180}', '\u{11182}', WC_Extend), ('\u{11183}', '\u{111b2}',
- WC_ALetter), ('\u{111b3}', '\u{111c0}', WC_Extend), ('\u{111c1}', '\u{111c4}', WC_ALetter),
- ('\u{111c9}', '\u{111cc}', WC_Extend), ('\u{111ce}', '\u{111cf}', WC_Extend), ('\u{111d0}',
- '\u{111d9}', WC_Numeric), ('\u{111da}', '\u{111da}', WC_ALetter), ('\u{111dc}', '\u{111dc}',
- WC_ALetter), ('\u{11200}', '\u{11211}', WC_ALetter), ('\u{11213}', '\u{1122b}', WC_ALetter),
- ('\u{1122c}', '\u{11237}', WC_Extend), ('\u{1123e}', '\u{1123e}', WC_Extend), ('\u{11280}',
- '\u{11286}', WC_ALetter), ('\u{11288}', '\u{11288}', WC_ALetter), ('\u{1128a}', '\u{1128d}',
- WC_ALetter), ('\u{1128f}', '\u{1129d}', WC_ALetter), ('\u{1129f}', '\u{112a8}', WC_ALetter),
- ('\u{112b0}', '\u{112de}', WC_ALetter), ('\u{112df}', '\u{112ea}', WC_Extend), ('\u{112f0}',
- '\u{112f9}', WC_Numeric), ('\u{11300}', '\u{11303}', WC_Extend), ('\u{11305}', '\u{1130c}',
- WC_ALetter), ('\u{1130f}', '\u{11310}', WC_ALetter), ('\u{11313}', '\u{11328}', WC_ALetter),
- ('\u{1132a}', '\u{11330}', WC_ALetter), ('\u{11332}', '\u{11333}', WC_ALetter),
- ('\u{11335}', '\u{11339}', WC_ALetter), ('\u{1133b}', '\u{1133c}', WC_Extend), ('\u{1133d}',
- '\u{1133d}', WC_ALetter), ('\u{1133e}', '\u{11344}', WC_Extend), ('\u{11347}', '\u{11348}',
- WC_Extend), ('\u{1134b}', '\u{1134d}', WC_Extend), ('\u{11350}', '\u{11350}', WC_ALetter),
- ('\u{11357}', '\u{11357}', WC_Extend), ('\u{1135d}', '\u{11361}', WC_ALetter), ('\u{11362}',
- '\u{11363}', WC_Extend), ('\u{11366}', '\u{1136c}', WC_Extend), ('\u{11370}', '\u{11374}',
- WC_Extend), ('\u{11400}', '\u{11434}', WC_ALetter), ('\u{11435}', '\u{11446}', WC_Extend),
- ('\u{11447}', '\u{1144a}', WC_ALetter), ('\u{11450}', '\u{11459}', WC_Numeric),
- ('\u{1145e}', '\u{1145e}', WC_Extend), ('\u{1145f}', '\u{11461}', WC_ALetter), ('\u{11480}',
- '\u{114af}', WC_ALetter), ('\u{114b0}', '\u{114c3}', WC_Extend), ('\u{114c4}', '\u{114c5}',
- WC_ALetter), ('\u{114c7}', '\u{114c7}', WC_ALetter), ('\u{114d0}', '\u{114d9}', WC_Numeric),
- ('\u{11580}', '\u{115ae}', WC_ALetter), ('\u{115af}', '\u{115b5}', WC_Extend), ('\u{115b8}',
- '\u{115c0}', WC_Extend), ('\u{115d8}', '\u{115db}', WC_ALetter), ('\u{115dc}', '\u{115dd}',
- WC_Extend), ('\u{11600}', '\u{1162f}', WC_ALetter), ('\u{11630}', '\u{11640}', WC_Extend),
- ('\u{11644}', '\u{11644}', WC_ALetter), ('\u{11650}', '\u{11659}', WC_Numeric),
- ('\u{11680}', '\u{116aa}', WC_ALetter), ('\u{116ab}', '\u{116b7}', WC_Extend), ('\u{116b8}',
- '\u{116b8}', WC_ALetter), ('\u{116c0}', '\u{116c9}', WC_Numeric), ('\u{1171d}', '\u{1172b}',
- WC_Extend), ('\u{11730}', '\u{11739}', WC_Numeric), ('\u{11800}', '\u{1182b}', WC_ALetter),
- ('\u{1182c}', '\u{1183a}', WC_Extend), ('\u{118a0}', '\u{118df}', WC_ALetter), ('\u{118e0}',
- '\u{118e9}', WC_Numeric), ('\u{118ff}', '\u{11906}', WC_ALetter), ('\u{11909}', '\u{11909}',
- WC_ALetter), ('\u{1190c}', '\u{11913}', WC_ALetter), ('\u{11915}', '\u{11916}', WC_ALetter),
+ WC_Extend), ('\u{10eb0}', '\u{10eb1}', WC_ALetter), ('\u{10efd}', '\u{10eff}', WC_Extend),
+ ('\u{10f00}', '\u{10f1c}', WC_ALetter), ('\u{10f27}', '\u{10f27}', WC_ALetter),
+ ('\u{10f30}', '\u{10f45}', WC_ALetter), ('\u{10f46}', '\u{10f50}', WC_Extend), ('\u{10f70}',
+ '\u{10f81}', WC_ALetter), ('\u{10f82}', '\u{10f85}', WC_Extend), ('\u{10fb0}', '\u{10fc4}',
+ WC_ALetter), ('\u{10fe0}', '\u{10ff6}', WC_ALetter), ('\u{11000}', '\u{11002}', WC_Extend),
+ ('\u{11003}', '\u{11037}', WC_ALetter), ('\u{11038}', '\u{11046}', WC_Extend), ('\u{11066}',
+ '\u{1106f}', WC_Numeric), ('\u{11070}', '\u{11070}', WC_Extend), ('\u{11071}', '\u{11072}',
+ WC_ALetter), ('\u{11073}', '\u{11074}', WC_Extend), ('\u{11075}', '\u{11075}', WC_ALetter),
+ ('\u{1107f}', '\u{11082}', WC_Extend), ('\u{11083}', '\u{110af}', WC_ALetter), ('\u{110b0}',
+ '\u{110ba}', WC_Extend), ('\u{110bd}', '\u{110bd}', WC_Format), ('\u{110c2}', '\u{110c2}',
+ WC_Extend), ('\u{110cd}', '\u{110cd}', WC_Format), ('\u{110d0}', '\u{110e8}', WC_ALetter),
+ ('\u{110f0}', '\u{110f9}', WC_Numeric), ('\u{11100}', '\u{11102}', WC_Extend), ('\u{11103}',
+ '\u{11126}', WC_ALetter), ('\u{11127}', '\u{11134}', WC_Extend), ('\u{11136}', '\u{1113f}',
+ WC_Numeric), ('\u{11144}', '\u{11144}', WC_ALetter), ('\u{11145}', '\u{11146}', WC_Extend),
+ ('\u{11147}', '\u{11147}', WC_ALetter), ('\u{11150}', '\u{11172}', WC_ALetter),
+ ('\u{11173}', '\u{11173}', WC_Extend), ('\u{11176}', '\u{11176}', WC_ALetter), ('\u{11180}',
+ '\u{11182}', WC_Extend), ('\u{11183}', '\u{111b2}', WC_ALetter), ('\u{111b3}', '\u{111c0}',
+ WC_Extend), ('\u{111c1}', '\u{111c4}', WC_ALetter), ('\u{111c9}', '\u{111cc}', WC_Extend),
+ ('\u{111ce}', '\u{111cf}', WC_Extend), ('\u{111d0}', '\u{111d9}', WC_Numeric), ('\u{111da}',
+ '\u{111da}', WC_ALetter), ('\u{111dc}', '\u{111dc}', WC_ALetter), ('\u{11200}', '\u{11211}',
+ WC_ALetter), ('\u{11213}', '\u{1122b}', WC_ALetter), ('\u{1122c}', '\u{11237}', WC_Extend),
+ ('\u{1123e}', '\u{1123e}', WC_Extend), ('\u{1123f}', '\u{11240}', WC_ALetter), ('\u{11241}',
+ '\u{11241}', WC_Extend), ('\u{11280}', '\u{11286}', WC_ALetter), ('\u{11288}', '\u{11288}',
+ WC_ALetter), ('\u{1128a}', '\u{1128d}', WC_ALetter), ('\u{1128f}', '\u{1129d}', WC_ALetter),
+ ('\u{1129f}', '\u{112a8}', WC_ALetter), ('\u{112b0}', '\u{112de}', WC_ALetter),
+ ('\u{112df}', '\u{112ea}', WC_Extend), ('\u{112f0}', '\u{112f9}', WC_Numeric), ('\u{11300}',
+ '\u{11303}', WC_Extend), ('\u{11305}', '\u{1130c}', WC_ALetter), ('\u{1130f}', '\u{11310}',
+ WC_ALetter), ('\u{11313}', '\u{11328}', WC_ALetter), ('\u{1132a}', '\u{11330}', WC_ALetter),
+ ('\u{11332}', '\u{11333}', WC_ALetter), ('\u{11335}', '\u{11339}', WC_ALetter),
+ ('\u{1133b}', '\u{1133c}', WC_Extend), ('\u{1133d}', '\u{1133d}', WC_ALetter), ('\u{1133e}',
+ '\u{11344}', WC_Extend), ('\u{11347}', '\u{11348}', WC_Extend), ('\u{1134b}', '\u{1134d}',
+ WC_Extend), ('\u{11350}', '\u{11350}', WC_ALetter), ('\u{11357}', '\u{11357}', WC_Extend),
+ ('\u{1135d}', '\u{11361}', WC_ALetter), ('\u{11362}', '\u{11363}', WC_Extend), ('\u{11366}',
+ '\u{1136c}', WC_Extend), ('\u{11370}', '\u{11374}', WC_Extend), ('\u{11400}', '\u{11434}',
+ WC_ALetter), ('\u{11435}', '\u{11446}', WC_Extend), ('\u{11447}', '\u{1144a}', WC_ALetter),
+ ('\u{11450}', '\u{11459}', WC_Numeric), ('\u{1145e}', '\u{1145e}', WC_Extend), ('\u{1145f}',
+ '\u{11461}', WC_ALetter), ('\u{11480}', '\u{114af}', WC_ALetter), ('\u{114b0}', '\u{114c3}',
+ WC_Extend), ('\u{114c4}', '\u{114c5}', WC_ALetter), ('\u{114c7}', '\u{114c7}', WC_ALetter),
+ ('\u{114d0}', '\u{114d9}', WC_Numeric), ('\u{11580}', '\u{115ae}', WC_ALetter),
+ ('\u{115af}', '\u{115b5}', WC_Extend), ('\u{115b8}', '\u{115c0}', WC_Extend), ('\u{115d8}',
+ '\u{115db}', WC_ALetter), ('\u{115dc}', '\u{115dd}', WC_Extend), ('\u{11600}', '\u{1162f}',
+ WC_ALetter), ('\u{11630}', '\u{11640}', WC_Extend), ('\u{11644}', '\u{11644}', WC_ALetter),
+ ('\u{11650}', '\u{11659}', WC_Numeric), ('\u{11680}', '\u{116aa}', WC_ALetter),
+ ('\u{116ab}', '\u{116b7}', WC_Extend), ('\u{116b8}', '\u{116b8}', WC_ALetter), ('\u{116c0}',
+ '\u{116c9}', WC_Numeric), ('\u{1171d}', '\u{1172b}', WC_Extend), ('\u{11730}', '\u{11739}',
+ WC_Numeric), ('\u{11800}', '\u{1182b}', WC_ALetter), ('\u{1182c}', '\u{1183a}', WC_Extend),
+ ('\u{118a0}', '\u{118df}', WC_ALetter), ('\u{118e0}', '\u{118e9}', WC_Numeric),
+ ('\u{118ff}', '\u{11906}', WC_ALetter), ('\u{11909}', '\u{11909}', WC_ALetter),
+ ('\u{1190c}', '\u{11913}', WC_ALetter), ('\u{11915}', '\u{11916}', WC_ALetter),
('\u{11918}', '\u{1192f}', WC_ALetter), ('\u{11930}', '\u{11935}', WC_Extend), ('\u{11937}',
'\u{11938}', WC_Extend), ('\u{1193b}', '\u{1193e}', WC_Extend), ('\u{1193f}', '\u{1193f}',
WC_ALetter), ('\u{11940}', '\u{11940}', WC_Extend), ('\u{11941}', '\u{11941}', WC_ALetter),
@@ -1418,12 +1433,17 @@ pub mod word {
('\u{11d8a}', '\u{11d8e}', WC_Extend), ('\u{11d90}', '\u{11d91}', WC_Extend), ('\u{11d93}',
'\u{11d97}', WC_Extend), ('\u{11d98}', '\u{11d98}', WC_ALetter), ('\u{11da0}', '\u{11da9}',
WC_Numeric), ('\u{11ee0}', '\u{11ef2}', WC_ALetter), ('\u{11ef3}', '\u{11ef6}', WC_Extend),
- ('\u{11fb0}', '\u{11fb0}', WC_ALetter), ('\u{12000}', '\u{12399}', WC_ALetter),
- ('\u{12400}', '\u{1246e}', WC_ALetter), ('\u{12480}', '\u{12543}', WC_ALetter),
- ('\u{12f90}', '\u{12ff0}', WC_ALetter), ('\u{13000}', '\u{1342e}', WC_ALetter),
- ('\u{13430}', '\u{13438}', WC_Format), ('\u{14400}', '\u{14646}', WC_ALetter), ('\u{16800}',
- '\u{16a38}', WC_ALetter), ('\u{16a40}', '\u{16a5e}', WC_ALetter), ('\u{16a60}', '\u{16a69}',
- WC_Numeric), ('\u{16a70}', '\u{16abe}', WC_ALetter), ('\u{16ac0}', '\u{16ac9}', WC_Numeric),
+ ('\u{11f00}', '\u{11f01}', WC_Extend), ('\u{11f02}', '\u{11f02}', WC_ALetter), ('\u{11f03}',
+ '\u{11f03}', WC_Extend), ('\u{11f04}', '\u{11f10}', WC_ALetter), ('\u{11f12}', '\u{11f33}',
+ WC_ALetter), ('\u{11f34}', '\u{11f3a}', WC_Extend), ('\u{11f3e}', '\u{11f42}', WC_Extend),
+ ('\u{11f50}', '\u{11f59}', WC_Numeric), ('\u{11fb0}', '\u{11fb0}', WC_ALetter),
+ ('\u{12000}', '\u{12399}', WC_ALetter), ('\u{12400}', '\u{1246e}', WC_ALetter),
+ ('\u{12480}', '\u{12543}', WC_ALetter), ('\u{12f90}', '\u{12ff0}', WC_ALetter),
+ ('\u{13000}', '\u{1342f}', WC_ALetter), ('\u{13430}', '\u{1343f}', WC_Format), ('\u{13440}',
+ '\u{13440}', WC_Extend), ('\u{13441}', '\u{13446}', WC_ALetter), ('\u{13447}', '\u{13455}',
+ WC_Extend), ('\u{14400}', '\u{14646}', WC_ALetter), ('\u{16800}', '\u{16a38}', WC_ALetter),
+ ('\u{16a40}', '\u{16a5e}', WC_ALetter), ('\u{16a60}', '\u{16a69}', WC_Numeric),
+ ('\u{16a70}', '\u{16abe}', WC_ALetter), ('\u{16ac0}', '\u{16ac9}', WC_Numeric),
('\u{16ad0}', '\u{16aed}', WC_ALetter), ('\u{16af0}', '\u{16af4}', WC_Extend), ('\u{16b00}',
'\u{16b2f}', WC_ALetter), ('\u{16b30}', '\u{16b36}', WC_Extend), ('\u{16b40}', '\u{16b43}',
WC_ALetter), ('\u{16b50}', '\u{16b59}', WC_Numeric), ('\u{16b63}', '\u{16b77}', WC_ALetter),
@@ -1434,40 +1454,43 @@ pub mod word {
('\u{16fe3}', '\u{16fe3}', WC_ALetter), ('\u{16fe4}', '\u{16fe4}', WC_Extend), ('\u{16ff0}',
'\u{16ff1}', WC_Extend), ('\u{1aff0}', '\u{1aff3}', WC_Katakana), ('\u{1aff5}', '\u{1affb}',
WC_Katakana), ('\u{1affd}', '\u{1affe}', WC_Katakana), ('\u{1b000}', '\u{1b000}',
- WC_Katakana), ('\u{1b120}', '\u{1b122}', WC_Katakana), ('\u{1b164}', '\u{1b167}',
- WC_Katakana), ('\u{1bc00}', '\u{1bc6a}', WC_ALetter), ('\u{1bc70}', '\u{1bc7c}',
- WC_ALetter), ('\u{1bc80}', '\u{1bc88}', WC_ALetter), ('\u{1bc90}', '\u{1bc99}', WC_ALetter),
- ('\u{1bc9d}', '\u{1bc9e}', WC_Extend), ('\u{1bca0}', '\u{1bca3}', WC_Format), ('\u{1cf00}',
- '\u{1cf2d}', WC_Extend), ('\u{1cf30}', '\u{1cf46}', WC_Extend), ('\u{1d165}', '\u{1d169}',
- WC_Extend), ('\u{1d16d}', '\u{1d172}', WC_Extend), ('\u{1d173}', '\u{1d17a}', WC_Format),
- ('\u{1d17b}', '\u{1d182}', WC_Extend), ('\u{1d185}', '\u{1d18b}', WC_Extend), ('\u{1d1aa}',
- '\u{1d1ad}', WC_Extend), ('\u{1d242}', '\u{1d244}', WC_Extend), ('\u{1d400}', '\u{1d454}',
- WC_ALetter), ('\u{1d456}', '\u{1d49c}', WC_ALetter), ('\u{1d49e}', '\u{1d49f}', WC_ALetter),
- ('\u{1d4a2}', '\u{1d4a2}', WC_ALetter), ('\u{1d4a5}', '\u{1d4a6}', WC_ALetter),
- ('\u{1d4a9}', '\u{1d4ac}', WC_ALetter), ('\u{1d4ae}', '\u{1d4b9}', WC_ALetter),
- ('\u{1d4bb}', '\u{1d4bb}', WC_ALetter), ('\u{1d4bd}', '\u{1d4c3}', WC_ALetter),
- ('\u{1d4c5}', '\u{1d505}', WC_ALetter), ('\u{1d507}', '\u{1d50a}', WC_ALetter),
- ('\u{1d50d}', '\u{1d514}', WC_ALetter), ('\u{1d516}', '\u{1d51c}', WC_ALetter),
- ('\u{1d51e}', '\u{1d539}', WC_ALetter), ('\u{1d53b}', '\u{1d53e}', WC_ALetter),
- ('\u{1d540}', '\u{1d544}', WC_ALetter), ('\u{1d546}', '\u{1d546}', WC_ALetter),
- ('\u{1d54a}', '\u{1d550}', WC_ALetter), ('\u{1d552}', '\u{1d6a5}', WC_ALetter),
- ('\u{1d6a8}', '\u{1d6c0}', WC_ALetter), ('\u{1d6c2}', '\u{1d6da}', WC_ALetter),
- ('\u{1d6dc}', '\u{1d6fa}', WC_ALetter), ('\u{1d6fc}', '\u{1d714}', WC_ALetter),
- ('\u{1d716}', '\u{1d734}', WC_ALetter), ('\u{1d736}', '\u{1d74e}', WC_ALetter),
- ('\u{1d750}', '\u{1d76e}', WC_ALetter), ('\u{1d770}', '\u{1d788}', WC_ALetter),
- ('\u{1d78a}', '\u{1d7a8}', WC_ALetter), ('\u{1d7aa}', '\u{1d7c2}', WC_ALetter),
- ('\u{1d7c4}', '\u{1d7cb}', WC_ALetter), ('\u{1d7ce}', '\u{1d7ff}', WC_Numeric),
- ('\u{1da00}', '\u{1da36}', WC_Extend), ('\u{1da3b}', '\u{1da6c}', WC_Extend), ('\u{1da75}',
- '\u{1da75}', WC_Extend), ('\u{1da84}', '\u{1da84}', WC_Extend), ('\u{1da9b}', '\u{1da9f}',
- WC_Extend), ('\u{1daa1}', '\u{1daaf}', WC_Extend), ('\u{1df00}', '\u{1df1e}', WC_ALetter),
+ WC_Katakana), ('\u{1b120}', '\u{1b122}', WC_Katakana), ('\u{1b155}', '\u{1b155}',
+ WC_Katakana), ('\u{1b164}', '\u{1b167}', WC_Katakana), ('\u{1bc00}', '\u{1bc6a}',
+ WC_ALetter), ('\u{1bc70}', '\u{1bc7c}', WC_ALetter), ('\u{1bc80}', '\u{1bc88}', WC_ALetter),
+ ('\u{1bc90}', '\u{1bc99}', WC_ALetter), ('\u{1bc9d}', '\u{1bc9e}', WC_Extend), ('\u{1bca0}',
+ '\u{1bca3}', WC_Format), ('\u{1cf00}', '\u{1cf2d}', WC_Extend), ('\u{1cf30}', '\u{1cf46}',
+ WC_Extend), ('\u{1d165}', '\u{1d169}', WC_Extend), ('\u{1d16d}', '\u{1d172}', WC_Extend),
+ ('\u{1d173}', '\u{1d17a}', WC_Format), ('\u{1d17b}', '\u{1d182}', WC_Extend), ('\u{1d185}',
+ '\u{1d18b}', WC_Extend), ('\u{1d1aa}', '\u{1d1ad}', WC_Extend), ('\u{1d242}', '\u{1d244}',
+ WC_Extend), ('\u{1d400}', '\u{1d454}', WC_ALetter), ('\u{1d456}', '\u{1d49c}', WC_ALetter),
+ ('\u{1d49e}', '\u{1d49f}', WC_ALetter), ('\u{1d4a2}', '\u{1d4a2}', WC_ALetter),
+ ('\u{1d4a5}', '\u{1d4a6}', WC_ALetter), ('\u{1d4a9}', '\u{1d4ac}', WC_ALetter),
+ ('\u{1d4ae}', '\u{1d4b9}', WC_ALetter), ('\u{1d4bb}', '\u{1d4bb}', WC_ALetter),
+ ('\u{1d4bd}', '\u{1d4c3}', WC_ALetter), ('\u{1d4c5}', '\u{1d505}', WC_ALetter),
+ ('\u{1d507}', '\u{1d50a}', WC_ALetter), ('\u{1d50d}', '\u{1d514}', WC_ALetter),
+ ('\u{1d516}', '\u{1d51c}', WC_ALetter), ('\u{1d51e}', '\u{1d539}', WC_ALetter),
+ ('\u{1d53b}', '\u{1d53e}', WC_ALetter), ('\u{1d540}', '\u{1d544}', WC_ALetter),
+ ('\u{1d546}', '\u{1d546}', WC_ALetter), ('\u{1d54a}', '\u{1d550}', WC_ALetter),
+ ('\u{1d552}', '\u{1d6a5}', WC_ALetter), ('\u{1d6a8}', '\u{1d6c0}', WC_ALetter),
+ ('\u{1d6c2}', '\u{1d6da}', WC_ALetter), ('\u{1d6dc}', '\u{1d6fa}', WC_ALetter),
+ ('\u{1d6fc}', '\u{1d714}', WC_ALetter), ('\u{1d716}', '\u{1d734}', WC_ALetter),
+ ('\u{1d736}', '\u{1d74e}', WC_ALetter), ('\u{1d750}', '\u{1d76e}', WC_ALetter),
+ ('\u{1d770}', '\u{1d788}', WC_ALetter), ('\u{1d78a}', '\u{1d7a8}', WC_ALetter),
+ ('\u{1d7aa}', '\u{1d7c2}', WC_ALetter), ('\u{1d7c4}', '\u{1d7cb}', WC_ALetter),
+ ('\u{1d7ce}', '\u{1d7ff}', WC_Numeric), ('\u{1da00}', '\u{1da36}', WC_Extend), ('\u{1da3b}',
+ '\u{1da6c}', WC_Extend), ('\u{1da75}', '\u{1da75}', WC_Extend), ('\u{1da84}', '\u{1da84}',
+ WC_Extend), ('\u{1da9b}', '\u{1da9f}', WC_Extend), ('\u{1daa1}', '\u{1daaf}', WC_Extend),
+ ('\u{1df00}', '\u{1df1e}', WC_ALetter), ('\u{1df25}', '\u{1df2a}', WC_ALetter),
('\u{1e000}', '\u{1e006}', WC_Extend), ('\u{1e008}', '\u{1e018}', WC_Extend), ('\u{1e01b}',
'\u{1e021}', WC_Extend), ('\u{1e023}', '\u{1e024}', WC_Extend), ('\u{1e026}', '\u{1e02a}',
- WC_Extend), ('\u{1e100}', '\u{1e12c}', WC_ALetter), ('\u{1e130}', '\u{1e136}', WC_Extend),
- ('\u{1e137}', '\u{1e13d}', WC_ALetter), ('\u{1e140}', '\u{1e149}', WC_Numeric),
- ('\u{1e14e}', '\u{1e14e}', WC_ALetter), ('\u{1e290}', '\u{1e2ad}', WC_ALetter),
- ('\u{1e2ae}', '\u{1e2ae}', WC_Extend), ('\u{1e2c0}', '\u{1e2eb}', WC_ALetter), ('\u{1e2ec}',
- '\u{1e2ef}', WC_Extend), ('\u{1e2f0}', '\u{1e2f9}', WC_Numeric), ('\u{1e7e0}', '\u{1e7e6}',
- WC_ALetter), ('\u{1e7e8}', '\u{1e7eb}', WC_ALetter), ('\u{1e7ed}', '\u{1e7ee}', WC_ALetter),
+ WC_Extend), ('\u{1e030}', '\u{1e06d}', WC_ALetter), ('\u{1e08f}', '\u{1e08f}', WC_Extend),
+ ('\u{1e100}', '\u{1e12c}', WC_ALetter), ('\u{1e130}', '\u{1e136}', WC_Extend), ('\u{1e137}',
+ '\u{1e13d}', WC_ALetter), ('\u{1e140}', '\u{1e149}', WC_Numeric), ('\u{1e14e}', '\u{1e14e}',
+ WC_ALetter), ('\u{1e290}', '\u{1e2ad}', WC_ALetter), ('\u{1e2ae}', '\u{1e2ae}', WC_Extend),
+ ('\u{1e2c0}', '\u{1e2eb}', WC_ALetter), ('\u{1e2ec}', '\u{1e2ef}', WC_Extend), ('\u{1e2f0}',
+ '\u{1e2f9}', WC_Numeric), ('\u{1e4d0}', '\u{1e4eb}', WC_ALetter), ('\u{1e4ec}', '\u{1e4ef}',
+ WC_Extend), ('\u{1e4f0}', '\u{1e4f9}', WC_Numeric), ('\u{1e7e0}', '\u{1e7e6}', WC_ALetter),
+ ('\u{1e7e8}', '\u{1e7eb}', WC_ALetter), ('\u{1e7ed}', '\u{1e7ee}', WC_ALetter),
('\u{1e7f0}', '\u{1e7fe}', WC_ALetter), ('\u{1e800}', '\u{1e8c4}', WC_ALetter),
('\u{1e8d0}', '\u{1e8d6}', WC_Extend), ('\u{1e900}', '\u{1e943}', WC_ALetter), ('\u{1e944}',
'\u{1e94a}', WC_Extend), ('\u{1e94b}', '\u{1e94b}', WC_ALetter), ('\u{1e950}', '\u{1e959}',
@@ -1941,508 +1964,509 @@ pub mod sentence {
('\u{cc6}', '\u{cc8}', SC_Extend), ('\u{cca}', '\u{ccd}', SC_Extend), ('\u{cd5}', '\u{cd6}',
SC_Extend), ('\u{cdd}', '\u{cde}', SC_OLetter), ('\u{ce0}', '\u{ce1}', SC_OLetter),
('\u{ce2}', '\u{ce3}', SC_Extend), ('\u{ce6}', '\u{cef}', SC_Numeric), ('\u{cf1}',
- '\u{cf2}', SC_OLetter), ('\u{d00}', '\u{d03}', SC_Extend), ('\u{d04}', '\u{d0c}',
- SC_OLetter), ('\u{d0e}', '\u{d10}', SC_OLetter), ('\u{d12}', '\u{d3a}', SC_OLetter),
- ('\u{d3b}', '\u{d3c}', SC_Extend), ('\u{d3d}', '\u{d3d}', SC_OLetter), ('\u{d3e}',
- '\u{d44}', SC_Extend), ('\u{d46}', '\u{d48}', SC_Extend), ('\u{d4a}', '\u{d4d}', SC_Extend),
- ('\u{d4e}', '\u{d4e}', SC_OLetter), ('\u{d54}', '\u{d56}', SC_OLetter), ('\u{d57}',
- '\u{d57}', SC_Extend), ('\u{d5f}', '\u{d61}', SC_OLetter), ('\u{d62}', '\u{d63}',
- SC_Extend), ('\u{d66}', '\u{d6f}', SC_Numeric), ('\u{d7a}', '\u{d7f}', SC_OLetter),
- ('\u{d81}', '\u{d83}', SC_Extend), ('\u{d85}', '\u{d96}', SC_OLetter), ('\u{d9a}',
- '\u{db1}', SC_OLetter), ('\u{db3}', '\u{dbb}', SC_OLetter), ('\u{dbd}', '\u{dbd}',
- SC_OLetter), ('\u{dc0}', '\u{dc6}', SC_OLetter), ('\u{dca}', '\u{dca}', SC_Extend),
- ('\u{dcf}', '\u{dd4}', SC_Extend), ('\u{dd6}', '\u{dd6}', SC_Extend), ('\u{dd8}', '\u{ddf}',
- SC_Extend), ('\u{de6}', '\u{def}', SC_Numeric), ('\u{df2}', '\u{df3}', SC_Extend),
- ('\u{e01}', '\u{e30}', SC_OLetter), ('\u{e31}', '\u{e31}', SC_Extend), ('\u{e32}',
- '\u{e33}', SC_OLetter), ('\u{e34}', '\u{e3a}', SC_Extend), ('\u{e40}', '\u{e46}',
- SC_OLetter), ('\u{e47}', '\u{e4e}', SC_Extend), ('\u{e50}', '\u{e59}', SC_Numeric),
- ('\u{e81}', '\u{e82}', SC_OLetter), ('\u{e84}', '\u{e84}', SC_OLetter), ('\u{e86}',
- '\u{e8a}', SC_OLetter), ('\u{e8c}', '\u{ea3}', SC_OLetter), ('\u{ea5}', '\u{ea5}',
- SC_OLetter), ('\u{ea7}', '\u{eb0}', SC_OLetter), ('\u{eb1}', '\u{eb1}', SC_Extend),
- ('\u{eb2}', '\u{eb3}', SC_OLetter), ('\u{eb4}', '\u{ebc}', SC_Extend), ('\u{ebd}',
- '\u{ebd}', SC_OLetter), ('\u{ec0}', '\u{ec4}', SC_OLetter), ('\u{ec6}', '\u{ec6}',
- SC_OLetter), ('\u{ec8}', '\u{ecd}', SC_Extend), ('\u{ed0}', '\u{ed9}', SC_Numeric),
- ('\u{edc}', '\u{edf}', SC_OLetter), ('\u{f00}', '\u{f00}', SC_OLetter), ('\u{f18}',
- '\u{f19}', SC_Extend), ('\u{f20}', '\u{f29}', SC_Numeric), ('\u{f35}', '\u{f35}',
- SC_Extend), ('\u{f37}', '\u{f37}', SC_Extend), ('\u{f39}', '\u{f39}', SC_Extend),
- ('\u{f3a}', '\u{f3d}', SC_Close), ('\u{f3e}', '\u{f3f}', SC_Extend), ('\u{f40}', '\u{f47}',
- SC_OLetter), ('\u{f49}', '\u{f6c}', SC_OLetter), ('\u{f71}', '\u{f84}', SC_Extend),
- ('\u{f86}', '\u{f87}', SC_Extend), ('\u{f88}', '\u{f8c}', SC_OLetter), ('\u{f8d}',
- '\u{f97}', SC_Extend), ('\u{f99}', '\u{fbc}', SC_Extend), ('\u{fc6}', '\u{fc6}', SC_Extend),
- ('\u{1000}', '\u{102a}', SC_OLetter), ('\u{102b}', '\u{103e}', SC_Extend), ('\u{103f}',
- '\u{103f}', SC_OLetter), ('\u{1040}', '\u{1049}', SC_Numeric), ('\u{104a}', '\u{104b}',
- SC_STerm), ('\u{1050}', '\u{1055}', SC_OLetter), ('\u{1056}', '\u{1059}', SC_Extend),
- ('\u{105a}', '\u{105d}', SC_OLetter), ('\u{105e}', '\u{1060}', SC_Extend), ('\u{1061}',
- '\u{1061}', SC_OLetter), ('\u{1062}', '\u{1064}', SC_Extend), ('\u{1065}', '\u{1066}',
- SC_OLetter), ('\u{1067}', '\u{106d}', SC_Extend), ('\u{106e}', '\u{1070}', SC_OLetter),
- ('\u{1071}', '\u{1074}', SC_Extend), ('\u{1075}', '\u{1081}', SC_OLetter), ('\u{1082}',
- '\u{108d}', SC_Extend), ('\u{108e}', '\u{108e}', SC_OLetter), ('\u{108f}', '\u{108f}',
- SC_Extend), ('\u{1090}', '\u{1099}', SC_Numeric), ('\u{109a}', '\u{109d}', SC_Extend),
- ('\u{10a0}', '\u{10c5}', SC_Upper), ('\u{10c7}', '\u{10c7}', SC_Upper), ('\u{10cd}',
- '\u{10cd}', SC_Upper), ('\u{10d0}', '\u{10fa}', SC_OLetter), ('\u{10fc}', '\u{1248}',
- SC_OLetter), ('\u{124a}', '\u{124d}', SC_OLetter), ('\u{1250}', '\u{1256}', SC_OLetter),
- ('\u{1258}', '\u{1258}', SC_OLetter), ('\u{125a}', '\u{125d}', SC_OLetter), ('\u{1260}',
- '\u{1288}', SC_OLetter), ('\u{128a}', '\u{128d}', SC_OLetter), ('\u{1290}', '\u{12b0}',
- SC_OLetter), ('\u{12b2}', '\u{12b5}', SC_OLetter), ('\u{12b8}', '\u{12be}', SC_OLetter),
- ('\u{12c0}', '\u{12c0}', SC_OLetter), ('\u{12c2}', '\u{12c5}', SC_OLetter), ('\u{12c8}',
- '\u{12d6}', SC_OLetter), ('\u{12d8}', '\u{1310}', SC_OLetter), ('\u{1312}', '\u{1315}',
- SC_OLetter), ('\u{1318}', '\u{135a}', SC_OLetter), ('\u{135d}', '\u{135f}', SC_Extend),
- ('\u{1362}', '\u{1362}', SC_STerm), ('\u{1367}', '\u{1368}', SC_STerm), ('\u{1380}',
- '\u{138f}', SC_OLetter), ('\u{13a0}', '\u{13f5}', SC_Upper), ('\u{13f8}', '\u{13fd}',
- SC_Lower), ('\u{1401}', '\u{166c}', SC_OLetter), ('\u{166e}', '\u{166e}', SC_STerm),
- ('\u{166f}', '\u{167f}', SC_OLetter), ('\u{1680}', '\u{1680}', SC_Sp), ('\u{1681}',
- '\u{169a}', SC_OLetter), ('\u{169b}', '\u{169c}', SC_Close), ('\u{16a0}', '\u{16ea}',
- SC_OLetter), ('\u{16ee}', '\u{16f8}', SC_OLetter), ('\u{1700}', '\u{1711}', SC_OLetter),
- ('\u{1712}', '\u{1715}', SC_Extend), ('\u{171f}', '\u{1731}', SC_OLetter), ('\u{1732}',
- '\u{1734}', SC_Extend), ('\u{1735}', '\u{1736}', SC_STerm), ('\u{1740}', '\u{1751}',
- SC_OLetter), ('\u{1752}', '\u{1753}', SC_Extend), ('\u{1760}', '\u{176c}', SC_OLetter),
- ('\u{176e}', '\u{1770}', SC_OLetter), ('\u{1772}', '\u{1773}', SC_Extend), ('\u{1780}',
- '\u{17b3}', SC_OLetter), ('\u{17b4}', '\u{17d3}', SC_Extend), ('\u{17d7}', '\u{17d7}',
- SC_OLetter), ('\u{17dc}', '\u{17dc}', SC_OLetter), ('\u{17dd}', '\u{17dd}', SC_Extend),
- ('\u{17e0}', '\u{17e9}', SC_Numeric), ('\u{1802}', '\u{1802}', SC_SContinue), ('\u{1803}',
- '\u{1803}', SC_STerm), ('\u{1808}', '\u{1808}', SC_SContinue), ('\u{1809}', '\u{1809}',
- SC_STerm), ('\u{180b}', '\u{180d}', SC_Extend), ('\u{180e}', '\u{180e}', SC_Format),
- ('\u{180f}', '\u{180f}', SC_Extend), ('\u{1810}', '\u{1819}', SC_Numeric), ('\u{1820}',
- '\u{1878}', SC_OLetter), ('\u{1880}', '\u{1884}', SC_OLetter), ('\u{1885}', '\u{1886}',
- SC_Extend), ('\u{1887}', '\u{18a8}', SC_OLetter), ('\u{18a9}', '\u{18a9}', SC_Extend),
- ('\u{18aa}', '\u{18aa}', SC_OLetter), ('\u{18b0}', '\u{18f5}', SC_OLetter), ('\u{1900}',
- '\u{191e}', SC_OLetter), ('\u{1920}', '\u{192b}', SC_Extend), ('\u{1930}', '\u{193b}',
- SC_Extend), ('\u{1944}', '\u{1945}', SC_STerm), ('\u{1946}', '\u{194f}', SC_Numeric),
- ('\u{1950}', '\u{196d}', SC_OLetter), ('\u{1970}', '\u{1974}', SC_OLetter), ('\u{1980}',
- '\u{19ab}', SC_OLetter), ('\u{19b0}', '\u{19c9}', SC_OLetter), ('\u{19d0}', '\u{19d9}',
- SC_Numeric), ('\u{1a00}', '\u{1a16}', SC_OLetter), ('\u{1a17}', '\u{1a1b}', SC_Extend),
- ('\u{1a20}', '\u{1a54}', SC_OLetter), ('\u{1a55}', '\u{1a5e}', SC_Extend), ('\u{1a60}',
- '\u{1a7c}', SC_Extend), ('\u{1a7f}', '\u{1a7f}', SC_Extend), ('\u{1a80}', '\u{1a89}',
- SC_Numeric), ('\u{1a90}', '\u{1a99}', SC_Numeric), ('\u{1aa7}', '\u{1aa7}', SC_OLetter),
- ('\u{1aa8}', '\u{1aab}', SC_STerm), ('\u{1ab0}', '\u{1ace}', SC_Extend), ('\u{1b00}',
- '\u{1b04}', SC_Extend), ('\u{1b05}', '\u{1b33}', SC_OLetter), ('\u{1b34}', '\u{1b44}',
- SC_Extend), ('\u{1b45}', '\u{1b4c}', SC_OLetter), ('\u{1b50}', '\u{1b59}', SC_Numeric),
- ('\u{1b5a}', '\u{1b5b}', SC_STerm), ('\u{1b5e}', '\u{1b5f}', SC_STerm), ('\u{1b6b}',
- '\u{1b73}', SC_Extend), ('\u{1b7d}', '\u{1b7e}', SC_STerm), ('\u{1b80}', '\u{1b82}',
- SC_Extend), ('\u{1b83}', '\u{1ba0}', SC_OLetter), ('\u{1ba1}', '\u{1bad}', SC_Extend),
- ('\u{1bae}', '\u{1baf}', SC_OLetter), ('\u{1bb0}', '\u{1bb9}', SC_Numeric), ('\u{1bba}',
- '\u{1be5}', SC_OLetter), ('\u{1be6}', '\u{1bf3}', SC_Extend), ('\u{1c00}', '\u{1c23}',
- SC_OLetter), ('\u{1c24}', '\u{1c37}', SC_Extend), ('\u{1c3b}', '\u{1c3c}', SC_STerm),
- ('\u{1c40}', '\u{1c49}', SC_Numeric), ('\u{1c4d}', '\u{1c4f}', SC_OLetter), ('\u{1c50}',
- '\u{1c59}', SC_Numeric), ('\u{1c5a}', '\u{1c7d}', SC_OLetter), ('\u{1c7e}', '\u{1c7f}',
- SC_STerm), ('\u{1c80}', '\u{1c88}', SC_Lower), ('\u{1c90}', '\u{1cba}', SC_OLetter),
- ('\u{1cbd}', '\u{1cbf}', SC_OLetter), ('\u{1cd0}', '\u{1cd2}', SC_Extend), ('\u{1cd4}',
- '\u{1ce8}', SC_Extend), ('\u{1ce9}', '\u{1cec}', SC_OLetter), ('\u{1ced}', '\u{1ced}',
- SC_Extend), ('\u{1cee}', '\u{1cf3}', SC_OLetter), ('\u{1cf4}', '\u{1cf4}', SC_Extend),
- ('\u{1cf5}', '\u{1cf6}', SC_OLetter), ('\u{1cf7}', '\u{1cf9}', SC_Extend), ('\u{1cfa}',
- '\u{1cfa}', SC_OLetter), ('\u{1d00}', '\u{1dbf}', SC_Lower), ('\u{1dc0}', '\u{1dff}',
- SC_Extend), ('\u{1e00}', '\u{1e00}', SC_Upper), ('\u{1e01}', '\u{1e01}', SC_Lower),
- ('\u{1e02}', '\u{1e02}', SC_Upper), ('\u{1e03}', '\u{1e03}', SC_Lower), ('\u{1e04}',
- '\u{1e04}', SC_Upper), ('\u{1e05}', '\u{1e05}', SC_Lower), ('\u{1e06}', '\u{1e06}',
- SC_Upper), ('\u{1e07}', '\u{1e07}', SC_Lower), ('\u{1e08}', '\u{1e08}', SC_Upper),
- ('\u{1e09}', '\u{1e09}', SC_Lower), ('\u{1e0a}', '\u{1e0a}', SC_Upper), ('\u{1e0b}',
- '\u{1e0b}', SC_Lower), ('\u{1e0c}', '\u{1e0c}', SC_Upper), ('\u{1e0d}', '\u{1e0d}',
- SC_Lower), ('\u{1e0e}', '\u{1e0e}', SC_Upper), ('\u{1e0f}', '\u{1e0f}', SC_Lower),
- ('\u{1e10}', '\u{1e10}', SC_Upper), ('\u{1e11}', '\u{1e11}', SC_Lower), ('\u{1e12}',
- '\u{1e12}', SC_Upper), ('\u{1e13}', '\u{1e13}', SC_Lower), ('\u{1e14}', '\u{1e14}',
- SC_Upper), ('\u{1e15}', '\u{1e15}', SC_Lower), ('\u{1e16}', '\u{1e16}', SC_Upper),
- ('\u{1e17}', '\u{1e17}', SC_Lower), ('\u{1e18}', '\u{1e18}', SC_Upper), ('\u{1e19}',
- '\u{1e19}', SC_Lower), ('\u{1e1a}', '\u{1e1a}', SC_Upper), ('\u{1e1b}', '\u{1e1b}',
- SC_Lower), ('\u{1e1c}', '\u{1e1c}', SC_Upper), ('\u{1e1d}', '\u{1e1d}', SC_Lower),
- ('\u{1e1e}', '\u{1e1e}', SC_Upper), ('\u{1e1f}', '\u{1e1f}', SC_Lower), ('\u{1e20}',
- '\u{1e20}', SC_Upper), ('\u{1e21}', '\u{1e21}', SC_Lower), ('\u{1e22}', '\u{1e22}',
- SC_Upper), ('\u{1e23}', '\u{1e23}', SC_Lower), ('\u{1e24}', '\u{1e24}', SC_Upper),
- ('\u{1e25}', '\u{1e25}', SC_Lower), ('\u{1e26}', '\u{1e26}', SC_Upper), ('\u{1e27}',
- '\u{1e27}', SC_Lower), ('\u{1e28}', '\u{1e28}', SC_Upper), ('\u{1e29}', '\u{1e29}',
- SC_Lower), ('\u{1e2a}', '\u{1e2a}', SC_Upper), ('\u{1e2b}', '\u{1e2b}', SC_Lower),
- ('\u{1e2c}', '\u{1e2c}', SC_Upper), ('\u{1e2d}', '\u{1e2d}', SC_Lower), ('\u{1e2e}',
- '\u{1e2e}', SC_Upper), ('\u{1e2f}', '\u{1e2f}', SC_Lower), ('\u{1e30}', '\u{1e30}',
- SC_Upper), ('\u{1e31}', '\u{1e31}', SC_Lower), ('\u{1e32}', '\u{1e32}', SC_Upper),
- ('\u{1e33}', '\u{1e33}', SC_Lower), ('\u{1e34}', '\u{1e34}', SC_Upper), ('\u{1e35}',
- '\u{1e35}', SC_Lower), ('\u{1e36}', '\u{1e36}', SC_Upper), ('\u{1e37}', '\u{1e37}',
- SC_Lower), ('\u{1e38}', '\u{1e38}', SC_Upper), ('\u{1e39}', '\u{1e39}', SC_Lower),
- ('\u{1e3a}', '\u{1e3a}', SC_Upper), ('\u{1e3b}', '\u{1e3b}', SC_Lower), ('\u{1e3c}',
- '\u{1e3c}', SC_Upper), ('\u{1e3d}', '\u{1e3d}', SC_Lower), ('\u{1e3e}', '\u{1e3e}',
- SC_Upper), ('\u{1e3f}', '\u{1e3f}', SC_Lower), ('\u{1e40}', '\u{1e40}', SC_Upper),
- ('\u{1e41}', '\u{1e41}', SC_Lower), ('\u{1e42}', '\u{1e42}', SC_Upper), ('\u{1e43}',
- '\u{1e43}', SC_Lower), ('\u{1e44}', '\u{1e44}', SC_Upper), ('\u{1e45}', '\u{1e45}',
- SC_Lower), ('\u{1e46}', '\u{1e46}', SC_Upper), ('\u{1e47}', '\u{1e47}', SC_Lower),
- ('\u{1e48}', '\u{1e48}', SC_Upper), ('\u{1e49}', '\u{1e49}', SC_Lower), ('\u{1e4a}',
- '\u{1e4a}', SC_Upper), ('\u{1e4b}', '\u{1e4b}', SC_Lower), ('\u{1e4c}', '\u{1e4c}',
- SC_Upper), ('\u{1e4d}', '\u{1e4d}', SC_Lower), ('\u{1e4e}', '\u{1e4e}', SC_Upper),
- ('\u{1e4f}', '\u{1e4f}', SC_Lower), ('\u{1e50}', '\u{1e50}', SC_Upper), ('\u{1e51}',
- '\u{1e51}', SC_Lower), ('\u{1e52}', '\u{1e52}', SC_Upper), ('\u{1e53}', '\u{1e53}',
- SC_Lower), ('\u{1e54}', '\u{1e54}', SC_Upper), ('\u{1e55}', '\u{1e55}', SC_Lower),
- ('\u{1e56}', '\u{1e56}', SC_Upper), ('\u{1e57}', '\u{1e57}', SC_Lower), ('\u{1e58}',
- '\u{1e58}', SC_Upper), ('\u{1e59}', '\u{1e59}', SC_Lower), ('\u{1e5a}', '\u{1e5a}',
- SC_Upper), ('\u{1e5b}', '\u{1e5b}', SC_Lower), ('\u{1e5c}', '\u{1e5c}', SC_Upper),
- ('\u{1e5d}', '\u{1e5d}', SC_Lower), ('\u{1e5e}', '\u{1e5e}', SC_Upper), ('\u{1e5f}',
- '\u{1e5f}', SC_Lower), ('\u{1e60}', '\u{1e60}', SC_Upper), ('\u{1e61}', '\u{1e61}',
- SC_Lower), ('\u{1e62}', '\u{1e62}', SC_Upper), ('\u{1e63}', '\u{1e63}', SC_Lower),
- ('\u{1e64}', '\u{1e64}', SC_Upper), ('\u{1e65}', '\u{1e65}', SC_Lower), ('\u{1e66}',
- '\u{1e66}', SC_Upper), ('\u{1e67}', '\u{1e67}', SC_Lower), ('\u{1e68}', '\u{1e68}',
- SC_Upper), ('\u{1e69}', '\u{1e69}', SC_Lower), ('\u{1e6a}', '\u{1e6a}', SC_Upper),
- ('\u{1e6b}', '\u{1e6b}', SC_Lower), ('\u{1e6c}', '\u{1e6c}', SC_Upper), ('\u{1e6d}',
- '\u{1e6d}', SC_Lower), ('\u{1e6e}', '\u{1e6e}', SC_Upper), ('\u{1e6f}', '\u{1e6f}',
- SC_Lower), ('\u{1e70}', '\u{1e70}', SC_Upper), ('\u{1e71}', '\u{1e71}', SC_Lower),
- ('\u{1e72}', '\u{1e72}', SC_Upper), ('\u{1e73}', '\u{1e73}', SC_Lower), ('\u{1e74}',
- '\u{1e74}', SC_Upper), ('\u{1e75}', '\u{1e75}', SC_Lower), ('\u{1e76}', '\u{1e76}',
- SC_Upper), ('\u{1e77}', '\u{1e77}', SC_Lower), ('\u{1e78}', '\u{1e78}', SC_Upper),
- ('\u{1e79}', '\u{1e79}', SC_Lower), ('\u{1e7a}', '\u{1e7a}', SC_Upper), ('\u{1e7b}',
- '\u{1e7b}', SC_Lower), ('\u{1e7c}', '\u{1e7c}', SC_Upper), ('\u{1e7d}', '\u{1e7d}',
- SC_Lower), ('\u{1e7e}', '\u{1e7e}', SC_Upper), ('\u{1e7f}', '\u{1e7f}', SC_Lower),
- ('\u{1e80}', '\u{1e80}', SC_Upper), ('\u{1e81}', '\u{1e81}', SC_Lower), ('\u{1e82}',
- '\u{1e82}', SC_Upper), ('\u{1e83}', '\u{1e83}', SC_Lower), ('\u{1e84}', '\u{1e84}',
- SC_Upper), ('\u{1e85}', '\u{1e85}', SC_Lower), ('\u{1e86}', '\u{1e86}', SC_Upper),
- ('\u{1e87}', '\u{1e87}', SC_Lower), ('\u{1e88}', '\u{1e88}', SC_Upper), ('\u{1e89}',
- '\u{1e89}', SC_Lower), ('\u{1e8a}', '\u{1e8a}', SC_Upper), ('\u{1e8b}', '\u{1e8b}',
- SC_Lower), ('\u{1e8c}', '\u{1e8c}', SC_Upper), ('\u{1e8d}', '\u{1e8d}', SC_Lower),
- ('\u{1e8e}', '\u{1e8e}', SC_Upper), ('\u{1e8f}', '\u{1e8f}', SC_Lower), ('\u{1e90}',
- '\u{1e90}', SC_Upper), ('\u{1e91}', '\u{1e91}', SC_Lower), ('\u{1e92}', '\u{1e92}',
- SC_Upper), ('\u{1e93}', '\u{1e93}', SC_Lower), ('\u{1e94}', '\u{1e94}', SC_Upper),
- ('\u{1e95}', '\u{1e9d}', SC_Lower), ('\u{1e9e}', '\u{1e9e}', SC_Upper), ('\u{1e9f}',
- '\u{1e9f}', SC_Lower), ('\u{1ea0}', '\u{1ea0}', SC_Upper), ('\u{1ea1}', '\u{1ea1}',
- SC_Lower), ('\u{1ea2}', '\u{1ea2}', SC_Upper), ('\u{1ea3}', '\u{1ea3}', SC_Lower),
- ('\u{1ea4}', '\u{1ea4}', SC_Upper), ('\u{1ea5}', '\u{1ea5}', SC_Lower), ('\u{1ea6}',
- '\u{1ea6}', SC_Upper), ('\u{1ea7}', '\u{1ea7}', SC_Lower), ('\u{1ea8}', '\u{1ea8}',
- SC_Upper), ('\u{1ea9}', '\u{1ea9}', SC_Lower), ('\u{1eaa}', '\u{1eaa}', SC_Upper),
- ('\u{1eab}', '\u{1eab}', SC_Lower), ('\u{1eac}', '\u{1eac}', SC_Upper), ('\u{1ead}',
- '\u{1ead}', SC_Lower), ('\u{1eae}', '\u{1eae}', SC_Upper), ('\u{1eaf}', '\u{1eaf}',
- SC_Lower), ('\u{1eb0}', '\u{1eb0}', SC_Upper), ('\u{1eb1}', '\u{1eb1}', SC_Lower),
- ('\u{1eb2}', '\u{1eb2}', SC_Upper), ('\u{1eb3}', '\u{1eb3}', SC_Lower), ('\u{1eb4}',
- '\u{1eb4}', SC_Upper), ('\u{1eb5}', '\u{1eb5}', SC_Lower), ('\u{1eb6}', '\u{1eb6}',
- SC_Upper), ('\u{1eb7}', '\u{1eb7}', SC_Lower), ('\u{1eb8}', '\u{1eb8}', SC_Upper),
- ('\u{1eb9}', '\u{1eb9}', SC_Lower), ('\u{1eba}', '\u{1eba}', SC_Upper), ('\u{1ebb}',
- '\u{1ebb}', SC_Lower), ('\u{1ebc}', '\u{1ebc}', SC_Upper), ('\u{1ebd}', '\u{1ebd}',
- SC_Lower), ('\u{1ebe}', '\u{1ebe}', SC_Upper), ('\u{1ebf}', '\u{1ebf}', SC_Lower),
- ('\u{1ec0}', '\u{1ec0}', SC_Upper), ('\u{1ec1}', '\u{1ec1}', SC_Lower), ('\u{1ec2}',
- '\u{1ec2}', SC_Upper), ('\u{1ec3}', '\u{1ec3}', SC_Lower), ('\u{1ec4}', '\u{1ec4}',
- SC_Upper), ('\u{1ec5}', '\u{1ec5}', SC_Lower), ('\u{1ec6}', '\u{1ec6}', SC_Upper),
- ('\u{1ec7}', '\u{1ec7}', SC_Lower), ('\u{1ec8}', '\u{1ec8}', SC_Upper), ('\u{1ec9}',
- '\u{1ec9}', SC_Lower), ('\u{1eca}', '\u{1eca}', SC_Upper), ('\u{1ecb}', '\u{1ecb}',
- SC_Lower), ('\u{1ecc}', '\u{1ecc}', SC_Upper), ('\u{1ecd}', '\u{1ecd}', SC_Lower),
- ('\u{1ece}', '\u{1ece}', SC_Upper), ('\u{1ecf}', '\u{1ecf}', SC_Lower), ('\u{1ed0}',
- '\u{1ed0}', SC_Upper), ('\u{1ed1}', '\u{1ed1}', SC_Lower), ('\u{1ed2}', '\u{1ed2}',
- SC_Upper), ('\u{1ed3}', '\u{1ed3}', SC_Lower), ('\u{1ed4}', '\u{1ed4}', SC_Upper),
- ('\u{1ed5}', '\u{1ed5}', SC_Lower), ('\u{1ed6}', '\u{1ed6}', SC_Upper), ('\u{1ed7}',
- '\u{1ed7}', SC_Lower), ('\u{1ed8}', '\u{1ed8}', SC_Upper), ('\u{1ed9}', '\u{1ed9}',
- SC_Lower), ('\u{1eda}', '\u{1eda}', SC_Upper), ('\u{1edb}', '\u{1edb}', SC_Lower),
- ('\u{1edc}', '\u{1edc}', SC_Upper), ('\u{1edd}', '\u{1edd}', SC_Lower), ('\u{1ede}',
- '\u{1ede}', SC_Upper), ('\u{1edf}', '\u{1edf}', SC_Lower), ('\u{1ee0}', '\u{1ee0}',
- SC_Upper), ('\u{1ee1}', '\u{1ee1}', SC_Lower), ('\u{1ee2}', '\u{1ee2}', SC_Upper),
- ('\u{1ee3}', '\u{1ee3}', SC_Lower), ('\u{1ee4}', '\u{1ee4}', SC_Upper), ('\u{1ee5}',
- '\u{1ee5}', SC_Lower), ('\u{1ee6}', '\u{1ee6}', SC_Upper), ('\u{1ee7}', '\u{1ee7}',
- SC_Lower), ('\u{1ee8}', '\u{1ee8}', SC_Upper), ('\u{1ee9}', '\u{1ee9}', SC_Lower),
- ('\u{1eea}', '\u{1eea}', SC_Upper), ('\u{1eeb}', '\u{1eeb}', SC_Lower), ('\u{1eec}',
- '\u{1eec}', SC_Upper), ('\u{1eed}', '\u{1eed}', SC_Lower), ('\u{1eee}', '\u{1eee}',
- SC_Upper), ('\u{1eef}', '\u{1eef}', SC_Lower), ('\u{1ef0}', '\u{1ef0}', SC_Upper),
- ('\u{1ef1}', '\u{1ef1}', SC_Lower), ('\u{1ef2}', '\u{1ef2}', SC_Upper), ('\u{1ef3}',
- '\u{1ef3}', SC_Lower), ('\u{1ef4}', '\u{1ef4}', SC_Upper), ('\u{1ef5}', '\u{1ef5}',
- SC_Lower), ('\u{1ef6}', '\u{1ef6}', SC_Upper), ('\u{1ef7}', '\u{1ef7}', SC_Lower),
- ('\u{1ef8}', '\u{1ef8}', SC_Upper), ('\u{1ef9}', '\u{1ef9}', SC_Lower), ('\u{1efa}',
- '\u{1efa}', SC_Upper), ('\u{1efb}', '\u{1efb}', SC_Lower), ('\u{1efc}', '\u{1efc}',
- SC_Upper), ('\u{1efd}', '\u{1efd}', SC_Lower), ('\u{1efe}', '\u{1efe}', SC_Upper),
- ('\u{1eff}', '\u{1f07}', SC_Lower), ('\u{1f08}', '\u{1f0f}', SC_Upper), ('\u{1f10}',
- '\u{1f15}', SC_Lower), ('\u{1f18}', '\u{1f1d}', SC_Upper), ('\u{1f20}', '\u{1f27}',
- SC_Lower), ('\u{1f28}', '\u{1f2f}', SC_Upper), ('\u{1f30}', '\u{1f37}', SC_Lower),
- ('\u{1f38}', '\u{1f3f}', SC_Upper), ('\u{1f40}', '\u{1f45}', SC_Lower), ('\u{1f48}',
- '\u{1f4d}', SC_Upper), ('\u{1f50}', '\u{1f57}', SC_Lower), ('\u{1f59}', '\u{1f59}',
- SC_Upper), ('\u{1f5b}', '\u{1f5b}', SC_Upper), ('\u{1f5d}', '\u{1f5d}', SC_Upper),
- ('\u{1f5f}', '\u{1f5f}', SC_Upper), ('\u{1f60}', '\u{1f67}', SC_Lower), ('\u{1f68}',
- '\u{1f6f}', SC_Upper), ('\u{1f70}', '\u{1f7d}', SC_Lower), ('\u{1f80}', '\u{1f87}',
- SC_Lower), ('\u{1f88}', '\u{1f8f}', SC_Upper), ('\u{1f90}', '\u{1f97}', SC_Lower),
- ('\u{1f98}', '\u{1f9f}', SC_Upper), ('\u{1fa0}', '\u{1fa7}', SC_Lower), ('\u{1fa8}',
- '\u{1faf}', SC_Upper), ('\u{1fb0}', '\u{1fb4}', SC_Lower), ('\u{1fb6}', '\u{1fb7}',
- SC_Lower), ('\u{1fb8}', '\u{1fbc}', SC_Upper), ('\u{1fbe}', '\u{1fbe}', SC_Lower),
- ('\u{1fc2}', '\u{1fc4}', SC_Lower), ('\u{1fc6}', '\u{1fc7}', SC_Lower), ('\u{1fc8}',
- '\u{1fcc}', SC_Upper), ('\u{1fd0}', '\u{1fd3}', SC_Lower), ('\u{1fd6}', '\u{1fd7}',
- SC_Lower), ('\u{1fd8}', '\u{1fdb}', SC_Upper), ('\u{1fe0}', '\u{1fe7}', SC_Lower),
- ('\u{1fe8}', '\u{1fec}', SC_Upper), ('\u{1ff2}', '\u{1ff4}', SC_Lower), ('\u{1ff6}',
- '\u{1ff7}', SC_Lower), ('\u{1ff8}', '\u{1ffc}', SC_Upper), ('\u{2000}', '\u{200a}', SC_Sp),
- ('\u{200b}', '\u{200b}', SC_Format), ('\u{200c}', '\u{200d}', SC_Extend), ('\u{200e}',
- '\u{200f}', SC_Format), ('\u{2013}', '\u{2014}', SC_SContinue), ('\u{2018}', '\u{201f}',
- SC_Close), ('\u{2024}', '\u{2024}', SC_ATerm), ('\u{2028}', '\u{2029}', SC_Sep),
- ('\u{202a}', '\u{202e}', SC_Format), ('\u{202f}', '\u{202f}', SC_Sp), ('\u{2039}',
- '\u{203a}', SC_Close), ('\u{203c}', '\u{203d}', SC_STerm), ('\u{2045}', '\u{2046}',
- SC_Close), ('\u{2047}', '\u{2049}', SC_STerm), ('\u{205f}', '\u{205f}', SC_Sp), ('\u{2060}',
- '\u{2064}', SC_Format), ('\u{2066}', '\u{206f}', SC_Format), ('\u{2071}', '\u{2071}',
- SC_Lower), ('\u{207d}', '\u{207e}', SC_Close), ('\u{207f}', '\u{207f}', SC_Lower),
- ('\u{208d}', '\u{208e}', SC_Close), ('\u{2090}', '\u{209c}', SC_Lower), ('\u{20d0}',
- '\u{20f0}', SC_Extend), ('\u{2102}', '\u{2102}', SC_Upper), ('\u{2107}', '\u{2107}',
- SC_Upper), ('\u{210a}', '\u{210a}', SC_Lower), ('\u{210b}', '\u{210d}', SC_Upper),
- ('\u{210e}', '\u{210f}', SC_Lower), ('\u{2110}', '\u{2112}', SC_Upper), ('\u{2113}',
- '\u{2113}', SC_Lower), ('\u{2115}', '\u{2115}', SC_Upper), ('\u{2119}', '\u{211d}',
- SC_Upper), ('\u{2124}', '\u{2124}', SC_Upper), ('\u{2126}', '\u{2126}', SC_Upper),
- ('\u{2128}', '\u{2128}', SC_Upper), ('\u{212a}', '\u{212d}', SC_Upper), ('\u{212f}',
- '\u{212f}', SC_Lower), ('\u{2130}', '\u{2133}', SC_Upper), ('\u{2134}', '\u{2134}',
- SC_Lower), ('\u{2135}', '\u{2138}', SC_OLetter), ('\u{2139}', '\u{2139}', SC_Lower),
- ('\u{213c}', '\u{213d}', SC_Lower), ('\u{213e}', '\u{213f}', SC_Upper), ('\u{2145}',
- '\u{2145}', SC_Upper), ('\u{2146}', '\u{2149}', SC_Lower), ('\u{214e}', '\u{214e}',
- SC_Lower), ('\u{2160}', '\u{216f}', SC_Upper), ('\u{2170}', '\u{217f}', SC_Lower),
- ('\u{2180}', '\u{2182}', SC_OLetter), ('\u{2183}', '\u{2183}', SC_Upper), ('\u{2184}',
- '\u{2184}', SC_Lower), ('\u{2185}', '\u{2188}', SC_OLetter), ('\u{2308}', '\u{230b}',
- SC_Close), ('\u{2329}', '\u{232a}', SC_Close), ('\u{24b6}', '\u{24cf}', SC_Upper),
- ('\u{24d0}', '\u{24e9}', SC_Lower), ('\u{275b}', '\u{2760}', SC_Close), ('\u{2768}',
- '\u{2775}', SC_Close), ('\u{27c5}', '\u{27c6}', SC_Close), ('\u{27e6}', '\u{27ef}',
- SC_Close), ('\u{2983}', '\u{2998}', SC_Close), ('\u{29d8}', '\u{29db}', SC_Close),
- ('\u{29fc}', '\u{29fd}', SC_Close), ('\u{2c00}', '\u{2c2f}', SC_Upper), ('\u{2c30}',
- '\u{2c5f}', SC_Lower), ('\u{2c60}', '\u{2c60}', SC_Upper), ('\u{2c61}', '\u{2c61}',
- SC_Lower), ('\u{2c62}', '\u{2c64}', SC_Upper), ('\u{2c65}', '\u{2c66}', SC_Lower),
- ('\u{2c67}', '\u{2c67}', SC_Upper), ('\u{2c68}', '\u{2c68}', SC_Lower), ('\u{2c69}',
- '\u{2c69}', SC_Upper), ('\u{2c6a}', '\u{2c6a}', SC_Lower), ('\u{2c6b}', '\u{2c6b}',
- SC_Upper), ('\u{2c6c}', '\u{2c6c}', SC_Lower), ('\u{2c6d}', '\u{2c70}', SC_Upper),
- ('\u{2c71}', '\u{2c71}', SC_Lower), ('\u{2c72}', '\u{2c72}', SC_Upper), ('\u{2c73}',
- '\u{2c74}', SC_Lower), ('\u{2c75}', '\u{2c75}', SC_Upper), ('\u{2c76}', '\u{2c7d}',
- SC_Lower), ('\u{2c7e}', '\u{2c80}', SC_Upper), ('\u{2c81}', '\u{2c81}', SC_Lower),
- ('\u{2c82}', '\u{2c82}', SC_Upper), ('\u{2c83}', '\u{2c83}', SC_Lower), ('\u{2c84}',
- '\u{2c84}', SC_Upper), ('\u{2c85}', '\u{2c85}', SC_Lower), ('\u{2c86}', '\u{2c86}',
- SC_Upper), ('\u{2c87}', '\u{2c87}', SC_Lower), ('\u{2c88}', '\u{2c88}', SC_Upper),
- ('\u{2c89}', '\u{2c89}', SC_Lower), ('\u{2c8a}', '\u{2c8a}', SC_Upper), ('\u{2c8b}',
- '\u{2c8b}', SC_Lower), ('\u{2c8c}', '\u{2c8c}', SC_Upper), ('\u{2c8d}', '\u{2c8d}',
- SC_Lower), ('\u{2c8e}', '\u{2c8e}', SC_Upper), ('\u{2c8f}', '\u{2c8f}', SC_Lower),
- ('\u{2c90}', '\u{2c90}', SC_Upper), ('\u{2c91}', '\u{2c91}', SC_Lower), ('\u{2c92}',
- '\u{2c92}', SC_Upper), ('\u{2c93}', '\u{2c93}', SC_Lower), ('\u{2c94}', '\u{2c94}',
- SC_Upper), ('\u{2c95}', '\u{2c95}', SC_Lower), ('\u{2c96}', '\u{2c96}', SC_Upper),
- ('\u{2c97}', '\u{2c97}', SC_Lower), ('\u{2c98}', '\u{2c98}', SC_Upper), ('\u{2c99}',
- '\u{2c99}', SC_Lower), ('\u{2c9a}', '\u{2c9a}', SC_Upper), ('\u{2c9b}', '\u{2c9b}',
- SC_Lower), ('\u{2c9c}', '\u{2c9c}', SC_Upper), ('\u{2c9d}', '\u{2c9d}', SC_Lower),
- ('\u{2c9e}', '\u{2c9e}', SC_Upper), ('\u{2c9f}', '\u{2c9f}', SC_Lower), ('\u{2ca0}',
- '\u{2ca0}', SC_Upper), ('\u{2ca1}', '\u{2ca1}', SC_Lower), ('\u{2ca2}', '\u{2ca2}',
- SC_Upper), ('\u{2ca3}', '\u{2ca3}', SC_Lower), ('\u{2ca4}', '\u{2ca4}', SC_Upper),
- ('\u{2ca5}', '\u{2ca5}', SC_Lower), ('\u{2ca6}', '\u{2ca6}', SC_Upper), ('\u{2ca7}',
- '\u{2ca7}', SC_Lower), ('\u{2ca8}', '\u{2ca8}', SC_Upper), ('\u{2ca9}', '\u{2ca9}',
- SC_Lower), ('\u{2caa}', '\u{2caa}', SC_Upper), ('\u{2cab}', '\u{2cab}', SC_Lower),
- ('\u{2cac}', '\u{2cac}', SC_Upper), ('\u{2cad}', '\u{2cad}', SC_Lower), ('\u{2cae}',
- '\u{2cae}', SC_Upper), ('\u{2caf}', '\u{2caf}', SC_Lower), ('\u{2cb0}', '\u{2cb0}',
- SC_Upper), ('\u{2cb1}', '\u{2cb1}', SC_Lower), ('\u{2cb2}', '\u{2cb2}', SC_Upper),
- ('\u{2cb3}', '\u{2cb3}', SC_Lower), ('\u{2cb4}', '\u{2cb4}', SC_Upper), ('\u{2cb5}',
- '\u{2cb5}', SC_Lower), ('\u{2cb6}', '\u{2cb6}', SC_Upper), ('\u{2cb7}', '\u{2cb7}',
- SC_Lower), ('\u{2cb8}', '\u{2cb8}', SC_Upper), ('\u{2cb9}', '\u{2cb9}', SC_Lower),
- ('\u{2cba}', '\u{2cba}', SC_Upper), ('\u{2cbb}', '\u{2cbb}', SC_Lower), ('\u{2cbc}',
- '\u{2cbc}', SC_Upper), ('\u{2cbd}', '\u{2cbd}', SC_Lower), ('\u{2cbe}', '\u{2cbe}',
- SC_Upper), ('\u{2cbf}', '\u{2cbf}', SC_Lower), ('\u{2cc0}', '\u{2cc0}', SC_Upper),
- ('\u{2cc1}', '\u{2cc1}', SC_Lower), ('\u{2cc2}', '\u{2cc2}', SC_Upper), ('\u{2cc3}',
- '\u{2cc3}', SC_Lower), ('\u{2cc4}', '\u{2cc4}', SC_Upper), ('\u{2cc5}', '\u{2cc5}',
- SC_Lower), ('\u{2cc6}', '\u{2cc6}', SC_Upper), ('\u{2cc7}', '\u{2cc7}', SC_Lower),
- ('\u{2cc8}', '\u{2cc8}', SC_Upper), ('\u{2cc9}', '\u{2cc9}', SC_Lower), ('\u{2cca}',
- '\u{2cca}', SC_Upper), ('\u{2ccb}', '\u{2ccb}', SC_Lower), ('\u{2ccc}', '\u{2ccc}',
- SC_Upper), ('\u{2ccd}', '\u{2ccd}', SC_Lower), ('\u{2cce}', '\u{2cce}', SC_Upper),
- ('\u{2ccf}', '\u{2ccf}', SC_Lower), ('\u{2cd0}', '\u{2cd0}', SC_Upper), ('\u{2cd1}',
- '\u{2cd1}', SC_Lower), ('\u{2cd2}', '\u{2cd2}', SC_Upper), ('\u{2cd3}', '\u{2cd3}',
- SC_Lower), ('\u{2cd4}', '\u{2cd4}', SC_Upper), ('\u{2cd5}', '\u{2cd5}', SC_Lower),
- ('\u{2cd6}', '\u{2cd6}', SC_Upper), ('\u{2cd7}', '\u{2cd7}', SC_Lower), ('\u{2cd8}',
- '\u{2cd8}', SC_Upper), ('\u{2cd9}', '\u{2cd9}', SC_Lower), ('\u{2cda}', '\u{2cda}',
- SC_Upper), ('\u{2cdb}', '\u{2cdb}', SC_Lower), ('\u{2cdc}', '\u{2cdc}', SC_Upper),
- ('\u{2cdd}', '\u{2cdd}', SC_Lower), ('\u{2cde}', '\u{2cde}', SC_Upper), ('\u{2cdf}',
- '\u{2cdf}', SC_Lower), ('\u{2ce0}', '\u{2ce0}', SC_Upper), ('\u{2ce1}', '\u{2ce1}',
- SC_Lower), ('\u{2ce2}', '\u{2ce2}', SC_Upper), ('\u{2ce3}', '\u{2ce4}', SC_Lower),
- ('\u{2ceb}', '\u{2ceb}', SC_Upper), ('\u{2cec}', '\u{2cec}', SC_Lower), ('\u{2ced}',
- '\u{2ced}', SC_Upper), ('\u{2cee}', '\u{2cee}', SC_Lower), ('\u{2cef}', '\u{2cf1}',
- SC_Extend), ('\u{2cf2}', '\u{2cf2}', SC_Upper), ('\u{2cf3}', '\u{2cf3}', SC_Lower),
- ('\u{2d00}', '\u{2d25}', SC_Lower), ('\u{2d27}', '\u{2d27}', SC_Lower), ('\u{2d2d}',
- '\u{2d2d}', SC_Lower), ('\u{2d30}', '\u{2d67}', SC_OLetter), ('\u{2d6f}', '\u{2d6f}',
- SC_OLetter), ('\u{2d7f}', '\u{2d7f}', SC_Extend), ('\u{2d80}', '\u{2d96}', SC_OLetter),
- ('\u{2da0}', '\u{2da6}', SC_OLetter), ('\u{2da8}', '\u{2dae}', SC_OLetter), ('\u{2db0}',
- '\u{2db6}', SC_OLetter), ('\u{2db8}', '\u{2dbe}', SC_OLetter), ('\u{2dc0}', '\u{2dc6}',
- SC_OLetter), ('\u{2dc8}', '\u{2dce}', SC_OLetter), ('\u{2dd0}', '\u{2dd6}', SC_OLetter),
- ('\u{2dd8}', '\u{2dde}', SC_OLetter), ('\u{2de0}', '\u{2dff}', SC_Extend), ('\u{2e00}',
- '\u{2e0d}', SC_Close), ('\u{2e1c}', '\u{2e1d}', SC_Close), ('\u{2e20}', '\u{2e29}',
- SC_Close), ('\u{2e2e}', '\u{2e2e}', SC_STerm), ('\u{2e2f}', '\u{2e2f}', SC_OLetter),
- ('\u{2e3c}', '\u{2e3c}', SC_STerm), ('\u{2e42}', '\u{2e42}', SC_Close), ('\u{2e53}',
- '\u{2e54}', SC_STerm), ('\u{2e55}', '\u{2e5c}', SC_Close), ('\u{3000}', '\u{3000}', SC_Sp),
- ('\u{3001}', '\u{3001}', SC_SContinue), ('\u{3002}', '\u{3002}', SC_STerm), ('\u{3005}',
- '\u{3007}', SC_OLetter), ('\u{3008}', '\u{3011}', SC_Close), ('\u{3014}', '\u{301b}',
- SC_Close), ('\u{301d}', '\u{301f}', SC_Close), ('\u{3021}', '\u{3029}', SC_OLetter),
- ('\u{302a}', '\u{302f}', SC_Extend), ('\u{3031}', '\u{3035}', SC_OLetter), ('\u{3038}',
- '\u{303c}', SC_OLetter), ('\u{3041}', '\u{3096}', SC_OLetter), ('\u{3099}', '\u{309a}',
- SC_Extend), ('\u{309d}', '\u{309f}', SC_OLetter), ('\u{30a1}', '\u{30fa}', SC_OLetter),
- ('\u{30fc}', '\u{30ff}', SC_OLetter), ('\u{3105}', '\u{312f}', SC_OLetter), ('\u{3131}',
- '\u{318e}', SC_OLetter), ('\u{31a0}', '\u{31bf}', SC_OLetter), ('\u{31f0}', '\u{31ff}',
- SC_OLetter), ('\u{3400}', '\u{4dbf}', SC_OLetter), ('\u{4e00}', '\u{a48c}', SC_OLetter),
- ('\u{a4d0}', '\u{a4fd}', SC_OLetter), ('\u{a4ff}', '\u{a4ff}', SC_STerm), ('\u{a500}',
- '\u{a60c}', SC_OLetter), ('\u{a60e}', '\u{a60f}', SC_STerm), ('\u{a610}', '\u{a61f}',
- SC_OLetter), ('\u{a620}', '\u{a629}', SC_Numeric), ('\u{a62a}', '\u{a62b}', SC_OLetter),
- ('\u{a640}', '\u{a640}', SC_Upper), ('\u{a641}', '\u{a641}', SC_Lower), ('\u{a642}',
- '\u{a642}', SC_Upper), ('\u{a643}', '\u{a643}', SC_Lower), ('\u{a644}', '\u{a644}',
- SC_Upper), ('\u{a645}', '\u{a645}', SC_Lower), ('\u{a646}', '\u{a646}', SC_Upper),
- ('\u{a647}', '\u{a647}', SC_Lower), ('\u{a648}', '\u{a648}', SC_Upper), ('\u{a649}',
- '\u{a649}', SC_Lower), ('\u{a64a}', '\u{a64a}', SC_Upper), ('\u{a64b}', '\u{a64b}',
- SC_Lower), ('\u{a64c}', '\u{a64c}', SC_Upper), ('\u{a64d}', '\u{a64d}', SC_Lower),
- ('\u{a64e}', '\u{a64e}', SC_Upper), ('\u{a64f}', '\u{a64f}', SC_Lower), ('\u{a650}',
- '\u{a650}', SC_Upper), ('\u{a651}', '\u{a651}', SC_Lower), ('\u{a652}', '\u{a652}',
- SC_Upper), ('\u{a653}', '\u{a653}', SC_Lower), ('\u{a654}', '\u{a654}', SC_Upper),
- ('\u{a655}', '\u{a655}', SC_Lower), ('\u{a656}', '\u{a656}', SC_Upper), ('\u{a657}',
- '\u{a657}', SC_Lower), ('\u{a658}', '\u{a658}', SC_Upper), ('\u{a659}', '\u{a659}',
- SC_Lower), ('\u{a65a}', '\u{a65a}', SC_Upper), ('\u{a65b}', '\u{a65b}', SC_Lower),
- ('\u{a65c}', '\u{a65c}', SC_Upper), ('\u{a65d}', '\u{a65d}', SC_Lower), ('\u{a65e}',
- '\u{a65e}', SC_Upper), ('\u{a65f}', '\u{a65f}', SC_Lower), ('\u{a660}', '\u{a660}',
- SC_Upper), ('\u{a661}', '\u{a661}', SC_Lower), ('\u{a662}', '\u{a662}', SC_Upper),
- ('\u{a663}', '\u{a663}', SC_Lower), ('\u{a664}', '\u{a664}', SC_Upper), ('\u{a665}',
- '\u{a665}', SC_Lower), ('\u{a666}', '\u{a666}', SC_Upper), ('\u{a667}', '\u{a667}',
- SC_Lower), ('\u{a668}', '\u{a668}', SC_Upper), ('\u{a669}', '\u{a669}', SC_Lower),
- ('\u{a66a}', '\u{a66a}', SC_Upper), ('\u{a66b}', '\u{a66b}', SC_Lower), ('\u{a66c}',
- '\u{a66c}', SC_Upper), ('\u{a66d}', '\u{a66d}', SC_Lower), ('\u{a66e}', '\u{a66e}',
- SC_OLetter), ('\u{a66f}', '\u{a672}', SC_Extend), ('\u{a674}', '\u{a67d}', SC_Extend),
- ('\u{a67f}', '\u{a67f}', SC_OLetter), ('\u{a680}', '\u{a680}', SC_Upper), ('\u{a681}',
- '\u{a681}', SC_Lower), ('\u{a682}', '\u{a682}', SC_Upper), ('\u{a683}', '\u{a683}',
- SC_Lower), ('\u{a684}', '\u{a684}', SC_Upper), ('\u{a685}', '\u{a685}', SC_Lower),
- ('\u{a686}', '\u{a686}', SC_Upper), ('\u{a687}', '\u{a687}', SC_Lower), ('\u{a688}',
- '\u{a688}', SC_Upper), ('\u{a689}', '\u{a689}', SC_Lower), ('\u{a68a}', '\u{a68a}',
- SC_Upper), ('\u{a68b}', '\u{a68b}', SC_Lower), ('\u{a68c}', '\u{a68c}', SC_Upper),
- ('\u{a68d}', '\u{a68d}', SC_Lower), ('\u{a68e}', '\u{a68e}', SC_Upper), ('\u{a68f}',
- '\u{a68f}', SC_Lower), ('\u{a690}', '\u{a690}', SC_Upper), ('\u{a691}', '\u{a691}',
- SC_Lower), ('\u{a692}', '\u{a692}', SC_Upper), ('\u{a693}', '\u{a693}', SC_Lower),
- ('\u{a694}', '\u{a694}', SC_Upper), ('\u{a695}', '\u{a695}', SC_Lower), ('\u{a696}',
- '\u{a696}', SC_Upper), ('\u{a697}', '\u{a697}', SC_Lower), ('\u{a698}', '\u{a698}',
- SC_Upper), ('\u{a699}', '\u{a699}', SC_Lower), ('\u{a69a}', '\u{a69a}', SC_Upper),
- ('\u{a69b}', '\u{a69d}', SC_Lower), ('\u{a69e}', '\u{a69f}', SC_Extend), ('\u{a6a0}',
- '\u{a6ef}', SC_OLetter), ('\u{a6f0}', '\u{a6f1}', SC_Extend), ('\u{a6f3}', '\u{a6f3}',
- SC_STerm), ('\u{a6f7}', '\u{a6f7}', SC_STerm), ('\u{a717}', '\u{a71f}', SC_OLetter),
- ('\u{a722}', '\u{a722}', SC_Upper), ('\u{a723}', '\u{a723}', SC_Lower), ('\u{a724}',
- '\u{a724}', SC_Upper), ('\u{a725}', '\u{a725}', SC_Lower), ('\u{a726}', '\u{a726}',
- SC_Upper), ('\u{a727}', '\u{a727}', SC_Lower), ('\u{a728}', '\u{a728}', SC_Upper),
- ('\u{a729}', '\u{a729}', SC_Lower), ('\u{a72a}', '\u{a72a}', SC_Upper), ('\u{a72b}',
- '\u{a72b}', SC_Lower), ('\u{a72c}', '\u{a72c}', SC_Upper), ('\u{a72d}', '\u{a72d}',
- SC_Lower), ('\u{a72e}', '\u{a72e}', SC_Upper), ('\u{a72f}', '\u{a731}', SC_Lower),
- ('\u{a732}', '\u{a732}', SC_Upper), ('\u{a733}', '\u{a733}', SC_Lower), ('\u{a734}',
- '\u{a734}', SC_Upper), ('\u{a735}', '\u{a735}', SC_Lower), ('\u{a736}', '\u{a736}',
- SC_Upper), ('\u{a737}', '\u{a737}', SC_Lower), ('\u{a738}', '\u{a738}', SC_Upper),
- ('\u{a739}', '\u{a739}', SC_Lower), ('\u{a73a}', '\u{a73a}', SC_Upper), ('\u{a73b}',
- '\u{a73b}', SC_Lower), ('\u{a73c}', '\u{a73c}', SC_Upper), ('\u{a73d}', '\u{a73d}',
- SC_Lower), ('\u{a73e}', '\u{a73e}', SC_Upper), ('\u{a73f}', '\u{a73f}', SC_Lower),
- ('\u{a740}', '\u{a740}', SC_Upper), ('\u{a741}', '\u{a741}', SC_Lower), ('\u{a742}',
- '\u{a742}', SC_Upper), ('\u{a743}', '\u{a743}', SC_Lower), ('\u{a744}', '\u{a744}',
- SC_Upper), ('\u{a745}', '\u{a745}', SC_Lower), ('\u{a746}', '\u{a746}', SC_Upper),
- ('\u{a747}', '\u{a747}', SC_Lower), ('\u{a748}', '\u{a748}', SC_Upper), ('\u{a749}',
- '\u{a749}', SC_Lower), ('\u{a74a}', '\u{a74a}', SC_Upper), ('\u{a74b}', '\u{a74b}',
- SC_Lower), ('\u{a74c}', '\u{a74c}', SC_Upper), ('\u{a74d}', '\u{a74d}', SC_Lower),
- ('\u{a74e}', '\u{a74e}', SC_Upper), ('\u{a74f}', '\u{a74f}', SC_Lower), ('\u{a750}',
- '\u{a750}', SC_Upper), ('\u{a751}', '\u{a751}', SC_Lower), ('\u{a752}', '\u{a752}',
- SC_Upper), ('\u{a753}', '\u{a753}', SC_Lower), ('\u{a754}', '\u{a754}', SC_Upper),
- ('\u{a755}', '\u{a755}', SC_Lower), ('\u{a756}', '\u{a756}', SC_Upper), ('\u{a757}',
- '\u{a757}', SC_Lower), ('\u{a758}', '\u{a758}', SC_Upper), ('\u{a759}', '\u{a759}',
- SC_Lower), ('\u{a75a}', '\u{a75a}', SC_Upper), ('\u{a75b}', '\u{a75b}', SC_Lower),
- ('\u{a75c}', '\u{a75c}', SC_Upper), ('\u{a75d}', '\u{a75d}', SC_Lower), ('\u{a75e}',
- '\u{a75e}', SC_Upper), ('\u{a75f}', '\u{a75f}', SC_Lower), ('\u{a760}', '\u{a760}',
- SC_Upper), ('\u{a761}', '\u{a761}', SC_Lower), ('\u{a762}', '\u{a762}', SC_Upper),
- ('\u{a763}', '\u{a763}', SC_Lower), ('\u{a764}', '\u{a764}', SC_Upper), ('\u{a765}',
- '\u{a765}', SC_Lower), ('\u{a766}', '\u{a766}', SC_Upper), ('\u{a767}', '\u{a767}',
- SC_Lower), ('\u{a768}', '\u{a768}', SC_Upper), ('\u{a769}', '\u{a769}', SC_Lower),
- ('\u{a76a}', '\u{a76a}', SC_Upper), ('\u{a76b}', '\u{a76b}', SC_Lower), ('\u{a76c}',
- '\u{a76c}', SC_Upper), ('\u{a76d}', '\u{a76d}', SC_Lower), ('\u{a76e}', '\u{a76e}',
- SC_Upper), ('\u{a76f}', '\u{a778}', SC_Lower), ('\u{a779}', '\u{a779}', SC_Upper),
- ('\u{a77a}', '\u{a77a}', SC_Lower), ('\u{a77b}', '\u{a77b}', SC_Upper), ('\u{a77c}',
- '\u{a77c}', SC_Lower), ('\u{a77d}', '\u{a77e}', SC_Upper), ('\u{a77f}', '\u{a77f}',
- SC_Lower), ('\u{a780}', '\u{a780}', SC_Upper), ('\u{a781}', '\u{a781}', SC_Lower),
- ('\u{a782}', '\u{a782}', SC_Upper), ('\u{a783}', '\u{a783}', SC_Lower), ('\u{a784}',
- '\u{a784}', SC_Upper), ('\u{a785}', '\u{a785}', SC_Lower), ('\u{a786}', '\u{a786}',
- SC_Upper), ('\u{a787}', '\u{a787}', SC_Lower), ('\u{a788}', '\u{a788}', SC_OLetter),
- ('\u{a78b}', '\u{a78b}', SC_Upper), ('\u{a78c}', '\u{a78c}', SC_Lower), ('\u{a78d}',
- '\u{a78d}', SC_Upper), ('\u{a78e}', '\u{a78e}', SC_Lower), ('\u{a78f}', '\u{a78f}',
- SC_OLetter), ('\u{a790}', '\u{a790}', SC_Upper), ('\u{a791}', '\u{a791}', SC_Lower),
- ('\u{a792}', '\u{a792}', SC_Upper), ('\u{a793}', '\u{a795}', SC_Lower), ('\u{a796}',
- '\u{a796}', SC_Upper), ('\u{a797}', '\u{a797}', SC_Lower), ('\u{a798}', '\u{a798}',
- SC_Upper), ('\u{a799}', '\u{a799}', SC_Lower), ('\u{a79a}', '\u{a79a}', SC_Upper),
- ('\u{a79b}', '\u{a79b}', SC_Lower), ('\u{a79c}', '\u{a79c}', SC_Upper), ('\u{a79d}',
- '\u{a79d}', SC_Lower), ('\u{a79e}', '\u{a79e}', SC_Upper), ('\u{a79f}', '\u{a79f}',
- SC_Lower), ('\u{a7a0}', '\u{a7a0}', SC_Upper), ('\u{a7a1}', '\u{a7a1}', SC_Lower),
- ('\u{a7a2}', '\u{a7a2}', SC_Upper), ('\u{a7a3}', '\u{a7a3}', SC_Lower), ('\u{a7a4}',
- '\u{a7a4}', SC_Upper), ('\u{a7a5}', '\u{a7a5}', SC_Lower), ('\u{a7a6}', '\u{a7a6}',
- SC_Upper), ('\u{a7a7}', '\u{a7a7}', SC_Lower), ('\u{a7a8}', '\u{a7a8}', SC_Upper),
- ('\u{a7a9}', '\u{a7a9}', SC_Lower), ('\u{a7aa}', '\u{a7ae}', SC_Upper), ('\u{a7af}',
- '\u{a7af}', SC_Lower), ('\u{a7b0}', '\u{a7b4}', SC_Upper), ('\u{a7b5}', '\u{a7b5}',
- SC_Lower), ('\u{a7b6}', '\u{a7b6}', SC_Upper), ('\u{a7b7}', '\u{a7b7}', SC_Lower),
- ('\u{a7b8}', '\u{a7b8}', SC_Upper), ('\u{a7b9}', '\u{a7b9}', SC_Lower), ('\u{a7ba}',
- '\u{a7ba}', SC_Upper), ('\u{a7bb}', '\u{a7bb}', SC_Lower), ('\u{a7bc}', '\u{a7bc}',
- SC_Upper), ('\u{a7bd}', '\u{a7bd}', SC_Lower), ('\u{a7be}', '\u{a7be}', SC_Upper),
- ('\u{a7bf}', '\u{a7bf}', SC_Lower), ('\u{a7c0}', '\u{a7c0}', SC_Upper), ('\u{a7c1}',
- '\u{a7c1}', SC_Lower), ('\u{a7c2}', '\u{a7c2}', SC_Upper), ('\u{a7c3}', '\u{a7c3}',
- SC_Lower), ('\u{a7c4}', '\u{a7c7}', SC_Upper), ('\u{a7c8}', '\u{a7c8}', SC_Lower),
- ('\u{a7c9}', '\u{a7c9}', SC_Upper), ('\u{a7ca}', '\u{a7ca}', SC_Lower), ('\u{a7d0}',
- '\u{a7d0}', SC_Upper), ('\u{a7d1}', '\u{a7d1}', SC_Lower), ('\u{a7d3}', '\u{a7d3}',
- SC_Lower), ('\u{a7d5}', '\u{a7d5}', SC_Lower), ('\u{a7d6}', '\u{a7d6}', SC_Upper),
- ('\u{a7d7}', '\u{a7d7}', SC_Lower), ('\u{a7d8}', '\u{a7d8}', SC_Upper), ('\u{a7d9}',
- '\u{a7d9}', SC_Lower), ('\u{a7f2}', '\u{a7f4}', SC_OLetter), ('\u{a7f5}', '\u{a7f5}',
- SC_Upper), ('\u{a7f6}', '\u{a7f6}', SC_Lower), ('\u{a7f7}', '\u{a7f7}', SC_OLetter),
- ('\u{a7f8}', '\u{a7fa}', SC_Lower), ('\u{a7fb}', '\u{a801}', SC_OLetter), ('\u{a802}',
- '\u{a802}', SC_Extend), ('\u{a803}', '\u{a805}', SC_OLetter), ('\u{a806}', '\u{a806}',
- SC_Extend), ('\u{a807}', '\u{a80a}', SC_OLetter), ('\u{a80b}', '\u{a80b}', SC_Extend),
- ('\u{a80c}', '\u{a822}', SC_OLetter), ('\u{a823}', '\u{a827}', SC_Extend), ('\u{a82c}',
- '\u{a82c}', SC_Extend), ('\u{a840}', '\u{a873}', SC_OLetter), ('\u{a876}', '\u{a877}',
- SC_STerm), ('\u{a880}', '\u{a881}', SC_Extend), ('\u{a882}', '\u{a8b3}', SC_OLetter),
- ('\u{a8b4}', '\u{a8c5}', SC_Extend), ('\u{a8ce}', '\u{a8cf}', SC_STerm), ('\u{a8d0}',
- '\u{a8d9}', SC_Numeric), ('\u{a8e0}', '\u{a8f1}', SC_Extend), ('\u{a8f2}', '\u{a8f7}',
- SC_OLetter), ('\u{a8fb}', '\u{a8fb}', SC_OLetter), ('\u{a8fd}', '\u{a8fe}', SC_OLetter),
- ('\u{a8ff}', '\u{a8ff}', SC_Extend), ('\u{a900}', '\u{a909}', SC_Numeric), ('\u{a90a}',
- '\u{a925}', SC_OLetter), ('\u{a926}', '\u{a92d}', SC_Extend), ('\u{a92f}', '\u{a92f}',
- SC_STerm), ('\u{a930}', '\u{a946}', SC_OLetter), ('\u{a947}', '\u{a953}', SC_Extend),
- ('\u{a960}', '\u{a97c}', SC_OLetter), ('\u{a980}', '\u{a983}', SC_Extend), ('\u{a984}',
- '\u{a9b2}', SC_OLetter), ('\u{a9b3}', '\u{a9c0}', SC_Extend), ('\u{a9c8}', '\u{a9c9}',
- SC_STerm), ('\u{a9cf}', '\u{a9cf}', SC_OLetter), ('\u{a9d0}', '\u{a9d9}', SC_Numeric),
- ('\u{a9e0}', '\u{a9e4}', SC_OLetter), ('\u{a9e5}', '\u{a9e5}', SC_Extend), ('\u{a9e6}',
- '\u{a9ef}', SC_OLetter), ('\u{a9f0}', '\u{a9f9}', SC_Numeric), ('\u{a9fa}', '\u{a9fe}',
- SC_OLetter), ('\u{aa00}', '\u{aa28}', SC_OLetter), ('\u{aa29}', '\u{aa36}', SC_Extend),
- ('\u{aa40}', '\u{aa42}', SC_OLetter), ('\u{aa43}', '\u{aa43}', SC_Extend), ('\u{aa44}',
- '\u{aa4b}', SC_OLetter), ('\u{aa4c}', '\u{aa4d}', SC_Extend), ('\u{aa50}', '\u{aa59}',
- SC_Numeric), ('\u{aa5d}', '\u{aa5f}', SC_STerm), ('\u{aa60}', '\u{aa76}', SC_OLetter),
- ('\u{aa7a}', '\u{aa7a}', SC_OLetter), ('\u{aa7b}', '\u{aa7d}', SC_Extend), ('\u{aa7e}',
- '\u{aaaf}', SC_OLetter), ('\u{aab0}', '\u{aab0}', SC_Extend), ('\u{aab1}', '\u{aab1}',
- SC_OLetter), ('\u{aab2}', '\u{aab4}', SC_Extend), ('\u{aab5}', '\u{aab6}', SC_OLetter),
- ('\u{aab7}', '\u{aab8}', SC_Extend), ('\u{aab9}', '\u{aabd}', SC_OLetter), ('\u{aabe}',
- '\u{aabf}', SC_Extend), ('\u{aac0}', '\u{aac0}', SC_OLetter), ('\u{aac1}', '\u{aac1}',
- SC_Extend), ('\u{aac2}', '\u{aac2}', SC_OLetter), ('\u{aadb}', '\u{aadd}', SC_OLetter),
- ('\u{aae0}', '\u{aaea}', SC_OLetter), ('\u{aaeb}', '\u{aaef}', SC_Extend), ('\u{aaf0}',
- '\u{aaf1}', SC_STerm), ('\u{aaf2}', '\u{aaf4}', SC_OLetter), ('\u{aaf5}', '\u{aaf6}',
- SC_Extend), ('\u{ab01}', '\u{ab06}', SC_OLetter), ('\u{ab09}', '\u{ab0e}', SC_OLetter),
- ('\u{ab11}', '\u{ab16}', SC_OLetter), ('\u{ab20}', '\u{ab26}', SC_OLetter), ('\u{ab28}',
- '\u{ab2e}', SC_OLetter), ('\u{ab30}', '\u{ab5a}', SC_Lower), ('\u{ab5c}', '\u{ab68}',
- SC_Lower), ('\u{ab69}', '\u{ab69}', SC_OLetter), ('\u{ab70}', '\u{abbf}', SC_Lower),
- ('\u{abc0}', '\u{abe2}', SC_OLetter), ('\u{abe3}', '\u{abea}', SC_Extend), ('\u{abeb}',
- '\u{abeb}', SC_STerm), ('\u{abec}', '\u{abed}', SC_Extend), ('\u{abf0}', '\u{abf9}',
- SC_Numeric), ('\u{ac00}', '\u{d7a3}', SC_OLetter), ('\u{d7b0}', '\u{d7c6}', SC_OLetter),
- ('\u{d7cb}', '\u{d7fb}', SC_OLetter), ('\u{f900}', '\u{fa6d}', SC_OLetter), ('\u{fa70}',
- '\u{fad9}', SC_OLetter), ('\u{fb00}', '\u{fb06}', SC_Lower), ('\u{fb13}', '\u{fb17}',
- SC_Lower), ('\u{fb1d}', '\u{fb1d}', SC_OLetter), ('\u{fb1e}', '\u{fb1e}', SC_Extend),
- ('\u{fb1f}', '\u{fb28}', SC_OLetter), ('\u{fb2a}', '\u{fb36}', SC_OLetter), ('\u{fb38}',
- '\u{fb3c}', SC_OLetter), ('\u{fb3e}', '\u{fb3e}', SC_OLetter), ('\u{fb40}', '\u{fb41}',
- SC_OLetter), ('\u{fb43}', '\u{fb44}', SC_OLetter), ('\u{fb46}', '\u{fbb1}', SC_OLetter),
- ('\u{fbd3}', '\u{fd3d}', SC_OLetter), ('\u{fd3e}', '\u{fd3f}', SC_Close), ('\u{fd50}',
- '\u{fd8f}', SC_OLetter), ('\u{fd92}', '\u{fdc7}', SC_OLetter), ('\u{fdf0}', '\u{fdfb}',
- SC_OLetter), ('\u{fe00}', '\u{fe0f}', SC_Extend), ('\u{fe10}', '\u{fe11}', SC_SContinue),
- ('\u{fe13}', '\u{fe13}', SC_SContinue), ('\u{fe17}', '\u{fe18}', SC_Close), ('\u{fe20}',
- '\u{fe2f}', SC_Extend), ('\u{fe31}', '\u{fe32}', SC_SContinue), ('\u{fe35}', '\u{fe44}',
- SC_Close), ('\u{fe47}', '\u{fe48}', SC_Close), ('\u{fe50}', '\u{fe51}', SC_SContinue),
- ('\u{fe52}', '\u{fe52}', SC_ATerm), ('\u{fe55}', '\u{fe55}', SC_SContinue), ('\u{fe56}',
- '\u{fe57}', SC_STerm), ('\u{fe58}', '\u{fe58}', SC_SContinue), ('\u{fe59}', '\u{fe5e}',
- SC_Close), ('\u{fe63}', '\u{fe63}', SC_SContinue), ('\u{fe70}', '\u{fe74}', SC_OLetter),
- ('\u{fe76}', '\u{fefc}', SC_OLetter), ('\u{feff}', '\u{feff}', SC_Format), ('\u{ff01}',
- '\u{ff01}', SC_STerm), ('\u{ff08}', '\u{ff09}', SC_Close), ('\u{ff0c}', '\u{ff0d}',
- SC_SContinue), ('\u{ff0e}', '\u{ff0e}', SC_ATerm), ('\u{ff10}', '\u{ff19}', SC_Numeric),
- ('\u{ff1a}', '\u{ff1a}', SC_SContinue), ('\u{ff1f}', '\u{ff1f}', SC_STerm), ('\u{ff21}',
- '\u{ff3a}', SC_Upper), ('\u{ff3b}', '\u{ff3b}', SC_Close), ('\u{ff3d}', '\u{ff3d}',
- SC_Close), ('\u{ff41}', '\u{ff5a}', SC_Lower), ('\u{ff5b}', '\u{ff5b}', SC_Close),
- ('\u{ff5d}', '\u{ff5d}', SC_Close), ('\u{ff5f}', '\u{ff60}', SC_Close), ('\u{ff61}',
- '\u{ff61}', SC_STerm), ('\u{ff62}', '\u{ff63}', SC_Close), ('\u{ff64}', '\u{ff64}',
- SC_SContinue), ('\u{ff66}', '\u{ff9d}', SC_OLetter), ('\u{ff9e}', '\u{ff9f}', SC_Extend),
- ('\u{ffa0}', '\u{ffbe}', SC_OLetter), ('\u{ffc2}', '\u{ffc7}', SC_OLetter), ('\u{ffca}',
- '\u{ffcf}', SC_OLetter), ('\u{ffd2}', '\u{ffd7}', SC_OLetter), ('\u{ffda}', '\u{ffdc}',
- SC_OLetter), ('\u{fff9}', '\u{fffb}', SC_Format), ('\u{10000}', '\u{1000b}', SC_OLetter),
- ('\u{1000d}', '\u{10026}', SC_OLetter), ('\u{10028}', '\u{1003a}', SC_OLetter),
- ('\u{1003c}', '\u{1003d}', SC_OLetter), ('\u{1003f}', '\u{1004d}', SC_OLetter),
- ('\u{10050}', '\u{1005d}', SC_OLetter), ('\u{10080}', '\u{100fa}', SC_OLetter),
- ('\u{10140}', '\u{10174}', SC_OLetter), ('\u{101fd}', '\u{101fd}', SC_Extend), ('\u{10280}',
- '\u{1029c}', SC_OLetter), ('\u{102a0}', '\u{102d0}', SC_OLetter), ('\u{102e0}', '\u{102e0}',
- SC_Extend), ('\u{10300}', '\u{1031f}', SC_OLetter), ('\u{1032d}', '\u{1034a}', SC_OLetter),
- ('\u{10350}', '\u{10375}', SC_OLetter), ('\u{10376}', '\u{1037a}', SC_Extend), ('\u{10380}',
- '\u{1039d}', SC_OLetter), ('\u{103a0}', '\u{103c3}', SC_OLetter), ('\u{103c8}', '\u{103cf}',
- SC_OLetter), ('\u{103d1}', '\u{103d5}', SC_OLetter), ('\u{10400}', '\u{10427}', SC_Upper),
- ('\u{10428}', '\u{1044f}', SC_Lower), ('\u{10450}', '\u{1049d}', SC_OLetter), ('\u{104a0}',
- '\u{104a9}', SC_Numeric), ('\u{104b0}', '\u{104d3}', SC_Upper), ('\u{104d8}', '\u{104fb}',
- SC_Lower), ('\u{10500}', '\u{10527}', SC_OLetter), ('\u{10530}', '\u{10563}', SC_OLetter),
- ('\u{10570}', '\u{1057a}', SC_Upper), ('\u{1057c}', '\u{1058a}', SC_Upper), ('\u{1058c}',
- '\u{10592}', SC_Upper), ('\u{10594}', '\u{10595}', SC_Upper), ('\u{10597}', '\u{105a1}',
- SC_Lower), ('\u{105a3}', '\u{105b1}', SC_Lower), ('\u{105b3}', '\u{105b9}', SC_Lower),
- ('\u{105bb}', '\u{105bc}', SC_Lower), ('\u{10600}', '\u{10736}', SC_OLetter), ('\u{10740}',
- '\u{10755}', SC_OLetter), ('\u{10760}', '\u{10767}', SC_OLetter), ('\u{10780}', '\u{10780}',
- SC_Lower), ('\u{10781}', '\u{10782}', SC_OLetter), ('\u{10783}', '\u{10785}', SC_Lower),
- ('\u{10787}', '\u{107b0}', SC_Lower), ('\u{107b2}', '\u{107ba}', SC_Lower), ('\u{10800}',
- '\u{10805}', SC_OLetter), ('\u{10808}', '\u{10808}', SC_OLetter), ('\u{1080a}', '\u{10835}',
- SC_OLetter), ('\u{10837}', '\u{10838}', SC_OLetter), ('\u{1083c}', '\u{1083c}', SC_OLetter),
+ '\u{cf2}', SC_OLetter), ('\u{cf3}', '\u{cf3}', SC_Extend), ('\u{d00}', '\u{d03}',
+ SC_Extend), ('\u{d04}', '\u{d0c}', SC_OLetter), ('\u{d0e}', '\u{d10}', SC_OLetter),
+ ('\u{d12}', '\u{d3a}', SC_OLetter), ('\u{d3b}', '\u{d3c}', SC_Extend), ('\u{d3d}',
+ '\u{d3d}', SC_OLetter), ('\u{d3e}', '\u{d44}', SC_Extend), ('\u{d46}', '\u{d48}',
+ SC_Extend), ('\u{d4a}', '\u{d4d}', SC_Extend), ('\u{d4e}', '\u{d4e}', SC_OLetter),
+ ('\u{d54}', '\u{d56}', SC_OLetter), ('\u{d57}', '\u{d57}', SC_Extend), ('\u{d5f}',
+ '\u{d61}', SC_OLetter), ('\u{d62}', '\u{d63}', SC_Extend), ('\u{d66}', '\u{d6f}',
+ SC_Numeric), ('\u{d7a}', '\u{d7f}', SC_OLetter), ('\u{d81}', '\u{d83}', SC_Extend),
+ ('\u{d85}', '\u{d96}', SC_OLetter), ('\u{d9a}', '\u{db1}', SC_OLetter), ('\u{db3}',
+ '\u{dbb}', SC_OLetter), ('\u{dbd}', '\u{dbd}', SC_OLetter), ('\u{dc0}', '\u{dc6}',
+ SC_OLetter), ('\u{dca}', '\u{dca}', SC_Extend), ('\u{dcf}', '\u{dd4}', SC_Extend),
+ ('\u{dd6}', '\u{dd6}', SC_Extend), ('\u{dd8}', '\u{ddf}', SC_Extend), ('\u{de6}', '\u{def}',
+ SC_Numeric), ('\u{df2}', '\u{df3}', SC_Extend), ('\u{e01}', '\u{e30}', SC_OLetter),
+ ('\u{e31}', '\u{e31}', SC_Extend), ('\u{e32}', '\u{e33}', SC_OLetter), ('\u{e34}',
+ '\u{e3a}', SC_Extend), ('\u{e40}', '\u{e46}', SC_OLetter), ('\u{e47}', '\u{e4e}',
+ SC_Extend), ('\u{e50}', '\u{e59}', SC_Numeric), ('\u{e81}', '\u{e82}', SC_OLetter),
+ ('\u{e84}', '\u{e84}', SC_OLetter), ('\u{e86}', '\u{e8a}', SC_OLetter), ('\u{e8c}',
+ '\u{ea3}', SC_OLetter), ('\u{ea5}', '\u{ea5}', SC_OLetter), ('\u{ea7}', '\u{eb0}',
+ SC_OLetter), ('\u{eb1}', '\u{eb1}', SC_Extend), ('\u{eb2}', '\u{eb3}', SC_OLetter),
+ ('\u{eb4}', '\u{ebc}', SC_Extend), ('\u{ebd}', '\u{ebd}', SC_OLetter), ('\u{ec0}',
+ '\u{ec4}', SC_OLetter), ('\u{ec6}', '\u{ec6}', SC_OLetter), ('\u{ec8}', '\u{ece}',
+ SC_Extend), ('\u{ed0}', '\u{ed9}', SC_Numeric), ('\u{edc}', '\u{edf}', SC_OLetter),
+ ('\u{f00}', '\u{f00}', SC_OLetter), ('\u{f18}', '\u{f19}', SC_Extend), ('\u{f20}',
+ '\u{f29}', SC_Numeric), ('\u{f35}', '\u{f35}', SC_Extend), ('\u{f37}', '\u{f37}',
+ SC_Extend), ('\u{f39}', '\u{f39}', SC_Extend), ('\u{f3a}', '\u{f3d}', SC_Close), ('\u{f3e}',
+ '\u{f3f}', SC_Extend), ('\u{f40}', '\u{f47}', SC_OLetter), ('\u{f49}', '\u{f6c}',
+ SC_OLetter), ('\u{f71}', '\u{f84}', SC_Extend), ('\u{f86}', '\u{f87}', SC_Extend),
+ ('\u{f88}', '\u{f8c}', SC_OLetter), ('\u{f8d}', '\u{f97}', SC_Extend), ('\u{f99}',
+ '\u{fbc}', SC_Extend), ('\u{fc6}', '\u{fc6}', SC_Extend), ('\u{1000}', '\u{102a}',
+ SC_OLetter), ('\u{102b}', '\u{103e}', SC_Extend), ('\u{103f}', '\u{103f}', SC_OLetter),
+ ('\u{1040}', '\u{1049}', SC_Numeric), ('\u{104a}', '\u{104b}', SC_STerm), ('\u{1050}',
+ '\u{1055}', SC_OLetter), ('\u{1056}', '\u{1059}', SC_Extend), ('\u{105a}', '\u{105d}',
+ SC_OLetter), ('\u{105e}', '\u{1060}', SC_Extend), ('\u{1061}', '\u{1061}', SC_OLetter),
+ ('\u{1062}', '\u{1064}', SC_Extend), ('\u{1065}', '\u{1066}', SC_OLetter), ('\u{1067}',
+ '\u{106d}', SC_Extend), ('\u{106e}', '\u{1070}', SC_OLetter), ('\u{1071}', '\u{1074}',
+ SC_Extend), ('\u{1075}', '\u{1081}', SC_OLetter), ('\u{1082}', '\u{108d}', SC_Extend),
+ ('\u{108e}', '\u{108e}', SC_OLetter), ('\u{108f}', '\u{108f}', SC_Extend), ('\u{1090}',
+ '\u{1099}', SC_Numeric), ('\u{109a}', '\u{109d}', SC_Extend), ('\u{10a0}', '\u{10c5}',
+ SC_Upper), ('\u{10c7}', '\u{10c7}', SC_Upper), ('\u{10cd}', '\u{10cd}', SC_Upper),
+ ('\u{10d0}', '\u{10fa}', SC_OLetter), ('\u{10fc}', '\u{10fc}', SC_Lower), ('\u{10fd}',
+ '\u{1248}', SC_OLetter), ('\u{124a}', '\u{124d}', SC_OLetter), ('\u{1250}', '\u{1256}',
+ SC_OLetter), ('\u{1258}', '\u{1258}', SC_OLetter), ('\u{125a}', '\u{125d}', SC_OLetter),
+ ('\u{1260}', '\u{1288}', SC_OLetter), ('\u{128a}', '\u{128d}', SC_OLetter), ('\u{1290}',
+ '\u{12b0}', SC_OLetter), ('\u{12b2}', '\u{12b5}', SC_OLetter), ('\u{12b8}', '\u{12be}',
+ SC_OLetter), ('\u{12c0}', '\u{12c0}', SC_OLetter), ('\u{12c2}', '\u{12c5}', SC_OLetter),
+ ('\u{12c8}', '\u{12d6}', SC_OLetter), ('\u{12d8}', '\u{1310}', SC_OLetter), ('\u{1312}',
+ '\u{1315}', SC_OLetter), ('\u{1318}', '\u{135a}', SC_OLetter), ('\u{135d}', '\u{135f}',
+ SC_Extend), ('\u{1362}', '\u{1362}', SC_STerm), ('\u{1367}', '\u{1368}', SC_STerm),
+ ('\u{1380}', '\u{138f}', SC_OLetter), ('\u{13a0}', '\u{13f5}', SC_Upper), ('\u{13f8}',
+ '\u{13fd}', SC_Lower), ('\u{1401}', '\u{166c}', SC_OLetter), ('\u{166e}', '\u{166e}',
+ SC_STerm), ('\u{166f}', '\u{167f}', SC_OLetter), ('\u{1680}', '\u{1680}', SC_Sp),
+ ('\u{1681}', '\u{169a}', SC_OLetter), ('\u{169b}', '\u{169c}', SC_Close), ('\u{16a0}',
+ '\u{16ea}', SC_OLetter), ('\u{16ee}', '\u{16f8}', SC_OLetter), ('\u{1700}', '\u{1711}',
+ SC_OLetter), ('\u{1712}', '\u{1715}', SC_Extend), ('\u{171f}', '\u{1731}', SC_OLetter),
+ ('\u{1732}', '\u{1734}', SC_Extend), ('\u{1735}', '\u{1736}', SC_STerm), ('\u{1740}',
+ '\u{1751}', SC_OLetter), ('\u{1752}', '\u{1753}', SC_Extend), ('\u{1760}', '\u{176c}',
+ SC_OLetter), ('\u{176e}', '\u{1770}', SC_OLetter), ('\u{1772}', '\u{1773}', SC_Extend),
+ ('\u{1780}', '\u{17b3}', SC_OLetter), ('\u{17b4}', '\u{17d3}', SC_Extend), ('\u{17d7}',
+ '\u{17d7}', SC_OLetter), ('\u{17dc}', '\u{17dc}', SC_OLetter), ('\u{17dd}', '\u{17dd}',
+ SC_Extend), ('\u{17e0}', '\u{17e9}', SC_Numeric), ('\u{1802}', '\u{1802}', SC_SContinue),
+ ('\u{1803}', '\u{1803}', SC_STerm), ('\u{1808}', '\u{1808}', SC_SContinue), ('\u{1809}',
+ '\u{1809}', SC_STerm), ('\u{180b}', '\u{180d}', SC_Extend), ('\u{180e}', '\u{180e}',
+ SC_Format), ('\u{180f}', '\u{180f}', SC_Extend), ('\u{1810}', '\u{1819}', SC_Numeric),
+ ('\u{1820}', '\u{1878}', SC_OLetter), ('\u{1880}', '\u{1884}', SC_OLetter), ('\u{1885}',
+ '\u{1886}', SC_Extend), ('\u{1887}', '\u{18a8}', SC_OLetter), ('\u{18a9}', '\u{18a9}',
+ SC_Extend), ('\u{18aa}', '\u{18aa}', SC_OLetter), ('\u{18b0}', '\u{18f5}', SC_OLetter),
+ ('\u{1900}', '\u{191e}', SC_OLetter), ('\u{1920}', '\u{192b}', SC_Extend), ('\u{1930}',
+ '\u{193b}', SC_Extend), ('\u{1944}', '\u{1945}', SC_STerm), ('\u{1946}', '\u{194f}',
+ SC_Numeric), ('\u{1950}', '\u{196d}', SC_OLetter), ('\u{1970}', '\u{1974}', SC_OLetter),
+ ('\u{1980}', '\u{19ab}', SC_OLetter), ('\u{19b0}', '\u{19c9}', SC_OLetter), ('\u{19d0}',
+ '\u{19d9}', SC_Numeric), ('\u{1a00}', '\u{1a16}', SC_OLetter), ('\u{1a17}', '\u{1a1b}',
+ SC_Extend), ('\u{1a20}', '\u{1a54}', SC_OLetter), ('\u{1a55}', '\u{1a5e}', SC_Extend),
+ ('\u{1a60}', '\u{1a7c}', SC_Extend), ('\u{1a7f}', '\u{1a7f}', SC_Extend), ('\u{1a80}',
+ '\u{1a89}', SC_Numeric), ('\u{1a90}', '\u{1a99}', SC_Numeric), ('\u{1aa7}', '\u{1aa7}',
+ SC_OLetter), ('\u{1aa8}', '\u{1aab}', SC_STerm), ('\u{1ab0}', '\u{1ace}', SC_Extend),
+ ('\u{1b00}', '\u{1b04}', SC_Extend), ('\u{1b05}', '\u{1b33}', SC_OLetter), ('\u{1b34}',
+ '\u{1b44}', SC_Extend), ('\u{1b45}', '\u{1b4c}', SC_OLetter), ('\u{1b50}', '\u{1b59}',
+ SC_Numeric), ('\u{1b5a}', '\u{1b5b}', SC_STerm), ('\u{1b5e}', '\u{1b5f}', SC_STerm),
+ ('\u{1b6b}', '\u{1b73}', SC_Extend), ('\u{1b7d}', '\u{1b7e}', SC_STerm), ('\u{1b80}',
+ '\u{1b82}', SC_Extend), ('\u{1b83}', '\u{1ba0}', SC_OLetter), ('\u{1ba1}', '\u{1bad}',
+ SC_Extend), ('\u{1bae}', '\u{1baf}', SC_OLetter), ('\u{1bb0}', '\u{1bb9}', SC_Numeric),
+ ('\u{1bba}', '\u{1be5}', SC_OLetter), ('\u{1be6}', '\u{1bf3}', SC_Extend), ('\u{1c00}',
+ '\u{1c23}', SC_OLetter), ('\u{1c24}', '\u{1c37}', SC_Extend), ('\u{1c3b}', '\u{1c3c}',
+ SC_STerm), ('\u{1c40}', '\u{1c49}', SC_Numeric), ('\u{1c4d}', '\u{1c4f}', SC_OLetter),
+ ('\u{1c50}', '\u{1c59}', SC_Numeric), ('\u{1c5a}', '\u{1c7d}', SC_OLetter), ('\u{1c7e}',
+ '\u{1c7f}', SC_STerm), ('\u{1c80}', '\u{1c88}', SC_Lower), ('\u{1c90}', '\u{1cba}',
+ SC_OLetter), ('\u{1cbd}', '\u{1cbf}', SC_OLetter), ('\u{1cd0}', '\u{1cd2}', SC_Extend),
+ ('\u{1cd4}', '\u{1ce8}', SC_Extend), ('\u{1ce9}', '\u{1cec}', SC_OLetter), ('\u{1ced}',
+ '\u{1ced}', SC_Extend), ('\u{1cee}', '\u{1cf3}', SC_OLetter), ('\u{1cf4}', '\u{1cf4}',
+ SC_Extend), ('\u{1cf5}', '\u{1cf6}', SC_OLetter), ('\u{1cf7}', '\u{1cf9}', SC_Extend),
+ ('\u{1cfa}', '\u{1cfa}', SC_OLetter), ('\u{1d00}', '\u{1dbf}', SC_Lower), ('\u{1dc0}',
+ '\u{1dff}', SC_Extend), ('\u{1e00}', '\u{1e00}', SC_Upper), ('\u{1e01}', '\u{1e01}',
+ SC_Lower), ('\u{1e02}', '\u{1e02}', SC_Upper), ('\u{1e03}', '\u{1e03}', SC_Lower),
+ ('\u{1e04}', '\u{1e04}', SC_Upper), ('\u{1e05}', '\u{1e05}', SC_Lower), ('\u{1e06}',
+ '\u{1e06}', SC_Upper), ('\u{1e07}', '\u{1e07}', SC_Lower), ('\u{1e08}', '\u{1e08}',
+ SC_Upper), ('\u{1e09}', '\u{1e09}', SC_Lower), ('\u{1e0a}', '\u{1e0a}', SC_Upper),
+ ('\u{1e0b}', '\u{1e0b}', SC_Lower), ('\u{1e0c}', '\u{1e0c}', SC_Upper), ('\u{1e0d}',
+ '\u{1e0d}', SC_Lower), ('\u{1e0e}', '\u{1e0e}', SC_Upper), ('\u{1e0f}', '\u{1e0f}',
+ SC_Lower), ('\u{1e10}', '\u{1e10}', SC_Upper), ('\u{1e11}', '\u{1e11}', SC_Lower),
+ ('\u{1e12}', '\u{1e12}', SC_Upper), ('\u{1e13}', '\u{1e13}', SC_Lower), ('\u{1e14}',
+ '\u{1e14}', SC_Upper), ('\u{1e15}', '\u{1e15}', SC_Lower), ('\u{1e16}', '\u{1e16}',
+ SC_Upper), ('\u{1e17}', '\u{1e17}', SC_Lower), ('\u{1e18}', '\u{1e18}', SC_Upper),
+ ('\u{1e19}', '\u{1e19}', SC_Lower), ('\u{1e1a}', '\u{1e1a}', SC_Upper), ('\u{1e1b}',
+ '\u{1e1b}', SC_Lower), ('\u{1e1c}', '\u{1e1c}', SC_Upper), ('\u{1e1d}', '\u{1e1d}',
+ SC_Lower), ('\u{1e1e}', '\u{1e1e}', SC_Upper), ('\u{1e1f}', '\u{1e1f}', SC_Lower),
+ ('\u{1e20}', '\u{1e20}', SC_Upper), ('\u{1e21}', '\u{1e21}', SC_Lower), ('\u{1e22}',
+ '\u{1e22}', SC_Upper), ('\u{1e23}', '\u{1e23}', SC_Lower), ('\u{1e24}', '\u{1e24}',
+ SC_Upper), ('\u{1e25}', '\u{1e25}', SC_Lower), ('\u{1e26}', '\u{1e26}', SC_Upper),
+ ('\u{1e27}', '\u{1e27}', SC_Lower), ('\u{1e28}', '\u{1e28}', SC_Upper), ('\u{1e29}',
+ '\u{1e29}', SC_Lower), ('\u{1e2a}', '\u{1e2a}', SC_Upper), ('\u{1e2b}', '\u{1e2b}',
+ SC_Lower), ('\u{1e2c}', '\u{1e2c}', SC_Upper), ('\u{1e2d}', '\u{1e2d}', SC_Lower),
+ ('\u{1e2e}', '\u{1e2e}', SC_Upper), ('\u{1e2f}', '\u{1e2f}', SC_Lower), ('\u{1e30}',
+ '\u{1e30}', SC_Upper), ('\u{1e31}', '\u{1e31}', SC_Lower), ('\u{1e32}', '\u{1e32}',
+ SC_Upper), ('\u{1e33}', '\u{1e33}', SC_Lower), ('\u{1e34}', '\u{1e34}', SC_Upper),
+ ('\u{1e35}', '\u{1e35}', SC_Lower), ('\u{1e36}', '\u{1e36}', SC_Upper), ('\u{1e37}',
+ '\u{1e37}', SC_Lower), ('\u{1e38}', '\u{1e38}', SC_Upper), ('\u{1e39}', '\u{1e39}',
+ SC_Lower), ('\u{1e3a}', '\u{1e3a}', SC_Upper), ('\u{1e3b}', '\u{1e3b}', SC_Lower),
+ ('\u{1e3c}', '\u{1e3c}', SC_Upper), ('\u{1e3d}', '\u{1e3d}', SC_Lower), ('\u{1e3e}',
+ '\u{1e3e}', SC_Upper), ('\u{1e3f}', '\u{1e3f}', SC_Lower), ('\u{1e40}', '\u{1e40}',
+ SC_Upper), ('\u{1e41}', '\u{1e41}', SC_Lower), ('\u{1e42}', '\u{1e42}', SC_Upper),
+ ('\u{1e43}', '\u{1e43}', SC_Lower), ('\u{1e44}', '\u{1e44}', SC_Upper), ('\u{1e45}',
+ '\u{1e45}', SC_Lower), ('\u{1e46}', '\u{1e46}', SC_Upper), ('\u{1e47}', '\u{1e47}',
+ SC_Lower), ('\u{1e48}', '\u{1e48}', SC_Upper), ('\u{1e49}', '\u{1e49}', SC_Lower),
+ ('\u{1e4a}', '\u{1e4a}', SC_Upper), ('\u{1e4b}', '\u{1e4b}', SC_Lower), ('\u{1e4c}',
+ '\u{1e4c}', SC_Upper), ('\u{1e4d}', '\u{1e4d}', SC_Lower), ('\u{1e4e}', '\u{1e4e}',
+ SC_Upper), ('\u{1e4f}', '\u{1e4f}', SC_Lower), ('\u{1e50}', '\u{1e50}', SC_Upper),
+ ('\u{1e51}', '\u{1e51}', SC_Lower), ('\u{1e52}', '\u{1e52}', SC_Upper), ('\u{1e53}',
+ '\u{1e53}', SC_Lower), ('\u{1e54}', '\u{1e54}', SC_Upper), ('\u{1e55}', '\u{1e55}',
+ SC_Lower), ('\u{1e56}', '\u{1e56}', SC_Upper), ('\u{1e57}', '\u{1e57}', SC_Lower),
+ ('\u{1e58}', '\u{1e58}', SC_Upper), ('\u{1e59}', '\u{1e59}', SC_Lower), ('\u{1e5a}',
+ '\u{1e5a}', SC_Upper), ('\u{1e5b}', '\u{1e5b}', SC_Lower), ('\u{1e5c}', '\u{1e5c}',
+ SC_Upper), ('\u{1e5d}', '\u{1e5d}', SC_Lower), ('\u{1e5e}', '\u{1e5e}', SC_Upper),
+ ('\u{1e5f}', '\u{1e5f}', SC_Lower), ('\u{1e60}', '\u{1e60}', SC_Upper), ('\u{1e61}',
+ '\u{1e61}', SC_Lower), ('\u{1e62}', '\u{1e62}', SC_Upper), ('\u{1e63}', '\u{1e63}',
+ SC_Lower), ('\u{1e64}', '\u{1e64}', SC_Upper), ('\u{1e65}', '\u{1e65}', SC_Lower),
+ ('\u{1e66}', '\u{1e66}', SC_Upper), ('\u{1e67}', '\u{1e67}', SC_Lower), ('\u{1e68}',
+ '\u{1e68}', SC_Upper), ('\u{1e69}', '\u{1e69}', SC_Lower), ('\u{1e6a}', '\u{1e6a}',
+ SC_Upper), ('\u{1e6b}', '\u{1e6b}', SC_Lower), ('\u{1e6c}', '\u{1e6c}', SC_Upper),
+ ('\u{1e6d}', '\u{1e6d}', SC_Lower), ('\u{1e6e}', '\u{1e6e}', SC_Upper), ('\u{1e6f}',
+ '\u{1e6f}', SC_Lower), ('\u{1e70}', '\u{1e70}', SC_Upper), ('\u{1e71}', '\u{1e71}',
+ SC_Lower), ('\u{1e72}', '\u{1e72}', SC_Upper), ('\u{1e73}', '\u{1e73}', SC_Lower),
+ ('\u{1e74}', '\u{1e74}', SC_Upper), ('\u{1e75}', '\u{1e75}', SC_Lower), ('\u{1e76}',
+ '\u{1e76}', SC_Upper), ('\u{1e77}', '\u{1e77}', SC_Lower), ('\u{1e78}', '\u{1e78}',
+ SC_Upper), ('\u{1e79}', '\u{1e79}', SC_Lower), ('\u{1e7a}', '\u{1e7a}', SC_Upper),
+ ('\u{1e7b}', '\u{1e7b}', SC_Lower), ('\u{1e7c}', '\u{1e7c}', SC_Upper), ('\u{1e7d}',
+ '\u{1e7d}', SC_Lower), ('\u{1e7e}', '\u{1e7e}', SC_Upper), ('\u{1e7f}', '\u{1e7f}',
+ SC_Lower), ('\u{1e80}', '\u{1e80}', SC_Upper), ('\u{1e81}', '\u{1e81}', SC_Lower),
+ ('\u{1e82}', '\u{1e82}', SC_Upper), ('\u{1e83}', '\u{1e83}', SC_Lower), ('\u{1e84}',
+ '\u{1e84}', SC_Upper), ('\u{1e85}', '\u{1e85}', SC_Lower), ('\u{1e86}', '\u{1e86}',
+ SC_Upper), ('\u{1e87}', '\u{1e87}', SC_Lower), ('\u{1e88}', '\u{1e88}', SC_Upper),
+ ('\u{1e89}', '\u{1e89}', SC_Lower), ('\u{1e8a}', '\u{1e8a}', SC_Upper), ('\u{1e8b}',
+ '\u{1e8b}', SC_Lower), ('\u{1e8c}', '\u{1e8c}', SC_Upper), ('\u{1e8d}', '\u{1e8d}',
+ SC_Lower), ('\u{1e8e}', '\u{1e8e}', SC_Upper), ('\u{1e8f}', '\u{1e8f}', SC_Lower),
+ ('\u{1e90}', '\u{1e90}', SC_Upper), ('\u{1e91}', '\u{1e91}', SC_Lower), ('\u{1e92}',
+ '\u{1e92}', SC_Upper), ('\u{1e93}', '\u{1e93}', SC_Lower), ('\u{1e94}', '\u{1e94}',
+ SC_Upper), ('\u{1e95}', '\u{1e9d}', SC_Lower), ('\u{1e9e}', '\u{1e9e}', SC_Upper),
+ ('\u{1e9f}', '\u{1e9f}', SC_Lower), ('\u{1ea0}', '\u{1ea0}', SC_Upper), ('\u{1ea1}',
+ '\u{1ea1}', SC_Lower), ('\u{1ea2}', '\u{1ea2}', SC_Upper), ('\u{1ea3}', '\u{1ea3}',
+ SC_Lower), ('\u{1ea4}', '\u{1ea4}', SC_Upper), ('\u{1ea5}', '\u{1ea5}', SC_Lower),
+ ('\u{1ea6}', '\u{1ea6}', SC_Upper), ('\u{1ea7}', '\u{1ea7}', SC_Lower), ('\u{1ea8}',
+ '\u{1ea8}', SC_Upper), ('\u{1ea9}', '\u{1ea9}', SC_Lower), ('\u{1eaa}', '\u{1eaa}',
+ SC_Upper), ('\u{1eab}', '\u{1eab}', SC_Lower), ('\u{1eac}', '\u{1eac}', SC_Upper),
+ ('\u{1ead}', '\u{1ead}', SC_Lower), ('\u{1eae}', '\u{1eae}', SC_Upper), ('\u{1eaf}',
+ '\u{1eaf}', SC_Lower), ('\u{1eb0}', '\u{1eb0}', SC_Upper), ('\u{1eb1}', '\u{1eb1}',
+ SC_Lower), ('\u{1eb2}', '\u{1eb2}', SC_Upper), ('\u{1eb3}', '\u{1eb3}', SC_Lower),
+ ('\u{1eb4}', '\u{1eb4}', SC_Upper), ('\u{1eb5}', '\u{1eb5}', SC_Lower), ('\u{1eb6}',
+ '\u{1eb6}', SC_Upper), ('\u{1eb7}', '\u{1eb7}', SC_Lower), ('\u{1eb8}', '\u{1eb8}',
+ SC_Upper), ('\u{1eb9}', '\u{1eb9}', SC_Lower), ('\u{1eba}', '\u{1eba}', SC_Upper),
+ ('\u{1ebb}', '\u{1ebb}', SC_Lower), ('\u{1ebc}', '\u{1ebc}', SC_Upper), ('\u{1ebd}',
+ '\u{1ebd}', SC_Lower), ('\u{1ebe}', '\u{1ebe}', SC_Upper), ('\u{1ebf}', '\u{1ebf}',
+ SC_Lower), ('\u{1ec0}', '\u{1ec0}', SC_Upper), ('\u{1ec1}', '\u{1ec1}', SC_Lower),
+ ('\u{1ec2}', '\u{1ec2}', SC_Upper), ('\u{1ec3}', '\u{1ec3}', SC_Lower), ('\u{1ec4}',
+ '\u{1ec4}', SC_Upper), ('\u{1ec5}', '\u{1ec5}', SC_Lower), ('\u{1ec6}', '\u{1ec6}',
+ SC_Upper), ('\u{1ec7}', '\u{1ec7}', SC_Lower), ('\u{1ec8}', '\u{1ec8}', SC_Upper),
+ ('\u{1ec9}', '\u{1ec9}', SC_Lower), ('\u{1eca}', '\u{1eca}', SC_Upper), ('\u{1ecb}',
+ '\u{1ecb}', SC_Lower), ('\u{1ecc}', '\u{1ecc}', SC_Upper), ('\u{1ecd}', '\u{1ecd}',
+ SC_Lower), ('\u{1ece}', '\u{1ece}', SC_Upper), ('\u{1ecf}', '\u{1ecf}', SC_Lower),
+ ('\u{1ed0}', '\u{1ed0}', SC_Upper), ('\u{1ed1}', '\u{1ed1}', SC_Lower), ('\u{1ed2}',
+ '\u{1ed2}', SC_Upper), ('\u{1ed3}', '\u{1ed3}', SC_Lower), ('\u{1ed4}', '\u{1ed4}',
+ SC_Upper), ('\u{1ed5}', '\u{1ed5}', SC_Lower), ('\u{1ed6}', '\u{1ed6}', SC_Upper),
+ ('\u{1ed7}', '\u{1ed7}', SC_Lower), ('\u{1ed8}', '\u{1ed8}', SC_Upper), ('\u{1ed9}',
+ '\u{1ed9}', SC_Lower), ('\u{1eda}', '\u{1eda}', SC_Upper), ('\u{1edb}', '\u{1edb}',
+ SC_Lower), ('\u{1edc}', '\u{1edc}', SC_Upper), ('\u{1edd}', '\u{1edd}', SC_Lower),
+ ('\u{1ede}', '\u{1ede}', SC_Upper), ('\u{1edf}', '\u{1edf}', SC_Lower), ('\u{1ee0}',
+ '\u{1ee0}', SC_Upper), ('\u{1ee1}', '\u{1ee1}', SC_Lower), ('\u{1ee2}', '\u{1ee2}',
+ SC_Upper), ('\u{1ee3}', '\u{1ee3}', SC_Lower), ('\u{1ee4}', '\u{1ee4}', SC_Upper),
+ ('\u{1ee5}', '\u{1ee5}', SC_Lower), ('\u{1ee6}', '\u{1ee6}', SC_Upper), ('\u{1ee7}',
+ '\u{1ee7}', SC_Lower), ('\u{1ee8}', '\u{1ee8}', SC_Upper), ('\u{1ee9}', '\u{1ee9}',
+ SC_Lower), ('\u{1eea}', '\u{1eea}', SC_Upper), ('\u{1eeb}', '\u{1eeb}', SC_Lower),
+ ('\u{1eec}', '\u{1eec}', SC_Upper), ('\u{1eed}', '\u{1eed}', SC_Lower), ('\u{1eee}',
+ '\u{1eee}', SC_Upper), ('\u{1eef}', '\u{1eef}', SC_Lower), ('\u{1ef0}', '\u{1ef0}',
+ SC_Upper), ('\u{1ef1}', '\u{1ef1}', SC_Lower), ('\u{1ef2}', '\u{1ef2}', SC_Upper),
+ ('\u{1ef3}', '\u{1ef3}', SC_Lower), ('\u{1ef4}', '\u{1ef4}', SC_Upper), ('\u{1ef5}',
+ '\u{1ef5}', SC_Lower), ('\u{1ef6}', '\u{1ef6}', SC_Upper), ('\u{1ef7}', '\u{1ef7}',
+ SC_Lower), ('\u{1ef8}', '\u{1ef8}', SC_Upper), ('\u{1ef9}', '\u{1ef9}', SC_Lower),
+ ('\u{1efa}', '\u{1efa}', SC_Upper), ('\u{1efb}', '\u{1efb}', SC_Lower), ('\u{1efc}',
+ '\u{1efc}', SC_Upper), ('\u{1efd}', '\u{1efd}', SC_Lower), ('\u{1efe}', '\u{1efe}',
+ SC_Upper), ('\u{1eff}', '\u{1f07}', SC_Lower), ('\u{1f08}', '\u{1f0f}', SC_Upper),
+ ('\u{1f10}', '\u{1f15}', SC_Lower), ('\u{1f18}', '\u{1f1d}', SC_Upper), ('\u{1f20}',
+ '\u{1f27}', SC_Lower), ('\u{1f28}', '\u{1f2f}', SC_Upper), ('\u{1f30}', '\u{1f37}',
+ SC_Lower), ('\u{1f38}', '\u{1f3f}', SC_Upper), ('\u{1f40}', '\u{1f45}', SC_Lower),
+ ('\u{1f48}', '\u{1f4d}', SC_Upper), ('\u{1f50}', '\u{1f57}', SC_Lower), ('\u{1f59}',
+ '\u{1f59}', SC_Upper), ('\u{1f5b}', '\u{1f5b}', SC_Upper), ('\u{1f5d}', '\u{1f5d}',
+ SC_Upper), ('\u{1f5f}', '\u{1f5f}', SC_Upper), ('\u{1f60}', '\u{1f67}', SC_Lower),
+ ('\u{1f68}', '\u{1f6f}', SC_Upper), ('\u{1f70}', '\u{1f7d}', SC_Lower), ('\u{1f80}',
+ '\u{1f87}', SC_Lower), ('\u{1f88}', '\u{1f8f}', SC_Upper), ('\u{1f90}', '\u{1f97}',
+ SC_Lower), ('\u{1f98}', '\u{1f9f}', SC_Upper), ('\u{1fa0}', '\u{1fa7}', SC_Lower),
+ ('\u{1fa8}', '\u{1faf}', SC_Upper), ('\u{1fb0}', '\u{1fb4}', SC_Lower), ('\u{1fb6}',
+ '\u{1fb7}', SC_Lower), ('\u{1fb8}', '\u{1fbc}', SC_Upper), ('\u{1fbe}', '\u{1fbe}',
+ SC_Lower), ('\u{1fc2}', '\u{1fc4}', SC_Lower), ('\u{1fc6}', '\u{1fc7}', SC_Lower),
+ ('\u{1fc8}', '\u{1fcc}', SC_Upper), ('\u{1fd0}', '\u{1fd3}', SC_Lower), ('\u{1fd6}',
+ '\u{1fd7}', SC_Lower), ('\u{1fd8}', '\u{1fdb}', SC_Upper), ('\u{1fe0}', '\u{1fe7}',
+ SC_Lower), ('\u{1fe8}', '\u{1fec}', SC_Upper), ('\u{1ff2}', '\u{1ff4}', SC_Lower),
+ ('\u{1ff6}', '\u{1ff7}', SC_Lower), ('\u{1ff8}', '\u{1ffc}', SC_Upper), ('\u{2000}',
+ '\u{200a}', SC_Sp), ('\u{200b}', '\u{200b}', SC_Format), ('\u{200c}', '\u{200d}',
+ SC_Extend), ('\u{200e}', '\u{200f}', SC_Format), ('\u{2013}', '\u{2014}', SC_SContinue),
+ ('\u{2018}', '\u{201f}', SC_Close), ('\u{2024}', '\u{2024}', SC_ATerm), ('\u{2028}',
+ '\u{2029}', SC_Sep), ('\u{202a}', '\u{202e}', SC_Format), ('\u{202f}', '\u{202f}', SC_Sp),
+ ('\u{2039}', '\u{203a}', SC_Close), ('\u{203c}', '\u{203d}', SC_STerm), ('\u{2045}',
+ '\u{2046}', SC_Close), ('\u{2047}', '\u{2049}', SC_STerm), ('\u{205f}', '\u{205f}', SC_Sp),
+ ('\u{2060}', '\u{2064}', SC_Format), ('\u{2066}', '\u{206f}', SC_Format), ('\u{2071}',
+ '\u{2071}', SC_Lower), ('\u{207d}', '\u{207e}', SC_Close), ('\u{207f}', '\u{207f}',
+ SC_Lower), ('\u{208d}', '\u{208e}', SC_Close), ('\u{2090}', '\u{209c}', SC_Lower),
+ ('\u{20d0}', '\u{20f0}', SC_Extend), ('\u{2102}', '\u{2102}', SC_Upper), ('\u{2107}',
+ '\u{2107}', SC_Upper), ('\u{210a}', '\u{210a}', SC_Lower), ('\u{210b}', '\u{210d}',
+ SC_Upper), ('\u{210e}', '\u{210f}', SC_Lower), ('\u{2110}', '\u{2112}', SC_Upper),
+ ('\u{2113}', '\u{2113}', SC_Lower), ('\u{2115}', '\u{2115}', SC_Upper), ('\u{2119}',
+ '\u{211d}', SC_Upper), ('\u{2124}', '\u{2124}', SC_Upper), ('\u{2126}', '\u{2126}',
+ SC_Upper), ('\u{2128}', '\u{2128}', SC_Upper), ('\u{212a}', '\u{212d}', SC_Upper),
+ ('\u{212f}', '\u{212f}', SC_Lower), ('\u{2130}', '\u{2133}', SC_Upper), ('\u{2134}',
+ '\u{2134}', SC_Lower), ('\u{2135}', '\u{2138}', SC_OLetter), ('\u{2139}', '\u{2139}',
+ SC_Lower), ('\u{213c}', '\u{213d}', SC_Lower), ('\u{213e}', '\u{213f}', SC_Upper),
+ ('\u{2145}', '\u{2145}', SC_Upper), ('\u{2146}', '\u{2149}', SC_Lower), ('\u{214e}',
+ '\u{214e}', SC_Lower), ('\u{2160}', '\u{216f}', SC_Upper), ('\u{2170}', '\u{217f}',
+ SC_Lower), ('\u{2180}', '\u{2182}', SC_OLetter), ('\u{2183}', '\u{2183}', SC_Upper),
+ ('\u{2184}', '\u{2184}', SC_Lower), ('\u{2185}', '\u{2188}', SC_OLetter), ('\u{2308}',
+ '\u{230b}', SC_Close), ('\u{2329}', '\u{232a}', SC_Close), ('\u{24b6}', '\u{24cf}',
+ SC_Upper), ('\u{24d0}', '\u{24e9}', SC_Lower), ('\u{275b}', '\u{2760}', SC_Close),
+ ('\u{2768}', '\u{2775}', SC_Close), ('\u{27c5}', '\u{27c6}', SC_Close), ('\u{27e6}',
+ '\u{27ef}', SC_Close), ('\u{2983}', '\u{2998}', SC_Close), ('\u{29d8}', '\u{29db}',
+ SC_Close), ('\u{29fc}', '\u{29fd}', SC_Close), ('\u{2c00}', '\u{2c2f}', SC_Upper),
+ ('\u{2c30}', '\u{2c5f}', SC_Lower), ('\u{2c60}', '\u{2c60}', SC_Upper), ('\u{2c61}',
+ '\u{2c61}', SC_Lower), ('\u{2c62}', '\u{2c64}', SC_Upper), ('\u{2c65}', '\u{2c66}',
+ SC_Lower), ('\u{2c67}', '\u{2c67}', SC_Upper), ('\u{2c68}', '\u{2c68}', SC_Lower),
+ ('\u{2c69}', '\u{2c69}', SC_Upper), ('\u{2c6a}', '\u{2c6a}', SC_Lower), ('\u{2c6b}',
+ '\u{2c6b}', SC_Upper), ('\u{2c6c}', '\u{2c6c}', SC_Lower), ('\u{2c6d}', '\u{2c70}',
+ SC_Upper), ('\u{2c71}', '\u{2c71}', SC_Lower), ('\u{2c72}', '\u{2c72}', SC_Upper),
+ ('\u{2c73}', '\u{2c74}', SC_Lower), ('\u{2c75}', '\u{2c75}', SC_Upper), ('\u{2c76}',
+ '\u{2c7d}', SC_Lower), ('\u{2c7e}', '\u{2c80}', SC_Upper), ('\u{2c81}', '\u{2c81}',
+ SC_Lower), ('\u{2c82}', '\u{2c82}', SC_Upper), ('\u{2c83}', '\u{2c83}', SC_Lower),
+ ('\u{2c84}', '\u{2c84}', SC_Upper), ('\u{2c85}', '\u{2c85}', SC_Lower), ('\u{2c86}',
+ '\u{2c86}', SC_Upper), ('\u{2c87}', '\u{2c87}', SC_Lower), ('\u{2c88}', '\u{2c88}',
+ SC_Upper), ('\u{2c89}', '\u{2c89}', SC_Lower), ('\u{2c8a}', '\u{2c8a}', SC_Upper),
+ ('\u{2c8b}', '\u{2c8b}', SC_Lower), ('\u{2c8c}', '\u{2c8c}', SC_Upper), ('\u{2c8d}',
+ '\u{2c8d}', SC_Lower), ('\u{2c8e}', '\u{2c8e}', SC_Upper), ('\u{2c8f}', '\u{2c8f}',
+ SC_Lower), ('\u{2c90}', '\u{2c90}', SC_Upper), ('\u{2c91}', '\u{2c91}', SC_Lower),
+ ('\u{2c92}', '\u{2c92}', SC_Upper), ('\u{2c93}', '\u{2c93}', SC_Lower), ('\u{2c94}',
+ '\u{2c94}', SC_Upper), ('\u{2c95}', '\u{2c95}', SC_Lower), ('\u{2c96}', '\u{2c96}',
+ SC_Upper), ('\u{2c97}', '\u{2c97}', SC_Lower), ('\u{2c98}', '\u{2c98}', SC_Upper),
+ ('\u{2c99}', '\u{2c99}', SC_Lower), ('\u{2c9a}', '\u{2c9a}', SC_Upper), ('\u{2c9b}',
+ '\u{2c9b}', SC_Lower), ('\u{2c9c}', '\u{2c9c}', SC_Upper), ('\u{2c9d}', '\u{2c9d}',
+ SC_Lower), ('\u{2c9e}', '\u{2c9e}', SC_Upper), ('\u{2c9f}', '\u{2c9f}', SC_Lower),
+ ('\u{2ca0}', '\u{2ca0}', SC_Upper), ('\u{2ca1}', '\u{2ca1}', SC_Lower), ('\u{2ca2}',
+ '\u{2ca2}', SC_Upper), ('\u{2ca3}', '\u{2ca3}', SC_Lower), ('\u{2ca4}', '\u{2ca4}',
+ SC_Upper), ('\u{2ca5}', '\u{2ca5}', SC_Lower), ('\u{2ca6}', '\u{2ca6}', SC_Upper),
+ ('\u{2ca7}', '\u{2ca7}', SC_Lower), ('\u{2ca8}', '\u{2ca8}', SC_Upper), ('\u{2ca9}',
+ '\u{2ca9}', SC_Lower), ('\u{2caa}', '\u{2caa}', SC_Upper), ('\u{2cab}', '\u{2cab}',
+ SC_Lower), ('\u{2cac}', '\u{2cac}', SC_Upper), ('\u{2cad}', '\u{2cad}', SC_Lower),
+ ('\u{2cae}', '\u{2cae}', SC_Upper), ('\u{2caf}', '\u{2caf}', SC_Lower), ('\u{2cb0}',
+ '\u{2cb0}', SC_Upper), ('\u{2cb1}', '\u{2cb1}', SC_Lower), ('\u{2cb2}', '\u{2cb2}',
+ SC_Upper), ('\u{2cb3}', '\u{2cb3}', SC_Lower), ('\u{2cb4}', '\u{2cb4}', SC_Upper),
+ ('\u{2cb5}', '\u{2cb5}', SC_Lower), ('\u{2cb6}', '\u{2cb6}', SC_Upper), ('\u{2cb7}',
+ '\u{2cb7}', SC_Lower), ('\u{2cb8}', '\u{2cb8}', SC_Upper), ('\u{2cb9}', '\u{2cb9}',
+ SC_Lower), ('\u{2cba}', '\u{2cba}', SC_Upper), ('\u{2cbb}', '\u{2cbb}', SC_Lower),
+ ('\u{2cbc}', '\u{2cbc}', SC_Upper), ('\u{2cbd}', '\u{2cbd}', SC_Lower), ('\u{2cbe}',
+ '\u{2cbe}', SC_Upper), ('\u{2cbf}', '\u{2cbf}', SC_Lower), ('\u{2cc0}', '\u{2cc0}',
+ SC_Upper), ('\u{2cc1}', '\u{2cc1}', SC_Lower), ('\u{2cc2}', '\u{2cc2}', SC_Upper),
+ ('\u{2cc3}', '\u{2cc3}', SC_Lower), ('\u{2cc4}', '\u{2cc4}', SC_Upper), ('\u{2cc5}',
+ '\u{2cc5}', SC_Lower), ('\u{2cc6}', '\u{2cc6}', SC_Upper), ('\u{2cc7}', '\u{2cc7}',
+ SC_Lower), ('\u{2cc8}', '\u{2cc8}', SC_Upper), ('\u{2cc9}', '\u{2cc9}', SC_Lower),
+ ('\u{2cca}', '\u{2cca}', SC_Upper), ('\u{2ccb}', '\u{2ccb}', SC_Lower), ('\u{2ccc}',
+ '\u{2ccc}', SC_Upper), ('\u{2ccd}', '\u{2ccd}', SC_Lower), ('\u{2cce}', '\u{2cce}',
+ SC_Upper), ('\u{2ccf}', '\u{2ccf}', SC_Lower), ('\u{2cd0}', '\u{2cd0}', SC_Upper),
+ ('\u{2cd1}', '\u{2cd1}', SC_Lower), ('\u{2cd2}', '\u{2cd2}', SC_Upper), ('\u{2cd3}',
+ '\u{2cd3}', SC_Lower), ('\u{2cd4}', '\u{2cd4}', SC_Upper), ('\u{2cd5}', '\u{2cd5}',
+ SC_Lower), ('\u{2cd6}', '\u{2cd6}', SC_Upper), ('\u{2cd7}', '\u{2cd7}', SC_Lower),
+ ('\u{2cd8}', '\u{2cd8}', SC_Upper), ('\u{2cd9}', '\u{2cd9}', SC_Lower), ('\u{2cda}',
+ '\u{2cda}', SC_Upper), ('\u{2cdb}', '\u{2cdb}', SC_Lower), ('\u{2cdc}', '\u{2cdc}',
+ SC_Upper), ('\u{2cdd}', '\u{2cdd}', SC_Lower), ('\u{2cde}', '\u{2cde}', SC_Upper),
+ ('\u{2cdf}', '\u{2cdf}', SC_Lower), ('\u{2ce0}', '\u{2ce0}', SC_Upper), ('\u{2ce1}',
+ '\u{2ce1}', SC_Lower), ('\u{2ce2}', '\u{2ce2}', SC_Upper), ('\u{2ce3}', '\u{2ce4}',
+ SC_Lower), ('\u{2ceb}', '\u{2ceb}', SC_Upper), ('\u{2cec}', '\u{2cec}', SC_Lower),
+ ('\u{2ced}', '\u{2ced}', SC_Upper), ('\u{2cee}', '\u{2cee}', SC_Lower), ('\u{2cef}',
+ '\u{2cf1}', SC_Extend), ('\u{2cf2}', '\u{2cf2}', SC_Upper), ('\u{2cf3}', '\u{2cf3}',
+ SC_Lower), ('\u{2d00}', '\u{2d25}', SC_Lower), ('\u{2d27}', '\u{2d27}', SC_Lower),
+ ('\u{2d2d}', '\u{2d2d}', SC_Lower), ('\u{2d30}', '\u{2d67}', SC_OLetter), ('\u{2d6f}',
+ '\u{2d6f}', SC_OLetter), ('\u{2d7f}', '\u{2d7f}', SC_Extend), ('\u{2d80}', '\u{2d96}',
+ SC_OLetter), ('\u{2da0}', '\u{2da6}', SC_OLetter), ('\u{2da8}', '\u{2dae}', SC_OLetter),
+ ('\u{2db0}', '\u{2db6}', SC_OLetter), ('\u{2db8}', '\u{2dbe}', SC_OLetter), ('\u{2dc0}',
+ '\u{2dc6}', SC_OLetter), ('\u{2dc8}', '\u{2dce}', SC_OLetter), ('\u{2dd0}', '\u{2dd6}',
+ SC_OLetter), ('\u{2dd8}', '\u{2dde}', SC_OLetter), ('\u{2de0}', '\u{2dff}', SC_Extend),
+ ('\u{2e00}', '\u{2e0d}', SC_Close), ('\u{2e1c}', '\u{2e1d}', SC_Close), ('\u{2e20}',
+ '\u{2e29}', SC_Close), ('\u{2e2e}', '\u{2e2e}', SC_STerm), ('\u{2e2f}', '\u{2e2f}',
+ SC_OLetter), ('\u{2e3c}', '\u{2e3c}', SC_STerm), ('\u{2e42}', '\u{2e42}', SC_Close),
+ ('\u{2e53}', '\u{2e54}', SC_STerm), ('\u{2e55}', '\u{2e5c}', SC_Close), ('\u{3000}',
+ '\u{3000}', SC_Sp), ('\u{3001}', '\u{3001}', SC_SContinue), ('\u{3002}', '\u{3002}',
+ SC_STerm), ('\u{3005}', '\u{3007}', SC_OLetter), ('\u{3008}', '\u{3011}', SC_Close),
+ ('\u{3014}', '\u{301b}', SC_Close), ('\u{301d}', '\u{301f}', SC_Close), ('\u{3021}',
+ '\u{3029}', SC_OLetter), ('\u{302a}', '\u{302f}', SC_Extend), ('\u{3031}', '\u{3035}',
+ SC_OLetter), ('\u{3038}', '\u{303c}', SC_OLetter), ('\u{3041}', '\u{3096}', SC_OLetter),
+ ('\u{3099}', '\u{309a}', SC_Extend), ('\u{309d}', '\u{309f}', SC_OLetter), ('\u{30a1}',
+ '\u{30fa}', SC_OLetter), ('\u{30fc}', '\u{30ff}', SC_OLetter), ('\u{3105}', '\u{312f}',
+ SC_OLetter), ('\u{3131}', '\u{318e}', SC_OLetter), ('\u{31a0}', '\u{31bf}', SC_OLetter),
+ ('\u{31f0}', '\u{31ff}', SC_OLetter), ('\u{3400}', '\u{4dbf}', SC_OLetter), ('\u{4e00}',
+ '\u{a48c}', SC_OLetter), ('\u{a4d0}', '\u{a4fd}', SC_OLetter), ('\u{a4ff}', '\u{a4ff}',
+ SC_STerm), ('\u{a500}', '\u{a60c}', SC_OLetter), ('\u{a60e}', '\u{a60f}', SC_STerm),
+ ('\u{a610}', '\u{a61f}', SC_OLetter), ('\u{a620}', '\u{a629}', SC_Numeric), ('\u{a62a}',
+ '\u{a62b}', SC_OLetter), ('\u{a640}', '\u{a640}', SC_Upper), ('\u{a641}', '\u{a641}',
+ SC_Lower), ('\u{a642}', '\u{a642}', SC_Upper), ('\u{a643}', '\u{a643}', SC_Lower),
+ ('\u{a644}', '\u{a644}', SC_Upper), ('\u{a645}', '\u{a645}', SC_Lower), ('\u{a646}',
+ '\u{a646}', SC_Upper), ('\u{a647}', '\u{a647}', SC_Lower), ('\u{a648}', '\u{a648}',
+ SC_Upper), ('\u{a649}', '\u{a649}', SC_Lower), ('\u{a64a}', '\u{a64a}', SC_Upper),
+ ('\u{a64b}', '\u{a64b}', SC_Lower), ('\u{a64c}', '\u{a64c}', SC_Upper), ('\u{a64d}',
+ '\u{a64d}', SC_Lower), ('\u{a64e}', '\u{a64e}', SC_Upper), ('\u{a64f}', '\u{a64f}',
+ SC_Lower), ('\u{a650}', '\u{a650}', SC_Upper), ('\u{a651}', '\u{a651}', SC_Lower),
+ ('\u{a652}', '\u{a652}', SC_Upper), ('\u{a653}', '\u{a653}', SC_Lower), ('\u{a654}',
+ '\u{a654}', SC_Upper), ('\u{a655}', '\u{a655}', SC_Lower), ('\u{a656}', '\u{a656}',
+ SC_Upper), ('\u{a657}', '\u{a657}', SC_Lower), ('\u{a658}', '\u{a658}', SC_Upper),
+ ('\u{a659}', '\u{a659}', SC_Lower), ('\u{a65a}', '\u{a65a}', SC_Upper), ('\u{a65b}',
+ '\u{a65b}', SC_Lower), ('\u{a65c}', '\u{a65c}', SC_Upper), ('\u{a65d}', '\u{a65d}',
+ SC_Lower), ('\u{a65e}', '\u{a65e}', SC_Upper), ('\u{a65f}', '\u{a65f}', SC_Lower),
+ ('\u{a660}', '\u{a660}', SC_Upper), ('\u{a661}', '\u{a661}', SC_Lower), ('\u{a662}',
+ '\u{a662}', SC_Upper), ('\u{a663}', '\u{a663}', SC_Lower), ('\u{a664}', '\u{a664}',
+ SC_Upper), ('\u{a665}', '\u{a665}', SC_Lower), ('\u{a666}', '\u{a666}', SC_Upper),
+ ('\u{a667}', '\u{a667}', SC_Lower), ('\u{a668}', '\u{a668}', SC_Upper), ('\u{a669}',
+ '\u{a669}', SC_Lower), ('\u{a66a}', '\u{a66a}', SC_Upper), ('\u{a66b}', '\u{a66b}',
+ SC_Lower), ('\u{a66c}', '\u{a66c}', SC_Upper), ('\u{a66d}', '\u{a66d}', SC_Lower),
+ ('\u{a66e}', '\u{a66e}', SC_OLetter), ('\u{a66f}', '\u{a672}', SC_Extend), ('\u{a674}',
+ '\u{a67d}', SC_Extend), ('\u{a67f}', '\u{a67f}', SC_OLetter), ('\u{a680}', '\u{a680}',
+ SC_Upper), ('\u{a681}', '\u{a681}', SC_Lower), ('\u{a682}', '\u{a682}', SC_Upper),
+ ('\u{a683}', '\u{a683}', SC_Lower), ('\u{a684}', '\u{a684}', SC_Upper), ('\u{a685}',
+ '\u{a685}', SC_Lower), ('\u{a686}', '\u{a686}', SC_Upper), ('\u{a687}', '\u{a687}',
+ SC_Lower), ('\u{a688}', '\u{a688}', SC_Upper), ('\u{a689}', '\u{a689}', SC_Lower),
+ ('\u{a68a}', '\u{a68a}', SC_Upper), ('\u{a68b}', '\u{a68b}', SC_Lower), ('\u{a68c}',
+ '\u{a68c}', SC_Upper), ('\u{a68d}', '\u{a68d}', SC_Lower), ('\u{a68e}', '\u{a68e}',
+ SC_Upper), ('\u{a68f}', '\u{a68f}', SC_Lower), ('\u{a690}', '\u{a690}', SC_Upper),
+ ('\u{a691}', '\u{a691}', SC_Lower), ('\u{a692}', '\u{a692}', SC_Upper), ('\u{a693}',
+ '\u{a693}', SC_Lower), ('\u{a694}', '\u{a694}', SC_Upper), ('\u{a695}', '\u{a695}',
+ SC_Lower), ('\u{a696}', '\u{a696}', SC_Upper), ('\u{a697}', '\u{a697}', SC_Lower),
+ ('\u{a698}', '\u{a698}', SC_Upper), ('\u{a699}', '\u{a699}', SC_Lower), ('\u{a69a}',
+ '\u{a69a}', SC_Upper), ('\u{a69b}', '\u{a69d}', SC_Lower), ('\u{a69e}', '\u{a69f}',
+ SC_Extend), ('\u{a6a0}', '\u{a6ef}', SC_OLetter), ('\u{a6f0}', '\u{a6f1}', SC_Extend),
+ ('\u{a6f3}', '\u{a6f3}', SC_STerm), ('\u{a6f7}', '\u{a6f7}', SC_STerm), ('\u{a717}',
+ '\u{a71f}', SC_OLetter), ('\u{a722}', '\u{a722}', SC_Upper), ('\u{a723}', '\u{a723}',
+ SC_Lower), ('\u{a724}', '\u{a724}', SC_Upper), ('\u{a725}', '\u{a725}', SC_Lower),
+ ('\u{a726}', '\u{a726}', SC_Upper), ('\u{a727}', '\u{a727}', SC_Lower), ('\u{a728}',
+ '\u{a728}', SC_Upper), ('\u{a729}', '\u{a729}', SC_Lower), ('\u{a72a}', '\u{a72a}',
+ SC_Upper), ('\u{a72b}', '\u{a72b}', SC_Lower), ('\u{a72c}', '\u{a72c}', SC_Upper),
+ ('\u{a72d}', '\u{a72d}', SC_Lower), ('\u{a72e}', '\u{a72e}', SC_Upper), ('\u{a72f}',
+ '\u{a731}', SC_Lower), ('\u{a732}', '\u{a732}', SC_Upper), ('\u{a733}', '\u{a733}',
+ SC_Lower), ('\u{a734}', '\u{a734}', SC_Upper), ('\u{a735}', '\u{a735}', SC_Lower),
+ ('\u{a736}', '\u{a736}', SC_Upper), ('\u{a737}', '\u{a737}', SC_Lower), ('\u{a738}',
+ '\u{a738}', SC_Upper), ('\u{a739}', '\u{a739}', SC_Lower), ('\u{a73a}', '\u{a73a}',
+ SC_Upper), ('\u{a73b}', '\u{a73b}', SC_Lower), ('\u{a73c}', '\u{a73c}', SC_Upper),
+ ('\u{a73d}', '\u{a73d}', SC_Lower), ('\u{a73e}', '\u{a73e}', SC_Upper), ('\u{a73f}',
+ '\u{a73f}', SC_Lower), ('\u{a740}', '\u{a740}', SC_Upper), ('\u{a741}', '\u{a741}',
+ SC_Lower), ('\u{a742}', '\u{a742}', SC_Upper), ('\u{a743}', '\u{a743}', SC_Lower),
+ ('\u{a744}', '\u{a744}', SC_Upper), ('\u{a745}', '\u{a745}', SC_Lower), ('\u{a746}',
+ '\u{a746}', SC_Upper), ('\u{a747}', '\u{a747}', SC_Lower), ('\u{a748}', '\u{a748}',
+ SC_Upper), ('\u{a749}', '\u{a749}', SC_Lower), ('\u{a74a}', '\u{a74a}', SC_Upper),
+ ('\u{a74b}', '\u{a74b}', SC_Lower), ('\u{a74c}', '\u{a74c}', SC_Upper), ('\u{a74d}',
+ '\u{a74d}', SC_Lower), ('\u{a74e}', '\u{a74e}', SC_Upper), ('\u{a74f}', '\u{a74f}',
+ SC_Lower), ('\u{a750}', '\u{a750}', SC_Upper), ('\u{a751}', '\u{a751}', SC_Lower),
+ ('\u{a752}', '\u{a752}', SC_Upper), ('\u{a753}', '\u{a753}', SC_Lower), ('\u{a754}',
+ '\u{a754}', SC_Upper), ('\u{a755}', '\u{a755}', SC_Lower), ('\u{a756}', '\u{a756}',
+ SC_Upper), ('\u{a757}', '\u{a757}', SC_Lower), ('\u{a758}', '\u{a758}', SC_Upper),
+ ('\u{a759}', '\u{a759}', SC_Lower), ('\u{a75a}', '\u{a75a}', SC_Upper), ('\u{a75b}',
+ '\u{a75b}', SC_Lower), ('\u{a75c}', '\u{a75c}', SC_Upper), ('\u{a75d}', '\u{a75d}',
+ SC_Lower), ('\u{a75e}', '\u{a75e}', SC_Upper), ('\u{a75f}', '\u{a75f}', SC_Lower),
+ ('\u{a760}', '\u{a760}', SC_Upper), ('\u{a761}', '\u{a761}', SC_Lower), ('\u{a762}',
+ '\u{a762}', SC_Upper), ('\u{a763}', '\u{a763}', SC_Lower), ('\u{a764}', '\u{a764}',
+ SC_Upper), ('\u{a765}', '\u{a765}', SC_Lower), ('\u{a766}', '\u{a766}', SC_Upper),
+ ('\u{a767}', '\u{a767}', SC_Lower), ('\u{a768}', '\u{a768}', SC_Upper), ('\u{a769}',
+ '\u{a769}', SC_Lower), ('\u{a76a}', '\u{a76a}', SC_Upper), ('\u{a76b}', '\u{a76b}',
+ SC_Lower), ('\u{a76c}', '\u{a76c}', SC_Upper), ('\u{a76d}', '\u{a76d}', SC_Lower),
+ ('\u{a76e}', '\u{a76e}', SC_Upper), ('\u{a76f}', '\u{a778}', SC_Lower), ('\u{a779}',
+ '\u{a779}', SC_Upper), ('\u{a77a}', '\u{a77a}', SC_Lower), ('\u{a77b}', '\u{a77b}',
+ SC_Upper), ('\u{a77c}', '\u{a77c}', SC_Lower), ('\u{a77d}', '\u{a77e}', SC_Upper),
+ ('\u{a77f}', '\u{a77f}', SC_Lower), ('\u{a780}', '\u{a780}', SC_Upper), ('\u{a781}',
+ '\u{a781}', SC_Lower), ('\u{a782}', '\u{a782}', SC_Upper), ('\u{a783}', '\u{a783}',
+ SC_Lower), ('\u{a784}', '\u{a784}', SC_Upper), ('\u{a785}', '\u{a785}', SC_Lower),
+ ('\u{a786}', '\u{a786}', SC_Upper), ('\u{a787}', '\u{a787}', SC_Lower), ('\u{a788}',
+ '\u{a788}', SC_OLetter), ('\u{a78b}', '\u{a78b}', SC_Upper), ('\u{a78c}', '\u{a78c}',
+ SC_Lower), ('\u{a78d}', '\u{a78d}', SC_Upper), ('\u{a78e}', '\u{a78e}', SC_Lower),
+ ('\u{a78f}', '\u{a78f}', SC_OLetter), ('\u{a790}', '\u{a790}', SC_Upper), ('\u{a791}',
+ '\u{a791}', SC_Lower), ('\u{a792}', '\u{a792}', SC_Upper), ('\u{a793}', '\u{a795}',
+ SC_Lower), ('\u{a796}', '\u{a796}', SC_Upper), ('\u{a797}', '\u{a797}', SC_Lower),
+ ('\u{a798}', '\u{a798}', SC_Upper), ('\u{a799}', '\u{a799}', SC_Lower), ('\u{a79a}',
+ '\u{a79a}', SC_Upper), ('\u{a79b}', '\u{a79b}', SC_Lower), ('\u{a79c}', '\u{a79c}',
+ SC_Upper), ('\u{a79d}', '\u{a79d}', SC_Lower), ('\u{a79e}', '\u{a79e}', SC_Upper),
+ ('\u{a79f}', '\u{a79f}', SC_Lower), ('\u{a7a0}', '\u{a7a0}', SC_Upper), ('\u{a7a1}',
+ '\u{a7a1}', SC_Lower), ('\u{a7a2}', '\u{a7a2}', SC_Upper), ('\u{a7a3}', '\u{a7a3}',
+ SC_Lower), ('\u{a7a4}', '\u{a7a4}', SC_Upper), ('\u{a7a5}', '\u{a7a5}', SC_Lower),
+ ('\u{a7a6}', '\u{a7a6}', SC_Upper), ('\u{a7a7}', '\u{a7a7}', SC_Lower), ('\u{a7a8}',
+ '\u{a7a8}', SC_Upper), ('\u{a7a9}', '\u{a7a9}', SC_Lower), ('\u{a7aa}', '\u{a7ae}',
+ SC_Upper), ('\u{a7af}', '\u{a7af}', SC_Lower), ('\u{a7b0}', '\u{a7b4}', SC_Upper),
+ ('\u{a7b5}', '\u{a7b5}', SC_Lower), ('\u{a7b6}', '\u{a7b6}', SC_Upper), ('\u{a7b7}',
+ '\u{a7b7}', SC_Lower), ('\u{a7b8}', '\u{a7b8}', SC_Upper), ('\u{a7b9}', '\u{a7b9}',
+ SC_Lower), ('\u{a7ba}', '\u{a7ba}', SC_Upper), ('\u{a7bb}', '\u{a7bb}', SC_Lower),
+ ('\u{a7bc}', '\u{a7bc}', SC_Upper), ('\u{a7bd}', '\u{a7bd}', SC_Lower), ('\u{a7be}',
+ '\u{a7be}', SC_Upper), ('\u{a7bf}', '\u{a7bf}', SC_Lower), ('\u{a7c0}', '\u{a7c0}',
+ SC_Upper), ('\u{a7c1}', '\u{a7c1}', SC_Lower), ('\u{a7c2}', '\u{a7c2}', SC_Upper),
+ ('\u{a7c3}', '\u{a7c3}', SC_Lower), ('\u{a7c4}', '\u{a7c7}', SC_Upper), ('\u{a7c8}',
+ '\u{a7c8}', SC_Lower), ('\u{a7c9}', '\u{a7c9}', SC_Upper), ('\u{a7ca}', '\u{a7ca}',
+ SC_Lower), ('\u{a7d0}', '\u{a7d0}', SC_Upper), ('\u{a7d1}', '\u{a7d1}', SC_Lower),
+ ('\u{a7d3}', '\u{a7d3}', SC_Lower), ('\u{a7d5}', '\u{a7d5}', SC_Lower), ('\u{a7d6}',
+ '\u{a7d6}', SC_Upper), ('\u{a7d7}', '\u{a7d7}', SC_Lower), ('\u{a7d8}', '\u{a7d8}',
+ SC_Upper), ('\u{a7d9}', '\u{a7d9}', SC_Lower), ('\u{a7f2}', '\u{a7f4}', SC_Lower),
+ ('\u{a7f5}', '\u{a7f5}', SC_Upper), ('\u{a7f6}', '\u{a7f6}', SC_Lower), ('\u{a7f7}',
+ '\u{a7f7}', SC_OLetter), ('\u{a7f8}', '\u{a7fa}', SC_Lower), ('\u{a7fb}', '\u{a801}',
+ SC_OLetter), ('\u{a802}', '\u{a802}', SC_Extend), ('\u{a803}', '\u{a805}', SC_OLetter),
+ ('\u{a806}', '\u{a806}', SC_Extend), ('\u{a807}', '\u{a80a}', SC_OLetter), ('\u{a80b}',
+ '\u{a80b}', SC_Extend), ('\u{a80c}', '\u{a822}', SC_OLetter), ('\u{a823}', '\u{a827}',
+ SC_Extend), ('\u{a82c}', '\u{a82c}', SC_Extend), ('\u{a840}', '\u{a873}', SC_OLetter),
+ ('\u{a876}', '\u{a877}', SC_STerm), ('\u{a880}', '\u{a881}', SC_Extend), ('\u{a882}',
+ '\u{a8b3}', SC_OLetter), ('\u{a8b4}', '\u{a8c5}', SC_Extend), ('\u{a8ce}', '\u{a8cf}',
+ SC_STerm), ('\u{a8d0}', '\u{a8d9}', SC_Numeric), ('\u{a8e0}', '\u{a8f1}', SC_Extend),
+ ('\u{a8f2}', '\u{a8f7}', SC_OLetter), ('\u{a8fb}', '\u{a8fb}', SC_OLetter), ('\u{a8fd}',
+ '\u{a8fe}', SC_OLetter), ('\u{a8ff}', '\u{a8ff}', SC_Extend), ('\u{a900}', '\u{a909}',
+ SC_Numeric), ('\u{a90a}', '\u{a925}', SC_OLetter), ('\u{a926}', '\u{a92d}', SC_Extend),
+ ('\u{a92f}', '\u{a92f}', SC_STerm), ('\u{a930}', '\u{a946}', SC_OLetter), ('\u{a947}',
+ '\u{a953}', SC_Extend), ('\u{a960}', '\u{a97c}', SC_OLetter), ('\u{a980}', '\u{a983}',
+ SC_Extend), ('\u{a984}', '\u{a9b2}', SC_OLetter), ('\u{a9b3}', '\u{a9c0}', SC_Extend),
+ ('\u{a9c8}', '\u{a9c9}', SC_STerm), ('\u{a9cf}', '\u{a9cf}', SC_OLetter), ('\u{a9d0}',
+ '\u{a9d9}', SC_Numeric), ('\u{a9e0}', '\u{a9e4}', SC_OLetter), ('\u{a9e5}', '\u{a9e5}',
+ SC_Extend), ('\u{a9e6}', '\u{a9ef}', SC_OLetter), ('\u{a9f0}', '\u{a9f9}', SC_Numeric),
+ ('\u{a9fa}', '\u{a9fe}', SC_OLetter), ('\u{aa00}', '\u{aa28}', SC_OLetter), ('\u{aa29}',
+ '\u{aa36}', SC_Extend), ('\u{aa40}', '\u{aa42}', SC_OLetter), ('\u{aa43}', '\u{aa43}',
+ SC_Extend), ('\u{aa44}', '\u{aa4b}', SC_OLetter), ('\u{aa4c}', '\u{aa4d}', SC_Extend),
+ ('\u{aa50}', '\u{aa59}', SC_Numeric), ('\u{aa5d}', '\u{aa5f}', SC_STerm), ('\u{aa60}',
+ '\u{aa76}', SC_OLetter), ('\u{aa7a}', '\u{aa7a}', SC_OLetter), ('\u{aa7b}', '\u{aa7d}',
+ SC_Extend), ('\u{aa7e}', '\u{aaaf}', SC_OLetter), ('\u{aab0}', '\u{aab0}', SC_Extend),
+ ('\u{aab1}', '\u{aab1}', SC_OLetter), ('\u{aab2}', '\u{aab4}', SC_Extend), ('\u{aab5}',
+ '\u{aab6}', SC_OLetter), ('\u{aab7}', '\u{aab8}', SC_Extend), ('\u{aab9}', '\u{aabd}',
+ SC_OLetter), ('\u{aabe}', '\u{aabf}', SC_Extend), ('\u{aac0}', '\u{aac0}', SC_OLetter),
+ ('\u{aac1}', '\u{aac1}', SC_Extend), ('\u{aac2}', '\u{aac2}', SC_OLetter), ('\u{aadb}',
+ '\u{aadd}', SC_OLetter), ('\u{aae0}', '\u{aaea}', SC_OLetter), ('\u{aaeb}', '\u{aaef}',
+ SC_Extend), ('\u{aaf0}', '\u{aaf1}', SC_STerm), ('\u{aaf2}', '\u{aaf4}', SC_OLetter),
+ ('\u{aaf5}', '\u{aaf6}', SC_Extend), ('\u{ab01}', '\u{ab06}', SC_OLetter), ('\u{ab09}',
+ '\u{ab0e}', SC_OLetter), ('\u{ab11}', '\u{ab16}', SC_OLetter), ('\u{ab20}', '\u{ab26}',
+ SC_OLetter), ('\u{ab28}', '\u{ab2e}', SC_OLetter), ('\u{ab30}', '\u{ab5a}', SC_Lower),
+ ('\u{ab5c}', '\u{ab69}', SC_Lower), ('\u{ab70}', '\u{abbf}', SC_Lower), ('\u{abc0}',
+ '\u{abe2}', SC_OLetter), ('\u{abe3}', '\u{abea}', SC_Extend), ('\u{abeb}', '\u{abeb}',
+ SC_STerm), ('\u{abec}', '\u{abed}', SC_Extend), ('\u{abf0}', '\u{abf9}', SC_Numeric),
+ ('\u{ac00}', '\u{d7a3}', SC_OLetter), ('\u{d7b0}', '\u{d7c6}', SC_OLetter), ('\u{d7cb}',
+ '\u{d7fb}', SC_OLetter), ('\u{f900}', '\u{fa6d}', SC_OLetter), ('\u{fa70}', '\u{fad9}',
+ SC_OLetter), ('\u{fb00}', '\u{fb06}', SC_Lower), ('\u{fb13}', '\u{fb17}', SC_Lower),
+ ('\u{fb1d}', '\u{fb1d}', SC_OLetter), ('\u{fb1e}', '\u{fb1e}', SC_Extend), ('\u{fb1f}',
+ '\u{fb28}', SC_OLetter), ('\u{fb2a}', '\u{fb36}', SC_OLetter), ('\u{fb38}', '\u{fb3c}',
+ SC_OLetter), ('\u{fb3e}', '\u{fb3e}', SC_OLetter), ('\u{fb40}', '\u{fb41}', SC_OLetter),
+ ('\u{fb43}', '\u{fb44}', SC_OLetter), ('\u{fb46}', '\u{fbb1}', SC_OLetter), ('\u{fbd3}',
+ '\u{fd3d}', SC_OLetter), ('\u{fd3e}', '\u{fd3f}', SC_Close), ('\u{fd50}', '\u{fd8f}',
+ SC_OLetter), ('\u{fd92}', '\u{fdc7}', SC_OLetter), ('\u{fdf0}', '\u{fdfb}', SC_OLetter),
+ ('\u{fe00}', '\u{fe0f}', SC_Extend), ('\u{fe10}', '\u{fe11}', SC_SContinue), ('\u{fe13}',
+ '\u{fe13}', SC_SContinue), ('\u{fe17}', '\u{fe18}', SC_Close), ('\u{fe20}', '\u{fe2f}',
+ SC_Extend), ('\u{fe31}', '\u{fe32}', SC_SContinue), ('\u{fe35}', '\u{fe44}', SC_Close),
+ ('\u{fe47}', '\u{fe48}', SC_Close), ('\u{fe50}', '\u{fe51}', SC_SContinue), ('\u{fe52}',
+ '\u{fe52}', SC_ATerm), ('\u{fe55}', '\u{fe55}', SC_SContinue), ('\u{fe56}', '\u{fe57}',
+ SC_STerm), ('\u{fe58}', '\u{fe58}', SC_SContinue), ('\u{fe59}', '\u{fe5e}', SC_Close),
+ ('\u{fe63}', '\u{fe63}', SC_SContinue), ('\u{fe70}', '\u{fe74}', SC_OLetter), ('\u{fe76}',
+ '\u{fefc}', SC_OLetter), ('\u{feff}', '\u{feff}', SC_Format), ('\u{ff01}', '\u{ff01}',
+ SC_STerm), ('\u{ff08}', '\u{ff09}', SC_Close), ('\u{ff0c}', '\u{ff0d}', SC_SContinue),
+ ('\u{ff0e}', '\u{ff0e}', SC_ATerm), ('\u{ff10}', '\u{ff19}', SC_Numeric), ('\u{ff1a}',
+ '\u{ff1a}', SC_SContinue), ('\u{ff1f}', '\u{ff1f}', SC_STerm), ('\u{ff21}', '\u{ff3a}',
+ SC_Upper), ('\u{ff3b}', '\u{ff3b}', SC_Close), ('\u{ff3d}', '\u{ff3d}', SC_Close),
+ ('\u{ff41}', '\u{ff5a}', SC_Lower), ('\u{ff5b}', '\u{ff5b}', SC_Close), ('\u{ff5d}',
+ '\u{ff5d}', SC_Close), ('\u{ff5f}', '\u{ff60}', SC_Close), ('\u{ff61}', '\u{ff61}',
+ SC_STerm), ('\u{ff62}', '\u{ff63}', SC_Close), ('\u{ff64}', '\u{ff64}', SC_SContinue),
+ ('\u{ff66}', '\u{ff9d}', SC_OLetter), ('\u{ff9e}', '\u{ff9f}', SC_Extend), ('\u{ffa0}',
+ '\u{ffbe}', SC_OLetter), ('\u{ffc2}', '\u{ffc7}', SC_OLetter), ('\u{ffca}', '\u{ffcf}',
+ SC_OLetter), ('\u{ffd2}', '\u{ffd7}', SC_OLetter), ('\u{ffda}', '\u{ffdc}', SC_OLetter),
+ ('\u{fff9}', '\u{fffb}', SC_Format), ('\u{10000}', '\u{1000b}', SC_OLetter), ('\u{1000d}',
+ '\u{10026}', SC_OLetter), ('\u{10028}', '\u{1003a}', SC_OLetter), ('\u{1003c}', '\u{1003d}',
+ SC_OLetter), ('\u{1003f}', '\u{1004d}', SC_OLetter), ('\u{10050}', '\u{1005d}', SC_OLetter),
+ ('\u{10080}', '\u{100fa}', SC_OLetter), ('\u{10140}', '\u{10174}', SC_OLetter),
+ ('\u{101fd}', '\u{101fd}', SC_Extend), ('\u{10280}', '\u{1029c}', SC_OLetter), ('\u{102a0}',
+ '\u{102d0}', SC_OLetter), ('\u{102e0}', '\u{102e0}', SC_Extend), ('\u{10300}', '\u{1031f}',
+ SC_OLetter), ('\u{1032d}', '\u{1034a}', SC_OLetter), ('\u{10350}', '\u{10375}', SC_OLetter),
+ ('\u{10376}', '\u{1037a}', SC_Extend), ('\u{10380}', '\u{1039d}', SC_OLetter), ('\u{103a0}',
+ '\u{103c3}', SC_OLetter), ('\u{103c8}', '\u{103cf}', SC_OLetter), ('\u{103d1}', '\u{103d5}',
+ SC_OLetter), ('\u{10400}', '\u{10427}', SC_Upper), ('\u{10428}', '\u{1044f}', SC_Lower),
+ ('\u{10450}', '\u{1049d}', SC_OLetter), ('\u{104a0}', '\u{104a9}', SC_Numeric),
+ ('\u{104b0}', '\u{104d3}', SC_Upper), ('\u{104d8}', '\u{104fb}', SC_Lower), ('\u{10500}',
+ '\u{10527}', SC_OLetter), ('\u{10530}', '\u{10563}', SC_OLetter), ('\u{10570}', '\u{1057a}',
+ SC_Upper), ('\u{1057c}', '\u{1058a}', SC_Upper), ('\u{1058c}', '\u{10592}', SC_Upper),
+ ('\u{10594}', '\u{10595}', SC_Upper), ('\u{10597}', '\u{105a1}', SC_Lower), ('\u{105a3}',
+ '\u{105b1}', SC_Lower), ('\u{105b3}', '\u{105b9}', SC_Lower), ('\u{105bb}', '\u{105bc}',
+ SC_Lower), ('\u{10600}', '\u{10736}', SC_OLetter), ('\u{10740}', '\u{10755}', SC_OLetter),
+ ('\u{10760}', '\u{10767}', SC_OLetter), ('\u{10780}', '\u{10780}', SC_Lower), ('\u{10781}',
+ '\u{10782}', SC_OLetter), ('\u{10783}', '\u{10785}', SC_Lower), ('\u{10787}', '\u{107b0}',
+ SC_Lower), ('\u{107b2}', '\u{107ba}', SC_Lower), ('\u{10800}', '\u{10805}', SC_OLetter),
+ ('\u{10808}', '\u{10808}', SC_OLetter), ('\u{1080a}', '\u{10835}', SC_OLetter),
+ ('\u{10837}', '\u{10838}', SC_OLetter), ('\u{1083c}', '\u{1083c}', SC_OLetter),
('\u{1083f}', '\u{10855}', SC_OLetter), ('\u{10860}', '\u{10876}', SC_OLetter),
('\u{10880}', '\u{1089e}', SC_OLetter), ('\u{108e0}', '\u{108f2}', SC_OLetter),
('\u{108f4}', '\u{108f5}', SC_OLetter), ('\u{10900}', '\u{10915}', SC_OLetter),
@@ -2459,33 +2483,34 @@ pub mod sentence {
('\u{10c00}', '\u{10c48}', SC_OLetter), ('\u{10c80}', '\u{10cb2}', SC_Upper), ('\u{10cc0}',
'\u{10cf2}', SC_Lower), ('\u{10d00}', '\u{10d23}', SC_OLetter), ('\u{10d24}', '\u{10d27}',
SC_Extend), ('\u{10d30}', '\u{10d39}', SC_Numeric), ('\u{10e80}', '\u{10ea9}', SC_OLetter),
- ('\u{10eab}', '\u{10eac}', SC_Extend), ('\u{10eb0}', '\u{10eb1}', SC_OLetter), ('\u{10f00}',
- '\u{10f1c}', SC_OLetter), ('\u{10f27}', '\u{10f27}', SC_OLetter), ('\u{10f30}', '\u{10f45}',
- SC_OLetter), ('\u{10f46}', '\u{10f50}', SC_Extend), ('\u{10f55}', '\u{10f59}', SC_STerm),
- ('\u{10f70}', '\u{10f81}', SC_OLetter), ('\u{10f82}', '\u{10f85}', SC_Extend), ('\u{10f86}',
- '\u{10f89}', SC_STerm), ('\u{10fb0}', '\u{10fc4}', SC_OLetter), ('\u{10fe0}', '\u{10ff6}',
- SC_OLetter), ('\u{11000}', '\u{11002}', SC_Extend), ('\u{11003}', '\u{11037}', SC_OLetter),
- ('\u{11038}', '\u{11046}', SC_Extend), ('\u{11047}', '\u{11048}', SC_STerm), ('\u{11066}',
- '\u{1106f}', SC_Numeric), ('\u{11070}', '\u{11070}', SC_Extend), ('\u{11071}', '\u{11072}',
- SC_OLetter), ('\u{11073}', '\u{11074}', SC_Extend), ('\u{11075}', '\u{11075}', SC_OLetter),
- ('\u{1107f}', '\u{11082}', SC_Extend), ('\u{11083}', '\u{110af}', SC_OLetter), ('\u{110b0}',
- '\u{110ba}', SC_Extend), ('\u{110bd}', '\u{110bd}', SC_Format), ('\u{110be}', '\u{110c1}',
- SC_STerm), ('\u{110c2}', '\u{110c2}', SC_Extend), ('\u{110cd}', '\u{110cd}', SC_Format),
- ('\u{110d0}', '\u{110e8}', SC_OLetter), ('\u{110f0}', '\u{110f9}', SC_Numeric),
- ('\u{11100}', '\u{11102}', SC_Extend), ('\u{11103}', '\u{11126}', SC_OLetter), ('\u{11127}',
- '\u{11134}', SC_Extend), ('\u{11136}', '\u{1113f}', SC_Numeric), ('\u{11141}', '\u{11143}',
- SC_STerm), ('\u{11144}', '\u{11144}', SC_OLetter), ('\u{11145}', '\u{11146}', SC_Extend),
- ('\u{11147}', '\u{11147}', SC_OLetter), ('\u{11150}', '\u{11172}', SC_OLetter),
- ('\u{11173}', '\u{11173}', SC_Extend), ('\u{11176}', '\u{11176}', SC_OLetter), ('\u{11180}',
- '\u{11182}', SC_Extend), ('\u{11183}', '\u{111b2}', SC_OLetter), ('\u{111b3}', '\u{111c0}',
- SC_Extend), ('\u{111c1}', '\u{111c4}', SC_OLetter), ('\u{111c5}', '\u{111c6}', SC_STerm),
- ('\u{111c9}', '\u{111cc}', SC_Extend), ('\u{111cd}', '\u{111cd}', SC_STerm), ('\u{111ce}',
- '\u{111cf}', SC_Extend), ('\u{111d0}', '\u{111d9}', SC_Numeric), ('\u{111da}', '\u{111da}',
- SC_OLetter), ('\u{111dc}', '\u{111dc}', SC_OLetter), ('\u{111de}', '\u{111df}', SC_STerm),
- ('\u{11200}', '\u{11211}', SC_OLetter), ('\u{11213}', '\u{1122b}', SC_OLetter),
+ ('\u{10eab}', '\u{10eac}', SC_Extend), ('\u{10eb0}', '\u{10eb1}', SC_OLetter), ('\u{10efd}',
+ '\u{10eff}', SC_Extend), ('\u{10f00}', '\u{10f1c}', SC_OLetter), ('\u{10f27}', '\u{10f27}',
+ SC_OLetter), ('\u{10f30}', '\u{10f45}', SC_OLetter), ('\u{10f46}', '\u{10f50}', SC_Extend),
+ ('\u{10f55}', '\u{10f59}', SC_STerm), ('\u{10f70}', '\u{10f81}', SC_OLetter), ('\u{10f82}',
+ '\u{10f85}', SC_Extend), ('\u{10f86}', '\u{10f89}', SC_STerm), ('\u{10fb0}', '\u{10fc4}',
+ SC_OLetter), ('\u{10fe0}', '\u{10ff6}', SC_OLetter), ('\u{11000}', '\u{11002}', SC_Extend),
+ ('\u{11003}', '\u{11037}', SC_OLetter), ('\u{11038}', '\u{11046}', SC_Extend), ('\u{11047}',
+ '\u{11048}', SC_STerm), ('\u{11066}', '\u{1106f}', SC_Numeric), ('\u{11070}', '\u{11070}',
+ SC_Extend), ('\u{11071}', '\u{11072}', SC_OLetter), ('\u{11073}', '\u{11074}', SC_Extend),
+ ('\u{11075}', '\u{11075}', SC_OLetter), ('\u{1107f}', '\u{11082}', SC_Extend), ('\u{11083}',
+ '\u{110af}', SC_OLetter), ('\u{110b0}', '\u{110ba}', SC_Extend), ('\u{110bd}', '\u{110bd}',
+ SC_Format), ('\u{110be}', '\u{110c1}', SC_STerm), ('\u{110c2}', '\u{110c2}', SC_Extend),
+ ('\u{110cd}', '\u{110cd}', SC_Format), ('\u{110d0}', '\u{110e8}', SC_OLetter), ('\u{110f0}',
+ '\u{110f9}', SC_Numeric), ('\u{11100}', '\u{11102}', SC_Extend), ('\u{11103}', '\u{11126}',
+ SC_OLetter), ('\u{11127}', '\u{11134}', SC_Extend), ('\u{11136}', '\u{1113f}', SC_Numeric),
+ ('\u{11141}', '\u{11143}', SC_STerm), ('\u{11144}', '\u{11144}', SC_OLetter), ('\u{11145}',
+ '\u{11146}', SC_Extend), ('\u{11147}', '\u{11147}', SC_OLetter), ('\u{11150}', '\u{11172}',
+ SC_OLetter), ('\u{11173}', '\u{11173}', SC_Extend), ('\u{11176}', '\u{11176}', SC_OLetter),
+ ('\u{11180}', '\u{11182}', SC_Extend), ('\u{11183}', '\u{111b2}', SC_OLetter), ('\u{111b3}',
+ '\u{111c0}', SC_Extend), ('\u{111c1}', '\u{111c4}', SC_OLetter), ('\u{111c5}', '\u{111c6}',
+ SC_STerm), ('\u{111c9}', '\u{111cc}', SC_Extend), ('\u{111cd}', '\u{111cd}', SC_STerm),
+ ('\u{111ce}', '\u{111cf}', SC_Extend), ('\u{111d0}', '\u{111d9}', SC_Numeric), ('\u{111da}',
+ '\u{111da}', SC_OLetter), ('\u{111dc}', '\u{111dc}', SC_OLetter), ('\u{111de}', '\u{111df}',
+ SC_STerm), ('\u{11200}', '\u{11211}', SC_OLetter), ('\u{11213}', '\u{1122b}', SC_OLetter),
('\u{1122c}', '\u{11237}', SC_Extend), ('\u{11238}', '\u{11239}', SC_STerm), ('\u{1123b}',
- '\u{1123c}', SC_STerm), ('\u{1123e}', '\u{1123e}', SC_Extend), ('\u{11280}', '\u{11286}',
- SC_OLetter), ('\u{11288}', '\u{11288}', SC_OLetter), ('\u{1128a}', '\u{1128d}', SC_OLetter),
+ '\u{1123c}', SC_STerm), ('\u{1123e}', '\u{1123e}', SC_Extend), ('\u{1123f}', '\u{11240}',
+ SC_OLetter), ('\u{11241}', '\u{11241}', SC_Extend), ('\u{11280}', '\u{11286}', SC_OLetter),
+ ('\u{11288}', '\u{11288}', SC_OLetter), ('\u{1128a}', '\u{1128d}', SC_OLetter),
('\u{1128f}', '\u{1129d}', SC_OLetter), ('\u{1129f}', '\u{112a8}', SC_OLetter),
('\u{112a9}', '\u{112a9}', SC_STerm), ('\u{112b0}', '\u{112de}', SC_OLetter), ('\u{112df}',
'\u{112ea}', SC_Extend), ('\u{112f0}', '\u{112f9}', SC_Numeric), ('\u{11300}', '\u{11303}',
@@ -2542,17 +2567,22 @@ pub mod sentence {
('\u{11d8a}', '\u{11d8e}', SC_Extend), ('\u{11d90}', '\u{11d91}', SC_Extend), ('\u{11d93}',
'\u{11d97}', SC_Extend), ('\u{11d98}', '\u{11d98}', SC_OLetter), ('\u{11da0}', '\u{11da9}',
SC_Numeric), ('\u{11ee0}', '\u{11ef2}', SC_OLetter), ('\u{11ef3}', '\u{11ef6}', SC_Extend),
- ('\u{11ef7}', '\u{11ef8}', SC_STerm), ('\u{11fb0}', '\u{11fb0}', SC_OLetter), ('\u{12000}',
- '\u{12399}', SC_OLetter), ('\u{12400}', '\u{1246e}', SC_OLetter), ('\u{12480}', '\u{12543}',
- SC_OLetter), ('\u{12f90}', '\u{12ff0}', SC_OLetter), ('\u{13000}', '\u{1342e}', SC_OLetter),
- ('\u{13430}', '\u{13438}', SC_Format), ('\u{14400}', '\u{14646}', SC_OLetter), ('\u{16800}',
- '\u{16a38}', SC_OLetter), ('\u{16a40}', '\u{16a5e}', SC_OLetter), ('\u{16a60}', '\u{16a69}',
- SC_Numeric), ('\u{16a6e}', '\u{16a6f}', SC_STerm), ('\u{16a70}', '\u{16abe}', SC_OLetter),
- ('\u{16ac0}', '\u{16ac9}', SC_Numeric), ('\u{16ad0}', '\u{16aed}', SC_OLetter),
- ('\u{16af0}', '\u{16af4}', SC_Extend), ('\u{16af5}', '\u{16af5}', SC_STerm), ('\u{16b00}',
- '\u{16b2f}', SC_OLetter), ('\u{16b30}', '\u{16b36}', SC_Extend), ('\u{16b37}', '\u{16b38}',
- SC_STerm), ('\u{16b40}', '\u{16b43}', SC_OLetter), ('\u{16b44}', '\u{16b44}', SC_STerm),
- ('\u{16b50}', '\u{16b59}', SC_Numeric), ('\u{16b63}', '\u{16b77}', SC_OLetter),
+ ('\u{11ef7}', '\u{11ef8}', SC_STerm), ('\u{11f00}', '\u{11f01}', SC_Extend), ('\u{11f02}',
+ '\u{11f02}', SC_OLetter), ('\u{11f03}', '\u{11f03}', SC_Extend), ('\u{11f04}', '\u{11f10}',
+ SC_OLetter), ('\u{11f12}', '\u{11f33}', SC_OLetter), ('\u{11f34}', '\u{11f3a}', SC_Extend),
+ ('\u{11f3e}', '\u{11f42}', SC_Extend), ('\u{11f43}', '\u{11f44}', SC_STerm), ('\u{11f50}',
+ '\u{11f59}', SC_Numeric), ('\u{11fb0}', '\u{11fb0}', SC_OLetter), ('\u{12000}', '\u{12399}',
+ SC_OLetter), ('\u{12400}', '\u{1246e}', SC_OLetter), ('\u{12480}', '\u{12543}', SC_OLetter),
+ ('\u{12f90}', '\u{12ff0}', SC_OLetter), ('\u{13000}', '\u{1342f}', SC_OLetter),
+ ('\u{13430}', '\u{1343f}', SC_Format), ('\u{13440}', '\u{13440}', SC_Extend), ('\u{13441}',
+ '\u{13446}', SC_OLetter), ('\u{13447}', '\u{13455}', SC_Extend), ('\u{14400}', '\u{14646}',
+ SC_OLetter), ('\u{16800}', '\u{16a38}', SC_OLetter), ('\u{16a40}', '\u{16a5e}', SC_OLetter),
+ ('\u{16a60}', '\u{16a69}', SC_Numeric), ('\u{16a6e}', '\u{16a6f}', SC_STerm), ('\u{16a70}',
+ '\u{16abe}', SC_OLetter), ('\u{16ac0}', '\u{16ac9}', SC_Numeric), ('\u{16ad0}', '\u{16aed}',
+ SC_OLetter), ('\u{16af0}', '\u{16af4}', SC_Extend), ('\u{16af5}', '\u{16af5}', SC_STerm),
+ ('\u{16b00}', '\u{16b2f}', SC_OLetter), ('\u{16b30}', '\u{16b36}', SC_Extend), ('\u{16b37}',
+ '\u{16b38}', SC_STerm), ('\u{16b40}', '\u{16b43}', SC_OLetter), ('\u{16b44}', '\u{16b44}',
+ SC_STerm), ('\u{16b50}', '\u{16b59}', SC_Numeric), ('\u{16b63}', '\u{16b77}', SC_OLetter),
('\u{16b7d}', '\u{16b8f}', SC_OLetter), ('\u{16e40}', '\u{16e5f}', SC_Upper), ('\u{16e60}',
'\u{16e7f}', SC_Lower), ('\u{16e98}', '\u{16e98}', SC_STerm), ('\u{16f00}', '\u{16f4a}',
SC_OLetter), ('\u{16f4f}', '\u{16f4f}', SC_Extend), ('\u{16f50}', '\u{16f50}', SC_OLetter),
@@ -2562,7 +2592,8 @@ pub mod sentence {
('\u{17000}', '\u{187f7}', SC_OLetter), ('\u{18800}', '\u{18cd5}', SC_OLetter),
('\u{18d00}', '\u{18d08}', SC_OLetter), ('\u{1aff0}', '\u{1aff3}', SC_OLetter),
('\u{1aff5}', '\u{1affb}', SC_OLetter), ('\u{1affd}', '\u{1affe}', SC_OLetter),
- ('\u{1b000}', '\u{1b122}', SC_OLetter), ('\u{1b150}', '\u{1b152}', SC_OLetter),
+ ('\u{1b000}', '\u{1b122}', SC_OLetter), ('\u{1b132}', '\u{1b132}', SC_OLetter),
+ ('\u{1b150}', '\u{1b152}', SC_OLetter), ('\u{1b155}', '\u{1b155}', SC_OLetter),
('\u{1b164}', '\u{1b167}', SC_OLetter), ('\u{1b170}', '\u{1b2fb}', SC_OLetter),
('\u{1bc00}', '\u{1bc6a}', SC_OLetter), ('\u{1bc70}', '\u{1bc7c}', SC_OLetter),
('\u{1bc80}', '\u{1bc88}', SC_OLetter), ('\u{1bc90}', '\u{1bc99}', SC_OLetter),
@@ -2601,40 +2632,43 @@ pub mod sentence {
SC_Extend), ('\u{1da84}', '\u{1da84}', SC_Extend), ('\u{1da88}', '\u{1da88}', SC_STerm),
('\u{1da9b}', '\u{1da9f}', SC_Extend), ('\u{1daa1}', '\u{1daaf}', SC_Extend), ('\u{1df00}',
'\u{1df09}', SC_Lower), ('\u{1df0a}', '\u{1df0a}', SC_OLetter), ('\u{1df0b}', '\u{1df1e}',
- SC_Lower), ('\u{1e000}', '\u{1e006}', SC_Extend), ('\u{1e008}', '\u{1e018}', SC_Extend),
- ('\u{1e01b}', '\u{1e021}', SC_Extend), ('\u{1e023}', '\u{1e024}', SC_Extend), ('\u{1e026}',
- '\u{1e02a}', SC_Extend), ('\u{1e100}', '\u{1e12c}', SC_OLetter), ('\u{1e130}', '\u{1e136}',
- SC_Extend), ('\u{1e137}', '\u{1e13d}', SC_OLetter), ('\u{1e140}', '\u{1e149}', SC_Numeric),
- ('\u{1e14e}', '\u{1e14e}', SC_OLetter), ('\u{1e290}', '\u{1e2ad}', SC_OLetter),
- ('\u{1e2ae}', '\u{1e2ae}', SC_Extend), ('\u{1e2c0}', '\u{1e2eb}', SC_OLetter), ('\u{1e2ec}',
- '\u{1e2ef}', SC_Extend), ('\u{1e2f0}', '\u{1e2f9}', SC_Numeric), ('\u{1e7e0}', '\u{1e7e6}',
- SC_OLetter), ('\u{1e7e8}', '\u{1e7eb}', SC_OLetter), ('\u{1e7ed}', '\u{1e7ee}', SC_OLetter),
- ('\u{1e7f0}', '\u{1e7fe}', SC_OLetter), ('\u{1e800}', '\u{1e8c4}', SC_OLetter),
- ('\u{1e8d0}', '\u{1e8d6}', SC_Extend), ('\u{1e900}', '\u{1e921}', SC_Upper), ('\u{1e922}',
- '\u{1e943}', SC_Lower), ('\u{1e944}', '\u{1e94a}', SC_Extend), ('\u{1e94b}', '\u{1e94b}',
- SC_OLetter), ('\u{1e950}', '\u{1e959}', SC_Numeric), ('\u{1ee00}', '\u{1ee03}', SC_OLetter),
- ('\u{1ee05}', '\u{1ee1f}', SC_OLetter), ('\u{1ee21}', '\u{1ee22}', SC_OLetter),
- ('\u{1ee24}', '\u{1ee24}', SC_OLetter), ('\u{1ee27}', '\u{1ee27}', SC_OLetter),
- ('\u{1ee29}', '\u{1ee32}', SC_OLetter), ('\u{1ee34}', '\u{1ee37}', SC_OLetter),
- ('\u{1ee39}', '\u{1ee39}', SC_OLetter), ('\u{1ee3b}', '\u{1ee3b}', SC_OLetter),
- ('\u{1ee42}', '\u{1ee42}', SC_OLetter), ('\u{1ee47}', '\u{1ee47}', SC_OLetter),
- ('\u{1ee49}', '\u{1ee49}', SC_OLetter), ('\u{1ee4b}', '\u{1ee4b}', SC_OLetter),
- ('\u{1ee4d}', '\u{1ee4f}', SC_OLetter), ('\u{1ee51}', '\u{1ee52}', SC_OLetter),
- ('\u{1ee54}', '\u{1ee54}', SC_OLetter), ('\u{1ee57}', '\u{1ee57}', SC_OLetter),
- ('\u{1ee59}', '\u{1ee59}', SC_OLetter), ('\u{1ee5b}', '\u{1ee5b}', SC_OLetter),
- ('\u{1ee5d}', '\u{1ee5d}', SC_OLetter), ('\u{1ee5f}', '\u{1ee5f}', SC_OLetter),
- ('\u{1ee61}', '\u{1ee62}', SC_OLetter), ('\u{1ee64}', '\u{1ee64}', SC_OLetter),
- ('\u{1ee67}', '\u{1ee6a}', SC_OLetter), ('\u{1ee6c}', '\u{1ee72}', SC_OLetter),
- ('\u{1ee74}', '\u{1ee77}', SC_OLetter), ('\u{1ee79}', '\u{1ee7c}', SC_OLetter),
- ('\u{1ee7e}', '\u{1ee7e}', SC_OLetter), ('\u{1ee80}', '\u{1ee89}', SC_OLetter),
- ('\u{1ee8b}', '\u{1ee9b}', SC_OLetter), ('\u{1eea1}', '\u{1eea3}', SC_OLetter),
- ('\u{1eea5}', '\u{1eea9}', SC_OLetter), ('\u{1eeab}', '\u{1eebb}', SC_OLetter),
- ('\u{1f130}', '\u{1f149}', SC_Upper), ('\u{1f150}', '\u{1f169}', SC_Upper), ('\u{1f170}',
- '\u{1f189}', SC_Upper), ('\u{1f676}', '\u{1f678}', SC_Close), ('\u{1fbf0}', '\u{1fbf9}',
- SC_Numeric), ('\u{20000}', '\u{2a6df}', SC_OLetter), ('\u{2a700}', '\u{2b738}', SC_OLetter),
- ('\u{2b740}', '\u{2b81d}', SC_OLetter), ('\u{2b820}', '\u{2cea1}', SC_OLetter),
- ('\u{2ceb0}', '\u{2ebe0}', SC_OLetter), ('\u{2f800}', '\u{2fa1d}', SC_OLetter),
- ('\u{30000}', '\u{3134a}', SC_OLetter), ('\u{e0001}', '\u{e0001}', SC_Format), ('\u{e0020}',
+ SC_Lower), ('\u{1df25}', '\u{1df2a}', SC_Lower), ('\u{1e000}', '\u{1e006}', SC_Extend),
+ ('\u{1e008}', '\u{1e018}', SC_Extend), ('\u{1e01b}', '\u{1e021}', SC_Extend), ('\u{1e023}',
+ '\u{1e024}', SC_Extend), ('\u{1e026}', '\u{1e02a}', SC_Extend), ('\u{1e030}', '\u{1e06d}',
+ SC_Lower), ('\u{1e08f}', '\u{1e08f}', SC_Extend), ('\u{1e100}', '\u{1e12c}', SC_OLetter),
+ ('\u{1e130}', '\u{1e136}', SC_Extend), ('\u{1e137}', '\u{1e13d}', SC_OLetter), ('\u{1e140}',
+ '\u{1e149}', SC_Numeric), ('\u{1e14e}', '\u{1e14e}', SC_OLetter), ('\u{1e290}', '\u{1e2ad}',
+ SC_OLetter), ('\u{1e2ae}', '\u{1e2ae}', SC_Extend), ('\u{1e2c0}', '\u{1e2eb}', SC_OLetter),
+ ('\u{1e2ec}', '\u{1e2ef}', SC_Extend), ('\u{1e2f0}', '\u{1e2f9}', SC_Numeric), ('\u{1e4d0}',
+ '\u{1e4eb}', SC_OLetter), ('\u{1e4ec}', '\u{1e4ef}', SC_Extend), ('\u{1e4f0}', '\u{1e4f9}',
+ SC_Numeric), ('\u{1e7e0}', '\u{1e7e6}', SC_OLetter), ('\u{1e7e8}', '\u{1e7eb}', SC_OLetter),
+ ('\u{1e7ed}', '\u{1e7ee}', SC_OLetter), ('\u{1e7f0}', '\u{1e7fe}', SC_OLetter),
+ ('\u{1e800}', '\u{1e8c4}', SC_OLetter), ('\u{1e8d0}', '\u{1e8d6}', SC_Extend), ('\u{1e900}',
+ '\u{1e921}', SC_Upper), ('\u{1e922}', '\u{1e943}', SC_Lower), ('\u{1e944}', '\u{1e94a}',
+ SC_Extend), ('\u{1e94b}', '\u{1e94b}', SC_OLetter), ('\u{1e950}', '\u{1e959}', SC_Numeric),
+ ('\u{1ee00}', '\u{1ee03}', SC_OLetter), ('\u{1ee05}', '\u{1ee1f}', SC_OLetter),
+ ('\u{1ee21}', '\u{1ee22}', SC_OLetter), ('\u{1ee24}', '\u{1ee24}', SC_OLetter),
+ ('\u{1ee27}', '\u{1ee27}', SC_OLetter), ('\u{1ee29}', '\u{1ee32}', SC_OLetter),
+ ('\u{1ee34}', '\u{1ee37}', SC_OLetter), ('\u{1ee39}', '\u{1ee39}', SC_OLetter),
+ ('\u{1ee3b}', '\u{1ee3b}', SC_OLetter), ('\u{1ee42}', '\u{1ee42}', SC_OLetter),
+ ('\u{1ee47}', '\u{1ee47}', SC_OLetter), ('\u{1ee49}', '\u{1ee49}', SC_OLetter),
+ ('\u{1ee4b}', '\u{1ee4b}', SC_OLetter), ('\u{1ee4d}', '\u{1ee4f}', SC_OLetter),
+ ('\u{1ee51}', '\u{1ee52}', SC_OLetter), ('\u{1ee54}', '\u{1ee54}', SC_OLetter),
+ ('\u{1ee57}', '\u{1ee57}', SC_OLetter), ('\u{1ee59}', '\u{1ee59}', SC_OLetter),
+ ('\u{1ee5b}', '\u{1ee5b}', SC_OLetter), ('\u{1ee5d}', '\u{1ee5d}', SC_OLetter),
+ ('\u{1ee5f}', '\u{1ee5f}', SC_OLetter), ('\u{1ee61}', '\u{1ee62}', SC_OLetter),
+ ('\u{1ee64}', '\u{1ee64}', SC_OLetter), ('\u{1ee67}', '\u{1ee6a}', SC_OLetter),
+ ('\u{1ee6c}', '\u{1ee72}', SC_OLetter), ('\u{1ee74}', '\u{1ee77}', SC_OLetter),
+ ('\u{1ee79}', '\u{1ee7c}', SC_OLetter), ('\u{1ee7e}', '\u{1ee7e}', SC_OLetter),
+ ('\u{1ee80}', '\u{1ee89}', SC_OLetter), ('\u{1ee8b}', '\u{1ee9b}', SC_OLetter),
+ ('\u{1eea1}', '\u{1eea3}', SC_OLetter), ('\u{1eea5}', '\u{1eea9}', SC_OLetter),
+ ('\u{1eeab}', '\u{1eebb}', SC_OLetter), ('\u{1f130}', '\u{1f149}', SC_Upper), ('\u{1f150}',
+ '\u{1f169}', SC_Upper), ('\u{1f170}', '\u{1f189}', SC_Upper), ('\u{1f676}', '\u{1f678}',
+ SC_Close), ('\u{1fbf0}', '\u{1fbf9}', SC_Numeric), ('\u{20000}', '\u{2a6df}', SC_OLetter),
+ ('\u{2a700}', '\u{2b739}', SC_OLetter), ('\u{2b740}', '\u{2b81d}', SC_OLetter),
+ ('\u{2b820}', '\u{2cea1}', SC_OLetter), ('\u{2ceb0}', '\u{2ebe0}', SC_OLetter),
+ ('\u{2f800}', '\u{2fa1d}', SC_OLetter), ('\u{30000}', '\u{3134a}', SC_OLetter),
+ ('\u{31350}', '\u{323af}', SC_OLetter), ('\u{e0001}', '\u{e0001}', SC_Format), ('\u{e0020}',
'\u{e007f}', SC_Extend), ('\u{e0100}', '\u{e01ef}', SC_Extend)
];
diff --git a/vendor/unicode-segmentation/src/testdata.rs b/vendor/unicode-segmentation/src/testdata.rs
index b4a1cc0c3..8a675aafe 100644
--- a/vendor/unicode-segmentation/src/testdata.rs
+++ b/vendor/unicode-segmentation/src/testdata.rs
@@ -12,7 +12,7 @@
#![allow(missing_docs, non_upper_case_globals, non_snake_case)]
// official Unicode test data
-// http://www.unicode.org/Public/14.0.0/ucd/auxiliary/GraphemeBreakTest.txt
+// http://www.unicode.org/Public/15.0.0/ucd/auxiliary/GraphemeBreakTest.txt
pub const TEST_SAME: &'static [(&'static str, &'static [&'static str])] = &[
("\u{20}\u{20}", &["\u{20}", "\u{20}"]),
("\u{20}\u{308}\u{20}", &["\u{20}\u{308}", "\u{20}"]),
@@ -886,7 +886,7 @@ pub const TEST_DIFF: &'static [(
];
// official Unicode test data
-// http://www.unicode.org/Public/14.0.0/ucd/auxiliary/WordBreakTest.txt
+// http://www.unicode.org/Public/15.0.0/ucd/auxiliary/WordBreakTest.txt
pub const TEST_WORD: &'static [(&'static str, &'static [&'static str])] = &[
("\u{1}\u{1}", &["\u{1}", "\u{1}"]),
("\u{1}\u{308}\u{1}", &["\u{1}\u{308}", "\u{1}"]),
@@ -4917,7 +4917,7 @@ pub const TEST_WORD: &'static [(&'static str, &'static [&'static str])] = &[
];
// official Unicode test data
-// http://www.unicode.org/Public/14.0.0/ucd/auxiliary/SentenceBreakTest.txt
+// http://www.unicode.org/Public/15.0.0/ucd/auxiliary/SentenceBreakTest.txt
pub const TEST_SENTENCE: &'static [(&'static str, &'static [&'static str])] = &[
("\u{1}\u{1}", &["\u{1}\u{1}"]), ("\u{1}\u{308}\u{1}", &["\u{1}\u{308}\u{1}"]),
("\u{1}\u{d}", &["\u{1}\u{d}"]), ("\u{1}\u{308}\u{d}", &["\u{1}\u{308}\u{d}"]),
diff --git a/vendor/unicode-width/.cargo-checksum.json b/vendor/unicode-width/.cargo-checksum.json
index 0d3d03912..5c7b92228 100644
--- a/vendor/unicode-width/.cargo-checksum.json
+++ b/vendor/unicode-width/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"5c1c5fff7aaa9b6a7a2331ec2e26064e4cd519254446675196fb2eb5cc91c282","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"8a041a4305fb318f5c2cb284046f8480796521d0e829023b0441b5e8469490eb","scripts/unicode.py":"5c7d8d78b70223d9f0d6713bd5714c3a6fd4fcee4ed1b3bf749c84ed6dc7479a","src/lib.rs":"38c44436eac069bd8d11203f31ecfef8adfe92da1fce19ba00bdd25aa3fbbe20","src/tables.rs":"4026a4c18a4904edc38dff6fa6a179623091b5b6e8c434605f49d2377b4e8a01","src/tests.rs":"ca610f64b76ded8abb4b0cc5f373b40cf25cef009988fa6bd3382d0de3356bf7"},"package":"3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"} \ No newline at end of file
+{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"f22e31fb3559e916864820719a09ab3adbf80301440e1702acf827210bbf76df","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"8a041a4305fb318f5c2cb284046f8480796521d0e829023b0441b5e8469490eb","scripts/unicode.py":"0c53095ef99395338399f9ad218b4481cffcf63774fd61871ed32efb242419f8","src/lib.rs":"38c44436eac069bd8d11203f31ecfef8adfe92da1fce19ba00bdd25aa3fbbe20","src/tables.rs":"c6ddb420c289517bb92973199fd2987b9608f29fc10bb33b5290f39b301ce92f","src/tests.rs":"ff9f331210861ba78040f119a0f6ccfacf5b2ca1ebee430784de0858fad01860"},"package":"c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"} \ No newline at end of file
diff --git a/vendor/unicode-width/Cargo.toml b/vendor/unicode-width/Cargo.toml
index 9cb47d54c..77aded9fc 100644
--- a/vendor/unicode-width/Cargo.toml
+++ b/vendor/unicode-width/Cargo.toml
@@ -11,16 +11,30 @@
[package]
name = "unicode-width"
-version = "0.1.9"
-authors = ["kwantam <kwantam@gmail.com>", "Manish Goregaokar <manishsmail@gmail.com>"]
-exclude = ["target/*", "Cargo.lock"]
-description = "Determine displayed width of `char` and `str` types\naccording to Unicode Standard Annex #11 rules.\n"
+version = "0.1.10"
+authors = [
+ "kwantam <kwantam@gmail.com>",
+ "Manish Goregaokar <manishsmail@gmail.com>",
+]
+exclude = [
+ "target/*",
+ "Cargo.lock",
+]
+description = """
+Determine displayed width of `char` and `str` types
+according to Unicode Standard Annex #11 rules.
+"""
homepage = "https://github.com/unicode-rs/unicode-width"
documentation = "https://unicode-rs.github.io/unicode-width"
readme = "README.md"
-keywords = ["text", "width", "unicode"]
+keywords = [
+ "text",
+ "width",
+ "unicode",
+]
license = "MIT/Apache-2.0"
repository = "https://github.com/unicode-rs/unicode-width"
+
[dependencies.compiler_builtins]
version = "0.1"
optional = true
@@ -39,4 +53,8 @@ package = "rustc-std-workspace-std"
bench = []
default = []
no_std = []
-rustc-dep-of-std = ["std", "core", "compiler_builtins"]
+rustc-dep-of-std = [
+ "std",
+ "core",
+ "compiler_builtins",
+]
diff --git a/vendor/unicode-width/scripts/unicode.py b/vendor/unicode-width/scripts/unicode.py
index 7f5959d4b..2efb0b63f 100755
--- a/vendor/unicode-width/scripts/unicode.py
+++ b/vendor/unicode-width/scripts/unicode.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
-# Copyright 2011-2015 The Rust Project Developers. See the COPYRIGHT
+# Copyright 2011-2022 The Rust Project Developers. See the COPYRIGHT
# file at the top-level directory of this distribution and at
# http://rust-lang.org/COPYRIGHT.
#
@@ -16,11 +16,322 @@
# - UnicodeData.txt
#
# Since this should not require frequent updates, we just store this
-# out-of-line and check the unicode.rs file into git.
-
-import fileinput, re, os, sys, operator
+# out-of-line and check the generated module into git.
+
+import enum
+import math
+import os
+import re
+import sys
+
+NUM_CODEPOINTS = 0x110000
+"""An upper bound for which `range(0, NUM_CODEPOINTS)` contains Unicode's codespace."""
+
+MAX_CODEPOINT_BITS = math.ceil(math.log2(NUM_CODEPOINTS - 1))
+"""The maximum number of bits required to represent a Unicode codepoint."""
+
+
+class OffsetType(enum.IntEnum):
+ """Represents the data type of a lookup table's offsets. Each variant's value represents the
+ number of bits required to represent that variant's type."""
+
+ U2 = 2
+ """Offsets are 2-bit unsigned integers, packed four-per-byte."""
+ U4 = 4
+ """Offsets are 4-bit unsigned integers, packed two-per-byte."""
+ U8 = 8
+ """Each offset is a single byte (u8)."""
+
+
+TABLE_CFGS = [
+ (13, MAX_CODEPOINT_BITS, OffsetType.U8),
+ (6, 13, OffsetType.U8),
+ (0, 6, OffsetType.U2),
+]
+"""Represents the format of each level of the multi-level lookup table.
+A level's entry is of the form `(low_bit, cap_bit, offset_type)`.
+This means that every sub-table in that level is indexed by bits `low_bit..cap_bit` of the
+codepoint and those tables offsets are stored according to `offset_type`.
+
+If this is edited, you must ensure that `emit_module` reflects your changes."""
+
+MODULE_FILENAME = "tables.rs"
+"""The filename of the emitted Rust module (will be created in the working directory)"""
+
+Codepoint = int
+BitPos = int
+
+
+def fetch_open(filename: str):
+ """Opens `filename` and return its corresponding file object. If `filename` isn't on disk,
+ fetches it from `http://www.unicode.org/Public/UNIDATA/`. Exits with code 1 on failure."""
+ if not os.path.exists(os.path.basename(filename)):
+ os.system(f"curl -O http://www.unicode.org/Public/UNIDATA/{filename}")
+ try:
+ return open(filename, encoding="utf-8")
+ except OSError:
+ sys.stderr.write(f"cannot load {filename}")
+ sys.exit(1)
+
+
+def load_unicode_version() -> "tuple[int, int, int]":
+ """Returns the current Unicode version by fetching and processing `ReadMe.txt`."""
+ with fetch_open("ReadMe.txt") as readme:
+ pattern = r"for Version (\d+)\.(\d+)\.(\d+) of the Unicode"
+ return tuple(map(int, re.search(pattern, readme.read()).groups()))
+
+
+class EffectiveWidth(enum.IntEnum):
+ """Represents the width of a Unicode character. All East Asian Width classes resolve into
+ either `EffectiveWidth.NARROW`, `EffectiveWidth.WIDE`, or `EffectiveWidth.AMBIGUOUS`."""
+
+ ZERO = 0
+ """ Zero columns wide. """
+ NARROW = 1
+ """ One column wide. """
+ WIDE = 2
+ """ Two columns wide. """
+ AMBIGUOUS = 3
+ """ Two columns wide in a CJK context. One column wide in all other contexts. """
+
+
+def load_east_asian_widths() -> "list[EffectiveWidth]":
+ """Return a list of effective widths, indexed by codepoint.
+ Widths are determined by fetching and parsing `EastAsianWidth.txt`.
+
+ `Neutral`, `Narrow`, and `Halfwidth` characters are assigned `EffectiveWidth.NARROW`.
+
+ `Wide` and `Fullwidth` characters are assigned `EffectiveWidth.WIDE`.
+
+ `Ambiguous` chracters are assigned `EffectiveWidth.AMBIGUOUS`."""
+ with fetch_open("EastAsianWidth.txt") as eaw:
+ # matches a width assignment for a single codepoint, i.e. "1F336;N # ..."
+ single = re.compile(r"^([0-9A-F]+);(\w+) +# (\w+)")
+ # matches a width assignment for a range of codepoints, i.e. "3001..3003;W # ..."
+ multiple = re.compile(r"^([0-9A-F]+)\.\.([0-9A-F]+);(\w+) +# (\w+)")
+ # map between width category code and condensed width
+ width_codes = {
+ **{c: EffectiveWidth.NARROW for c in ["N", "Na", "H"]},
+ **{c: EffectiveWidth.WIDE for c in ["W", "F"]},
+ "A": EffectiveWidth.AMBIGUOUS,
+ }
-preamble = '''// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
+ width_map = []
+ current = 0
+ for line in eaw.readlines():
+ raw_data = None # (low, high, width)
+ if match := single.match(line):
+ raw_data = (match.group(1), match.group(1), match.group(2))
+ elif match := multiple.match(line):
+ raw_data = (match.group(1), match.group(2), match.group(3))
+ else:
+ continue
+ low = int(raw_data[0], 16)
+ high = int(raw_data[1], 16)
+ width = width_codes[raw_data[2]]
+
+ assert current <= high
+ while current <= high:
+ # Some codepoints don't fall into any of the ranges in EastAsianWidth.txt.
+ # All such codepoints are implicitly given Neural width (resolves to narrow)
+ width_map.append(EffectiveWidth.NARROW if current < low else width)
+ current += 1
+
+ while len(width_map) < NUM_CODEPOINTS:
+ # Catch any leftover codepoints and assign them implicit Neutral/narrow width.
+ width_map.append(EffectiveWidth.NARROW)
+
+ return width_map
+
+
+def load_zero_widths() -> "list[bool]":
+ """Returns a list `l` where `l[c]` is true if codepoint `c` is considered a zero-width
+ character. `c` is considered a zero-width character if `c` is in general categories
+ `Cc`, `Cf`, `Mn`, or `Me` (determined by fetching and processing `UnicodeData.txt`)."""
+ with fetch_open("UnicodeData.txt") as categories:
+ zw_map = []
+ current = 0
+ for line in categories.readlines():
+ if len(raw_data := line.split(";")) != 15:
+ continue
+ [codepoint, name, cat_code] = [
+ int(raw_data[0], 16),
+ raw_data[1],
+ raw_data[2],
+ ]
+ zero_width = cat_code in ["Cc", "Cf", "Mn", "Me"]
+
+ assert current <= codepoint
+ while current <= codepoint:
+ if name.endswith(", Last>") or current == codepoint:
+ # if name ends with Last, we backfill the width value to all codepoints since
+ # the previous codepoint (aka the start of the range)
+ zw_map.append(zero_width)
+ else:
+ # unassigned characters are implicitly given Neutral width, which is nonzero
+ zw_map.append(False)
+ current += 1
+
+ while len(zw_map) < NUM_CODEPOINTS:
+ # Catch any leftover codepoints. They must be unassigned (so nonzero width)
+ zw_map.append(False)
+
+ return zw_map
+
+
+class Bucket:
+ """A bucket contains a group of codepoints and an ordered width list. If one bucket's width
+ list overlaps with another's width list, those buckets can be merged via `try_extend`."""
+
+ def __init__(self):
+ """Creates an empty bucket."""
+ self.entry_set = set()
+ self.widths = []
+
+ def append(self, codepoint: Codepoint, width: EffectiveWidth):
+ """Adds a codepoint/width pair to the bucket, and appends `width` to the width list."""
+ self.entry_set.add((codepoint, width))
+ self.widths.append(width)
+
+ def try_extend(self, attempt: "Bucket") -> bool:
+ """If either `self` or `attempt`'s width list starts with the other bucket's width list,
+ set `self`'s width list to the longer of the two, add all of `attempt`'s codepoints
+ into `self`, and return `True`. Otherwise, return `False`."""
+ (less, more) = (self.widths, attempt.widths)
+ if len(self.widths) > len(attempt.widths):
+ (less, more) = (attempt.widths, self.widths)
+ if less != more[: len(less)]:
+ return False
+ self.entry_set |= attempt.entry_set
+ self.widths = more
+ return True
+
+ def entries(self) -> "list[tuple[Codepoint, EffectiveWidth]]":
+ """Return a list of the codepoint/width pairs in this bucket, sorted by codepoint."""
+ result = list(self.entry_set)
+ result.sort()
+ return result
+
+ def width(self) -> "EffectiveWidth":
+ """If all codepoints in this bucket have the same width, return that width; otherwise,
+ return `None`."""
+ if len(self.widths) == 0:
+ return None
+ potential_width = self.widths[0]
+ for width in self.widths[1:]:
+ if potential_width != width:
+ return None
+ return potential_width
+
+
+def make_buckets(entries, low_bit: BitPos, cap_bit: BitPos) -> "list[Bucket]":
+ """Partitions the `(Codepoint, EffectiveWidth)` tuples in `entries` into `Bucket`s. All
+ codepoints with identical bits from `low_bit` to `cap_bit` (exclusive) are placed in the
+ same bucket. Returns a list of the buckets in increasing order of those bits."""
+ num_bits = cap_bit - low_bit
+ assert num_bits > 0
+ buckets = [Bucket() for _ in range(0, 2 ** num_bits)]
+ mask = (1 << num_bits) - 1
+ for (codepoint, width) in entries:
+ buckets[(codepoint >> low_bit) & mask].append(codepoint, width)
+ return buckets
+
+
+class Table:
+ """Represents a lookup table. Each table contains a certain number of subtables; each
+ subtable is indexed by a contiguous bit range of the codepoint and contains a list
+ of `2**(number of bits in bit range)` entries. (The bit range is the same for all subtables.)
+
+ Typically, tables contain a list of buckets of codepoints. Bucket `i`'s codepoints should
+ be indexed by sub-table `i` in the next-level lookup table. The entries of this table are
+ indexes into the bucket list (~= indexes into the sub-tables of the next-level table.) The
+ key to compression is that two different buckets in two different sub-tables may have the
+ same width list, which means that they can be merged into the same bucket.
+
+ If no bucket contains two codepoints with different widths, calling `indices_to_widths` will
+ discard the buckets and convert the entries into `EffectiveWidth` values."""
+
+ def __init__(
+ self, entry_groups, low_bit: BitPos, cap_bit: BitPos, offset_type: OffsetType
+ ):
+ """Create a lookup table with a sub-table for each `(Codepoint, EffectiveWidth)` iterator
+ in `entry_groups`. Each sub-table is indexed by codepoint bits in `low_bit..cap_bit`,
+ and each table entry is represented in the format specified by `offset_type`. Asserts
+ that this table is actually representable with `offset_type`."""
+ self.low_bit = low_bit
+ self.cap_bit = cap_bit
+ self.offset_type = offset_type
+ self.entries = []
+ self.indexed = []
+
+ buckets = []
+ for entries in entry_groups:
+ buckets.extend(make_buckets(entries, self.low_bit, self.cap_bit))
+
+ for bucket in buckets:
+ for (i, existing) in enumerate(self.indexed):
+ if existing.try_extend(bucket):
+ self.entries.append(i)
+ break
+ else:
+ self.entries.append(len(self.indexed))
+ self.indexed.append(bucket)
+
+ # Validate offset type
+ for index in self.entries:
+ assert index < (1 << int(self.offset_type))
+
+ def indices_to_widths(self):
+ """Destructively converts the indices in this table to the `EffectiveWidth` values of
+ their buckets. Assumes that no bucket contains codepoints with different widths."""
+ self.entries = list(map(lambda i: int(self.indexed[i].width()), self.entries))
+ del self.indexed
+
+ def buckets(self):
+ """Returns an iterator over this table's buckets."""
+ return self.indexed
+
+ def to_bytes(self) -> "list[int]":
+ """Returns this table's entries as a list of bytes. The bytes are formatted according to
+ the `OffsetType` which the table was created with, converting any `EffectiveWidth` entries
+ to their enum variant's integer value. For example, with `OffsetType.U2`, each byte will
+ contain four packed 2-bit entries."""
+ entries_per_byte = 8 // int(self.offset_type)
+ byte_array = []
+ for i in range(0, len(self.entries), entries_per_byte):
+ byte = 0
+ for j in range(0, entries_per_byte):
+ byte |= self.entries[i + j] << (j * int(self.offset_type))
+ byte_array.append(byte)
+ return byte_array
+
+
+def make_tables(
+ table_cfgs: "list[tuple[BitPos, BitPos, OffsetType]]", entries
+) -> "list[Table]":
+ """Creates a table for each configuration in `table_cfgs`, with the first config corresponding
+ to the top-level lookup table, the second config corresponding to the second-level lookup
+ table, and so forth. `entries` is an iterator over the `(Codepoint, EffectiveWidth)` pairs
+ to include in the top-level table."""
+ tables = []
+ entry_groups = [entries]
+ for (low_bit, cap_bit, offset_type) in table_cfgs:
+ table = Table(entry_groups, low_bit, cap_bit, offset_type)
+ entry_groups = map(lambda bucket: bucket.entries(), table.buckets())
+ tables.append(table)
+ return tables
+
+
+def emit_module(
+ out_name: str, unicode_version: "tuple[int, int, int]", tables: "list[Table]"
+):
+ """Outputs a Rust module to `out_name` using table data from `tables`.
+ If `TABLE_CFGS` is edited, you may need to edit the included code for `lookup_width`."""
+ if os.path.exists(out_name):
+ os.remove(out_name)
+ with open(out_name, "w", newline="\n", encoding="utf-8") as module:
+ module.write(
+ """// Copyright 2012-2022 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
@@ -31,291 +342,164 @@ preamble = '''// Copyright 2012-2015 The Rust Project Developers. See the COPYRI
// except according to those terms.
// NOTE: The following code was generated by "scripts/unicode.py", do not edit directly
-
-#![allow(missing_docs, non_upper_case_globals, non_snake_case)]
-'''
-
-# Mapping taken from Table 12 from:
-# http://www.unicode.org/reports/tr44/#General_Category_Values
-expanded_categories = {
- 'Lu': ['LC', 'L'], 'Ll': ['LC', 'L'], 'Lt': ['LC', 'L'],
- 'Lm': ['L'], 'Lo': ['L'],
- 'Mn': ['M'], 'Mc': ['M'], 'Me': ['M'],
- 'Nd': ['N'], 'Nl': ['N'], 'No': ['No'],
- 'Pc': ['P'], 'Pd': ['P'], 'Ps': ['P'], 'Pe': ['P'],
- 'Pi': ['P'], 'Pf': ['P'], 'Po': ['P'],
- 'Sm': ['S'], 'Sc': ['S'], 'Sk': ['S'], 'So': ['S'],
- 'Zs': ['Z'], 'Zl': ['Z'], 'Zp': ['Z'],
- 'Cc': ['C'], 'Cf': ['C'], 'Cs': ['C'], 'Co': ['C'], 'Cn': ['C'],
-}
-
-# these are the surrogate codepoints, which are not valid rust characters
-surrogate_codepoints = (0xd800, 0xdfff)
-
-def fetch(f):
- if not os.path.exists(os.path.basename(f)):
- os.system("curl -O http://www.unicode.org/Public/UNIDATA/%s"
- % f)
-
- if not os.path.exists(os.path.basename(f)):
- sys.stderr.write("cannot load %s" % f)
- exit(1)
-
-def is_surrogate(n):
- return surrogate_codepoints[0] <= n <= surrogate_codepoints[1]
-
-def load_unicode_data(f):
- fetch(f)
- gencats = {}
-
- udict = {}
- range_start = -1
- for line in fileinput.input(f):
- data = line.split(';')
- if len(data) != 15:
- continue
- cp = int(data[0], 16)
- if is_surrogate(cp):
- continue
- if range_start >= 0:
- for i in range(range_start, cp):
- udict[i] = data
- range_start = -1
- if data[1].endswith(", First>"):
- range_start = cp
- continue
- udict[cp] = data
-
- for code in udict:
- [code_org, name, gencat, combine, bidi,
- decomp, deci, digit, num, mirror,
- old, iso, upcase, lowcase, titlecase ] = udict[code]
-
- # place letter in categories as appropriate
- for cat in [gencat, "Assigned"] + expanded_categories.get(gencat, []):
- if cat not in gencats:
- gencats[cat] = []
- gencats[cat].append(code)
-
- gencats = group_cats(gencats)
-
- return gencats
-
-def group_cats(cats):
- cats_out = {}
- for cat in cats:
- cats_out[cat] = group_cat(cats[cat])
- return cats_out
-
-def group_cat(cat):
- cat_out = []
- letters = sorted(set(cat))
- cur_start = letters.pop(0)
- cur_end = cur_start
- for letter in letters:
- assert letter > cur_end, \
- "cur_end: %s, letter: %s" % (hex(cur_end), hex(letter))
- if letter == cur_end + 1:
- cur_end = letter
- else:
- cat_out.append((cur_start, cur_end))
- cur_start = cur_end = letter
- cat_out.append((cur_start, cur_end))
- return cat_out
-
-def format_table_content(f, content, indent):
- line = " "*indent
- first = True
- for chunk in content.split(","):
- if len(line) + len(chunk) < 98:
- if first:
- line += chunk
- else:
- line += ", " + chunk
- first = False
- else:
- f.write(line + ",\n")
- line = " "*indent + chunk
- f.write(line)
-
-# load all widths of want_widths, except those in except_cats
-def load_east_asian_width(want_widths, except_cats):
- f = "EastAsianWidth.txt"
- fetch(f)
- widths = {}
- re1 = re.compile("^([0-9A-F]+);(\w+) +# (\w+)")
- re2 = re.compile("^([0-9A-F]+)\.\.([0-9A-F]+);(\w+) +# (\w+)")
-
- for line in fileinput.input(f):
- width = None
- d_lo = 0
- d_hi = 0
- cat = None
- m = re1.match(line)
- if m:
- d_lo = m.group(1)
- d_hi = m.group(1)
- width = m.group(2)
- cat = m.group(3)
- else:
- m = re2.match(line)
- if m:
- d_lo = m.group(1)
- d_hi = m.group(2)
- width = m.group(3)
- cat = m.group(4)
- else:
- continue
- if cat in except_cats or width not in want_widths:
- continue
- d_lo = int(d_lo, 16)
- d_hi = int(d_hi, 16)
- if width not in widths:
- widths[width] = []
- widths[width].append((d_lo, d_hi))
- return widths
-
-def escape_char(c):
- return "'\\u{%x}'" % c
-
-def emit_table(f, name, t_data, t_type = "&'static [(char, char)]", is_pub=True,
- pfun=lambda x: "(%s,%s)" % (escape_char(x[0]), escape_char(x[1])), is_const=True):
- pub_string = "const"
- if not is_const:
- pub_string = "let"
- if is_pub:
- pub_string = "pub " + pub_string
- f.write(" %s %s: %s = &[\n" % (pub_string, name, t_type))
- data = ""
- first = True
- for dat in t_data:
- if not first:
- data += ","
- first = False
- data += pfun(dat)
- format_table_content(f, data, 8)
- f.write("\n ];\n\n")
-
-def emit_charwidth_module(f, width_table):
- f.write("pub mod charwidth {")
- f.write("""
- use core::option::Option::{self, Some, None};
- use core::result::Result::{Ok, Err};
-
+"""
+ )
+ module.write(
+ f"""
+/// The version of [Unicode](http://www.unicode.org/)
+/// that this version of unicode-width is based on.
+pub const UNICODE_VERSION: (u8, u8, u8) = {unicode_version};
+"""
+ )
+
+ module.write(
+ """
+pub mod charwidth {
+ use core::option::Option::{self, None, Some};
+
+ /// Returns the [UAX #11](https://www.unicode.org/reports/tr11/) based width of `c` by
+ /// consulting a multi-level lookup table.
+ /// If `is_cjk == true`, ambiguous width characters are treated as double width; otherwise,
+ /// they're treated as single width.
+ ///
+ /// # Maintenance
+ /// The tables themselves are autogenerated but this function is hardcoded. You should have
+ /// nothing to worry about if you re-run `unicode.py` (for example, when updating Unicode.)
+ /// However, if you change the *actual structure* of the lookup tables (perhaps by editing the
+ /// `TABLE_CFGS` global in `unicode.py`) you must ensure that this code reflects those changes.
#[inline]
- fn bsearch_range_value_table(c: char, is_cjk: bool, r: &'static [(char, char, u8, u8)]) -> u8 {
- use core::cmp::Ordering::{Equal, Less, Greater};
- match r.binary_search_by(|&(lo, hi, _, _)| {
- if lo <= c && c <= hi { Equal }
- else if hi < c { Less }
- else { Greater }
- }) {
- Ok(idx) => {
- let (_, _, r_ncjk, r_cjk) = r[idx];
- if is_cjk { r_cjk } else { r_ncjk }
+ fn lookup_width(c: char, is_cjk: bool) -> usize {
+ let cp = c as usize;
+
+ let t1_offset = TABLES_0[cp >> 13 & 0xFF];
+
+ // Each sub-table in TABLES_1 is 7 bits, and each stored entry is a byte,
+ // so each sub-table is 128 bytes in size.
+ // (Sub-tables are selected using the computed offset from the previous table.)
+ let t2_offset = TABLES_1[128 * usize::from(t1_offset) + (cp >> 6 & 0x7F)];
+
+ // Each sub-table in TABLES_2 is 6 bits, but each stored entry is 2 bits.
+ // This is accomplished by packing four stored entries into one byte.
+ // So each sub-table is 2**(6-2) == 16 bytes in size.
+ // Since this is the last table, each entry represents an encoded width.
+ let packed_widths = TABLES_2[16 * usize::from(t2_offset) + (cp >> 2 & 0xF)];
+
+ // Extract the packed width
+ let width = packed_widths >> (2 * (cp & 0b11)) & 0b11;
+
+ // A width of 3 signifies that the codepoint is ambiguous width.
+ if width == 3 {
+ if is_cjk {
+ 2
+ } else {
+ 1
}
- Err(_) => 1
+ } else {
+ width.into()
}
}
-""")
-
- f.write("""
+"""
+ )
+
+ module.write(
+ """
+ /// Returns the [UAX #11](https://www.unicode.org/reports/tr11/) based width of `c`, or
+ /// `None` if `c` is a control character other than `'\\x00'`.
+ /// If `is_cjk == true`, ambiguous width characters are treated as double width; otherwise,
+ /// they're treated as single width.
#[inline]
pub fn width(c: char, is_cjk: bool) -> Option<usize> {
- match c as usize {
- _c @ 0 => Some(0), // null is zero width
- cu if cu < 0x20 => None, // control sequences have no width
- cu if cu < 0x7F => Some(1), // ASCII
- cu if cu < 0xA0 => None, // more control sequences
- _ => Some(bsearch_range_value_table(c, is_cjk, charwidth_table) as usize)
+ if c < '\\u{7F}' {
+ if c >= '\\u{20}' {
+ // U+0020 to U+007F (exclusive) are single-width ASCII codepoints
+ Some(1)
+ } else if c == '\\0' {
+ // U+0000 *is* a control code, but it's special-cased
+ Some(0)
+ } else {
+ // U+0001 to U+0020 (exclusive) are control codes
+ None
+ }
+ } else if c >= '\\u{A0}' {
+ // No characters >= U+00A0 are control codes, so we can consult the lookup tables
+ Some(lookup_width(c, is_cjk))
+ } else {
+ // U+007F to U+00A0 (exclusive) are control codes
+ None
}
}
+"""
+ )
+
+ subtable_count = 1
+ for (i, table) in enumerate(tables):
+ new_subtable_count = len(table.buckets())
+ if i == len(tables) - 1:
+ table.indices_to_widths() # for the last table, indices == widths
+ byte_array = table.to_bytes()
+ module.write(
+ f"""
+ /// Autogenerated. {subtable_count} sub-table(s). Consult [`lookup_width`] for layout info.
+ static TABLES_{i}: [u8; {len(byte_array)}] = ["""
+ )
+ for (j, byte) in enumerate(byte_array):
+ # Add line breaks for every 15th entry (chosen to match what rustfmt does)
+ if j % 15 == 0:
+ module.write("\n ")
+ module.write(f" 0x{byte:02X},")
+ module.write("\n ];\n")
+ subtable_count = new_subtable_count
+ module.write("}\n")
+
+
+def main(module_filename: str):
+ """Obtain character data from the latest version of Unicode, transform it into a multi-level
+ lookup table for character width, and write a Rust module utilizing that table to
+ `module_filename`.
+
+ We obey the following rules in decreasing order of importance:
+ - The soft hyphen (`U+00AD`) is single-width.
+ - Hangul Jamo medial vowels & final consonants (`U+1160..=U+11FF`) are zero-width.
+ - All codepoints in general categories `Cc`, `Cf`, `Mn`, and `Me` are zero-width.
+ - All codepoints with an East Asian Width of `Ambigous` are ambiguous-width.
+ - All codepoints with an East Asian Width of `Wide` or `Fullwidth` are double-width.
+ - All other codepoints (including unassigned codepoints and codepoints with an East Asian Width
+ of `Neutral`, `Narrow`, or `Halfwidth`) are single-width.
+
+ These rules are based off of Markus Kuhn's free `wcwidth()` implementation:
+ http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c"""
+ version = load_unicode_version()
+ print(f"Generating module for Unicode {version[0]}.{version[1]}.{version[2]}")
+
+ eaw_map = load_east_asian_widths()
+ zw_map = load_zero_widths()
+
+ # Characters marked as zero-width in zw_map should be zero-width in the final map
+ width_map = list(
+ map(lambda x: EffectiveWidth.ZERO if x[1] else x[0], zip(eaw_map, zw_map))
+ )
+
+ # Override for soft hyphen
+ width_map[0x00AD] = EffectiveWidth.NARROW
+
+ # Override for Hangul Jamo medial vowels & final consonants
+ for i in range(0x1160, 0x11FF + 1):
+ width_map[i] = EffectiveWidth.ZERO
+
+ tables = make_tables(TABLE_CFGS, enumerate(width_map))
+
+ print("------------------------")
+ total_size = 0
+ for (i, table) in enumerate(tables):
+ size_bytes = len(table.to_bytes())
+ print(f"Table {i} Size: {size_bytes} bytes")
+ total_size += size_bytes
+ print("------------------------")
+ print(f" Total Size: {total_size} bytes")
+
+ emit_module(module_filename, version, tables)
+ print(f'Wrote to "{module_filename}"')
-""")
-
- f.write(" // character width table. Based on Markus Kuhn's free wcwidth() implementation,\n")
- f.write(" // http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c\n")
- emit_table(f, "charwidth_table", width_table, "&'static [(char, char, u8, u8)]", is_pub=False,
- pfun=lambda x: "(%s,%s,%s,%s)" % (escape_char(x[0]), escape_char(x[1]), x[2], x[3]))
- f.write("}\n\n")
-
-def remove_from_wtable(wtable, val):
- wtable_out = []
- while wtable:
- if wtable[0][1] < val:
- wtable_out.append(wtable.pop(0))
- elif wtable[0][0] > val:
- break
- else:
- (wt_lo, wt_hi, width, width_cjk) = wtable.pop(0)
- if wt_lo == wt_hi == val:
- continue
- elif wt_lo == val:
- wtable_out.append((wt_lo+1, wt_hi, width, width_cjk))
- elif wt_hi == val:
- wtable_out.append((wt_lo, wt_hi-1, width, width_cjk))
- else:
- wtable_out.append((wt_lo, val-1, width, width_cjk))
- wtable_out.append((val+1, wt_hi, width, width_cjk))
- if wtable:
- wtable_out.extend(wtable)
- return wtable_out
-
-
-
-def optimize_width_table(wtable):
- wtable_out = []
- w_this = wtable.pop(0)
- while wtable:
- if w_this[1] == wtable[0][0] - 1 and w_this[2:3] == wtable[0][2:3]:
- w_tmp = wtable.pop(0)
- w_this = (w_this[0], w_tmp[1], w_tmp[2], w_tmp[3])
- else:
- wtable_out.append(w_this)
- w_this = wtable.pop(0)
- wtable_out.append(w_this)
- return wtable_out
if __name__ == "__main__":
- r = "tables.rs"
- if os.path.exists(r):
- os.remove(r)
- with open(r, "w") as rf:
- # write the file's preamble
- rf.write(preamble)
-
- # download and parse all the data
- fetch("ReadMe.txt")
- with open("ReadMe.txt") as readme:
- pattern = "for Version (\d+)\.(\d+)\.(\d+) of the Unicode"
- unicode_version = re.search(pattern, readme.read()).groups()
- rf.write("""
-/// The version of [Unicode](http://www.unicode.org/)
-/// that this version of unicode-width is based on.
-pub const UNICODE_VERSION: (u8, u8, u8) = (%s, %s, %s);
-
-""" % unicode_version)
- gencats = load_unicode_data("UnicodeData.txt")
-
- ### character width module
- width_table = []
- for zwcat in ["Me", "Mn", "Cf"]:
- width_table.extend([(lo_hi[0], lo_hi[1], 0, 0) for lo_hi in gencats[zwcat]])
- width_table.append((4448, 4607, 0, 0))
-
- # get widths, except those that are explicitly marked zero-width above
- ea_widths = load_east_asian_width(["W", "F", "A"], ["Me", "Mn", "Cf"])
- # these are doublewidth
- for dwcat in ["W", "F"]:
- width_table.extend([(lo_hi1[0], lo_hi1[1], 2, 2) for lo_hi1 in ea_widths[dwcat]])
- width_table.extend([(lo_hi2[0], lo_hi2[1], 1, 2) for lo_hi2 in ea_widths["A"]])
-
- width_table.sort(key=lambda w: w[0])
-
- # soft hyphen is not zero width in preformatted text; it's used to indicate
- # a hyphen inserted to facilitate a linebreak.
- width_table = remove_from_wtable(width_table, 173)
-
- # optimize the width table by collapsing adjacent entities when possible
- width_table = optimize_width_table(width_table)
- emit_charwidth_module(rf, width_table)
+ main(MODULE_FILENAME)
diff --git a/vendor/unicode-width/src/tables.rs b/vendor/unicode-width/src/tables.rs
index c0bb77d73..439c69c80 100644
--- a/vendor/unicode-width/src/tables.rs
+++ b/vendor/unicode-width/src/tables.rs
@@ -1,4 +1,4 @@
-// Copyright 2012-2015 The Rust Project Developers. See the COPYRIGHT
+// Copyright 2012-2022 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
@@ -10,284 +10,531 @@
// NOTE: The following code was generated by "scripts/unicode.py", do not edit directly
-#![allow(missing_docs, non_upper_case_globals, non_snake_case)]
-
/// The version of [Unicode](http://www.unicode.org/)
/// that this version of unicode-width is based on.
-pub const UNICODE_VERSION: (u8, u8, u8) = (14, 0, 0);
+pub const UNICODE_VERSION: (u8, u8, u8) = (15, 0, 0);
pub mod charwidth {
- use core::option::Option::{self, Some, None};
- use core::result::Result::{Ok, Err};
+ use core::option::Option::{self, None, Some};
+ /// Returns the [UAX #11](https://www.unicode.org/reports/tr11/) based width of `c` by
+ /// consulting a multi-level lookup table.
+ /// If `is_cjk == true`, ambiguous width characters are treated as double width; otherwise,
+ /// they're treated as single width.
+ ///
+ /// # Maintenance
+ /// The tables themselves are autogenerated but this function is hardcoded. You should have
+ /// nothing to worry about if you re-run `unicode.py` (for example, when updating Unicode.)
+ /// However, if you change the *actual structure* of the lookup tables (perhaps by editing the
+ /// `TABLE_CFGS` global in `unicode.py`) you must ensure that this code reflects those changes.
#[inline]
- fn bsearch_range_value_table(c: char, is_cjk: bool, r: &'static [(char, char, u8, u8)]) -> u8 {
- use core::cmp::Ordering::{Equal, Less, Greater};
- match r.binary_search_by(|&(lo, hi, _, _)| {
- if lo <= c && c <= hi { Equal }
- else if hi < c { Less }
- else { Greater }
- }) {
- Ok(idx) => {
- let (_, _, r_ncjk, r_cjk) = r[idx];
- if is_cjk { r_cjk } else { r_ncjk }
+ fn lookup_width(c: char, is_cjk: bool) -> usize {
+ let cp = c as usize;
+
+ let t1_offset = TABLES_0[cp >> 13 & 0xFF];
+
+ // Each sub-table in TABLES_1 is 7 bits, and each stored entry is a byte,
+ // so each sub-table is 128 bytes in size.
+ // (Sub-tables are selected using the computed offset from the previous table.)
+ let t2_offset = TABLES_1[128 * usize::from(t1_offset) + (cp >> 6 & 0x7F)];
+
+ // Each sub-table in TABLES_2 is 6 bits, but each stored entry is 2 bits.
+ // This is accomplished by packing four stored entries into one byte.
+ // So each sub-table is 2**(6-2) == 16 bytes in size.
+ // Since this is the last table, each entry represents an encoded width.
+ let packed_widths = TABLES_2[16 * usize::from(t2_offset) + (cp >> 2 & 0xF)];
+
+ // Extract the packed width
+ let width = packed_widths >> (2 * (cp & 0b11)) & 0b11;
+
+ // A width of 3 signifies that the codepoint is ambiguous width.
+ if width == 3 {
+ if is_cjk {
+ 2
+ } else {
+ 1
}
- Err(_) => 1
+ } else {
+ width.into()
}
}
+ /// Returns the [UAX #11](https://www.unicode.org/reports/tr11/) based width of `c`, or
+ /// `None` if `c` is a control character other than `'\x00'`.
+ /// If `is_cjk == true`, ambiguous width characters are treated as double width; otherwise,
+ /// they're treated as single width.
#[inline]
pub fn width(c: char, is_cjk: bool) -> Option<usize> {
- match c as usize {
- _c @ 0 => Some(0), // null is zero width
- cu if cu < 0x20 => None, // control sequences have no width
- cu if cu < 0x7F => Some(1), // ASCII
- cu if cu < 0xA0 => None, // more control sequences
- _ => Some(bsearch_range_value_table(c, is_cjk, charwidth_table) as usize)
+ if c < '\u{7F}' {
+ if c >= '\u{20}' {
+ // U+0020 to U+007F (exclusive) are single-width ASCII codepoints
+ Some(1)
+ } else if c == '\0' {
+ // U+0000 *is* a control code, but it's special-cased
+ Some(0)
+ } else {
+ // U+0001 to U+0020 (exclusive) are control codes
+ None
+ }
+ } else if c >= '\u{A0}' {
+ // No characters >= U+00A0 are control codes, so we can consult the lookup tables
+ Some(lookup_width(c, is_cjk))
+ } else {
+ // U+007F to U+00A0 (exclusive) are control codes
+ None
}
}
- // character width table. Based on Markus Kuhn's free wcwidth() implementation,
- // http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c
- const charwidth_table: &'static [(char, char, u8, u8)] = &[
- ('\u{a1}', '\u{a1}', 1, 2), ('\u{a4}', '\u{a4}', 1, 2), ('\u{a7}', '\u{a8}', 1, 2),
- ('\u{aa}', '\u{aa}', 1, 2), ('\u{ae}', '\u{ae}', 1, 2), ('\u{b0}', '\u{b4}', 1, 2),
- ('\u{b6}', '\u{ba}', 1, 2), ('\u{bc}', '\u{bf}', 1, 2), ('\u{c6}', '\u{c6}', 1, 2),
- ('\u{d0}', '\u{d0}', 1, 2), ('\u{d7}', '\u{d8}', 1, 2), ('\u{de}', '\u{e1}', 1, 2),
- ('\u{e6}', '\u{e6}', 1, 2), ('\u{e8}', '\u{ea}', 1, 2), ('\u{ec}', '\u{ed}', 1, 2),
- ('\u{f0}', '\u{f0}', 1, 2), ('\u{f2}', '\u{f3}', 1, 2), ('\u{f7}', '\u{fa}', 1, 2),
- ('\u{fc}', '\u{fc}', 1, 2), ('\u{fe}', '\u{fe}', 1, 2), ('\u{101}', '\u{101}', 1, 2),
- ('\u{111}', '\u{111}', 1, 2), ('\u{113}', '\u{113}', 1, 2), ('\u{11b}', '\u{11b}', 1, 2),
- ('\u{126}', '\u{127}', 1, 2), ('\u{12b}', '\u{12b}', 1, 2), ('\u{131}', '\u{133}', 1, 2),
- ('\u{138}', '\u{138}', 1, 2), ('\u{13f}', '\u{142}', 1, 2), ('\u{144}', '\u{144}', 1, 2),
- ('\u{148}', '\u{14b}', 1, 2), ('\u{14d}', '\u{14d}', 1, 2), ('\u{152}', '\u{153}', 1, 2),
- ('\u{166}', '\u{167}', 1, 2), ('\u{16b}', '\u{16b}', 1, 2), ('\u{1ce}', '\u{1ce}', 1, 2),
- ('\u{1d0}', '\u{1d0}', 1, 2), ('\u{1d2}', '\u{1d2}', 1, 2), ('\u{1d4}', '\u{1d4}', 1, 2),
- ('\u{1d6}', '\u{1d6}', 1, 2), ('\u{1d8}', '\u{1d8}', 1, 2), ('\u{1da}', '\u{1da}', 1, 2),
- ('\u{1dc}', '\u{1dc}', 1, 2), ('\u{251}', '\u{251}', 1, 2), ('\u{261}', '\u{261}', 1, 2),
- ('\u{2c4}', '\u{2c4}', 1, 2), ('\u{2c7}', '\u{2c7}', 1, 2), ('\u{2c9}', '\u{2cb}', 1, 2),
- ('\u{2cd}', '\u{2cd}', 1, 2), ('\u{2d0}', '\u{2d0}', 1, 2), ('\u{2d8}', '\u{2db}', 1, 2),
- ('\u{2dd}', '\u{2dd}', 1, 2), ('\u{2df}', '\u{2df}', 1, 2), ('\u{300}', '\u{36f}', 0, 0),
- ('\u{391}', '\u{3a1}', 1, 2), ('\u{3a3}', '\u{3a9}', 1, 2), ('\u{3b1}', '\u{3c1}', 1, 2),
- ('\u{3c3}', '\u{3c9}', 1, 2), ('\u{401}', '\u{401}', 1, 2), ('\u{410}', '\u{44f}', 1, 2),
- ('\u{451}', '\u{451}', 1, 2), ('\u{483}', '\u{489}', 0, 0), ('\u{591}', '\u{5bd}', 0, 0),
- ('\u{5bf}', '\u{5bf}', 0, 0), ('\u{5c1}', '\u{5c2}', 0, 0), ('\u{5c4}', '\u{5c5}', 0, 0),
- ('\u{5c7}', '\u{5c7}', 0, 0), ('\u{600}', '\u{605}', 0, 0), ('\u{610}', '\u{61a}', 0, 0),
- ('\u{61c}', '\u{61c}', 0, 0), ('\u{64b}', '\u{65f}', 0, 0), ('\u{670}', '\u{670}', 0, 0),
- ('\u{6d6}', '\u{6dd}', 0, 0), ('\u{6df}', '\u{6e4}', 0, 0), ('\u{6e7}', '\u{6e8}', 0, 0),
- ('\u{6ea}', '\u{6ed}', 0, 0), ('\u{70f}', '\u{70f}', 0, 0), ('\u{711}', '\u{711}', 0, 0),
- ('\u{730}', '\u{74a}', 0, 0), ('\u{7a6}', '\u{7b0}', 0, 0), ('\u{7eb}', '\u{7f3}', 0, 0),
- ('\u{7fd}', '\u{7fd}', 0, 0), ('\u{816}', '\u{819}', 0, 0), ('\u{81b}', '\u{823}', 0, 0),
- ('\u{825}', '\u{827}', 0, 0), ('\u{829}', '\u{82d}', 0, 0), ('\u{859}', '\u{85b}', 0, 0),
- ('\u{890}', '\u{891}', 0, 0), ('\u{898}', '\u{89f}', 0, 0), ('\u{8ca}', '\u{902}', 0, 0),
- ('\u{93a}', '\u{93a}', 0, 0), ('\u{93c}', '\u{93c}', 0, 0), ('\u{941}', '\u{948}', 0, 0),
- ('\u{94d}', '\u{94d}', 0, 0), ('\u{951}', '\u{957}', 0, 0), ('\u{962}', '\u{963}', 0, 0),
- ('\u{981}', '\u{981}', 0, 0), ('\u{9bc}', '\u{9bc}', 0, 0), ('\u{9c1}', '\u{9c4}', 0, 0),
- ('\u{9cd}', '\u{9cd}', 0, 0), ('\u{9e2}', '\u{9e3}', 0, 0), ('\u{9fe}', '\u{9fe}', 0, 0),
- ('\u{a01}', '\u{a02}', 0, 0), ('\u{a3c}', '\u{a3c}', 0, 0), ('\u{a41}', '\u{a42}', 0, 0),
- ('\u{a47}', '\u{a48}', 0, 0), ('\u{a4b}', '\u{a4d}', 0, 0), ('\u{a51}', '\u{a51}', 0, 0),
- ('\u{a70}', '\u{a71}', 0, 0), ('\u{a75}', '\u{a75}', 0, 0), ('\u{a81}', '\u{a82}', 0, 0),
- ('\u{abc}', '\u{abc}', 0, 0), ('\u{ac1}', '\u{ac5}', 0, 0), ('\u{ac7}', '\u{ac8}', 0, 0),
- ('\u{acd}', '\u{acd}', 0, 0), ('\u{ae2}', '\u{ae3}', 0, 0), ('\u{afa}', '\u{aff}', 0, 0),
- ('\u{b01}', '\u{b01}', 0, 0), ('\u{b3c}', '\u{b3c}', 0, 0), ('\u{b3f}', '\u{b3f}', 0, 0),
- ('\u{b41}', '\u{b44}', 0, 0), ('\u{b4d}', '\u{b4d}', 0, 0), ('\u{b55}', '\u{b56}', 0, 0),
- ('\u{b62}', '\u{b63}', 0, 0), ('\u{b82}', '\u{b82}', 0, 0), ('\u{bc0}', '\u{bc0}', 0, 0),
- ('\u{bcd}', '\u{bcd}', 0, 0), ('\u{c00}', '\u{c00}', 0, 0), ('\u{c04}', '\u{c04}', 0, 0),
- ('\u{c3c}', '\u{c3c}', 0, 0), ('\u{c3e}', '\u{c40}', 0, 0), ('\u{c46}', '\u{c48}', 0, 0),
- ('\u{c4a}', '\u{c4d}', 0, 0), ('\u{c55}', '\u{c56}', 0, 0), ('\u{c62}', '\u{c63}', 0, 0),
- ('\u{c81}', '\u{c81}', 0, 0), ('\u{cbc}', '\u{cbc}', 0, 0), ('\u{cbf}', '\u{cbf}', 0, 0),
- ('\u{cc6}', '\u{cc6}', 0, 0), ('\u{ccc}', '\u{ccd}', 0, 0), ('\u{ce2}', '\u{ce3}', 0, 0),
- ('\u{d00}', '\u{d01}', 0, 0), ('\u{d3b}', '\u{d3c}', 0, 0), ('\u{d41}', '\u{d44}', 0, 0),
- ('\u{d4d}', '\u{d4d}', 0, 0), ('\u{d62}', '\u{d63}', 0, 0), ('\u{d81}', '\u{d81}', 0, 0),
- ('\u{dca}', '\u{dca}', 0, 0), ('\u{dd2}', '\u{dd4}', 0, 0), ('\u{dd6}', '\u{dd6}', 0, 0),
- ('\u{e31}', '\u{e31}', 0, 0), ('\u{e34}', '\u{e3a}', 0, 0), ('\u{e47}', '\u{e4e}', 0, 0),
- ('\u{eb1}', '\u{eb1}', 0, 0), ('\u{eb4}', '\u{ebc}', 0, 0), ('\u{ec8}', '\u{ecd}', 0, 0),
- ('\u{f18}', '\u{f19}', 0, 0), ('\u{f35}', '\u{f35}', 0, 0), ('\u{f37}', '\u{f37}', 0, 0),
- ('\u{f39}', '\u{f39}', 0, 0), ('\u{f71}', '\u{f7e}', 0, 0), ('\u{f80}', '\u{f84}', 0, 0),
- ('\u{f86}', '\u{f87}', 0, 0), ('\u{f8d}', '\u{f97}', 0, 0), ('\u{f99}', '\u{fbc}', 0, 0),
- ('\u{fc6}', '\u{fc6}', 0, 0), ('\u{102d}', '\u{1030}', 0, 0), ('\u{1032}', '\u{1037}', 0,
- 0), ('\u{1039}', '\u{103a}', 0, 0), ('\u{103d}', '\u{103e}', 0, 0), ('\u{1058}', '\u{1059}',
- 0, 0), ('\u{105e}', '\u{1060}', 0, 0), ('\u{1071}', '\u{1074}', 0, 0), ('\u{1082}',
- '\u{1082}', 0, 0), ('\u{1085}', '\u{1086}', 0, 0), ('\u{108d}', '\u{108d}', 0, 0),
- ('\u{109d}', '\u{109d}', 0, 0), ('\u{1100}', '\u{115f}', 2, 2), ('\u{1160}', '\u{11ff}', 0,
- 0), ('\u{135d}', '\u{135f}', 0, 0), ('\u{1712}', '\u{1714}', 0, 0), ('\u{1732}', '\u{1733}',
- 0, 0), ('\u{1752}', '\u{1753}', 0, 0), ('\u{1772}', '\u{1773}', 0, 0), ('\u{17b4}',
- '\u{17b5}', 0, 0), ('\u{17b7}', '\u{17bd}', 0, 0), ('\u{17c6}', '\u{17c6}', 0, 0),
- ('\u{17c9}', '\u{17d3}', 0, 0), ('\u{17dd}', '\u{17dd}', 0, 0), ('\u{180b}', '\u{180f}', 0,
- 0), ('\u{1885}', '\u{1886}', 0, 0), ('\u{18a9}', '\u{18a9}', 0, 0), ('\u{1920}', '\u{1922}',
- 0, 0), ('\u{1927}', '\u{1928}', 0, 0), ('\u{1932}', '\u{1932}', 0, 0), ('\u{1939}',
- '\u{193b}', 0, 0), ('\u{1a17}', '\u{1a18}', 0, 0), ('\u{1a1b}', '\u{1a1b}', 0, 0),
- ('\u{1a56}', '\u{1a56}', 0, 0), ('\u{1a58}', '\u{1a5e}', 0, 0), ('\u{1a60}', '\u{1a60}', 0,
- 0), ('\u{1a62}', '\u{1a62}', 0, 0), ('\u{1a65}', '\u{1a6c}', 0, 0), ('\u{1a73}', '\u{1a7c}',
- 0, 0), ('\u{1a7f}', '\u{1a7f}', 0, 0), ('\u{1ab0}', '\u{1ace}', 0, 0), ('\u{1b00}',
- '\u{1b03}', 0, 0), ('\u{1b34}', '\u{1b34}', 0, 0), ('\u{1b36}', '\u{1b3a}', 0, 0),
- ('\u{1b3c}', '\u{1b3c}', 0, 0), ('\u{1b42}', '\u{1b42}', 0, 0), ('\u{1b6b}', '\u{1b73}', 0,
- 0), ('\u{1b80}', '\u{1b81}', 0, 0), ('\u{1ba2}', '\u{1ba5}', 0, 0), ('\u{1ba8}', '\u{1ba9}',
- 0, 0), ('\u{1bab}', '\u{1bad}', 0, 0), ('\u{1be6}', '\u{1be6}', 0, 0), ('\u{1be8}',
- '\u{1be9}', 0, 0), ('\u{1bed}', '\u{1bed}', 0, 0), ('\u{1bef}', '\u{1bf1}', 0, 0),
- ('\u{1c2c}', '\u{1c33}', 0, 0), ('\u{1c36}', '\u{1c37}', 0, 0), ('\u{1cd0}', '\u{1cd2}', 0,
- 0), ('\u{1cd4}', '\u{1ce0}', 0, 0), ('\u{1ce2}', '\u{1ce8}', 0, 0), ('\u{1ced}', '\u{1ced}',
- 0, 0), ('\u{1cf4}', '\u{1cf4}', 0, 0), ('\u{1cf8}', '\u{1cf9}', 0, 0), ('\u{1dc0}',
- '\u{1dff}', 0, 0), ('\u{200b}', '\u{200f}', 0, 0), ('\u{2010}', '\u{2010}', 1, 2),
- ('\u{2013}', '\u{2016}', 1, 2), ('\u{2018}', '\u{2019}', 1, 2), ('\u{201c}', '\u{201d}', 1,
- 2), ('\u{2020}', '\u{2022}', 1, 2), ('\u{2024}', '\u{2027}', 1, 2), ('\u{202a}', '\u{202e}',
- 0, 0), ('\u{2030}', '\u{2030}', 1, 2), ('\u{2032}', '\u{2033}', 1, 2), ('\u{2035}',
- '\u{2035}', 1, 2), ('\u{203b}', '\u{203b}', 1, 2), ('\u{203e}', '\u{203e}', 1, 2),
- ('\u{2060}', '\u{2064}', 0, 0), ('\u{2066}', '\u{206f}', 0, 0), ('\u{2074}', '\u{2074}', 1,
- 2), ('\u{207f}', '\u{207f}', 1, 2), ('\u{2081}', '\u{2084}', 1, 2), ('\u{20ac}', '\u{20ac}',
- 1, 2), ('\u{20d0}', '\u{20f0}', 0, 0), ('\u{2103}', '\u{2103}', 1, 2), ('\u{2105}',
- '\u{2105}', 1, 2), ('\u{2109}', '\u{2109}', 1, 2), ('\u{2113}', '\u{2113}', 1, 2),
- ('\u{2116}', '\u{2116}', 1, 2), ('\u{2121}', '\u{2122}', 1, 2), ('\u{2126}', '\u{2126}', 1,
- 2), ('\u{212b}', '\u{212b}', 1, 2), ('\u{2153}', '\u{2154}', 1, 2), ('\u{215b}', '\u{215e}',
- 1, 2), ('\u{2160}', '\u{216b}', 1, 2), ('\u{2170}', '\u{2179}', 1, 2), ('\u{2189}',
- '\u{2189}', 1, 2), ('\u{2190}', '\u{2199}', 1, 2), ('\u{21b8}', '\u{21b9}', 1, 2),
- ('\u{21d2}', '\u{21d2}', 1, 2), ('\u{21d4}', '\u{21d4}', 1, 2), ('\u{21e7}', '\u{21e7}', 1,
- 2), ('\u{2200}', '\u{2200}', 1, 2), ('\u{2202}', '\u{2203}', 1, 2), ('\u{2207}', '\u{2208}',
- 1, 2), ('\u{220b}', '\u{220b}', 1, 2), ('\u{220f}', '\u{220f}', 1, 2), ('\u{2211}',
- '\u{2211}', 1, 2), ('\u{2215}', '\u{2215}', 1, 2), ('\u{221a}', '\u{221a}', 1, 2),
- ('\u{221d}', '\u{2220}', 1, 2), ('\u{2223}', '\u{2223}', 1, 2), ('\u{2225}', '\u{2225}', 1,
- 2), ('\u{2227}', '\u{222c}', 1, 2), ('\u{222e}', '\u{222e}', 1, 2), ('\u{2234}', '\u{2237}',
- 1, 2), ('\u{223c}', '\u{223d}', 1, 2), ('\u{2248}', '\u{2248}', 1, 2), ('\u{224c}',
- '\u{224c}', 1, 2), ('\u{2252}', '\u{2252}', 1, 2), ('\u{2260}', '\u{2261}', 1, 2),
- ('\u{2264}', '\u{2267}', 1, 2), ('\u{226a}', '\u{226b}', 1, 2), ('\u{226e}', '\u{226f}', 1,
- 2), ('\u{2282}', '\u{2283}', 1, 2), ('\u{2286}', '\u{2287}', 1, 2), ('\u{2295}', '\u{2295}',
- 1, 2), ('\u{2299}', '\u{2299}', 1, 2), ('\u{22a5}', '\u{22a5}', 1, 2), ('\u{22bf}',
- '\u{22bf}', 1, 2), ('\u{2312}', '\u{2312}', 1, 2), ('\u{231a}', '\u{231b}', 2, 2),
- ('\u{2329}', '\u{232a}', 2, 2), ('\u{23e9}', '\u{23ec}', 2, 2), ('\u{23f0}', '\u{23f0}', 2,
- 2), ('\u{23f3}', '\u{23f3}', 2, 2), ('\u{2460}', '\u{24e9}', 1, 2), ('\u{24eb}', '\u{254b}',
- 1, 2), ('\u{2550}', '\u{2573}', 1, 2), ('\u{2580}', '\u{258f}', 1, 2), ('\u{2592}',
- '\u{2595}', 1, 2), ('\u{25a0}', '\u{25a1}', 1, 2), ('\u{25a3}', '\u{25a9}', 1, 2),
- ('\u{25b2}', '\u{25b3}', 1, 2), ('\u{25b6}', '\u{25b7}', 1, 2), ('\u{25bc}', '\u{25bd}', 1,
- 2), ('\u{25c0}', '\u{25c1}', 1, 2), ('\u{25c6}', '\u{25c8}', 1, 2), ('\u{25cb}', '\u{25cb}',
- 1, 2), ('\u{25ce}', '\u{25d1}', 1, 2), ('\u{25e2}', '\u{25e5}', 1, 2), ('\u{25ef}',
- '\u{25ef}', 1, 2), ('\u{25fd}', '\u{25fe}', 2, 2), ('\u{2605}', '\u{2606}', 1, 2),
- ('\u{2609}', '\u{2609}', 1, 2), ('\u{260e}', '\u{260f}', 1, 2), ('\u{2614}', '\u{2615}', 2,
- 2), ('\u{261c}', '\u{261c}', 1, 2), ('\u{261e}', '\u{261e}', 1, 2), ('\u{2640}', '\u{2640}',
- 1, 2), ('\u{2642}', '\u{2642}', 1, 2), ('\u{2648}', '\u{2653}', 2, 2), ('\u{2660}',
- '\u{2661}', 1, 2), ('\u{2663}', '\u{2665}', 1, 2), ('\u{2667}', '\u{266a}', 1, 2),
- ('\u{266c}', '\u{266d}', 1, 2), ('\u{266f}', '\u{266f}', 1, 2), ('\u{267f}', '\u{267f}', 2,
- 2), ('\u{2693}', '\u{2693}', 2, 2), ('\u{269e}', '\u{269f}', 1, 2), ('\u{26a1}', '\u{26a1}',
- 2, 2), ('\u{26aa}', '\u{26ab}', 2, 2), ('\u{26bd}', '\u{26be}', 2, 2), ('\u{26bf}',
- '\u{26bf}', 1, 2), ('\u{26c4}', '\u{26c5}', 2, 2), ('\u{26c6}', '\u{26cd}', 1, 2),
- ('\u{26ce}', '\u{26ce}', 2, 2), ('\u{26cf}', '\u{26d3}', 1, 2), ('\u{26d4}', '\u{26d4}', 2,
- 2), ('\u{26d5}', '\u{26e1}', 1, 2), ('\u{26e3}', '\u{26e3}', 1, 2), ('\u{26e8}', '\u{26e9}',
- 1, 2), ('\u{26ea}', '\u{26ea}', 2, 2), ('\u{26eb}', '\u{26f1}', 1, 2), ('\u{26f2}',
- '\u{26f3}', 2, 2), ('\u{26f4}', '\u{26f4}', 1, 2), ('\u{26f5}', '\u{26f5}', 2, 2),
- ('\u{26f6}', '\u{26f9}', 1, 2), ('\u{26fa}', '\u{26fa}', 2, 2), ('\u{26fb}', '\u{26fc}', 1,
- 2), ('\u{26fd}', '\u{26fd}', 2, 2), ('\u{26fe}', '\u{26ff}', 1, 2), ('\u{2705}', '\u{2705}',
- 2, 2), ('\u{270a}', '\u{270b}', 2, 2), ('\u{2728}', '\u{2728}', 2, 2), ('\u{273d}',
- '\u{273d}', 1, 2), ('\u{274c}', '\u{274c}', 2, 2), ('\u{274e}', '\u{274e}', 2, 2),
- ('\u{2753}', '\u{2755}', 2, 2), ('\u{2757}', '\u{2757}', 2, 2), ('\u{2776}', '\u{277f}', 1,
- 2), ('\u{2795}', '\u{2797}', 2, 2), ('\u{27b0}', '\u{27b0}', 2, 2), ('\u{27bf}', '\u{27bf}',
- 2, 2), ('\u{2b1b}', '\u{2b1c}', 2, 2), ('\u{2b50}', '\u{2b50}', 2, 2), ('\u{2b55}',
- '\u{2b55}', 2, 2), ('\u{2b56}', '\u{2b59}', 1, 2), ('\u{2cef}', '\u{2cf1}', 0, 0),
- ('\u{2d7f}', '\u{2d7f}', 0, 0), ('\u{2de0}', '\u{2dff}', 0, 0), ('\u{2e80}', '\u{2e99}', 2,
- 2), ('\u{2e9b}', '\u{2ef3}', 2, 2), ('\u{2f00}', '\u{2fd5}', 2, 2), ('\u{2ff0}', '\u{2ffb}',
- 2, 2), ('\u{3000}', '\u{3029}', 2, 2), ('\u{302a}', '\u{302d}', 0, 0), ('\u{302e}',
- '\u{303e}', 2, 2), ('\u{3041}', '\u{3096}', 2, 2), ('\u{3099}', '\u{309a}', 0, 0),
- ('\u{309b}', '\u{30ff}', 2, 2), ('\u{3105}', '\u{312f}', 2, 2), ('\u{3131}', '\u{318e}', 2,
- 2), ('\u{3190}', '\u{31e3}', 2, 2), ('\u{31f0}', '\u{321e}', 2, 2), ('\u{3220}', '\u{3247}',
- 2, 2), ('\u{3248}', '\u{324f}', 1, 2), ('\u{3250}', '\u{4dbf}', 2, 2), ('\u{4e00}',
- '\u{a48c}', 2, 2), ('\u{a490}', '\u{a4c6}', 2, 2), ('\u{a66f}', '\u{a672}', 0, 0),
- ('\u{a674}', '\u{a67d}', 0, 0), ('\u{a69e}', '\u{a69f}', 0, 0), ('\u{a6f0}', '\u{a6f1}', 0,
- 0), ('\u{a802}', '\u{a802}', 0, 0), ('\u{a806}', '\u{a806}', 0, 0), ('\u{a80b}', '\u{a80b}',
- 0, 0), ('\u{a825}', '\u{a826}', 0, 0), ('\u{a82c}', '\u{a82c}', 0, 0), ('\u{a8c4}',
- '\u{a8c5}', 0, 0), ('\u{a8e0}', '\u{a8f1}', 0, 0), ('\u{a8ff}', '\u{a8ff}', 0, 0),
- ('\u{a926}', '\u{a92d}', 0, 0), ('\u{a947}', '\u{a951}', 0, 0), ('\u{a960}', '\u{a97c}', 2,
- 2), ('\u{a980}', '\u{a982}', 0, 0), ('\u{a9b3}', '\u{a9b3}', 0, 0), ('\u{a9b6}', '\u{a9b9}',
- 0, 0), ('\u{a9bc}', '\u{a9bd}', 0, 0), ('\u{a9e5}', '\u{a9e5}', 0, 0), ('\u{aa29}',
- '\u{aa2e}', 0, 0), ('\u{aa31}', '\u{aa32}', 0, 0), ('\u{aa35}', '\u{aa36}', 0, 0),
- ('\u{aa43}', '\u{aa43}', 0, 0), ('\u{aa4c}', '\u{aa4c}', 0, 0), ('\u{aa7c}', '\u{aa7c}', 0,
- 0), ('\u{aab0}', '\u{aab0}', 0, 0), ('\u{aab2}', '\u{aab4}', 0, 0), ('\u{aab7}', '\u{aab8}',
- 0, 0), ('\u{aabe}', '\u{aabf}', 0, 0), ('\u{aac1}', '\u{aac1}', 0, 0), ('\u{aaec}',
- '\u{aaed}', 0, 0), ('\u{aaf6}', '\u{aaf6}', 0, 0), ('\u{abe5}', '\u{abe5}', 0, 0),
- ('\u{abe8}', '\u{abe8}', 0, 0), ('\u{abed}', '\u{abed}', 0, 0), ('\u{ac00}', '\u{d7a3}', 2,
- 2), ('\u{e000}', '\u{f8ff}', 1, 2), ('\u{f900}', '\u{faff}', 2, 2), ('\u{fb1e}', '\u{fb1e}',
- 0, 0), ('\u{fe00}', '\u{fe0f}', 0, 0), ('\u{fe10}', '\u{fe19}', 2, 2), ('\u{fe20}',
- '\u{fe2f}', 0, 0), ('\u{fe30}', '\u{fe52}', 2, 2), ('\u{fe54}', '\u{fe66}', 2, 2),
- ('\u{fe68}', '\u{fe6b}', 2, 2), ('\u{feff}', '\u{feff}', 0, 0), ('\u{ff01}', '\u{ff60}', 2,
- 2), ('\u{ffe0}', '\u{ffe6}', 2, 2), ('\u{fff9}', '\u{fffb}', 0, 0), ('\u{fffd}', '\u{fffd}',
- 1, 2), ('\u{101fd}', '\u{101fd}', 0, 0), ('\u{102e0}', '\u{102e0}', 0, 0), ('\u{10376}',
- '\u{1037a}', 0, 0), ('\u{10a01}', '\u{10a03}', 0, 0), ('\u{10a05}', '\u{10a06}', 0, 0),
- ('\u{10a0c}', '\u{10a0f}', 0, 0), ('\u{10a38}', '\u{10a3a}', 0, 0), ('\u{10a3f}',
- '\u{10a3f}', 0, 0), ('\u{10ae5}', '\u{10ae6}', 0, 0), ('\u{10d24}', '\u{10d27}', 0, 0),
- ('\u{10eab}', '\u{10eac}', 0, 0), ('\u{10f46}', '\u{10f50}', 0, 0), ('\u{10f82}',
- '\u{10f85}', 0, 0), ('\u{11001}', '\u{11001}', 0, 0), ('\u{11038}', '\u{11046}', 0, 0),
- ('\u{11070}', '\u{11070}', 0, 0), ('\u{11073}', '\u{11074}', 0, 0), ('\u{1107f}',
- '\u{11081}', 0, 0), ('\u{110b3}', '\u{110b6}', 0, 0), ('\u{110b9}', '\u{110ba}', 0, 0),
- ('\u{110bd}', '\u{110bd}', 0, 0), ('\u{110c2}', '\u{110c2}', 0, 0), ('\u{110cd}',
- '\u{110cd}', 0, 0), ('\u{11100}', '\u{11102}', 0, 0), ('\u{11127}', '\u{1112b}', 0, 0),
- ('\u{1112d}', '\u{11134}', 0, 0), ('\u{11173}', '\u{11173}', 0, 0), ('\u{11180}',
- '\u{11181}', 0, 0), ('\u{111b6}', '\u{111be}', 0, 0), ('\u{111c9}', '\u{111cc}', 0, 0),
- ('\u{111cf}', '\u{111cf}', 0, 0), ('\u{1122f}', '\u{11231}', 0, 0), ('\u{11234}',
- '\u{11234}', 0, 0), ('\u{11236}', '\u{11237}', 0, 0), ('\u{1123e}', '\u{1123e}', 0, 0),
- ('\u{112df}', '\u{112df}', 0, 0), ('\u{112e3}', '\u{112ea}', 0, 0), ('\u{11300}',
- '\u{11301}', 0, 0), ('\u{1133b}', '\u{1133c}', 0, 0), ('\u{11340}', '\u{11340}', 0, 0),
- ('\u{11366}', '\u{1136c}', 0, 0), ('\u{11370}', '\u{11374}', 0, 0), ('\u{11438}',
- '\u{1143f}', 0, 0), ('\u{11442}', '\u{11444}', 0, 0), ('\u{11446}', '\u{11446}', 0, 0),
- ('\u{1145e}', '\u{1145e}', 0, 0), ('\u{114b3}', '\u{114b8}', 0, 0), ('\u{114ba}',
- '\u{114ba}', 0, 0), ('\u{114bf}', '\u{114c0}', 0, 0), ('\u{114c2}', '\u{114c3}', 0, 0),
- ('\u{115b2}', '\u{115b5}', 0, 0), ('\u{115bc}', '\u{115bd}', 0, 0), ('\u{115bf}',
- '\u{115c0}', 0, 0), ('\u{115dc}', '\u{115dd}', 0, 0), ('\u{11633}', '\u{1163a}', 0, 0),
- ('\u{1163d}', '\u{1163d}', 0, 0), ('\u{1163f}', '\u{11640}', 0, 0), ('\u{116ab}',
- '\u{116ab}', 0, 0), ('\u{116ad}', '\u{116ad}', 0, 0), ('\u{116b0}', '\u{116b5}', 0, 0),
- ('\u{116b7}', '\u{116b7}', 0, 0), ('\u{1171d}', '\u{1171f}', 0, 0), ('\u{11722}',
- '\u{11725}', 0, 0), ('\u{11727}', '\u{1172b}', 0, 0), ('\u{1182f}', '\u{11837}', 0, 0),
- ('\u{11839}', '\u{1183a}', 0, 0), ('\u{1193b}', '\u{1193c}', 0, 0), ('\u{1193e}',
- '\u{1193e}', 0, 0), ('\u{11943}', '\u{11943}', 0, 0), ('\u{119d4}', '\u{119d7}', 0, 0),
- ('\u{119da}', '\u{119db}', 0, 0), ('\u{119e0}', '\u{119e0}', 0, 0), ('\u{11a01}',
- '\u{11a0a}', 0, 0), ('\u{11a33}', '\u{11a38}', 0, 0), ('\u{11a3b}', '\u{11a3e}', 0, 0),
- ('\u{11a47}', '\u{11a47}', 0, 0), ('\u{11a51}', '\u{11a56}', 0, 0), ('\u{11a59}',
- '\u{11a5b}', 0, 0), ('\u{11a8a}', '\u{11a96}', 0, 0), ('\u{11a98}', '\u{11a99}', 0, 0),
- ('\u{11c30}', '\u{11c36}', 0, 0), ('\u{11c38}', '\u{11c3d}', 0, 0), ('\u{11c3f}',
- '\u{11c3f}', 0, 0), ('\u{11c92}', '\u{11ca7}', 0, 0), ('\u{11caa}', '\u{11cb0}', 0, 0),
- ('\u{11cb2}', '\u{11cb3}', 0, 0), ('\u{11cb5}', '\u{11cb6}', 0, 0), ('\u{11d31}',
- '\u{11d36}', 0, 0), ('\u{11d3a}', '\u{11d3a}', 0, 0), ('\u{11d3c}', '\u{11d3d}', 0, 0),
- ('\u{11d3f}', '\u{11d45}', 0, 0), ('\u{11d47}', '\u{11d47}', 0, 0), ('\u{11d90}',
- '\u{11d91}', 0, 0), ('\u{11d95}', '\u{11d95}', 0, 0), ('\u{11d97}', '\u{11d97}', 0, 0),
- ('\u{11ef3}', '\u{11ef4}', 0, 0), ('\u{13430}', '\u{13438}', 0, 0), ('\u{16af0}',
- '\u{16af4}', 0, 0), ('\u{16b30}', '\u{16b36}', 0, 0), ('\u{16f4f}', '\u{16f4f}', 0, 0),
- ('\u{16f8f}', '\u{16f92}', 0, 0), ('\u{16fe0}', '\u{16fe3}', 2, 2), ('\u{16fe4}',
- '\u{16fe4}', 0, 0), ('\u{16ff0}', '\u{16ff1}', 2, 2), ('\u{17000}', '\u{187f7}', 2, 2),
- ('\u{18800}', '\u{18cd5}', 2, 2), ('\u{18d00}', '\u{18d08}', 2, 2), ('\u{1aff0}',
- '\u{1aff3}', 2, 2), ('\u{1aff5}', '\u{1affb}', 2, 2), ('\u{1affd}', '\u{1affe}', 2, 2),
- ('\u{1b000}', '\u{1b122}', 2, 2), ('\u{1b150}', '\u{1b152}', 2, 2), ('\u{1b164}',
- '\u{1b167}', 2, 2), ('\u{1b170}', '\u{1b2fb}', 2, 2), ('\u{1bc9d}', '\u{1bc9e}', 0, 0),
- ('\u{1bca0}', '\u{1bca3}', 0, 0), ('\u{1cf00}', '\u{1cf2d}', 0, 0), ('\u{1cf30}',
- '\u{1cf46}', 0, 0), ('\u{1d167}', '\u{1d169}', 0, 0), ('\u{1d173}', '\u{1d182}', 0, 0),
- ('\u{1d185}', '\u{1d18b}', 0, 0), ('\u{1d1aa}', '\u{1d1ad}', 0, 0), ('\u{1d242}',
- '\u{1d244}', 0, 0), ('\u{1da00}', '\u{1da36}', 0, 0), ('\u{1da3b}', '\u{1da6c}', 0, 0),
- ('\u{1da75}', '\u{1da75}', 0, 0), ('\u{1da84}', '\u{1da84}', 0, 0), ('\u{1da9b}',
- '\u{1da9f}', 0, 0), ('\u{1daa1}', '\u{1daaf}', 0, 0), ('\u{1e000}', '\u{1e006}', 0, 0),
- ('\u{1e008}', '\u{1e018}', 0, 0), ('\u{1e01b}', '\u{1e021}', 0, 0), ('\u{1e023}',
- '\u{1e024}', 0, 0), ('\u{1e026}', '\u{1e02a}', 0, 0), ('\u{1e130}', '\u{1e136}', 0, 0),
- ('\u{1e2ae}', '\u{1e2ae}', 0, 0), ('\u{1e2ec}', '\u{1e2ef}', 0, 0), ('\u{1e8d0}',
- '\u{1e8d6}', 0, 0), ('\u{1e944}', '\u{1e94a}', 0, 0), ('\u{1f004}', '\u{1f004}', 2, 2),
- ('\u{1f0cf}', '\u{1f0cf}', 2, 2), ('\u{1f100}', '\u{1f10a}', 1, 2), ('\u{1f110}',
- '\u{1f12d}', 1, 2), ('\u{1f130}', '\u{1f169}', 1, 2), ('\u{1f170}', '\u{1f18d}', 1, 2),
- ('\u{1f18e}', '\u{1f18e}', 2, 2), ('\u{1f18f}', '\u{1f190}', 1, 2), ('\u{1f191}',
- '\u{1f19a}', 2, 2), ('\u{1f19b}', '\u{1f1ac}', 1, 2), ('\u{1f200}', '\u{1f202}', 2, 2),
- ('\u{1f210}', '\u{1f23b}', 2, 2), ('\u{1f240}', '\u{1f248}', 2, 2), ('\u{1f250}',
- '\u{1f251}', 2, 2), ('\u{1f260}', '\u{1f265}', 2, 2), ('\u{1f300}', '\u{1f320}', 2, 2),
- ('\u{1f32d}', '\u{1f335}', 2, 2), ('\u{1f337}', '\u{1f37c}', 2, 2), ('\u{1f37e}',
- '\u{1f393}', 2, 2), ('\u{1f3a0}', '\u{1f3ca}', 2, 2), ('\u{1f3cf}', '\u{1f3d3}', 2, 2),
- ('\u{1f3e0}', '\u{1f3f0}', 2, 2), ('\u{1f3f4}', '\u{1f3f4}', 2, 2), ('\u{1f3f8}',
- '\u{1f43e}', 2, 2), ('\u{1f440}', '\u{1f440}', 2, 2), ('\u{1f442}', '\u{1f4fc}', 2, 2),
- ('\u{1f4ff}', '\u{1f53d}', 2, 2), ('\u{1f54b}', '\u{1f54e}', 2, 2), ('\u{1f550}',
- '\u{1f567}', 2, 2), ('\u{1f57a}', '\u{1f57a}', 2, 2), ('\u{1f595}', '\u{1f596}', 2, 2),
- ('\u{1f5a4}', '\u{1f5a4}', 2, 2), ('\u{1f5fb}', '\u{1f64f}', 2, 2), ('\u{1f680}',
- '\u{1f6c5}', 2, 2), ('\u{1f6cc}', '\u{1f6cc}', 2, 2), ('\u{1f6d0}', '\u{1f6d2}', 2, 2),
- ('\u{1f6d5}', '\u{1f6d7}', 2, 2), ('\u{1f6dd}', '\u{1f6df}', 2, 2), ('\u{1f6eb}',
- '\u{1f6ec}', 2, 2), ('\u{1f6f4}', '\u{1f6fc}', 2, 2), ('\u{1f7e0}', '\u{1f7eb}', 2, 2),
- ('\u{1f7f0}', '\u{1f7f0}', 2, 2), ('\u{1f90c}', '\u{1f93a}', 2, 2), ('\u{1f93c}',
- '\u{1f945}', 2, 2), ('\u{1f947}', '\u{1f9ff}', 2, 2), ('\u{1fa70}', '\u{1fa74}', 2, 2),
- ('\u{1fa78}', '\u{1fa7c}', 2, 2), ('\u{1fa80}', '\u{1fa86}', 2, 2), ('\u{1fa90}',
- '\u{1faac}', 2, 2), ('\u{1fab0}', '\u{1faba}', 2, 2), ('\u{1fac0}', '\u{1fac5}', 2, 2),
- ('\u{1fad0}', '\u{1fad9}', 2, 2), ('\u{1fae0}', '\u{1fae7}', 2, 2), ('\u{1faf0}',
- '\u{1faf6}', 2, 2), ('\u{20000}', '\u{2fffd}', 2, 2), ('\u{30000}', '\u{3fffd}', 2, 2),
- ('\u{e0001}', '\u{e0001}', 0, 0), ('\u{e0020}', '\u{e007f}', 0, 0), ('\u{e0100}',
- '\u{e01ef}', 0, 0), ('\u{f0000}', '\u{ffffd}', 1, 2), ('\u{100000}', '\u{10fffd}', 1, 2)
+ /// Autogenerated. 1 sub-table(s). Consult [`lookup_width`] for layout info.
+ static TABLES_0: [u8; 256] = [
+ 0x00, 0x01, 0x02, 0x03, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
+ 0x0E, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x0F, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
+ 0x03, 0x0F, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x10, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
+ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x12, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11,
+ 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00,
];
-}
+ /// Autogenerated. 19 sub-table(s). Consult [`lookup_width`] for layout info.
+ static TABLES_1: [u8; 2432] = [
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x06, 0x08, 0x06, 0x09, 0x0A, 0x0B, 0x0C,
+ 0x0D, 0x0E, 0x0F, 0x10, 0x06, 0x06, 0x06, 0x11, 0x12, 0x13, 0x14, 0x06, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x22, 0x24, 0x25,
+ 0x26, 0x27, 0x28, 0x29, 0x2A, 0x25, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33,
+ 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x06, 0x3B, 0x3C, 0x0A, 0x0A, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x3D, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x3E, 0x3F, 0x40, 0x41, 0x42, 0x06, 0x43, 0x06, 0x44, 0x06, 0x06, 0x06, 0x45,
+ 0x46, 0x47, 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x06, 0x06, 0x4E, 0x06, 0x06, 0x06, 0x0A,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x4F, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55,
+ 0x56, 0x57, 0x58, 0x59, 0x06, 0x5A, 0x06, 0x06, 0x5B, 0x06, 0x5C, 0x5D, 0x5E, 0x5D, 0x5F,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x69, 0x6A, 0x06, 0x06, 0x06, 0x06, 0x06, 0x6B,
+ 0x06, 0x01, 0x06, 0x6C, 0x06, 0x06, 0x6D, 0x6E, 0x3B, 0x3B, 0x3B, 0x6F, 0x70, 0x71, 0x72,
+ 0x3B, 0x73, 0x3B, 0x74, 0x75, 0x76, 0x77, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x06, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x78, 0x79, 0x06, 0x06, 0x06, 0x06, 0x06, 0x7A, 0x7B, 0x7C,
+ 0x06, 0x06, 0x06, 0x06, 0x7D, 0x06, 0x06, 0x7E, 0x7F, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85,
+ 0x86, 0x06, 0x06, 0x06, 0x87, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x88,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x89, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x8A, 0x8B, 0x06, 0x01, 0x71, 0x8C, 0x06, 0x8D, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x8E, 0x06, 0x06, 0x06, 0x8F, 0x06, 0x90, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x91, 0x06, 0x06, 0x92, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x93, 0x06, 0x06, 0x06, 0x06, 0x06, 0x94, 0x95, 0x06, 0x96, 0x97, 0x06,
+ 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0xA0, 0x2E, 0x06, 0xA1, 0x2C, 0xA2, 0x06,
+ 0x06, 0xA3, 0xA4, 0xA5, 0xA6, 0x06, 0x06, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0x06, 0xAC, 0x06,
+ 0x06, 0x06, 0xAD, 0x06, 0x06, 0x06, 0xAE, 0xAF, 0x06, 0xB0, 0xB1, 0xB2, 0xB3, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0xB4, 0x06, 0xB5, 0x06, 0xB6, 0xB7, 0xB8, 0x06, 0x06, 0x06, 0x06, 0xB9,
+ 0xBA, 0xBB, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x47, 0xBC, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0xBD, 0xBE, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xBF, 0xC0, 0xC1, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xC2,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0xC3, 0xC4, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xC5, 0x3B, 0x3B, 0x3B, 0x3B, 0xC6,
+ 0xC7, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xC8, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0xC9, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xCA,
+ 0xCB, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xCC, 0xCD, 0x06, 0x06, 0xCE, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xCF, 0xD0,
+ 0xD1, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xD2, 0x06, 0xBF, 0x06, 0xBE, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0xD3, 0xD4, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xD4, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xD5, 0x06, 0xD6,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0xD7, 0x06, 0x06, 0xD8,
+ 0xD9, 0xDA, 0xDB, 0x06, 0xDC, 0xDD, 0x06, 0x06, 0xDE, 0xDF, 0xE0, 0xE1, 0xE2, 0xE3, 0x3B,
+ 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0x3B, 0xE9, 0x3B, 0xEA, 0x06, 0x06, 0x06, 0xEB, 0x06, 0x06,
+ 0x06, 0x06, 0xEC, 0xED, 0x3B, 0x3B, 0x06, 0xEE, 0xEF, 0xF0, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B,
+ 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0x3B, 0xE5, 0xF1, 0x0A, 0x06, 0x06, 0x0A, 0x0A, 0x0A,
+ 0x0B, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
+ 0x06, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0xF2,
+ ];
+ /// Autogenerated. 243 sub-table(s). Consult [`lookup_width`] for layout info.
+ static TABLES_2: [u8; 3888] = [
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D, 0xD7, 0x77, 0x75, 0xFF,
+ 0xF7, 0x7F, 0xFF, 0x55, 0x75, 0x55, 0x55, 0x57, 0xD5, 0x57, 0xF5, 0x5F, 0x75, 0x7F, 0x5F,
+ 0xF7, 0xD5, 0x7F, 0x77, 0x5D, 0x55, 0x55, 0x55, 0xDD, 0x55, 0xD5, 0x55, 0x55, 0xF5, 0xD5,
+ 0x55, 0xFD, 0x55, 0x57, 0xD5, 0x7F, 0x57, 0xFF, 0x5D, 0xF5, 0x55, 0x55, 0x55, 0x55, 0xF5,
+ 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x75, 0x77, 0x77, 0x77, 0x57,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5D, 0x55, 0x55,
+ 0x55, 0x5D, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xD7, 0xFD, 0x5D, 0x57, 0x55,
+ 0xFF, 0xDD, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0xFD, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0x5F, 0x55, 0xFD, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
+ 0x5F, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5D,
+ 0x55, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0x5D, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x15, 0x00, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x10, 0x41, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x00, 0x50, 0x55, 0x55, 0x00, 0x00, 0x40, 0x54, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x55,
+ 0x55, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x00, 0x10, 0x00,
+ 0x14, 0x04, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x51, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x05, 0x10, 0x00, 0x00, 0x01, 0x01, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x50, 0x55, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45,
+ 0x54, 0x01, 0x00, 0x54, 0x51, 0x01, 0x00, 0x55, 0x55, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x54, 0x01, 0x54, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x45, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x54, 0x41, 0x15, 0x14, 0x50, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x50, 0x51, 0x55, 0x55, 0x01, 0x10, 0x54, 0x51, 0x55, 0x55, 0x55, 0x55, 0x05,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x00, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x14, 0x01, 0x54, 0x55, 0x51, 0x55, 0x41, 0x55,
+ 0x55, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55, 0x51, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x54, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x04, 0x54, 0x05, 0x04,
+ 0x50, 0x55, 0x41, 0x55, 0x55, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45,
+ 0x55, 0x50, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x54,
+ 0x01, 0x54, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x05, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x51, 0x00, 0x40, 0x55, 0x55, 0x15, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x51, 0x00, 0x00, 0x54, 0x55, 0x55, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x11, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x00, 0x00, 0x40, 0x00, 0x04, 0x55, 0x01, 0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x45, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x04, 0x00, 0x41, 0x41, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x50, 0x05, 0x54, 0x55, 0x55, 0x55, 0x01, 0x54, 0x55, 0x55, 0x45, 0x41,
+ 0x55, 0x51, 0x55, 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x10, 0x00, 0x50, 0x55, 0x45, 0x01, 0x00, 0x00, 0x55, 0x55, 0x51, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x40, 0x15, 0x54, 0x55, 0x45, 0x55, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15,
+ 0x14, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x45, 0x00, 0x40, 0x44, 0x01, 0x00, 0x54, 0x15, 0x00, 0x00, 0x14, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x04, 0x40, 0x54, 0x45,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x55, 0x55, 0x55,
+ 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x50, 0x10, 0x50, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x50, 0x11, 0x50, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00,
+ 0x05, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x54, 0x51,
+ 0x55, 0x54, 0x50, 0x55, 0x55, 0x55, 0x15, 0x00, 0xD7, 0x7F, 0x5F, 0x5F, 0x7F, 0xFF, 0x05,
+ 0x40, 0xF7, 0x5D, 0xD5, 0x75, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x04,
+ 0x00, 0x00, 0x55, 0x57, 0x55, 0xD5, 0xFD, 0x57, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x57, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0xD5, 0x5D, 0x5D, 0x55, 0xD5, 0x75, 0x55,
+ 0x55, 0x7D, 0x75, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xD5, 0x57,
+ 0xD5, 0x7F, 0xFF, 0xFF, 0xFF, 0x55, 0xFF, 0xFF, 0x5F, 0x55, 0x55, 0x55, 0x5D, 0x55, 0xFF,
+ 0xFF, 0x5F, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x5F, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x75, 0x57, 0x55, 0x55, 0x55, 0xD5, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xF7, 0xD5, 0xD7,
+ 0xD5, 0x5D, 0x5D, 0x75, 0xFD, 0xD7, 0xDD, 0xFF, 0x77, 0x55, 0xFF, 0x55, 0x5F, 0x55, 0x55,
+ 0x57, 0x57, 0x75, 0x55, 0x55, 0x55, 0x5F, 0xFF, 0xF5, 0xF5, 0x55, 0x55, 0x55, 0x55, 0xF5,
+ 0xF5, 0x55, 0x55, 0x55, 0x5D, 0x5D, 0x55, 0x55, 0x5D, 0x55, 0x55, 0x55, 0x55, 0x55, 0xD5,
+ 0x55, 0x55, 0x55, 0x55, 0x75, 0x55, 0xA5, 0x55, 0x55, 0x55, 0x69, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xA9, 0x56, 0x96, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 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, 0xDF,
+ 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x55, 0x55, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xF5, 0x5F, 0x55, 0x55, 0xDF,
+ 0xFF, 0x5F, 0x55, 0xF5, 0xF5, 0x55, 0x5F, 0x5F, 0xF5, 0xD7, 0xF5, 0x5F, 0x55, 0x55, 0x55,
+ 0xF5, 0x5F, 0x55, 0xD5, 0x55, 0x55, 0x55, 0x69, 0x55, 0x7D, 0x5D, 0xF5, 0x55, 0x5A, 0x55,
+ 0x77, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x77, 0x55, 0xAA, 0xAA, 0xAA, 0x55,
+ 0x55, 0x55, 0xDF, 0xDF, 0x7F, 0xDF, 0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0x55, 0x55, 0x95,
+ 0x55, 0x55, 0xF5, 0x59, 0x55, 0xA5, 0x55, 0x55, 0x55, 0x55, 0xE9, 0x55, 0xFA, 0xFF, 0xEF,
+ 0xFF, 0xFE, 0xFF, 0xFF, 0xDF, 0x55, 0xEF, 0xFF, 0xAF, 0xFB, 0xEF, 0xFB, 0x55, 0x59, 0xA5,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55, 0x55, 0x5D, 0x55, 0x55,
+ 0x55, 0x66, 0x95, 0x9A, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xF5, 0xFF, 0xFF, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0xA9, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x55, 0x55, 0x95,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x95, 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0xF9, 0x5F, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x50,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x9A, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x5A, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0x0A, 0xA0, 0xAA, 0xAA, 0xAA, 0x6A, 0xA9, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x6A,
+ 0x81, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0xA9, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA9, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x6A,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x6A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xFF, 0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0x56, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0x6A, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x40,
+ 0x00, 0x00, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x50, 0x55, 0x55, 0x55, 0x45, 0x45, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41,
+ 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00,
+ 0x00, 0x00, 0x00, 0x50, 0x55, 0x55, 0x15, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x05, 0x00, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x50, 0x55, 0x55,
+ 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x56, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x05, 0x50, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x40, 0x41, 0x41, 0x55, 0x55, 0x15, 0x55, 0x55,
+ 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x04, 0x14, 0x54, 0x05, 0x51,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x45, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x51, 0x54, 0x51, 0x55, 0x55, 0x55,
+ 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0xAA, 0xAA, 0x5A, 0x55, 0x00, 0x00, 0x00, 0x00,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x6A, 0xAA, 0xAA, 0xAA, 0xAA, 0x6A, 0xAA,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x56, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA,
+ 0x6A, 0x55, 0x55, 0x55, 0x55, 0x01, 0x5D, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x40, 0x55, 0x01, 0x41, 0x55, 0x00, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x15, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01,
+ 0x55, 0x05, 0x00, 0x00, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x05, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x00, 0x00, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x14, 0x54, 0x55, 0x15, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x15, 0x40, 0x41, 0x51, 0x45, 0x55, 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x15, 0x00, 0x01, 0x00, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x15, 0x55, 0x55, 0x55, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x00, 0x40, 0x55, 0x55, 0x01, 0x14, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x50, 0x04, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x15, 0x15, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x00, 0x54, 0x00, 0x54, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x05,
+ 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x44,
+ 0x15, 0x04, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x05,
+ 0x50, 0x55, 0x10, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x15, 0x00, 0x40, 0x11, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x15, 0x51, 0x00, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01,
+ 0x05, 0x10, 0x00, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x00, 0x41, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x44, 0x15, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x00, 0x05, 0x55, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01, 0x00, 0x40,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x14, 0x40, 0x55, 0x15,
+ 0x55, 0x55, 0x01, 0x40, 0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x05, 0x00, 0x00, 0x40, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x40, 0x00,
+ 0x10, 0x55, 0x55, 0x55, 0x55, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x41,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x01,
+ 0x40, 0x45, 0x10, 0x00, 0x10, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x50, 0x11, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x15, 0x54, 0x55, 0x55, 0x50, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x05, 0x40, 0x55, 0x44, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x15, 0x00, 0x00, 0x00, 0x50, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x15,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x15, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA, 0x54, 0x55, 0x55, 0x5A, 0x55, 0x55, 0x55, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x5A, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0xAA, 0xAA, 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA,
+ 0xA9, 0xAA, 0x69, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x6A, 0x55, 0x55, 0x55,
+ 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x6A, 0x59, 0x55, 0x55, 0x55, 0xAA, 0x55,
+ 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x41, 0x00,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x15, 0x50, 0x55, 0x15, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x05, 0x50, 0x55, 0x55, 0x55, 0x55, 0x05, 0x54, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x55, 0x51, 0x55, 0x55, 0x55,
+ 0x54, 0x55, 0x55, 0x55, 0x55, 0x15, 0x00, 0x01, 0x00, 0x00, 0x00, 0x55, 0x55, 0x55, 0x55,
+ 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x10, 0x04, 0x40, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x45, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x40, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x95, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFF, 0xFF, 0x7F, 0x55, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x5F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0xFF, 0x5F, 0x55, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xAB, 0xAA,
+ 0xEA, 0xFF, 0xFF, 0xFF, 0xFF, 0x57, 0x55, 0x55, 0x55, 0x55, 0x6A, 0x55, 0x55, 0x55, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0xAA, 0xAA, 0x56, 0x55,
+ 0x5A, 0x55, 0x55, 0x55, 0xAA, 0x5A, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x56, 0x55, 0x55, 0xA9, 0xAA, 0x9A, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xA6, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0x6A, 0x95, 0xAA, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0x56, 0x56, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0x6A, 0xA6, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0x96, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0x5A, 0x55, 0x55, 0x95, 0x6A, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA,
+ 0x55, 0x55, 0x55, 0x55, 0x65, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x69, 0x55, 0x55, 0x55,
+ 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x95, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA, 0x5A, 0x55, 0x56, 0x6A, 0xA9,
+ 0x55, 0xAA, 0x55, 0x55, 0x95, 0x56, 0x55, 0xAA, 0xAA, 0x56, 0x55, 0x55, 0x55, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0x55, 0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x6A, 0xAA, 0xAA, 0x9A, 0xAA,
+ 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55,
+ 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xAA, 0xAA, 0xAA, 0x56, 0xAA,
+ 0xAA, 0x56, 0x55, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x9A,
+ 0xAA, 0x5A, 0x55, 0xA5, 0xAA, 0xAA, 0xAA, 0x55, 0xAA, 0xAA, 0x56, 0x55, 0xAA, 0xAA, 0x56,
+ 0x55, 0x51, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
+ 0xFF, 0xFF, 0x5F,
+ ];
+}
diff --git a/vendor/unicode-width/src/tests.rs b/vendor/unicode-width/src/tests.rs
index 72808c64f..e49b1bfbe 100644
--- a/vendor/unicode-width/src/tests.rs
+++ b/vendor/unicode-width/src/tests.rs
@@ -13,7 +13,7 @@ use std::iter;
#[cfg(feature = "bench")]
use test::{self, Bencher};
#[cfg(feature = "bench")]
-use super::UnicodeWidthChar;
+use super::{UnicodeWidthChar, UnicodeWidthStr};
use std::prelude::v1::*;
@@ -93,7 +93,23 @@ fn simple_width_match(c: char) -> Option<usize> {
_ => UnicodeWidthChar::width(c)
}
}
-
+#[cfg(all(feature = "bench", not(feature = "no_std")))]
+#[bench]
+fn enwik8(b: &mut Bencher) {
+ // To benchmark, download & unzip `enwik8` from https://data.deepai.org/enwik8.zip
+ let data_path = "bench_data/enwik8";
+ let string = std::fs::read_to_string(data_path).unwrap_or_default();
+ b.iter(|| test::black_box(UnicodeWidthStr::width(string.as_str())));
+}
+#[cfg(all(feature = "bench", not(feature = "no_std")))]
+#[bench]
+fn jawiki(b: &mut Bencher) {
+ // To benchmark, download & extract `jawiki-20220501-pages-articles-multistream-index.txt` from
+ // https://dumps.wikimedia.org/jawiki/20220501/jawiki-20220501-pages-articles-multistream-index.txt.bz2
+ let data_path = "bench_data/jawiki-20220501-pages-articles-multistream-index.txt";
+ let string = std::fs::read_to_string(data_path).unwrap_or_default();
+ b.iter(|| test::black_box(UnicodeWidthStr::width(string.as_str())));
+}
#[test]
fn test_str() {
use super::UnicodeWidthStr;
diff --git a/vendor/unicode-xid/.cargo-checksum.json b/vendor/unicode-xid/.cargo-checksum.json
index 0f93609e5..be3630543 100644
--- a/vendor/unicode-xid/.cargo-checksum.json
+++ b/vendor/unicode-xid/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"50d9e34c8bf5a28d7e160844ed52b641c7975414e8be75166a8979710c17bcf2","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"2d01a2c43c4ec10fb3b74bf84fe06995d3d53d06c968fb4e27e64682058ba9e3","benches/xid.rs":"a2986ce1df5d93bff51e73dc234bffb341d4fe5d749247296f02396dde16a72b","src/lib.rs":"3cdd204115af45e9ece70db737d711e1798eac40eaa6cc4e8280bb3342e1408e","src/tables.rs":"1c8650d5bed6c75c4071f5cac2127aaab578d887622d2fdde8808492caec5c91","src/tests.rs":"b866f890acd631e667635785c34b1723709f10a9515ca525b41de8a062c7b204","tests/exhaustive_tests.rs":"ec91e9124d61e5b3e2fbbbf37a2fd30d6c7a8fa22639d6720b416d9ebc1007c5"},"package":"957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04"} \ No newline at end of file
+{"files":{"COPYRIGHT":"23860c2a7b5d96b21569afedf033469bab9fe14a1b24a35068b8641c578ce24d","Cargo.toml":"289ae8b5c1859b5556dd663b31efae72255f69e3c05408ce7a51c8ba65573677","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"7b63ecd5f1902af1b63729947373683c32745c16a10e8e6292e2e2dcd7e90ae0","README.md":"d13b0abf515d4b41b684a2255169f4340c32256c91e6a4835cafaec2161b5e5f","benches/xid.rs":"a2986ce1df5d93bff51e73dc234bffb341d4fe5d749247296f02396dde16a72b","src/lib.rs":"3cdd204115af45e9ece70db737d711e1798eac40eaa6cc4e8280bb3342e1408e","src/tables.rs":"e4c2e9b70f45d262b78fde8435a969eb2478ca6d9dacd061953f54cf344f0f4d","src/tests.rs":"b866f890acd631e667635785c34b1723709f10a9515ca525b41de8a062c7b204","tests/exhaustive_tests.rs":"ec91e9124d61e5b3e2fbbbf37a2fd30d6c7a8fa22639d6720b416d9ebc1007c5"},"package":"f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"} \ No newline at end of file
diff --git a/vendor/unicode-xid/Cargo.toml b/vendor/unicode-xid/Cargo.toml
index 04afa4c60..817a4f42f 100644
--- a/vendor/unicode-xid/Cargo.toml
+++ b/vendor/unicode-xid/Cargo.toml
@@ -12,7 +12,7 @@
[package]
rust-version = "1.17"
name = "unicode-xid"
-version = "0.2.3"
+version = "0.2.4"
authors = [
"erick.tryzelaar <erick.tryzelaar@gmail.com>",
"kwantam <kwantam@gmail.com>",
diff --git a/vendor/unicode-xid/README.md b/vendor/unicode-xid/README.md
index 325d35e95..747684303 100644
--- a/vendor/unicode-xid/README.md
+++ b/vendor/unicode-xid/README.md
@@ -26,6 +26,15 @@ on std, and instead uses equivalent functions from core.
# changelog
+## 0.2.4
+
+- Update to Unicode 15.0.0
+- Replace `const` tables with `static` tables.
+
+## 0.2.3
+
+- Update to Unicode 14.0.0
+
## 0.2.2
- Add an ASCII fast-path
diff --git a/vendor/unicode-xid/src/tables.rs b/vendor/unicode-xid/src/tables.rs
index a4a072f36..c12e76c0b 100644
--- a/vendor/unicode-xid/src/tables.rs
+++ b/vendor/unicode-xid/src/tables.rs
@@ -14,7 +14,7 @@
/// The version of [Unicode](http://www.unicode.org/)
/// that this version of unicode-xid is based on.
-pub const UNICODE_VERSION: (u64, u64, u64) = (14, 0, 0);
+pub const UNICODE_VERSION: (u64, u64, u64) = (15, 0, 0);
fn bsearch_range_table(c: char, r: &[(char, char)]) -> bool {
use core::cmp::Ordering::{Equal, Greater, Less};
@@ -37,7 +37,7 @@ fn bsearch_range_table(c: char, r: &[(char, char)]) -> bool {
}
pub mod derived_property {
- pub const XID_Continue_table: &[(char, char)] = &[
+ static XID_Continue_table: &[(char, char)] = &[
('\u{30}', '\u{39}'),
('\u{41}', '\u{5a}'),
('\u{5f}', '\u{5f}'),
@@ -196,7 +196,7 @@ pub mod derived_property {
('\u{cdd}', '\u{cde}'),
('\u{ce0}', '\u{ce3}'),
('\u{ce6}', '\u{cef}'),
- ('\u{cf1}', '\u{cf2}'),
+ ('\u{cf1}', '\u{cf3}'),
('\u{d00}', '\u{d0c}'),
('\u{d0e}', '\u{d10}'),
('\u{d12}', '\u{d44}'),
@@ -229,7 +229,7 @@ pub mod derived_property {
('\u{ea7}', '\u{ebd}'),
('\u{ec0}', '\u{ec4}'),
('\u{ec6}', '\u{ec6}'),
- ('\u{ec8}', '\u{ecd}'),
+ ('\u{ec8}', '\u{ece}'),
('\u{ed0}', '\u{ed9}'),
('\u{edc}', '\u{edf}'),
('\u{f00}', '\u{f00}'),
@@ -549,7 +549,7 @@ pub mod derived_property {
('\u{10e80}', '\u{10ea9}'),
('\u{10eab}', '\u{10eac}'),
('\u{10eb0}', '\u{10eb1}'),
- ('\u{10f00}', '\u{10f1c}'),
+ ('\u{10efd}', '\u{10f1c}'),
('\u{10f27}', '\u{10f27}'),
('\u{10f30}', '\u{10f50}'),
('\u{10f70}', '\u{10f85}'),
@@ -572,7 +572,7 @@ pub mod derived_property {
('\u{111dc}', '\u{111dc}'),
('\u{11200}', '\u{11211}'),
('\u{11213}', '\u{11237}'),
- ('\u{1123e}', '\u{1123e}'),
+ ('\u{1123e}', '\u{11241}'),
('\u{11280}', '\u{11286}'),
('\u{11288}', '\u{11288}'),
('\u{1128a}', '\u{1128d}'),
@@ -653,12 +653,17 @@ pub mod derived_property {
('\u{11d93}', '\u{11d98}'),
('\u{11da0}', '\u{11da9}'),
('\u{11ee0}', '\u{11ef6}'),
+ ('\u{11f00}', '\u{11f10}'),
+ ('\u{11f12}', '\u{11f3a}'),
+ ('\u{11f3e}', '\u{11f42}'),
+ ('\u{11f50}', '\u{11f59}'),
('\u{11fb0}', '\u{11fb0}'),
('\u{12000}', '\u{12399}'),
('\u{12400}', '\u{1246e}'),
('\u{12480}', '\u{12543}'),
('\u{12f90}', '\u{12ff0}'),
- ('\u{13000}', '\u{1342e}'),
+ ('\u{13000}', '\u{1342f}'),
+ ('\u{13440}', '\u{13455}'),
('\u{14400}', '\u{14646}'),
('\u{16800}', '\u{16a38}'),
('\u{16a40}', '\u{16a5e}'),
@@ -686,7 +691,9 @@ pub mod derived_property {
('\u{1aff5}', '\u{1affb}'),
('\u{1affd}', '\u{1affe}'),
('\u{1b000}', '\u{1b122}'),
+ ('\u{1b132}', '\u{1b132}'),
('\u{1b150}', '\u{1b152}'),
+ ('\u{1b155}', '\u{1b155}'),
('\u{1b164}', '\u{1b167}'),
('\u{1b170}', '\u{1b2fb}'),
('\u{1bc00}', '\u{1bc6a}'),
@@ -740,17 +747,21 @@ pub mod derived_property {
('\u{1da9b}', '\u{1da9f}'),
('\u{1daa1}', '\u{1daaf}'),
('\u{1df00}', '\u{1df1e}'),
+ ('\u{1df25}', '\u{1df2a}'),
('\u{1e000}', '\u{1e006}'),
('\u{1e008}', '\u{1e018}'),
('\u{1e01b}', '\u{1e021}'),
('\u{1e023}', '\u{1e024}'),
('\u{1e026}', '\u{1e02a}'),
+ ('\u{1e030}', '\u{1e06d}'),
+ ('\u{1e08f}', '\u{1e08f}'),
('\u{1e100}', '\u{1e12c}'),
('\u{1e130}', '\u{1e13d}'),
('\u{1e140}', '\u{1e149}'),
('\u{1e14e}', '\u{1e14e}'),
('\u{1e290}', '\u{1e2ae}'),
('\u{1e2c0}', '\u{1e2f9}'),
+ ('\u{1e4d0}', '\u{1e4f9}'),
('\u{1e7e0}', '\u{1e7e6}'),
('\u{1e7e8}', '\u{1e7eb}'),
('\u{1e7ed}', '\u{1e7ee}'),
@@ -794,12 +805,13 @@ pub mod derived_property {
('\u{1eeab}', '\u{1eebb}'),
('\u{1fbf0}', '\u{1fbf9}'),
('\u{20000}', '\u{2a6df}'),
- ('\u{2a700}', '\u{2b738}'),
+ ('\u{2a700}', '\u{2b739}'),
('\u{2b740}', '\u{2b81d}'),
('\u{2b820}', '\u{2cea1}'),
('\u{2ceb0}', '\u{2ebe0}'),
('\u{2f800}', '\u{2fa1d}'),
('\u{30000}', '\u{3134a}'),
+ ('\u{31350}', '\u{323af}'),
('\u{e0100}', '\u{e01ef}'),
];
@@ -807,7 +819,7 @@ pub mod derived_property {
super::bsearch_range_table(c, XID_Continue_table)
}
- pub const XID_Start_table: &[(char, char)] = &[
+ static XID_Start_table: &[(char, char)] = &[
('\u{41}', '\u{5a}'),
('\u{61}', '\u{7a}'),
('\u{aa}', '\u{aa}'),
@@ -1283,6 +1295,7 @@ pub mod derived_property {
('\u{111dc}', '\u{111dc}'),
('\u{11200}', '\u{11211}'),
('\u{11213}', '\u{1122b}'),
+ ('\u{1123f}', '\u{11240}'),
('\u{11280}', '\u{11286}'),
('\u{11288}', '\u{11288}'),
('\u{1128a}', '\u{1128d}'),
@@ -1345,12 +1358,16 @@ pub mod derived_property {
('\u{11d6a}', '\u{11d89}'),
('\u{11d98}', '\u{11d98}'),
('\u{11ee0}', '\u{11ef2}'),
+ ('\u{11f02}', '\u{11f02}'),
+ ('\u{11f04}', '\u{11f10}'),
+ ('\u{11f12}', '\u{11f33}'),
('\u{11fb0}', '\u{11fb0}'),
('\u{12000}', '\u{12399}'),
('\u{12400}', '\u{1246e}'),
('\u{12480}', '\u{12543}'),
('\u{12f90}', '\u{12ff0}'),
- ('\u{13000}', '\u{1342e}'),
+ ('\u{13000}', '\u{1342f}'),
+ ('\u{13441}', '\u{13446}'),
('\u{14400}', '\u{14646}'),
('\u{16800}', '\u{16a38}'),
('\u{16a40}', '\u{16a5e}'),
@@ -1373,7 +1390,9 @@ pub mod derived_property {
('\u{1aff5}', '\u{1affb}'),
('\u{1affd}', '\u{1affe}'),
('\u{1b000}', '\u{1b122}'),
+ ('\u{1b132}', '\u{1b132}'),
('\u{1b150}', '\u{1b152}'),
+ ('\u{1b155}', '\u{1b155}'),
('\u{1b164}', '\u{1b167}'),
('\u{1b170}', '\u{1b2fb}'),
('\u{1bc00}', '\u{1bc6a}'),
@@ -1411,11 +1430,14 @@ pub mod derived_property {
('\u{1d7aa}', '\u{1d7c2}'),
('\u{1d7c4}', '\u{1d7cb}'),
('\u{1df00}', '\u{1df1e}'),
+ ('\u{1df25}', '\u{1df2a}'),
+ ('\u{1e030}', '\u{1e06d}'),
('\u{1e100}', '\u{1e12c}'),
('\u{1e137}', '\u{1e13d}'),
('\u{1e14e}', '\u{1e14e}'),
('\u{1e290}', '\u{1e2ad}'),
('\u{1e2c0}', '\u{1e2eb}'),
+ ('\u{1e4d0}', '\u{1e4eb}'),
('\u{1e7e0}', '\u{1e7e6}'),
('\u{1e7e8}', '\u{1e7eb}'),
('\u{1e7ed}', '\u{1e7ee}'),
@@ -1457,12 +1479,13 @@ pub mod derived_property {
('\u{1eea5}', '\u{1eea9}'),
('\u{1eeab}', '\u{1eebb}'),
('\u{20000}', '\u{2a6df}'),
- ('\u{2a700}', '\u{2b738}'),
+ ('\u{2a700}', '\u{2b739}'),
('\u{2b740}', '\u{2b81d}'),
('\u{2b820}', '\u{2cea1}'),
('\u{2ceb0}', '\u{2ebe0}'),
('\u{2f800}', '\u{2fa1d}'),
('\u{30000}', '\u{3134a}'),
+ ('\u{31350}', '\u{323af}'),
];
pub fn XID_Start(c: char) -> bool {
diff --git a/vendor/url/.cargo-checksum.json b/vendor/url/.cargo-checksum.json
index 2c03fac5f..8a659101a 100644
--- a/vendor/url/.cargo-checksum.json
+++ b/vendor/url/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"9814ea7672535568bb8c84b23512fe0119f85a14a2cc84d2f7f0b3848c61a65c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"20c7855c364d57ea4c97889a5e8d98470a9952dade37bd9248b9a54431670e5e","src/host.rs":"88adbe3a8dc691a4e32d7ed664dc7f17f8a1a863ffa4cde4d618032a00ec6653","src/lib.rs":"30372556e2352f93fa56178b85174eb0c3a819e87b12c288b67a101f7535a712","src/origin.rs":"2b967dd04fa5852b4a89f13cc628f3bfd84d1432e9447b2d3cbc6fee8aba3738","src/parser.rs":"eab4f6c7bffc021e9722375447a259683b8257dc6dff784c715032c39d4b4923","src/path_segments.rs":"dd6b637245b2ad77ce96221df3f80c8b4ad858cd52aecc86b97166dec386882a","src/quirks.rs":"8a504a2eeb74429e3282f2628014f3af9a567284c2b08bd0360bfd72d3a17e43","src/slicing.rs":"25425fc5c4100a3a5da49d1e0b497f6536066afcc91c4ba4dff5ace0860acd40","tests/data.rs":"dace394aed466df0e8afea0037bb8c90306d30ce75efdaff39feb00dbd07fa79","tests/setters_tests.json":"486f6d129960d0d0d99b533caf9bef21113b31adcdb83296dfc4a59cd8431715","tests/unit.rs":"61e014d600aa558f4913ac7bc268d652eda67daead72b0b0cf288524b1d71d13","tests/urltestdata.json":"afe55dd9583d125305d31e152478de9cc19801006b413c5f4fb7d430c50b1d11"},"package":"a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c"} \ No newline at end of file
+{"files":{"Cargo.toml":"c861c99782bfd4be160167bf659e87792f00d7e1eb1ee072a59546143fa980f4","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"76e972ac0f4ddb116e86e10100132a783931a596e7b9872eaa31be15cd4d751d","README.md":"71b01ec6f2f4ce47235ee430ba0c41afac563403a9dbcda23a584c3e915395ac","src/host.rs":"60cd21e0b4cbb208c36eec5d40628a8bbe1d7ef13e481479b33f89cef96277ec","src/lib.rs":"c48655bc0455efecb7f7e36dfee8b92f6d96d9a1fbc5b24890ef255fb7843956","src/origin.rs":"19a4b451e8615bfef7239d2fc719c489398fe5044edb0df7c84b54eef4ceba1b","src/parser.rs":"5c05f233722560fd21899e982b9defc828ba13fbe70e7cf157a439968716c6ae","src/path_segments.rs":"dd6b637245b2ad77ce96221df3f80c8b4ad858cd52aecc86b97166dec386882a","src/quirks.rs":"82903ff9c95604409cded330e36ebba0ede91c469d1aa40fb646186e2bef0769","src/slicing.rs":"25425fc5c4100a3a5da49d1e0b497f6536066afcc91c4ba4dff5ace0860acd40","tests/data.rs":"dbd795b25fe7869b242aeeb822c736167d5b4be1f6a867f563e23977d07c8fc5","tests/debugger_visualizer.rs":"d3a9466c636ee80ec9181817a8d30ea3e0cee699776ee4b805175981e4775448","tests/setters_tests.json":"486f6d129960d0d0d99b533caf9bef21113b31adcdb83296dfc4a59cd8431715","tests/unit.rs":"9707676cd80d7c8131b9c805f03b387a36ca2b1dda84a4d567788814c8afe59f","tests/urltestdata.json":"9dca78fbbcb6fceb0584f2fae7b3bb4e8a868750f2426c359c6694aed25f2682"},"package":"0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"} \ No newline at end of file
diff --git a/vendor/url/Cargo.toml b/vendor/url/Cargo.toml
index 108b1493e..4363ae58f 100644
--- a/vendor/url/Cargo.toml
+++ b/vendor/url/Cargo.toml
@@ -3,52 +3,81 @@
# 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
+# to registry (e.g., crates.io) dependencies.
#
-# If you believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
+# 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 = "2018"
+rust-version = "1.51"
name = "url"
-version = "2.2.2"
+version = "2.3.1"
authors = ["The rust-url developers"]
-include = ["src/**/*", "LICENSE-*", "README.md", "tests/**"]
+include = [
+ "src/**/*",
+ "LICENSE-*",
+ "README.md",
+ "tests/**",
+]
description = "URL library for Rust, based on the WHATWG URL Standard"
documentation = "https://docs.rs/url"
-readme = "../README.md"
-keywords = ["url", "parser"]
-categories = ["parser-implementations", "web-programming", "encoding"]
-license = "MIT/Apache-2.0"
+readme = "README.md"
+keywords = [
+ "url",
+ "parser",
+]
+categories = [
+ "parser-implementations",
+ "web-programming",
+ "encoding",
+]
+license = "MIT OR Apache-2.0"
repository = "https://github.com/servo/rust-url"
+[[test]]
+name = "debugger_visualizer"
+path = "tests/debugger_visualizer.rs"
+test = false
+required-features = ["debugger_visualizer"]
+
[[bench]]
name = "parse_url"
path = "benches/parse_url.rs"
harness = false
+
[dependencies.form_urlencoded]
-version = "1.0.0"
+version = "1.1.0"
[dependencies.idna]
-version = "0.2.0"
-
-[dependencies.matches]
-version = "0.1"
+version = "0.3.0"
[dependencies.percent-encoding]
-version = "2.1.0"
+version = "2.2.0"
[dependencies.serde]
version = "1.0"
features = ["derive"]
optional = true
+
[dev-dependencies.bencher]
version = "0.1"
+[dev-dependencies.debugger_test]
+version = "0.1"
+
+[dev-dependencies.debugger_test_parser]
+version = "0.1"
+
[dev-dependencies.serde_json]
version = "1.0"
+
+[features]
+debugger_visualizer = []
+default = []
+expose_internals = []
+
[badges.appveyor]
repository = "Manishearth/rust-url"
diff --git a/vendor/url/LICENSE-MIT b/vendor/url/LICENSE-MIT
index 24de6b418..51d5dc7eb 100644
--- a/vendor/url/LICENSE-MIT
+++ b/vendor/url/LICENSE-MIT
@@ -1,4 +1,4 @@
-Copyright (c) 2013-2016 The rust-url developers
+Copyright (c) 2013-2022 The rust-url developers
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
diff --git a/vendor/url/README.md b/vendor/url/README.md
new file mode 100644
index 000000000..ab31bffc6
--- /dev/null
+++ b/vendor/url/README.md
@@ -0,0 +1,14 @@
+rust-url
+========
+
+[![Build status](https://github.com/servo/rust-url/workflows/CI/badge.svg)](https://github.com/servo/rust-url/actions?query=workflow%3ACI)
+[![Coverage](https://codecov.io/gh/servo/rust-url/branch/master/graph/badge.svg)](https://codecov.io/gh/servo/rust-url)
+[![Chat](https://img.shields.io/badge/chat-%23rust--url:mozilla.org-%2346BC99?logo=Matrix)](https://matrix.to/#/#rust-url:mozilla.org)
+[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE-MIT)
+[![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE-APACHE)
+
+URL library for Rust, based on the [URL Standard](https://url.spec.whatwg.org/).
+
+[Documentation](https://docs.rs/url/)
+
+Please see [UPGRADING.md](https://github.com/servo/rust-url/blob/master/UPGRADING.md) if you are upgrading from a previous version.
diff --git a/vendor/url/src/host.rs b/vendor/url/src/host.rs
index 953743649..f1921c654 100644
--- a/vendor/url/src/host.rs
+++ b/vendor/url/src/host.rs
@@ -82,7 +82,9 @@ impl Host<String> {
return parse_ipv6addr(&input[1..input.len() - 1]).map(Host::Ipv6);
}
let domain = percent_decode(input.as_bytes()).decode_utf8_lossy();
- let domain = idna::domain_to_ascii(&domain)?;
+
+ let domain = Self::domain_to_ascii(&domain)?;
+
if domain.is_empty() {
return Err(ParseError::EmptyHost);
}
@@ -90,9 +92,7 @@ impl Host<String> {
let is_invalid_domain_char = |c| {
matches!(
c,
- '\0' | '\t'
- | '\n'
- | '\r'
+ '\0'..='\u{001F}'
| ' '
| '#'
| '%'
@@ -106,12 +106,15 @@ impl Host<String> {
| '\\'
| ']'
| '^'
+ | '\u{007F}'
+ | '|'
)
};
if domain.find(is_invalid_domain_char).is_some() {
Err(ParseError::InvalidDomainCharacter)
- } else if let Some(address) = parse_ipv4addr(&domain)? {
+ } else if ends_in_a_number(&domain) {
+ let address = parse_ipv4addr(&domain)?;
Ok(Host::Ipv4(address))
} else {
Ok(Host::Domain(domain))
@@ -145,6 +148,7 @@ impl Host<String> {
| '\\'
| ']'
| '^'
+ | '|'
)
};
@@ -156,6 +160,11 @@ impl Host<String> {
))
}
}
+
+ /// convert domain with idna
+ fn domain_to_ascii(domain: &str) -> Result<String, ParseError> {
+ idna::domain_to_ascii(domain).map_err(Into::into)
+ }
}
impl<S: AsRef<str>> fmt::Display for Host<S> {
@@ -247,8 +256,33 @@ fn longest_zero_sequence(pieces: &[u16; 8]) -> (isize, isize) {
}
}
+/// <https://url.spec.whatwg.org/#ends-in-a-number-checker>
+fn ends_in_a_number(input: &str) -> bool {
+ let mut parts = input.rsplit('.');
+ let last = parts.next().unwrap();
+ let last = if last.is_empty() {
+ if let Some(last) = parts.next() {
+ last
+ } else {
+ return false;
+ }
+ } else {
+ last
+ };
+ if !last.is_empty() && last.chars().all(|c| ('0'..='9').contains(&c)) {
+ return true;
+ }
+
+ parse_ipv4number(last).is_ok()
+}
+
/// <https://url.spec.whatwg.org/#ipv4-number-parser>
+/// Ok(None) means the input is a valid number, but it overflows a `u32`.
fn parse_ipv4number(mut input: &str) -> Result<Option<u32>, ()> {
+ if input.is_empty() {
+ return Err(());
+ }
+
let mut r = 10;
if input.starts_with("0x") || input.starts_with("0X") {
input = &input[2..];
@@ -258,10 +292,10 @@ fn parse_ipv4number(mut input: &str) -> Result<Option<u32>, ()> {
r = 8;
}
- // At the moment we can't know the reason why from_str_radix fails
- // https://github.com/rust-lang/rust/issues/22639
- // So instead we check if the input looks like a real number and only return
- // an error when it's an overflow.
+ if input.is_empty() {
+ return Ok(Some(0));
+ }
+
let valid_number = match r {
8 => input.chars().all(|c| ('0'..='7').contains(&c)),
10 => input.chars().all(|c| ('0'..='9').contains(&c)),
@@ -270,50 +304,34 @@ fn parse_ipv4number(mut input: &str) -> Result<Option<u32>, ()> {
}),
_ => false,
};
-
if !valid_number {
- return Ok(None);
+ return Err(());
}
- if input.is_empty() {
- return Ok(Some(0));
- }
- if input.starts_with('+') {
- return Ok(None);
- }
match u32::from_str_radix(input, r) {
- Ok(number) => Ok(Some(number)),
- Err(_) => Err(()),
+ Ok(num) => Ok(Some(num)),
+ Err(_) => Ok(None), // The only possible error kind here is an integer overflow.
+ // The validity of the chars in the input is checked above.
}
}
/// <https://url.spec.whatwg.org/#concept-ipv4-parser>
-fn parse_ipv4addr(input: &str) -> ParseResult<Option<Ipv4Addr>> {
- if input.is_empty() {
- return Ok(None);
- }
+fn parse_ipv4addr(input: &str) -> ParseResult<Ipv4Addr> {
let mut parts: Vec<&str> = input.split('.').collect();
if parts.last() == Some(&"") {
parts.pop();
}
if parts.len() > 4 {
- return Ok(None);
+ return Err(ParseError::InvalidIpv4Address);
}
let mut numbers: Vec<u32> = Vec::new();
- let mut overflow = false;
for part in parts {
- if part.is_empty() {
- return Ok(None);
- }
match parse_ipv4number(part) {
Ok(Some(n)) => numbers.push(n),
- Ok(None) => return Ok(None),
- Err(()) => overflow = true,
+ Ok(None) => return Err(ParseError::InvalidIpv4Address), // u32 overflow
+ Err(()) => return Err(ParseError::InvalidIpv4Address),
};
}
- if overflow {
- return Err(ParseError::InvalidIpv4Address);
- }
let mut ipv4 = numbers.pop().expect("a non-empty list of numbers");
// Equivalent to: ipv4 >= 256 ** (4 − numbers.len())
if ipv4 > u32::max_value() >> (8 * numbers.len() as u32) {
@@ -325,7 +343,7 @@ fn parse_ipv4addr(input: &str) -> ParseResult<Option<Ipv4Addr>> {
for (counter, n) in numbers.iter().enumerate() {
ipv4 += n << (8 * (3 - counter as u32))
}
- Ok(Some(Ipv4Addr::from(ipv4)))
+ Ok(Ipv4Addr::from(ipv4))
}
/// <https://url.spec.whatwg.org/#concept-ipv6-parser>
diff --git a/vendor/url/src/lib.rs b/vendor/url/src/lib.rs
index 42793cf48..6dc09d12f 100644
--- a/vendor/url/src/lib.rs
+++ b/vendor/url/src/lib.rs
@@ -118,12 +118,16 @@ See [serde documentation](https://serde.rs) for more information.
```toml
url = { version = "2", features = ["serde"] }
```
+
*/
-#![doc(html_root_url = "https://docs.rs/url/2.2.2")]
+#![doc(html_root_url = "https://docs.rs/url/2.3.1")]
+#![cfg_attr(
+ feature = "debugger_visualizer",
+ feature(debugger_visualizer),
+ debugger_visualizer(natvis_file = "../../debug_metadata/url.natvis")
+)]
-#[macro_use]
-extern crate matches;
pub use form_urlencoded;
#[cfg(feature = "serde")]
@@ -460,7 +464,7 @@ impl Url {
}
// Add the filename if they are not the same
- if base_filename != url_filename {
+ if !relative.is_empty() || base_filename != url_filename {
// If the URIs filename is empty this means that it was a directory
// so we'll have to append a '/'.
//
@@ -1234,14 +1238,9 @@ impl Url {
/// # }
/// # run().unwrap();
/// ```
- #[allow(clippy::manual_strip)] // introduced in 1.45, MSRV is 1.36
pub fn path_segments(&self) -> Option<str::Split<'_, char>> {
let path = self.path();
- if path.starts_with('/') {
- Some(path[1..].split('/'))
- } else {
- None
- }
+ path.strip_prefix('/').map(|remainder| remainder.split('/'))
}
/// Return this URL’s query string, if any, as a percent-encoded ASCII string.
@@ -1304,7 +1303,7 @@ impl Url {
/// # Ok(())
/// # }
/// # run().unwrap();
- ///
+ /// ```
#[inline]
pub fn query_pairs(&self) -> form_urlencoded::Parse<'_> {
@@ -1351,7 +1350,7 @@ impl Url {
}
fn mutate<F: FnOnce(&mut Parser<'_>) -> R, R>(&mut self, f: F) -> R {
- let mut parser = Parser::for_setter(mem::replace(&mut self.serialization, String::new()));
+ let mut parser = Parser::for_setter(mem::take(&mut self.serialization));
let result = f(&mut parser);
self.serialization = parser.serialization;
result
@@ -1541,6 +1540,19 @@ impl Url {
/// url.set_path("data/report.csv");
/// assert_eq!(url.as_str(), "https://example.com/data/report.csv");
/// assert_eq!(url.path(), "/data/report.csv");
+ ///
+ /// // `set_path` percent-encodes the given string if it's not already percent-encoded.
+ /// let mut url = Url::parse("https://example.com")?;
+ /// url.set_path("api/some comments");
+ /// assert_eq!(url.as_str(), "https://example.com/api/some%20comments");
+ /// assert_eq!(url.path(), "/api/some%20comments");
+ ///
+ /// // `set_path` will not double percent-encode the string if it's already percent-encoded.
+ /// let mut url = Url::parse("https://example.com")?;
+ /// url.set_path("api/some%20comments");
+ /// assert_eq!(url.as_str(), "https://example.com/api/some%20comments");
+ /// assert_eq!(url.path(), "/api/some%20comments");
+ ///
/// # Ok(())
/// # }
/// # run().unwrap();
@@ -1792,8 +1804,10 @@ impl Url {
return Err(ParseError::SetHostOnCannotBeABaseUrl);
}
+ let scheme_type = SchemeType::from(self.scheme());
+
if let Some(host) = host {
- if host.is_empty() && SchemeType::from(self.scheme()).is_special() {
+ if host.is_empty() && scheme_type.is_special() && !scheme_type.is_file() {
return Err(ParseError::EmptyHost);
}
let mut host_substr = host;
@@ -1817,15 +1831,20 @@ impl Url {
self.set_host_internal(Host::parse_opaque(host_substr)?, None);
}
} else if self.has_host() {
- let scheme_type = SchemeType::from(self.scheme());
- if scheme_type.is_special() {
+ if scheme_type.is_special() && !scheme_type.is_file() {
return Err(ParseError::EmptyHost);
} else if self.serialization.len() == self.path_start as usize {
self.serialization.push('/');
}
debug_assert!(self.byte_at(self.scheme_end) == b':');
debug_assert!(self.byte_at(self.path_start) == b'/');
- let new_path_start = self.scheme_end + 1;
+
+ let new_path_start = if scheme_type.is_file() {
+ self.scheme_end + 3
+ } else {
+ self.scheme_end + 1
+ };
+
self.serialization
.drain(new_path_start as usize..self.path_start as usize);
let offset = self.path_start - new_path_start;
@@ -2127,7 +2146,7 @@ impl Url {
///
/// # Examples
///
- /// Change the URL’s scheme from `https` to `foo`:
+ /// Change the URL’s scheme from `https` to `http`:
///
/// ```
/// use url::Url;
@@ -2298,7 +2317,7 @@ impl Url {
/// # run().unwrap();
/// # }
/// ```
- #[cfg(any(unix, windows, target_os = "redox"))]
+ #[cfg(any(unix, windows, target_os = "redox", target_os = "wasi"))]
#[allow(clippy::result_unit_err)]
pub fn from_file_path<P: AsRef<Path>>(path: P) -> Result<Url, ()> {
let mut serialization = "file://".to_owned();
@@ -2335,7 +2354,7 @@ impl Url {
///
/// Note that `std::path` does not consider trailing slashes significant
/// and usually does not include them (e.g. in `Path::parent()`).
- #[cfg(any(unix, windows, target_os = "redox"))]
+ #[cfg(any(unix, windows, target_os = "redox", target_os = "wasi"))]
#[allow(clippy::result_unit_err)]
pub fn from_directory_path<P: AsRef<Path>>(path: P) -> Result<Url, ()> {
let mut url = Url::from_file_path(path)?;
@@ -2452,7 +2471,7 @@ impl Url {
/// (That is, if the percent-decoded path contains a NUL byte or,
/// for a Windows path, is not UTF-8.)
#[inline]
- #[cfg(any(unix, windows, target_os = "redox"))]
+ #[cfg(any(unix, windows, target_os = "redox", target_os = "wasi"))]
#[allow(clippy::result_unit_err)]
pub fn to_file_path(&self) -> Result<PathBuf, ()> {
if let Some(segments) = self.path_segments() {
@@ -2511,7 +2530,7 @@ impl fmt::Display for Url {
}
}
-/// String converstion.
+/// String conversion.
impl From<Url> for String {
fn from(value: Url) -> String {
value.serialization
@@ -2656,12 +2675,15 @@ impl<'de> serde::Deserialize<'de> for Url {
}
}
-#[cfg(any(unix, target_os = "redox"))]
+#[cfg(any(unix, target_os = "redox", target_os = "wasi"))]
fn path_to_file_url_segments(
path: &Path,
serialization: &mut String,
) -> Result<(u32, HostInternal), ()> {
+ #[cfg(any(unix, target_os = "redox"))]
use std::os::unix::prelude::OsStrExt;
+ #[cfg(target_os = "wasi")]
+ use std::os::wasi::prelude::OsStrExt;
if !path.is_absolute() {
return Err(());
}
@@ -2706,6 +2728,7 @@ fn path_to_file_url_segments_windows(
let host_start = serialization.len() + 1;
let host_end;
let host_internal;
+
match components.next() {
Some(Component::Prefix(ref p)) => match p.kind() {
Prefix::Disk(letter) | Prefix::VerbatimDisk(letter) => {
@@ -2726,7 +2749,6 @@ fn path_to_file_url_segments_windows(
}
_ => return Err(()),
},
-
_ => return Err(()),
}
@@ -2735,12 +2757,15 @@ fn path_to_file_url_segments_windows(
if component == Component::RootDir {
continue;
}
+
path_only_has_prefix = false;
// FIXME: somehow work with non-unicode?
let component = component.as_os_str().to_str().ok_or(())?;
+
serialization.push('/');
serialization.extend(percent_encode(component.as_bytes(), PATH_SEGMENT));
}
+
// A windows drive letter must end with a slash.
if serialization.len() > host_start
&& parser::is_windows_drive_letter(&serialization[host_start..])
@@ -2748,16 +2773,20 @@ fn path_to_file_url_segments_windows(
{
serialization.push('/');
}
+
Ok((host_end, host_internal))
}
-#[cfg(any(unix, target_os = "redox"))]
+#[cfg(any(unix, target_os = "redox", target_os = "wasi"))]
fn file_url_segments_to_pathbuf(
host: Option<&str>,
segments: str::Split<'_, char>,
) -> Result<PathBuf, ()> {
use std::ffi::OsStr;
+ #[cfg(any(unix, target_os = "redox"))]
use std::os::unix::prelude::OsStrExt;
+ #[cfg(target_os = "wasi")]
+ use std::os::wasi::prelude::OsStrExt;
if host.is_some() {
return Err(());
@@ -2768,10 +2797,12 @@ fn file_url_segments_to_pathbuf(
} else {
Vec::new()
};
+
for segment in segments {
bytes.push(b'/');
bytes.extend(percent_decode(segment.as_bytes()));
}
+
// A windows drive letter must end with a slash.
if bytes.len() > 2
&& matches!(bytes[bytes.len() - 2], b'a'..=b'z' | b'A'..=b'Z')
@@ -2779,12 +2810,15 @@ fn file_url_segments_to_pathbuf(
{
bytes.push(b'/');
}
+
let os_str = OsStr::from_bytes(&bytes);
let path = PathBuf::from(os_str);
+
debug_assert!(
path.is_absolute(),
"to_file_path() failed to produce an absolute Path"
);
+
Ok(path)
}
diff --git a/vendor/url/src/origin.rs b/vendor/url/src/origin.rs
index be2d948b8..81193f510 100644
--- a/vendor/url/src/origin.rs
+++ b/vendor/url/src/origin.rs
@@ -9,7 +9,6 @@
use crate::host::Host;
use crate::parser::default_port;
use crate::Url;
-use idna::domain_to_unicode;
use std::sync::atomic::{AtomicUsize, Ordering};
pub fn url_origin(url: &Url) -> Origin {
@@ -93,7 +92,7 @@ impl Origin {
Origin::Tuple(ref scheme, ref host, port) => {
let host = match *host {
Host::Domain(ref domain) => {
- let (domain, _errors) = domain_to_unicode(domain);
+ let (domain, _errors) = idna::domain_to_unicode(domain);
Host::Domain(domain)
}
_ => host.clone(),
diff --git a/vendor/url/src/parser.rs b/vendor/url/src/parser.rs
index 57be11052..f5438c505 100644
--- a/vendor/url/src/parser.rs
+++ b/vendor/url/src/parser.rs
@@ -52,15 +52,12 @@ macro_rules! simple_enum_error {
///
/// This may be extended in the future so exhaustive matching is
/// discouraged with an unused variant.
- #[allow(clippy::manual_non_exhaustive)] // introduced in 1.40, MSRV is 1.36
#[derive(PartialEq, Eq, Clone, Copy, Debug)]
+ #[non_exhaustive]
pub enum ParseError {
$(
$name,
)+
- /// Unused variant enable non-exhaustive matching
- #[doc(hidden)]
- __FutureProof,
}
impl fmt::Display for ParseError {
@@ -69,9 +66,6 @@ macro_rules! simple_enum_error {
$(
ParseError::$name => fmt.write_str($description),
)+
- ParseError::__FutureProof => {
- unreachable!("Don't abuse the FutureProof!");
- }
}
}
}
@@ -105,15 +99,12 @@ macro_rules! syntax_violation_enum {
///
/// This may be extended in the future so exhaustive matching is
/// discouraged with an unused variant.
- #[allow(clippy::manual_non_exhaustive)] // introduced in 1.40, MSRV is 1.36
#[derive(PartialEq, Eq, Clone, Copy, Debug)]
+ #[non_exhaustive]
pub enum SyntaxViolation {
$(
$name,
)+
- /// Unused variant enable non-exhaustive matching
- #[doc(hidden)]
- __FutureProof,
}
impl SyntaxViolation {
@@ -122,9 +113,6 @@ macro_rules! syntax_violation_enum {
$(
SyntaxViolation::$name => $description,
)+
- SyntaxViolation::__FutureProof => {
- unreachable!("Don't abuse the FutureProof!");
- }
}
}
}
@@ -154,7 +142,7 @@ impl fmt::Display for SyntaxViolation {
}
}
-#[derive(Copy, Clone, PartialEq)]
+#[derive(Copy, Clone, PartialEq, Eq)]
pub enum SchemeType {
File,
SpecialNotFile,
@@ -1227,13 +1215,11 @@ impl<'a> Parser<'a> {
}
}
}
- // Going from &str to String to &str to please the 1.33.0 borrow checker
- let before_slash_string = if ends_with_slash {
- self.serialization[segment_start..self.serialization.len() - 1].to_owned()
+ let segment_before_slash = if ends_with_slash {
+ &self.serialization[segment_start..self.serialization.len() - 1]
} else {
- self.serialization[segment_start..self.serialization.len()].to_owned()
+ &self.serialization[segment_start..self.serialization.len()]
};
- let segment_before_slash: &str = &before_slash_string;
match segment_before_slash {
// If buffer is a double-dot path segment, shorten url’s path,
".." | "%2e%2e" | "%2e%2E" | "%2E%2e" | "%2E%2E" | "%2e." | "%2E." | ".%2e"
@@ -1292,7 +1278,7 @@ impl<'a> Parser<'a> {
//FIXME: log violation
let path = self.serialization.split_off(path_start);
self.serialization.push('/');
- self.serialization.push_str(&path.trim_start_matches('/'));
+ self.serialization.push_str(path.trim_start_matches('/'));
}
input
@@ -1423,7 +1409,8 @@ impl<'a> Parser<'a> {
scheme_end: u32,
mut input: Input<'i>,
) -> Option<Input<'i>> {
- let mut query = String::new(); // FIXME: use a streaming decoder instead
+ let len = input.chars.as_str().len();
+ let mut query = String::with_capacity(len); // FIXME: use a streaming decoder instead
let mut remaining = None;
while let Some(c) = input.next() {
if c == '#' && self.context == Context::UrlParser {
@@ -1563,17 +1550,17 @@ fn is_normalized_windows_drive_letter(segment: &str) -> bool {
is_windows_drive_letter(segment) && segment.as_bytes()[1] == b':'
}
-/// Wether the scheme is file:, the path has a single segment, and that segment
+/// Whether the scheme is file:, the path has a single segment, and that segment
/// is a Windows drive letter
#[inline]
pub fn is_windows_drive_letter(segment: &str) -> bool {
segment.len() == 2 && starts_with_windows_drive_letter(segment)
}
-/// Wether path starts with a root slash
+/// Whether path starts with a root slash
/// and a windows drive letter eg: "/c:" or "/a:/"
fn path_starts_with_windows_drive_letter(s: &str) -> bool {
- if let Some(c) = s.as_bytes().get(0) {
+ if let Some(c) = s.as_bytes().first() {
matches!(c, b'/' | b'\\' | b'?' | b'#') && starts_with_windows_drive_letter(&s[1..])
} else {
false
diff --git a/vendor/url/src/quirks.rs b/vendor/url/src/quirks.rs
index 0dbc6eb44..0674ebb62 100644
--- a/vendor/url/src/quirks.rs
+++ b/vendor/url/src/quirks.rs
@@ -14,6 +14,49 @@
use crate::parser::{default_port, Context, Input, Parser, SchemeType};
use crate::{Host, ParseError, Position, Url};
+/// Internal components / offsets of a URL.
+///
+/// https://user@pass:example.com:1234/foo/bar?baz#quux
+/// | | | | ^^^^| | |
+/// | | | | | | | `----- fragment_start
+/// | | | | | | `--------- query_start
+/// | | | | | `----------------- path_start
+/// | | | | `--------------------- port
+/// | | | `----------------------- host_end
+/// | | `---------------------------------- host_start
+/// | `--------------------------------------- username_end
+/// `---------------------------------------------- scheme_end
+#[derive(Copy, Clone)]
+#[cfg(feature = "expose_internals")]
+pub struct InternalComponents {
+ pub scheme_end: u32,
+ pub username_end: u32,
+ pub host_start: u32,
+ pub host_end: u32,
+ pub port: Option<u16>,
+ pub path_start: u32,
+ pub query_start: Option<u32>,
+ pub fragment_start: Option<u32>,
+}
+
+/// Internal component / parsed offsets of the URL.
+///
+/// This can be useful for implementing efficient serialization
+/// for the URL.
+#[cfg(feature = "expose_internals")]
+pub fn internal_components(url: &Url) -> InternalComponents {
+ InternalComponents {
+ scheme_end: url.scheme_end,
+ username_end: url.username_end,
+ host_start: url.host_start,
+ host_end: url.host_end,
+ port: url.port,
+ path_start: url.path_start,
+ query_start: url.query_start,
+ fragment_start: url.fragment_start,
+ }
+}
+
/// https://url.spec.whatwg.org/#dom-url-domaintoascii
pub fn domain_to_ascii(domain: &str) -> String {
match Host::parse(domain) {
@@ -138,14 +181,10 @@ pub fn set_host(url: &mut Url, new_host: &str) -> Result<(), ()> {
}
}
// Make sure we won't set an empty host to a url with a username or a port
- if host == Host::Domain("".to_string()) {
- if !username(&url).is_empty() {
- return Err(());
- } else if let Some(Some(_)) = opt_port {
- return Err(());
- } else if url.port().is_some() {
- return Err(());
- }
+ if host == Host::Domain("".to_string())
+ && (!username(url).is_empty() || matches!(opt_port, Some(Some(_))) || url.port().is_some())
+ {
+ return Err(());
}
url.set_host_internal(host, opt_port);
Ok(())
@@ -177,10 +216,10 @@ pub fn set_hostname(url: &mut Url, new_hostname: &str) -> Result<(), ()> {
// Empty host on special not file url
if SchemeType::from(url.scheme()) == SchemeType::SpecialNotFile
// Port with an empty host
- ||!port(&url).is_empty()
+ ||!port(url).is_empty()
// Empty host that includes credentials
|| !url.username().is_empty()
- || !url.password().unwrap_or(&"").is_empty()
+ || !url.password().unwrap_or("").is_empty()
{
return Err(());
}
diff --git a/vendor/url/tests/data.rs b/vendor/url/tests/data.rs
index b72c33306..f4001ca2b 100644
--- a/vendor/url/tests/data.rs
+++ b/vendor/url/tests/data.rs
@@ -8,7 +8,6 @@
//! Data-driven tests
-use std::ops::Deref;
use std::str::FromStr;
use serde_json::Value;
@@ -16,7 +15,20 @@ use url::{quirks, Url};
#[test]
fn urltestdata() {
- // Copied form https://github.com/w3c/web-platform-tests/blob/master/url/
+ let idna_skip_inputs = [
+ "http://www.foo。bar.com",
+ "http://Go.com",
+ "http://你好你好",
+ "https://faß.ExAmPlE/",
+ "http://0Xc0.0250.01",
+ "ftp://%e2%98%83",
+ "https://%e2%98%83",
+ "file://a\u{ad}b/p",
+ "file://a%C2%ADb/p",
+ "http://GOO\u{200b}\u{2060}\u{feff}goo.com",
+ ];
+
+ // Copied from https://github.com/web-platform-tests/wpt/blob/master/url/
let mut json = Value::from_str(include_str!("urltestdata.json"))
.expect("JSON parse error in urltestdata.json");
@@ -26,25 +38,39 @@ fn urltestdata() {
continue; // ignore comments
}
- let base = entry.take_string("base");
+ let maybe_base = entry
+ .take_key("base")
+ .expect("missing base key")
+ .maybe_string();
let input = entry.take_string("input");
let failure = entry.take_key("failure").is_some();
- let base = match Url::parse(&base) {
- Ok(base) => base,
- Err(_) if failure => continue,
- Err(message) => {
- eprint_failure(
- format!(" failed: error parsing base {:?}: {}", base, message),
- &format!("parse base for {:?}", input),
- None,
- );
- passed = false;
+ {
+ if idna_skip_inputs.contains(&input.as_str()) {
continue;
}
+ }
+
+ let res = if let Some(base) = maybe_base {
+ let base = match Url::parse(&base) {
+ Ok(base) => base,
+ Err(_) if failure => continue,
+ Err(message) => {
+ eprint_failure(
+ format!(" failed: error parsing base {:?}: {}", base, message),
+ &format!("parse base for {:?}", input),
+ None,
+ );
+ passed = false;
+ continue;
+ }
+ };
+ base.join(&input)
+ } else {
+ Url::parse(&input)
};
- let url = match (base.join(&input), failure) {
+ let url = match (res, failure) {
(Ok(url), false) => url,
(Err(_), true) => continue,
(Err(message), false) => {
@@ -91,7 +117,6 @@ fn urltestdata() {
assert!(passed)
}
-#[allow(clippy::option_as_ref_deref)] // introduced in 1.40, MSRV is 1.36
#[test]
fn setters_tests() {
let mut json = Value::from_str(include_str!("setters_tests.json"))
@@ -106,15 +131,22 @@ fn setters_tests() {
let mut tests = json.take_key(attr).unwrap();
for mut test in tests.as_array_mut().unwrap().drain(..) {
let comment = test.take_key("comment").map(|s| s.string());
+ {
+ if let Some(comment) = comment.as_ref() {
+ if comment.starts_with("IDNA Nontransitional_Processing") {
+ continue;
+ }
+ }
+ }
let href = test.take_string("href");
let new_value = test.take_string("new_value");
let name = format!("{:?}.{} = {:?}", href, attr, new_value);
let mut expected = test.take_key("expected").unwrap();
let mut url = Url::parse(&href).unwrap();
- let comment_ref = comment.as_ref().map(|s| s.deref());
+ let comment_ref = comment.as_deref();
passed &= check_invariants(&url, &name, comment_ref);
- let _ = set(&mut url, attr, &new_value);
+ set(&mut url, attr, &new_value);
for attr in ATTRIBS {
if let Some(value) = expected.take_key(attr) {
@@ -153,6 +185,7 @@ fn check_invariants(url: &Url, name: &str, comment: Option<&str>) -> bool {
trait JsonExt {
fn take_key(&mut self, key: &str) -> Option<Value>;
fn string(self) -> String;
+ fn maybe_string(self) -> Option<String>;
fn take_string(&mut self, key: &str) -> String;
}
@@ -162,10 +195,14 @@ impl JsonExt for Value {
}
fn string(self) -> String {
- if let Value::String(s) = self {
- s
- } else {
- panic!("Not a Value::String")
+ self.maybe_string().expect("")
+ }
+
+ fn maybe_string(self) -> Option<String> {
+ match self {
+ Value::String(s) => Some(s),
+ Value::Null => None,
+ _ => panic!("Not a Value::String or Value::Null"),
}
}
diff --git a/vendor/url/tests/debugger_visualizer.rs b/vendor/url/tests/debugger_visualizer.rs
new file mode 100644
index 000000000..4558e0701
--- /dev/null
+++ b/vendor/url/tests/debugger_visualizer.rs
@@ -0,0 +1,102 @@
+use debugger_test::debugger_test;
+use url::Url;
+
+#[inline(never)]
+fn __break() {}
+
+#[debugger_test(
+ debugger = "cdb",
+ commands = "
+ .nvlist
+
+ dx base_url
+
+ dx url_with_non_special_scheme
+
+ dx url_with_user_pass_port_query_fragments
+
+ dx url_blob
+
+ dx url_with_base
+
+ dx url_with_base_replaced
+
+ dx url_with_comma",
+ expected_statements = r#"
+ pattern:debugger_visualizer-.*\.exe \(embedded NatVis ".*-[0-9]+\.natvis"\)
+
+ base_url : "http://example.org/foo/bar" [Type: url::Url]
+ [<Raw View>] [Type: url::Url]
+ [scheme] : "http"
+ [host] : "example.org"
+ [path] : "/foo/bar"
+
+ url_with_non_special_scheme : "non-special://test/x" [Type: url::Url]
+ [<Raw View>] [Type: url::Url]
+ [scheme] : "non-special"
+ [host] : "test"
+ [path] : "/x"
+
+ url_with_user_pass_port_query_fragments : "http://user:pass@foo:21/bar;par?b#c" [Type: url::Url]
+ [<Raw View>] [Type: url::Url]
+ [scheme] : "http"
+ [username] : "user"
+ [host] : "foo"
+ [port] : 21
+ [path] : "/bar;par"
+ [query] : "b"
+ [fragment] : "c"
+
+ url_blob : "blob:https://example.com:443/" [Type: url::Url]
+ [<Raw View>] [Type: url::Url]
+ [scheme] : "blob"
+ [path] : "https://example.com:443/"
+
+ url_with_base : "http://example.org/a%2fc" [Type: url::Url]
+ [<Raw View>] [Type: url::Url]
+ [scheme] : "http"
+ [host] : "example.org"
+ [path] : "/a%2fc"
+
+ url_with_base_replaced : "http://[::7f00:1]/" [Type: url::Url]
+ [<Raw View>] [Type: url::Url]
+ [scheme] : "http"
+ [host] : "[::7f00:1]"
+ [path] : "/"
+
+ url_with_comma : "data:text/html,test#test" [Type: url::Url]
+ [<Raw View>] [Type: url::Url]
+ [scheme] : "data"
+ [path] : "text/html,test"
+ [fragment] : "test"
+ "#
+)]
+fn test_url_visualizer() {
+ // Copied from https://github.com/web-platform-tests/wpt/blob/master/url/
+ let base_url = Url::parse("http://example.org/foo/bar").unwrap();
+ assert_eq!(base_url.as_str(), "http://example.org/foo/bar");
+
+ let url_with_non_special_scheme = Url::parse("non-special://:@test/x").unwrap();
+ assert_eq!(url_with_non_special_scheme.as_str(), "non-special://test/x");
+
+ let url_with_user_pass_port_query_fragments =
+ Url::parse("http://user:pass@foo:21/bar;par?b#c").unwrap();
+ assert_eq!(
+ url_with_user_pass_port_query_fragments.as_str(),
+ "http://user:pass@foo:21/bar;par?b#c"
+ );
+
+ let url_blob = Url::parse("blob:https://example.com:443/").unwrap();
+ assert_eq!(url_blob.as_str(), "blob:https://example.com:443/");
+
+ let url_with_base = base_url.join("/a%2fc").unwrap();
+ assert_eq!(url_with_base.as_str(), "http://example.org/a%2fc");
+
+ let url_with_base_replaced = base_url.join("http://[::127.0.0.1]").unwrap();
+ assert_eq!(url_with_base_replaced.as_str(), "http://[::7f00:1]/");
+
+ let url_with_comma = base_url.join("data:text/html,test#test").unwrap();
+ assert_eq!(url_with_comma.as_str(), "data:text/html,test#test");
+
+ __break();
+}
diff --git a/vendor/url/tests/unit.rs b/vendor/url/tests/unit.rs
index 13055a473..55ff59ada 100644
--- a/vendor/url/tests/unit.rs
+++ b/vendor/url/tests/unit.rs
@@ -43,6 +43,14 @@ fn test_set_empty_host() {
assert_eq!(base.as_str(), "moz:/baz");
base.set_host(Some("servo")).unwrap();
assert_eq!(base.as_str(), "moz://servo/baz");
+
+ let mut base: Url = "file://server/share/foo/bar".parse().unwrap();
+ base.set_host(None).unwrap();
+ assert_eq!(base.as_str(), "file:///share/foo/bar");
+
+ let mut base: Url = "file://server/share/foo/bar".parse().unwrap();
+ base.set_host(Some("foo")).unwrap();
+ assert_eq!(base.as_str(), "file://foo/share/foo/bar");
}
#[test]
@@ -256,7 +264,6 @@ fn host() {
0x2001, 0x0db8, 0x85a3, 0x08d3, 0x1319, 0x8a2e, 0x0370, 0x7344,
)),
);
- assert_host("http://1.35.+33.49", Host::Domain("1.35.+33.49"));
assert_host(
"http://[::]",
Host::Ipv6(Ipv6Addr::new(0, 0, 0, 0, 0, 0, 0, 0)),
@@ -271,7 +278,8 @@ fn host() {
);
assert_host("http://0x1232131", Host::Ipv4(Ipv4Addr::new(1, 35, 33, 49)));
assert_host("http://111", Host::Ipv4(Ipv4Addr::new(0, 0, 0, 111)));
- assert_host("http://2..2.3", Host::Domain("2..2.3"));
+ assert!(Url::parse("http://1.35.+33.49").is_err());
+ assert!(Url::parse("http://2..2.3").is_err());
assert!(Url::parse("http://42.0x1232131").is_err());
assert!(Url::parse("http://192.168.0.257").is_err());
@@ -720,6 +728,34 @@ fn test_domain_encoding_quirks() {
}
}
+#[cfg(feature = "expose_internals")]
+#[test]
+fn test_expose_internals() {
+ use url::quirks::internal_components;
+ use url::quirks::InternalComponents;
+
+ let url = Url::parse("https://example.com/path/file.ext?key=val&key2=val2#fragment").unwrap();
+ let InternalComponents {
+ scheme_end,
+ username_end,
+ host_start,
+ host_end,
+ port,
+ path_start,
+ query_start,
+ fragment_start,
+ } = internal_components(&url);
+
+ assert_eq!(scheme_end, 5);
+ assert_eq!(username_end, 8);
+ assert_eq!(host_start, 8);
+ assert_eq!(host_end, 19);
+ assert_eq!(port, None);
+ assert_eq!(path_start, 19);
+ assert_eq!(query_start, Some(33));
+ assert_eq!(fragment_start, Some(51));
+}
+
#[test]
fn test_windows_unc_path() {
if !cfg!(windows) {
@@ -796,7 +832,7 @@ fn test_syntax_violation_callback_types() {
("file:/foo.txt", ExpectedFileDoubleSlash, "expected // after file:"),
("file://mozilla.org/c:/file.txt", FileWithHostAndWindowsDrive, "file: with host and Windows drive letter"),
("http://mozilla.org/^", NonUrlCodePoint, "non-URL code point"),
- ("http://mozilla.org/#\00", NullInFragment, "NULL characters are ignored in URL fragment identifiers"),
+ ("http://mozilla.org/#\x000", NullInFragment, "NULL characters are ignored in URL fragment identifiers"),
("http://mozilla.org/%1", PercentDecode, "expected 2 hex digits after %"),
("http://mozilla.org\t/foo", TabOrNewlineIgnored, "tabs or newlines are ignored in URLs"),
("http://user@:pass@mozilla.org", UnencodedAtSign, "unencoded @ sign in username or password")
@@ -1081,6 +1117,16 @@ fn test_make_relative() {
"http://127.0.0.1:8080/test/video?baz=meh#456",
"video?baz=meh#456",
),
+ (
+ "http://127.0.0.1:8080/file.txt",
+ "http://127.0.0.1:8080/test/file.txt",
+ "test/file.txt",
+ ),
+ (
+ "http://127.0.0.1:8080/not_equal.txt",
+ "http://127.0.0.1:8080/test/file.txt",
+ "test/file.txt",
+ ),
];
for (base, uri, relative) in &tests {
@@ -1093,7 +1139,7 @@ fn test_make_relative() {
base, uri, relative
);
assert_eq!(
- base_uri.join(&relative).unwrap().as_str(),
+ base_uri.join(relative).unwrap().as_str(),
*uri,
"base: {}, uri: {}, relative: {}",
base,
diff --git a/vendor/url/tests/urltestdata.json b/vendor/url/tests/urltestdata.json
index 554e61914..4265f5928 100644
--- a/vendor/url/tests/urltestdata.json
+++ b/vendor/url/tests/urltestdata.json
@@ -1,6 +1,6 @@
[
"# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/script-tests/segments.js",
- "# AS OF https://github.com/jsdom/whatwg-url/commit/35f04dfd3048cf6362f4398745bb13375c5020c2",
+ "# AS OF https://github.com/web-platform-tests/wpt/commit/2a64dae4641fbd61bd4257df460e188f425b492e",
{
"input": "http://example\t.\norg",
"base": "http://example.org/foo/bar",
@@ -541,6 +541,36 @@
"hash": ""
},
{
+ "input": "\\x",
+ "base": "http://example.org/foo/bar",
+ "href": "http://example.org/x",
+ "origin": "http://example.org",
+ "protocol": "http:",
+ "username": "",
+ "password": "",
+ "host": "example.org",
+ "hostname": "example.org",
+ "port": "",
+ "pathname": "/x",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "\\\\x\\hello",
+ "base": "http://example.org/foo/bar",
+ "href": "http://x/hello",
+ "origin": "http://x",
+ "protocol": "http:",
+ "username": "",
+ "password": "",
+ "host": "x",
+ "hostname": "x",
+ "port": "",
+ "pathname": "/hello",
+ "search": "",
+ "hash": ""
+ },
+ {
"input": "::",
"base": "http://example.org/foo/bar",
"href": "http://example.org/foo/::",
@@ -3157,7 +3187,8 @@
{
"input": "http:/:@/www.example.com",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "http://user@/www.example.com",
@@ -3167,12 +3198,14 @@
{
"input": "http:@/www.example.com",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "http:/@/www.example.com",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "http://@/www.example.com",
@@ -3182,17 +3215,20 @@
{
"input": "https:@/www.example.com",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "http:a:b@/www.example.com",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "http:/a:b@/www.example.com",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "http://a:b@/www.example.com",
@@ -3202,7 +3238,8 @@
{
"input": "http::@/www.example.com",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "http:a:@www.example.com",
@@ -3267,12 +3304,14 @@
{
"input": "http:@:www.example.com",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "http:/@:www.example.com",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "http://@:www.example.com",
@@ -3646,6 +3685,38 @@
"search": "?%EF%BF%BD",
"hash": "#%EF%BF%BD"
},
+ "Domain is ASCII, but a label is invalid IDNA",
+ {
+ "input": "http://a.b.c.xn--pokxncvks",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://10.0.0.xn--pokxncvks",
+ "base": "about:blank",
+ "failure": true
+ },
+ "IDNA labels should be matched case-insensitively",
+ {
+ "input": "http://a.b.c.XN--pokxncvks",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a.b.c.Xn--pokxncvks",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://10.0.0.XN--pokxncvks",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://10.0.0.xN--pokxncvks",
+ "base": "about:blank",
+ "failure": true
+ },
"Test name prepping, fullwidth input should be converted to ASCII and NOT IDN-ized. This is 'Go' in fullwidth UTF-8/UTF-16.",
{
"input": "http://Go.com",
@@ -3847,21 +3918,6 @@
"search": "",
"hash": ""
},
- {
- "input": "http://0..0x300/",
- "base": "about:blank",
- "href": "http://0..0x300/",
- "origin": "http://0..0x300",
- "protocol": "http:",
- "username": "",
- "password": "",
- "host": "0..0x300",
- "hostname": "0..0x300",
- "port": "",
- "pathname": "/",
- "search": "",
- "hash": ""
- },
"Broken IPv6",
{
"input": "http://[www.google.com]/",
@@ -4483,16 +4539,6 @@
"hash": ""
},
{
- "input": "sc://\u0000/",
- "base": "about:blank",
- "failure": true
- },
- {
- "input": "sc:// /",
- "base": "about:blank",
- "failure": true
- },
- {
"input": "sc://%/",
"base": "about:blank",
"href": "sc://%/",
@@ -4527,21 +4573,6 @@
"failure": true
},
{
- "input": "sc://[/",
- "base": "about:blank",
- "failure": true
- },
- {
- "input": "sc://\\/",
- "base": "about:blank",
- "failure": true
- },
- {
- "input": "sc://]/",
- "base": "about:blank",
- "failure": true
- },
- {
"input": "x",
"base": "sc://ñ",
"href": "sc://%C3%B1/x",
@@ -4619,7 +4650,7 @@
"search": "",
"hash": ""
},
- "# unknown scheme with non-URL characters in the path",
+ "# unknown scheme with non-URL characters",
{
"input": "wow:\uFFFF",
"base": "about:blank",
@@ -4637,6 +4668,250 @@
},
"Forbidden host code points",
{
+ "input": "sc://a\u0000b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://a b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://a<b",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://a>b",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://a[b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://a\\b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://a]b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://a^b",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "sc://a|b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ "Forbidden host codepoints: tabs and newlines are removed during preprocessing",
+ {
+ "input": "foo://ho\u0009st/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href":"foo://host/",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "foo:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "foo://ho\u000Ast/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href":"foo://host/",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "foo:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "foo://ho\u000Dst/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href":"foo://host/",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "foo:",
+ "search": "",
+ "username": ""
+ },
+ "Forbidden domain code-points",
+ {
+ "input": "http://a\u0000b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0001b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0002b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0003b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0004b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0005b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0006b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0007b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0008b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u000Bb/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u000Cb/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u000Eb/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u000Fb/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0010b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0011b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0012b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0013b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0014b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0015b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0016b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0017b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0018b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u0019b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u001Ab/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u001Bb/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u001Cb/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u001Db/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u001Eb/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u001Fb/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a%b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
"input": "http://a<b",
"base": "about:blank",
"failure": true
@@ -4647,51 +4922,330 @@
"failure": true
},
{
+ "input": "http://a[b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a]b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
"input": "http://a^b",
"base": "about:blank",
"failure": true
},
{
- "input": "non-special://a<b",
+ "input": "http://a|b/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://a\u007Fb/",
+ "base": "about:blank",
+ "failure": true
+ },
+ "Forbidden domain codepoints: tabs and newlines are removed during preprocessing",
+ {
+ "input": "http://ho\u0009st/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href":"http://host/",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "http:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "http://ho\u000Ast/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href":"http://host/",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "http:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "http://ho\u000Dst/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href":"http://host/",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "http:",
+ "search": "",
+ "username": ""
+ },
+ "Encoded forbidden domain codepoints in special URLs",
+ {
+ "input": "http://ho%00st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%01st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%02st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%03st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%04st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%05st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%06st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%07st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%08st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%09st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%0Ast/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%0Bst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%0Cst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%0Dst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%0Est/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%0Fst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%10st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%11st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%12st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%13st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%14st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%15st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%16st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%17st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%18st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%19st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%1Ast/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%1Bst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%1Cst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%1Dst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%1Est/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%1Fst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%20st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%23st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%25st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%2Fst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%3Ast/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%3Cst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%3Est/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%3Fst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%40st/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%5Bst/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://ho%5Cst/",
"base": "about:blank",
"failure": true
},
{
- "input": "non-special://a>b",
+ "input": "http://ho%5Dst/",
"base": "about:blank",
"failure": true
},
{
- "input": "non-special://a^b",
+ "input": "http://ho%7Cst/",
"base": "about:blank",
"failure": true
},
- "Allowed host code points",
{
- "input": "http://\u001F!\"$&'()*+,-.;=_`{|}~/",
+ "input": "http://ho%7Fst/",
"base": "about:blank",
- "href": "http://\u001F!\"$&'()*+,-.;=_`{|}~/",
- "origin": "http://\u001F!\"$&'()*+,-.;=_`{|}~",
+ "failure": true
+ },
+ "Allowed host/domain code points",
+ {
+ "input": "http://!\"$&'()*+,-.;=_`{}~/",
+ "base": "about:blank",
+ "href": "http://!\"$&'()*+,-.;=_`{}~/",
+ "origin": "http://!\"$&'()*+,-.;=_`{}~",
"protocol": "http:",
"username": "",
"password": "",
- "host": "\u001F!\"$&'()*+,-.;=_`{|}~",
- "hostname": "\u001F!\"$&'()*+,-.;=_`{|}~",
+ "host": "!\"$&'()*+,-.;=_`{}~",
+ "hostname": "!\"$&'()*+,-.;=_`{}~",
"port": "",
"pathname": "/",
"search": "",
"hash": ""
},
{
- "input": "sc://\u001F!\"$&'()*+,-.;=_`{|}~/",
+ "input": "sc://\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u000B\u000C\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u007F!\"$%&'()*+,-.;=_`{}~/",
"base": "about:blank",
- "href": "sc://%1F!\"$&'()*+,-.;=_`{|}~/",
+ "href": "sc://%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~/",
"origin": "null",
"protocol": "sc:",
"username": "",
"password": "",
- "host": "%1F!\"$&'()*+,-.;=_`{|}~",
- "hostname": "%1F!\"$&'()*+,-.;=_`{|}~",
+ "host": "%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~",
+ "hostname": "%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~",
"port": "",
"pathname": "/",
"search": "",
@@ -4964,6 +5518,36 @@
},
"# IPv4 parsing (via https://github.com/nodejs/node/pull/10317)",
{
+ "input": "http://1.2.3.4/",
+ "base": "http://other.com/",
+ "href": "http://1.2.3.4/",
+ "origin": "http://1.2.3.4",
+ "protocol": "http:",
+ "username": "",
+ "password": "",
+ "host": "1.2.3.4",
+ "hostname": "1.2.3.4",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "http://1.2.3.4./",
+ "base": "http://other.com/",
+ "href": "http://1.2.3.4/",
+ "origin": "http://1.2.3.4",
+ "protocol": "http:",
+ "username": "",
+ "password": "",
+ "host": "1.2.3.4",
+ "hostname": "1.2.3.4",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
+ {
"input": "http://192.168.257",
"base": "http://other.com/",
"href": "http://192.168.1.1/",
@@ -4979,6 +5563,21 @@
"hash": ""
},
{
+ "input": "http://192.168.257.",
+ "base": "http://other.com/",
+ "href": "http://192.168.1.1/",
+ "origin": "http://192.168.1.1",
+ "protocol": "http:",
+ "username": "",
+ "password": "",
+ "host": "192.168.1.1",
+ "hostname": "192.168.1.1",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
+ {
"input": "http://192.168.257.com",
"base": "http://other.com/",
"href": "http://192.168.257.com/",
@@ -5039,6 +5638,21 @@
"hash": ""
},
{
+ "input": "http://999999999.",
+ "base": "http://other.com/",
+ "href": "http://59.154.201.255/",
+ "origin": "http://59.154.201.255",
+ "protocol": "http:",
+ "username": "",
+ "password": "",
+ "host": "59.154.201.255",
+ "hostname": "59.154.201.255",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
+ {
"input": "http://999999999.com",
"base": "http://other.com/",
"href": "http://999999999.com/",
@@ -5119,21 +5733,6 @@
"failure": true
},
{
- "input": "http://256.256.256.256.256",
- "base": "http://other.com/",
- "href": "http://256.256.256.256.256/",
- "origin": "http://256.256.256.256.256",
- "protocol": "http:",
- "username": "",
- "password": "",
- "host": "256.256.256.256.256",
- "hostname": "256.256.256.256.256",
- "port": "",
- "pathname": "/",
- "search": "",
- "hash": ""
- },
- {
"input": "https://0x.0x.0",
"base": "about:blank",
"href": "https://0.0.0.0/",
@@ -5188,6 +5787,56 @@
"search": "",
"hash": ""
},
+ {
+ "input": "file://%43%3A",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "file://%43%7C",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "file://%43|",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "file://C%7C",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "file://%43%7C/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "https://%43%7C/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "asdf://%43|/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "asdf://%43%7C/",
+ "base": "about:blank",
+ "href": "asdf://%43%7C/",
+ "origin": "null",
+ "protocol": "asdf:",
+ "username": "",
+ "password": "",
+ "host": "%43%7C",
+ "hostname": "%43%7C",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
"# file URLs relative to other file URLs (via https://github.com/jsdom/whatwg-url/pull/60)",
{
"input": "pix/submit.gif",
@@ -5247,6 +5896,20 @@
"hash": ""
},
{
+ "input": "/",
+ "base": "file://h/a/b",
+ "href": "file://h/",
+ "protocol": "file:",
+ "username": "",
+ "password": "",
+ "host": "h",
+ "hostname": "h",
+ "port": "",
+ "pathname": "/",
+ "search": "",
+ "hash": ""
+ },
+ {
"input": "//d:",
"base": "file:///C:/a/b",
"href": "file:///d:",
@@ -5388,90 +6051,6 @@
},
"# File URLs and many (back)slashes",
{
- "input": "file:\\\\//",
- "base": "about:blank",
- "href": "file:///",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/",
- "search": "",
- "hash": ""
- },
- {
- "input": "file:\\\\\\\\",
- "base": "about:blank",
- "href": "file:///",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/",
- "search": "",
- "hash": ""
- },
- {
- "input": "file:\\\\\\\\?fox",
- "base": "about:blank",
- "href": "file:///?fox",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/",
- "search": "?fox",
- "hash": ""
- },
- {
- "input": "file:\\\\\\\\#guppy",
- "base": "about:blank",
- "href": "file:///#guppy",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/",
- "search": "",
- "hash": "#guppy"
- },
- {
- "input": "file://spider///",
- "base": "about:blank",
- "href": "file://spider/",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "spider",
- "hostname": "spider",
- "port": "",
- "pathname": "/",
- "search": "",
- "hash": ""
- },
- {
- "input": "file:\\\\localhost//",
- "base": "about:blank",
- "href": "file:///",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/",
- "search": "",
- "hash": ""
- },
- {
"input": "file:///localhost//cat",
"base": "about:blank",
"href": "file:///localhost//cat",
@@ -5486,48 +6065,6 @@
"hash": ""
},
{
- "input": "file://\\/localhost//cat",
- "base": "about:blank",
- "href": "file:///localhost//cat",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/localhost//cat",
- "search": "",
- "hash": ""
- },
- {
- "input": "file://localhost//a//../..//",
- "base": "about:blank",
- "href": "file:///",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/",
- "search": "",
- "hash": ""
- },
- {
- "input": "/////mouse",
- "base": "file:///elephant",
- "href": "file:///mouse",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/mouse",
- "search": "",
- "hash": ""
- },
- {
"input": "\\//pig",
"base": "file://lion/",
"href": "file:///pig",
@@ -5542,48 +6079,6 @@
"hash": ""
},
{
- "input": "\\/localhost//pig",
- "base": "file://lion/",
- "href": "file:///pig",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/pig",
- "search": "",
- "hash": ""
- },
- {
- "input": "//localhost//pig",
- "base": "file://lion/",
- "href": "file:///pig",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/pig",
- "search": "",
- "hash": ""
- },
- {
- "input": "/..//localhost//pig",
- "base": "file://lion/",
- "href": "file://lion/localhost//pig",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "lion",
- "hostname": "lion",
- "port": "",
- "pathname": "/localhost//pig",
- "search": "",
- "hash": ""
- },
- {
"input": "file://",
"base": "file://ape/",
"href": "file:///",
@@ -5628,90 +6123,6 @@
},
"# Windows drive letter handling with the 'file:' base URL",
{
- "input": "C|",
- "base": "file://host/dir/file",
- "href": "file:///C:",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/C:",
- "search": "",
- "hash": ""
- },
- {
- "input": "C|#",
- "base": "file://host/dir/file",
- "href": "file:///C:#",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/C:",
- "search": "",
- "hash": ""
- },
- {
- "input": "C|?",
- "base": "file://host/dir/file",
- "href": "file:///C:?",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/C:",
- "search": "",
- "hash": ""
- },
- {
- "input": "C|/",
- "base": "file://host/dir/file",
- "href": "file:///C:/",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/C:/",
- "search": "",
- "hash": ""
- },
- {
- "input": "C|\n/",
- "base": "file://host/dir/file",
- "href": "file:///C:/",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/C:/",
- "search": "",
- "hash": ""
- },
- {
- "input": "C|\\",
- "base": "file://host/dir/file",
- "href": "file:///C:/",
- "protocol": "file:",
- "username": "",
- "password": "",
- "host": "",
- "hostname": "",
- "port": "",
- "pathname": "/C:/",
- "search": "",
- "hash": ""
- },
- {
"input": "C",
"base": "file://host/dir/file",
"href": "file://host/dir/C",
@@ -5782,24 +6193,24 @@
"search": "",
"hash": ""
},
+ "# Copy the empty host from the input in the following cases",
{
- "input": "/c:/foo/bar",
- "base": "file://host/path",
- "href": "file:///c:/foo/bar",
+ "input": "//C:/",
+ "base": "file://host/",
+ "href": "file:///C:/",
"protocol": "file:",
"username": "",
"password": "",
"host": "",
"hostname": "",
"port": "",
- "pathname": "/c:/foo/bar",
+ "pathname": "/C:/",
"search": "",
"hash": ""
},
- "# Windows drive letter quirk with not empty host",
{
- "input": "file://example.net/C:/",
- "base": "about:blank",
+ "input": "file://C:/",
+ "base": "file://host/",
"href": "file:///C:/",
"protocol": "file:",
"username": "",
@@ -5812,8 +6223,8 @@
"hash": ""
},
{
- "input": "file://1.2.3.4/C:/",
- "base": "about:blank",
+ "input": "///C:/",
+ "base": "file://host/",
"href": "file:///C:/",
"protocol": "file:",
"username": "",
@@ -5826,8 +6237,8 @@
"hash": ""
},
{
- "input": "file://[1::8]/C:/",
- "base": "about:blank",
+ "input": "file:///C:/",
+ "base": "file://host/",
"href": "file:///C:/",
"protocol": "file:",
"username": "",
@@ -5971,7 +6382,8 @@
{
"input": "\\\\\\.\\Y:",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
"# file: drive letter cases from https://crbug.com/1078698 but lowercased",
{
@@ -6033,7 +6445,51 @@
{
"input": "\\\\\\.\\y:",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
+ },
+ "# Additional file URL tests for (https://github.com/whatwg/url/issues/405)",
+ {
+ "input": "file:///one/two",
+ "base": "file:///",
+ "href": "file:///one/two",
+ "protocol": "file:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "/one/two",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "//one/two",
+ "base": "file:///",
+ "href": "file://one/two",
+ "protocol": "file:",
+ "username": "",
+ "password": "",
+ "host": "one",
+ "hostname": "one",
+ "port": "",
+ "pathname": "/two",
+ "search": "",
+ "hash": ""
+ },
+ {
+ "input": "///one/two",
+ "base": "file:///",
+ "href": "file:///one/two",
+ "protocol": "file:",
+ "username": "",
+ "password": "",
+ "host": "",
+ "hostname": "",
+ "port": "",
+ "pathname": "/one/two",
+ "search": "",
+ "hash": ""
},
"# IPv6 tests",
{
@@ -6527,6 +6983,7 @@
"input": "blob:https://example.com:443/",
"base": "about:blank",
"href": "blob:https://example.com:443/",
+ "origin": "https://example.com",
"protocol": "blob:",
"username": "",
"password": "",
@@ -6541,6 +6998,7 @@
"input": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf",
"base": "about:blank",
"href": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf",
+ "origin": "null",
"protocol": "blob:",
"username": "",
"password": "",
@@ -6551,21 +7009,22 @@
"search": "",
"hash": ""
},
- "Invalid IPv4 radix digits",
{
- "input": "http://0177.0.0.0189",
+ "input": "blob:",
"base": "about:blank",
- "href": "http://0177.0.0.0189/",
- "protocol": "http:",
+ "href": "blob:",
+ "origin": "null",
+ "protocol": "blob:",
"username": "",
"password": "",
- "host": "0177.0.0.0189",
- "hostname": "0177.0.0.0189",
+ "host": "",
+ "hostname": "",
"port": "",
- "pathname": "/",
+ "pathname": "",
"search": "",
"hash": ""
},
+ "Invalid IPv4 radix digits",
{
"input": "http://0x7f.0.0.0x7g",
"base": "about:blank",
@@ -6760,17 +7219,20 @@
{
"input": "a",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "a/",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
{
"input": "a//",
"base": "about:blank",
- "failure": true
+ "failure": true,
+ "inputCanBeRelative": true
},
"Bases that don't fail to parse but fail to be bases",
{
@@ -6987,5 +7449,460 @@
"pathname": "/",
"search": "",
"hash": "#link"
+ },
+ "UTF-8 percent-encode of C0 control percent-encode set and supersets",
+ {
+ "input": "non-special:cannot-be-a-base-url-\u0000\u0001\u001F\u001E\u007E\u007F\u0080",
+ "base": "about:blank",
+ "hash": "",
+ "host": "",
+ "hostname": "",
+ "href": "non-special:cannot-be-a-base-url-%00%01%1F%1E~%7F%C2%80",
+ "origin": "null",
+ "password": "",
+ "pathname": "cannot-be-a-base-url-%00%01%1F%1E~%7F%C2%80",
+ "port": "",
+ "protocol": "non-special:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "https://www.example.com/path{\u007Fpath.html?query'\u007F=query#fragment<\u007Ffragment",
+ "base": "about:blank",
+ "hash": "#fragment%3C%7Ffragment",
+ "host": "www.example.com",
+ "hostname": "www.example.com",
+ "href": "https://www.example.com/path%7B%7Fpath.html?query%27%7F=query#fragment%3C%7Ffragment",
+ "origin": "https://www.example.com",
+ "password": "",
+ "pathname": "/path%7B%7Fpath.html",
+ "port": "",
+ "protocol": "https:",
+ "search": "?query%27%7F=query",
+ "username": ""
+ },
+ {
+ "input": "https://user:pass[\u007F@foo/bar",
+ "base": "http://example.org",
+ "hash": "",
+ "host": "foo",
+ "hostname": "foo",
+ "href": "https://user:pass%5B%7F@foo/bar",
+ "origin": "https://foo",
+ "password": "pass%5B%7F",
+ "pathname": "/bar",
+ "port": "",
+ "protocol": "https:",
+ "search": "",
+ "username": "user"
+ },
+ "Tests for the distinct percent-encode sets",
+ {
+ "input": "foo:// !\"$%&'()*+,-.;<=>@[\\]^_`{|}~@host/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href": "foo://%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~@host/",
+ "origin": "null",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "foo:",
+ "search": "",
+ "username": "%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~"
+ },
+ {
+ "input": "wss:// !\"$%&'()*+,-.;<=>@[]^_`{|}~@host/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href": "wss://%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~@host/",
+ "origin": "wss://host",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "wss:",
+ "search": "",
+ "username": "%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~"
+ },
+ {
+ "input": "foo://joe: !\"$%&'()*+,-.:;<=>@[\\]^_`{|}~@host/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href": "foo://joe:%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~@host/",
+ "origin": "null",
+ "password": "%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~",
+ "pathname": "/",
+ "port":"",
+ "protocol": "foo:",
+ "search": "",
+ "username": "joe"
+ },
+ {
+ "input": "wss://joe: !\"$%&'()*+,-.:;<=>@[]^_`{|}~@host/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href": "wss://joe:%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~@host/",
+ "origin": "wss://host",
+ "password": "%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~",
+ "pathname": "/",
+ "port":"",
+ "protocol": "wss:",
+ "search": "",
+ "username": "joe"
+ },
+ {
+ "input": "foo://!\"$%&'()*+,-.;=_`{}~/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "!\"$%&'()*+,-.;=_`{}~",
+ "hostname": "!\"$%&'()*+,-.;=_`{}~",
+ "href":"foo://!\"$%&'()*+,-.;=_`{}~/",
+ "origin": "null",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "foo:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "wss://!\"$&'()*+,-.;=_`{}~/",
+ "base": "about:blank",
+ "hash": "",
+ "host": "!\"$&'()*+,-.;=_`{}~",
+ "hostname": "!\"$&'()*+,-.;=_`{}~",
+ "href":"wss://!\"$&'()*+,-.;=_`{}~/",
+ "origin": "wss://!\"$&'()*+,-.;=_`{}~",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "wss:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "foo://host/ !\"$%&'()*+,-./:;<=>@[\\]^_`{|}~",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href": "foo://host/%20!%22$%&'()*+,-./:;%3C=%3E@[\\]^_%60%7B|%7D~",
+ "origin": "null",
+ "password": "",
+ "pathname": "/%20!%22$%&'()*+,-./:;%3C=%3E@[\\]^_%60%7B|%7D~",
+ "port":"",
+ "protocol": "foo:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "wss://host/ !\"$%&'()*+,-./:;<=>@[\\]^_`{|}~",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href": "wss://host/%20!%22$%&'()*+,-./:;%3C=%3E@[/]^_%60%7B|%7D~",
+ "origin": "wss://host",
+ "password": "",
+ "pathname": "/%20!%22$%&'()*+,-./:;%3C=%3E@[/]^_%60%7B|%7D~",
+ "port":"",
+ "protocol": "wss:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "foo://host/dir/? !\"$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href": "foo://host/dir/?%20!%22$%&'()*+,-./:;%3C=%3E?@[\\]^_`{|}~",
+ "origin": "null",
+ "password": "",
+ "pathname": "/dir/",
+ "port":"",
+ "protocol": "foo:",
+ "search": "?%20!%22$%&'()*+,-./:;%3C=%3E?@[\\]^_`{|}~",
+ "username": ""
+ },
+ {
+ "input": "wss://host/dir/? !\"$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
+ "base": "about:blank",
+ "hash": "",
+ "host": "host",
+ "hostname": "host",
+ "href": "wss://host/dir/?%20!%22$%&%27()*+,-./:;%3C=%3E?@[\\]^_`{|}~",
+ "origin": "wss://host",
+ "password": "",
+ "pathname": "/dir/",
+ "port":"",
+ "protocol": "wss:",
+ "search": "?%20!%22$%&%27()*+,-./:;%3C=%3E?@[\\]^_`{|}~",
+ "username": ""
+ },
+ {
+ "input": "foo://host/dir/# !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
+ "base": "about:blank",
+ "hash": "#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~",
+ "host": "host",
+ "hostname": "host",
+ "href": "foo://host/dir/#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~",
+ "origin": "null",
+ "password": "",
+ "pathname": "/dir/",
+ "port":"",
+ "protocol": "foo:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "wss://host/dir/# !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
+ "base": "about:blank",
+ "hash": "#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~",
+ "host": "host",
+ "hostname": "host",
+ "href": "wss://host/dir/#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~",
+ "origin": "wss://host",
+ "password": "",
+ "pathname": "/dir/",
+ "port":"",
+ "protocol": "wss:",
+ "search": "",
+ "username": ""
+ },
+ "Ensure that input schemes are not ignored when resolving non-special URLs",
+ {
+ "input": "abc:rootless",
+ "base": "abc://host/path",
+ "hash": "",
+ "host": "",
+ "hostname": "",
+ "href":"abc:rootless",
+ "password": "",
+ "pathname": "rootless",
+ "port":"",
+ "protocol": "abc:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "abc:rootless",
+ "base": "abc:/path",
+ "hash": "",
+ "host": "",
+ "hostname": "",
+ "href":"abc:rootless",
+ "password": "",
+ "pathname": "rootless",
+ "port":"",
+ "protocol": "abc:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "abc:rootless",
+ "base": "abc:path",
+ "hash": "",
+ "host": "",
+ "hostname": "",
+ "href":"abc:rootless",
+ "password": "",
+ "pathname": "rootless",
+ "port":"",
+ "protocol": "abc:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "abc:/rooted",
+ "base": "abc://host/path",
+ "hash": "",
+ "host": "",
+ "hostname": "",
+ "href":"abc:/rooted",
+ "password": "",
+ "pathname": "/rooted",
+ "port":"",
+ "protocol": "abc:",
+ "search": "",
+ "username": ""
+ },
+ "Empty query and fragment with blank should throw an error",
+ {
+ "input": "#",
+ "base": null,
+ "failure": true
+ },
+ {
+ "input": "?",
+ "base": null,
+ "failure": true
+ },
+ "Last component looks like a number, but not valid IPv4",
+ {
+ "input": "http://1.2.3.4.5",
+ "base": "http://other.com/",
+ "failure": true
+ },
+ {
+ "input": "http://1.2.3.4.5.",
+ "base": "http://other.com/",
+ "failure": true
+ },
+ {
+ "input": "http://0..0x300/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://0..0x300./",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://256.256.256.256.256",
+ "base": "http://other.com/",
+ "failure": true
+ },
+ {
+ "input": "http://256.256.256.256.256.",
+ "base": "http://other.com/",
+ "failure": true
+ },
+ {
+ "input": "http://1.2.3.08",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://1.2.3.08.",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://1.2.3.09",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://09.2.3.4",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://09.2.3.4.",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://01.2.3.4.5",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://01.2.3.4.5.",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://0x100.2.3.4",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://0x100.2.3.4.",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://0x1.2.3.4.5",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://0x1.2.3.4.5.",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.1.2.3.4",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.1.2.3.4.",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.2.3.4",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.2.3.4.",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.09",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.09.",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.0x4",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.0x4.",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.09..",
+ "base": "about:blank",
+ "hash": "",
+ "host": "foo.09..",
+ "hostname": "foo.09..",
+ "href":"http://foo.09../",
+ "password": "",
+ "pathname": "/",
+ "port":"",
+ "protocol": "http:",
+ "search": "",
+ "username": ""
+ },
+ {
+ "input": "http://0999999999999999999/",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.0x",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://foo.0XFfFfFfFfFfFfFfFfFfAcE123",
+ "base": "about:blank",
+ "failure": true
+ },
+ {
+ "input": "http://💩.123/",
+ "base": "about:blank",
+ "failure": true
}
]
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/.cargo-checksum.json b/vendor/wasi-0.10.2+wasi-snapshot-preview1/.cargo-checksum.json
deleted file mode 100644
index 4c858cdd5..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/.cargo-checksum.json
+++ /dev/null
@@ -1 +0,0 @@
-{"files":{"CODE_OF_CONDUCT.md":"a13aaaf393818bd91207c618724d3fb74944ca5161201822a84af951bcf655ef","CONTRIBUTING.md":"2c908a3e263dc35dfed131c02ff907cd72fafb2c2096e4ba9b1e0cbb7a1b76df","Cargo.toml":"946b521f577983feb92abbad62bd85932fe4fe26b7a61dcaba4030d242667885","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-Apache-2.0_WITH_LLVM-exception":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","ORG_CODE_OF_CONDUCT.md":"a62b69bf86e605ee1bcbb2f0a12ba79e4cebb6983a7b6491949750aecc4f2178","README.md":"c021f687a5a61d9c308581401e7aa4454585a30c418abdd02e3a1ef71daa035f","SECURITY.md":"4d75afb09dd28eb5982e3a1f768ee398d90204669ceef3240a16b31dcf04148a","src/error.rs":"270ec14e103130ac5981997ddfa616851cb596fecd48ea7212a7a59dcb110c7f","src/lib.rs":"ce2e7ee6a6e4d5900f3835568b168afc70870d601b2bb94f1a6b9ddd2f046c3a","src/lib_generated.rs":"f92f8c522904454c5909843bc2db4c34af48ca2eae8634cc77dc51d89fa5eae2"},"package":"fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"} \ No newline at end of file
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/CODE_OF_CONDUCT.md b/vendor/wasi-0.10.2+wasi-snapshot-preview1/CODE_OF_CONDUCT.md
deleted file mode 100644
index 5c5ebdd25..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# Contributor Covenant Code of Conduct
-
-*Note*: this Code of Conduct pertains to individuals' behavior. Please also see the [Organizational Code of Conduct][OCoC].
-
-## Our Pledge
-
-In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
-
-## Our Standards
-
-Examples of behavior that contributes to creating a positive environment include:
-
-* Using welcoming and inclusive language
-* Being respectful of differing viewpoints and experiences
-* Gracefully accepting constructive criticism
-* Focusing on what is best for the community
-* Showing empathy towards other community members
-
-Examples of unacceptable behavior by participants include:
-
-* The use of sexualized language or imagery and unwelcome sexual attention or advances
-* Trolling, insulting/derogatory comments, and personal or political attacks
-* Public or private harassment
-* Publishing others' private information, such as a physical or electronic address, without explicit permission
-* Other conduct which could reasonably be considered inappropriate in a professional setting
-
-## Our Responsibilities
-
-Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
-
-Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
-
-## Scope
-
-This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
-
-## Enforcement
-
-Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the Bytecode Alliance CoC team at [report@bytecodealliance.org](mailto:report@bytecodealliance.org). The CoC team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The CoC team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
-
-Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the Bytecode Alliance's leadership.
-
-## Attribution
-
-This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
-
-[OCoC]: ORG_CODE_OF_CONDUCT.md
-[homepage]: https://www.contributor-covenant.org
-[version]: https://www.contributor-covenant.org/version/1/4/
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/CONTRIBUTING.md b/vendor/wasi-0.10.2+wasi-snapshot-preview1/CONTRIBUTING.md
deleted file mode 100644
index 2db6d0ddf..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/CONTRIBUTING.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Contributing to wasi-core
-
-wasi-core follows the same development style as Cranelift, so checkout
-[Cranelift's CONTRIBUTING.md]. Of course, for wasi-core-specific issues, please
-use the [wasi-core issue tracker].
-
-[Cranelift's CONTRIBUTING.md]: https://github.com/CraneStation/cranelift/blob/master/CONTRIBUTING.md
-[wasi-core issue tracker]: https://github.com/CraneStation/wasi-core/issues/new
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/Cargo.toml b/vendor/wasi-0.10.2+wasi-snapshot-preview1/Cargo.toml
deleted file mode 100644
index 23e3b2f6e..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/Cargo.toml
+++ /dev/null
@@ -1,43 +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 believe there's an error in this file please file an
-# issue against the rust-lang/cargo repository. If you're
-# editing this file be aware that the upstream Cargo.toml
-# will likely look very different (and much more reasonable)
-
-[package]
-edition = "2018"
-name = "wasi"
-version = "0.10.2+wasi-snapshot-preview1"
-authors = ["The Cranelift Project Developers"]
-description = "Experimental WASI API bindings for Rust"
-documentation = "https://docs.rs/wasi"
-readme = "README.md"
-keywords = ["webassembly", "wasm"]
-categories = ["no-std", "wasm"]
-license = "Apache-2.0 WITH LLVM-exception OR Apache-2.0 OR MIT"
-repository = "https://github.com/bytecodealliance/wasi"
-[dependencies.compiler_builtins]
-version = "0.1"
-optional = true
-
-[dependencies.core]
-version = "1.0"
-optional = true
-package = "rustc-std-workspace-core"
-
-[dependencies.rustc-std-workspace-alloc]
-version = "1.0"
-optional = true
-
-[features]
-default = ["std"]
-rustc-dep-of-std = ["compiler_builtins", "core", "rustc-std-workspace-alloc"]
-std = []
-[badges.maintenance]
-status = "experimental"
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception b/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception
deleted file mode 100644
index f9d81955f..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-Apache-2.0_WITH_LLVM-exception
+++ /dev/null
@@ -1,220 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-
---- LLVM Exceptions to the Apache 2.0 License ----
-
-As an exception, if, as a result of your compiling your source code, portions
-of this Software are embedded into an Object form of such source code, you
-may redistribute such embedded portions in such Object form without complying
-with the conditions of Sections 4(a), 4(b) and 4(d) of the License.
-
-In addition, if you combine or link compiled forms of this Software with
-software that is licensed under the GPLv2 ("Combined Software") and if a
-court of competent jurisdiction determines that the patent provision (Section
-3), the indemnity provision (Section 9) or other Section of the License
-conflicts with the conditions of the GPLv2, you may retroactively and
-prospectively choose to deem waived or otherwise exclude such Section(s) of
-the License, but only in their entirety and only with respect to the Combined
-Software.
-
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-MIT b/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-MIT
deleted file mode 100644
index 31aa79387..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/LICENSE-MIT
+++ /dev/null
@@ -1,23 +0,0 @@
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/ORG_CODE_OF_CONDUCT.md b/vendor/wasi-0.10.2+wasi-snapshot-preview1/ORG_CODE_OF_CONDUCT.md
deleted file mode 100644
index 6f4fb3f53..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/ORG_CODE_OF_CONDUCT.md
+++ /dev/null
@@ -1,143 +0,0 @@
-# Bytecode Alliance Organizational Code of Conduct (OCoC)
-
-*Note*: this Code of Conduct pertains to organizations' behavior. Please also see the [Individual Code of Conduct](CODE_OF_CONDUCT.md).
-
-## Preamble
-
-The Bytecode Alliance (BA) welcomes involvement from organizations,
-including commercial organizations. This document is an
-*organizational* code of conduct, intended particularly to provide
-guidance to commercial organizations. It is distinct from the
-[Individual Code of Conduct (ICoC)](CODE_OF_CONDUCT.md), and does not
-replace the ICoC. This OCoC applies to any group of people acting in
-concert as a BA member or as a participant in BA activities, whether
-or not that group is formally incorporated in some jurisdiction.
-
-The code of conduct described below is not a set of rigid rules, and
-we did not write it to encompass every conceivable scenario that might
-arise. For example, it is theoretically possible there would be times
-when asserting patents is in the best interest of the BA community as
-a whole. In such instances, consult with the BA, strive for
-consensus, and interpret these rules with an intent that is generous
-to the community the BA serves.
-
-While we may revise these guidelines from time to time based on
-real-world experience, overall they are based on a simple principle:
-
-*Bytecode Alliance members should observe the distinction between
- public community functions and private functions — especially
- commercial ones — and should ensure that the latter support, or at
- least do not harm, the former.*
-
-## Guidelines
-
- * **Do not cause confusion about Wasm standards or interoperability.**
-
- Having an interoperable WebAssembly core is a high priority for
- the BA, and members should strive to preserve that core. It is fine
- to develop additional non-standard features or APIs, but they
- should always be clearly distinguished from the core interoperable
- Wasm.
-
- Treat the WebAssembly name and any BA-associated names with
- respect, and follow BA trademark and branding guidelines. If you
- distribute a customized version of software originally produced by
- the BA, or if you build a product or service using BA-derived
- software, use names that clearly distinguish your work from the
- original. (You should still provide proper attribution to the
- original, of course, wherever such attribution would normally be
- given.)
-
- Further, do not use the WebAssembly name or BA-associated names in
- other public namespaces in ways that could cause confusion, e.g.,
- in company names, names of commercial service offerings, domain
- names, publicly-visible social media accounts or online service
- accounts, etc. It may sometimes be reasonable, however, to
- register such a name in a new namespace and then immediately donate
- control of that account to the BA, because that would help the project
- maintain its identity.
-
- For further guidance, see the BA Trademark and Branding Policy
- [TODO: create policy, then insert link].
-
- * **Do not restrict contributors.** If your company requires
- employees or contractors to sign non-compete agreements, those
- agreements must not prevent people from participating in the BA or
- contributing to related projects.
-
- This does not mean that all non-compete agreements are incompatible
- with this code of conduct. For example, a company may restrict an
- employee's ability to solicit the company's customers. However, an
- agreement must not block any form of technical or social
- participation in BA activities, including but not limited to the
- implementation of particular features.
-
- The accumulation of experience and expertise in individual persons,
- who are ultimately free to direct their energy and attention as
- they decide, is one of the most important drivers of progress in
- open source projects. A company that limits this freedom may hinder
- the success of the BA's efforts.
-
- * **Do not use patents as offensive weapons.** If any BA participant
- prevents the adoption or development of BA technologies by
- asserting its patents, that undermines the purpose of the
- coalition. The collaboration fostered by the BA cannot include
- members who act to undermine its work.
-
- * **Practice responsible disclosure** for security vulnerabilities.
- Use designated, non-public reporting channels to disclose technical
- vulnerabilities, and give the project a reasonable period to
- respond, remediate, and patch. [TODO: optionally include the
- security vulnerability reporting URL here.]
-
- Vulnerability reporters may patch their company's own offerings, as
- long as that patching does not significantly delay the reporting of
- the vulnerability. Vulnerability information should never be used
- for unilateral commercial advantage. Vendors may legitimately
- compete on the speed and reliability with which they deploy
- security fixes, but withholding vulnerability information damages
- everyone in the long run by risking harm to the BA project's
- reputation and to the security of all users.
-
- * **Respect the letter and spirit of open source practice.** While
- there is not space to list here all possible aspects of standard
- open source practice, some examples will help show what we mean:
-
- * Abide by all applicable open source license terms. Do not engage
- in copyright violation or misattribution of any kind.
-
- * Do not claim others' ideas or designs as your own.
-
- * When others engage in publicly visible work (e.g., an upcoming
- demo that is coordinated in a public issue tracker), do not
- unilaterally announce early releases or early demonstrations of
- that work ahead of their schedule in order to secure private
- advantage (such as marketplace advantage) for yourself.
-
- The BA reserves the right to determine what constitutes good open
- source practices and to take action as it deems appropriate to
- encourage, and if necessary enforce, such practices.
-
-## Enforcement
-
-Instances of organizational behavior in violation of the OCoC may
-be reported by contacting the Bytecode Alliance CoC team at
-[report@bytecodealliance.org](mailto:report@bytecodealliance.org). The
-CoC team will review and investigate all complaints, and will respond
-in a way that it deems appropriate to the circumstances. The CoC team
-is obligated to maintain confidentiality with regard to the reporter of
-an incident. Further details of specific enforcement policies may be
-posted separately.
-
-When the BA deems an organization in violation of this OCoC, the BA
-will, at its sole discretion, determine what action to take. The BA
-will decide what type, degree, and duration of corrective action is
-needed, if any, before a violating organization can be considered for
-membership (if it was not already a member) or can have its membership
-reinstated (if it was a member and the BA canceled its membership due
-to the violation).
-
-In practice, the BA's first approach will be to start a conversation,
-with punitive enforcement used only as a last resort. Violations
-often turn out to be unintentional and swiftly correctable with all
-parties acting in good faith.
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/README.md b/vendor/wasi-0.10.2+wasi-snapshot-preview1/README.md
deleted file mode 100644
index 801f56a4e..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/README.md
+++ /dev/null
@@ -1,94 +0,0 @@
-<div align="center">
- <h1><code>wasi</code></h1>
-
-<strong>A <a href="https://bytecodealliance.org/">Bytecode Alliance</a> project</strong>
-
- <p>
- <strong>WASI API Bindings for Rust</strong>
- </p>
-
- <p>
- <a href="https://crates.io/crates/wasi"><img src="https://img.shields.io/crates/v/wasi.svg?style=flat-square" alt="Crates.io version" /></a>
- <a href="https://crates.io/crates/wasi"><img src="https://img.shields.io/crates/d/wasi.svg?style=flat-square" alt="Download" /></a>
- <a href="https://docs.rs/wasi/"><img src="https://img.shields.io/badge/docs-latest-blue.svg?style=flat-square" alt="docs.rs docs" /></a>
- </p>
-</div>
-
-This crate contains API bindings for [WASI](https://github.com/WebAssembly/WASI)
-system calls in Rust, and currently reflects the `wasi_snapshot_preview1`
-module. This crate is quite low-level and provides conceptually a "system call"
-interface. In most settings, it's better to use the Rust standard library, which
-has WASI support.
-
-The `wasi` crate is also entirely procedurally generated from the `*.witx` files
-describing the WASI apis. While some conveniences are provided the bindings here
-are intentionally low-level!
-
-# Usage
-
-First you can depend on this crate via `Cargo.toml`:
-
-```toml
-[dependencies]
-wasi = "0.8.0"
-```
-
-Next you can use the APIs in the root of the module like so:
-
-```rust
-fn main() {
- let stdout = 1;
- let message = "Hello, World!\n";
- let data = [wasi::Ciovec {
- buf: message.as_ptr(),
- buf_len: message.len(),
- }];
- wasi::fd_write(stdout, &data).unwrap();
-}
-```
-
-Next you can use a tool like [`cargo
-wasi`](https://github.com/bytecodealliance/cargo-wasi) to compile and run your
-project:
-
-To compile Rust projects to wasm using WASI, use the `wasm32-wasi` target,
-like this:
-
-```
-$ cargo wasi run
- Compiling wasi v0.8.0+wasi-snapshot-preview1
- Compiling wut v0.1.0 (/code)
- Finished dev [unoptimized + debuginfo] target(s) in 0.34s
- Running `/.cargo/bin/cargo-wasi target/wasm32-wasi/debug/wut.wasm`
- Running `target/wasm32-wasi/debug/wut.wasm`
-Hello, World!
-```
-
-# Development
-
-The bulk of the `wasi` crate is generated by the `witx-bindgen` tool, which lives at
-`crates/witx-bindgen` and is part of the cargo workspace.
-
-The `src/lib_generated.rs` file can be re-generated with the following
-command:
-
-```
-cargo run -p witx-bindgen -- crates/witx-bindgen/WASI/phases/snapshot/witx/wasi_snapshot_preview1.witx > src/lib_generated.rs
-```
-
-Note that this uses the WASI standard repository as a submodule. If you do not
-have this submodule present in your source tree, run:
-```
-git submodule update --init
-```
-
-# License
-
-This project is licensed under the Apache 2.0 license with the LLVM exception.
-See [LICENSE](LICENSE) for more details.
-
-### Contribution
-
-Unless you explicitly state otherwise, any contribution intentionally submitted
-for inclusion in this project by you, as defined in the Apache-2.0 license,
-shall be licensed as above, without any additional terms or conditions.
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/SECURITY.md b/vendor/wasi-0.10.2+wasi-snapshot-preview1/SECURITY.md
deleted file mode 100644
index 3513b9cb3..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/SECURITY.md
+++ /dev/null
@@ -1,29 +0,0 @@
-# Security Policy
-
-Building secure foundations for software development is at the core of what we do in the Bytecode Alliance. Contributions of external security researchers are a vital part of that.
-
-## Scope
-
-If you believe you've found a security issue in any website, service, or software owned or operated by the Bytecode Alliance, we encourage you to notify us.
-
-## How to Submit a Report
-
-To submit a vulnerability report to the Bytecode Alliance, please contact us at [security@bytecodealliance.org](mailto:security@bytecodealliance.org). Your submission will be reviewed and validated by a member of our security team.
-
-## Safe Harbor
-
-The Bytecode Alliance supports safe harbor for security researchers who:
-
-* Make a good faith effort to avoid privacy violations, destruction of data, and interruption or degradation of our services.
-* Only interact with accounts you own or with explicit permission of the account holder. If you do encounter Personally Identifiable Information (PII) contact us immediately, do not proceed with access, and immediately purge any local information.
-* Provide us with a reasonable amount of time to resolve vulnerabilities prior to any disclosure to the public or a third-party.
-
-We will consider activities conducted consistent with this policy to constitute "authorized" conduct and will not pursue civil action or initiate a complaint to law enforcement. We will help to the extent we can if legal action is initiated by a third party against you.
-
-Please submit a report to us before engaging in conduct that may be inconsistent with or unaddressed by this policy.
-
-## Preferences
-
-* Please provide detailed reports with reproducible steps and a clearly defined impact.
-* Submit one vulnerability per report.
-* Social engineering (e.g. phishing, vishing, smishing) is prohibited.
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/error.rs b/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/error.rs
deleted file mode 100644
index fb8b44389..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/error.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-use super::Errno;
-use core::fmt;
-use core::num::NonZeroU16;
-
-/// A raw error returned by wasi APIs, internally containing a 16-bit error
-/// code.
-#[derive(Copy, Clone, PartialEq, Eq, Ord, PartialOrd)]
-pub struct Error {
- code: NonZeroU16,
-}
-
-impl Error {
- /// Constructs a new error from a raw error code, returning `None` if the
- /// error code is zero (which means success).
- pub fn from_raw_error(error: Errno) -> Option<Error> {
- Some(Error {
- code: NonZeroU16::new(error)?,
- })
- }
-
- /// Returns the raw error code that this error represents.
- pub fn raw_error(&self) -> u16 {
- self.code.get()
- }
-}
-
-impl fmt::Display for Error {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- write!(
- f,
- "{} (error {})",
- super::errno_name(self.code.get()),
- self.code
- )?;
- Ok(())
- }
-}
-
-impl fmt::Debug for Error {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- f.debug_struct("Error")
- .field("code", &self.code)
- .field("name", &super::errno_name(self.code.get()))
- .field("message", &super::errno_docs(self.code.get()))
- .finish()
- }
-}
-
-#[cfg(feature = "std")]
-extern crate std;
-#[cfg(feature = "std")]
-impl std::error::Error for Error {}
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib.rs b/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib.rs
deleted file mode 100644
index 51f488907..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib.rs
+++ /dev/null
@@ -1,48 +0,0 @@
-//! Raw API bindings to the WebAssembly System Interface (WASI)
-//!
-//! This crate provides Rust API bindings to WASI APIs. All WASI APIs are
-//! exported from this crate and provided with the appropriate type signatures.
-//! This crate is entirely procedurally generated from the `*.witx` files that
-//! describe the WASI API.
-//!
-//! # WASI API Version
-//!
-//! The WASI API is evolving over time. It is both gaining new features as well
-//! as tweaking the ABI of existing features. As a result it's important to
-//! understand what version of this crate you're using and how it relates to
-//! the WASI version of the spec.
-//!
-//! The WASI specification is organized into phases where there is a snapshot
-//! at any one point in time describing the current state of the specification.
-//! This crate implements a particular snapshot. You can find the snapshot
-//! version implemented in this crate in the build metadata of the crate
-//! version number. For example something like `0.9.0+wasi-snapshot-preview1`
-//! means that this crate's own personal version is 0.9.0 and it implements the
-//! `wasi-snapshot-preview1` snapshot. A major release of this crate (i.e.
-//! bumping the "0.9.0") is expected whenever the generated code changes
-//! or a new WASI snapshot is used.
-//!
-//! # Crate Features
-//!
-//! This crate supports one feature, `std`, which implements the standard
-//! `Error` trait for the exported [`Error`] type in this crate. This is
-//! enabled by default but can be disabled to make the library `no_std`
-//! compatible.
-
-#![no_std]
-
-mod error;
-mod lib_generated;
-pub use lib_generated::*;
-
-/// Special `Dircookie` value indicating the start of a directory.
-pub const DIRCOOKIE_START: Dircookie = 0;
-
-/// The "standard input" descriptor number.
-pub const FD_STDIN: Fd = 0;
-
-/// The "standard output" descriptor number.
-pub const FD_STDOUT: Fd = 1;
-
-/// The "standard error" descriptor number.
-pub const FD_STDERR: Fd = 2;
diff --git a/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib_generated.rs b/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib_generated.rs
deleted file mode 100644
index 09d58c2b3..000000000
--- a/vendor/wasi-0.10.2+wasi-snapshot-preview1/src/lib_generated.rs
+++ /dev/null
@@ -1,1940 +0,0 @@
-// This file is automatically generated, DO NOT EDIT
-//
-// To regenerate this file run the `crates/witx-bindgen` command
-
-use core::mem::MaybeUninit;
-
-pub use crate::error::Error;
-pub type Result<T, E = Error> = core::result::Result<T, E>;
-pub type Size = usize;
-pub type Filesize = u64;
-pub type Timestamp = u64;
-pub type Clockid = u32;
-/// The clock measuring real time. Time value zero corresponds with
-/// 1970-01-01T00:00:00Z.
-pub const CLOCKID_REALTIME: Clockid = 0;
-/// The store-wide monotonic clock, which is defined as a clock measuring
-/// real time, whose value cannot be adjusted and which cannot have negative
-/// clock jumps. The epoch of this clock is undefined. The absolute time
-/// value of this clock therefore has no meaning.
-pub const CLOCKID_MONOTONIC: Clockid = 1;
-/// The CPU-time clock associated with the current process.
-pub const CLOCKID_PROCESS_CPUTIME_ID: Clockid = 2;
-/// The CPU-time clock associated with the current thread.
-pub const CLOCKID_THREAD_CPUTIME_ID: Clockid = 3;
-pub type Errno = u16;
-/// No error occurred. System call completed successfully.
-pub const ERRNO_SUCCESS: Errno = 0;
-/// Argument list too long.
-pub const ERRNO_2BIG: Errno = 1;
-/// Permission denied.
-pub const ERRNO_ACCES: Errno = 2;
-/// Address in use.
-pub const ERRNO_ADDRINUSE: Errno = 3;
-/// Address not available.
-pub const ERRNO_ADDRNOTAVAIL: Errno = 4;
-/// Address family not supported.
-pub const ERRNO_AFNOSUPPORT: Errno = 5;
-/// Resource unavailable, or operation would block.
-pub const ERRNO_AGAIN: Errno = 6;
-/// Connection already in progress.
-pub const ERRNO_ALREADY: Errno = 7;
-/// Bad file descriptor.
-pub const ERRNO_BADF: Errno = 8;
-/// Bad message.
-pub const ERRNO_BADMSG: Errno = 9;
-/// Device or resource busy.
-pub const ERRNO_BUSY: Errno = 10;
-/// Operation canceled.
-pub const ERRNO_CANCELED: Errno = 11;
-/// No child processes.
-pub const ERRNO_CHILD: Errno = 12;
-/// Connection aborted.
-pub const ERRNO_CONNABORTED: Errno = 13;
-/// Connection refused.
-pub const ERRNO_CONNREFUSED: Errno = 14;
-/// Connection reset.
-pub const ERRNO_CONNRESET: Errno = 15;
-/// Resource deadlock would occur.
-pub const ERRNO_DEADLK: Errno = 16;
-/// Destination address required.
-pub const ERRNO_DESTADDRREQ: Errno = 17;
-/// Mathematics argument out of domain of function.
-pub const ERRNO_DOM: Errno = 18;
-/// Reserved.
-pub const ERRNO_DQUOT: Errno = 19;
-/// File exists.
-pub const ERRNO_EXIST: Errno = 20;
-/// Bad address.
-pub const ERRNO_FAULT: Errno = 21;
-/// File too large.
-pub const ERRNO_FBIG: Errno = 22;
-/// Host is unreachable.
-pub const ERRNO_HOSTUNREACH: Errno = 23;
-/// Identifier removed.
-pub const ERRNO_IDRM: Errno = 24;
-/// Illegal byte sequence.
-pub const ERRNO_ILSEQ: Errno = 25;
-/// Operation in progress.
-pub const ERRNO_INPROGRESS: Errno = 26;
-/// Interrupted function.
-pub const ERRNO_INTR: Errno = 27;
-/// Invalid argument.
-pub const ERRNO_INVAL: Errno = 28;
-/// I/O error.
-pub const ERRNO_IO: Errno = 29;
-/// Socket is connected.
-pub const ERRNO_ISCONN: Errno = 30;
-/// Is a directory.
-pub const ERRNO_ISDIR: Errno = 31;
-/// Too many levels of symbolic links.
-pub const ERRNO_LOOP: Errno = 32;
-/// File descriptor value too large.
-pub const ERRNO_MFILE: Errno = 33;
-/// Too many links.
-pub const ERRNO_MLINK: Errno = 34;
-/// Message too large.
-pub const ERRNO_MSGSIZE: Errno = 35;
-/// Reserved.
-pub const ERRNO_MULTIHOP: Errno = 36;
-/// Filename too long.
-pub const ERRNO_NAMETOOLONG: Errno = 37;
-/// Network is down.
-pub const ERRNO_NETDOWN: Errno = 38;
-/// Connection aborted by network.
-pub const ERRNO_NETRESET: Errno = 39;
-/// Network unreachable.
-pub const ERRNO_NETUNREACH: Errno = 40;
-/// Too many files open in system.
-pub const ERRNO_NFILE: Errno = 41;
-/// No buffer space available.
-pub const ERRNO_NOBUFS: Errno = 42;
-/// No such device.
-pub const ERRNO_NODEV: Errno = 43;
-/// No such file or directory.
-pub const ERRNO_NOENT: Errno = 44;
-/// Executable file format error.
-pub const ERRNO_NOEXEC: Errno = 45;
-/// No locks available.
-pub const ERRNO_NOLCK: Errno = 46;
-/// Reserved.
-pub const ERRNO_NOLINK: Errno = 47;
-/// Not enough space.
-pub const ERRNO_NOMEM: Errno = 48;
-/// No message of the desired type.
-pub const ERRNO_NOMSG: Errno = 49;
-/// Protocol not available.
-pub const ERRNO_NOPROTOOPT: Errno = 50;
-/// No space left on device.
-pub const ERRNO_NOSPC: Errno = 51;
-/// Function not supported.
-pub const ERRNO_NOSYS: Errno = 52;
-/// The socket is not connected.
-pub const ERRNO_NOTCONN: Errno = 53;
-/// Not a directory or a symbolic link to a directory.
-pub const ERRNO_NOTDIR: Errno = 54;
-/// Directory not empty.
-pub const ERRNO_NOTEMPTY: Errno = 55;
-/// State not recoverable.
-pub const ERRNO_NOTRECOVERABLE: Errno = 56;
-/// Not a socket.
-pub const ERRNO_NOTSOCK: Errno = 57;
-/// Not supported, or operation not supported on socket.
-pub const ERRNO_NOTSUP: Errno = 58;
-/// Inappropriate I/O control operation.
-pub const ERRNO_NOTTY: Errno = 59;
-/// No such device or address.
-pub const ERRNO_NXIO: Errno = 60;
-/// Value too large to be stored in data type.
-pub const ERRNO_OVERFLOW: Errno = 61;
-/// Previous owner died.
-pub const ERRNO_OWNERDEAD: Errno = 62;
-/// Operation not permitted.
-pub const ERRNO_PERM: Errno = 63;
-/// Broken pipe.
-pub const ERRNO_PIPE: Errno = 64;
-/// Protocol error.
-pub const ERRNO_PROTO: Errno = 65;
-/// Protocol not supported.
-pub const ERRNO_PROTONOSUPPORT: Errno = 66;
-/// Protocol wrong type for socket.
-pub const ERRNO_PROTOTYPE: Errno = 67;
-/// Result too large.
-pub const ERRNO_RANGE: Errno = 68;
-/// Read-only file system.
-pub const ERRNO_ROFS: Errno = 69;
-/// Invalid seek.
-pub const ERRNO_SPIPE: Errno = 70;
-/// No such process.
-pub const ERRNO_SRCH: Errno = 71;
-/// Reserved.
-pub const ERRNO_STALE: Errno = 72;
-/// Connection timed out.
-pub const ERRNO_TIMEDOUT: Errno = 73;
-/// Text file busy.
-pub const ERRNO_TXTBSY: Errno = 74;
-/// Cross-device link.
-pub const ERRNO_XDEV: Errno = 75;
-/// Extension: Capabilities insufficient.
-pub const ERRNO_NOTCAPABLE: Errno = 76;
-pub fn errno_name(code: u16) -> &'static str {
- match code {
- ERRNO_SUCCESS => "SUCCESS",
- ERRNO_2BIG => "2BIG",
- ERRNO_ACCES => "ACCES",
- ERRNO_ADDRINUSE => "ADDRINUSE",
- ERRNO_ADDRNOTAVAIL => "ADDRNOTAVAIL",
- ERRNO_AFNOSUPPORT => "AFNOSUPPORT",
- ERRNO_AGAIN => "AGAIN",
- ERRNO_ALREADY => "ALREADY",
- ERRNO_BADF => "BADF",
- ERRNO_BADMSG => "BADMSG",
- ERRNO_BUSY => "BUSY",
- ERRNO_CANCELED => "CANCELED",
- ERRNO_CHILD => "CHILD",
- ERRNO_CONNABORTED => "CONNABORTED",
- ERRNO_CONNREFUSED => "CONNREFUSED",
- ERRNO_CONNRESET => "CONNRESET",
- ERRNO_DEADLK => "DEADLK",
- ERRNO_DESTADDRREQ => "DESTADDRREQ",
- ERRNO_DOM => "DOM",
- ERRNO_DQUOT => "DQUOT",
- ERRNO_EXIST => "EXIST",
- ERRNO_FAULT => "FAULT",
- ERRNO_FBIG => "FBIG",
- ERRNO_HOSTUNREACH => "HOSTUNREACH",
- ERRNO_IDRM => "IDRM",
- ERRNO_ILSEQ => "ILSEQ",
- ERRNO_INPROGRESS => "INPROGRESS",
- ERRNO_INTR => "INTR",
- ERRNO_INVAL => "INVAL",
- ERRNO_IO => "IO",
- ERRNO_ISCONN => "ISCONN",
- ERRNO_ISDIR => "ISDIR",
- ERRNO_LOOP => "LOOP",
- ERRNO_MFILE => "MFILE",
- ERRNO_MLINK => "MLINK",
- ERRNO_MSGSIZE => "MSGSIZE",
- ERRNO_MULTIHOP => "MULTIHOP",
- ERRNO_NAMETOOLONG => "NAMETOOLONG",
- ERRNO_NETDOWN => "NETDOWN",
- ERRNO_NETRESET => "NETRESET",
- ERRNO_NETUNREACH => "NETUNREACH",
- ERRNO_NFILE => "NFILE",
- ERRNO_NOBUFS => "NOBUFS",
- ERRNO_NODEV => "NODEV",
- ERRNO_NOENT => "NOENT",
- ERRNO_NOEXEC => "NOEXEC",
- ERRNO_NOLCK => "NOLCK",
- ERRNO_NOLINK => "NOLINK",
- ERRNO_NOMEM => "NOMEM",
- ERRNO_NOMSG => "NOMSG",
- ERRNO_NOPROTOOPT => "NOPROTOOPT",
- ERRNO_NOSPC => "NOSPC",
- ERRNO_NOSYS => "NOSYS",
- ERRNO_NOTCONN => "NOTCONN",
- ERRNO_NOTDIR => "NOTDIR",
- ERRNO_NOTEMPTY => "NOTEMPTY",
- ERRNO_NOTRECOVERABLE => "NOTRECOVERABLE",
- ERRNO_NOTSOCK => "NOTSOCK",
- ERRNO_NOTSUP => "NOTSUP",
- ERRNO_NOTTY => "NOTTY",
- ERRNO_NXIO => "NXIO",
- ERRNO_OVERFLOW => "OVERFLOW",
- ERRNO_OWNERDEAD => "OWNERDEAD",
- ERRNO_PERM => "PERM",
- ERRNO_PIPE => "PIPE",
- ERRNO_PROTO => "PROTO",
- ERRNO_PROTONOSUPPORT => "PROTONOSUPPORT",
- ERRNO_PROTOTYPE => "PROTOTYPE",
- ERRNO_RANGE => "RANGE",
- ERRNO_ROFS => "ROFS",
- ERRNO_SPIPE => "SPIPE",
- ERRNO_SRCH => "SRCH",
- ERRNO_STALE => "STALE",
- ERRNO_TIMEDOUT => "TIMEDOUT",
- ERRNO_TXTBSY => "TXTBSY",
- ERRNO_XDEV => "XDEV",
- ERRNO_NOTCAPABLE => "NOTCAPABLE",
- _ => "Unknown error.",
- }
-}
-pub fn errno_docs(code: u16) -> &'static str {
- match code {
- ERRNO_SUCCESS => "No error occurred. System call completed successfully.",
- ERRNO_2BIG => "Argument list too long.",
- ERRNO_ACCES => "Permission denied.",
- ERRNO_ADDRINUSE => "Address in use.",
- ERRNO_ADDRNOTAVAIL => "Address not available.",
- ERRNO_AFNOSUPPORT => "Address family not supported.",
- ERRNO_AGAIN => "Resource unavailable, or operation would block.",
- ERRNO_ALREADY => "Connection already in progress.",
- ERRNO_BADF => "Bad file descriptor.",
- ERRNO_BADMSG => "Bad message.",
- ERRNO_BUSY => "Device or resource busy.",
- ERRNO_CANCELED => "Operation canceled.",
- ERRNO_CHILD => "No child processes.",
- ERRNO_CONNABORTED => "Connection aborted.",
- ERRNO_CONNREFUSED => "Connection refused.",
- ERRNO_CONNRESET => "Connection reset.",
- ERRNO_DEADLK => "Resource deadlock would occur.",
- ERRNO_DESTADDRREQ => "Destination address required.",
- ERRNO_DOM => "Mathematics argument out of domain of function.",
- ERRNO_DQUOT => "Reserved.",
- ERRNO_EXIST => "File exists.",
- ERRNO_FAULT => "Bad address.",
- ERRNO_FBIG => "File too large.",
- ERRNO_HOSTUNREACH => "Host is unreachable.",
- ERRNO_IDRM => "Identifier removed.",
- ERRNO_ILSEQ => "Illegal byte sequence.",
- ERRNO_INPROGRESS => "Operation in progress.",
- ERRNO_INTR => "Interrupted function.",
- ERRNO_INVAL => "Invalid argument.",
- ERRNO_IO => "I/O error.",
- ERRNO_ISCONN => "Socket is connected.",
- ERRNO_ISDIR => "Is a directory.",
- ERRNO_LOOP => "Too many levels of symbolic links.",
- ERRNO_MFILE => "File descriptor value too large.",
- ERRNO_MLINK => "Too many links.",
- ERRNO_MSGSIZE => "Message too large.",
- ERRNO_MULTIHOP => "Reserved.",
- ERRNO_NAMETOOLONG => "Filename too long.",
- ERRNO_NETDOWN => "Network is down.",
- ERRNO_NETRESET => "Connection aborted by network.",
- ERRNO_NETUNREACH => "Network unreachable.",
- ERRNO_NFILE => "Too many files open in system.",
- ERRNO_NOBUFS => "No buffer space available.",
- ERRNO_NODEV => "No such device.",
- ERRNO_NOENT => "No such file or directory.",
- ERRNO_NOEXEC => "Executable file format error.",
- ERRNO_NOLCK => "No locks available.",
- ERRNO_NOLINK => "Reserved.",
- ERRNO_NOMEM => "Not enough space.",
- ERRNO_NOMSG => "No message of the desired type.",
- ERRNO_NOPROTOOPT => "Protocol not available.",
- ERRNO_NOSPC => "No space left on device.",
- ERRNO_NOSYS => "Function not supported.",
- ERRNO_NOTCONN => "The socket is not connected.",
- ERRNO_NOTDIR => "Not a directory or a symbolic link to a directory.",
- ERRNO_NOTEMPTY => "Directory not empty.",
- ERRNO_NOTRECOVERABLE => "State not recoverable.",
- ERRNO_NOTSOCK => "Not a socket.",
- ERRNO_NOTSUP => "Not supported, or operation not supported on socket.",
- ERRNO_NOTTY => "Inappropriate I/O control operation.",
- ERRNO_NXIO => "No such device or address.",
- ERRNO_OVERFLOW => "Value too large to be stored in data type.",
- ERRNO_OWNERDEAD => "Previous owner died.",
- ERRNO_PERM => "Operation not permitted.",
- ERRNO_PIPE => "Broken pipe.",
- ERRNO_PROTO => "Protocol error.",
- ERRNO_PROTONOSUPPORT => "Protocol not supported.",
- ERRNO_PROTOTYPE => "Protocol wrong type for socket.",
- ERRNO_RANGE => "Result too large.",
- ERRNO_ROFS => "Read-only file system.",
- ERRNO_SPIPE => "Invalid seek.",
- ERRNO_SRCH => "No such process.",
- ERRNO_STALE => "Reserved.",
- ERRNO_TIMEDOUT => "Connection timed out.",
- ERRNO_TXTBSY => "Text file busy.",
- ERRNO_XDEV => "Cross-device link.",
- ERRNO_NOTCAPABLE => "Extension: Capabilities insufficient.",
- _ => "Unknown error.",
- }
-}
-pub type Rights = u64;
-/// The right to invoke `fd_datasync`.
-/// If `path_open` is set, includes the right to invoke
-/// `path_open` with `fdflags::dsync`.
-pub const RIGHTS_FD_DATASYNC: Rights = 0x1;
-/// The right to invoke `fd_read` and `sock_recv`.
-/// If `rights::fd_seek` is set, includes the right to invoke `fd_pread`.
-pub const RIGHTS_FD_READ: Rights = 0x2;
-/// The right to invoke `fd_seek`. This flag implies `rights::fd_tell`.
-pub const RIGHTS_FD_SEEK: Rights = 0x4;
-/// The right to invoke `fd_fdstat_set_flags`.
-pub const RIGHTS_FD_FDSTAT_SET_FLAGS: Rights = 0x8;
-/// The right to invoke `fd_sync`.
-/// If `path_open` is set, includes the right to invoke
-/// `path_open` with `fdflags::rsync` and `fdflags::dsync`.
-pub const RIGHTS_FD_SYNC: Rights = 0x10;
-/// The right to invoke `fd_seek` in such a way that the file offset
-/// remains unaltered (i.e., `whence::cur` with offset zero), or to
-/// invoke `fd_tell`.
-pub const RIGHTS_FD_TELL: Rights = 0x20;
-/// The right to invoke `fd_write` and `sock_send`.
-/// If `rights::fd_seek` is set, includes the right to invoke `fd_pwrite`.
-pub const RIGHTS_FD_WRITE: Rights = 0x40;
-/// The right to invoke `fd_advise`.
-pub const RIGHTS_FD_ADVISE: Rights = 0x80;
-/// The right to invoke `fd_allocate`.
-pub const RIGHTS_FD_ALLOCATE: Rights = 0x100;
-/// The right to invoke `path_create_directory`.
-pub const RIGHTS_PATH_CREATE_DIRECTORY: Rights = 0x200;
-/// If `path_open` is set, the right to invoke `path_open` with `oflags::creat`.
-pub const RIGHTS_PATH_CREATE_FILE: Rights = 0x400;
-/// The right to invoke `path_link` with the file descriptor as the
-/// source directory.
-pub const RIGHTS_PATH_LINK_SOURCE: Rights = 0x800;
-/// The right to invoke `path_link` with the file descriptor as the
-/// target directory.
-pub const RIGHTS_PATH_LINK_TARGET: Rights = 0x1000;
-/// The right to invoke `path_open`.
-pub const RIGHTS_PATH_OPEN: Rights = 0x2000;
-/// The right to invoke `fd_readdir`.
-pub const RIGHTS_FD_READDIR: Rights = 0x4000;
-/// The right to invoke `path_readlink`.
-pub const RIGHTS_PATH_READLINK: Rights = 0x8000;
-/// The right to invoke `path_rename` with the file descriptor as the source directory.
-pub const RIGHTS_PATH_RENAME_SOURCE: Rights = 0x10000;
-/// The right to invoke `path_rename` with the file descriptor as the target directory.
-pub const RIGHTS_PATH_RENAME_TARGET: Rights = 0x20000;
-/// The right to invoke `path_filestat_get`.
-pub const RIGHTS_PATH_FILESTAT_GET: Rights = 0x40000;
-/// The right to change a file's size (there is no `path_filestat_set_size`).
-/// If `path_open` is set, includes the right to invoke `path_open` with `oflags::trunc`.
-pub const RIGHTS_PATH_FILESTAT_SET_SIZE: Rights = 0x80000;
-/// The right to invoke `path_filestat_set_times`.
-pub const RIGHTS_PATH_FILESTAT_SET_TIMES: Rights = 0x100000;
-/// The right to invoke `fd_filestat_get`.
-pub const RIGHTS_FD_FILESTAT_GET: Rights = 0x200000;
-/// The right to invoke `fd_filestat_set_size`.
-pub const RIGHTS_FD_FILESTAT_SET_SIZE: Rights = 0x400000;
-/// The right to invoke `fd_filestat_set_times`.
-pub const RIGHTS_FD_FILESTAT_SET_TIMES: Rights = 0x800000;
-/// The right to invoke `path_symlink`.
-pub const RIGHTS_PATH_SYMLINK: Rights = 0x1000000;
-/// The right to invoke `path_remove_directory`.
-pub const RIGHTS_PATH_REMOVE_DIRECTORY: Rights = 0x2000000;
-/// The right to invoke `path_unlink_file`.
-pub const RIGHTS_PATH_UNLINK_FILE: Rights = 0x4000000;
-/// If `rights::fd_read` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype::fd_read`.
-/// If `rights::fd_write` is set, includes the right to invoke `poll_oneoff` to subscribe to `eventtype::fd_write`.
-pub const RIGHTS_POLL_FD_READWRITE: Rights = 0x8000000;
-/// The right to invoke `sock_shutdown`.
-pub const RIGHTS_SOCK_SHUTDOWN: Rights = 0x10000000;
-pub type Fd = u32;
-#[repr(C)]
-#[derive(Copy, Clone, Debug)]
-pub struct Iovec {
- /// The address of the buffer to be filled.
- pub buf: *mut u8,
- /// The length of the buffer to be filled.
- pub buf_len: Size,
-}
-#[repr(C)]
-#[derive(Copy, Clone, Debug)]
-pub struct Ciovec {
- /// The address of the buffer to be written.
- pub buf: *const u8,
- /// The length of the buffer to be written.
- pub buf_len: Size,
-}
-pub type IovecArray<'a> = &'a [Iovec];
-pub type CiovecArray<'a> = &'a [Ciovec];
-pub type Filedelta = i64;
-pub type Whence = u8;
-/// Seek relative to start-of-file.
-pub const WHENCE_SET: Whence = 0;
-/// Seek relative to current position.
-pub const WHENCE_CUR: Whence = 1;
-/// Seek relative to end-of-file.
-pub const WHENCE_END: Whence = 2;
-pub type Dircookie = u64;
-pub type Dirnamlen = u32;
-pub type Inode = u64;
-pub type Filetype = u8;
-/// The type of the file descriptor or file is unknown or is different from any of the other types specified.
-pub const FILETYPE_UNKNOWN: Filetype = 0;
-/// The file descriptor or file refers to a block device inode.
-pub const FILETYPE_BLOCK_DEVICE: Filetype = 1;
-/// The file descriptor or file refers to a character device inode.
-pub const FILETYPE_CHARACTER_DEVICE: Filetype = 2;
-/// The file descriptor or file refers to a directory inode.
-pub const FILETYPE_DIRECTORY: Filetype = 3;
-/// The file descriptor or file refers to a regular file inode.
-pub const FILETYPE_REGULAR_FILE: Filetype = 4;
-/// The file descriptor or file refers to a datagram socket.
-pub const FILETYPE_SOCKET_DGRAM: Filetype = 5;
-/// The file descriptor or file refers to a byte-stream socket.
-pub const FILETYPE_SOCKET_STREAM: Filetype = 6;
-/// The file refers to a symbolic link inode.
-pub const FILETYPE_SYMBOLIC_LINK: Filetype = 7;
-#[repr(C)]
-#[derive(Copy, Clone, Debug)]
-pub struct Dirent {
- /// The offset of the next directory entry stored in this directory.
- pub d_next: Dircookie,
- /// The serial number of the file referred to by this directory entry.
- pub d_ino: Inode,
- /// The length of the name of the directory entry.
- pub d_namlen: Dirnamlen,
- /// The type of the file referred to by this directory entry.
- pub d_type: Filetype,
-}
-pub type Advice = u8;
-/// The application has no advice to give on its behavior with respect to the specified data.
-pub const ADVICE_NORMAL: Advice = 0;
-/// The application expects to access the specified data sequentially from lower offsets to higher offsets.
-pub const ADVICE_SEQUENTIAL: Advice = 1;
-/// The application expects to access the specified data in a random order.
-pub const ADVICE_RANDOM: Advice = 2;
-/// The application expects to access the specified data in the near future.
-pub const ADVICE_WILLNEED: Advice = 3;
-/// The application expects that it will not access the specified data in the near future.
-pub const ADVICE_DONTNEED: Advice = 4;
-/// The application expects to access the specified data once and then not reuse it thereafter.
-pub const ADVICE_NOREUSE: Advice = 5;
-pub type Fdflags = u16;
-/// Append mode: Data written to the file is always appended to the file's end.
-pub const FDFLAGS_APPEND: Fdflags = 0x1;
-/// Write according to synchronized I/O data integrity completion. Only the data stored in the file is synchronized.
-pub const FDFLAGS_DSYNC: Fdflags = 0x2;
-/// Non-blocking mode.
-pub const FDFLAGS_NONBLOCK: Fdflags = 0x4;
-/// Synchronized read I/O operations.
-pub const FDFLAGS_RSYNC: Fdflags = 0x8;
-/// Write according to synchronized I/O file integrity completion. In
-/// addition to synchronizing the data stored in the file, the implementation
-/// may also synchronously update the file's metadata.
-pub const FDFLAGS_SYNC: Fdflags = 0x10;
-#[repr(C)]
-#[derive(Copy, Clone, Debug)]
-pub struct Fdstat {
- /// File type.
- pub fs_filetype: Filetype,
- /// File descriptor flags.
- pub fs_flags: Fdflags,
- /// Rights that apply to this file descriptor.
- pub fs_rights_base: Rights,
- /// Maximum set of rights that may be installed on new file descriptors that
- /// are created through this file descriptor, e.g., through `path_open`.
- pub fs_rights_inheriting: Rights,
-}
-pub type Device = u64;
-pub type Fstflags = u16;
-/// Adjust the last data access timestamp to the value stored in `filestat::atim`.
-pub const FSTFLAGS_ATIM: Fstflags = 0x1;
-/// Adjust the last data access timestamp to the time of clock `clockid::realtime`.
-pub const FSTFLAGS_ATIM_NOW: Fstflags = 0x2;
-/// Adjust the last data modification timestamp to the value stored in `filestat::mtim`.
-pub const FSTFLAGS_MTIM: Fstflags = 0x4;
-/// Adjust the last data modification timestamp to the time of clock `clockid::realtime`.
-pub const FSTFLAGS_MTIM_NOW: Fstflags = 0x8;
-pub type Lookupflags = u32;
-/// As long as the resolved path corresponds to a symbolic link, it is expanded.
-pub const LOOKUPFLAGS_SYMLINK_FOLLOW: Lookupflags = 0x1;
-pub type Oflags = u16;
-/// Create file if it does not exist.
-pub const OFLAGS_CREAT: Oflags = 0x1;
-/// Fail if not a directory.
-pub const OFLAGS_DIRECTORY: Oflags = 0x2;
-/// Fail if file already exists.
-pub const OFLAGS_EXCL: Oflags = 0x4;
-/// Truncate file to size 0.
-pub const OFLAGS_TRUNC: Oflags = 0x8;
-pub type Linkcount = u64;
-#[repr(C)]
-#[derive(Copy, Clone, Debug)]
-pub struct Filestat {
- /// Device ID of device containing the file.
- pub dev: Device,
- /// File serial number.
- pub ino: Inode,
- /// File type.
- pub filetype: Filetype,
- /// Number of hard links to the file.
- pub nlink: Linkcount,
- /// For regular files, the file size in bytes. For symbolic links, the length in bytes of the pathname contained in the symbolic link.
- pub size: Filesize,
- /// Last data access timestamp.
- pub atim: Timestamp,
- /// Last data modification timestamp.
- pub mtim: Timestamp,
- /// Last file status change timestamp.
- pub ctim: Timestamp,
-}
-pub type Userdata = u64;
-pub type Eventtype = u8;
-/// The time value of clock `subscription_clock::id` has
-/// reached timestamp `subscription_clock::timeout`.
-pub const EVENTTYPE_CLOCK: Eventtype = 0;
-/// File descriptor `subscription_fd_readwrite::file_descriptor` has data
-/// available for reading. This event always triggers for regular files.
-pub const EVENTTYPE_FD_READ: Eventtype = 1;
-/// File descriptor `subscription_fd_readwrite::file_descriptor` has capacity
-/// available for writing. This event always triggers for regular files.
-pub const EVENTTYPE_FD_WRITE: Eventtype = 2;
-pub type Eventrwflags = u16;
-/// The peer of this socket has closed or disconnected.
-pub const EVENTRWFLAGS_FD_READWRITE_HANGUP: Eventrwflags = 0x1;
-#[repr(C)]
-#[derive(Copy, Clone, Debug)]
-pub struct EventFdReadwrite {
- /// The number of bytes available for reading or writing.
- pub nbytes: Filesize,
- /// The state of the file descriptor.
- pub flags: Eventrwflags,
-}
-#[repr(C)]
-#[derive(Copy, Clone, Debug)]
-pub struct Event {
- /// User-provided value that got attached to `subscription::userdata`.
- pub userdata: Userdata,
- /// If non-zero, an error that occurred while processing the subscription request.
- pub error: Errno,
- /// The type of event that occured
- pub r#type: Eventtype,
- /// The contents of the event, if it is an `eventtype::fd_read` or
- /// `eventtype::fd_write`. `eventtype::clock` events ignore this field.
- pub fd_readwrite: EventFdReadwrite,
-}
-pub type Subclockflags = u16;
-/// If set, treat the timestamp provided in
-/// `subscription_clock::timeout` as an absolute timestamp of clock
-/// `subscription_clock::id`. If clear, treat the timestamp
-/// provided in `subscription_clock::timeout` relative to the
-/// current time value of clock `subscription_clock::id`.
-pub const SUBCLOCKFLAGS_SUBSCRIPTION_CLOCK_ABSTIME: Subclockflags = 0x1;
-#[repr(C)]
-#[derive(Copy, Clone, Debug)]
-pub struct SubscriptionClock {
- /// The clock against which to compare the timestamp.
- pub id: Clockid,
- /// The absolute or relative timestamp.
- pub timeout: Timestamp,
- /// The amount of time that the implementation may wait additionally
- /// to coalesce with other events.
- pub precision: Timestamp,
- /// Flags specifying whether the timeout is absolute or relative
- pub flags: Subclockflags,
-}
-#[repr(C)]
-#[derive(Copy, Clone, Debug)]
-pub struct SubscriptionFdReadwrite {
- /// The file descriptor on which to wait for it to become ready for reading or writing.
- pub file_descriptor: Fd,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union SubscriptionUU {
- pub clock: SubscriptionClock,
- pub fd_read: SubscriptionFdReadwrite,
- pub fd_write: SubscriptionFdReadwrite,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct SubscriptionU {
- pub tag: Eventtype,
- pub u: SubscriptionUU,
-}
-
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct Subscription {
- /// User-provided value that is attached to the subscription in the
- /// implementation and returned through `event::userdata`.
- pub userdata: Userdata,
- /// The type of the event to which to subscribe, and its contents
- pub u: SubscriptionU,
-}
-pub type Exitcode = u32;
-pub type Signal = u8;
-/// No signal. Note that POSIX has special semantics for `kill(pid, 0)`,
-/// so this value is reserved.
-pub const SIGNAL_NONE: Signal = 0;
-/// Hangup.
-/// Action: Terminates the process.
-pub const SIGNAL_HUP: Signal = 1;
-/// Terminate interrupt signal.
-/// Action: Terminates the process.
-pub const SIGNAL_INT: Signal = 2;
-/// Terminal quit signal.
-/// Action: Terminates the process.
-pub const SIGNAL_QUIT: Signal = 3;
-/// Illegal instruction.
-/// Action: Terminates the process.
-pub const SIGNAL_ILL: Signal = 4;
-/// Trace/breakpoint trap.
-/// Action: Terminates the process.
-pub const SIGNAL_TRAP: Signal = 5;
-/// Process abort signal.
-/// Action: Terminates the process.
-pub const SIGNAL_ABRT: Signal = 6;
-/// Access to an undefined portion of a memory object.
-/// Action: Terminates the process.
-pub const SIGNAL_BUS: Signal = 7;
-/// Erroneous arithmetic operation.
-/// Action: Terminates the process.
-pub const SIGNAL_FPE: Signal = 8;
-/// Kill.
-/// Action: Terminates the process.
-pub const SIGNAL_KILL: Signal = 9;
-/// User-defined signal 1.
-/// Action: Terminates the process.
-pub const SIGNAL_USR1: Signal = 10;
-/// Invalid memory reference.
-/// Action: Terminates the process.
-pub const SIGNAL_SEGV: Signal = 11;
-/// User-defined signal 2.
-/// Action: Terminates the process.
-pub const SIGNAL_USR2: Signal = 12;
-/// Write on a pipe with no one to read it.
-/// Action: Ignored.
-pub const SIGNAL_PIPE: Signal = 13;
-/// Alarm clock.
-/// Action: Terminates the process.
-pub const SIGNAL_ALRM: Signal = 14;
-/// Termination signal.
-/// Action: Terminates the process.
-pub const SIGNAL_TERM: Signal = 15;
-/// Child process terminated, stopped, or continued.
-/// Action: Ignored.
-pub const SIGNAL_CHLD: Signal = 16;
-/// Continue executing, if stopped.
-/// Action: Continues executing, if stopped.
-pub const SIGNAL_CONT: Signal = 17;
-/// Stop executing.
-/// Action: Stops executing.
-pub const SIGNAL_STOP: Signal = 18;
-/// Terminal stop signal.
-/// Action: Stops executing.
-pub const SIGNAL_TSTP: Signal = 19;
-/// Background process attempting read.
-/// Action: Stops executing.
-pub const SIGNAL_TTIN: Signal = 20;
-/// Background process attempting write.
-/// Action: Stops executing.
-pub const SIGNAL_TTOU: Signal = 21;
-/// High bandwidth data is available at a socket.
-/// Action: Ignored.
-pub const SIGNAL_URG: Signal = 22;
-/// CPU time limit exceeded.
-/// Action: Terminates the process.
-pub const SIGNAL_XCPU: Signal = 23;
-/// File size limit exceeded.
-/// Action: Terminates the process.
-pub const SIGNAL_XFSZ: Signal = 24;
-/// Virtual timer expired.
-/// Action: Terminates the process.
-pub const SIGNAL_VTALRM: Signal = 25;
-/// Profiling timer expired.
-/// Action: Terminates the process.
-pub const SIGNAL_PROF: Signal = 26;
-/// Window changed.
-/// Action: Ignored.
-pub const SIGNAL_WINCH: Signal = 27;
-/// I/O possible.
-/// Action: Terminates the process.
-pub const SIGNAL_POLL: Signal = 28;
-/// Power failure.
-/// Action: Terminates the process.
-pub const SIGNAL_PWR: Signal = 29;
-/// Bad system call.
-/// Action: Terminates the process.
-pub const SIGNAL_SYS: Signal = 30;
-pub type Riflags = u16;
-/// Returns the message without removing it from the socket's receive queue.
-pub const RIFLAGS_RECV_PEEK: Riflags = 0x1;
-/// On byte-stream sockets, block until the full amount of data can be returned.
-pub const RIFLAGS_RECV_WAITALL: Riflags = 0x2;
-pub type Roflags = u16;
-/// Returned by `sock_recv`: Message data has been truncated.
-pub const ROFLAGS_RECV_DATA_TRUNCATED: Roflags = 0x1;
-pub type Siflags = u16;
-pub type Sdflags = u8;
-/// Disables further receive operations.
-pub const SDFLAGS_RD: Sdflags = 0x1;
-/// Disables further send operations.
-pub const SDFLAGS_WR: Sdflags = 0x2;
-pub type Preopentype = u8;
-/// A pre-opened directory.
-pub const PREOPENTYPE_DIR: Preopentype = 0;
-#[repr(C)]
-#[derive(Copy, Clone, Debug)]
-pub struct PrestatDir {
- /// The length of the directory name for use with `fd_prestat_dir_name`.
- pub pr_name_len: Size,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub union PrestatU {
- pub dir: PrestatDir,
-}
-#[repr(C)]
-#[derive(Copy, Clone)]
-pub struct Prestat {
- pub tag: Preopentype,
- pub u: PrestatU,
-}
-
-/// Read command-line argument data.
-/// The size of the array should match that returned by `args_sizes_get`
-pub unsafe fn args_get(argv: *mut *mut u8, argv_buf: *mut u8) -> Result<()> {
- let rc = wasi_snapshot_preview1::args_get(argv, argv_buf);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Return command-line argument data sizes.
-///
-/// ## Return
-///
-/// * `argc` - The number of arguments.
-/// * `argv_buf_size` - The size of the argument string data.
-pub unsafe fn args_sizes_get() -> Result<(Size, Size)> {
- let mut argc = MaybeUninit::uninit();
- let mut argv_buf_size = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::args_sizes_get(argc.as_mut_ptr(), argv_buf_size.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok((argc.assume_init(), argv_buf_size.assume_init()))
- }
-}
-
-/// Read environment variable data.
-/// The sizes of the buffers should match that returned by `environ_sizes_get`.
-pub unsafe fn environ_get(environ: *mut *mut u8, environ_buf: *mut u8) -> Result<()> {
- let rc = wasi_snapshot_preview1::environ_get(environ, environ_buf);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Return environment variable data sizes.
-///
-/// ## Return
-///
-/// * `environc` - The number of environment variable arguments.
-/// * `environ_buf_size` - The size of the environment variable data.
-pub unsafe fn environ_sizes_get() -> Result<(Size, Size)> {
- let mut environc = MaybeUninit::uninit();
- let mut environ_buf_size = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::environ_sizes_get(
- environc.as_mut_ptr(),
- environ_buf_size.as_mut_ptr(),
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok((environc.assume_init(), environ_buf_size.assume_init()))
- }
-}
-
-/// Return the resolution of a clock.
-/// Implementations are required to provide a non-zero value for supported clocks. For unsupported clocks,
-/// return `errno::inval`.
-/// Note: This is similar to `clock_getres` in POSIX.
-///
-/// ## Parameters
-///
-/// * `id` - The clock for which to return the resolution.
-///
-/// ## Return
-///
-/// * `resolution` - The resolution of the clock.
-pub unsafe fn clock_res_get(id: Clockid) -> Result<Timestamp> {
- let mut resolution = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::clock_res_get(id, resolution.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(resolution.assume_init())
- }
-}
-
-/// Return the time value of a clock.
-/// Note: This is similar to `clock_gettime` in POSIX.
-///
-/// ## Parameters
-///
-/// * `id` - The clock for which to return the time.
-/// * `precision` - The maximum lag (exclusive) that the returned time value may have, compared to its actual value.
-///
-/// ## Return
-///
-/// * `time` - The time value of the clock.
-pub unsafe fn clock_time_get(id: Clockid, precision: Timestamp) -> Result<Timestamp> {
- let mut time = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::clock_time_get(id, precision, time.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(time.assume_init())
- }
-}
-
-/// Provide file advisory information on a file descriptor.
-/// Note: This is similar to `posix_fadvise` in POSIX.
-///
-/// ## Parameters
-///
-/// * `offset` - The offset within the file to which the advisory applies.
-/// * `len` - The length of the region to which the advisory applies.
-/// * `advice` - The advice.
-pub unsafe fn fd_advise(fd: Fd, offset: Filesize, len: Filesize, advice: Advice) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_advise(fd, offset, len, advice);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Force the allocation of space in a file.
-/// Note: This is similar to `posix_fallocate` in POSIX.
-///
-/// ## Parameters
-///
-/// * `offset` - The offset at which to start the allocation.
-/// * `len` - The length of the area that is allocated.
-pub unsafe fn fd_allocate(fd: Fd, offset: Filesize, len: Filesize) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_allocate(fd, offset, len);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Close a file descriptor.
-/// Note: This is similar to `close` in POSIX.
-pub unsafe fn fd_close(fd: Fd) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_close(fd);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Synchronize the data of a file to disk.
-/// Note: This is similar to `fdatasync` in POSIX.
-pub unsafe fn fd_datasync(fd: Fd) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_datasync(fd);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Get the attributes of a file descriptor.
-/// Note: This returns similar flags to `fsync(fd, F_GETFL)` in POSIX, as well as additional fields.
-///
-/// ## Return
-///
-/// * `stat` - The buffer where the file descriptor's attributes are stored.
-pub unsafe fn fd_fdstat_get(fd: Fd) -> Result<Fdstat> {
- let mut stat = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::fd_fdstat_get(fd, stat.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(stat.assume_init())
- }
-}
-
-/// Adjust the flags associated with a file descriptor.
-/// Note: This is similar to `fcntl(fd, F_SETFL, flags)` in POSIX.
-///
-/// ## Parameters
-///
-/// * `flags` - The desired values of the file descriptor flags.
-pub unsafe fn fd_fdstat_set_flags(fd: Fd, flags: Fdflags) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_fdstat_set_flags(fd, flags);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Adjust the rights associated with a file descriptor.
-/// This can only be used to remove rights, and returns `errno::notcapable` if called in a way that would attempt to add rights
-///
-/// ## Parameters
-///
-/// * `fs_rights_base` - The desired rights of the file descriptor.
-pub unsafe fn fd_fdstat_set_rights(
- fd: Fd,
- fs_rights_base: Rights,
- fs_rights_inheriting: Rights,
-) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_fdstat_set_rights(fd, fs_rights_base, fs_rights_inheriting);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Return the attributes of an open file.
-///
-/// ## Return
-///
-/// * `buf` - The buffer where the file's attributes are stored.
-pub unsafe fn fd_filestat_get(fd: Fd) -> Result<Filestat> {
- let mut buf = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::fd_filestat_get(fd, buf.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(buf.assume_init())
- }
-}
-
-/// Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros.
-/// Note: This is similar to `ftruncate` in POSIX.
-///
-/// ## Parameters
-///
-/// * `size` - The desired file size.
-pub unsafe fn fd_filestat_set_size(fd: Fd, size: Filesize) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_filestat_set_size(fd, size);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Adjust the timestamps of an open file or directory.
-/// Note: This is similar to `futimens` in POSIX.
-///
-/// ## Parameters
-///
-/// * `atim` - The desired values of the data access timestamp.
-/// * `mtim` - The desired values of the data modification timestamp.
-/// * `fst_flags` - A bitmask indicating which timestamps to adjust.
-pub unsafe fn fd_filestat_set_times(
- fd: Fd,
- atim: Timestamp,
- mtim: Timestamp,
- fst_flags: Fstflags,
-) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_filestat_set_times(fd, atim, mtim, fst_flags);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Read from a file descriptor, without using and updating the file descriptor's offset.
-/// Note: This is similar to `preadv` in POSIX.
-///
-/// ## Parameters
-///
-/// * `iovs` - List of scatter/gather vectors in which to store data.
-/// * `offset` - The offset within the file at which to read.
-///
-/// ## Return
-///
-/// * `nread` - The number of bytes read.
-pub unsafe fn fd_pread(fd: Fd, iovs: IovecArray<'_>, offset: Filesize) -> Result<Size> {
- let mut nread = MaybeUninit::uninit();
- let rc =
- wasi_snapshot_preview1::fd_pread(fd, iovs.as_ptr(), iovs.len(), offset, nread.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(nread.assume_init())
- }
-}
-
-/// Return a description of the given preopened file descriptor.
-///
-/// ## Return
-///
-/// * `buf` - The buffer where the description is stored.
-pub unsafe fn fd_prestat_get(fd: Fd) -> Result<Prestat> {
- let mut buf = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::fd_prestat_get(fd, buf.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(buf.assume_init())
- }
-}
-
-/// Return a description of the given preopened file descriptor.
-///
-/// ## Parameters
-///
-/// * `path` - A buffer into which to write the preopened directory name.
-pub unsafe fn fd_prestat_dir_name(fd: Fd, path: *mut u8, path_len: Size) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_prestat_dir_name(fd, path, path_len);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Write to a file descriptor, without using and updating the file descriptor's offset.
-/// Note: This is similar to `pwritev` in POSIX.
-///
-/// ## Parameters
-///
-/// * `iovs` - List of scatter/gather vectors from which to retrieve data.
-/// * `offset` - The offset within the file at which to write.
-///
-/// ## Return
-///
-/// * `nwritten` - The number of bytes written.
-pub unsafe fn fd_pwrite(fd: Fd, iovs: CiovecArray<'_>, offset: Filesize) -> Result<Size> {
- let mut nwritten = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::fd_pwrite(
- fd,
- iovs.as_ptr(),
- iovs.len(),
- offset,
- nwritten.as_mut_ptr(),
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(nwritten.assume_init())
- }
-}
-
-/// Read from a file descriptor.
-/// Note: This is similar to `readv` in POSIX.
-///
-/// ## Parameters
-///
-/// * `iovs` - List of scatter/gather vectors to which to store data.
-///
-/// ## Return
-///
-/// * `nread` - The number of bytes read.
-pub unsafe fn fd_read(fd: Fd, iovs: IovecArray<'_>) -> Result<Size> {
- let mut nread = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::fd_read(fd, iovs.as_ptr(), iovs.len(), nread.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(nread.assume_init())
- }
-}
-
-/// Read directory entries from a directory.
-/// When successful, the contents of the output buffer consist of a sequence of
-/// directory entries. Each directory entry consists of a `dirent` object,
-/// followed by `dirent::d_namlen` bytes holding the name of the directory
-/// entry.
-/// This function fills the output buffer as much as possible, potentially
-/// truncating the last directory entry. This allows the caller to grow its
-/// read buffer size in case it's too small to fit a single large directory
-/// entry, or skip the oversized directory entry.
-///
-/// ## Parameters
-///
-/// * `buf` - The buffer where directory entries are stored
-/// * `cookie` - The location within the directory to start reading
-///
-/// ## Return
-///
-/// * `bufused` - The number of bytes stored in the read buffer. If less than the size of the read buffer, the end of the directory has been reached.
-pub unsafe fn fd_readdir(fd: Fd, buf: *mut u8, buf_len: Size, cookie: Dircookie) -> Result<Size> {
- let mut bufused = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::fd_readdir(fd, buf, buf_len, cookie, bufused.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(bufused.assume_init())
- }
-}
-
-/// Atomically replace a file descriptor by renumbering another file descriptor.
-/// Due to the strong focus on thread safety, this environment does not provide
-/// a mechanism to duplicate or renumber a file descriptor to an arbitrary
-/// number, like `dup2()`. This would be prone to race conditions, as an actual
-/// file descriptor with the same number could be allocated by a different
-/// thread at the same time.
-/// This function provides a way to atomically renumber file descriptors, which
-/// would disappear if `dup2()` were to be removed entirely.
-///
-/// ## Parameters
-///
-/// * `to` - The file descriptor to overwrite.
-pub unsafe fn fd_renumber(fd: Fd, to: Fd) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_renumber(fd, to);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Move the offset of a file descriptor.
-/// Note: This is similar to `lseek` in POSIX.
-///
-/// ## Parameters
-///
-/// * `offset` - The number of bytes to move.
-/// * `whence` - The base from which the offset is relative.
-///
-/// ## Return
-///
-/// * `newoffset` - The new offset of the file descriptor, relative to the start of the file.
-pub unsafe fn fd_seek(fd: Fd, offset: Filedelta, whence: Whence) -> Result<Filesize> {
- let mut newoffset = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::fd_seek(fd, offset, whence, newoffset.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(newoffset.assume_init())
- }
-}
-
-/// Synchronize the data and metadata of a file to disk.
-/// Note: This is similar to `fsync` in POSIX.
-pub unsafe fn fd_sync(fd: Fd) -> Result<()> {
- let rc = wasi_snapshot_preview1::fd_sync(fd);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Return the current offset of a file descriptor.
-/// Note: This is similar to `lseek(fd, 0, SEEK_CUR)` in POSIX.
-///
-/// ## Return
-///
-/// * `offset` - The current offset of the file descriptor, relative to the start of the file.
-pub unsafe fn fd_tell(fd: Fd) -> Result<Filesize> {
- let mut offset = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::fd_tell(fd, offset.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(offset.assume_init())
- }
-}
-
-/// Write to a file descriptor.
-/// Note: This is similar to `writev` in POSIX.
-///
-/// ## Parameters
-///
-/// * `iovs` - List of scatter/gather vectors from which to retrieve data.
-///
-/// ## Return
-///
-/// * `nwritten` - The number of bytes written.
-pub unsafe fn fd_write(fd: Fd, iovs: CiovecArray<'_>) -> Result<Size> {
- let mut nwritten = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::fd_write(fd, iovs.as_ptr(), iovs.len(), nwritten.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(nwritten.assume_init())
- }
-}
-
-/// Create a directory.
-/// Note: This is similar to `mkdirat` in POSIX.
-///
-/// ## Parameters
-///
-/// * `path` - The path at which to create the directory.
-pub unsafe fn path_create_directory(fd: Fd, path: &str) -> Result<()> {
- let rc = wasi_snapshot_preview1::path_create_directory(fd, path.as_ptr(), path.len());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Return the attributes of a file or directory.
-/// Note: This is similar to `stat` in POSIX.
-///
-/// ## Parameters
-///
-/// * `flags` - Flags determining the method of how the path is resolved.
-/// * `path` - The path of the file or directory to inspect.
-///
-/// ## Return
-///
-/// * `buf` - The buffer where the file's attributes are stored.
-pub unsafe fn path_filestat_get(fd: Fd, flags: Lookupflags, path: &str) -> Result<Filestat> {
- let mut buf = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::path_filestat_get(
- fd,
- flags,
- path.as_ptr(),
- path.len(),
- buf.as_mut_ptr(),
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(buf.assume_init())
- }
-}
-
-/// Adjust the timestamps of a file or directory.
-/// Note: This is similar to `utimensat` in POSIX.
-///
-/// ## Parameters
-///
-/// * `flags` - Flags determining the method of how the path is resolved.
-/// * `path` - The path of the file or directory to operate on.
-/// * `atim` - The desired values of the data access timestamp.
-/// * `mtim` - The desired values of the data modification timestamp.
-/// * `fst_flags` - A bitmask indicating which timestamps to adjust.
-pub unsafe fn path_filestat_set_times(
- fd: Fd,
- flags: Lookupflags,
- path: &str,
- atim: Timestamp,
- mtim: Timestamp,
- fst_flags: Fstflags,
-) -> Result<()> {
- let rc = wasi_snapshot_preview1::path_filestat_set_times(
- fd,
- flags,
- path.as_ptr(),
- path.len(),
- atim,
- mtim,
- fst_flags,
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Create a hard link.
-/// Note: This is similar to `linkat` in POSIX.
-///
-/// ## Parameters
-///
-/// * `old_flags` - Flags determining the method of how the path is resolved.
-/// * `old_path` - The source path from which to link.
-/// * `new_fd` - The working directory at which the resolution of the new path starts.
-/// * `new_path` - The destination path at which to create the hard link.
-pub unsafe fn path_link(
- old_fd: Fd,
- old_flags: Lookupflags,
- old_path: &str,
- new_fd: Fd,
- new_path: &str,
-) -> Result<()> {
- let rc = wasi_snapshot_preview1::path_link(
- old_fd,
- old_flags,
- old_path.as_ptr(),
- old_path.len(),
- new_fd,
- new_path.as_ptr(),
- new_path.len(),
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Open a file or directory.
-/// The returned file descriptor is not guaranteed to be the lowest-numbered
-/// file descriptor not currently open; it is randomized to prevent
-/// applications from depending on making assumptions about indexes, since this
-/// is error-prone in multi-threaded contexts. The returned file descriptor is
-/// guaranteed to be less than 2**31.
-/// Note: This is similar to `openat` in POSIX.
-///
-/// ## Parameters
-///
-/// * `dirflags` - Flags determining the method of how the path is resolved.
-/// * `path` - The relative path of the file or directory to open, relative to the
-/// `path_open::fd` directory.
-/// * `oflags` - The method by which to open the file.
-/// * `fs_rights_base` - The initial rights of the newly created file descriptor. The
-/// implementation is allowed to return a file descriptor with fewer rights
-/// than specified, if and only if those rights do not apply to the type of
-/// file being opened.
-/// The *base* rights are rights that will apply to operations using the file
-/// descriptor itself, while the *inheriting* rights are rights that apply to
-/// file descriptors derived from it.
-///
-/// ## Return
-///
-/// * `opened_fd` - The file descriptor of the file that has been opened.
-pub unsafe fn path_open(
- fd: Fd,
- dirflags: Lookupflags,
- path: &str,
- oflags: Oflags,
- fs_rights_base: Rights,
- fs_rights_inheriting: Rights,
- fdflags: Fdflags,
-) -> Result<Fd> {
- let mut opened_fd = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::path_open(
- fd,
- dirflags,
- path.as_ptr(),
- path.len(),
- oflags,
- fs_rights_base,
- fs_rights_inheriting,
- fdflags,
- opened_fd.as_mut_ptr(),
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(opened_fd.assume_init())
- }
-}
-
-/// Read the contents of a symbolic link.
-/// Note: This is similar to `readlinkat` in POSIX.
-///
-/// ## Parameters
-///
-/// * `path` - The path of the symbolic link from which to read.
-/// * `buf` - The buffer to which to write the contents of the symbolic link.
-///
-/// ## Return
-///
-/// * `bufused` - The number of bytes placed in the buffer.
-pub unsafe fn path_readlink(fd: Fd, path: &str, buf: *mut u8, buf_len: Size) -> Result<Size> {
- let mut bufused = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::path_readlink(
- fd,
- path.as_ptr(),
- path.len(),
- buf,
- buf_len,
- bufused.as_mut_ptr(),
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(bufused.assume_init())
- }
-}
-
-/// Remove a directory.
-/// Return `errno::notempty` if the directory is not empty.
-/// Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX.
-///
-/// ## Parameters
-///
-/// * `path` - The path to a directory to remove.
-pub unsafe fn path_remove_directory(fd: Fd, path: &str) -> Result<()> {
- let rc = wasi_snapshot_preview1::path_remove_directory(fd, path.as_ptr(), path.len());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Rename a file or directory.
-/// Note: This is similar to `renameat` in POSIX.
-///
-/// ## Parameters
-///
-/// * `old_path` - The source path of the file or directory to rename.
-/// * `new_fd` - The working directory at which the resolution of the new path starts.
-/// * `new_path` - The destination path to which to rename the file or directory.
-pub unsafe fn path_rename(fd: Fd, old_path: &str, new_fd: Fd, new_path: &str) -> Result<()> {
- let rc = wasi_snapshot_preview1::path_rename(
- fd,
- old_path.as_ptr(),
- old_path.len(),
- new_fd,
- new_path.as_ptr(),
- new_path.len(),
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Create a symbolic link.
-/// Note: This is similar to `symlinkat` in POSIX.
-///
-/// ## Parameters
-///
-/// * `old_path` - The contents of the symbolic link.
-/// * `new_path` - The destination path at which to create the symbolic link.
-pub unsafe fn path_symlink(old_path: &str, fd: Fd, new_path: &str) -> Result<()> {
- let rc = wasi_snapshot_preview1::path_symlink(
- old_path.as_ptr(),
- old_path.len(),
- fd,
- new_path.as_ptr(),
- new_path.len(),
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Unlink a file.
-/// Return `errno::isdir` if the path refers to a directory.
-/// Note: This is similar to `unlinkat(fd, path, 0)` in POSIX.
-///
-/// ## Parameters
-///
-/// * `path` - The path to a file to unlink.
-pub unsafe fn path_unlink_file(fd: Fd, path: &str) -> Result<()> {
- let rc = wasi_snapshot_preview1::path_unlink_file(fd, path.as_ptr(), path.len());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Concurrently poll for the occurrence of a set of events.
-///
-/// ## Parameters
-///
-/// * `r#in` - The events to which to subscribe.
-/// * `out` - The events that have occurred.
-/// * `nsubscriptions` - Both the number of subscriptions and events.
-///
-/// ## Return
-///
-/// * `nevents` - The number of events stored.
-pub unsafe fn poll_oneoff(
- r#in: *const Subscription,
- out: *mut Event,
- nsubscriptions: Size,
-) -> Result<Size> {
- let mut nevents = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::poll_oneoff(r#in, out, nsubscriptions, nevents.as_mut_ptr());
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(nevents.assume_init())
- }
-}
-
-/// Terminate the process normally. An exit code of 0 indicates successful
-/// termination of the program. The meanings of other values is dependent on
-/// the environment.
-///
-/// ## Parameters
-///
-/// * `rval` - The exit code returned by the process.
-pub unsafe fn proc_exit(rval: Exitcode) {
- wasi_snapshot_preview1::proc_exit(rval);
-}
-
-/// Send a signal to the process of the calling thread.
-/// Note: This is similar to `raise` in POSIX.
-///
-/// ## Parameters
-///
-/// * `sig` - The signal condition to trigger.
-pub unsafe fn proc_raise(sig: Signal) -> Result<()> {
- let rc = wasi_snapshot_preview1::proc_raise(sig);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Temporarily yield execution of the calling thread.
-/// Note: This is similar to `sched_yield` in POSIX.
-pub unsafe fn sched_yield() -> Result<()> {
- let rc = wasi_snapshot_preview1::sched_yield();
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Write high-quality random data into a buffer.
-/// This function blocks when the implementation is unable to immediately
-/// provide sufficient high-quality random data.
-/// This function may execute slowly, so when large mounts of random data are
-/// required, it's advisable to use this function to seed a pseudo-random
-/// number generator, rather than to provide the random data directly.
-///
-/// ## Parameters
-///
-/// * `buf` - The buffer to fill with random data.
-pub unsafe fn random_get(buf: *mut u8, buf_len: Size) -> Result<()> {
- let rc = wasi_snapshot_preview1::random_get(buf, buf_len);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-/// Receive a message from a socket.
-/// Note: This is similar to `recv` in POSIX, though it also supports reading
-/// the data into multiple buffers in the manner of `readv`.
-///
-/// ## Parameters
-///
-/// * `ri_data` - List of scatter/gather vectors to which to store data.
-/// * `ri_flags` - Message flags.
-///
-/// ## Return
-///
-/// * `ro_datalen` - Number of bytes stored in ri_data.
-/// * `ro_flags` - Message flags.
-pub unsafe fn sock_recv(
- fd: Fd,
- ri_data: IovecArray<'_>,
- ri_flags: Riflags,
-) -> Result<(Size, Roflags)> {
- let mut ro_datalen = MaybeUninit::uninit();
- let mut ro_flags = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::sock_recv(
- fd,
- ri_data.as_ptr(),
- ri_data.len(),
- ri_flags,
- ro_datalen.as_mut_ptr(),
- ro_flags.as_mut_ptr(),
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok((ro_datalen.assume_init(), ro_flags.assume_init()))
- }
-}
-
-/// Send a message on a socket.
-/// Note: This is similar to `send` in POSIX, though it also supports writing
-/// the data from multiple buffers in the manner of `writev`.
-///
-/// ## Parameters
-///
-/// * `si_data` - List of scatter/gather vectors to which to retrieve data
-/// * `si_flags` - Message flags.
-///
-/// ## Return
-///
-/// * `so_datalen` - Number of bytes transmitted.
-pub unsafe fn sock_send(fd: Fd, si_data: CiovecArray<'_>, si_flags: Siflags) -> Result<Size> {
- let mut so_datalen = MaybeUninit::uninit();
- let rc = wasi_snapshot_preview1::sock_send(
- fd,
- si_data.as_ptr(),
- si_data.len(),
- si_flags,
- so_datalen.as_mut_ptr(),
- );
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(so_datalen.assume_init())
- }
-}
-
-/// Shut down socket send and receive channels.
-/// Note: This is similar to `shutdown` in POSIX.
-///
-/// ## Parameters
-///
-/// * `how` - Which channels on the socket to shut down.
-pub unsafe fn sock_shutdown(fd: Fd, how: Sdflags) -> Result<()> {
- let rc = wasi_snapshot_preview1::sock_shutdown(fd, how);
- if let Some(err) = Error::from_raw_error(rc) {
- Err(err)
- } else {
- Ok(())
- }
-}
-
-pub mod wasi_snapshot_preview1 {
- use super::*;
- #[link(wasm_import_module = "wasi_snapshot_preview1")]
- extern "C" {
- /// Read command-line argument data.
- /// The size of the array should match that returned by `args_sizes_get`
- pub fn args_get(argv: *mut *mut u8, argv_buf: *mut u8) -> Errno;
- /// Return command-line argument data sizes.
- pub fn args_sizes_get(argc: *mut Size, argv_buf_size: *mut Size) -> Errno;
- /// Read environment variable data.
- /// The sizes of the buffers should match that returned by `environ_sizes_get`.
- pub fn environ_get(environ: *mut *mut u8, environ_buf: *mut u8) -> Errno;
- /// Return environment variable data sizes.
- pub fn environ_sizes_get(environc: *mut Size, environ_buf_size: *mut Size) -> Errno;
- /// Return the resolution of a clock.
- /// Implementations are required to provide a non-zero value for supported clocks. For unsupported clocks,
- /// return `errno::inval`.
- /// Note: This is similar to `clock_getres` in POSIX.
- pub fn clock_res_get(id: Clockid, resolution: *mut Timestamp) -> Errno;
- /// Return the time value of a clock.
- /// Note: This is similar to `clock_gettime` in POSIX.
- pub fn clock_time_get(id: Clockid, precision: Timestamp, time: *mut Timestamp) -> Errno;
- /// Provide file advisory information on a file descriptor.
- /// Note: This is similar to `posix_fadvise` in POSIX.
- pub fn fd_advise(fd: Fd, offset: Filesize, len: Filesize, advice: Advice) -> Errno;
- /// Force the allocation of space in a file.
- /// Note: This is similar to `posix_fallocate` in POSIX.
- pub fn fd_allocate(fd: Fd, offset: Filesize, len: Filesize) -> Errno;
- /// Close a file descriptor.
- /// Note: This is similar to `close` in POSIX.
- pub fn fd_close(fd: Fd) -> Errno;
- /// Synchronize the data of a file to disk.
- /// Note: This is similar to `fdatasync` in POSIX.
- pub fn fd_datasync(fd: Fd) -> Errno;
- /// Get the attributes of a file descriptor.
- /// Note: This returns similar flags to `fsync(fd, F_GETFL)` in POSIX, as well as additional fields.
- pub fn fd_fdstat_get(fd: Fd, stat: *mut Fdstat) -> Errno;
- /// Adjust the flags associated with a file descriptor.
- /// Note: This is similar to `fcntl(fd, F_SETFL, flags)` in POSIX.
- pub fn fd_fdstat_set_flags(fd: Fd, flags: Fdflags) -> Errno;
- /// Adjust the rights associated with a file descriptor.
- /// This can only be used to remove rights, and returns `errno::notcapable` if called in a way that would attempt to add rights
- pub fn fd_fdstat_set_rights(
- fd: Fd,
- fs_rights_base: Rights,
- fs_rights_inheriting: Rights,
- ) -> Errno;
- /// Return the attributes of an open file.
- pub fn fd_filestat_get(fd: Fd, buf: *mut Filestat) -> Errno;
- /// Adjust the size of an open file. If this increases the file's size, the extra bytes are filled with zeros.
- /// Note: This is similar to `ftruncate` in POSIX.
- pub fn fd_filestat_set_size(fd: Fd, size: Filesize) -> Errno;
- /// Adjust the timestamps of an open file or directory.
- /// Note: This is similar to `futimens` in POSIX.
- pub fn fd_filestat_set_times(
- fd: Fd,
- atim: Timestamp,
- mtim: Timestamp,
- fst_flags: Fstflags,
- ) -> Errno;
- /// Read from a file descriptor, without using and updating the file descriptor's offset.
- /// Note: This is similar to `preadv` in POSIX.
- pub fn fd_pread(
- fd: Fd,
- iovs_ptr: *const Iovec,
- iovs_len: usize,
- offset: Filesize,
- nread: *mut Size,
- ) -> Errno;
- /// Return a description of the given preopened file descriptor.
- pub fn fd_prestat_get(fd: Fd, buf: *mut Prestat) -> Errno;
- /// Return a description of the given preopened file descriptor.
- pub fn fd_prestat_dir_name(fd: Fd, path: *mut u8, path_len: Size) -> Errno;
- /// Write to a file descriptor, without using and updating the file descriptor's offset.
- /// Note: This is similar to `pwritev` in POSIX.
- pub fn fd_pwrite(
- fd: Fd,
- iovs_ptr: *const Ciovec,
- iovs_len: usize,
- offset: Filesize,
- nwritten: *mut Size,
- ) -> Errno;
- /// Read from a file descriptor.
- /// Note: This is similar to `readv` in POSIX.
- pub fn fd_read(fd: Fd, iovs_ptr: *const Iovec, iovs_len: usize, nread: *mut Size) -> Errno;
- /// Read directory entries from a directory.
- /// When successful, the contents of the output buffer consist of a sequence of
- /// directory entries. Each directory entry consists of a `dirent` object,
- /// followed by `dirent::d_namlen` bytes holding the name of the directory
- /// entry.
- /// This function fills the output buffer as much as possible, potentially
- /// truncating the last directory entry. This allows the caller to grow its
- /// read buffer size in case it's too small to fit a single large directory
- /// entry, or skip the oversized directory entry.
- pub fn fd_readdir(
- fd: Fd,
- buf: *mut u8,
- buf_len: Size,
- cookie: Dircookie,
- bufused: *mut Size,
- ) -> Errno;
- /// Atomically replace a file descriptor by renumbering another file descriptor.
- /// Due to the strong focus on thread safety, this environment does not provide
- /// a mechanism to duplicate or renumber a file descriptor to an arbitrary
- /// number, like `dup2()`. This would be prone to race conditions, as an actual
- /// file descriptor with the same number could be allocated by a different
- /// thread at the same time.
- /// This function provides a way to atomically renumber file descriptors, which
- /// would disappear if `dup2()` were to be removed entirely.
- pub fn fd_renumber(fd: Fd, to: Fd) -> Errno;
- /// Move the offset of a file descriptor.
- /// Note: This is similar to `lseek` in POSIX.
- pub fn fd_seek(
- fd: Fd,
- offset: Filedelta,
- whence: Whence,
- newoffset: *mut Filesize,
- ) -> Errno;
- /// Synchronize the data and metadata of a file to disk.
- /// Note: This is similar to `fsync` in POSIX.
- pub fn fd_sync(fd: Fd) -> Errno;
- /// Return the current offset of a file descriptor.
- /// Note: This is similar to `lseek(fd, 0, SEEK_CUR)` in POSIX.
- pub fn fd_tell(fd: Fd, offset: *mut Filesize) -> Errno;
- /// Write to a file descriptor.
- /// Note: This is similar to `writev` in POSIX.
- pub fn fd_write(
- fd: Fd,
- iovs_ptr: *const Ciovec,
- iovs_len: usize,
- nwritten: *mut Size,
- ) -> Errno;
- /// Create a directory.
- /// Note: This is similar to `mkdirat` in POSIX.
- pub fn path_create_directory(fd: Fd, path_ptr: *const u8, path_len: usize) -> Errno;
- /// Return the attributes of a file or directory.
- /// Note: This is similar to `stat` in POSIX.
- pub fn path_filestat_get(
- fd: Fd,
- flags: Lookupflags,
- path_ptr: *const u8,
- path_len: usize,
- buf: *mut Filestat,
- ) -> Errno;
- /// Adjust the timestamps of a file or directory.
- /// Note: This is similar to `utimensat` in POSIX.
- pub fn path_filestat_set_times(
- fd: Fd,
- flags: Lookupflags,
- path_ptr: *const u8,
- path_len: usize,
- atim: Timestamp,
- mtim: Timestamp,
- fst_flags: Fstflags,
- ) -> Errno;
- /// Create a hard link.
- /// Note: This is similar to `linkat` in POSIX.
- pub fn path_link(
- old_fd: Fd,
- old_flags: Lookupflags,
- old_path_ptr: *const u8,
- old_path_len: usize,
- new_fd: Fd,
- new_path_ptr: *const u8,
- new_path_len: usize,
- ) -> Errno;
- /// Open a file or directory.
- /// The returned file descriptor is not guaranteed to be the lowest-numbered
- /// file descriptor not currently open; it is randomized to prevent
- /// applications from depending on making assumptions about indexes, since this
- /// is error-prone in multi-threaded contexts. The returned file descriptor is
- /// guaranteed to be less than 2**31.
- /// Note: This is similar to `openat` in POSIX.
- pub fn path_open(
- fd: Fd,
- dirflags: Lookupflags,
- path_ptr: *const u8,
- path_len: usize,
- oflags: Oflags,
- fs_rights_base: Rights,
- fs_rights_inheriting: Rights,
- fdflags: Fdflags,
- opened_fd: *mut Fd,
- ) -> Errno;
- /// Read the contents of a symbolic link.
- /// Note: This is similar to `readlinkat` in POSIX.
- pub fn path_readlink(
- fd: Fd,
- path_ptr: *const u8,
- path_len: usize,
- buf: *mut u8,
- buf_len: Size,
- bufused: *mut Size,
- ) -> Errno;
- /// Remove a directory.
- /// Return `errno::notempty` if the directory is not empty.
- /// Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX.
- pub fn path_remove_directory(fd: Fd, path_ptr: *const u8, path_len: usize) -> Errno;
- /// Rename a file or directory.
- /// Note: This is similar to `renameat` in POSIX.
- pub fn path_rename(
- fd: Fd,
- old_path_ptr: *const u8,
- old_path_len: usize,
- new_fd: Fd,
- new_path_ptr: *const u8,
- new_path_len: usize,
- ) -> Errno;
- /// Create a symbolic link.
- /// Note: This is similar to `symlinkat` in POSIX.
- pub fn path_symlink(
- old_path_ptr: *const u8,
- old_path_len: usize,
- fd: Fd,
- new_path_ptr: *const u8,
- new_path_len: usize,
- ) -> Errno;
- /// Unlink a file.
- /// Return `errno::isdir` if the path refers to a directory.
- /// Note: This is similar to `unlinkat(fd, path, 0)` in POSIX.
- pub fn path_unlink_file(fd: Fd, path_ptr: *const u8, path_len: usize) -> Errno;
- /// Concurrently poll for the occurrence of a set of events.
- pub fn poll_oneoff(
- r#in: *const Subscription,
- out: *mut Event,
- nsubscriptions: Size,
- nevents: *mut Size,
- ) -> Errno;
- /// Terminate the process normally. An exit code of 0 indicates successful
- /// termination of the program. The meanings of other values is dependent on
- /// the environment.
- pub fn proc_exit(rval: Exitcode) -> !;
- /// Send a signal to the process of the calling thread.
- /// Note: This is similar to `raise` in POSIX.
- pub fn proc_raise(sig: Signal) -> Errno;
- /// Temporarily yield execution of the calling thread.
- /// Note: This is similar to `sched_yield` in POSIX.
- pub fn sched_yield() -> Errno;
- /// Write high-quality random data into a buffer.
- /// This function blocks when the implementation is unable to immediately
- /// provide sufficient high-quality random data.
- /// This function may execute slowly, so when large mounts of random data are
- /// required, it's advisable to use this function to seed a pseudo-random
- /// number generator, rather than to provide the random data directly.
- pub fn random_get(buf: *mut u8, buf_len: Size) -> Errno;
- /// Receive a message from a socket.
- /// Note: This is similar to `recv` in POSIX, though it also supports reading
- /// the data into multiple buffers in the manner of `readv`.
- pub fn sock_recv(
- fd: Fd,
- ri_data_ptr: *const Iovec,
- ri_data_len: usize,
- ri_flags: Riflags,
- ro_datalen: *mut Size,
- ro_flags: *mut Roflags,
- ) -> Errno;
- /// Send a message on a socket.
- /// Note: This is similar to `send` in POSIX, though it also supports writing
- /// the data from multiple buffers in the manner of `writev`.
- pub fn sock_send(
- fd: Fd,
- si_data_ptr: *const Ciovec,
- si_data_len: usize,
- si_flags: Siflags,
- so_datalen: *mut Size,
- ) -> Errno;
- /// Shut down socket send and receive channels.
- /// Note: This is similar to `shutdown` in POSIX.
- pub fn sock_shutdown(fd: Fd, how: Sdflags) -> Errno;
- }
-}
diff --git a/vendor/xflags-macros/.cargo-checksum.json b/vendor/xflags-macros/.cargo-checksum.json
index 98f5dfe97..fcc17d504 100644
--- a/vendor/xflags-macros/.cargo-checksum.json
+++ b/vendor/xflags-macros/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.toml":"23f3d89d0198bfa3552286396432e2ace70627773527eaaf62ed4d3ef1b37166","src/ast.rs":"bf42c4e474893d5dbd4fa3c9b392d3f837219fabb2042cfc26acc08b2ddc6f4a","src/emit.rs":"390be2d24bc21d5644c9c69624fd263bfa7dc0f3081799481177a45952168d51","src/lib.rs":"f00a5c9e671a82263d4cf4cced2895bb93ae03220112bc385553573cf9c4cd05","src/parse.rs":"2c2c9118d1f0447a946a78753edb65edd6eeb4f2a27707f5601232c8880aba85","src/update.rs":"feb2cefca834dad6550b6539be7ec9b98fedb608cd09aeddf808350c638d67b8","tests/it/help.rs":"53dbb8b5c6e09649143dc8f9e5cd690db776271a1ea778726146fc04be8583f4","tests/it/main.rs":"3cde1afb05f2470642f0f590cbed24fb553bd0ac1da0fcae93a02ffe42247d97","tests/it/repeated_pos.rs":"1b2b922beb182899504cd36440fd1547026a8a5ef4f79b483a2695227f06c4a8","tests/it/smoke.rs":"5d304f8b24716d63081965914bf4bcf9fc8bfccf30d3f49fb9d71e3405917fd2","tests/it/src/help.rs":"7430f8773b5a8dc3607fbadc04d562f015f056062d373897675140e591da4b60","tests/it/src/repeated_pos.rs":"161b39be8e543ef6dd3f019162c85b9e6d22c30dcd6297e947a2872ed1bc3c5f","tests/it/src/smoke.rs":"f17d4ffb6177fc83aa7f0ad235a487a15490a9f646e7789af8a92db4ea9552fe","tests/it/src/subcommands.rs":"1147d1a7de73cb20d5604a3e08ce43b32a89dbb9ee37aa8c595f6138a083abb9","tests/it/subcommands.rs":"dab409a1b14755122ea42a3169d4a020ce1e548e52a56211874efeb73551de08"},"package":"45d11d5fc2a97287eded8b170ca80533b3c42646dd7fa386a5eb045817921022"} \ No newline at end of file
+{"files":{"Cargo.toml":"dff52eef5d3a126eefb38eb66ecb194dd9ccd22a6e010df2b672d83264ac65a5","src/ast.rs":"1f3be0fa1c340dbd98f56fd1c10a43b081d4b9179b1666a3dd3f32d8082e452c","src/emit.rs":"03e692330adc927c1d7ea36faebec0df997dd2e6bfb4816661988078b59fdb0b","src/lib.rs":"ce57137b3db248a73b201a5add6b1ac5c80e431e2bc2947962d4b0b6f397a449","src/parse.rs":"15e860ce666b17228ae537b322c096a64696c83b620468a14112bab30c0432a8","src/update.rs":"133dbc864182808ea7679b815863117b51ccc59a0e43796321f9d5a2edcb3ed6","tests/data/help.rs":"a952a2f641fa6db5c7bd25d8480c1dff4f1146db21a0629e0506e4bc87c46d0c","tests/data/repeated_pos.rs":"60b7d6378583765ddda1be127d3f40aa34cf802c64008e9d3a456f5e20100290","tests/data/smoke.rs":"c5d626382c22f147deb0be9396bf4f8256d64618451f8c9b85002d3525c7fff6","tests/data/subcommands.rs":"c2020f895380c95ca6c97f124615ed64f838a6ee3d1bcce8842029c6cef55188","tests/it/help.rs":"d12aba6869f7d40984c9294591fb97fea7d8caf062969e5ae640ba21957a26c3","tests/it/main.rs":"08311bc06020d980867bd696040c6ddd4893700c7a181d4b9d256ef100945a46","tests/it/repeated_pos.rs":"f9acef062eda5ad43722cade6ebde4c0077174a0fae4e2c3c9555ad6dd490599","tests/it/smoke.rs":"3324c20e79258fca2dfe30a7312b5e192d09c104a30142b1362dd89e746d1306","tests/it/subcommands.rs":"900726a1309d753aa3b666c9b3051ec0b26cb1bf59c1d072704d8e497cfa18c4"},"package":"2afbd7f2039bb6cad2dd45f0c5dff49c0d4e26118398768b7a605524d4251809"} \ No newline at end of file
diff --git a/vendor/xflags-macros/Cargo.toml b/vendor/xflags-macros/Cargo.toml
index a224e51a6..70b748f0a 100644
--- a/vendor/xflags-macros/Cargo.toml
+++ b/vendor/xflags-macros/Cargo.toml
@@ -10,16 +10,18 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2018"
+edition = "2021"
name = "xflags-macros"
-version = "0.2.4"
+version = "0.3.0"
authors = ["Aleksey Kladov <aleksey.kladov@gmail.com>"]
description = "Private implementation details of xflags."
license = "MIT OR Apache-2.0"
repository = "https://github.com/matklad/xflags"
+resolver = "1"
[lib]
proc-macro = true
+
[dev-dependencies.expect-test]
version = "1"
diff --git a/vendor/xflags-macros/src/ast.rs b/vendor/xflags-macros/src/ast.rs
index 5ccebd951..7fb9df1e1 100644
--- a/vendor/xflags-macros/src/ast.rs
+++ b/vendor/xflags-macros/src/ast.rs
@@ -4,6 +4,12 @@ pub(crate) struct XFlags {
pub(crate) cmd: Cmd,
}
+impl XFlags {
+ pub fn is_anon(&self) -> bool {
+ self.cmd.name.is_empty()
+ }
+}
+
#[derive(Debug)]
pub(crate) struct Cmd {
pub(crate) name: String,
@@ -12,6 +18,7 @@ pub(crate) struct Cmd {
pub(crate) flags: Vec<Flag>,
pub(crate) subcommands: Vec<Cmd>,
pub(crate) default: bool,
+ pub(crate) idx: u8,
}
#[derive(Debug)]
@@ -30,6 +37,12 @@ pub(crate) struct Flag {
pub(crate) val: Option<Val>,
}
+impl Flag {
+ pub(crate) fn is_help(&self) -> bool {
+ self.name == "help"
+ }
+}
+
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub(crate) enum Arity {
Optional,
diff --git a/vendor/xflags-macros/src/emit.rs b/vendor/xflags-macros/src/emit.rs
index 05d5f01dd..1f3d88ead 100644
--- a/vendor/xflags-macros/src/emit.rs
+++ b/vendor/xflags-macros/src/emit.rs
@@ -1,15 +1,25 @@
use crate::{ast, update};
-use std::{fmt::Write, path::Path};
+use std::{env, fmt::Write, path::Path};
+
+macro_rules! w {
+ ($($tt:tt)*) => {
+ drop(write!($($tt)*))
+ };
+}
pub(crate) fn emit(xflags: &ast::XFlags) -> String {
let mut buf = String::new();
+ if xflags.is_anon() {
+ w!(buf, "{{\n");
+ }
+
emit_cmd(&mut buf, &xflags.cmd);
blank_line(&mut buf);
emit_api(&mut buf, xflags);
- if std::env::var("UPDATE_XFLAGS").is_ok() {
+ if !xflags.is_anon() && env::var("UPDATE_XFLAGS").is_ok() {
if let Some(src) = &xflags.src {
update::in_place(&buf, Path::new(src.as_str()))
} else {
@@ -22,22 +32,22 @@ pub(crate) fn emit(xflags: &ast::XFlags) -> String {
}
blank_line(&mut buf);
- emit_impls(&mut buf, &xflags);
+ emit_impls(&mut buf, xflags);
emit_help(&mut buf, xflags);
- buf
-}
+ if xflags.is_anon() {
+ w!(buf, "Flags::from_env_or_exit()");
+ w!(buf, "}}\n");
+ }
-macro_rules! w {
- ($($tt:tt)*) => {
- drop(write!($($tt)*))
- };
+ buf
}
fn emit_cmd(buf: &mut String, cmd: &ast::Cmd) {
w!(buf, "#[derive(Debug)]\n");
w!(buf, "pub struct {}", cmd.ident());
- if cmd.args.is_empty() && cmd.flags.is_empty() && cmd.subcommands.is_empty() {
+ let flags = cmd.flags.iter().filter(|it| !it.is_help()).collect::<Vec<_>>();
+ if cmd.args.is_empty() && flags.is_empty() && cmd.subcommands.is_empty() {
w!(buf, ";\n");
return;
}
@@ -45,16 +55,16 @@ fn emit_cmd(buf: &mut String, cmd: &ast::Cmd) {
for arg in &cmd.args {
let ty = gen_arg_ty(arg.arity, &arg.val.ty);
- w!(buf, " pub {}: {},\n", arg.val.ident(), ty);
+ w!(buf, " pub {}: {ty},\n", arg.val.ident());
}
- if !cmd.args.is_empty() && !cmd.flags.is_empty() {
+ if !cmd.args.is_empty() && !flags.is_empty() {
blank_line(buf);
}
- for flag in &cmd.flags {
+ for flag in &flags {
let ty = gen_flag_ty(flag.arity, flag.val.as_ref().map(|it| &it.ty));
- w!(buf, " pub {}: {},\n", flag.ident(), ty);
+ w!(buf, " pub {}: {ty},\n", flag.ident());
}
if cmd.has_subcommands() {
@@ -67,8 +77,8 @@ fn emit_cmd(buf: &mut String, cmd: &ast::Cmd) {
w!(buf, "#[derive(Debug)]\n");
w!(buf, "pub enum {} {{\n", cmd.cmd_enum_ident());
for sub in &cmd.subcommands {
- let name = camel(&sub.name);
- w!(buf, " {}({}),\n", name, name);
+ let name = sub.ident();
+ w!(buf, " {name}({name}),\n");
}
w!(buf, "}}\n");
@@ -104,9 +114,12 @@ fn gen_arg_ty(arity: ast::Arity, ty: &ast::Ty) -> String {
}
fn emit_api(buf: &mut String, xflags: &ast::XFlags) {
- w!(buf, "impl {} {{\n", camel(&xflags.cmd.name));
+ w!(buf, "impl {} {{\n", xflags.cmd.ident());
- w!(buf, " pub const HELP: &'static str = Self::HELP_;\n");
+ w!(buf, " #[allow(dead_code)]\n");
+ w!(buf, " pub fn from_env_or_exit() -> Self {{\n");
+ w!(buf, " Self::from_env_or_exit_()\n");
+ w!(buf, " }}\n");
blank_line(buf);
w!(buf, " #[allow(dead_code)]\n");
@@ -123,7 +136,10 @@ fn emit_api(buf: &mut String, xflags: &ast::XFlags) {
}
fn emit_impls(buf: &mut String, xflags: &ast::XFlags) -> () {
- w!(buf, "impl {} {{\n", camel(&xflags.cmd.name));
+ w!(buf, "impl {} {{\n", xflags.cmd.ident());
+ w!(buf, " fn from_env_or_exit_() -> Self {{\n");
+ w!(buf, " Self::from_env_().unwrap_or_else(|err| err.exit())\n");
+ w!(buf, " }}\n");
w!(buf, " fn from_env_() -> xflags::Result<Self> {{\n");
w!(buf, " let mut p = xflags::rt::Parser::new_from_env();\n");
w!(buf, " Self::parse_(&mut p)\n");
@@ -134,101 +150,115 @@ fn emit_impls(buf: &mut String, xflags: &ast::XFlags) -> () {
w!(buf, " }}\n");
w!(buf, "}}\n");
blank_line(buf);
- emit_impls_rec(buf, &xflags.cmd)
-}
-
-fn emit_impls_rec(buf: &mut String, cmd: &ast::Cmd) -> () {
- emit_impl(buf, cmd);
- for sub in &cmd.subcommands {
- blank_line(buf);
- emit_impls_rec(buf, sub);
- }
+ emit_parse(buf, &xflags.cmd)
}
-fn emit_impl(buf: &mut String, cmd: &ast::Cmd) -> () {
- w!(buf, "impl {} {{\n", camel(&cmd.name));
+fn emit_parse(buf: &mut String, cmd: &ast::Cmd) {
+ w!(buf, "impl {} {{\n", cmd.ident());
w!(buf, "fn parse_(p_: &mut xflags::rt::Parser) -> xflags::Result<Self> {{\n");
+ w!(buf, "#![allow(non_snake_case)]\n");
- for flag in &cmd.flags {
- w!(buf, "let mut {} = Vec::new();\n", flag.ident());
- }
+ let mut prefix = String::new();
+ emit_locals_rec(buf, &mut prefix, cmd);
blank_line(buf);
+ w!(buf, "let mut state_ = 0u8;\n");
+ w!(buf, "while let Some(arg_) = p_.pop_flag() {{\n");
+ w!(buf, "match arg_ {{\n");
+ {
+ w!(buf, "Ok(flag_) => match (state_, flag_.as_str()) {{\n");
+ emit_match_flag_rec(buf, &mut prefix, cmd);
+ w!(buf, "_ => return Err(p_.unexpected_flag(&flag_)),\n");
+ w!(buf, "}}\n");
- if !cmd.args.is_empty() {
- for arg in &cmd.args {
- w!(buf, "let mut {} = (false, Vec::new());\n", arg.val.ident());
- }
- blank_line(buf);
+ w!(buf, "Err(arg_) => match (state_, arg_.to_str().unwrap_or(\"\")) {{\n");
+ emit_match_arg_rec(buf, &mut prefix, cmd);
+ w!(buf, "_ => return Err(p_.unexpected_arg(arg_)),\n");
+ w!(buf, "}}\n");
}
+ w!(buf, "}}\n");
+ w!(buf, "}}\n");
+ emit_default_transitions(buf, cmd);
- if cmd.has_subcommands() {
- w!(buf, "let mut sub_ = None;");
- blank_line(buf);
+ w!(buf, "Ok(");
+ emit_record_rec(buf, &mut prefix, cmd);
+ w!(buf, ")");
+
+ w!(buf, "}}\n");
+ w!(buf, "}}\n");
+}
+
+fn emit_locals_rec(buf: &mut String, prefix: &mut String, cmd: &ast::Cmd) {
+ for flag in &cmd.flags {
+ if !flag.is_help() {
+ w!(buf, "let mut {prefix}{} = Vec::new();\n", flag.ident());
+ }
+ }
+ for arg in &cmd.args {
+ w!(buf, "let mut {prefix}{} = (false, Vec::new());\n", arg.val.ident());
+ }
+ for sub in &cmd.subcommands {
+ let l = sub.push_prefix(prefix);
+ emit_locals_rec(buf, prefix, sub);
+ prefix.truncate(l);
}
+}
- w!(buf, "while let Some(arg_) = p_.pop_flag() {{\n");
- w!(buf, "match arg_ {{\n");
- {
- w!(buf, "Ok(flag_) => match flag_.as_str() {{\n");
- for flag in &cmd.flags {
- w!(buf, "\"--{}\"", flag.name);
- if let Some(short) = &flag.short {
- w!(buf, "| \"-{}\"", short);
- }
- w!(buf, " => {}.push(", flag.ident());
+fn emit_match_flag_rec(buf: &mut String, prefix: &mut String, cmd: &ast::Cmd) {
+ for flag in &cmd.flags {
+ w!(buf, "(");
+ emit_all_ids_rec(buf, cmd);
+ w!(buf, ", \"--{}\"", flag.name);
+ if let Some(short) = &flag.short {
+ w!(buf, "| \"-{short}\"");
+ }
+ w!(buf, ") => ");
+ if flag.is_help() {
+ w!(buf, "return Err(p_.help(Self::HELP_)),");
+ } else {
+ w!(buf, "{prefix}{}.push(", flag.ident());
match &flag.val {
Some(val) => match &val.ty {
ast::Ty::OsString | ast::Ty::PathBuf => {
w!(buf, "p_.next_value(&flag_)?.into()")
}
ast::Ty::FromStr(ty) => {
- w!(buf, "p_.next_value_from_str::<{}>(&flag_)?", ty)
+ w!(buf, "p_.next_value_from_str::<{ty}>(&flag_)?")
}
},
None => w!(buf, "()"),
}
w!(buf, "),");
}
- if cmd.default_subcommand().is_some() {
- w!(buf, "_ => {{ p_.push_back(Ok(flag_)); break; }}");
- } else {
- w!(buf, "_ => return Err(p_.unexpected_flag(&flag_)),");
- }
- w!(buf, "}}\n");
}
- {
- w!(buf, "Err(arg_) => {{\n");
- if cmd.has_subcommands() {
- w!(buf, "match arg_.to_str().unwrap_or(\"\") {{\n");
- for sub in cmd.named_subcommands() {
- w!(buf, "\"{}\" => {{\n", sub.name);
- w!(
- buf,
- "sub_ = Some({}::{}({}::parse_(p_)?));",
- cmd.cmd_enum_ident(),
- sub.ident(),
- sub.ident()
- );
- w!(buf, "break;");
- w!(buf, "}}\n");
- }
- w!(buf, "_ => (),\n");
- w!(buf, "}}\n");
- }
+ if let Some(sub) = cmd.default_subcommand() {
+ w!(buf, "({}, _) => {{ p_.push_back(Ok(flag_)); state_ = {}; }}", cmd.idx, sub.idx);
+ }
+ for sub in &cmd.subcommands {
+ let l = sub.push_prefix(prefix);
+ emit_match_flag_rec(buf, prefix, sub);
+ prefix.truncate(l);
+ }
+}
+fn emit_match_arg_rec(buf: &mut String, prefix: &mut String, cmd: &ast::Cmd) {
+ for sub in cmd.named_subcommands() {
+ w!(buf, "({}, \"{}\") => state_ = {},\n", cmd.idx, sub.name, sub.idx);
+ }
+ if !cmd.args.is_empty() || cmd.has_subcommands() {
+ w!(buf, "({}, _) => {{\n", cmd.idx);
for arg in &cmd.args {
let done = match arg.arity {
ast::Arity::Optional | ast::Arity::Required => "done_ @ ",
ast::Arity::Repeated => "",
};
- w!(buf, "if let ({}false, buf_) = &mut {} {{\n", done, arg.val.ident());
+ w!(buf, "if let ({done}false, buf_) = &mut {prefix}{} {{\n", arg.val.ident());
w!(buf, "buf_.push(");
match &arg.val.ty {
ast::Ty::OsString | ast::Ty::PathBuf => {
w!(buf, "arg_.into()")
}
ast::Ty::FromStr(ty) => {
- w!(buf, "p_.value_from_str::<{}>(\"{}\", arg_)?", ty, arg.val.name);
+ w!(buf, "p_.value_from_str::<{ty}>(\"{}\", arg_)?", arg.val.name);
}
}
w!(buf, ");\n");
@@ -241,79 +271,110 @@ fn emit_impl(buf: &mut String, cmd: &ast::Cmd) -> () {
w!(buf, "continue;\n");
w!(buf, "}}\n");
}
- if cmd.default_subcommand().is_some() {
- w!(buf, "p_.push_back(Err(arg_)); break;");
+
+ if let Some(sub) = cmd.default_subcommand() {
+ w!(buf, "p_.push_back(Err(arg_)); state_ = {};", sub.idx);
} else {
w!(buf, "return Err(p_.unexpected_arg(arg_));");
}
w!(buf, "}}\n");
}
- w!(buf, "}}\n");
- w!(buf, "}}\n");
- if let Some(sub) = cmd.default_subcommand() {
- w!(buf, "if sub_.is_none() {{\n");
- w!(
- buf,
- "sub_ = Some({}::{}({}::parse_(p_)?));",
- cmd.cmd_enum_ident(),
- sub.ident(),
- sub.ident()
- );
- w!(buf, "}}\n");
+ for sub in &cmd.subcommands {
+ let l = sub.push_prefix(prefix);
+ emit_match_arg_rec(buf, prefix, sub);
+ prefix.truncate(l);
}
+}
- w!(buf, "Ok(Self {{\n");
- if !cmd.args.is_empty() {
- for arg in &cmd.args {
- let val = &arg.val;
- w!(buf, "{}: ", val.ident());
- match arg.arity {
- ast::Arity::Optional => {
- w!(buf, "p_.optional(\"{}\", {}.1)?", val.name, val.ident())
- }
- ast::Arity::Required => {
- w!(buf, "p_.required(\"{}\", {}.1)?", val.name, val.ident())
- }
- ast::Arity::Repeated => w!(buf, "{}.1", val.ident()),
- }
- w!(buf, ",\n");
- }
- blank_line(buf);
- }
+fn emit_record_rec(buf: &mut String, prefix: &mut String, cmd: &ast::Cmd) {
+ w!(buf, "{} {{\n", cmd.ident());
for flag in &cmd.flags {
+ if flag.is_help() {
+ continue;
+ }
w!(buf, "{}: ", flag.ident());
match &flag.val {
Some(_val) => match flag.arity {
ast::Arity::Optional => {
- w!(buf, "p_.optional(\"--{}\", {})?", flag.name, flag.ident())
+ w!(buf, "p_.optional(\"--{}\", {prefix}{})?", flag.name, flag.ident())
}
ast::Arity::Required => {
- w!(buf, "p_.required(\"--{}\", {})?", flag.name, flag.ident())
+ w!(buf, "p_.required(\"--{}\", {prefix}{})?", flag.name, flag.ident())
}
- ast::Arity::Repeated => w!(buf, "{}", flag.ident()),
+ ast::Arity::Repeated => w!(buf, "{prefix}{}", flag.ident()),
},
None => match flag.arity {
ast::Arity::Optional => {
- w!(buf, "p_.optional(\"--{}\", {})?.is_some()", flag.name, flag.ident())
+ w!(buf, "p_.optional(\"--{}\", {prefix}{})?.is_some()", flag.name, flag.ident())
}
ast::Arity::Required => {
- w!(buf, "p_.required(\"--{}\", {})?", flag.name, flag.ident())
+ w!(buf, "p_.required(\"--{}\", {prefix}{})?", flag.name, flag.ident())
}
- ast::Arity::Repeated => w!(buf, "{}.len() as u32", flag.ident()),
+ ast::Arity::Repeated => w!(buf, "{prefix}{}.len() as u32", flag.ident()),
},
}
w!(buf, ",\n");
}
+ for arg in &cmd.args {
+ let val = &arg.val;
+ w!(buf, "{}: ", val.ident());
+ match arg.arity {
+ ast::Arity::Optional => {
+ w!(buf, "p_.optional(\"{}\", {prefix}{}.1)?", val.name, val.ident())
+ }
+ ast::Arity::Required => {
+ w!(buf, "p_.required(\"{}\", {prefix}{}.1)?", val.name, val.ident())
+ }
+ ast::Arity::Repeated => w!(buf, "{prefix}{}.1", val.ident()),
+ }
+ w!(buf, ",\n");
+ }
if cmd.has_subcommands() {
- w!(buf, "subcommand: p_.subcommand(sub_)?,\n");
+ w!(buf, "subcommand: match state_ {{\n");
+ for sub in &cmd.subcommands {
+ emit_leaf_ids_rec(buf, sub);
+ w!(buf, " => {}::{}(", cmd.cmd_enum_ident(), sub.ident());
+ let l = prefix.len();
+ prefix.push_str(&snake(&sub.name));
+ prefix.push_str("__");
+ emit_record_rec(buf, prefix, sub);
+ prefix.truncate(l);
+ w!(buf, "),\n");
+ }
+ w!(buf, "_ => return Err(p_.subcommand_required()),");
+ w!(buf, "}}\n");
}
- w!(buf, "}})\n");
- w!(buf, "}}\n");
- w!(buf, "}}\n");
+ w!(buf, "}}");
+}
+
+fn emit_leaf_ids_rec(buf: &mut String, cmd: &ast::Cmd) {
+ if cmd.has_subcommands() {
+ for sub in &cmd.subcommands {
+ emit_leaf_ids_rec(buf, sub)
+ }
+ } else {
+ w!(buf, "| {}", cmd.idx)
+ }
+}
+
+fn emit_all_ids_rec(buf: &mut String, cmd: &ast::Cmd) {
+ w!(buf, "| {}", cmd.idx);
+ for sub in &cmd.subcommands {
+ emit_all_ids_rec(buf, sub)
+ }
+}
+
+fn emit_default_transitions(buf: &mut String, cmd: &ast::Cmd) {
+ if let Some(sub) = cmd.default_subcommand() {
+ w!(buf, "state_ = if state_ == {} {{ {} }} else {{ state_ }};", cmd.idx, sub.idx);
+ }
+ for sub in &cmd.subcommands {
+ emit_default_transitions(buf, sub);
+ }
}
fn emit_help(buf: &mut String, xflags: &ast::XFlags) {
@@ -327,7 +388,7 @@ fn emit_help(buf: &mut String, xflags: &ast::XFlags) {
let help = format!("{:?}", help);
let help = help.replace("\\n", "\n").replacen("\"", "\"\\\n", 1);
- w!(buf, "const HELP_: &'static str = {};", help);
+ w!(buf, "const HELP_: &'static str = {help};");
w!(buf, "}}\n");
}
@@ -336,26 +397,34 @@ fn write_lines_indented(buf: &mut String, multiline_str: &str, indent: usize) {
if line.is_empty() {
w!(buf, "\n")
} else {
- w!(buf, "{blank:indent$}{}\n", line, indent = indent, blank = "");
+ w!(buf, "{blank:indent$}{line}\n", blank = "");
}
}
}
fn help_rec(buf: &mut String, prefix: &str, cmd: &ast::Cmd) {
- w!(buf, "{}{}\n", prefix, cmd.name);
+ let mut empty_help = true;
+ if !cmd.name.is_empty() {
+ empty_help = false;
+ w!(buf, "{}{}\n", prefix, cmd.name);
+ }
if let Some(doc) = &cmd.doc {
+ empty_help = false;
write_lines_indented(buf, doc, 2);
}
let indent = if prefix.is_empty() { "" } else { " " };
let args = cmd.args_with_default();
if !args.is_empty() {
- blank_line(buf);
+ if !empty_help {
+ blank_line(buf);
+ }
+ empty_help = false;
w!(buf, "{}ARGS:\n", indent);
let mut blank = "";
for arg in &args {
- w!(buf, "{}", blank);
+ w!(buf, "{blank}");
blank = "\n";
let (l, r) = match arg.arity {
@@ -363,7 +432,7 @@ fn help_rec(buf: &mut String, prefix: &str, cmd: &ast::Cmd) {
ast::Arity::Required => ("<", ">"),
ast::Arity::Repeated => ("<", ">..."),
};
- w!(buf, " {}{}{}\n", l, arg.val.name, r);
+ w!(buf, " {l}{}{r}\n", arg.val.name);
if let Some(doc) = &arg.doc {
write_lines_indented(buf, doc, 6)
}
@@ -372,17 +441,19 @@ fn help_rec(buf: &mut String, prefix: &str, cmd: &ast::Cmd) {
let flags = cmd.flags_with_default();
if !flags.is_empty() {
- blank_line(buf);
- w!(buf, "{}OPTIONS:\n", indent);
+ if !empty_help {
+ blank_line(buf);
+ }
+ w!(buf, "{indent}OPTIONS:\n");
let mut blank = "";
for flag in &flags {
- w!(buf, "{}", blank);
+ w!(buf, "{blank}",);
blank = "\n";
- let short = flag.short.as_ref().map(|it| format!("-{}, ", it)).unwrap_or_default();
+ let short = flag.short.as_ref().map(|it| format!("-{it}, ")).unwrap_or_default();
let value = flag.val.as_ref().map(|it| format!(" <{}>", it.name)).unwrap_or_default();
- w!(buf, " {}--{}{}\n", short, flag.name, value);
+ w!(buf, " {short}--{}{value}\n", flag.name);
if let Some(doc) = &flag.doc {
write_lines_indented(buf, doc, 6);
}
@@ -407,11 +478,20 @@ fn help_rec(buf: &mut String, prefix: &str, cmd: &ast::Cmd) {
impl ast::Cmd {
fn ident(&self) -> String {
+ if self.name.is_empty() {
+ return "Flags".to_string();
+ }
camel(&self.name)
}
fn cmd_enum_ident(&self) -> String {
format!("{}Cmd", self.ident())
}
+ fn push_prefix(&self, buf: &mut String) -> usize {
+ let l = buf.len();
+ buf.push_str(&snake(&self.name));
+ buf.push_str("__");
+ l
+ }
fn has_subcommands(&self) -> bool {
!self.subcommands.is_empty()
}
@@ -510,10 +590,10 @@ mod tests {
#[test]
fn gen_it() {
- let test_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("tests/it");
+ let test_dir = Path::new(env!("CARGO_MANIFEST_DIR")).join("tests");
let mut did_update = false;
- for entry in fs::read_dir(test_dir.join("src")).unwrap() {
+ for entry in fs::read_dir(test_dir.join("data")).unwrap() {
let entry = entry.unwrap();
let text = fs::read_to_string(entry.path()).unwrap();
@@ -531,7 +611,7 @@ mod tests {
);
let name = entry.file_name();
- did_update |= update_on_disk_if_different(&test_dir.join(name), code);
+ did_update |= update_on_disk_if_different(&test_dir.join("it").join(name), code);
if fmt.is_none() {
panic!("syntax error");
diff --git a/vendor/xflags-macros/src/lib.rs b/vendor/xflags-macros/src/lib.rs
index 8fac00587..f1c0e0599 100644
--- a/vendor/xflags-macros/src/lib.rs
+++ b/vendor/xflags-macros/src/lib.rs
@@ -8,19 +8,39 @@ pub fn xflags(_ts: proc_macro::TokenStream) -> proc_macro::TokenStream {
// Stub out the code, but let rust-analyzer resolve the invocation
#[cfg(not(test))]
{
- let cmd = parse::parse(_ts).unwrap();
- let text = emit::emit(&cmd);
+ let text = match parse::xflags(_ts) {
+ Ok(cmd) => emit::emit(&cmd),
+ Err(err) => format!("compile_error!(\"invalid flags syntax, {err}\");"),
+ };
text.parse().unwrap()
}
#[cfg(test)]
unimplemented!()
}
+#[proc_macro]
+pub fn parse_or_exit(_ts: proc_macro::TokenStream) -> proc_macro::TokenStream {
+ // Stub out the code, but let rust-analyzer resolve the invocation
+ #[cfg(not(test))]
+ {
+ let text = match parse::parse_or_exit(_ts) {
+ Ok(cmd) => emit::emit(&cmd),
+ Err(err) => format!("compile_error!(\"invalid flags syntax, {err}\")"),
+ };
+ text.parse().unwrap()
+ }
+ #[cfg(test)]
+ {
+ let _ = parse::parse_or_exit;
+ unimplemented!();
+ }
+}
+
#[cfg(test)]
pub fn compile(src: &str) -> String {
use proc_macro2::TokenStream;
let ts = src.parse::<TokenStream>().unwrap();
- let cmd = parse::parse(ts).unwrap();
+ let cmd = parse::xflags(ts).unwrap();
emit::emit(&cmd)
}
diff --git a/vendor/xflags-macros/src/parse.rs b/vendor/xflags-macros/src/parse.rs
index e9749b141..48f9588e9 100644
--- a/vendor/xflags-macros/src/parse.rs
+++ b/vendor/xflags-macros/src/parse.rs
@@ -1,4 +1,4 @@
-use std::mem;
+use std::{fmt, mem};
#[cfg(not(test))]
use proc_macro::{Delimiter, TokenStream, TokenTree};
@@ -16,15 +16,41 @@ pub(crate) struct Error {
impl std::error::Error for Error {}
-impl std::fmt::Display for Error {
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- write!(f, "{}", self.msg)
+impl fmt::Display for Error {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ fmt::Display::fmt(&self.msg, f)
}
}
-pub(crate) fn parse(ts: TokenStream) -> Result<ast::XFlags> {
- let mut p = Parser::new(ts);
- xflags(&mut p)
+pub(crate) fn xflags(ts: TokenStream) -> Result<ast::XFlags> {
+ let p = &mut Parser::new(ts);
+ let src = if p.eat_keyword("src") { Some(p.expect_string()?) } else { None };
+ let doc = opt_doc(p)?;
+ let mut cmd = cmd(p)?;
+ cmd.doc = doc;
+ add_help(&mut cmd);
+ let res = ast::XFlags { src, cmd };
+ Ok(res)
+}
+
+pub(crate) fn parse_or_exit(ts: TokenStream) -> Result<ast::XFlags> {
+ let p = &mut Parser::new(ts);
+ let mut cmd = anon_cmd(p)?;
+ assert!(cmd.subcommands.is_empty());
+ add_help(&mut cmd);
+ let res = ast::XFlags { src: None, cmd };
+ Ok(res)
+}
+
+fn add_help(cmd: &mut ast::Cmd) {
+ let help = ast::Flag {
+ arity: ast::Arity::Optional,
+ name: "help".to_string(),
+ short: Some("h".to_string()),
+ doc: Some("Prints help information.".to_string()),
+ val: None,
+ };
+ cmd.flags.push(help);
}
macro_rules! format_err {
@@ -40,19 +66,25 @@ macro_rules! bail {
};
}
-fn xflags(p: &mut Parser) -> Result<ast::XFlags> {
- let src = if p.eat_keyword("src") { Some(p.expect_string()?) } else { None };
- let doc = opt_doc(p)?;
- let mut cmd = cmd(p)?;
- cmd.doc = doc;
- let res = ast::XFlags { src, cmd };
- Ok(res)
+fn anon_cmd(p: &mut Parser) -> Result<ast::Cmd> {
+ cmd_impl(p, true)
}
fn cmd(p: &mut Parser) -> Result<ast::Cmd> {
- p.expect_keyword("cmd")?;
+ cmd_impl(p, false)
+}
+
+fn cmd_impl(p: &mut Parser, anon: bool) -> Result<ast::Cmd> {
+ let name = if anon {
+ String::new()
+ } else {
+ p.expect_keyword("cmd")?;
+ cmd_name(p)?
+ };
+
+ let idx = p.idx;
+ p.idx += 1;
- let name = cmd_name(p)?;
let mut res = ast::Cmd {
name,
doc: None,
@@ -60,25 +92,16 @@ fn cmd(p: &mut Parser) -> Result<ast::Cmd> {
flags: Vec::new(),
subcommands: Vec::new(),
default: false,
+ idx,
};
- while !p.at_delim(Delimiter::Brace) {
- let doc = opt_doc(p)?;
- let arity = arity(p)?;
- match opt_val(p)? {
- Some(val) => {
- let arg = ast::Arg { arity, doc, val };
- res.args.push(arg);
- }
- None => bail!("expected ident"),
- }
+ if !anon {
+ p.enter_delim(Delimiter::Brace)?;
}
-
- p.enter_delim(Delimiter::Brace)?;
while !p.end() {
let doc = opt_doc(p)?;
- let default = p.eat_keyword("default");
- if default || p.at_keyword("cmd") {
+ let default = !anon && p.eat_keyword("default");
+ if !anon && (default || p.at_keyword("cmd")) {
let mut cmd = cmd(p)?;
cmd.doc = doc;
res.subcommands.push(cmd);
@@ -90,35 +113,56 @@ fn cmd(p: &mut Parser) -> Result<ast::Cmd> {
res.subcommands.rotate_right(1);
}
} else {
- let mut flag = flag(p)?;
- flag.doc = doc;
- res.flags.push(flag);
+ let arity = arity(p)?;
+ let is_val = p.lookahead_punct(':', 1);
+ let name = p.expect_name()?;
+ if name.starts_with('-') {
+ let mut flag = flag(p, name)?;
+ flag.doc = doc;
+ flag.arity = arity;
+ res.flags.push(flag)
+ } else if is_val {
+ p.expect_punct(':')?;
+ let ty = ty(p)?;
+ let val = ast::Val { name, ty };
+ let arg = ast::Arg { arity, doc, val };
+ res.args.push(arg);
+ } else {
+ bail!("expected `--flag` or `arg: Type`")
+ }
}
}
- p.exit_delim()?;
+ if !anon {
+ p.exit_delim()?;
+ }
Ok(res)
}
-fn flag(p: &mut Parser) -> Result<ast::Flag> {
- let arity = arity(p)?;
-
- let mut short = None;
- let mut name = flag_name(p)?;
- if !name.starts_with("--") {
+fn flag(p: &mut Parser, name: String) -> Result<ast::Flag> {
+ let short;
+ let long;
+ if name.starts_with("--") {
+ short = None;
+ long = name;
+ } else {
short = Some(name);
if !p.eat_punct(',') {
bail!("long option is required for `{}`", short.unwrap());
}
- name = flag_name(p)?;
- if !name.starts_with("--") {
- bail!("long name must begin with `--`: `{}`", name);
+ long = flag_name(p)?;
+ if !long.starts_with("--") {
+ bail!("long name must begin with `--`: `{long}`");
}
}
+ if long == "--help" {
+ bail!("`--help` flag is generated automatically")
+ }
+
let val = opt_val(p)?;
Ok(ast::Flag {
- arity,
- name: name[2..].to_string(),
+ arity: ast::Arity::Required,
+ name: long[2..].to_string(),
short: short.map(|it| it[1..].to_string()),
doc: None,
val,
@@ -148,7 +192,7 @@ fn arity(p: &mut Parser) -> Result<ast::Arity> {
return Ok(ast::Arity::Repeated);
}
if let Some(name) = p.eat_name() {
- bail!("expected one of `optional`, `required`, `repeated`, got `{}`", name)
+ bail!("expected one of `optional`, `required`, `repeated`, got `{name}`")
}
bail!("expected one of `optional`, `required`, `repeated`, got {:?}", p.ts.pop())
}
@@ -193,7 +237,7 @@ fn opt_doc(p: &mut Parser) -> Result<Option<String>> {
fn cmd_name(p: &mut Parser) -> Result<String> {
let name = p.expect_name()?;
if name.starts_with('-') {
- bail!("command name can't begin with `-`: `{}`", name);
+ bail!("command name can't begin with `-`: `{name}`");
}
Ok(name)
}
@@ -201,7 +245,7 @@ fn cmd_name(p: &mut Parser) -> Result<String> {
fn flag_name(p: &mut Parser) -> Result<String> {
let name = p.expect_name()?;
if !name.starts_with('-') {
- bail!("flag name should begin with `-`: `{}`", name);
+ bail!("flag name should begin with `-`: `{name}`");
}
Ok(name)
}
@@ -209,21 +253,16 @@ fn flag_name(p: &mut Parser) -> Result<String> {
struct Parser {
stack: Vec<Vec<TokenTree>>,
ts: Vec<TokenTree>,
+ idx: u8,
}
impl Parser {
fn new(ts: TokenStream) -> Self {
let mut ts = ts.into_iter().collect::<Vec<_>>();
ts.reverse();
- Self { stack: Vec::new(), ts }
+ Self { stack: Vec::new(), ts, idx: 0 }
}
- fn at_delim(&mut self, delimiter: Delimiter) -> bool {
- match self.ts.last() {
- Some(TokenTree::Group(g)) => g.delimiter() == delimiter,
- _ => false,
- }
- }
fn enter_delim(&mut self, delimiter: Delimiter) -> Result<()> {
match self.ts.pop() {
Some(TokenTree::Group(g)) if g.delimiter() == delimiter => {
@@ -249,7 +288,7 @@ impl Parser {
fn expect_keyword(&mut self, kw: &str) -> Result<()> {
if !self.eat_keyword(kw) {
- bail!("expected `{}`", kw)
+ bail!("expected `{kw}`")
}
Ok(())
}
@@ -271,7 +310,7 @@ impl Parser {
fn expect_name(&mut self) -> Result<String> {
self.eat_name().ok_or_else(|| {
let next = self.ts.pop().map(|it| it.to_string()).unwrap_or_default();
- format_err!("expected a name, got: `{}`", next)
+ format_err!("expected a name, got: `{next}`")
})
}
fn eat_name(&mut self) -> Option<String> {
@@ -307,7 +346,7 @@ impl Parser {
fn expect_punct(&mut self, punct: char) -> Result<()> {
if !self.eat_punct(punct) {
- bail!("expected `{}`", punct)
+ bail!("expected `{punct}`")
}
Ok(())
}
@@ -330,11 +369,18 @@ impl Parser {
fn expect_string(&mut self) -> Result<String> {
match self.ts.pop() {
Some(TokenTree::Literal(lit)) if lit.to_string().starts_with('"') => {
- let text = lit.to_string();
- let res = text.trim_matches('"').to_string();
+ let res = str_lit_value(lit.to_string());
Ok(res)
}
_ => bail!("expected a string"),
}
}
}
+
+/// "Parser" a string literal into the corresponding value.
+///
+/// Really needs support in the proc_macro library:
+/// <https://internals.rust-lang.org/t/getting-value-out-of-proc-macro-literal/14140>
+fn str_lit_value(lit: String) -> String {
+ lit.trim_matches('"').replace("\\'", "'")
+}
diff --git a/vendor/xflags-macros/src/update.rs b/vendor/xflags-macros/src/update.rs
index e476e37aa..83a404c93 100644
--- a/vendor/xflags-macros/src/update.rs
+++ b/vendor/xflags-macros/src/update.rs
@@ -6,8 +6,7 @@ pub(crate) fn in_place(api: &str, path: &Path) {
Path::new(&dir).join(path)
};
- let mut text =
- fs::read_to_string(&path).unwrap_or_else(|_| panic!("failed to read {:?}", path));
+ let mut text = fs::read_to_string(&path).unwrap_or_else(|_| panic!("failed to read {path:?}"));
let (insert_to, indent) = locate(&text);
diff --git a/vendor/xflags-macros/tests/it/src/help.rs b/vendor/xflags-macros/tests/data/help.rs
index d552c1e63..f252e34fa 100644
--- a/vendor/xflags-macros/tests/it/src/help.rs
+++ b/vendor/xflags-macros/tests/data/help.rs
@@ -2,16 +2,17 @@ xflags! {
/// Does stuff
///
/// Helpful stuff.
- cmd helpful
+ cmd helpful {
/// With an arg.
optional src: PathBuf
+
/// Another arg.
///
/// This time, we provide some extra info about the
/// arg. Maybe some caveats, or what kinds of
/// values are accepted.
optional extra: String
- {
+
/// And a switch.
required -s, --switch
diff --git a/vendor/xflags-macros/tests/it/src/repeated_pos.rs b/vendor/xflags-macros/tests/data/repeated_pos.rs
index 4106c65eb..be7c552e0 100644
--- a/vendor/xflags-macros/tests/it/src/repeated_pos.rs
+++ b/vendor/xflags-macros/tests/data/repeated_pos.rs
@@ -1,9 +1,8 @@
xflags! {
- cmd RepeatedPos
+ cmd RepeatedPos {
required a: PathBuf
optional b: u32
optional c: OsString
repeated rest: OsString
- {
}
}
diff --git a/vendor/xflags-macros/tests/it/src/smoke.rs b/vendor/xflags-macros/tests/data/smoke.rs
index ae303779e..55da2d3ef 100644
--- a/vendor/xflags-macros/tests/it/src/smoke.rs
+++ b/vendor/xflags-macros/tests/data/smoke.rs
@@ -1,10 +1,9 @@
xflags! {
/// LSP server for rust.
- cmd rust-analyzer
+ cmd rust-analyzer {
required workspace: PathBuf
/// Number of concurrent jobs.
optional jobs: u32
- {
/// Path to log file. By default, logs go to stderr.
optional --log-file path: PathBuf
repeated -v, --verbose
diff --git a/vendor/xflags-macros/tests/it/src/subcommands.rs b/vendor/xflags-macros/tests/data/subcommands.rs
index 70a0a5049..45fab8232 100644
--- a/vendor/xflags-macros/tests/it/src/subcommands.rs
+++ b/vendor/xflags-macros/tests/data/subcommands.rs
@@ -11,9 +11,8 @@ xflags! {
}
}
- cmd analysis-stats
+ cmd analysis-stats {
required path: PathBuf
- {
optional --parallel
}
}
diff --git a/vendor/xflags-macros/tests/it/help.rs b/vendor/xflags-macros/tests/it/help.rs
index 36a966485..f17062988 100644
--- a/vendor/xflags-macros/tests/it/help.rs
+++ b/vendor/xflags-macros/tests/it/help.rs
@@ -21,7 +21,10 @@ pub struct Sub {
}
impl Helpful {
- pub const HELP: &'static str = Self::HELP_;
+ #[allow(dead_code)]
+ pub fn from_env_or_exit() -> Self {
+ Self::from_env_or_exit_()
+ }
#[allow(dead_code)]
pub fn from_env() -> xflags::Result<Self> {
@@ -35,6 +38,9 @@ impl Helpful {
}
impl Helpful {
+ fn from_env_or_exit_() -> Self {
+ Self::from_env_().unwrap_or_else(|err| err.exit())
+ }
fn from_env_() -> xflags::Result<Self> {
let mut p = xflags::rt::Parser::new_from_env();
Self::parse_(&mut p)
@@ -47,68 +53,51 @@ impl Helpful {
impl Helpful {
fn parse_(p_: &mut xflags::rt::Parser) -> xflags::Result<Self> {
+ #![allow(non_snake_case)]
let mut switch = Vec::new();
-
let mut src = (false, Vec::new());
let mut extra = (false, Vec::new());
+ let mut sub__flag = Vec::new();
- let mut sub_ = None;
+ let mut state_ = 0u8;
while let Some(arg_) = p_.pop_flag() {
match arg_ {
- Ok(flag_) => match flag_.as_str() {
- "--switch" | "-s" => switch.push(()),
+ Ok(flag_) => match (state_, flag_.as_str()) {
+ (0 | 1, "--switch" | "-s") => switch.push(()),
+ (0 | 1, "--help" | "-h") => return Err(p_.help(Self::HELP_)),
+ (1, "--flag" | "-f") => sub__flag.push(()),
_ => return Err(p_.unexpected_flag(&flag_)),
},
- Err(arg_) => {
- match arg_.to_str().unwrap_or("") {
- "sub" => {
- sub_ = Some(HelpfulCmd::Sub(Sub::parse_(p_)?));
- break;
+ Err(arg_) => match (state_, arg_.to_str().unwrap_or("")) {
+ (0, "sub") => state_ = 1,
+ (0, _) => {
+ if let (done_ @ false, buf_) = &mut src {
+ buf_.push(arg_.into());
+ *done_ = true;
+ continue;
}
- _ => (),
- }
- if let (done_ @ false, buf_) = &mut src {
- buf_.push(arg_.into());
- *done_ = true;
- continue;
- }
- if let (done_ @ false, buf_) = &mut extra {
- buf_.push(p_.value_from_str::<String>("extra", arg_)?);
- *done_ = true;
- continue;
+ if let (done_ @ false, buf_) = &mut extra {
+ buf_.push(p_.value_from_str::<String>("extra", arg_)?);
+ *done_ = true;
+ continue;
+ }
+ return Err(p_.unexpected_arg(arg_));
}
- return Err(p_.unexpected_arg(arg_));
- }
+ _ => return Err(p_.unexpected_arg(arg_)),
+ },
}
}
- Ok(Self {
+ Ok(Helpful {
+ switch: p_.required("--switch", switch)?,
src: p_.optional("src", src.1)?,
extra: p_.optional("extra", extra.1)?,
-
- switch: p_.required("--switch", switch)?,
- subcommand: p_.subcommand(sub_)?,
+ subcommand: match state_ {
+ 1 => HelpfulCmd::Sub(Sub { flag: p_.optional("--flag", sub__flag)?.is_some() }),
+ _ => return Err(p_.subcommand_required()),
+ },
})
}
}
-
-impl Sub {
- fn parse_(p_: &mut xflags::rt::Parser) -> xflags::Result<Self> {
- let mut flag = Vec::new();
-
- while let Some(arg_) = p_.pop_flag() {
- match arg_ {
- Ok(flag_) => match flag_.as_str() {
- "--flag" | "-f" => flag.push(()),
- _ => return Err(p_.unexpected_flag(&flag_)),
- },
- Err(arg_) => {
- return Err(p_.unexpected_arg(arg_));
- }
- }
- }
- Ok(Self { flag: p_.optional("--flag", flag)?.is_some() })
- }
-}
impl Helpful {
const HELP_: &'static str = "\
helpful
@@ -131,6 +120,9 @@ OPTIONS:
-s, --switch
And a switch.
+ -h, --help
+ Prints help information.
+
SUBCOMMANDS:
helpful sub
diff --git a/vendor/xflags-macros/tests/it/main.rs b/vendor/xflags-macros/tests/it/main.rs
index 1ce058814..7d77bda36 100644
--- a/vendor/xflags-macros/tests/it/main.rs
+++ b/vendor/xflags-macros/tests/it/main.rs
@@ -67,9 +67,10 @@ fn smoke() {
"-n 92 --werbose",
expect![[r#"unexpected flag: `--werbose`"#]],
);
- check(smoke::RustAnalyzer::from_vec, "", expect![[r#"flag is required: `workspace`"#]]);
+ check(smoke::RustAnalyzer::from_vec, "", expect!["flag is required: `--number`"]);
check(smoke::RustAnalyzer::from_vec, ".", expect![[r#"flag is required: `--number`"#]]);
check(smoke::RustAnalyzer::from_vec, "-n", expect![[r#"expected a value for `-n`"#]]);
+ check(smoke::RustAnalyzer::from_vec, "-n 92", expect!["flag is required: `workspace`"]);
check(
smoke::RustAnalyzer::from_vec,
"-n lol",
@@ -196,3 +197,36 @@ fn subcommands() {
check(subcommands::RustAnalyzer::from_vec, "", expect![[r#"subcommand is required"#]]);
}
+
+#[test]
+fn subcommand_flag_inheritance() {
+ check(
+ subcommands::RustAnalyzer::from_vec,
+ "server watch --verbose --dir .",
+ expect![[r#"
+ RustAnalyzer {
+ verbose: 1,
+ subcommand: Server(
+ Server {
+ dir: Some(
+ ".",
+ ),
+ subcommand: Watch(
+ Watch,
+ ),
+ },
+ ),
+ }
+ "#]],
+ );
+ check(
+ subcommands::RustAnalyzer::from_vec,
+ "analysis-stats --verbose --dir .",
+ expect!["unexpected flag: `--dir`"],
+ );
+ check(
+ subcommands::RustAnalyzer::from_vec,
+ "--dir . server",
+ expect!["unexpected flag: `--dir`"],
+ );
+}
diff --git a/vendor/xflags-macros/tests/it/repeated_pos.rs b/vendor/xflags-macros/tests/it/repeated_pos.rs
index 334af371d..b11b90717 100644
--- a/vendor/xflags-macros/tests/it/repeated_pos.rs
+++ b/vendor/xflags-macros/tests/it/repeated_pos.rs
@@ -10,7 +10,10 @@ pub struct RepeatedPos {
}
impl RepeatedPos {
- pub const HELP: &'static str = Self::HELP_;
+ #[allow(dead_code)]
+ pub fn from_env_or_exit() -> Self {
+ Self::from_env_or_exit_()
+ }
#[allow(dead_code)]
pub fn from_env() -> xflags::Result<Self> {
@@ -24,6 +27,9 @@ impl RepeatedPos {
}
impl RepeatedPos {
+ fn from_env_or_exit_() -> Self {
+ Self::from_env_().unwrap_or_else(|err| err.exit())
+ }
fn from_env_() -> xflags::Result<Self> {
let mut p = xflags::rt::Parser::new_from_env();
Self::parse_(&mut p)
@@ -36,41 +42,47 @@ impl RepeatedPos {
impl RepeatedPos {
fn parse_(p_: &mut xflags::rt::Parser) -> xflags::Result<Self> {
+ #![allow(non_snake_case)]
let mut a = (false, Vec::new());
let mut b = (false, Vec::new());
let mut c = (false, Vec::new());
let mut rest = (false, Vec::new());
+ let mut state_ = 0u8;
while let Some(arg_) = p_.pop_flag() {
match arg_ {
- Ok(flag_) => match flag_.as_str() {
+ Ok(flag_) => match (state_, flag_.as_str()) {
+ (0, "--help" | "-h") => return Err(p_.help(Self::HELP_)),
_ => return Err(p_.unexpected_flag(&flag_)),
},
- Err(arg_) => {
- if let (done_ @ false, buf_) = &mut a {
- buf_.push(arg_.into());
- *done_ = true;
- continue;
- }
- if let (done_ @ false, buf_) = &mut b {
- buf_.push(p_.value_from_str::<u32>("b", arg_)?);
- *done_ = true;
- continue;
+ Err(arg_) => match (state_, arg_.to_str().unwrap_or("")) {
+ (0, _) => {
+ if let (done_ @ false, buf_) = &mut a {
+ buf_.push(arg_.into());
+ *done_ = true;
+ continue;
+ }
+ if let (done_ @ false, buf_) = &mut b {
+ buf_.push(p_.value_from_str::<u32>("b", arg_)?);
+ *done_ = true;
+ continue;
+ }
+ if let (done_ @ false, buf_) = &mut c {
+ buf_.push(arg_.into());
+ *done_ = true;
+ continue;
+ }
+ if let (false, buf_) = &mut rest {
+ buf_.push(arg_.into());
+ continue;
+ }
+ return Err(p_.unexpected_arg(arg_));
}
- if let (done_ @ false, buf_) = &mut c {
- buf_.push(arg_.into());
- *done_ = true;
- continue;
- }
- if let (false, buf_) = &mut rest {
- buf_.push(arg_.into());
- continue;
- }
- return Err(p_.unexpected_arg(arg_));
- }
+ _ => return Err(p_.unexpected_arg(arg_)),
+ },
}
}
- Ok(Self {
+ Ok(RepeatedPos {
a: p_.required("a", a.1)?,
b: p_.optional("b", b.1)?,
c: p_.optional("c", c.1)?,
@@ -90,5 +102,9 @@ ARGS:
[c]
<rest>...
+
+OPTIONS:
+ -h, --help
+ Prints help information.
";
}
diff --git a/vendor/xflags-macros/tests/it/smoke.rs b/vendor/xflags-macros/tests/it/smoke.rs
index e22c4f1f6..f2ebbb712 100644
--- a/vendor/xflags-macros/tests/it/smoke.rs
+++ b/vendor/xflags-macros/tests/it/smoke.rs
@@ -14,7 +14,10 @@ pub struct RustAnalyzer {
}
impl RustAnalyzer {
- pub const HELP: &'static str = Self::HELP_;
+ #[allow(dead_code)]
+ pub fn from_env_or_exit() -> Self {
+ Self::from_env_or_exit_()
+ }
#[allow(dead_code)]
pub fn from_env() -> xflags::Result<Self> {
@@ -28,6 +31,9 @@ impl RustAnalyzer {
}
impl RustAnalyzer {
+ fn from_env_or_exit_() -> Self {
+ Self::from_env_().unwrap_or_else(|err| err.exit())
+ }
fn from_env_() -> xflags::Result<Self> {
let mut p = xflags::rt::Parser::new_from_env();
Self::parse_(&mut p)
@@ -40,49 +46,53 @@ impl RustAnalyzer {
impl RustAnalyzer {
fn parse_(p_: &mut xflags::rt::Parser) -> xflags::Result<Self> {
+ #![allow(non_snake_case)]
let mut log_file = Vec::new();
let mut verbose = Vec::new();
let mut number = Vec::new();
let mut data = Vec::new();
let mut emoji = Vec::new();
-
let mut workspace = (false, Vec::new());
let mut jobs = (false, Vec::new());
+ let mut state_ = 0u8;
while let Some(arg_) = p_.pop_flag() {
match arg_ {
- Ok(flag_) => match flag_.as_str() {
- "--log-file" => log_file.push(p_.next_value(&flag_)?.into()),
- "--verbose" | "-v" => verbose.push(()),
- "--number" | "-n" => number.push(p_.next_value_from_str::<u32>(&flag_)?),
- "--data" => data.push(p_.next_value(&flag_)?.into()),
- "--emoji" => emoji.push(()),
+ Ok(flag_) => match (state_, flag_.as_str()) {
+ (0, "--log-file") => log_file.push(p_.next_value(&flag_)?.into()),
+ (0, "--verbose" | "-v") => verbose.push(()),
+ (0, "--number" | "-n") => number.push(p_.next_value_from_str::<u32>(&flag_)?),
+ (0, "--data") => data.push(p_.next_value(&flag_)?.into()),
+ (0, "--emoji") => emoji.push(()),
+ (0, "--help" | "-h") => return Err(p_.help(Self::HELP_)),
_ => return Err(p_.unexpected_flag(&flag_)),
},
- Err(arg_) => {
- if let (done_ @ false, buf_) = &mut workspace {
- buf_.push(arg_.into());
- *done_ = true;
- continue;
- }
- if let (done_ @ false, buf_) = &mut jobs {
- buf_.push(p_.value_from_str::<u32>("jobs", arg_)?);
- *done_ = true;
- continue;
+ Err(arg_) => match (state_, arg_.to_str().unwrap_or("")) {
+ (0, _) => {
+ if let (done_ @ false, buf_) = &mut workspace {
+ buf_.push(arg_.into());
+ *done_ = true;
+ continue;
+ }
+ if let (done_ @ false, buf_) = &mut jobs {
+ buf_.push(p_.value_from_str::<u32>("jobs", arg_)?);
+ *done_ = true;
+ continue;
+ }
+ return Err(p_.unexpected_arg(arg_));
}
- return Err(p_.unexpected_arg(arg_));
- }
+ _ => return Err(p_.unexpected_arg(arg_)),
+ },
}
}
- Ok(Self {
- workspace: p_.required("workspace", workspace.1)?,
- jobs: p_.optional("jobs", jobs.1)?,
-
+ Ok(RustAnalyzer {
log_file: p_.optional("--log-file", log_file)?,
verbose: verbose.len() as u32,
number: p_.required("--number", number)?,
data: data,
emoji: p_.optional("--emoji", emoji)?.is_some(),
+ workspace: p_.required("workspace", workspace.1)?,
+ jobs: p_.optional("jobs", jobs.1)?,
})
}
}
@@ -108,5 +118,8 @@ OPTIONS:
--data <value>
--emoji
+
+ -h, --help
+ Prints help information.
";
}
diff --git a/vendor/xflags-macros/tests/it/subcommands.rs b/vendor/xflags-macros/tests/it/subcommands.rs
index 7941a395d..4d0a64923 100644
--- a/vendor/xflags-macros/tests/it/subcommands.rs
+++ b/vendor/xflags-macros/tests/it/subcommands.rs
@@ -41,7 +41,10 @@ pub struct AnalysisStats {
}
impl RustAnalyzer {
- pub const HELP: &'static str = Self::HELP_;
+ #[allow(dead_code)]
+ pub fn from_env_or_exit() -> Self {
+ Self::from_env_or_exit_()
+ }
#[allow(dead_code)]
pub fn from_env() -> xflags::Result<Self> {
@@ -55,6 +58,9 @@ impl RustAnalyzer {
}
impl RustAnalyzer {
+ fn from_env_or_exit_() -> Self {
+ Self::from_env_().unwrap_or_else(|err| err.exit())
+ }
fn from_env_() -> xflags::Result<Self> {
let mut p = xflags::rt::Parser::new_from_env();
Self::parse_(&mut p)
@@ -67,130 +73,71 @@ impl RustAnalyzer {
impl RustAnalyzer {
fn parse_(p_: &mut xflags::rt::Parser) -> xflags::Result<Self> {
+ #![allow(non_snake_case)]
let mut verbose = Vec::new();
+ let mut server__dir = Vec::new();
+ let mut server__launch__log = Vec::new();
+ let mut analysis_stats__parallel = Vec::new();
+ let mut analysis_stats__path = (false, Vec::new());
- let mut sub_ = None;
+ let mut state_ = 0u8;
while let Some(arg_) = p_.pop_flag() {
match arg_ {
- Ok(flag_) => match flag_.as_str() {
- "--verbose" | "-v" => verbose.push(()),
+ Ok(flag_) => match (state_, flag_.as_str()) {
+ (0 | 1 | 2 | 3 | 4, "--verbose" | "-v") => verbose.push(()),
+ (0 | 1 | 2 | 3 | 4, "--help" | "-h") => return Err(p_.help(Self::HELP_)),
+ (1 | 2 | 3, "--dir") => server__dir.push(p_.next_value(&flag_)?.into()),
+ (1, _) => {
+ p_.push_back(Ok(flag_));
+ state_ = 2;
+ }
+ (2, "--log") => server__launch__log.push(()),
+ (4, "--parallel") => analysis_stats__parallel.push(()),
_ => return Err(p_.unexpected_flag(&flag_)),
},
- Err(arg_) => {
- match arg_.to_str().unwrap_or("") {
- "server" => {
- sub_ = Some(RustAnalyzerCmd::Server(Server::parse_(p_)?));
- break;
- }
- "analysis-stats" => {
- sub_ = Some(RustAnalyzerCmd::AnalysisStats(AnalysisStats::parse_(p_)?));
- break;
- }
- _ => (),
+ Err(arg_) => match (state_, arg_.to_str().unwrap_or("")) {
+ (0, "server") => state_ = 1,
+ (0, "analysis-stats") => state_ = 4,
+ (0, _) => {
+ return Err(p_.unexpected_arg(arg_));
}
- return Err(p_.unexpected_arg(arg_));
- }
- }
- }
- Ok(Self { verbose: verbose.len() as u32, subcommand: p_.subcommand(sub_)? })
- }
-}
-
-impl Server {
- fn parse_(p_: &mut xflags::rt::Parser) -> xflags::Result<Self> {
- let mut dir = Vec::new();
-
- let mut sub_ = None;
- while let Some(arg_) = p_.pop_flag() {
- match arg_ {
- Ok(flag_) => match flag_.as_str() {
- "--dir" => dir.push(p_.next_value(&flag_)?.into()),
- _ => {
- p_.push_back(Ok(flag_));
- break;
+ (1, "watch") => state_ = 3,
+ (1, _) => {
+ p_.push_back(Err(arg_));
+ state_ = 2;
}
- },
- Err(arg_) => {
- match arg_.to_str().unwrap_or("") {
- "watch" => {
- sub_ = Some(ServerCmd::Watch(Watch::parse_(p_)?));
- break;
+ (4, _) => {
+ if let (done_ @ false, buf_) = &mut analysis_stats__path {
+ buf_.push(arg_.into());
+ *done_ = true;
+ continue;
}
- _ => (),
+ return Err(p_.unexpected_arg(arg_));
}
- p_.push_back(Err(arg_));
- break;
- }
- }
- }
- if sub_.is_none() {
- sub_ = Some(ServerCmd::Launch(Launch::parse_(p_)?));
- }
- Ok(Self { dir: p_.optional("--dir", dir)?, subcommand: p_.subcommand(sub_)? })
- }
-}
-
-impl Launch {
- fn parse_(p_: &mut xflags::rt::Parser) -> xflags::Result<Self> {
- let mut log = Vec::new();
-
- while let Some(arg_) = p_.pop_flag() {
- match arg_ {
- Ok(flag_) => match flag_.as_str() {
- "--log" => log.push(()),
- _ => return Err(p_.unexpected_flag(&flag_)),
- },
- Err(arg_) => {
- return Err(p_.unexpected_arg(arg_));
- }
- }
- }
- Ok(Self { log: p_.optional("--log", log)?.is_some() })
- }
-}
-
-impl Watch {
- fn parse_(p_: &mut xflags::rt::Parser) -> xflags::Result<Self> {
- while let Some(arg_) = p_.pop_flag() {
- match arg_ {
- Ok(flag_) => match flag_.as_str() {
- _ => return Err(p_.unexpected_flag(&flag_)),
+ _ => return Err(p_.unexpected_arg(arg_)),
},
- Err(arg_) => {
- return Err(p_.unexpected_arg(arg_));
- }
}
}
- Ok(Self {})
- }
-}
-
-impl AnalysisStats {
- fn parse_(p_: &mut xflags::rt::Parser) -> xflags::Result<Self> {
- let mut parallel = Vec::new();
-
- let mut path = (false, Vec::new());
-
- while let Some(arg_) = p_.pop_flag() {
- match arg_ {
- Ok(flag_) => match flag_.as_str() {
- "--parallel" => parallel.push(()),
- _ => return Err(p_.unexpected_flag(&flag_)),
- },
- Err(arg_) => {
- if let (done_ @ false, buf_) = &mut path {
- buf_.push(arg_.into());
- *done_ = true;
- continue;
- }
- return Err(p_.unexpected_arg(arg_));
- }
- }
- }
- Ok(Self {
- path: p_.required("path", path.1)?,
-
- parallel: p_.optional("--parallel", parallel)?.is_some(),
+ state_ = if state_ == 1 { 2 } else { state_ };
+ Ok(RustAnalyzer {
+ verbose: verbose.len() as u32,
+ subcommand: match state_ {
+ 2 | 3 => RustAnalyzerCmd::Server(Server {
+ dir: p_.optional("--dir", server__dir)?,
+ subcommand: match state_ {
+ 2 => ServerCmd::Launch(Launch {
+ log: p_.optional("--log", server__launch__log)?.is_some(),
+ }),
+ 3 => ServerCmd::Watch(Watch {}),
+ _ => return Err(p_.subcommand_required()),
+ },
+ }),
+ 4 => RustAnalyzerCmd::AnalysisStats(AnalysisStats {
+ parallel: p_.optional("--parallel", analysis_stats__parallel)?.is_some(),
+ path: p_.required("path", analysis_stats__path.1)?,
+ }),
+ _ => return Err(p_.subcommand_required()),
+ },
})
}
}
@@ -201,6 +148,9 @@ rust-analyzer
OPTIONS:
-v, --verbose
+ -h, --help
+ Prints help information.
+
SUBCOMMANDS:
rust-analyzer server
diff --git a/vendor/xflags/.cargo-checksum.json b/vendor/xflags/.cargo-checksum.json
index c5fd48200..1fa4dd9e5 100644
--- a/vendor/xflags/.cargo-checksum.json
+++ b/vendor/xflags/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{"Cargo.lock":"76747bdf0a7c1643e62a7c8db6e65572906908415ba87daaa7444917cdf1d35b","Cargo.toml":"32dc60919f757b61d4a6602da24bdd59b77b76f284a1b55712a78e1159e2d249","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3","README.md":"d34d354ca65973ca9120ed16af11e188c91af2ede6894e0e842c10c874780f7b","examples/hello-generated.rs":"ac2d4864e238e664fb1b18db66aed75ac5a425877bc00729fed1135fb410b969","examples/hello.rs":"c1a5656bee529c3ef96a3afc3531e02bc9d5d309e1bcd60b76e6758fb4c2a95d","examples/longer.rs":"18ad0d00215fdf245830a581df32fbf9533f5ab47e736659e598b4ecd2d96e1a","examples/non-utf8.rs":"a9d4a03adb05c8b46c3251647b8dbf4e860277db995e14192cd8d445f3434186","src/lib.rs":"21843e64aba8010dcc877418927e5b0ad3615ff6e18020285849bbf4391f4ed0","src/rt.rs":"c3cb2d6c80ec9c0586a6e64441cee4c237d2fb420891dec2acb96d5b0c7d6937"},"package":"3f14fe1ed41a5a2b5ef3f565586c4a8a559ee55d3953faab360a771135bdee00"} \ No newline at end of file
+{"files":{"Cargo.lock":"bff2ffbef3ca253bcde1624bfc2c2afd244ca39b44e7dd3f4b463873904129c7","Cargo.toml":"faa866c2c32635dfa6d600103595777c330520df5e73aa0461d6f34eb21bbd9a","examples/hello-generated.rs":"3bf7922435ae84e2b8ae022aba1d693fc4e523b354d3141cc62a183864531f31","examples/hello.rs":"235426d1a69eeba790d1e4fc2ac4fa8f30ca16952edb2a026cf6f4b8c78d6fec","examples/immediate-mode.rs":"dcae135769b6104801de7b91fd220fb28ddae097ba7b0474fe32c28a90c4dfef","examples/longer.rs":"b55684fdde16a8462e1c1afaa9f30e75e3472abfcabe950403733c767dd7de96","examples/non-utf8.rs":"23b563180d1d616f81e224890192799a06fdbc21f3ccb7e4234ca51b3c467a9a","src/lib.rs":"780d7be977abefaa4c7229733a916d88480c9228ddb0f9bc2a25aaa626f7f7d7","src/rt.rs":"b80e6b1e180b0bd0fd523a6bc74d6bba40da7af461de37c33c3735bfb3c66254"},"package":"cbf19f5031a1a812e96fede16f8161218883079946cea87619d3613db1efd268"} \ No newline at end of file
diff --git a/vendor/xflags/Cargo.lock b/vendor/xflags/Cargo.lock
index 37ff98bb9..e2020eb16 100644
--- a/vendor/xflags/Cargo.lock
+++ b/vendor/xflags/Cargo.lock
@@ -4,13 +4,13 @@ version = 3
[[package]]
name = "xflags"
-version = "0.2.4"
+version = "0.3.0"
dependencies = [
"xflags-macros",
]
[[package]]
name = "xflags-macros"
-version = "0.2.4"
+version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "45d11d5fc2a97287eded8b170ca80533b3c42646dd7fa386a5eb045817921022"
+checksum = "2afbd7f2039bb6cad2dd45f0c5dff49c0d4e26118398768b7a605524d4251809"
diff --git a/vendor/xflags/Cargo.toml b/vendor/xflags/Cargo.toml
index 542701052..091002385 100644
--- a/vendor/xflags/Cargo.toml
+++ b/vendor/xflags/Cargo.toml
@@ -10,14 +10,15 @@
# See Cargo.toml.orig for the original contents.
[package]
-edition = "2018"
+edition = "2021"
name = "xflags"
-version = "0.2.4"
+version = "0.3.0"
authors = ["Aleksey Kladov <aleksey.kladov@gmail.com>"]
-exclude = [".github/", "bors.toml", "rustfmt.toml"]
description = "Moderately simple command line arguments parser."
categories = ["command-line-interface"]
license = "MIT OR Apache-2.0"
repository = "https://github.com/matklad/xflags"
+resolver = "1"
+
[dependencies.xflags-macros]
-version = "=0.2.4"
+version = "=0.3.0"
diff --git a/vendor/xflags/LICENSE-APACHE b/vendor/xflags/LICENSE-APACHE
deleted file mode 100644
index 16fe87b06..000000000
--- a/vendor/xflags/LICENSE-APACHE
+++ /dev/null
@@ -1,201 +0,0 @@
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/vendor/xflags/LICENSE-MIT b/vendor/xflags/LICENSE-MIT
deleted file mode 100644
index 31aa79387..000000000
--- a/vendor/xflags/LICENSE-MIT
+++ /dev/null
@@ -1,23 +0,0 @@
-Permission is hereby granted, free of charge, to any
-person obtaining a copy of this software and associated
-documentation files (the "Software"), to deal in the
-Software without restriction, including without
-limitation the rights to use, copy, modify, merge,
-publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software
-is furnished to do so, subject to the following
-conditions:
-
-The above copyright notice and this permission notice
-shall be included in all copies or substantial portions
-of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
-ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
-TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
-SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
-IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/vendor/xflags/README.md b/vendor/xflags/README.md
deleted file mode 100644
index bfebfb0c8..000000000
--- a/vendor/xflags/README.md
+++ /dev/null
@@ -1,49 +0,0 @@
-[![API reference](https://docs.rs/once_cell/badge.svg)](https://docs.rs/xflags/)
-
-# xflags
-
-Moderately simple command line arguments parsing:
-
-```rust
-mod flags {
- use std::path::PathBuf;
-
- xflags::xflags! {
- src "./examples/basic.rs"
-
- cmd my-command
- required path: PathBuf
- {
- optional -v, --verbose
- }
- }
-
- // generated start
- // The following code is generated by `xflags` macro.
- // Run `env UPDATE_XFLAGS=1 cargo build` to regenerate.
- #[derive(Debug)]
- pub struct MyCommand {
- pub path: PathBuf,
-
- pub verbose: bool,
- }
-
- impl MyCommand {
- pub const HELP: &'static str = Self::HELP_;
-
- pub fn from_env() -> xflags::Result<Self> {
- Self::from_env_()
- }
-
- pub fn from_vec(args: Vec<std::ffi::OsString>) -> xflags::Result<Self> {
- Self::from_vec_(args)
- }
- }
- // generated end
-}
-
-fn main() {
- let flags = flags::MyCommand::from_env();
- println!("{:#?}", flags);
-}
-```
diff --git a/vendor/xflags/examples/hello-generated.rs b/vendor/xflags/examples/hello-generated.rs
index b82884859..cb74acbd7 100644
--- a/vendor/xflags/examples/hello-generated.rs
+++ b/vendor/xflags/examples/hello-generated.rs
@@ -5,10 +5,10 @@ mod flags {
src "./examples/hello-generated.rs"
/// Prints a greeting.
- cmd hello
+ cmd hello {
/// Whom to greet.
required name: String
- {
+
/// Use non-ascii symbols in the output.
optional -e, --emoji
}
@@ -25,12 +25,12 @@ mod flags {
}
impl Hello {
- pub const HELP: &'static str = Self::HELP_;
-
+ #[allow(dead_code)]
pub fn from_env() -> xflags::Result<Self> {
Self::from_env_()
}
+ #[allow(dead_code)]
pub fn from_vec(args: Vec<std::ffi::OsString>) -> xflags::Result<Self> {
Self::from_vec_(args)
}
@@ -44,9 +44,6 @@ fn main() {
let bang = if flags.emoji { "❣️" } else { "!" };
println!("Hello {}{}", flags.name, bang);
}
- Err(err) => {
- eprintln!("{}\n\n{}", err, flags::Hello::HELP);
- std::process::exit(1)
- }
+ Err(err) => err.exit(),
}
}
diff --git a/vendor/xflags/examples/hello.rs b/vendor/xflags/examples/hello.rs
index 98a19099f..91dc3fd8a 100644
--- a/vendor/xflags/examples/hello.rs
+++ b/vendor/xflags/examples/hello.rs
@@ -1,8 +1,7 @@
mod flags {
xflags::xflags! {
- cmd hello
+ cmd hello {
required name: String
- {
optional -e, --emoji
}
}
diff --git a/vendor/xflags/examples/immediate-mode.rs b/vendor/xflags/examples/immediate-mode.rs
new file mode 100644
index 000000000..ee3baa3de
--- /dev/null
+++ b/vendor/xflags/examples/immediate-mode.rs
@@ -0,0 +1,16 @@
+use std::path::PathBuf;
+
+fn main() {
+ let flags = xflags::parse_or_exit! {
+ /// Remove directories and their contents recursively.
+ optional -r,--recursive
+ /// File or directory to remove
+ required path: PathBuf
+ };
+
+ println!(
+ "removing {}{}",
+ flags.path.display(),
+ if flags.recursive { "recursively" } else { "" },
+ )
+}
diff --git a/vendor/xflags/examples/longer.rs b/vendor/xflags/examples/longer.rs
index 7ea9e18d5..199cca042 100644
--- a/vendor/xflags/examples/longer.rs
+++ b/vendor/xflags/examples/longer.rs
@@ -24,10 +24,9 @@ mod flags {
}
/// Benchmark specific analysis operation
- cmd analysis-bench
+ cmd analysis-bench {
/// Directory with Cargo.toml
optional path: PathBuf
- {
/// Compute syntax highlighting for this file
required --highlight path: PathBuf
/// Compute highlighting for this line
@@ -72,12 +71,12 @@ mod flags {
}
impl RustAnalyzer {
- pub const HELP: &'static str = Self::HELP_;
-
+ #[allow(dead_code)]
pub fn from_env() -> xflags::Result<Self> {
Self::from_env_()
}
+ #[allow(dead_code)]
pub fn from_vec(args: Vec<std::ffi::OsString>) -> xflags::Result<Self> {
Self::from_vec_(args)
}
diff --git a/vendor/xflags/examples/non-utf8.rs b/vendor/xflags/examples/non-utf8.rs
index d355b24f6..28b1e98be 100644
--- a/vendor/xflags/examples/non-utf8.rs
+++ b/vendor/xflags/examples/non-utf8.rs
@@ -4,11 +4,10 @@ mod flags {
use std::{ffi::OsString, path::PathBuf};
xflags::xflags! {
- cmd Cmd
+ cmd Cmd {
required a: OsString
required b: PathBuf
required c: String
- {
}
}
}
diff --git a/vendor/xflags/src/lib.rs b/vendor/xflags/src/lib.rs
index ae347f511..0eda9dec4 100644
--- a/vendor/xflags/src/lib.rs
+++ b/vendor/xflags/src/lib.rs
@@ -1,12 +1,65 @@
-//! This crates provides a procedural macro for parsing command line arguments.
+//! `xflags` provides a procedural macro for parsing command line arguments.
//!
//! It is intended for use in development tools, so it emphasizes fast compile
//! times and convenience at the expense of features.
//!
-//! If you need something more fancy, consider using
-//! [`clap`](https://docs.rs/clap/2.33.3/clap/) instead.
+//! Rough decision tree for picking an argument parsing library:
//!
-//! ## Example
+//! * if you need all of the features and don't care about minimalism, use
+//! [clap](https://github.com/clap-rs/clap)
+//! * if you want to be maximally minimal, need only basic features (eg, no help
+//! generation), and want to be pedantically correct, use
+//! [lexopt](https://github.com/blyxxyz/lexopt)
+//! * if you want to get things done fast (eg, you want auto help, but not at
+//! the cost of waiting for syn to compile), consider this crate.
+//!
+//! The secret sauce of xflags is that it is the opposite of a derive macro.
+//! Rather than generating a command line grammar from a Rust struct, `xflags`
+//! generates Rust structs based on input grammar. The grammar definition is
+//! both shorter and simpler to write, and is lighter on compile times.
+//!
+//! Here's a complete example of `parse_or_exit!` macro which parses arguments
+//! into an "anonymous" struct:
+//!
+//! ```no_run
+//! use std::path::PathBuf;
+//!
+//! fn main() {
+//! let flags = xflags::parse_or_exit! {
+//! /// Remove directories and their contents recursively.
+//! optional -r,--recursive
+//! /// File or directory to remove
+//! required path: PathBuf
+//! };
+//!
+//! println!(
+//! "removing {}{}",
+//! flags.path.display(),
+//! if flags.recursive { "recursively" } else { "" },
+//! )
+//! }
+//! ```
+//!
+//! The above program, when run with `--help` argument, generates the following
+//! help:
+//!
+//! ```text
+//! ARGS:
+//! <path>
+//! File or directory to remove
+//!
+//! OPTIONS:
+//! -r, --recursive
+//! Remove directories and their contents recursively.
+//!
+//! -h, --help
+//! Prints help information.
+//! ```
+//!
+//! For larger programs, you'd typically want to use `xflags!` macro, which
+//! generates _named_ structs for you. Unlike a typical macro, `xflags` writes
+//! generated code into the source file, to make it easy to understand the rust
+//! types at a glance.
//!
//! ```
//! mod flags {
@@ -15,9 +68,8 @@
//! xflags::xflags! {
//! src "./examples/basic.rs"
//!
-//! cmd my-command
+//! cmd my-command {
//! required path: PathBuf
-//! {
//! optional -v, --verbose
//! }
//! }
@@ -28,17 +80,16 @@
//! #[derive(Debug)]
//! pub struct MyCommand {
//! pub path: PathBuf,
-//!
//! pub verbose: bool,
//! }
//!
//! impl MyCommand {
-//! pub const HELP: &'static str = Self::HELP_;
-//!
+//! pub fn from_env_or_exit() -> Self {
+//! Self::from_env_or_exit_()
+//! }
//! pub fn from_env() -> xflags::Result<Self> {
//! Self::from_env_()
//! }
-//!
//! pub fn from_vec(args: Vec<std::ffi::OsString>) -> xflags::Result<Self> {
//! Self::from_vec_(args)
//! }
@@ -52,15 +103,15 @@
//! }
//! ```
//!
-//! To make the macro less opaque, `xflag` can generate `struct` describing the
-//! CLI in-place. To disable this behavior, omit the `src` attribute.
+//! If you'd rather use a typical proc-macro which generates hidden code, just
+//! omit the src attribute.
//!
//! xflags correctly handles non-utf8 arguments.
//!
//! ## Syntax Reference
//!
-//! The **cmd** keyword introduces a command that accepts positional arguments
-//! and switches.
+//! The `xflags!` macro uses **cmd** keyword to introduce a command or
+//! subcommand that accepts positional arguments and switches.
//!
//! ```
//! xflags::xflags! {
@@ -75,9 +126,9 @@
//! ```
//! xflags::xflags! {
//! cmd switches {
-//! optional -h, --help
-//! repeated --verbose
+//! optional -q,--quiet
//! required --pass-me
+//! repeated --verbose
//! }
//! }
//! ```
@@ -98,20 +149,21 @@
//! }
//! ```
//!
-//! Positional arguments are specified before the opening curly brace:
+//! Arguments without `--` in then are are positional.
//!
//! ```
//! use std::{path::PathBuf, ffi::OsString};
//!
//! xflags::xflags! {
-//! cmd positional-arguments
+//! cmd positional-arguments {
//! required program: PathBuf
//! repeated args: OsString
-//! { }
+//! }
//! }
//! ```
//!
-//! Nesting **cmd** is allowed:
+//! Nesting **cmd** is allowed. `xflag` automatically generates boilerplate
+//! enums for subcommands:
//!
//! ```ignore
//! xflags::xflags! {
@@ -148,12 +200,12 @@
//! }
//!
//! impl App {
-//! pub const HELP: &'static str = Self::HELP_;
-//!
+//! pub fn from_env_or_exit() -> Self {
+//! Self::from_env_or_exit_()
+//! }
//! pub fn from_env() -> xflags::Result<Self> {
//! Self::from_env_()
//! }
-//!
//! pub fn from_vec(args: Vec<std::ffi::OsString>) -> xflags::Result<Self> {
//! Self::from_vec_(args)
//! }
@@ -161,6 +213,9 @@
//! // generated end
//! ```
//!
+//! Switches are always "inherited". Both `app -v foo` and `app foo -v` produce
+//! the same result.
+//!
//! To make subcommand name optional use the **default** keyword to mark a
//! subcommand to select if no subcommand name is passed. The name of the
//! default subcommand affects only the name of the generated Rust struct, it
@@ -176,8 +231,8 @@
//! }
//! ```
//!
-//! Commands, arguments, and switches can documented. Doc comments become a part
-//! of generated help:
+//! Commands, arguments, and switches can be documented. Doc comments become a
+//! part of generated help:
//!
//! ```
//! mod flags {
@@ -185,14 +240,11 @@
//!
//! xflags::xflags! {
//! /// Run basic system diagnostics.
-//! cmd healthck
+//! cmd healthck {
//! /// Optional configuration file.
//! optional config: PathBuf
-//! {
//! /// Verbosity level, can be repeated multiple times.
//! repeated -v, --verbose
-//! /// Print the help message.
-//! optional -h, --help
//! }
//! }
//! }
@@ -200,24 +252,18 @@
//! fn main() {
//! match flags::Healthck::from_env() {
//! Ok(flags) => {
-//! if flags.help {
-//! println!("{}", flags::Healthck::HELP);
-//! return;
-//! }
//! run_checks(flags.config, flags.verbose);
//! }
-//! Err(err) => {
-//! eprintln!("{}", err);
-//! }
+//! Err(err) => err.exit()
//! }
//! }
//!
//! # fn run_checks(_config: Option<std::path::PathBuf>, _verbosity: u32) {}
//! ```
//!
-//! The **src** keyword controlls how the code generation works. If it is
-//! absent, `xflags` acts as a typical procedure macro, which generates a bunch
-//! of structs and impls.
+//! The **src** keyword controls how the code generation works. If it is absent,
+//! `xflags` acts as a typical procedure macro, which generates a bunch of
+//! structs and impls.
//!
//! If the **src** keyword is present, it should specify the path to the file
//! with `xflags!` invocation. The path should be relative to the directory with
@@ -226,7 +272,7 @@
//! directly to the specified file.
//!
//! By convention, `xflag!` macro should be invoked from the `flags` submodule.
-//! The `flags::` preffix should be used to refer to command names. Additional
+//! The `flags::` prefix should be used to refer to command names. Additional
//! validation logic can go to the `flags` module:
//!
//! ```
@@ -250,21 +296,43 @@
//! }
//! }
//! ```
+//!
+//! The `parse_or_exit!` macro is a syntactic sure for `xflags!`, which
+//! immediately parses the argument, exiting the process if needed.
+//! `parse_or_exit` only supports single top-level command and doesn't need the
+//! `cmd` keyword.
+//!
+//! ## Limitations
+//!
+//! `xflags` follows
+//! [Fuchsia](https://fuchsia.dev/fuchsia-src/development/api/cli#command_line_arguments)
+//! conventions for command line arguments. GNU conventions such as grouping
+//! short-flags (`-xyz`) or gluing short flag and a value `(-fVAL)` are not
+//! supported.
+//!
+//! `xflags` requires the command line interface to be fully static. It's
+//! impossible to include additional flags at runtime.
+//!
+//! Implementation is not fully robust, there might be some residual bugs in
+//! edge cases.
use std::fmt;
/// Generates a parser for command line arguments from a DSL.
///
/// See the module-level for detailed syntax specification.
-pub use xflags_macros::xflags;
+pub use xflags_macros::{parse_or_exit, xflags};
pub type Result<T, E = Error> = std::result::Result<T, E>;
-/// This type represents an error that can occur during command line argument
-/// parsing.
+/// An error occurred when parssing command line arguments.
+///
+/// Either the command line was syntactically invalid, or `--help` was
+/// explicitly requested.
#[derive(Debug)]
pub struct Error {
msg: String,
+ help: bool,
}
impl fmt::Display for Error {
@@ -280,7 +348,23 @@ impl Error {
///
/// Use this to report custom validation errors.
pub fn new(message: impl Into<String>) -> Error {
- Error { msg: message.into() }
+ Error { msg: message.into(), help: false }
+ }
+
+ /// Error that carries `--help` message.
+ pub fn is_help(&self) -> bool {
+ self.help
+ }
+
+ /// Prints the error and exists the process.
+ pub fn exit(self) -> ! {
+ if self.is_help() {
+ println!("{self}");
+ std::process::exit(0)
+ } else {
+ eprintln!("{self}");
+ std::process::exit(2)
+ }
}
}
diff --git a/vendor/xflags/src/rt.rs b/vendor/xflags/src/rt.rs
index 3c33196af..988e6cc23 100644
--- a/vendor/xflags/src/rt.rs
+++ b/vendor/xflags/src/rt.rs
@@ -4,7 +4,7 @@ use crate::{Error, Result};
macro_rules! format_err {
($($tt:tt)*) => {
- Error { msg: format!($($tt)*) }
+ Error { msg: format!($($tt)*), help: false }
};
}
@@ -94,6 +94,14 @@ impl Parser {
format_err!("unexpected argument: {:?}", arg)
}
+ pub fn subcommand_required(&self) -> Error {
+ format_err!("subcommand is required")
+ }
+
+ pub fn help(&self, help: &'static str) -> Error {
+ Error { msg: help.to_string(), help: true }
+ }
+
pub fn optional<T>(&self, flag: &str, mut vals: Vec<T>) -> Result<Option<T>> {
if vals.len() > 1 {
bail!("flag specified more than once: `{}`", flag)
@@ -107,8 +115,4 @@ impl Parser {
}
vals.pop().ok_or_else(|| format_err!("flag is required: `{}`", flag))
}
-
- pub fn subcommand<T>(&self, cmd: Option<T>) -> Result<T> {
- cmd.ok_or_else(|| format_err!("subcommand is required"))
- }
}