From 06e51f03838c3e58dae7a500c41adffae299800b Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Wed, 4 Jan 2023 10:05:36 +0800 Subject: [PATCH 1/7] Set package configuration options Configure Abseil for Debian. - Set the SONAME appropriately. - To minimize the possibility of future ABI breakage, treat absl::any, absl::optional, absl::string_view, and absl::variant as their own types (rather than aliases for the std:: versions), and compile everything in an inline namespace. - Enable upstream's hardened build mode. --- CMake/AbseilHelpers.cmake | 3 ++- absl/base/options.h | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake index dbb09fe..6b6613f 100644 --- a/CMake/AbseilHelpers.cmake +++ b/CMake/AbseilHelpers.cmake @@ -281,7 +281,8 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n") if(ABSL_ENABLE_INSTALL) set_target_properties(${_NAME} PROPERTIES OUTPUT_NAME "absl_${_NAME}" - SOVERSION "2206.0.0" + SOVERSION 20220623 + VERSION "20220623.0.0" ) endif() else() diff --git a/absl/base/options.h b/absl/base/options.h index bc59847..62f29a1 100644 --- a/absl/base/options.h +++ b/absl/base/options.h @@ -100,7 +100,7 @@ // User code should not inspect this macro. To check in the preprocessor if // absl::any is a typedef of std::any, use the feature macro ABSL_USES_STD_ANY. -#define ABSL_OPTION_USE_STD_ANY 2 +#define ABSL_OPTION_USE_STD_ANY 0 // ABSL_OPTION_USE_STD_OPTIONAL @@ -127,7 +127,7 @@ // absl::optional is a typedef of std::optional, use the feature macro // ABSL_USES_STD_OPTIONAL. -#define ABSL_OPTION_USE_STD_OPTIONAL 2 +#define ABSL_OPTION_USE_STD_OPTIONAL 0 // ABSL_OPTION_USE_STD_STRING_VIEW @@ -154,7 +154,7 @@ // absl::string_view is a typedef of std::string_view, use the feature macro // ABSL_USES_STD_STRING_VIEW. -#define ABSL_OPTION_USE_STD_STRING_VIEW 2 +#define ABSL_OPTION_USE_STD_STRING_VIEW 0 // ABSL_OPTION_USE_STD_VARIANT // @@ -180,7 +180,7 @@ // absl::variant is a typedef of std::variant, use the feature macro // ABSL_USES_STD_VARIANT. -#define ABSL_OPTION_USE_STD_VARIANT 2 +#define ABSL_OPTION_USE_STD_VARIANT 0 // ABSL_OPTION_USE_INLINE_NAMESPACE @@ -206,7 +206,7 @@ // allowed. #define ABSL_OPTION_USE_INLINE_NAMESPACE 1 -#define ABSL_OPTION_INLINE_NAMESPACE_NAME lts_20220623 +#define ABSL_OPTION_INLINE_NAMESPACE_NAME debian3 // ABSL_OPTION_HARDENED // @@ -233,6 +233,6 @@ // checks enabled by this option may abort the program in a different way and // log additional information when `NDEBUG` is not defined. -#define ABSL_OPTION_HARDENED 0 +#define ABSL_OPTION_HARDENED 1 #endif // ABSL_BASE_OPTIONS_H_ From 0c3127fc98683ca23e10a853a1c34d8ae18a8d7c Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Wed, 4 Jan 2023 10:06:31 +0800 Subject: [PATCH 2/7] Canonicalize supported CPU feature set Explicitly set supported CPU features. - Disable Intel SSE and SSE2 on i386, since Debian supports some i386 processors without those extensions. Keep them enabled on amd64, since all amd64 processors have them. - Disable Intel SSSE3 entirely, since no i386 processor supports it and Debian supports amd64 processors without it. - Disable NEON on armel and armhf, since no armel processor supports NEON and Debian supports some armhf processors without it. Keep it enabled on arm64, since all arm64 processors have it. --- absl/base/config.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/absl/base/config.h b/absl/base/config.h index 705ecea..e2612f4 100644 --- a/absl/base/config.h +++ b/absl/base/config.h @@ -862,7 +862,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' || // which architectures support the various x86 instruction sets. #ifdef ABSL_INTERNAL_HAVE_SSE #error ABSL_INTERNAL_HAVE_SSE cannot be directly set -#elif defined(__SSE__) +#elif defined(__x86_64__) #define ABSL_INTERNAL_HAVE_SSE 1 #elif defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1) // MSVC only defines _M_IX86_FP for x86 32-bit code, and _M_IX86_FP >= 1 @@ -877,7 +877,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' || // which architectures support the various x86 instruction sets. #ifdef ABSL_INTERNAL_HAVE_SSE2 #error ABSL_INTERNAL_HAVE_SSE2 cannot be directly set -#elif defined(__SSE2__) +#elif defined(__x86_64__) #define ABSL_INTERNAL_HAVE_SSE2 1 #elif defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2) // MSVC only defines _M_IX86_FP for x86 32-bit code, and _M_IX86_FP >= 2 @@ -898,15 +898,13 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' || // by the CPU. #ifdef ABSL_INTERNAL_HAVE_SSSE3 #error ABSL_INTERNAL_HAVE_SSSE3 cannot be directly set -#elif defined(__SSSE3__) -#define ABSL_INTERNAL_HAVE_SSSE3 1 #endif // ABSL_INTERNAL_HAVE_ARM_NEON is used for compile-time detection of NEON (ARM // SIMD). #ifdef ABSL_INTERNAL_HAVE_ARM_NEON #error ABSL_INTERNAL_HAVE_ARM_NEON cannot be directly set -#elif defined(__ARM_NEON) +#elif defined(__aarch64__) #define ABSL_INTERNAL_HAVE_ARM_NEON 1 #endif From 80ca4dfd487051c01d82abc2864a840baa3e0283 Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Wed, 4 Jan 2023 10:06:47 +0800 Subject: [PATCH 3/7] Eliminate libabsl_flags.so and libabsl_flags.a The libabsl_flags library only contains code when compiling with MSVC, which Debian doesn't use. Skip compiling absl/flags/flag.cc, and make the Abseil flags library header-only. --- absl/flags/CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/absl/flags/CMakeLists.txt b/absl/flags/CMakeLists.txt index 3e9d5ad..cb59d24 100644 --- a/absl/flags/CMakeLists.txt +++ b/absl/flags/CMakeLists.txt @@ -199,8 +199,6 @@ absl_cc_library( absl_cc_library( NAME flags - SRCS - "flag.cc" HDRS "declare.h" "flag.h" From 65dbf41223762e97f280ff838c101a63ffb42f57 Mon Sep 17 00:00:00 2001 From: Benjamin Barenblat Date: Wed, 4 Jan 2023 10:06:56 +0800 Subject: [PATCH 4/7] Use libatomic if necessary On some architectures, notably armel, Abseil needs symbols defined in libatomic. Abseil does not currently have a well-developed system to declare external library dependencies, so just have the linker determine if anything needs libatomic and add the DT_NEEDED entry where necessary. --- absl/copts/AbseilConfigureCopts.cmake | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/absl/copts/AbseilConfigureCopts.cmake b/absl/copts/AbseilConfigureCopts.cmake index 73435e9..0dce69f 100644 --- a/absl/copts/AbseilConfigureCopts.cmake +++ b/absl/copts/AbseilConfigureCopts.cmake @@ -94,4 +94,8 @@ else() set(ABSL_TEST_COPTS "") endif() +list(APPEND ABSL_DEFAULT_LINKOPTS + "-Wl,--push-state,--as-needed" "-latomic" "-Wl,--pop-state" +) + set(ABSL_CXX_STANDARD "${CMAKE_CXX_STANDARD}") From 1b780cbb881f6607dfaa62d809f643ef8a496645 Mon Sep 17 00:00:00 2001 From: Bruno Pitrus Date: Wed, 4 Jan 2023 10:07:08 +0800 Subject: [PATCH 5/7] Do not leak -maes -msse4.1 into pkgconfig --- CMake/AbseilHelpers.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake index 6b6613f..0fe2c0a 100644 --- a/CMake/AbseilHelpers.cmake +++ b/CMake/AbseilHelpers.cmake @@ -166,6 +166,8 @@ function(absl_cc_library) set(PC_CFLAGS "${PC_CFLAGS} ${cflag}") elseif(${cflag} MATCHES "^(-W|/w[1234eo])") # Don't impose our warnings on others. + elseif(${cflag} MATCHES "^-m") + # Don't impose CPU instruction requirements on others, as the code performs feature detection on runtime. else() set(PC_CFLAGS "${PC_CFLAGS} ${cflag}") endif() From d612db1f7defe087f2297f6b4bda24f2141dc88e Mon Sep 17 00:00:00 2001 From: zhouganqing Date: Wed, 4 Jan 2023 10:09:45 +0800 Subject: [PATCH 6/7] sync upstream patches --- debian/README.Debian | 9 - debian/changelog | 6 + debian/control | 14 +- debian/copyright | 2 +- debian/libabsl20210324.lintian-overrides | 40 - debian/libabsl20210324.shlibs | 74 -- ...210324.install => libabsl20220623.install} | 0 debian/libabsl20220623.lintian-overrides | 40 + debian/libabsl20220623.shlibs | 78 ++ ...onTest-irrelevant-destination-buckets.diff | 71 -- debian/patches/arm-multiarch.diff | 31 - debian/patches/big-endian-hash.diff | 729 ------------------ debian/patches/big-endian-hash2.diff | 170 ---- debian/patches/big-endian-random.diff | 711 ----------------- debian/patches/big-endian-random2.diff | 97 --- debian/patches/big-endian-random3.diff | 86 --- debian/patches/big-endian-random4.diff | 82 -- debian/patches/configure.diff | 126 --- debian/patches/cordrepring-typo.diff | 24 - debian/patches/empty-flags-library.diff | 24 - debian/patches/float-rounding.diff | 53 -- debian/patches/float-tests-disable-i386.diff | 160 ---- debian/patches/latomic.diff | 25 - debian/patches/missing-rint.diff | 49 -- debian/patches/thumb-function-bounds.diff | 106 --- debian/rules | 15 +- debian/{gbp.conf => tests/bug1011294} | 14 +- debian/tests/cmake | 2 +- debian/tests/control | 3 + 29 files changed, 156 insertions(+), 2685 deletions(-) delete mode 100644 debian/README.Debian delete mode 100644 debian/libabsl20210324.lintian-overrides delete mode 100644 debian/libabsl20210324.shlibs rename debian/{libabsl20210324.install => libabsl20220623.install} (100%) create mode 100644 debian/libabsl20220623.lintian-overrides create mode 100644 debian/libabsl20220623.shlibs delete mode 100644 debian/patches/DiscreteDistributionTest-irrelevant-destination-buckets.diff delete mode 100644 debian/patches/arm-multiarch.diff delete mode 100644 debian/patches/big-endian-hash.diff delete mode 100644 debian/patches/big-endian-hash2.diff delete mode 100644 debian/patches/big-endian-random.diff delete mode 100644 debian/patches/big-endian-random2.diff delete mode 100644 debian/patches/big-endian-random3.diff delete mode 100644 debian/patches/big-endian-random4.diff delete mode 100644 debian/patches/configure.diff delete mode 100644 debian/patches/cordrepring-typo.diff delete mode 100644 debian/patches/empty-flags-library.diff delete mode 100644 debian/patches/float-rounding.diff delete mode 100644 debian/patches/float-tests-disable-i386.diff delete mode 100644 debian/patches/latomic.diff delete mode 100644 debian/patches/missing-rint.diff delete mode 100644 debian/patches/thumb-function-bounds.diff rename debian/{gbp.conf => tests/bug1011294} (70%) mode change 100644 => 100755 diff --git a/debian/README.Debian b/debian/README.Debian deleted file mode 100644 index 7c0dd3c..0000000 --- a/debian/README.Debian +++ /dev/null @@ -1,9 +0,0 @@ -Abseil for Debian ------------------ - -libabsl-dev installs a number of files to 'internal' directories. In general, -your project should not directly include any files from these directories; they -may change without warning. If you think you need something from one of those -files, please report a bug with reportbug(1). - - -- Benjamin Barenblat Thu, 07 May 2020 11:35:28 -0400 diff --git a/debian/changelog b/debian/changelog index d86afd7..a4770d0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +abseil (20220623.1-ok2) yangtze; urgency=medium + + * Sync upstream patches. + + -- zhouganqing Wed, 04 Jan 2023 09:58:34 +0800 + abseil (20220623.1-ok1) yangtze; urgency=medium * New upstream version 20220623.1 diff --git a/debian/control b/debian/control index dde1949..f25d860 100644 --- a/debian/control +++ b/debian/control @@ -14,17 +14,17 @@ Source: abseil Priority: optional -Maintainer: Benjamin Barenblat +Maintainer: OpenKylin Developers Build-Depends: cmake (>= 3.5), debhelper-compat (= 12), - googletest (>= 1.10.0.20200926) [!hppa !mipsel !ppc64] + googletest (>= 1.12) [!mipsel !ppc64] Rules-Requires-Root: no -Standards-Version: 4.6.0 +Standards-Version: 4.6.1 Section: libs Homepage: https://abseil.io/ -Vcs-Browser: https://salsa.debian.org/debian/abseil -Vcs-Git: https://salsa.debian.org/debian/abseil.git +Vcs-Browser: https://gitee.com/openkylin/abseil +Vcs-Git: https://gitee.com/openkylin/abseil.git Description: extensions to the C++ standard library Abseil is an open-source collection of C++ library code designed to augment the C++ standard library. The Abseil library code is collected from Google's C++ @@ -37,7 +37,7 @@ Architecture: any Multi-Arch: same Section: libdevel Depends: - libabsl20210324 (= ${binary:Version}), + libabsl20220623 (= ${binary:Version}), ${misc:Depends}, Recommends: cmake (>= 2.6) | pkg-config, g++ (>= 5.1) Description: ${source:Synopsis} (development files) @@ -46,7 +46,7 @@ Description: ${source:Synopsis} (development files) This package contains header files and other data necessary for developing with Abseil. -Package: libabsl20210324 +Package: libabsl20220623 Architecture: any Multi-Arch: same Depends: ${shlibs:Depends}, ${misc:Depends} diff --git a/debian/copyright b/debian/copyright index 986a426..260a1b8 100644 --- a/debian/copyright +++ b/debian/copyright @@ -12,7 +12,7 @@ Copyright: License: Apache-2.0 Files: debian/* -Copyright: 2020 Google LLC +Copyright: 2020-2022 Google LLC License: Apache-2.0 License: Apache-2.0 diff --git a/debian/libabsl20210324.lintian-overrides b/debian/libabsl20210324.lintian-overrides deleted file mode 100644 index 1ee8b55..0000000 --- a/debian/libabsl20210324.lintian-overrides +++ /dev/null @@ -1,40 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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 -# -# https://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. - -libabsl20210324: hardening-no-fortify-functions [usr/lib/*/libabsl_base.so*] -libabsl20210324: hardening-no-fortify-functions [usr/lib/*/libabsl_debugging_internal.so*] -libabsl20210324: hardening-no-fortify-functions [usr/lib/*/libabsl_random_internal_seed_material.so*] -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_bad_any_cast_impl.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_bad_optional_access.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_bad_variant_access.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_exponential_biased.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_flags_commandlineflag.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_flags_commandlineflag_internal.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_hash.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_hashtablez_sampler.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_log_severity.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_periodic_sampler.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_random_internal_randen.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_random_internal_randen_hwaes_impl.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_random_internal_randen_slow.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_stacktrace.so* -libabsl20210324: library-not-linked-against-libc usr/lib/*/libabsl_throw_delegate.so* -libabsl20210324: no-symbols-control-file usr/lib/*/libabsl_* -libabsl20210324: package-name-doesnt-match-sonames libabsl-* -libabsl20210324: shared-library-lacks-prerequisites usr/lib/*/libabsl_city.so* -libabsl20210324: shared-library-lacks-prerequisites usr/lib/*/libabsl_leak_check.so* -libabsl20210324: shared-library-lacks-prerequisites usr/lib/*/libabsl_leak_check_disable.so* -libabsl20210324: shared-library-lacks-prerequisites usr/lib/*/libabsl_random_internal_platform.so* -libabsl20210324: shared-library-lacks-prerequisites usr/lib/*/libabsl_random_internal_randen_hwaes.so* -libabsl20210324: shared-library-lacks-prerequisites usr/lib/*/libabsl_wyhash.so* diff --git a/debian/libabsl20210324.shlibs b/debian/libabsl20210324.shlibs deleted file mode 100644 index f1ecca6..0000000 --- a/debian/libabsl20210324.shlibs +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2020 Google LLC -# -# 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 -# -# https://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. -# -libabsl_bad_any_cast_impl 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_bad_optional_access 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_bad_variant_access 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_base 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_city 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_civil_time 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_cord 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_debugging_internal 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_demangle_internal 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_examine_stack 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_exponential_biased 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_failure_signal_handler 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_commandlineflag 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_commandlineflag_internal 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_config 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_internal 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_marshalling 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_parse 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_private_handle_accessor 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_program_name 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_reflection 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_usage 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_flags_usage_internal 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_graphcycles_internal 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_hash 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_hashtablez_sampler 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_int128 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_leak_check 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_leak_check_disable 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_log_severity 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_malloc_internal 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_periodic_sampler 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_distributions 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_internal_distribution_test_util 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_internal_platform 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_internal_pool_urbg 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_internal_randen 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_internal_randen_hwaes 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_internal_randen_hwaes_impl 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_internal_randen_slow 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_internal_seed_material 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_seed_gen_exception 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_random_seed_sequences 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_raw_hash_set 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_raw_logging_internal 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_scoped_set_env 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_spinlock_wait 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_stacktrace 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_status 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_statusor 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_str_format_internal 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_strerror 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_strings 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_strings_internal 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_symbolize 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_synchronization 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_throw_delegate 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_time 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_time_zone 20210324 libabsl20210324 (>= 0~20210324.2-1) -libabsl_wyhash 20210324 libabsl20210324 (>= 0~20210324.2-1) diff --git a/debian/libabsl20210324.install b/debian/libabsl20220623.install similarity index 100% rename from debian/libabsl20210324.install rename to debian/libabsl20220623.install diff --git a/debian/libabsl20220623.lintian-overrides b/debian/libabsl20220623.lintian-overrides new file mode 100644 index 0000000..e00d857 --- /dev/null +++ b/debian/libabsl20220623.lintian-overrides @@ -0,0 +1,40 @@ +# Copyright 2022 Google LLC +# +# 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 +# +# https://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. + +libabsl20220623: hardening-no-fortify-functions [usr/lib/*/libabsl_base.so*] +libabsl20220623: hardening-no-fortify-functions [usr/lib/*/libabsl_debugging_internal.so*] +libabsl20220623: hardening-no-fortify-functions [usr/lib/*/libabsl_random_internal_seed_material.so*] +libabsl20220623: hardening-no-fortify-functions [usr/lib/*/libabsl_time_zone.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_bad_any_cast_impl.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_bad_optional_access.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_bad_variant_access.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_cordz_functions.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_cordz_sample_token.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_exponential_biased.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_flags_commandlineflag.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_flags_commandlineflag_internal.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_hash.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_log_severity.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_periodic_sampler.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_random_internal_randen.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_random_internal_randen_hwaes_impl.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_random_internal_randen_slow.so*] +libabsl20220623: library-not-linked-against-libc [usr/lib/*/libabsl_throw_delegate.so*] +libabsl20220623: no-symbols-control-file usr/lib/*/libabsl_* +libabsl20220623: package-name-doesnt-match-sonames libabsl-* +libabsl20220623: shared-library-lacks-prerequisites [usr/lib/*/libabsl_city.so*] +libabsl20220623: shared-library-lacks-prerequisites [usr/lib/*/libabsl_leak_check.so*] +libabsl20220623: shared-library-lacks-prerequisites [usr/lib/*/libabsl_low_level_hash.so*] +libabsl20220623: shared-library-lacks-prerequisites [usr/lib/*/libabsl_random_internal_platform.so*] +libabsl20220623: shared-library-lacks-prerequisites [usr/lib/*/libabsl_random_internal_randen_hwaes.so*] diff --git a/debian/libabsl20220623.shlibs b/debian/libabsl20220623.shlibs new file mode 100644 index 0000000..b5e77c0 --- /dev/null +++ b/debian/libabsl20220623.shlibs @@ -0,0 +1,78 @@ +# Copyright 2022 Google LLC +# +# 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 +# +# https://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. +# +libabsl_bad_any_cast_impl 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_bad_optional_access 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_bad_variant_access 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_base 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_city 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_civil_time 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_cord 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_cord_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_cordz_functions 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_cordz_handle 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_cordz_info 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_cordz_sample_token 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_debugging_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_demangle_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_examine_stack 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_exponential_biased 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_failure_signal_handler 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_commandlineflag 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_commandlineflag_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_config 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_marshalling 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_parse 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_private_handle_accessor 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_program_name 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_reflection 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_usage 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_flags_usage_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_graphcycles_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_hash 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_hashtablez_sampler 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_int128 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_leak_check 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_log_severity 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_low_level_hash 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_malloc_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_periodic_sampler 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_distributions 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_internal_distribution_test_util 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_internal_platform 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_internal_pool_urbg 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_internal_randen 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_internal_randen_hwaes 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_internal_randen_hwaes_impl 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_internal_randen_slow 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_internal_seed_material 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_seed_gen_exception 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_random_seed_sequences 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_raw_hash_set 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_raw_logging_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_scoped_set_env 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_spinlock_wait 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_stacktrace 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_status 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_statusor 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_str_format_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_strerror 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_strings 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_strings_internal 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_symbolize 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_synchronization 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_throw_delegate 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_time 20220623 libabsl20220623 (>= 0~20220623.0-1) +libabsl_time_zone 20220623 libabsl20220623 (>= 0~20220623.0-1) diff --git a/debian/patches/DiscreteDistributionTest-irrelevant-destination-buckets.diff b/debian/patches/DiscreteDistributionTest-irrelevant-destination-buckets.diff deleted file mode 100644 index 9842b46..0000000 --- a/debian/patches/DiscreteDistributionTest-irrelevant-destination-buckets.diff +++ /dev/null @@ -1,71 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: =?utf-8?q?Don=E2=80=99t_examine_irrelevant_destination_buckets_in_?= - =?utf-8?q?DiscreteDistributionTest?= -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -Abseil generates discrete distributions using Walker’s aliasing -algorithm. This creates uniformly distributed buckets, each with a -probability of sending traffic to a different bucket. Abseil represents -a bucket as a pair - - (probability of retaining traffic × - alternate bucket if traffic is passed) - -and a distribution as a vector of such pairs. For example, {(0.3, 1), -(1.0, 1)} represents a distribution with two buckets, the zeroth of -which passes 70% of its traffic to bucket 1 and the first of which holds -on to all its traffic. - -This representation is not unique: When a bucket retains traffic with -probability 1, the alternate bucket is irrelevant. Continuing the -example above, {(0.3, 1), (1.0, 0)} _also_ represents a two-bucket -distribution where the zeroth bucket passes 70% of its traffic to the -first and the first hangs on to all traffic. Exactly what representation -Abseil generates for a given input is related to how much precision is -used in intermediate floating-point operations, which is an -architectural implementation detail. Remove sensitivity to that detail -by not examining the alternate bucket when the retention probability is -1.0. - -The author works at Google. Upstream applied this patch as Piper -revision 372993410 and exported it to GitHub; the Applied-Upstream URL -above points to the exported commit. ---- - absl/random/discrete_distribution_test.cc | 7 ++++--- - 1 file changed, 4 insertions(+), 3 deletions(-) - -diff --git a/absl/random/discrete_distribution_test.cc b/absl/random/discrete_distribution_test.cc -index 6d00700..415b14c 100644 ---- a/absl/random/discrete_distribution_test.cc -+++ b/absl/random/discrete_distribution_test.cc -@@ -99,6 +99,7 @@ TYPED_TEST(DiscreteDistributionTypeTest, Constructor) { - } - - TEST(DiscreteDistributionTest, InitDiscreteDistribution) { -+ using testing::_; - using testing::Pair; - - { -@@ -111,8 +112,8 @@ TEST(DiscreteDistributionTest, InitDiscreteDistribution) { - // Each bucket is p=1/3, so bucket 0 will send half it's traffic - // to bucket 2, while the rest will retain all of their traffic. - EXPECT_THAT(q, testing::ElementsAre(Pair(0.5, 2), // -- Pair(1.0, 1), // -- Pair(1.0, 2))); -+ Pair(1.0, _), // -+ Pair(1.0, _))); - } - - { -@@ -135,7 +136,7 @@ TEST(DiscreteDistributionTest, InitDiscreteDistribution) { - - EXPECT_THAT(q, testing::ElementsAre(Pair(b0, 3), // - Pair(b1, 3), // -- Pair(1.0, 2), // -+ Pair(1.0, _), // - Pair(b3, 2), // - Pair(b1, 3))); - } diff --git a/debian/patches/arm-multiarch.diff b/debian/patches/arm-multiarch.diff deleted file mode 100644 index d0e7392..0000000 --- a/debian/patches/arm-multiarch.diff +++ /dev/null @@ -1,31 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Disable SysinfoTest.NominalCPUFrequency on armel/armhf - -NominalCPUFrequency has different behavior on 32-bit and 64-bit ARM -kernels. The Debian arm64 buildds assume they can build 32-bit ARM -packages, but if they do, the NominalCPUFrequency test will fail. -Disable the test when building for 32-bit ARM. ---- - absl/base/internal/sysinfo_test.cc | 8 +++++++- - 1 file changed, 7 insertions(+), 1 deletion(-) - -diff --git a/absl/base/internal/sysinfo_test.cc b/absl/base/internal/sysinfo_test.cc -index 5f9e45f..9849aac 100644 ---- a/absl/base/internal/sysinfo_test.cc -+++ b/absl/base/internal/sysinfo_test.cc -@@ -43,7 +43,13 @@ TEST(SysinfoTest, NumCPUs) { - // POWER is particularly problematic here; some Linux kernels expose the CPU - // frequency, while others do not. Since we can't predict a priori what a given - // machine is going to do, just disable this test on POWER on Linux. --#if !(defined(__linux) && (defined(__ppc64__) || defined(__PPC64__))) -+// -+// Debian also disables this test on armel and armhf, since tests for those -+// platforms could either be run on a 32-bit ARM system (where -+// NominalCPUFrequency returns a reasonable value) or a 64-bit ARM system (where -+// it does not). -+#if !(defined(__linux) && \ -+ (defined(__ppc64__) || defined(__PPC64__) || defined(__arm__))) - TEST(SysinfoTest, NominalCPUFrequency) { - // Linux only exposes the CPU frequency on certain architectures, and - // Emscripten doesn't expose it at all. diff --git a/debian/patches/big-endian-hash.diff b/debian/patches/big-endian-hash.diff deleted file mode 100644 index dd04e7f..0000000 --- a/debian/patches/big-endian-hash.diff +++ /dev/null @@ -1,729 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Restructure wyhash_test.cc to separate golden values - -This patch is a subset of the referenced commit, which originally also changed -the mix function on arm64. The original message is as follows: - - Alternative bit mixer for LowLevelHash on ARM - - LowLevelHash's bit-mixer is inefficient on ARM because it calculates - a 128-bit product of two 64-bit numbers. On ARM, this requires a - sequence of two instructions with a high combined latency and poor - throughput. This change provides alternative bit-mixing code for ARM - that uses only 64-bit arithmetic (multiplication, xor, and - left-shifts) and speeds things up considerably. - - The bit-mixing code for ARM was inspired by by Woothash[1] and - xxh3[1]. Once I landed on a sequence of operations that provided - good mixing, I used a test harness to search for the combination of - shift / rotate factors that provided the best mixing, as indicated - by SMHasher hash quality tests. The new mixing code passes 13 out of - 15 of the hash quality test suites in SMHasher, with the two - failures being in the noise range: e.g. 1 collision vs. zero - expected in a keyset of ~8m keys. - - [1]: https://github.com/tommyettinger/waterhash/blob/49f5cf0b63b9/woothash.h#L16-L20 - [2]: https://github.com/Cyan4973/xxHash/blob/6853ddc36e46/xxhash.h#L3240-L3265 - - PiperOrigin-RevId: 391833008 - -This restructuring is a prerequisite for big-endian-hash2.diff. ---- - absl/hash/internal/wyhash_test.cc | 436 +++++++++++++++++++------------------- - 1 file changed, 216 insertions(+), 220 deletions(-) - -diff --git a/absl/hash/internal/wyhash_test.cc b/absl/hash/internal/wyhash_test.cc -index 9fb06d2..9e2d106 100644 ---- a/absl/hash/internal/wyhash_test.cc -+++ b/absl/hash/internal/wyhash_test.cc -@@ -14,473 +14,469 @@ - - #include "absl/hash/internal/wyhash.h" - --#include "absl/strings/escaping.h" -+#include -+ - #include "gmock/gmock.h" - #include "gtest/gtest.h" -+#include "absl/strings/escaping.h" -+ -+#define UPDATE_GOLDEN 0 - - namespace { - --static const uint64_t kCurrentSeed = 0; - static const uint64_t kSalt[5] = {0xa0761d6478bd642f, 0xe7037ed1a0b428dbl, - 0x8ebc6af09c88c6e3, 0x589965cc75374cc3l, - 0x1d8e4e27c47d124f}; - --// Note: We don't account for endianness, so the values here are only correct if --// you're also running on a little endian platform. -- --TEST(WyhashTest, EmptyString) { -- const std::string s = ""; -- EXPECT_EQ( -- absl::hash_internal::Wyhash(s.c_str(), s.length(), kCurrentSeed, kSalt), -- 4808886099364463827); --} -- --TEST(WyhashTest, Spaces) { -- const std::string s = " "; -- EXPECT_EQ( -- absl::hash_internal::Wyhash(s.c_str(), s.length(), kCurrentSeed, kSalt), -- 1686201463024549249); --} -- --TEST(WyhashTest, RepeatingString) { -- const std::string s = "aaaa"; -- EXPECT_EQ( -- absl::hash_internal::Wyhash(s.c_str(), s.length(), kCurrentSeed, kSalt), -- 6646112255271966632); --} -- --TEST(WyhashTest, HexString) { -- const std::string small = "\x01\x02\x03"; -- const std::string med = "\x01\x02\x03\x04"; -- -- EXPECT_EQ(absl::hash_internal::Wyhash(small.c_str(), small.length(), -- kCurrentSeed, kSalt), -- 11989428023081740911ULL); -- EXPECT_EQ(absl::hash_internal::Wyhash(med.c_str(), med.length(), kCurrentSeed, -- kSalt), -- 9765997711188871556ULL); --} -- --TEST(WyhashTest, Words) { -- const std::string s = "third_party|wyhash|64"; -- EXPECT_EQ( -- absl::hash_internal::Wyhash(s.c_str(), s.length(), kCurrentSeed, kSalt), -- 3702018632387611330); --} -- --TEST(WyhashTest, LongString) { -- const std::string s = -- "AbCdEfGhIjKlMnOpQrStUvWxYz0123456789AbCdEfGhIjKlMnOpQrStUvWxYz" -- "0123456789AbCdEfGhIjKlMnOpQrStUvWxYz0123456789AbCdEfGhIjKlMnOp" -- "QrStUvWxYz0123456789AbCdEfGhIjKlMnOpQrStUvWxYz0123456789AbCdEf" -- "GhIjKlMnOpQrStUvWxYz0123456789AbCdEfGhIjKlMnOpQrStUvWxYz012345" -- "6789AbCdEfGhIjKlMnOpQrStUvWxYz0123456789"; -- -- EXPECT_EQ( -- absl::hash_internal::Wyhash(s.c_str(), s.length(), kCurrentSeed, kSalt), -- 9245411362605796064ULL); --} -- --TEST(WyhashTest, BigReference) { -- struct ExpectedResult { -+TEST(WyhashTest, VerifyGolden) { -+ constexpr size_t kNumGoldenOutputs = 134; -+ static struct { - absl::string_view base64_data; - uint64_t seed; -- uint64_t hash; -- } expected_results[] = { -- {"", uint64_t{0xec42b7ab404b8acb}, uint64_t{0xe5a40d39ab796423}}, -- {"Zw==", uint64_t{0xeeee074043a3ee0f}, uint64_t{0xa6564b468248c683}}, -- {"xmk=", uint64_t{0x857902089c393de}, uint64_t{0xef192f401b116e1c}}, -- {"c1H/", uint64_t{0x993df040024ca3af}, uint64_t{0xbe8dc0c54617639d}}, -- {"SuwpzQ==", uint64_t{0xc4e4c2acea740e96}, uint64_t{0x93d7f665b5521c8e}}, -- {"uqvy++M=", uint64_t{0x6a214b3db872d0cf}, uint64_t{0x646d70bb42445f28}}, -- {"RnzCVPgb", uint64_t{0x44343db6a89dba4d}, uint64_t{0x96a7b1e3cc9bd426}}, -- {"6OeNdlouYw==", uint64_t{0x77b5d6d1ae1dd483}, -- uint64_t{0x76020289ab0790c4}}, -- {"M5/JmmYyDbc=", uint64_t{0x89ab8ecb44d221f1}, -- uint64_t{0x39f842e4133b9b44}}, -- {"MVijWiVdBRdY", uint64_t{0x60244b17577ca81b}, -- uint64_t{0x2b8d7047be4bcaab}}, -- {"6V7Uq7LNxpu0VA==", uint64_t{0x59a08dcee0717067}, -- uint64_t{0x99628abef6716a97}}, -- {"EQ6CdEEhPdyHcOk=", uint64_t{0xf5f20db3ade57396}, -- uint64_t{0x4432e02ba42b2740}}, -- {"PqFB4fxnPgF+l+rc", uint64_t{0xbf8dee0751ad3efb}, -- uint64_t{0x74d810efcad7918a}}, -- {"a5aPOFwq7LA7+zKvPA==", uint64_t{0x6b7a06b268d63e30}, -- uint64_t{0x88c84e986002507f}}, -- {"VOwY21wCGv5D+/qqOvs=", uint64_t{0xb8c37f0ae0f54c82}, -- uint64_t{0x4f99acf193cf39b9}}, -- {"KdHmBTx8lHXYvmGJ+Vy7", uint64_t{0x9fcbed0c38e50eef}, -- uint64_t{0xd90e7a3655891e37}}, -- {"qJkPlbHr8bMF7/cA6aE65Q==", uint64_t{0x2af4bade1d8e3a1d}, -- uint64_t{0x3bb378b1d4df8fcf}}, -- {"ygvL0EhHZL0fIx6oHHtkxRQ=", uint64_t{0x714e3aa912da2f2c}, -- uint64_t{0xf78e94045c052d47}}, -- {"c1rFXkt5YztwZCQRngncqtSs", uint64_t{0xf5ee75e3cbb82c1c}, -- uint64_t{0x26da0b2130da6b40}}, -- {"8hsQrzszzeNQSEcVXLtvIhm6mw==", uint64_t{0x620e7007321b93b9}, -- uint64_t{0x30b4d426af8c6986}}, -- {"ffUL4RocfyP4KfikGxO1yk7omDI=", uint64_t{0xc08528cac2e551fc}, -- uint64_t{0x5413b4aaf3baaeae}}, -- {"OOB5TT00vF9Od/rLbAWshiErqhpV", uint64_t{0x6a1debf9cc3ad39}, -- uint64_t{0x756ab265370a1597}}, -- {"or5wtXM7BFzTNpSzr+Lw5J5PMhVJ/Q==", uint64_t{0x7e0a3c88111fc226}, -- uint64_t{0xdaf5f4b7d09814fb}}, -- {"gk6pCHDUsoopVEiaCrzVDhioRKxb844=", uint64_t{0x1301fef15df39edb}, -- uint64_t{0x8f874ae37742b75e}}, -- {"TNctmwlC5QbEM6/No4R/La3UdkfeMhzs", uint64_t{0x64e181f3d5817ab}, -- uint64_t{0x8fecd03956121ce8}}, -- {"SsQw9iAjhWz7sgcE9OwLuSC6hsM+BfHs2Q==", uint64_t{0xafafc44961078ecb}, -- uint64_t{0x229c292ea7a08285}}, -- {"ZzO3mVCj4xTT2TT3XqDyEKj2BZQBvrS8RHg=", uint64_t{0x4f7bb45549250094}, -- uint64_t{0xbb4bf0692d14bae}}, -- {"+klp5iPQGtppan5MflEls0iEUzqU+zGZkDJX", uint64_t{0xa30061abaa2818c}, -- uint64_t{0x207b24ca3bdac1db}}, -- {"RO6bvOnlJc8I9eniXlNgqtKy0IX6VNg16NRmgg==", uint64_t{0xd902ee3e44a5705f}, -- uint64_t{0x64f6cd6745d3825b}}, -- {"ZJjZqId1ZXBaij9igClE3nyliU5XWdNRrayGlYA=", uint64_t{0x316d36da516f583}, -- uint64_t{0xa2b2e1656b58df1e}}, -- {"7BfkhfGMDGbxfMB8uyL85GbaYQtjr2K8g7RpLzr/", uint64_t{0x402d83f9f834f616}, -- uint64_t{0xd01d30d9ee7a148}}, -+ } cases[] = { -+ {"", uint64_t{0xec42b7ab404b8acb}}, -+ {"ICAg", uint64_t{0}}, -+ {"YWFhYQ==", uint64_t{0}}, -+ {"AQID", uint64_t{0}}, -+ {"AQIDBA==", uint64_t{0}}, -+ {"dGhpcmRfcGFydHl8d3loYXNofDY0", uint64_t{0}}, -+ {"Zw==", uint64_t{0xeeee074043a3ee0f}}, -+ {"xmk=", uint64_t{0x857902089c393de}}, -+ {"c1H/", uint64_t{0x993df040024ca3af}}, -+ {"SuwpzQ==", uint64_t{0xc4e4c2acea740e96}}, -+ {"uqvy++M=", uint64_t{0x6a214b3db872d0cf}}, -+ {"RnzCVPgb", uint64_t{0x44343db6a89dba4d}}, -+ {"6OeNdlouYw==", uint64_t{0x77b5d6d1ae1dd483}}, -+ {"M5/JmmYyDbc=", uint64_t{0x89ab8ecb44d221f1}}, -+ {"MVijWiVdBRdY", uint64_t{0x60244b17577ca81b}}, -+ {"6V7Uq7LNxpu0VA==", uint64_t{0x59a08dcee0717067}}, -+ {"EQ6CdEEhPdyHcOk=", uint64_t{0xf5f20db3ade57396}}, -+ {"PqFB4fxnPgF+l+rc", uint64_t{0xbf8dee0751ad3efb}}, -+ {"a5aPOFwq7LA7+zKvPA==", uint64_t{0x6b7a06b268d63e30}}, -+ {"VOwY21wCGv5D+/qqOvs=", uint64_t{0xb8c37f0ae0f54c82}}, -+ {"KdHmBTx8lHXYvmGJ+Vy7", uint64_t{0x9fcbed0c38e50eef}}, -+ {"qJkPlbHr8bMF7/cA6aE65Q==", uint64_t{0x2af4bade1d8e3a1d}}, -+ {"ygvL0EhHZL0fIx6oHHtkxRQ=", uint64_t{0x714e3aa912da2f2c}}, -+ {"c1rFXkt5YztwZCQRngncqtSs", uint64_t{0xf5ee75e3cbb82c1c}}, -+ {"8hsQrzszzeNQSEcVXLtvIhm6mw==", uint64_t{0x620e7007321b93b9}}, -+ {"ffUL4RocfyP4KfikGxO1yk7omDI=", uint64_t{0xc08528cac2e551fc}}, -+ {"OOB5TT00vF9Od/rLbAWshiErqhpV", uint64_t{0x6a1debf9cc3ad39}}, -+ {"or5wtXM7BFzTNpSzr+Lw5J5PMhVJ/Q==", uint64_t{0x7e0a3c88111fc226}}, -+ {"gk6pCHDUsoopVEiaCrzVDhioRKxb844=", uint64_t{0x1301fef15df39edb}}, -+ {"TNctmwlC5QbEM6/No4R/La3UdkfeMhzs", uint64_t{0x64e181f3d5817ab}}, -+ {"SsQw9iAjhWz7sgcE9OwLuSC6hsM+BfHs2Q==", uint64_t{0xafafc44961078ecb}}, -+ {"ZzO3mVCj4xTT2TT3XqDyEKj2BZQBvrS8RHg=", uint64_t{0x4f7bb45549250094}}, -+ {"+klp5iPQGtppan5MflEls0iEUzqU+zGZkDJX", uint64_t{0xa30061abaa2818c}}, -+ {"RO6bvOnlJc8I9eniXlNgqtKy0IX6VNg16NRmgg==", -+ uint64_t{0xd902ee3e44a5705f}}, -+ {"ZJjZqId1ZXBaij9igClE3nyliU5XWdNRrayGlYA=", uint64_t{0x316d36da516f583}}, -+ {"7BfkhfGMDGbxfMB8uyL85GbaYQtjr2K8g7RpLzr/", -+ uint64_t{0x402d83f9f834f616}}, - {"rycWk6wHH7htETQtje9PidS2YzXBx+Qkg2fY7ZYS7A==", -- uint64_t{0x9c604164c016b72c}, uint64_t{0x1cb4cd00ab804e3b}}, -+ uint64_t{0x9c604164c016b72c}}, - {"RTkC2OUK+J13CdGllsH0H5WqgspsSa6QzRZouqx6pvI=", -- uint64_t{0x3f4507e01f9e73ba}, uint64_t{0x4697f2637fd90999}}, -+ uint64_t{0x3f4507e01f9e73ba}}, - {"tKjKmbLCNyrLCM9hycOAXm4DKNpM12oZ7dLTmUx5iwAi", -- uint64_t{0xc3fe0d5be8d2c7c7}, uint64_t{0x8383a756b5688c07}}, -+ uint64_t{0xc3fe0d5be8d2c7c7}}, - {"VprUGNH+5NnNRaORxgH/ySrZFQFDL+4VAodhfBNinmn8cg==", -- uint64_t{0x531858a40bfa7ea1}, uint64_t{0x695c29cb3696a975}}, -+ uint64_t{0x531858a40bfa7ea1}}, - {"gc1xZaY+q0nPcUvOOnWnT3bqfmT/geth/f7Dm2e/DemMfk4=", -- uint64_t{0x86689478a7a7e8fa}, uint64_t{0xda2e5a5a5e971521}}, -+ uint64_t{0x86689478a7a7e8fa}}, - {"Mr35fIxqx1ukPAL0su1yFuzzAU3wABCLZ8+ZUFsXn47UmAph", -- uint64_t{0x4ec948b8e7f27288}, uint64_t{0x7935d4befa056b2b}}, -+ uint64_t{0x4ec948b8e7f27288}}, - {"A9G8pw2+m7+rDtWYAdbl8tb2fT7FFo4hLi2vAsa5Y8mKH3CX3g==", -- uint64_t{0xce46c7213c10032}, uint64_t{0x38dd541ca95420fe}}, -+ uint64_t{0xce46c7213c10032}}, - {"DFaJGishGwEHDdj9ixbCoaTjz9KS0phLNWHVVdFsM93CvPft3hM=", -- uint64_t{0xf63e96ee6f32a8b6}, uint64_t{0xcc06c7a4963f967f}}, -+ uint64_t{0xf63e96ee6f32a8b6}}, - {"7+Ugx+Kr3aRNgYgcUxru62YkTDt5Hqis+2po81hGBkcrJg4N0uuy", -- uint64_t{0x1cfe85e65fc5225}, uint64_t{0xbf0f6f66e232fb20}}, -+ uint64_t{0x1cfe85e65fc5225}}, - {"H2w6O8BUKqu6Tvj2xxaecxEI2wRgIgqnTTG1WwOgDSINR13Nm4d4Vg==", -- uint64_t{0x45c474f1cee1d2e8}, uint64_t{0xf7efb32d373fe71a}}, -+ uint64_t{0x45c474f1cee1d2e8}}, - {"1XBMnIbqD5jy65xTDaf6WtiwtdtQwv1dCVoqpeKj+7cTR1SaMWMyI04=", -- uint64_t{0x6e024e14015f329c}, uint64_t{0xe2e64634b1c12660}}, -+ uint64_t{0x6e024e14015f329c}}, - {"znZbdXG2TSFrKHEuJc83gPncYpzXGbAebUpP0XxzH0rpe8BaMQ17nDbt", -- uint64_t{0x760c40502103ae1c}, uint64_t{0x285b8fd1638e306d}}, -+ uint64_t{0x760c40502103ae1c}}, - {"ylu8Atu13j1StlcC1MRMJJXIl7USgDDS22HgVv0WQ8hx/8pNtaiKB17hCQ==", -- uint64_t{0x17fd05c3c560c320}, uint64_t{0x658e8a4e3b714d6c}}, -+ uint64_t{0x17fd05c3c560c320}}, - {"M6ZVVzsd7vAvbiACSYHioH/440dp4xG2mLlBnxgiqEvI/aIEGpD0Sf4VS0g=", -- uint64_t{0x8b34200a6f8e90d9}, uint64_t{0xf391fb968e0eb398}}, -+ uint64_t{0x8b34200a6f8e90d9}}, - {"li3oFSXLXI+ubUVGJ4blP6mNinGKLHWkvGruun85AhVn6iuMtocbZPVhqxzn", -- uint64_t{0x6be89e50818bdf69}, uint64_t{0x744a9ea0cc144bf2}}, -+ uint64_t{0x6be89e50818bdf69}}, - {"kFuQHuUCqBF3Tc3hO4dgdIp223ShaCoog48d5Do5zMqUXOh5XpGK1t5XtxnfGA==", -- uint64_t{0xfb389773315b47d8}, uint64_t{0x12636f2be11012f1}}, -+ uint64_t{0xfb389773315b47d8}}, - {"jWmOad0v0QhXVJd1OdGuBZtDYYS8wBVHlvOeTQx9ZZnm8wLEItPMeihj72E0nWY=", -- uint64_t{0x4f2512a23f61efee}, uint64_t{0x29c57de825948f80}}, -+ uint64_t{0x4f2512a23f61efee}}, - {"z+DHU52HaOQdW4JrZwDQAebEA6rm13Zg/9lPYA3txt3NjTBqFZlOMvTRnVzRbl23", -- uint64_t{0x59ccd92fc16c6fda}, uint64_t{0x58c6f99ab0d1c021}}, -+ uint64_t{0x59ccd92fc16c6fda}}, - {"MmBiGDfYeTayyJa/tVycg+rN7f9mPDFaDc+23j0TlW9094er0ADigsl4QX7V3gG/qw==", -- uint64_t{0x25c5a7f5bd330919}, uint64_t{0x13e7b5a7b82fe3bb}}, -+ uint64_t{0x25c5a7f5bd330919}}, - {"774RK+9rOL4iFvs1q2qpo/JVc/I39buvNjqEFDtDvyoB0FXxPI2vXqOrk08VPfIHkmU=", -- uint64_t{0x51df4174d34c97d7}, uint64_t{0x10fbc87901e02b63}}, -+ uint64_t{0x51df4174d34c97d7}}, - {"+slatXiQ7/2lK0BkVUI1qzNxOOLP3I1iK6OfHaoxgqT63FpzbElwEXSwdsryq3UlHK0I", -- uint64_t{0x80ce6d76f89cb57}, uint64_t{0xa24c9184901b748b}}, -+ uint64_t{0x80ce6d76f89cb57}}, - {"64mVTbQ47dHjHlOHGS/hjJwr/" - "K2frCNpn87exOqMzNUVYiPKmhCbfS7vBUce5tO6Ec9osQ==", -- uint64_t{0x20961c911965f684}, uint64_t{0xcac4fd4c5080e581}}, -+ uint64_t{0x20961c911965f684}}, - {"fIsaG1r530SFrBqaDj1kqE0AJnvvK8MNEZbII2Yw1OK77v0V59xabIh0B5axaz/" - "+a2V5WpA=", -- uint64_t{0x4e5b926ec83868e7}, uint64_t{0xc38bdb7483ba68e1}}, -+ uint64_t{0x4e5b926ec83868e7}}, - {"PGih0zDEOWCYGxuHGDFu9Ivbff/" - "iE7BNUq65tycTR2R76TerrXALRosnzaNYO5fjFhTi+CiS", -- uint64_t{0x3927b30b922eecef}, uint64_t{0xdb2a8069b2ceaffa}}, -+ uint64_t{0x3927b30b922eecef}}, - {"RnpA/" - "zJnEnnLjmICORByRVb9bCOgxF44p3VMiW10G7PvW7IhwsWajlP9kIwNA9FjAD2GoQHk2Q=" - "=", -- uint64_t{0xbd0291284a49b61c}, uint64_t{0xdf9fe91d0d1c7887}}, -+ uint64_t{0xbd0291284a49b61c}}, - {"qFklMceaTHqJpy2qavJE+EVBiNFOi6OxjOA3LeIcBop1K7w8xQi3TrDk+" - "BrWPRIbfprszSaPfrI=", -- uint64_t{0x73a77c575bcc956}, uint64_t{0xe83f49e96e2e6a08}}, -+ uint64_t{0x73a77c575bcc956}}, - {"cLbfUtLl3EcQmITWoTskUR8da/VafRDYF/ylPYwk7/" - "zazk6ssyrzxMN3mmSyvrXR2yDGNZ3WDrTT", -- uint64_t{0x766a0e2ade6d09a6}, uint64_t{0xc69e61b62ca2b62}}, -+ uint64_t{0x766a0e2ade6d09a6}}, - {"s/" - "Jf1+" - "FbsbCpXWPTUSeWyMH6e4CvTFvPE5Fs6Z8hvFITGyr0dtukHzkI84oviVLxhM1xMxrMAy1db" - "w==", -- uint64_t{0x2599f4f905115869}, uint64_t{0xb4a4f3f85f8298fe}}, -+ uint64_t{0x2599f4f905115869}}, - {"FvyQ00+j7nmYZVQ8hI1Edxd0AWplhTfWuFGiu34AK5X8u2hLX1bE97sZM0CmeLe+" - "7LgoUT1fJ/axybE=", -- uint64_t{0xd8256e5444d21e53}, uint64_t{0x167a1b39e1e95f41}}, -+ uint64_t{0xd8256e5444d21e53}}, - {"L8ncxMaYLBH3g9buPu8hfpWZNlOF7nvWLNv9IozH07uQsIBWSKxoPy8+" - "LW4tTuzC6CIWbRGRRD1sQV/4", -- uint64_t{0xf664a91333fb8dfd}, uint64_t{0xf8a2a5649855ee41}}, -+ uint64_t{0xf664a91333fb8dfd}}, - {"CDK0meI07yrgV2kQlZZ+" - "wuVqhc2NmzqeLH7bmcA6kchsRWFPeVF5Wqjjaj556ABeUoUr3yBmfU3kWOakkg==", -- uint64_t{0x9625b859be372cd1}, uint64_t{0x27992565b595c498}}, -+ uint64_t{0x9625b859be372cd1}}, - {"d23/vc5ONh/" - "HkMiq+gYk4gaCNYyuFKwUkvn46t+dfVcKfBTYykr4kdvAPNXGYLjM4u1YkAEFpJP+" - "nX7eOvs=", -- uint64_t{0x7b99940782e29898}, uint64_t{0x3e08cca5b71f9346}}, -+ uint64_t{0x7b99940782e29898}}, - {"NUR3SRxBkxTSbtQORJpu/GdR6b/h6sSGfsMj/KFd99ahbh+9r7LSgSGmkGVB/" - "mGoT0pnMTQst7Lv2q6QN6Vm", -- uint64_t{0x4fe12fa5383b51a8}, uint64_t{0xad406b10c770a6d2}}, -+ uint64_t{0x4fe12fa5383b51a8}}, - {"2BOFlcI3Z0RYDtS9T9Ie9yJoXlOdigpPeeT+CRujb/" - "O39Ih5LPC9hP6RQk1kYESGyaLZZi3jtabHs7DiVx/VDg==", -- uint64_t{0xe2ccb09ac0f5b4b6}, uint64_t{0xd1713ce6e552bcf2}}, -+ uint64_t{0xe2ccb09ac0f5b4b6}}, - {"FF2HQE1FxEvWBpg6Z9zAMH+Zlqx8S1JD/" - "wIlViL6ZDZY63alMDrxB0GJQahmAtjlm26RGLnjW7jmgQ4Ie3I+014=", -- uint64_t{0x7d0a37adbd7b753b}, uint64_t{0x753b287194c73ad3}}, -+ uint64_t{0x7d0a37adbd7b753b}}, - {"tHmO7mqVL/PX11nZrz50Hc+M17Poj5lpnqHkEN+4bpMx/" - "YGbkrGOaYjoQjgmt1X2QyypK7xClFrjeWrCMdlVYtbW", -- uint64_t{0xd3ae96ef9f7185f2}, uint64_t{0x5ae41a95f600af1c}}, -+ uint64_t{0xd3ae96ef9f7185f2}}, - {"/WiHi9IQcxRImsudkA/KOTqGe8/" - "gXkhKIHkjddv5S9hi02M049dIK3EUyAEjkjpdGLUs+BN0QzPtZqjIYPOgwsYE9g==", -- uint64_t{0x4fb88ea63f79a0d8}, uint64_t{0x4a61163b86a8bb4c}}, -+ uint64_t{0x4fb88ea63f79a0d8}}, - {"qds+1ExSnU11L4fTSDz/QE90g4Jh6ioqSh3KDOTOAo2pQGL1k/" - "9CCC7J23YF27dUTzrWsCQA2m4epXoCc3yPHb3xElA=", -- uint64_t{0xed564e259bb5ebe9}, uint64_t{0x42eeaa79e760c7e4}}, -+ uint64_t{0xed564e259bb5ebe9}}, - {"8FVYHx40lSQPTHheh08Oq0/" - "pGm2OlG8BEf8ezvAxHuGGdgCkqpXIueJBF2mQJhTfDy5NncO8ntS7vaKs7sCNdDaNGOEi", -- uint64_t{0x3e3256b60c428000}, uint64_t{0x698df622ef465b0a}}, -+ uint64_t{0x3e3256b60c428000}}, - {"4ZoEIrJtstiCkeew3oRzmyJHVt/pAs2pj0HgHFrBPztbQ10NsQ/" - "lM6DM439QVxpznnBSiHMgMQJhER+70l72LqFTO1JiIQ==", -- uint64_t{0xfb05bad59ec8705}, uint64_t{0x157583111e1a6026}}, -+ uint64_t{0xfb05bad59ec8705}}, - {"hQPtaYI+wJyxXgwD5n8jGIKFKaFA/" - "P83KqCKZfPthnjwdOFysqEOYwAaZuaaiv4cDyi9TyS8hk5cEbNP/jrI7q6pYGBLbsM=", -- uint64_t{0xafdc251dbf97b5f8}, uint64_t{0xaa1388f078e793e0}}, -+ uint64_t{0xafdc251dbf97b5f8}}, - {"S4gpMSKzMD7CWPsSfLeYyhSpfWOntyuVZdX1xSBjiGvsspwOZcxNKCRIOqAA0moUfOh3I5+" - "juQV4rsqYElMD/gWfDGpsWZKQ", -- uint64_t{0x10ec9c92ddb5dcbc}, uint64_t{0xf10d68d0f3309360}}, -+ uint64_t{0x10ec9c92ddb5dcbc}}, - {"oswxop+" - "bthuDLT4j0PcoSKby4LhF47ZKg8K17xxHf74UsGCzTBbOz0MM8hQEGlyqDT1iUiAYnaPaUp" - "L2mRK0rcIUYA4qLt5uOw==", -- uint64_t{0x9a767d5822c7dac4}, uint64_t{0x2af056184457a3de}}, -+ uint64_t{0x9a767d5822c7dac4}}, - {"0II/" - "697p+" - "BtLSjxj5989OXI004TogEb94VUnDzOVSgMXie72cuYRvTFNIBgtXlKfkiUjeqVpd4a+" - "n5bxNOD1TGrjQtzKU5r7obo=", -- uint64_t{0xee46254080d6e2db}, uint64_t{0x6d0058e1590b2489}}, -+ uint64_t{0xee46254080d6e2db}}, - {"E84YZW2qipAlMPmctrg7TKlwLZ68l4L+c0xRDUfyyFrA4MAti0q9sHq3TDFviH0Y+" - "Kq3tEE5srWFA8LM9oomtmvm5PYxoaarWPLc", -- uint64_t{0xbbb669588d8bf398}, uint64_t{0x638f287f68817f12}}, -+ uint64_t{0xbbb669588d8bf398}}, - {"x3pa4HIElyZG0Nj7Vdy9IdJIR4izLmypXw5PCmZB5y68QQ4uRaVVi3UthsoJROvbjDJkP2D" - "Q6L/eN8pFeLFzNPKBYzcmuMOb5Ull7w==", -- uint64_t{0xdc2afaa529beef44}, uint64_t{0xc46b71fecefd5467}}, -+ uint64_t{0xdc2afaa529beef44}}, - {"jVDKGYIuWOP/" - "QKLdd2wi8B2VJA8Wh0c8PwrXJVM8FOGM3voPDVPyDJOU6QsBDPseoR8uuKd19OZ/" - "zAvSCB+zlf6upAsBlheUKgCfKww=", -- uint64_t{0xf1f67391d45013a8}, uint64_t{0x2c8e94679d964e0a}}, -+ uint64_t{0xf1f67391d45013a8}}, - {"mkquunhmYe1aR2wmUz4vcvLEcKBoe6H+kjUok9VUn2+eTSkWs4oDDtJvNCWtY5efJwg/" - "j4PgjRYWtqnrCkhaqJaEvkkOwVfgMIwF3e+d", -- uint64_t{0x16fce2b8c65a3429}, uint64_t{0x8612b797ce22503a}}, -+ uint64_t{0x16fce2b8c65a3429}}, - {"fRelvKYonTQ+s+rnnvQw+JzGfFoPixtna0vzcSjiDqX5s2Kg2//" - "UGrK+AVCyMUhO98WoB1DDbrsOYSw2QzrcPe0+3ck9sePvb+Q/IRaHbw==", -- uint64_t{0xf4b096699f49fe67}, uint64_t{0x59f929babfba7170}}, -+ uint64_t{0xf4b096699f49fe67}}, - {"DUwXFJzagljo44QeJ7/" - "6ZKw4QXV18lhkYT2jglMr8WB3CHUU4vdsytvw6AKv42ZcG6fRkZkq9fpnmXy6xG0aO3WPT1" - "eHuyFirAlkW+zKtwg=", -- uint64_t{0xca584c4bc8198682}, uint64_t{0x9527556923fb49a0}}, -+ uint64_t{0xca584c4bc8198682}}, - {"cYmZCrOOBBongNTr7e4nYn52uQUy2mfe48s50JXx2AZ6cRAt/" - "xRHJ5QbEoEJOeOHsJyM4nbzwFm++SlT6gFZZHJpkXJ92JkR86uS/eV1hJUR", -- uint64_t{0xed269fc3818b6aad}, uint64_t{0x1039ab644f5e150b}}, -+ uint64_t{0xed269fc3818b6aad}}, - {"EXeHBDfhwzAKFhsMcH9+2RHwV+mJaN01+9oacF6vgm8mCXRd6jeN9U2oAb0of5c5cO4i+" - "Vb/LlHZSMI490SnHU0bejhSCC2gsC5d2K30ER3iNA==", -- uint64_t{0x33f253cbb8fe66a8}, uint64_t{0x7816c83f3aa05e6d}}, -+ uint64_t{0x33f253cbb8fe66a8}}, - {"FzkzRYoNjkxFhZDso94IHRZaJUP61nFYrh5MwDwv9FNoJ5jyNCY/" - "eazPZk+tbmzDyJIGw2h3GxaWZ9bSlsol/vK98SbkMKCQ/wbfrXRLcDzdd/8=", -- uint64_t{0xd0b76b2c1523d99c}, uint64_t{0xf51d2f564518c619}}, -+ uint64_t{0xd0b76b2c1523d99c}}, - {"Re4aXISCMlYY/XsX7zkIFR04ta03u4zkL9dVbLXMa/q6hlY/CImVIIYRN3VKP4pnd0AUr/" - "ugkyt36JcstAInb4h9rpAGQ7GMVOgBniiMBZ/MGU7H", -- uint64_t{0xfd28f0811a2a237f}, uint64_t{0x67d494cff03ac004}}, -+ uint64_t{0xfd28f0811a2a237f}}, - {"ueLyMcqJXX+MhO4UApylCN9WlTQ+" - "ltJmItgG7vFUtqs2qNwBMjmAvr5u0sAKd8jpzV0dDPTwchbIeAW5zbtkA2NABJV6hFM48ib" - "4/J3A5mseA3cS8w==", -- uint64_t{0x6261fb136482e84}, uint64_t{0x2802d636ced1cfbb}}, -+ uint64_t{0x6261fb136482e84}}, - {"6Si7Yi11L+jZMkwaN+GUuzXMrlvEqviEkGOilNq0h8TdQyYKuFXzkYc/" - "q74gP3pVCyiwz9KpVGMM9vfnq36riMHRknkmhQutxLZs5fbmOgEO69HglCU=", -- uint64_t{0x458efc750bca7c3a}, uint64_t{0xf64e20bad771cb12}}, -+ uint64_t{0x458efc750bca7c3a}}, - {"Q6AbOofGuTJOegPh9Clm/" - "9crtUMQqylKrTc1fhfJo1tqvpXxhU4k08kntL1RG7woRnFrVh2UoMrL1kjin+s9CanT+" - "y4hHwLqRranl9FjvxfVKm3yvg68", -- uint64_t{0xa7e69ff84e5e7c27}, uint64_t{0xb9a6cf84a83e15e}}, -+ uint64_t{0xa7e69ff84e5e7c27}}, - {"ieQEbIPvqY2YfIjHnqfJiO1/MIVRk0RoaG/WWi3kFrfIGiNLCczYoklgaecHMm/" - "1sZ96AjO+a5stQfZbJQwS7Sc1ODABEdJKcTsxeW2hbh9A6CFzpowP1A==", -- uint64_t{0x3c59bfd0c29efe9e}, uint64_t{0x8da6630319609301}}, -+ uint64_t{0x3c59bfd0c29efe9e}}, - {"zQUv8hFB3zh2GGl3KTvCmnfzE+" - "SUgQPVaSVIELFX5H9cE3FuVFGmymkPQZJLAyzC90Cmi8GqYCvPqTuAAB//" - "XTJxy4bCcVArgZG9zJXpjowpNBfr3ngWrSE=", -- uint64_t{0x10befacc6afd298d}, uint64_t{0x40946a86e2a996f3}}, -+ uint64_t{0x10befacc6afd298d}}, - {"US4hcC1+op5JKGC7eIs8CUgInjKWKlvKQkapulxW262E/" - "B2ye79QxOexf188u2mFwwe3WTISJHRZzS61IwljqAWAWoBAqkUnW8SHmIDwHUP31J0p5sGd" - "P47L", -- uint64_t{0x41d5320b0a38efa7}, uint64_t{0xcab7f5997953fa76}}, -+ uint64_t{0x41d5320b0a38efa7}}, - {"9bHUWFna2LNaGF6fQLlkx1Hkt24nrkLE2CmFdWgTQV3FFbUe747SSqYw6ebpTa07MWSpWRP" - "sHesVo2B9tqHbe7eQmqYebPDFnNqrhSdZwFm9arLQVs+7a3Ic6A==", -- uint64_t{0x58db1c7450fe17f3}, uint64_t{0x39129ca0e04fc465}}, -+ uint64_t{0x58db1c7450fe17f3}}, - {"Kb3DpHRUPhtyqgs3RuXjzA08jGb59hjKTOeFt1qhoINfYyfTt2buKhD6YVffRCPsgK9SeqZ" - "qRPJSyaqsa0ovyq1WnWW8jI/NhvAkZTVHUrX2pC+cD3OPYT05Dag=", -- uint64_t{0x6098c055a335b7a6}, uint64_t{0x5238221fd685e1b8}}, -+ uint64_t{0x6098c055a335b7a6}}, - {"gzxyMJIPlU+bJBwhFUCHSofZ/" - "319LxqMoqnt3+L6h2U2+ZXJCSsYpE80xmR0Ta77Jq54o92SMH87HV8dGOaCTuAYF+" - "lDL42SY1P316Cl0sZTS2ow3ZqwGbcPNs/1", -- uint64_t{0x1bbacec67845a801}, uint64_t{0x175130c407dbcaab}}, -+ uint64_t{0x1bbacec67845a801}}, - {"uR7V0TW+FGVMpsifnaBAQ3IGlr1wx5sKd7TChuqRe6OvUXTlD4hKWy8S+" - "8yyOw8lQabism19vOQxfmocEOW/" - "vzY0pEa87qHrAZy4s9fH2Bltu8vaOIe+agYohhYORQ==", -- uint64_t{0xc419cfc7442190}, uint64_t{0x2f20e7536c0b0df}}, -+ uint64_t{0xc419cfc7442190}}, - {"1UR5eoo2aCwhacjZHaCh9bkOsITp6QunUxHQ2SfeHv0imHetzt/" - "Z70mhyWZBalv6eAx+YfWKCUib2SHDtz/" - "A2dc3hqUWX5VfAV7FQsghPUAtu6IiRatq4YSLpDvKZBQ=", -- uint64_t{0xc95e510d94ba270c}, uint64_t{0x2742cb488a04ad56}}, -+ uint64_t{0xc95e510d94ba270c}}, - {"opubR7H63BH7OtY+Avd7QyQ25UZ8kLBdFDsBTwZlY6gA/" - "u+x+" - "czC9AaZMgmQrUy15DH7YMGsvdXnviTtI4eVI4aF1H9Rl3NXMKZgwFOsdTfdcZeeHVRzBBKX" - "8jUfh1il", -- uint64_t{0xff1ae05c98089c3f}, uint64_t{0xd6afb593879ff93b}}, -+ uint64_t{0xff1ae05c98089c3f}}, - {"DC0kXcSXtfQ9FbSRwirIn5tgPri0sbzHSa78aDZVDUKCMaBGyFU6BmrulywYX8yzvwprdLs" - "oOwTWN2wMjHlPDqrvVHNEjnmufRDblW+nSS+xtKNs3N5xsxXdv6JXDrAB/Q==", -- uint64_t{0x90c02b8dceced493}, uint64_t{0xf50ad64caac0ca7f}}, -+ uint64_t{0x90c02b8dceced493}}, - {"BXRBk+3wEP3Lpm1y75wjoz+PgB0AMzLe8tQ1AYU2/" - "oqrQB2YMC6W+9QDbcOfkGbeH+b7IBkt/" - "gwCMw2HaQsRFEsurXtcQ3YwRuPz5XNaw5NAvrNa67Fm7eRzdE1+hWLKtA8=", -- uint64_t{0x9f8a76697ab1aa36}, uint64_t{0x2ade95c4261364ae}}, -+ uint64_t{0x9f8a76697ab1aa36}}, - {"RRBSvEGYnzR9E45Aps/+WSnpCo/X7gJLO4DRnUqFrJCV/kzWlusLE/" - "6ZU6RoUf2ROwcgEvUiXTGjLs7ts3t9SXnJHxC1KiOzxHdYLMhVvgNd3hVSAXODpKFSkVXND" - "55G2L1W", -- uint64_t{0x6ba1bf3d811a531d}, uint64_t{0x5c4f3299faacd07a}}, -+ uint64_t{0x6ba1bf3d811a531d}}, - {"jeh6Qazxmdi57pa9S3XSnnZFIRrnc6s8QLrah5OX3SB/V2ErSPoEAumavzQPkdKF1/" - "SfvmdL+qgF1C+Yawy562QaFqwVGq7+tW0yxP8FStb56ZRgNI4IOmI30s1Ei7iops9Uuw==", -- uint64_t{0x6a418974109c67b4}, uint64_t{0xfffe3bff0ae5e9bc}}, -+ uint64_t{0x6a418974109c67b4}}, - {"6QO5nnDrY2/" - "wrUXpltlKy2dSBcmK15fOY092CR7KxAjNfaY+" - "aAmtWbbzQk3MjBg03x39afSUN1fkrWACdyQKRaGxgwq6MGNxI6W+8DLWJBHzIXrntrE/" - "ml6fnNXEpxplWJ1vEs4=", -- uint64_t{0x8472f1c2b3d230a3}, uint64_t{0x1db785c0005166e4}}, -+ uint64_t{0x8472f1c2b3d230a3}}, - {"0oPxeEHhqhcFuwonNfLd5jF3RNATGZS6NPoS0WklnzyokbTqcl4BeBkMn07+fDQv83j/" - "BpGUwcWO05f3+DYzocfnizpFjLJemFGsls3gxcBYxcbqWYev51tG3lN9EvRE+X9+Pwww", -- uint64_t{0x5e06068f884e73a7}, uint64_t{0xea000d962ad18418}}, -+ uint64_t{0x5e06068f884e73a7}}, - {"naSBSjtOKgAOg8XVbR5cHAW3Y+QL4Pb/JO9/" - "oy6L08wvVRZqo0BrssMwhzBP401Um7A4ppAupbQeJFdMrysY34AuSSNvtNUy5VxjNECwiNt" - "gwYHw7yakDUv8WvonctmnoSPKENegQg==", -- uint64_t{0x55290b1a8f170f59}, uint64_t{0xe42aef38359362d9}}, -+ uint64_t{0x55290b1a8f170f59}}, - {"vPyl8DxVeRe1OpilKb9KNwpGkQRtA94UpAHetNh+" - "95V7nIW38v7PpzhnTWIml5kw3So1Si0TXtIUPIbsu32BNhoH7QwFvLM+" - "JACgSpc5e3RjsL6Qwxxi11npwxRmRUqATDeMUfRAjxg=", -- uint64_t{0x5501cfd83dfe706a}, uint64_t{0xc8e95657348a3891}}, -+ uint64_t{0x5501cfd83dfe706a}}, - {"QC9i2GjdTMuNC1xQJ74ngKfrlA4w3o58FhvNCltdIpuMhHP1YsDA78scQPLbZ3OCUgeQguY" - "f/vw6zAaVKSgwtaykqg5ka/4vhz4hYqWU5ficdXqClHl+zkWEY26slCNYOM5nnDlly8Cj", -- uint64_t{0xe43ed13d13a66990}, uint64_t{0xc162eca864f238c6}}, -+ uint64_t{0xe43ed13d13a66990}}, - {"7CNIgQhAHX27nxI0HeB5oUTnTdgKpRDYDKwRcXfSFGP1XeT9nQF6WKCMjL1tBV6x7KuJ91G" - "Zz11F4c+8s+MfqEAEpd4FHzamrMNjGcjCyrVtU6y+7HscMVzr7Q/" - "ODLcPEFztFnwjvCjmHw==", -- uint64_t{0xdf43bc375cf5283f}, uint64_t{0xbe1fb373e20579ad}}, -+ uint64_t{0xdf43bc375cf5283f}}, - {"Qa/hC2RPXhANSospe+gUaPfjdK/yhQvfm4cCV6/pdvCYWPv8p1kMtKOX3h5/" - "8oZ31fsmx4Axphu5qXJokuhZKkBUJueuMpxRyXpwSWz2wELx5glxF7CM0Fn+" - "OevnkhUn5jsPlG2r5jYlVn8=", -- uint64_t{0x8112b806d288d7b5}, uint64_t{0x628a1d4f40aa6ffd}}, -+ uint64_t{0x8112b806d288d7b5}}, - {"kUw/0z4l3a89jTwN5jpG0SHY5km/" - "IVhTjgM5xCiPRLncg40aqWrJ5vcF891AOq5hEpSq0bUCJUMFXgct7kvnys905HjerV7Vs1G" - "y84tgVJ70/2+pAZTsB/PzNOE/G6sOj4+GbTzkQu819OLB", -- uint64_t{0xd52a18abb001cb46}, uint64_t{0xa87bdb7456340f90}}, -+ uint64_t{0xd52a18abb001cb46}}, - {"VDdfSDbO8Tdj3T5W0XM3EI7iHh5xpIutiM6dvcJ/fhe23V/srFEkDy5iZf/" - "VnA9kfi2C79ENnFnbOReeuZW1b3MUXB9lgC6U4pOTuC+" - "jHK3Qnpyiqzj7h3ISJSuo2pob7vY6VHZo6Fn7exEqHg==", -- uint64_t{0xe12b76a2433a1236}, uint64_t{0x5960ef3ba982c801}}, -+ uint64_t{0xe12b76a2433a1236}}, - {"Ldfvy3ORdquM/R2fIkhH/ONi69mcP1AEJ6n/" - "oropwecAsLJzQSgezSY8bEiEs0VnFTBBsW+RtZY6tDj03fnb3amNUOq1b7jbqyQkL9hpl+" - "2Z2J8IaVSeownWl+bQcsR5/xRktIMckC5AtF4YHfU=", -- uint64_t{0x175bf7319cf1fa00}, uint64_t{0x5026586df9a431ec}}, -+ uint64_t{0x175bf7319cf1fa00}}, - {"BrbNpb42+" - "VzZAjJw6QLirXzhweCVRfwlczzZ0VX2xluskwBqyfnGovz5EuX79JJ31VNXa5hTkAyQat3l" - "YKRADTdAdwE5PqM1N7YaMqqsqoAAAeuYVXuk5eWCykYmClNdSspegwgCuT+403JigBzi", -- uint64_t{0xd63d57b3f67525ae}, uint64_t{0xfe4b8a20fdf0840b}}, -+ uint64_t{0xd63d57b3f67525ae}}, - {"gB3NGHJJvVcuPyF0ZSvHwnWSIfmaI7La24VMPQVoIIWF7Z74NltPZZpx2f+cocESM+" - "ILzQW9p+BC8x5IWz7N4Str2WLGKMdgmaBfNkEhSHQDU0IJEOnpUt0HmjhFaBlx0/" - "LTmhua+rQ6Wup8ezLwfg==", -- uint64_t{0x933faea858832b73}, uint64_t{0xdcb761867da7072f}}, -+ uint64_t{0x933faea858832b73}}, - {"hTKHlRxx6Pl4gjG+6ksvvj0CWFicUg3WrPdSJypDpq91LUWRni2KF6+" - "81ZoHBFhEBrCdogKqeK+hy9bLDnx7g6rAFUjtn1+cWzQ2YjiOpz4+" - "ROBB7lnwjyTGWzJD1rXtlso1g2qVH8XJVigC5M9AIxM=", -- uint64_t{0x53d061e5f8e7c04f}, uint64_t{0xc10d4653667275b7}}, -+ uint64_t{0x53d061e5f8e7c04f}}, - {"IWQBelSQnhrr0F3BhUpXUIDauhX6f95Qp+A0diFXiUK7irwPG1oqBiqHyK/SH/" - "9S+" - "rln9DlFROAmeFdH0OCJi2tFm4afxYzJTFR4HnR4cG4x12JqHaZLQx6iiu6CE3rtWBVz99oA" - "wCZUOEXIsLU24o2Y", -- uint64_t{0xdb4124556dd515e0}, uint64_t{0x727720deec13110b}}, -+ uint64_t{0xdb4124556dd515e0}}, - {"TKo+l+" - "1dOXdLvIrFqeLaHdm0HZnbcdEgOoLVcGRiCbAMR0j5pIFw8D36tefckAS1RCFOH5IgP8yiF" - "T0Gd0a2hI3+" - "fTKA7iK96NekxWeoeqzJyctc6QsoiyBlkZerRxs5RplrxoeNg29kKDTM0K94mnhD9g==", -- uint64_t{0x4fb31a0dd681ee71}, uint64_t{0x710b009662858dc9}}, -+ uint64_t{0x4fb31a0dd681ee71}}, - {"YU4e7G6EfQYvxCFoCrrT0EFgVLHFfOWRTJQJ5gxM3G2b+" - "1kJf9YPrpsxF6Xr6nYtS8reEEbDoZJYqnlk9lXSkVArm88Cqn6d25VCx3+" - "49MqC0trIlXtb7SXUUhwpJK16T0hJUfPH7s5cMZXc6YmmbFuBNPE=", -- uint64_t{0x27cc72eefa138e4c}, uint64_t{0xfbf8f7a3ecac1eb7}}, -+ uint64_t{0x27cc72eefa138e4c}}, - {"/I/" - "eImMwPo1U6wekNFD1Jxjk9XQVi1D+" - "FPdqcHifYXQuP5aScNQfxMAmaPR2XhuOQhADV5tTVbBKwCDCX4E3jcDNHzCiPvViZF1W27t" - "xaf2BbFQdwKrNCmrtzcluBFYu0XZfc7RU1RmxK/RtnF1qHsq/O4pp", -- uint64_t{0x44bc2dfba4bd3ced}, uint64_t{0xb6fc4fcd0722e3df}}, -+ uint64_t{0x44bc2dfba4bd3ced}}, - {"CJTT9WGcY2XykTdo8KodRIA29qsqY0iHzWZRjKHb9alwyJ7RZAE3V5Juv4MY3MeYEr1EPCC" - "MxO7yFXqT8XA8YTjaMp3bafRt17Pw8JC4iKJ1zN+WWKOESrj+" - "3aluGQqn8z1EzqY4PH7rLG575PYeWsP98BugdA==", -- uint64_t{0x242da1e3a439bed8}, uint64_t{0x7cb86dcc55104aac}}, -+ uint64_t{0x242da1e3a439bed8}}, - {"ZlhyQwLhXQyIUEnMH/" - "AEW27vh9xrbNKJxpWGtrEmKhd+nFqAfbeNBQjW0SfG1YI0xQkQMHXjuTt4P/" - "EpZRtA47ibZDVS8TtaxwyBjuIDwqcN09eCtpC+Ls+" - "vWDTLmBeDM3u4hmzz4DQAYsLiZYSJcldg9Q3wszw=", -- uint64_t{0xdc559c746e35c139}, uint64_t{0x19e71e9b45c3a51e}}, -+ uint64_t{0xdc559c746e35c139}}, - {"v2KU8y0sCrBghmnm8lzGJlwo6D6ObccAxCf10heoDtYLosk4ztTpLlpSFEyu23MLA1tJkcg" - "Rko04h19QMG0mOw/" - "wc93EXAweriBqXfvdaP85sZABwiKO+6rtS9pacRVpYYhHJeVTQ5NzrvBvi1huxAr+" - "xswhVMfL", -- uint64_t{0xd0b0350275b9989}, uint64_t{0x51de38573c2bea48}}, -+ uint64_t{0xd0b0350275b9989}}, - {"QhKlnIS6BuVCTQsnoE67E/" - "yrgogE8EwO7xLaEGei26m0gEU4OksefJgppDh3X0x0Cs78Dr9IHK5b977CmZlrTRmwhlP8p" - "M+UzXPNRNIZuN3ntOum/QhUWP8SGpirheXENWsXMQ/" - "nxtxakyEtrNkKk471Oov9juP8oQ==", -- uint64_t{0xb04489e41d17730c}, uint64_t{0xa73ab6996d6df158}}, -+ uint64_t{0xb04489e41d17730c}}, - {"/ZRMgnoRt+Uo6fUPr9FqQvKX7syhgVqWu+" - "WUSsiQ68UlN0efSP6Eced5gJZL6tg9gcYJIkhjuQNITU0Q3TjVAnAcobgbJikCn6qZ6pRxK" - "BY4MTiAlfGD3T7R7hwJwx554MAy++Zb/YUFlnCaCJiwQMnowF7aQzwYFCo=", -- uint64_t{0x2217285eb4572156}, uint64_t{0x55ef2b8c930817b2}}, -+ uint64_t{0x2217285eb4572156}}, - {"NB7tU5fNE8nI+SXGfipc7sRkhnSkUF1krjeo6k+8FITaAtdyz+" - "o7mONgXmGLulBPH9bEwyYhKNVY0L+njNQrZ9YC2aXsFD3PdZsxAFaBT3VXEzh+" - "NGBTjDASNL3mXyS8Yv1iThGfHoY7T4aR0NYGJ+k+pR6f+KrPC96M", -- uint64_t{0x12c2e8e68aede73b}, uint64_t{0xb2850bf5fae87157}}, -+ uint64_t{0x12c2e8e68aede73b}}, - {"8T6wrqCtEO6/rwxF6lvMeyuigVOLwPipX/FULvwyu+1wa5sQGav/" - "2FsLHUVn6cGSi0LlFwLewGHPFJDLR0u4t7ZUyM//" - "x6da0sWgOa5hzDqjsVGmjxEHXiaXKW3i4iSZNuxoNbMQkIbVML+" - "DkYu9ND0O2swg4itGeVSzXA==", -- uint64_t{0x4d612125bdc4fd00}, uint64_t{0xecf3de1acd04651f}}, -+ uint64_t{0x4d612125bdc4fd00}}, - {"Ntf1bMRdondtMv1CYr3G80iDJ4WSAlKy5H34XdGruQiCrnRGDBa+" - "eUi7vKp4gp3BBcVGl8eYSasVQQjn7MLvb3BjtXx6c/" - "bCL7JtpzQKaDnPr9GWRxpBXVxKREgMM7d8lm35EODv0w+" - "hQLfVSh8OGs7fsBb68nNWPLeeSOo=", -- uint64_t{0x81826b553954464e}, uint64_t{0xcc0a40552559ff32}}, -+ uint64_t{0x81826b553954464e}}, - {"VsSAw72Ro6xks02kaiLuiTEIWBC5bgqr4WDnmP8vglXzAhixk7td926rm9jNimL+" - "kroPSygZ9gl63aF5DCPOACXmsbmhDrAQuUzoh9ZKhWgElLQsrqo1KIjWoZT5b5QfVUXY9lS" - "IBg3U75SqORoTPq7HalxxoIT5diWOcJQi", -- uint64_t{0xc2e5d345dc0ddd2d}, uint64_t{0xc385c374f20315b1}}, -+ uint64_t{0xc2e5d345dc0ddd2d}}, - {"j+loZ+C87+" - "bJxNVebg94gU0mSLeDulcHs84tQT7BZM2rzDSLiCNxUedHr1ZWJ9ejTiBa0dqy2I2ABc++" - "xzOLcv+//YfibtjKtYggC6/3rv0XCc7xu6d/" - "O6xO+XOBhOWAQ+IHJVHf7wZnDxIXB8AUHsnjEISKj7823biqXjyP3g==", -- uint64_t{0x3da6830a9e32631e}, uint64_t{0xb90208a4c7234183}}, -+ uint64_t{0x3da6830a9e32631e}}, - {"f3LlpcPElMkspNtDq5xXyWU62erEaKn7RWKlo540gR6mZsNpK1czV/" - "sOmqaq8XAQLEn68LKj6/" - "cFkJukxRzCa4OF1a7cCAXYFp9+wZDu0bw4y63qbpjhdCl8GO6Z2lkcXy7KOzbPE01ukg7+" - "gN+7uKpoohgAhIwpAKQXmX5xtd0=", -- uint64_t{0xc9ae5c8759b4877a}, uint64_t{0x58aa1ca7a4c075d9}}, -+ uint64_t{0xc9ae5c8759b4877a}}, -+ }; -+ -+ constexpr uint64_t kGolden[kNumGoldenOutputs] = { -+ 0xe5a40d39ab796423, 0x1766974bf7527d81, 0x5c3bbbe230db17a8, -+ 0xa6630143a7e6aa6f, 0x8787cb2d04b0c984, 0x33603654ff574ac2, -+ 0xa6564b468248c683, 0xef192f401b116e1c, 0xbe8dc0c54617639d, -+ 0x93d7f665b5521c8e, 0x646d70bb42445f28, 0x96a7b1e3cc9bd426, -+ 0x76020289ab0790c4, 0x39f842e4133b9b44, 0x2b8d7047be4bcaab, -+ 0x99628abef6716a97, 0x4432e02ba42b2740, 0x74d810efcad7918a, -+ 0x88c84e986002507f, 0x4f99acf193cf39b9, 0xd90e7a3655891e37, -+ 0x3bb378b1d4df8fcf, 0xf78e94045c052d47, 0x26da0b2130da6b40, -+ 0x30b4d426af8c6986, 0x5413b4aaf3baaeae, 0x756ab265370a1597, -+ 0xdaf5f4b7d09814fb, 0x8f874ae37742b75e, 0x8fecd03956121ce8, -+ 0x229c292ea7a08285, 0x0bb4bf0692d14bae, 0x207b24ca3bdac1db, -+ 0x64f6cd6745d3825b, 0xa2b2e1656b58df1e, 0x0d01d30d9ee7a148, -+ 0x1cb4cd00ab804e3b, 0x4697f2637fd90999, 0x8383a756b5688c07, -+ 0x695c29cb3696a975, 0xda2e5a5a5e971521, 0x7935d4befa056b2b, -+ 0x38dd541ca95420fe, 0xcc06c7a4963f967f, 0xbf0f6f66e232fb20, -+ 0xf7efb32d373fe71a, 0xe2e64634b1c12660, 0x285b8fd1638e306d, -+ 0x658e8a4e3b714d6c, 0xf391fb968e0eb398, 0x744a9ea0cc144bf2, -+ 0x12636f2be11012f1, 0x29c57de825948f80, 0x58c6f99ab0d1c021, -+ 0x13e7b5a7b82fe3bb, 0x10fbc87901e02b63, 0xa24c9184901b748b, -+ 0xcac4fd4c5080e581, 0xc38bdb7483ba68e1, 0xdb2a8069b2ceaffa, -+ 0xdf9fe91d0d1c7887, 0xe83f49e96e2e6a08, 0x0c69e61b62ca2b62, -+ 0xb4a4f3f85f8298fe, 0x167a1b39e1e95f41, 0xf8a2a5649855ee41, -+ 0x27992565b595c498, 0x3e08cca5b71f9346, 0xad406b10c770a6d2, -+ 0xd1713ce6e552bcf2, 0x753b287194c73ad3, 0x5ae41a95f600af1c, -+ 0x4a61163b86a8bb4c, 0x42eeaa79e760c7e4, 0x698df622ef465b0a, -+ 0x157583111e1a6026, 0xaa1388f078e793e0, 0xf10d68d0f3309360, -+ 0x2af056184457a3de, 0x6d0058e1590b2489, 0x638f287f68817f12, -+ 0xc46b71fecefd5467, 0x2c8e94679d964e0a, 0x8612b797ce22503a, -+ 0x59f929babfba7170, 0x9527556923fb49a0, 0x1039ab644f5e150b, -+ 0x7816c83f3aa05e6d, 0xf51d2f564518c619, 0x67d494cff03ac004, -+ 0x2802d636ced1cfbb, 0xf64e20bad771cb12, 0x0b9a6cf84a83e15e, -+ 0x8da6630319609301, 0x40946a86e2a996f3, 0xcab7f5997953fa76, -+ 0x39129ca0e04fc465, 0x5238221fd685e1b8, 0x175130c407dbcaab, -+ 0x02f20e7536c0b0df, 0x2742cb488a04ad56, 0xd6afb593879ff93b, -+ 0xf50ad64caac0ca7f, 0x2ade95c4261364ae, 0x5c4f3299faacd07a, -+ 0xfffe3bff0ae5e9bc, 0x1db785c0005166e4, 0xea000d962ad18418, -+ 0xe42aef38359362d9, 0xc8e95657348a3891, 0xc162eca864f238c6, -+ 0xbe1fb373e20579ad, 0x628a1d4f40aa6ffd, 0xa87bdb7456340f90, -+ 0x5960ef3ba982c801, 0x5026586df9a431ec, 0xfe4b8a20fdf0840b, -+ 0xdcb761867da7072f, 0xc10d4653667275b7, 0x727720deec13110b, -+ 0x710b009662858dc9, 0xfbf8f7a3ecac1eb7, 0xb6fc4fcd0722e3df, -+ 0x7cb86dcc55104aac, 0x19e71e9b45c3a51e, 0x51de38573c2bea48, -+ 0xa73ab6996d6df158, 0x55ef2b8c930817b2, 0xb2850bf5fae87157, -+ 0xecf3de1acd04651f, 0xcc0a40552559ff32, 0xc385c374f20315b1, -+ 0xb90208a4c7234183, 0x58aa1ca7a4c075d9, - }; - -- for (const auto& expected_result : expected_results) { -+#if UPDATE_GOLDEN -+ (void)kGolden; // Silence warning. -+ for (size_t i = 0; i < kNumGoldenOutputs; ++i) { -+ std::string str; -+ ASSERT_TRUE(absl::Base64Unescape(cases[i].base64_data, &str)); -+ uint64_t h = absl::hash_internal::Wyhash(str.data(), str.size(), -+ cases[i].seed, kSalt); -+ printf("0x%016" PRIx64 ", ", h); -+ if (i % 3 == 2) { -+ printf("\n"); -+ } -+ } -+ printf("\n\n\n"); -+ EXPECT_FALSE(true); -+#else -+ for (size_t i = 0; i < kNumGoldenOutputs; ++i) { -+ SCOPED_TRACE(::testing::Message() -+ << "i = " << i << "; input = " << cases[i].base64_data); - std::string str; -- ASSERT_TRUE(absl::Base64Unescape(expected_result.base64_data, &str)); -- EXPECT_EQ(absl::hash_internal::Wyhash(str.data(), str.size(), -- expected_result.seed, kSalt), -- expected_result.hash); -+ ASSERT_TRUE(absl::Base64Unescape(cases[i].base64_data, &str)); -+ EXPECT_EQ(absl::hash_internal::Wyhash(str.data(), str.size(), cases[i].seed, -+ kSalt), -+ kGolden[i]); - } -+#endif - } - - } // namespace diff --git a/debian/patches/big-endian-hash2.diff b/debian/patches/big-endian-hash2.diff deleted file mode 100644 index da27bba..0000000 --- a/debian/patches/big-endian-hash2.diff +++ /dev/null @@ -1,170 +0,0 @@ -From: Milad Fa <46688537+miladfarca@users.noreply.github.com> -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Fix hashing on big endian platforms (#1028) - -Avoid using libstdc++'s implementation of std::hash and -std::hash on big endian platforms in the implementation -of absl::Hash. - -This is a workaround for a buggy implementation that results in many -collisions. - -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102531 -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98731 ---- - absl/hash/internal/hash.h | 52 +++++++++++++++++++++++++++++++++++---- - absl/hash/internal/wyhash_test.cc | 50 +++++++++++++++++++++++++++++++++++++ - 2 files changed, 97 insertions(+), 5 deletions(-) - -diff --git a/absl/hash/internal/hash.h b/absl/hash/internal/hash.h -index 7fb0af0..8747137 100644 ---- a/absl/hash/internal/hash.h -+++ b/absl/hash/internal/hash.h -@@ -21,6 +21,7 @@ - - #include - #include -+#include - #include - #include - #include -@@ -489,8 +490,9 @@ typename std::enable_if::value, H>::type AbslHashValue( - - // AbslHashValue for hashing std::vector - // --// Do not use this for vector. It does not have a .data(), and a fallback --// for std::hash<> is most likely faster. -+// Do not use this for vector on platforms that have a working -+// implementation of std::hash. It does not have a .data(), and a fallback for -+// std::hash<> is most likely faster. - template - typename std::enable_if::value && !std::is_same::value, - H>::type -@@ -500,6 +502,27 @@ AbslHashValue(H hash_state, const std::vector& vector) { - vector.size()); - } - -+#if defined(ABSL_IS_BIG_ENDIAN) && \ -+ (defined(__GLIBCXX__) || defined(__GLIBCPP__)) -+// AbslHashValue for hashing std::vector -+// -+// std::hash in libstdc++ does not work correctly with vector on Big -+// Endian platforms therefore we need to implement a custom AbslHashValue for -+// it. More details on the bug: -+// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102531 -+template -+typename std::enable_if::value && std::is_same::value, -+ H>::type -+AbslHashValue(H hash_state, const std::vector& vector) { -+ typename H::AbslInternalPiecewiseCombiner combiner; -+ for (const auto& i : vector) { -+ unsigned char c = static_cast(i); -+ hash_state = combiner.add_buffer(std::move(hash_state), &c, sizeof(c)); -+ } -+ return H::combine(combiner.finalize(std::move(hash_state)), vector.size()); -+} -+#endif -+ - // ----------------------------------------------------------------------------- - // AbslHashValue for Ordered Associative Containers - // ----------------------------------------------------------------------------- -@@ -592,9 +615,28 @@ AbslHashValue(H hash_state, const absl::variant& v) { - // AbslHashValue for Other Types - // ----------------------------------------------------------------------------- - --// AbslHashValue for hashing std::bitset is not defined, for the same reason as --// for vector (see std::vector above): It does not expose the raw bytes, --// and a fallback to std::hash<> is most likely faster. -+// AbslHashValue for hashing std::bitset is not defined on Little Endian -+// platforms, for the same reason as for vector (see std::vector above): -+// It does not expose the raw bytes, and a fallback to std::hash<> is most -+// likely faster. -+ -+#if defined(ABSL_IS_BIG_ENDIAN) && \ -+ (defined(__GLIBCXX__) || defined(__GLIBCPP__)) -+// AbslHashValue for hashing std::bitset -+// -+// std::hash in libstdc++ does not work correctly with std::bitset on Big Endian -+// platforms therefore we need to implement a custom AbslHashValue for it. More -+// details on the bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102531 -+template -+H AbslHashValue(H hash_state, const std::bitset& set) { -+ typename H::AbslInternalPiecewiseCombiner combiner; -+ for (int i = 0; i < N; i++) { -+ unsigned char c = static_cast(set[i]); -+ hash_state = combiner.add_buffer(std::move(hash_state), &c, sizeof(c)); -+ } -+ return H::combine(combiner.finalize(std::move(hash_state)), N); -+} -+#endif - - // ----------------------------------------------------------------------------- - -diff --git a/absl/hash/internal/wyhash_test.cc b/absl/hash/internal/wyhash_test.cc -index 9e2d106..6717924 100644 ---- a/absl/hash/internal/wyhash_test.cc -+++ b/absl/hash/internal/wyhash_test.cc -@@ -404,6 +404,55 @@ TEST(WyhashTest, VerifyGolden) { - uint64_t{0xc9ae5c8759b4877a}}, - }; - -+#if defined(ABSL_IS_BIG_ENDIAN) -+ constexpr uint64_t kGolden[kNumGoldenOutputs] = { -+ 0xe5a40d39ab796423, 0x1766974bf7527d81, 0x5c3bbbe230db17a8, -+ 0xa6630143a7e6aa6f, 0x17645cb7318b86b, 0x218b175f30ba61f8, -+ 0xa6564b468248c683, 0xef192f401b116e1c, 0xbe8dc0c54617639d, -+ 0xe7b01610fc22dbb8, 0x99d9f694404af913, 0xf4eecd37464b45c5, -+ 0x7d2c653d63596d9b, 0x3f15c8544ec5393a, 0x6b9dc0c1704f796c, -+ 0xf1ded7a7eae5ed5a, 0x2db2fd7c6dd4641b, 0x151ca2d3d4cd33ab, -+ 0xa5af5994ac2ccd64, 0x2b2a4ca3191d2fce, 0xf89e68c9364e7c05, -+ 0x71724c70b799c21, 0x70536fabfd157369, 0xdee92794c3c3082b, -+ 0xac033a6743d3b3eb, 0xed2956b506cd5151, 0xbd669644755264b6, -+ 0x6ab1ff5d5f549a63, 0xf6bd551a2e3e04e, 0x7b5a8cef6875ea73, -+ 0x22bccf4d4db0a91c, 0x4f2bc07754c7c7eb, 0xfb6b8342a86725db, -+ 0x13a1a0d4c5854da, 0x5f6e44655f7dedac, 0x54a9198dff2bdf85, -+ 0xdb17e6915d4e4042, 0xa69926cf5c3b89f, 0xf77f031bfd74c096, -+ 0x1d6f916fdd50ec3c, 0x334ac76013ade393, 0x99370f899111de15, -+ 0x352457a03ada6de, 0x341974d4f42d854d, 0xda89ab02872aeb5, -+ 0x6ec2b74e143b10d9, 0x6f284c0b5cd60522, 0xf9670de353438f88, -+ 0xde920913adf0a2b4, 0xb7a07d7c0c17a8ec, 0x879a69f558ba3a98, -+ 0x360cf6d802df20f9, 0x53530f8046673738, 0xbd8f5f2bcf35e483, -+ 0x3f171f047144b983, 0x644d04e820823465, 0x50e44773a20b2702, -+ 0xe584ed4c05c745dd, 0x9a825c85b95ab6c0, 0xbce2931deb74e775, -+ 0x10468e9e705c7cfe, 0x12e01de3104141e2, 0x5c11ae2ee3713abd, -+ 0x6ac5ffb0860319e6, 0xc1e6da1849d30fc9, 0xa0e4d247a458b447, -+ 0x4530d4615c32b89b, 0x116aa09107a76505, 0xf941339d00d9bb73, -+ 0x573a0fc1615afb33, 0xa975c81dc868b258, 0x3ab2c5250ab54bda, -+ 0x37f99f208a3e3b11, 0x4b49b0ff706689d, 0x30bafa0b8f0a87fe, -+ 0xea6787a65cc20cdd, 0x55861729f1fc3ab8, 0xea38e009c5be9b72, -+ 0xcb8522cba33c3c66, 0x352e77653fe306f3, 0xe0bb760793bac064, -+ 0xf66ec59322662956, 0x637aa320455d56f8, 0x46ee546be5824a89, -+ 0x9e6842421e83d8a4, 0xf98ac2bc96b9fb8c, 0xf2c1002fd9a70b99, -+ 0x4c2b62b1e39e9405, 0x3248555fa3ade9c4, 0xd4d04c37f6417c21, -+ 0xf40cd506b1bf5653, 0x6c45d6005c760d2f, 0x61d88a7e61ff0d7e, -+ 0x131591e8a53cc967, 0xdae85cb9bc29bab6, 0xe98835334905e626, -+ 0x7cce50a2b66b8754, 0x5b0b3d0c5ac498ae, 0xd35a218c974d1756, -+ 0xfce436ddc1d003c, 0xd183901de90bb741, 0x9378f8f34974a66, -+ 0x21f11ae0a0402368, 0xf2fbd7c94ef89cb6, 0xc329c69d0f0d080b, -+ 0xf2841cba16216a61, 0x47aba97b44916df1, 0x724d4e00a8019fcf, -+ 0x2df9005c2a728d63, 0xc788892a1a5d7515, 0x9e993a65f9df0480, -+ 0x76876721ff49f969, 0xbe7a796cfba15bf5, 0xa4c8bd54586f5488, -+ 0xb390a325275501ab, 0x893f11317427ccf1, 0x92f2bb57da5695b9, -+ 0x30985b90da88269f, 0x2c690e268e086de8, 0x1c02df6097997196, -+ 0x1f9778f8bbdf6455, 0x7d57378c7bf8416d, 0xba8582a5f8d84d38, -+ 0xe8ca43b85050be4e, 0x5048cf6bed8a5d9f, 0xfbc5ba80917d0ea4, -+ 0x8011026525bf1691, 0x26b8dc6aed9fb50d, 0x191f5bfee77c1fe3, -+ 0xdd497891465a2cc1, 0x6f1fe8c57a33072e, 0x2c9f4ec078c460c0, -+ 0x9a725bde8f6a1437, 0x6ce545fa3ef61e4d, -+ }; -+#else - constexpr uint64_t kGolden[kNumGoldenOutputs] = { - 0xe5a40d39ab796423, 0x1766974bf7527d81, 0x5c3bbbe230db17a8, - 0xa6630143a7e6aa6f, 0x8787cb2d04b0c984, 0x33603654ff574ac2, -@@ -451,6 +500,7 @@ TEST(WyhashTest, VerifyGolden) { - 0xecf3de1acd04651f, 0xcc0a40552559ff32, 0xc385c374f20315b1, - 0xb90208a4c7234183, 0x58aa1ca7a4c075d9, - }; -+#endif - - #if UPDATE_GOLDEN - (void)kGolden; // Silence warning. diff --git a/debian/patches/big-endian-random.diff b/debian/patches/big-endian-random.diff deleted file mode 100644 index 70299fc..0000000 --- a/debian/patches/big-endian-random.diff +++ /dev/null @@ -1,711 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Use absl::uint128 for AES random number generator -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -Replace randen’s internal 128-bit integer struct, u64x2, with -absl::uint128. This eliminates some code and improves support for -big-endian platforms. - -The author works at Google. Upstream applied this patch as Piper -revision 383475671 and exported it to GitHub; the Applied-Upstream URL -above points to the exported commit. ---- - absl/random/internal/BUILD.bazel | 2 + - absl/random/internal/randen_hwaes.cc | 29 +-- - absl/random/internal/randen_slow.cc | 479 ++++++++++++++++------------------- - 3 files changed, 238 insertions(+), 272 deletions(-) - -diff --git a/absl/random/internal/BUILD.bazel b/absl/random/internal/BUILD.bazel -index 612b150..b3fa053 100644 ---- a/absl/random/internal/BUILD.bazel -+++ b/absl/random/internal/BUILD.bazel -@@ -296,6 +296,7 @@ cc_library( - ":platform", - "//absl/base:config", - "//absl/base:core_headers", -+ "//absl/numeric:int128", - ], - ) - -@@ -336,6 +337,7 @@ cc_library( - ":platform", - "//absl/base:config", - "//absl/base:core_headers", -+ "//absl/numeric:int128", - ], - ) - -diff --git a/absl/random/internal/randen_hwaes.cc b/absl/random/internal/randen_hwaes.cc -index b5a3f90..0a625bc 100644 ---- a/absl/random/internal/randen_hwaes.cc -+++ b/absl/random/internal/randen_hwaes.cc -@@ -23,6 +23,7 @@ - #include - - #include "absl/base/attributes.h" -+#include "absl/numeric/int128.h" - #include "absl/random/internal/platform.h" - #include "absl/random/internal/randen_traits.h" - -@@ -120,11 +121,6 @@ namespace { - - using absl::random_internal::RandenTraits; - --// Randen operates on 128-bit vectors. --struct alignas(16) u64x2 { -- uint64_t data[2]; --}; -- - } // namespace - - // TARGET_CRYPTO defines a crypto attribute for each architecture. -@@ -186,7 +182,7 @@ inline ABSL_TARGET_CRYPTO Vector128 AesRound(const Vector128& state, - } - - // Enables native loads in the round loop by pre-swapping. --inline ABSL_TARGET_CRYPTO void SwapEndian(u64x2* state) { -+inline ABSL_TARGET_CRYPTO void SwapEndian(absl::uint128* state) { - for (uint32_t block = 0; block < RandenTraits::kFeistelBlocks; ++block) { - Vector128Store(ReverseBytes(Vector128Load(state + block)), state + block); - } -@@ -327,7 +323,7 @@ namespace { - - // Block shuffles applies a shuffle to the entire state between AES rounds. - // Improved odd-even shuffle from "New criterion for diffusion property". --inline ABSL_TARGET_CRYPTO void BlockShuffle(u64x2* state) { -+inline ABSL_TARGET_CRYPTO void BlockShuffle(absl::uint128* state) { - static_assert(RandenTraits::kFeistelBlocks == 16, - "Expecting 16 FeistelBlocks."); - -@@ -374,8 +370,9 @@ inline ABSL_TARGET_CRYPTO void BlockShuffle(u64x2* state) { - // per 16 bytes (vs. 10 for AES-CTR). Computing eight round functions in - // parallel hides the 7-cycle AESNI latency on HSW. Note that the Feistel - // XORs are 'free' (included in the second AES instruction). --inline ABSL_TARGET_CRYPTO const u64x2* FeistelRound( -- u64x2* state, const u64x2* ABSL_RANDOM_INTERNAL_RESTRICT keys) { -+inline ABSL_TARGET_CRYPTO const absl::uint128* FeistelRound( -+ absl::uint128* state, -+ const absl::uint128* ABSL_RANDOM_INTERNAL_RESTRICT keys) { - static_assert(RandenTraits::kFeistelBlocks == 16, - "Expecting 16 FeistelBlocks."); - -@@ -436,7 +433,8 @@ inline ABSL_TARGET_CRYPTO const u64x2* FeistelRound( - // 2^64 queries if the round function is a PRF. This is similar to the b=8 case - // of Simpira v2, but more efficient than its generic construction for b=16. - inline ABSL_TARGET_CRYPTO void Permute( -- u64x2* state, const u64x2* ABSL_RANDOM_INTERNAL_RESTRICT keys) { -+ absl::uint128* state, -+ const absl::uint128* ABSL_RANDOM_INTERNAL_RESTRICT keys) { - // (Successfully unrolled; the first iteration jumps into the second half) - #ifdef __clang__ - #pragma clang loop unroll_count(2) -@@ -473,10 +471,11 @@ void ABSL_TARGET_CRYPTO RandenHwAes::Absorb(const void* seed_void, - static_assert(RandenTraits::kStateBytes / sizeof(Vector128) == 16, - "Unexpected Randen kStateBlocks"); - -- auto* state = -- reinterpret_cast(state_void); -+ auto* state = reinterpret_cast( -+ state_void); - const auto* seed = -- reinterpret_cast(seed_void); -+ reinterpret_cast( -+ seed_void); - - Vector128 b1 = Vector128Load(state + 1); - b1 ^= Vector128Load(seed + 0); -@@ -545,8 +544,8 @@ void ABSL_TARGET_CRYPTO RandenHwAes::Generate(const void* keys_void, - static_assert(RandenTraits::kCapacityBytes == sizeof(Vector128), - "Capacity mismatch"); - -- auto* state = reinterpret_cast(state_void); -- const auto* keys = reinterpret_cast(keys_void); -+ auto* state = reinterpret_cast(state_void); -+ const auto* keys = reinterpret_cast(keys_void); - - const Vector128 prev_inner = Vector128Load(state); - -diff --git a/absl/random/internal/randen_slow.cc b/absl/random/internal/randen_slow.cc -index 4e5f3dc..56aeb03 100644 ---- a/absl/random/internal/randen_slow.cc -+++ b/absl/random/internal/randen_slow.cc -@@ -19,6 +19,7 @@ - #include - - #include "absl/base/attributes.h" -+#include "absl/numeric/int128.h" - #include "absl/random/internal/platform.h" - #include "absl/random/internal/randen_traits.h" - -@@ -38,192 +39,193 @@ - namespace { - - // AES portions based on rijndael-alg-fst.c, --// https://fastcrypto.org/front/misc/rijndael-alg-fst.c -+// https://fastcrypto.org/front/misc/rijndael-alg-fst.c, and modified for -+// little-endianness. - // - // Implementation of - // http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf - constexpr uint32_t te0[256] = { -- 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xfff2f20d, 0xd66b6bbd, -- 0xde6f6fb1, 0x91c5c554, 0x60303050, 0x02010103, 0xce6767a9, 0x562b2b7d, -- 0xe7fefe19, 0xb5d7d762, 0x4dababe6, 0xec76769a, 0x8fcaca45, 0x1f82829d, -- 0x89c9c940, 0xfa7d7d87, 0xeffafa15, 0xb25959eb, 0x8e4747c9, 0xfbf0f00b, -- 0x41adadec, 0xb3d4d467, 0x5fa2a2fd, 0x45afafea, 0x239c9cbf, 0x53a4a4f7, -- 0xe4727296, 0x9bc0c05b, 0x75b7b7c2, 0xe1fdfd1c, 0x3d9393ae, 0x4c26266a, -- 0x6c36365a, 0x7e3f3f41, 0xf5f7f702, 0x83cccc4f, 0x6834345c, 0x51a5a5f4, -- 0xd1e5e534, 0xf9f1f108, 0xe2717193, 0xabd8d873, 0x62313153, 0x2a15153f, -- 0x0804040c, 0x95c7c752, 0x46232365, 0x9dc3c35e, 0x30181828, 0x379696a1, -- 0x0a05050f, 0x2f9a9ab5, 0x0e070709, 0x24121236, 0x1b80809b, 0xdfe2e23d, -- 0xcdebeb26, 0x4e272769, 0x7fb2b2cd, 0xea75759f, 0x1209091b, 0x1d83839e, -- 0x582c2c74, 0x341a1a2e, 0x361b1b2d, 0xdc6e6eb2, 0xb45a5aee, 0x5ba0a0fb, -- 0xa45252f6, 0x763b3b4d, 0xb7d6d661, 0x7db3b3ce, 0x5229297b, 0xdde3e33e, -- 0x5e2f2f71, 0x13848497, 0xa65353f5, 0xb9d1d168, 0x00000000, 0xc1eded2c, -- 0x40202060, 0xe3fcfc1f, 0x79b1b1c8, 0xb65b5bed, 0xd46a6abe, 0x8dcbcb46, -- 0x67bebed9, 0x7239394b, 0x944a4ade, 0x984c4cd4, 0xb05858e8, 0x85cfcf4a, -- 0xbbd0d06b, 0xc5efef2a, 0x4faaaae5, 0xedfbfb16, 0x864343c5, 0x9a4d4dd7, -- 0x66333355, 0x11858594, 0x8a4545cf, 0xe9f9f910, 0x04020206, 0xfe7f7f81, -- 0xa05050f0, 0x783c3c44, 0x259f9fba, 0x4ba8a8e3, 0xa25151f3, 0x5da3a3fe, -- 0x804040c0, 0x058f8f8a, 0x3f9292ad, 0x219d9dbc, 0x70383848, 0xf1f5f504, -- 0x63bcbcdf, 0x77b6b6c1, 0xafdada75, 0x42212163, 0x20101030, 0xe5ffff1a, -- 0xfdf3f30e, 0xbfd2d26d, 0x81cdcd4c, 0x180c0c14, 0x26131335, 0xc3ecec2f, -- 0xbe5f5fe1, 0x359797a2, 0x884444cc, 0x2e171739, 0x93c4c457, 0x55a7a7f2, -- 0xfc7e7e82, 0x7a3d3d47, 0xc86464ac, 0xba5d5de7, 0x3219192b, 0xe6737395, -- 0xc06060a0, 0x19818198, 0x9e4f4fd1, 0xa3dcdc7f, 0x44222266, 0x542a2a7e, -- 0x3b9090ab, 0x0b888883, 0x8c4646ca, 0xc7eeee29, 0x6bb8b8d3, 0x2814143c, -- 0xa7dede79, 0xbc5e5ee2, 0x160b0b1d, 0xaddbdb76, 0xdbe0e03b, 0x64323256, -- 0x743a3a4e, 0x140a0a1e, 0x924949db, 0x0c06060a, 0x4824246c, 0xb85c5ce4, -- 0x9fc2c25d, 0xbdd3d36e, 0x43acacef, 0xc46262a6, 0x399191a8, 0x319595a4, -- 0xd3e4e437, 0xf279798b, 0xd5e7e732, 0x8bc8c843, 0x6e373759, 0xda6d6db7, -- 0x018d8d8c, 0xb1d5d564, 0x9c4e4ed2, 0x49a9a9e0, 0xd86c6cb4, 0xac5656fa, -- 0xf3f4f407, 0xcfeaea25, 0xca6565af, 0xf47a7a8e, 0x47aeaee9, 0x10080818, -- 0x6fbabad5, 0xf0787888, 0x4a25256f, 0x5c2e2e72, 0x381c1c24, 0x57a6a6f1, -- 0x73b4b4c7, 0x97c6c651, 0xcbe8e823, 0xa1dddd7c, 0xe874749c, 0x3e1f1f21, -- 0x964b4bdd, 0x61bdbddc, 0x0d8b8b86, 0x0f8a8a85, 0xe0707090, 0x7c3e3e42, -- 0x71b5b5c4, 0xcc6666aa, 0x904848d8, 0x06030305, 0xf7f6f601, 0x1c0e0e12, -- 0xc26161a3, 0x6a35355f, 0xae5757f9, 0x69b9b9d0, 0x17868691, 0x99c1c158, -- 0x3a1d1d27, 0x279e9eb9, 0xd9e1e138, 0xebf8f813, 0x2b9898b3, 0x22111133, -- 0xd26969bb, 0xa9d9d970, 0x078e8e89, 0x339494a7, 0x2d9b9bb6, 0x3c1e1e22, -- 0x15878792, 0xc9e9e920, 0x87cece49, 0xaa5555ff, 0x50282878, 0xa5dfdf7a, -- 0x038c8c8f, 0x59a1a1f8, 0x09898980, 0x1a0d0d17, 0x65bfbfda, 0xd7e6e631, -- 0x844242c6, 0xd06868b8, 0x824141c3, 0x299999b0, 0x5a2d2d77, 0x1e0f0f11, -- 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a, -+ 0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6, 0x0df2f2ff, 0xbd6b6bd6, -+ 0xb16f6fde, 0x54c5c591, 0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56, -+ 0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec, 0x45caca8f, 0x9d82821f, -+ 0x40c9c989, 0x877d7dfa, 0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb, -+ 0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45, 0xbf9c9c23, 0xf7a4a453, -+ 0x967272e4, 0x5bc0c09b, 0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c, -+ 0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83, 0x5c343468, 0xf4a5a551, -+ 0x34e5e5d1, 0x08f1f1f9, 0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a, -+ 0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d, 0x28181830, 0xa1969637, -+ 0x0f05050a, 0xb59a9a2f, 0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df, -+ 0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea, 0x1b090912, 0x9e83831d, -+ 0x742c2c58, 0x2e1a1a34, 0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b, -+ 0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d, 0x7b292952, 0x3ee3e3dd, -+ 0x712f2f5e, 0x97848413, 0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1, -+ 0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6, 0xbe6a6ad4, 0x46cbcb8d, -+ 0xd9bebe67, 0x4b393972, 0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85, -+ 0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed, 0xc5434386, 0xd74d4d9a, -+ 0x55333366, 0x94858511, 0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe, -+ 0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b, 0xf35151a2, 0xfea3a35d, -+ 0xc0404080, 0x8a8f8f05, 0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1, -+ 0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142, 0x30101020, 0x1affffe5, -+ 0x0ef3f3fd, 0x6dd2d2bf, 0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3, -+ 0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e, 0x57c4c493, 0xf2a7a755, -+ 0x827e7efc, 0x473d3d7a, 0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6, -+ 0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3, 0x66222244, 0x7e2a2a54, -+ 0xab90903b, 0x8388880b, 0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428, -+ 0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad, 0x3be0e0db, 0x56323264, -+ 0x4e3a3a74, 0x1e0a0a14, 0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8, -+ 0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4, 0xa8919139, 0xa4959531, -+ 0x37e4e4d3, 0x8b7979f2, 0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda, -+ 0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949, 0xb46c6cd8, 0xfa5656ac, -+ 0x07f4f4f3, 0x25eaeacf, 0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810, -+ 0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c, 0x241c1c38, 0xf1a6a657, -+ 0xc7b4b473, 0x51c6c697, 0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e, -+ 0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f, 0x907070e0, 0x423e3e7c, -+ 0xc4b5b571, 0xaa6666cc, 0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c, -+ 0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969, 0x91868617, 0x58c1c199, -+ 0x271d1d3a, 0xb99e9e27, 0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122, -+ 0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433, 0xb69b9b2d, 0x221e1e3c, -+ 0x92878715, 0x20e9e9c9, 0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5, -+ 0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a, 0xdabfbf65, 0x31e6e6d7, -+ 0xc6424284, 0xb86868d0, 0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e, -+ 0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c, - }; - - constexpr uint32_t te1[256] = { -- 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0x0dfff2f2, 0xbdd66b6b, -- 0xb1de6f6f, 0x5491c5c5, 0x50603030, 0x03020101, 0xa9ce6767, 0x7d562b2b, -- 0x19e7fefe, 0x62b5d7d7, 0xe64dabab, 0x9aec7676, 0x458fcaca, 0x9d1f8282, -- 0x4089c9c9, 0x87fa7d7d, 0x15effafa, 0xebb25959, 0xc98e4747, 0x0bfbf0f0, -- 0xec41adad, 0x67b3d4d4, 0xfd5fa2a2, 0xea45afaf, 0xbf239c9c, 0xf753a4a4, -- 0x96e47272, 0x5b9bc0c0, 0xc275b7b7, 0x1ce1fdfd, 0xae3d9393, 0x6a4c2626, -- 0x5a6c3636, 0x417e3f3f, 0x02f5f7f7, 0x4f83cccc, 0x5c683434, 0xf451a5a5, -- 0x34d1e5e5, 0x08f9f1f1, 0x93e27171, 0x73abd8d8, 0x53623131, 0x3f2a1515, -- 0x0c080404, 0x5295c7c7, 0x65462323, 0x5e9dc3c3, 0x28301818, 0xa1379696, -- 0x0f0a0505, 0xb52f9a9a, 0x090e0707, 0x36241212, 0x9b1b8080, 0x3ddfe2e2, -- 0x26cdebeb, 0x694e2727, 0xcd7fb2b2, 0x9fea7575, 0x1b120909, 0x9e1d8383, -- 0x74582c2c, 0x2e341a1a, 0x2d361b1b, 0xb2dc6e6e, 0xeeb45a5a, 0xfb5ba0a0, -- 0xf6a45252, 0x4d763b3b, 0x61b7d6d6, 0xce7db3b3, 0x7b522929, 0x3edde3e3, -- 0x715e2f2f, 0x97138484, 0xf5a65353, 0x68b9d1d1, 0x00000000, 0x2cc1eded, -- 0x60402020, 0x1fe3fcfc, 0xc879b1b1, 0xedb65b5b, 0xbed46a6a, 0x468dcbcb, -- 0xd967bebe, 0x4b723939, 0xde944a4a, 0xd4984c4c, 0xe8b05858, 0x4a85cfcf, -- 0x6bbbd0d0, 0x2ac5efef, 0xe54faaaa, 0x16edfbfb, 0xc5864343, 0xd79a4d4d, -- 0x55663333, 0x94118585, 0xcf8a4545, 0x10e9f9f9, 0x06040202, 0x81fe7f7f, -- 0xf0a05050, 0x44783c3c, 0xba259f9f, 0xe34ba8a8, 0xf3a25151, 0xfe5da3a3, -- 0xc0804040, 0x8a058f8f, 0xad3f9292, 0xbc219d9d, 0x48703838, 0x04f1f5f5, -- 0xdf63bcbc, 0xc177b6b6, 0x75afdada, 0x63422121, 0x30201010, 0x1ae5ffff, -- 0x0efdf3f3, 0x6dbfd2d2, 0x4c81cdcd, 0x14180c0c, 0x35261313, 0x2fc3ecec, -- 0xe1be5f5f, 0xa2359797, 0xcc884444, 0x392e1717, 0x5793c4c4, 0xf255a7a7, -- 0x82fc7e7e, 0x477a3d3d, 0xacc86464, 0xe7ba5d5d, 0x2b321919, 0x95e67373, -- 0xa0c06060, 0x98198181, 0xd19e4f4f, 0x7fa3dcdc, 0x66442222, 0x7e542a2a, -- 0xab3b9090, 0x830b8888, 0xca8c4646, 0x29c7eeee, 0xd36bb8b8, 0x3c281414, -- 0x79a7dede, 0xe2bc5e5e, 0x1d160b0b, 0x76addbdb, 0x3bdbe0e0, 0x56643232, -- 0x4e743a3a, 0x1e140a0a, 0xdb924949, 0x0a0c0606, 0x6c482424, 0xe4b85c5c, -- 0x5d9fc2c2, 0x6ebdd3d3, 0xef43acac, 0xa6c46262, 0xa8399191, 0xa4319595, -- 0x37d3e4e4, 0x8bf27979, 0x32d5e7e7, 0x438bc8c8, 0x596e3737, 0xb7da6d6d, -- 0x8c018d8d, 0x64b1d5d5, 0xd29c4e4e, 0xe049a9a9, 0xb4d86c6c, 0xfaac5656, -- 0x07f3f4f4, 0x25cfeaea, 0xafca6565, 0x8ef47a7a, 0xe947aeae, 0x18100808, -- 0xd56fbaba, 0x88f07878, 0x6f4a2525, 0x725c2e2e, 0x24381c1c, 0xf157a6a6, -- 0xc773b4b4, 0x5197c6c6, 0x23cbe8e8, 0x7ca1dddd, 0x9ce87474, 0x213e1f1f, -- 0xdd964b4b, 0xdc61bdbd, 0x860d8b8b, 0x850f8a8a, 0x90e07070, 0x427c3e3e, -- 0xc471b5b5, 0xaacc6666, 0xd8904848, 0x05060303, 0x01f7f6f6, 0x121c0e0e, -- 0xa3c26161, 0x5f6a3535, 0xf9ae5757, 0xd069b9b9, 0x91178686, 0x5899c1c1, -- 0x273a1d1d, 0xb9279e9e, 0x38d9e1e1, 0x13ebf8f8, 0xb32b9898, 0x33221111, -- 0xbbd26969, 0x70a9d9d9, 0x89078e8e, 0xa7339494, 0xb62d9b9b, 0x223c1e1e, -- 0x92158787, 0x20c9e9e9, 0x4987cece, 0xffaa5555, 0x78502828, 0x7aa5dfdf, -- 0x8f038c8c, 0xf859a1a1, 0x80098989, 0x171a0d0d, 0xda65bfbf, 0x31d7e6e6, -- 0xc6844242, 0xb8d06868, 0xc3824141, 0xb0299999, 0x775a2d2d, 0x111e0f0f, -- 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616, -+ 0x6363c6a5, 0x7c7cf884, 0x7777ee99, 0x7b7bf68d, 0xf2f2ff0d, 0x6b6bd6bd, -+ 0x6f6fdeb1, 0xc5c59154, 0x30306050, 0x01010203, 0x6767cea9, 0x2b2b567d, -+ 0xfefee719, 0xd7d7b562, 0xabab4de6, 0x7676ec9a, 0xcaca8f45, 0x82821f9d, -+ 0xc9c98940, 0x7d7dfa87, 0xfafaef15, 0x5959b2eb, 0x47478ec9, 0xf0f0fb0b, -+ 0xadad41ec, 0xd4d4b367, 0xa2a25ffd, 0xafaf45ea, 0x9c9c23bf, 0xa4a453f7, -+ 0x7272e496, 0xc0c09b5b, 0xb7b775c2, 0xfdfde11c, 0x93933dae, 0x26264c6a, -+ 0x36366c5a, 0x3f3f7e41, 0xf7f7f502, 0xcccc834f, 0x3434685c, 0xa5a551f4, -+ 0xe5e5d134, 0xf1f1f908, 0x7171e293, 0xd8d8ab73, 0x31316253, 0x15152a3f, -+ 0x0404080c, 0xc7c79552, 0x23234665, 0xc3c39d5e, 0x18183028, 0x969637a1, -+ 0x05050a0f, 0x9a9a2fb5, 0x07070e09, 0x12122436, 0x80801b9b, 0xe2e2df3d, -+ 0xebebcd26, 0x27274e69, 0xb2b27fcd, 0x7575ea9f, 0x0909121b, 0x83831d9e, -+ 0x2c2c5874, 0x1a1a342e, 0x1b1b362d, 0x6e6edcb2, 0x5a5ab4ee, 0xa0a05bfb, -+ 0x5252a4f6, 0x3b3b764d, 0xd6d6b761, 0xb3b37dce, 0x2929527b, 0xe3e3dd3e, -+ 0x2f2f5e71, 0x84841397, 0x5353a6f5, 0xd1d1b968, 0x00000000, 0xededc12c, -+ 0x20204060, 0xfcfce31f, 0xb1b179c8, 0x5b5bb6ed, 0x6a6ad4be, 0xcbcb8d46, -+ 0xbebe67d9, 0x3939724b, 0x4a4a94de, 0x4c4c98d4, 0x5858b0e8, 0xcfcf854a, -+ 0xd0d0bb6b, 0xefefc52a, 0xaaaa4fe5, 0xfbfbed16, 0x434386c5, 0x4d4d9ad7, -+ 0x33336655, 0x85851194, 0x45458acf, 0xf9f9e910, 0x02020406, 0x7f7ffe81, -+ 0x5050a0f0, 0x3c3c7844, 0x9f9f25ba, 0xa8a84be3, 0x5151a2f3, 0xa3a35dfe, -+ 0x404080c0, 0x8f8f058a, 0x92923fad, 0x9d9d21bc, 0x38387048, 0xf5f5f104, -+ 0xbcbc63df, 0xb6b677c1, 0xdadaaf75, 0x21214263, 0x10102030, 0xffffe51a, -+ 0xf3f3fd0e, 0xd2d2bf6d, 0xcdcd814c, 0x0c0c1814, 0x13132635, 0xececc32f, -+ 0x5f5fbee1, 0x979735a2, 0x444488cc, 0x17172e39, 0xc4c49357, 0xa7a755f2, -+ 0x7e7efc82, 0x3d3d7a47, 0x6464c8ac, 0x5d5dbae7, 0x1919322b, 0x7373e695, -+ 0x6060c0a0, 0x81811998, 0x4f4f9ed1, 0xdcdca37f, 0x22224466, 0x2a2a547e, -+ 0x90903bab, 0x88880b83, 0x46468cca, 0xeeeec729, 0xb8b86bd3, 0x1414283c, -+ 0xdedea779, 0x5e5ebce2, 0x0b0b161d, 0xdbdbad76, 0xe0e0db3b, 0x32326456, -+ 0x3a3a744e, 0x0a0a141e, 0x494992db, 0x06060c0a, 0x2424486c, 0x5c5cb8e4, -+ 0xc2c29f5d, 0xd3d3bd6e, 0xacac43ef, 0x6262c4a6, 0x919139a8, 0x959531a4, -+ 0xe4e4d337, 0x7979f28b, 0xe7e7d532, 0xc8c88b43, 0x37376e59, 0x6d6ddab7, -+ 0x8d8d018c, 0xd5d5b164, 0x4e4e9cd2, 0xa9a949e0, 0x6c6cd8b4, 0x5656acfa, -+ 0xf4f4f307, 0xeaeacf25, 0x6565caaf, 0x7a7af48e, 0xaeae47e9, 0x08081018, -+ 0xbaba6fd5, 0x7878f088, 0x25254a6f, 0x2e2e5c72, 0x1c1c3824, 0xa6a657f1, -+ 0xb4b473c7, 0xc6c69751, 0xe8e8cb23, 0xdddda17c, 0x7474e89c, 0x1f1f3e21, -+ 0x4b4b96dd, 0xbdbd61dc, 0x8b8b0d86, 0x8a8a0f85, 0x7070e090, 0x3e3e7c42, -+ 0xb5b571c4, 0x6666ccaa, 0x484890d8, 0x03030605, 0xf6f6f701, 0x0e0e1c12, -+ 0x6161c2a3, 0x35356a5f, 0x5757aef9, 0xb9b969d0, 0x86861791, 0xc1c19958, -+ 0x1d1d3a27, 0x9e9e27b9, 0xe1e1d938, 0xf8f8eb13, 0x98982bb3, 0x11112233, -+ 0x6969d2bb, 0xd9d9a970, 0x8e8e0789, 0x949433a7, 0x9b9b2db6, 0x1e1e3c22, -+ 0x87871592, 0xe9e9c920, 0xcece8749, 0x5555aaff, 0x28285078, 0xdfdfa57a, -+ 0x8c8c038f, 0xa1a159f8, 0x89890980, 0x0d0d1a17, 0xbfbf65da, 0xe6e6d731, -+ 0x424284c6, 0x6868d0b8, 0x414182c3, 0x999929b0, 0x2d2d5a77, 0x0f0f1e11, -+ 0xb0b07bcb, 0x5454a8fc, 0xbbbb6dd6, 0x16162c3a, - }; - - constexpr uint32_t te2[256] = { -- 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0xf20dfff2, 0x6bbdd66b, -- 0x6fb1de6f, 0xc55491c5, 0x30506030, 0x01030201, 0x67a9ce67, 0x2b7d562b, -- 0xfe19e7fe, 0xd762b5d7, 0xabe64dab, 0x769aec76, 0xca458fca, 0x829d1f82, -- 0xc94089c9, 0x7d87fa7d, 0xfa15effa, 0x59ebb259, 0x47c98e47, 0xf00bfbf0, -- 0xadec41ad, 0xd467b3d4, 0xa2fd5fa2, 0xafea45af, 0x9cbf239c, 0xa4f753a4, -- 0x7296e472, 0xc05b9bc0, 0xb7c275b7, 0xfd1ce1fd, 0x93ae3d93, 0x266a4c26, -- 0x365a6c36, 0x3f417e3f, 0xf702f5f7, 0xcc4f83cc, 0x345c6834, 0xa5f451a5, -- 0xe534d1e5, 0xf108f9f1, 0x7193e271, 0xd873abd8, 0x31536231, 0x153f2a15, -- 0x040c0804, 0xc75295c7, 0x23654623, 0xc35e9dc3, 0x18283018, 0x96a13796, -- 0x050f0a05, 0x9ab52f9a, 0x07090e07, 0x12362412, 0x809b1b80, 0xe23ddfe2, -- 0xeb26cdeb, 0x27694e27, 0xb2cd7fb2, 0x759fea75, 0x091b1209, 0x839e1d83, -- 0x2c74582c, 0x1a2e341a, 0x1b2d361b, 0x6eb2dc6e, 0x5aeeb45a, 0xa0fb5ba0, -- 0x52f6a452, 0x3b4d763b, 0xd661b7d6, 0xb3ce7db3, 0x297b5229, 0xe33edde3, -- 0x2f715e2f, 0x84971384, 0x53f5a653, 0xd168b9d1, 0x00000000, 0xed2cc1ed, -- 0x20604020, 0xfc1fe3fc, 0xb1c879b1, 0x5bedb65b, 0x6abed46a, 0xcb468dcb, -- 0xbed967be, 0x394b7239, 0x4ade944a, 0x4cd4984c, 0x58e8b058, 0xcf4a85cf, -- 0xd06bbbd0, 0xef2ac5ef, 0xaae54faa, 0xfb16edfb, 0x43c58643, 0x4dd79a4d, -- 0x33556633, 0x85941185, 0x45cf8a45, 0xf910e9f9, 0x02060402, 0x7f81fe7f, -- 0x50f0a050, 0x3c44783c, 0x9fba259f, 0xa8e34ba8, 0x51f3a251, 0xa3fe5da3, -- 0x40c08040, 0x8f8a058f, 0x92ad3f92, 0x9dbc219d, 0x38487038, 0xf504f1f5, -- 0xbcdf63bc, 0xb6c177b6, 0xda75afda, 0x21634221, 0x10302010, 0xff1ae5ff, -- 0xf30efdf3, 0xd26dbfd2, 0xcd4c81cd, 0x0c14180c, 0x13352613, 0xec2fc3ec, -- 0x5fe1be5f, 0x97a23597, 0x44cc8844, 0x17392e17, 0xc45793c4, 0xa7f255a7, -- 0x7e82fc7e, 0x3d477a3d, 0x64acc864, 0x5de7ba5d, 0x192b3219, 0x7395e673, -- 0x60a0c060, 0x81981981, 0x4fd19e4f, 0xdc7fa3dc, 0x22664422, 0x2a7e542a, -- 0x90ab3b90, 0x88830b88, 0x46ca8c46, 0xee29c7ee, 0xb8d36bb8, 0x143c2814, -- 0xde79a7de, 0x5ee2bc5e, 0x0b1d160b, 0xdb76addb, 0xe03bdbe0, 0x32566432, -- 0x3a4e743a, 0x0a1e140a, 0x49db9249, 0x060a0c06, 0x246c4824, 0x5ce4b85c, -- 0xc25d9fc2, 0xd36ebdd3, 0xacef43ac, 0x62a6c462, 0x91a83991, 0x95a43195, -- 0xe437d3e4, 0x798bf279, 0xe732d5e7, 0xc8438bc8, 0x37596e37, 0x6db7da6d, -- 0x8d8c018d, 0xd564b1d5, 0x4ed29c4e, 0xa9e049a9, 0x6cb4d86c, 0x56faac56, -- 0xf407f3f4, 0xea25cfea, 0x65afca65, 0x7a8ef47a, 0xaee947ae, 0x08181008, -- 0xbad56fba, 0x7888f078, 0x256f4a25, 0x2e725c2e, 0x1c24381c, 0xa6f157a6, -- 0xb4c773b4, 0xc65197c6, 0xe823cbe8, 0xdd7ca1dd, 0x749ce874, 0x1f213e1f, -- 0x4bdd964b, 0xbddc61bd, 0x8b860d8b, 0x8a850f8a, 0x7090e070, 0x3e427c3e, -- 0xb5c471b5, 0x66aacc66, 0x48d89048, 0x03050603, 0xf601f7f6, 0x0e121c0e, -- 0x61a3c261, 0x355f6a35, 0x57f9ae57, 0xb9d069b9, 0x86911786, 0xc15899c1, -- 0x1d273a1d, 0x9eb9279e, 0xe138d9e1, 0xf813ebf8, 0x98b32b98, 0x11332211, -- 0x69bbd269, 0xd970a9d9, 0x8e89078e, 0x94a73394, 0x9bb62d9b, 0x1e223c1e, -- 0x87921587, 0xe920c9e9, 0xce4987ce, 0x55ffaa55, 0x28785028, 0xdf7aa5df, -- 0x8c8f038c, 0xa1f859a1, 0x89800989, 0x0d171a0d, 0xbfda65bf, 0xe631d7e6, -- 0x42c68442, 0x68b8d068, 0x41c38241, 0x99b02999, 0x2d775a2d, 0x0f111e0f, -- 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16, -+ 0x63c6a563, 0x7cf8847c, 0x77ee9977, 0x7bf68d7b, 0xf2ff0df2, 0x6bd6bd6b, -+ 0x6fdeb16f, 0xc59154c5, 0x30605030, 0x01020301, 0x67cea967, 0x2b567d2b, -+ 0xfee719fe, 0xd7b562d7, 0xab4de6ab, 0x76ec9a76, 0xca8f45ca, 0x821f9d82, -+ 0xc98940c9, 0x7dfa877d, 0xfaef15fa, 0x59b2eb59, 0x478ec947, 0xf0fb0bf0, -+ 0xad41ecad, 0xd4b367d4, 0xa25ffda2, 0xaf45eaaf, 0x9c23bf9c, 0xa453f7a4, -+ 0x72e49672, 0xc09b5bc0, 0xb775c2b7, 0xfde11cfd, 0x933dae93, 0x264c6a26, -+ 0x366c5a36, 0x3f7e413f, 0xf7f502f7, 0xcc834fcc, 0x34685c34, 0xa551f4a5, -+ 0xe5d134e5, 0xf1f908f1, 0x71e29371, 0xd8ab73d8, 0x31625331, 0x152a3f15, -+ 0x04080c04, 0xc79552c7, 0x23466523, 0xc39d5ec3, 0x18302818, 0x9637a196, -+ 0x050a0f05, 0x9a2fb59a, 0x070e0907, 0x12243612, 0x801b9b80, 0xe2df3de2, -+ 0xebcd26eb, 0x274e6927, 0xb27fcdb2, 0x75ea9f75, 0x09121b09, 0x831d9e83, -+ 0x2c58742c, 0x1a342e1a, 0x1b362d1b, 0x6edcb26e, 0x5ab4ee5a, 0xa05bfba0, -+ 0x52a4f652, 0x3b764d3b, 0xd6b761d6, 0xb37dceb3, 0x29527b29, 0xe3dd3ee3, -+ 0x2f5e712f, 0x84139784, 0x53a6f553, 0xd1b968d1, 0x00000000, 0xedc12ced, -+ 0x20406020, 0xfce31ffc, 0xb179c8b1, 0x5bb6ed5b, 0x6ad4be6a, 0xcb8d46cb, -+ 0xbe67d9be, 0x39724b39, 0x4a94de4a, 0x4c98d44c, 0x58b0e858, 0xcf854acf, -+ 0xd0bb6bd0, 0xefc52aef, 0xaa4fe5aa, 0xfbed16fb, 0x4386c543, 0x4d9ad74d, -+ 0x33665533, 0x85119485, 0x458acf45, 0xf9e910f9, 0x02040602, 0x7ffe817f, -+ 0x50a0f050, 0x3c78443c, 0x9f25ba9f, 0xa84be3a8, 0x51a2f351, 0xa35dfea3, -+ 0x4080c040, 0x8f058a8f, 0x923fad92, 0x9d21bc9d, 0x38704838, 0xf5f104f5, -+ 0xbc63dfbc, 0xb677c1b6, 0xdaaf75da, 0x21426321, 0x10203010, 0xffe51aff, -+ 0xf3fd0ef3, 0xd2bf6dd2, 0xcd814ccd, 0x0c18140c, 0x13263513, 0xecc32fec, -+ 0x5fbee15f, 0x9735a297, 0x4488cc44, 0x172e3917, 0xc49357c4, 0xa755f2a7, -+ 0x7efc827e, 0x3d7a473d, 0x64c8ac64, 0x5dbae75d, 0x19322b19, 0x73e69573, -+ 0x60c0a060, 0x81199881, 0x4f9ed14f, 0xdca37fdc, 0x22446622, 0x2a547e2a, -+ 0x903bab90, 0x880b8388, 0x468cca46, 0xeec729ee, 0xb86bd3b8, 0x14283c14, -+ 0xdea779de, 0x5ebce25e, 0x0b161d0b, 0xdbad76db, 0xe0db3be0, 0x32645632, -+ 0x3a744e3a, 0x0a141e0a, 0x4992db49, 0x060c0a06, 0x24486c24, 0x5cb8e45c, -+ 0xc29f5dc2, 0xd3bd6ed3, 0xac43efac, 0x62c4a662, 0x9139a891, 0x9531a495, -+ 0xe4d337e4, 0x79f28b79, 0xe7d532e7, 0xc88b43c8, 0x376e5937, 0x6ddab76d, -+ 0x8d018c8d, 0xd5b164d5, 0x4e9cd24e, 0xa949e0a9, 0x6cd8b46c, 0x56acfa56, -+ 0xf4f307f4, 0xeacf25ea, 0x65caaf65, 0x7af48e7a, 0xae47e9ae, 0x08101808, -+ 0xba6fd5ba, 0x78f08878, 0x254a6f25, 0x2e5c722e, 0x1c38241c, 0xa657f1a6, -+ 0xb473c7b4, 0xc69751c6, 0xe8cb23e8, 0xdda17cdd, 0x74e89c74, 0x1f3e211f, -+ 0x4b96dd4b, 0xbd61dcbd, 0x8b0d868b, 0x8a0f858a, 0x70e09070, 0x3e7c423e, -+ 0xb571c4b5, 0x66ccaa66, 0x4890d848, 0x03060503, 0xf6f701f6, 0x0e1c120e, -+ 0x61c2a361, 0x356a5f35, 0x57aef957, 0xb969d0b9, 0x86179186, 0xc19958c1, -+ 0x1d3a271d, 0x9e27b99e, 0xe1d938e1, 0xf8eb13f8, 0x982bb398, 0x11223311, -+ 0x69d2bb69, 0xd9a970d9, 0x8e07898e, 0x9433a794, 0x9b2db69b, 0x1e3c221e, -+ 0x87159287, 0xe9c920e9, 0xce8749ce, 0x55aaff55, 0x28507828, 0xdfa57adf, -+ 0x8c038f8c, 0xa159f8a1, 0x89098089, 0x0d1a170d, 0xbf65dabf, 0xe6d731e6, -+ 0x4284c642, 0x68d0b868, 0x4182c341, 0x9929b099, 0x2d5a772d, 0x0f1e110f, -+ 0xb07bcbb0, 0x54a8fc54, 0xbb6dd6bb, 0x162c3a16, - }; - - constexpr uint32_t te3[256] = { -- 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0xf2f20dff, 0x6b6bbdd6, -- 0x6f6fb1de, 0xc5c55491, 0x30305060, 0x01010302, 0x6767a9ce, 0x2b2b7d56, -- 0xfefe19e7, 0xd7d762b5, 0xababe64d, 0x76769aec, 0xcaca458f, 0x82829d1f, -- 0xc9c94089, 0x7d7d87fa, 0xfafa15ef, 0x5959ebb2, 0x4747c98e, 0xf0f00bfb, -- 0xadadec41, 0xd4d467b3, 0xa2a2fd5f, 0xafafea45, 0x9c9cbf23, 0xa4a4f753, -- 0x727296e4, 0xc0c05b9b, 0xb7b7c275, 0xfdfd1ce1, 0x9393ae3d, 0x26266a4c, -- 0x36365a6c, 0x3f3f417e, 0xf7f702f5, 0xcccc4f83, 0x34345c68, 0xa5a5f451, -- 0xe5e534d1, 0xf1f108f9, 0x717193e2, 0xd8d873ab, 0x31315362, 0x15153f2a, -- 0x04040c08, 0xc7c75295, 0x23236546, 0xc3c35e9d, 0x18182830, 0x9696a137, -- 0x05050f0a, 0x9a9ab52f, 0x0707090e, 0x12123624, 0x80809b1b, 0xe2e23ddf, -- 0xebeb26cd, 0x2727694e, 0xb2b2cd7f, 0x75759fea, 0x09091b12, 0x83839e1d, -- 0x2c2c7458, 0x1a1a2e34, 0x1b1b2d36, 0x6e6eb2dc, 0x5a5aeeb4, 0xa0a0fb5b, -- 0x5252f6a4, 0x3b3b4d76, 0xd6d661b7, 0xb3b3ce7d, 0x29297b52, 0xe3e33edd, -- 0x2f2f715e, 0x84849713, 0x5353f5a6, 0xd1d168b9, 0x00000000, 0xeded2cc1, -- 0x20206040, 0xfcfc1fe3, 0xb1b1c879, 0x5b5bedb6, 0x6a6abed4, 0xcbcb468d, -- 0xbebed967, 0x39394b72, 0x4a4ade94, 0x4c4cd498, 0x5858e8b0, 0xcfcf4a85, -- 0xd0d06bbb, 0xefef2ac5, 0xaaaae54f, 0xfbfb16ed, 0x4343c586, 0x4d4dd79a, -- 0x33335566, 0x85859411, 0x4545cf8a, 0xf9f910e9, 0x02020604, 0x7f7f81fe, -- 0x5050f0a0, 0x3c3c4478, 0x9f9fba25, 0xa8a8e34b, 0x5151f3a2, 0xa3a3fe5d, -- 0x4040c080, 0x8f8f8a05, 0x9292ad3f, 0x9d9dbc21, 0x38384870, 0xf5f504f1, -- 0xbcbcdf63, 0xb6b6c177, 0xdada75af, 0x21216342, 0x10103020, 0xffff1ae5, -- 0xf3f30efd, 0xd2d26dbf, 0xcdcd4c81, 0x0c0c1418, 0x13133526, 0xecec2fc3, -- 0x5f5fe1be, 0x9797a235, 0x4444cc88, 0x1717392e, 0xc4c45793, 0xa7a7f255, -- 0x7e7e82fc, 0x3d3d477a, 0x6464acc8, 0x5d5de7ba, 0x19192b32, 0x737395e6, -- 0x6060a0c0, 0x81819819, 0x4f4fd19e, 0xdcdc7fa3, 0x22226644, 0x2a2a7e54, -- 0x9090ab3b, 0x8888830b, 0x4646ca8c, 0xeeee29c7, 0xb8b8d36b, 0x14143c28, -- 0xdede79a7, 0x5e5ee2bc, 0x0b0b1d16, 0xdbdb76ad, 0xe0e03bdb, 0x32325664, -- 0x3a3a4e74, 0x0a0a1e14, 0x4949db92, 0x06060a0c, 0x24246c48, 0x5c5ce4b8, -- 0xc2c25d9f, 0xd3d36ebd, 0xacacef43, 0x6262a6c4, 0x9191a839, 0x9595a431, -- 0xe4e437d3, 0x79798bf2, 0xe7e732d5, 0xc8c8438b, 0x3737596e, 0x6d6db7da, -- 0x8d8d8c01, 0xd5d564b1, 0x4e4ed29c, 0xa9a9e049, 0x6c6cb4d8, 0x5656faac, -- 0xf4f407f3, 0xeaea25cf, 0x6565afca, 0x7a7a8ef4, 0xaeaee947, 0x08081810, -- 0xbabad56f, 0x787888f0, 0x25256f4a, 0x2e2e725c, 0x1c1c2438, 0xa6a6f157, -- 0xb4b4c773, 0xc6c65197, 0xe8e823cb, 0xdddd7ca1, 0x74749ce8, 0x1f1f213e, -- 0x4b4bdd96, 0xbdbddc61, 0x8b8b860d, 0x8a8a850f, 0x707090e0, 0x3e3e427c, -- 0xb5b5c471, 0x6666aacc, 0x4848d890, 0x03030506, 0xf6f601f7, 0x0e0e121c, -- 0x6161a3c2, 0x35355f6a, 0x5757f9ae, 0xb9b9d069, 0x86869117, 0xc1c15899, -- 0x1d1d273a, 0x9e9eb927, 0xe1e138d9, 0xf8f813eb, 0x9898b32b, 0x11113322, -- 0x6969bbd2, 0xd9d970a9, 0x8e8e8907, 0x9494a733, 0x9b9bb62d, 0x1e1e223c, -- 0x87879215, 0xe9e920c9, 0xcece4987, 0x5555ffaa, 0x28287850, 0xdfdf7aa5, -- 0x8c8c8f03, 0xa1a1f859, 0x89898009, 0x0d0d171a, 0xbfbfda65, 0xe6e631d7, -- 0x4242c684, 0x6868b8d0, 0x4141c382, 0x9999b029, 0x2d2d775a, 0x0f0f111e, -- 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c, -+ 0xc6a56363, 0xf8847c7c, 0xee997777, 0xf68d7b7b, 0xff0df2f2, 0xd6bd6b6b, -+ 0xdeb16f6f, 0x9154c5c5, 0x60503030, 0x02030101, 0xcea96767, 0x567d2b2b, -+ 0xe719fefe, 0xb562d7d7, 0x4de6abab, 0xec9a7676, 0x8f45caca, 0x1f9d8282, -+ 0x8940c9c9, 0xfa877d7d, 0xef15fafa, 0xb2eb5959, 0x8ec94747, 0xfb0bf0f0, -+ 0x41ecadad, 0xb367d4d4, 0x5ffda2a2, 0x45eaafaf, 0x23bf9c9c, 0x53f7a4a4, -+ 0xe4967272, 0x9b5bc0c0, 0x75c2b7b7, 0xe11cfdfd, 0x3dae9393, 0x4c6a2626, -+ 0x6c5a3636, 0x7e413f3f, 0xf502f7f7, 0x834fcccc, 0x685c3434, 0x51f4a5a5, -+ 0xd134e5e5, 0xf908f1f1, 0xe2937171, 0xab73d8d8, 0x62533131, 0x2a3f1515, -+ 0x080c0404, 0x9552c7c7, 0x46652323, 0x9d5ec3c3, 0x30281818, 0x37a19696, -+ 0x0a0f0505, 0x2fb59a9a, 0x0e090707, 0x24361212, 0x1b9b8080, 0xdf3de2e2, -+ 0xcd26ebeb, 0x4e692727, 0x7fcdb2b2, 0xea9f7575, 0x121b0909, 0x1d9e8383, -+ 0x58742c2c, 0x342e1a1a, 0x362d1b1b, 0xdcb26e6e, 0xb4ee5a5a, 0x5bfba0a0, -+ 0xa4f65252, 0x764d3b3b, 0xb761d6d6, 0x7dceb3b3, 0x527b2929, 0xdd3ee3e3, -+ 0x5e712f2f, 0x13978484, 0xa6f55353, 0xb968d1d1, 0x00000000, 0xc12ceded, -+ 0x40602020, 0xe31ffcfc, 0x79c8b1b1, 0xb6ed5b5b, 0xd4be6a6a, 0x8d46cbcb, -+ 0x67d9bebe, 0x724b3939, 0x94de4a4a, 0x98d44c4c, 0xb0e85858, 0x854acfcf, -+ 0xbb6bd0d0, 0xc52aefef, 0x4fe5aaaa, 0xed16fbfb, 0x86c54343, 0x9ad74d4d, -+ 0x66553333, 0x11948585, 0x8acf4545, 0xe910f9f9, 0x04060202, 0xfe817f7f, -+ 0xa0f05050, 0x78443c3c, 0x25ba9f9f, 0x4be3a8a8, 0xa2f35151, 0x5dfea3a3, -+ 0x80c04040, 0x058a8f8f, 0x3fad9292, 0x21bc9d9d, 0x70483838, 0xf104f5f5, -+ 0x63dfbcbc, 0x77c1b6b6, 0xaf75dada, 0x42632121, 0x20301010, 0xe51affff, -+ 0xfd0ef3f3, 0xbf6dd2d2, 0x814ccdcd, 0x18140c0c, 0x26351313, 0xc32fecec, -+ 0xbee15f5f, 0x35a29797, 0x88cc4444, 0x2e391717, 0x9357c4c4, 0x55f2a7a7, -+ 0xfc827e7e, 0x7a473d3d, 0xc8ac6464, 0xbae75d5d, 0x322b1919, 0xe6957373, -+ 0xc0a06060, 0x19988181, 0x9ed14f4f, 0xa37fdcdc, 0x44662222, 0x547e2a2a, -+ 0x3bab9090, 0x0b838888, 0x8cca4646, 0xc729eeee, 0x6bd3b8b8, 0x283c1414, -+ 0xa779dede, 0xbce25e5e, 0x161d0b0b, 0xad76dbdb, 0xdb3be0e0, 0x64563232, -+ 0x744e3a3a, 0x141e0a0a, 0x92db4949, 0x0c0a0606, 0x486c2424, 0xb8e45c5c, -+ 0x9f5dc2c2, 0xbd6ed3d3, 0x43efacac, 0xc4a66262, 0x39a89191, 0x31a49595, -+ 0xd337e4e4, 0xf28b7979, 0xd532e7e7, 0x8b43c8c8, 0x6e593737, 0xdab76d6d, -+ 0x018c8d8d, 0xb164d5d5, 0x9cd24e4e, 0x49e0a9a9, 0xd8b46c6c, 0xacfa5656, -+ 0xf307f4f4, 0xcf25eaea, 0xcaaf6565, 0xf48e7a7a, 0x47e9aeae, 0x10180808, -+ 0x6fd5baba, 0xf0887878, 0x4a6f2525, 0x5c722e2e, 0x38241c1c, 0x57f1a6a6, -+ 0x73c7b4b4, 0x9751c6c6, 0xcb23e8e8, 0xa17cdddd, 0xe89c7474, 0x3e211f1f, -+ 0x96dd4b4b, 0x61dcbdbd, 0x0d868b8b, 0x0f858a8a, 0xe0907070, 0x7c423e3e, -+ 0x71c4b5b5, 0xccaa6666, 0x90d84848, 0x06050303, 0xf701f6f6, 0x1c120e0e, -+ 0xc2a36161, 0x6a5f3535, 0xaef95757, 0x69d0b9b9, 0x17918686, 0x9958c1c1, -+ 0x3a271d1d, 0x27b99e9e, 0xd938e1e1, 0xeb13f8f8, 0x2bb39898, 0x22331111, -+ 0xd2bb6969, 0xa970d9d9, 0x07898e8e, 0x33a79494, 0x2db69b9b, 0x3c221e1e, -+ 0x15928787, 0xc920e9e9, 0x8749cece, 0xaaff5555, 0x50782828, 0xa57adfdf, -+ 0x038f8c8c, 0x59f8a1a1, 0x09808989, 0x1a170d0d, 0x65dabfbf, 0xd731e6e6, -+ 0x84c64242, 0xd0b86868, 0x82c34141, 0x29b09999, 0x5a772d2d, 0x1e110f0f, -+ 0x7bcbb0b0, 0xa8fc5454, 0x6dd6bbbb, 0x2c3a1616, - }; - - // Software implementation of the Vector128 class, using uint32_t -@@ -235,45 +237,13 @@ struct alignas(16) Vector128 { - inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE Vector128 - Vector128Load(const void* from) { - Vector128 result; -- const uint8_t* src = reinterpret_cast(from); -- result.s[0] = static_cast(src[0]) << 24 | -- static_cast(src[1]) << 16 | -- static_cast(src[2]) << 8 | -- static_cast(src[3]); -- result.s[1] = static_cast(src[4]) << 24 | -- static_cast(src[5]) << 16 | -- static_cast(src[6]) << 8 | -- static_cast(src[7]); -- result.s[2] = static_cast(src[8]) << 24 | -- static_cast(src[9]) << 16 | -- static_cast(src[10]) << 8 | -- static_cast(src[11]); -- result.s[3] = static_cast(src[12]) << 24 | -- static_cast(src[13]) << 16 | -- static_cast(src[14]) << 8 | -- static_cast(src[15]); -+ std::memcpy(result.s, from, sizeof(Vector128)); - return result; - } - - inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void Vector128Store( - const Vector128& v, void* to) { -- uint8_t* dst = reinterpret_cast(to); -- dst[0] = static_cast(v.s[0] >> 24); -- dst[1] = static_cast(v.s[0] >> 16); -- dst[2] = static_cast(v.s[0] >> 8); -- dst[3] = static_cast(v.s[0]); -- dst[4] = static_cast(v.s[1] >> 24); -- dst[5] = static_cast(v.s[1] >> 16); -- dst[6] = static_cast(v.s[1] >> 8); -- dst[7] = static_cast(v.s[1]); -- dst[8] = static_cast(v.s[2] >> 24); -- dst[9] = static_cast(v.s[2] >> 16); -- dst[10] = static_cast(v.s[2] >> 8); -- dst[11] = static_cast(v.s[2]); -- dst[12] = static_cast(v.s[3] >> 24); -- dst[13] = static_cast(v.s[3] >> 16); -- dst[14] = static_cast(v.s[3] >> 8); -- dst[15] = static_cast(v.s[3]); -+ std::memcpy(to, v.s, sizeof(Vector128)); - } - - // One round of AES. "round_key" is a public constant for breaking the -@@ -282,38 +252,33 @@ inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE Vector128 - AesRound(const Vector128& state, const Vector128& round_key) { - Vector128 result; - result.s[0] = round_key.s[0] ^ // -- te0[uint8_t(state.s[0] >> 24)] ^ // -- te1[uint8_t(state.s[1] >> 16)] ^ // -- te2[uint8_t(state.s[2] >> 8)] ^ // -- te3[uint8_t(state.s[3])]; -+ te0[uint8_t(state.s[0])] ^ // -+ te1[uint8_t(state.s[1] >> 8)] ^ // -+ te2[uint8_t(state.s[2] >> 16)] ^ // -+ te3[uint8_t(state.s[3] >> 24)]; - result.s[1] = round_key.s[1] ^ // -- te0[uint8_t(state.s[1] >> 24)] ^ // -- te1[uint8_t(state.s[2] >> 16)] ^ // -- te2[uint8_t(state.s[3] >> 8)] ^ // -- te3[uint8_t(state.s[0])]; -+ te0[uint8_t(state.s[1])] ^ // -+ te1[uint8_t(state.s[2] >> 8)] ^ // -+ te2[uint8_t(state.s[3] >> 16)] ^ // -+ te3[uint8_t(state.s[0] >> 24)]; - result.s[2] = round_key.s[2] ^ // -- te0[uint8_t(state.s[2] >> 24)] ^ // -- te1[uint8_t(state.s[3] >> 16)] ^ // -- te2[uint8_t(state.s[0] >> 8)] ^ // -- te3[uint8_t(state.s[1])]; -+ te0[uint8_t(state.s[2])] ^ // -+ te1[uint8_t(state.s[3] >> 8)] ^ // -+ te2[uint8_t(state.s[0] >> 16)] ^ // -+ te3[uint8_t(state.s[1] >> 24)]; - result.s[3] = round_key.s[3] ^ // -- te0[uint8_t(state.s[3] >> 24)] ^ // -- te1[uint8_t(state.s[0] >> 16)] ^ // -- te2[uint8_t(state.s[1] >> 8)] ^ // -- te3[uint8_t(state.s[2])]; -+ te0[uint8_t(state.s[3])] ^ // -+ te1[uint8_t(state.s[0] >> 8)] ^ // -+ te2[uint8_t(state.s[1] >> 16)] ^ // -+ te3[uint8_t(state.s[2] >> 24)]; - return result; - } - - using ::absl::random_internal::RandenTraits; - --// Randen operates on 128-bit vectors. --struct alignas(16) u64x2 { -- uint64_t data[2]; --}; -- - // The improved Feistel block shuffle function for 16 blocks. - inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void BlockShuffle( -- u64x2* state) { -+ absl::uint128* state) { - static_assert(RandenTraits::kFeistelBlocks == 16, - "Feistel block shuffle only works for 16 blocks."); - -@@ -323,31 +288,31 @@ inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void BlockShuffle( - // The fully unrolled loop without the memcpy improves the speed by about - // 30% over the equivalent: - #if 0 -- u64x2 source[RandenTraits::kFeistelBlocks]; -+ absl::uint128 source[RandenTraits::kFeistelBlocks]; - std::memcpy(source, state, sizeof(source)); - for (size_t i = 0; i < RandenTraits::kFeistelBlocks; i++) { -- const u64x2 v0 = source[shuffle[i]]; -+ const absl::uint128 v0 = source[shuffle[i]]; - state[i] = v0; - } - return; - #endif - -- const u64x2 v0 = state[shuffle[0]]; -- const u64x2 v1 = state[shuffle[1]]; -- const u64x2 v2 = state[shuffle[2]]; -- const u64x2 v3 = state[shuffle[3]]; -- const u64x2 v4 = state[shuffle[4]]; -- const u64x2 v5 = state[shuffle[5]]; -- const u64x2 v6 = state[shuffle[6]]; -- const u64x2 v7 = state[shuffle[7]]; -- const u64x2 w0 = state[shuffle[8]]; -- const u64x2 w1 = state[shuffle[9]]; -- const u64x2 w2 = state[shuffle[10]]; -- const u64x2 w3 = state[shuffle[11]]; -- const u64x2 w4 = state[shuffle[12]]; -- const u64x2 w5 = state[shuffle[13]]; -- const u64x2 w6 = state[shuffle[14]]; -- const u64x2 w7 = state[shuffle[15]]; -+ const absl::uint128 v0 = state[shuffle[0]]; -+ const absl::uint128 v1 = state[shuffle[1]]; -+ const absl::uint128 v2 = state[shuffle[2]]; -+ const absl::uint128 v3 = state[shuffle[3]]; -+ const absl::uint128 v4 = state[shuffle[4]]; -+ const absl::uint128 v5 = state[shuffle[5]]; -+ const absl::uint128 v6 = state[shuffle[6]]; -+ const absl::uint128 v7 = state[shuffle[7]]; -+ const absl::uint128 w0 = state[shuffle[8]]; -+ const absl::uint128 w1 = state[shuffle[9]]; -+ const absl::uint128 w2 = state[shuffle[10]]; -+ const absl::uint128 w3 = state[shuffle[11]]; -+ const absl::uint128 w4 = state[shuffle[12]]; -+ const absl::uint128 w5 = state[shuffle[13]]; -+ const absl::uint128 w6 = state[shuffle[14]]; -+ const absl::uint128 w7 = state[shuffle[15]]; - state[0] = v0; - state[1] = v1; - state[2] = v2; -@@ -371,9 +336,9 @@ inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void BlockShuffle( - // per 16 bytes (vs. 10 for AES-CTR). Computing eight round functions in - // parallel hides the 7-cycle AESNI latency on HSW. Note that the Feistel - // XORs are 'free' (included in the second AES instruction). --inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE const u64x2* FeistelRound( -- u64x2* ABSL_RANDOM_INTERNAL_RESTRICT state, -- const u64x2* ABSL_RANDOM_INTERNAL_RESTRICT keys) { -+inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE const absl::uint128* -+FeistelRound(absl::uint128* ABSL_RANDOM_INTERNAL_RESTRICT state, -+ const absl::uint128* ABSL_RANDOM_INTERNAL_RESTRICT keys) { - for (size_t branch = 0; branch < RandenTraits::kFeistelBlocks; branch += 4) { - const Vector128 s0 = Vector128Load(state + branch); - const Vector128 s1 = Vector128Load(state + branch + 1); -@@ -398,7 +363,8 @@ inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE const u64x2* FeistelRound( - // 2^64 queries if the round function is a PRF. This is similar to the b=8 case - // of Simpira v2, but more efficient than its generic construction for b=16. - inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void Permute( -- u64x2* state, const u64x2* ABSL_RANDOM_INTERNAL_RESTRICT keys) { -+ absl::uint128* state, -+ const absl::uint128* ABSL_RANDOM_INTERNAL_RESTRICT keys) { - for (size_t round = 0; round < RandenTraits::kFeistelRounds; ++round) { - keys = FeistelRound(state, keys); - BlockShuffle(state); -@@ -437,19 +403,18 @@ void RandenSlow::Absorb(const void* seed_void, void* state_void) { - } - - void RandenSlow::Generate(const void* keys_void, void* state_void) { -- static_assert(RandenTraits::kCapacityBytes == sizeof(u64x2), -+ static_assert(RandenTraits::kCapacityBytes == sizeof(absl::uint128), - "Capacity mismatch"); - -- auto* state = reinterpret_cast(state_void); -- const auto* keys = reinterpret_cast(keys_void); -+ auto* state = reinterpret_cast(state_void); -+ const auto* keys = reinterpret_cast(keys_void); - -- const u64x2 prev_inner = state[0]; -+ const absl::uint128 prev_inner = state[0]; - - Permute(state, keys); - - // Ensure backtracking resistance. -- state[0].data[0] ^= prev_inner.data[0]; -- state[0].data[1] ^= prev_inner.data[1]; -+ *state ^= prev_inner; - } - - } // namespace random_internal diff --git a/debian/patches/big-endian-random2.diff b/debian/patches/big-endian-random2.diff deleted file mode 100644 index ca4603a..0000000 --- a/debian/patches/big-endian-random2.diff +++ /dev/null @@ -1,97 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Make randen_slow endian-correct - -Pay attention to the platform endianness when pulling bytes out of each -AES block, and use platform-endian round keys. - -The author works at Google. Upstream applied this patch as Piper -revision 383878281 and exported it to GitHub; the Applied-Upstream URL -above points to the exported commit. ---- - absl/random/internal/BUILD.bazel | 1 + - absl/random/internal/randen_slow.cc | 30 +++++++++++++++++++++++++++++- - 2 files changed, 30 insertions(+), 1 deletion(-) - -diff --git a/absl/random/internal/BUILD.bazel b/absl/random/internal/BUILD.bazel -index b3fa053..64cd7d6 100644 ---- a/absl/random/internal/BUILD.bazel -+++ b/absl/random/internal/BUILD.bazel -@@ -296,6 +296,7 @@ cc_library( - ":platform", - "//absl/base:config", - "//absl/base:core_headers", -+ "//absl/base:endian", - "//absl/numeric:int128", - ], - ) -diff --git a/absl/random/internal/randen_slow.cc b/absl/random/internal/randen_slow.cc -index 56aeb03..d5c9347 100644 ---- a/absl/random/internal/randen_slow.cc -+++ b/absl/random/internal/randen_slow.cc -@@ -19,6 +19,7 @@ - #include - - #include "absl/base/attributes.h" -+#include "absl/base/internal/endian.h" - #include "absl/numeric/int128.h" - #include "absl/random/internal/platform.h" - #include "absl/random/internal/randen_traits.h" -@@ -40,7 +41,7 @@ namespace { - - // AES portions based on rijndael-alg-fst.c, - // https://fastcrypto.org/front/misc/rijndael-alg-fst.c, and modified for --// little-endianness. -+// platform-endianness. - // - // Implementation of - // http://www.csrc.nist.gov/publications/fips/fips197/fips-197.pdf -@@ -251,6 +252,7 @@ inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void Vector128Store( - inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE Vector128 - AesRound(const Vector128& state, const Vector128& round_key) { - Vector128 result; -+#ifdef ABSL_IS_LITTLE_ENDIAN - result.s[0] = round_key.s[0] ^ // - te0[uint8_t(state.s[0])] ^ // - te1[uint8_t(state.s[1] >> 8)] ^ // -@@ -271,6 +273,28 @@ AesRound(const Vector128& state, const Vector128& round_key) { - te1[uint8_t(state.s[0] >> 8)] ^ // - te2[uint8_t(state.s[1] >> 16)] ^ // - te3[uint8_t(state.s[2] >> 24)]; -+#else -+ result.s[0] = round_key.s[0] ^ // -+ te0[uint8_t(state.s[0])] ^ // -+ te1[uint8_t(state.s[3] >> 8)] ^ // -+ te2[uint8_t(state.s[2] >> 16)] ^ // -+ te3[uint8_t(state.s[1] >> 24)]; -+ result.s[1] = round_key.s[1] ^ // -+ te0[uint8_t(state.s[1])] ^ // -+ te1[uint8_t(state.s[0] >> 8)] ^ // -+ te2[uint8_t(state.s[3] >> 16)] ^ // -+ te3[uint8_t(state.s[2] >> 24)]; -+ result.s[2] = round_key.s[2] ^ // -+ te0[uint8_t(state.s[2])] ^ // -+ te1[uint8_t(state.s[1] >> 8)] ^ // -+ te2[uint8_t(state.s[0] >> 16)] ^ // -+ te3[uint8_t(state.s[3] >> 24)]; -+ result.s[3] = round_key.s[3] ^ // -+ te0[uint8_t(state.s[3])] ^ // -+ te1[uint8_t(state.s[2] >> 8)] ^ // -+ te2[uint8_t(state.s[1] >> 16)] ^ // -+ te3[uint8_t(state.s[0] >> 24)]; -+#endif - return result; - } - -@@ -380,7 +404,11 @@ namespace random_internal { - const void* RandenSlow::GetKeys() { - // Round keys for one AES per Feistel round and branch. - // The canonical implementation uses first digits of Pi. -+#ifdef ABSL_IS_LITTLE_ENDIAN - return kRandenRoundKeys; -+#else -+ return kRandenRoundKeysBE; -+#endif - } - - void RandenSlow::Absorb(const void* seed_void, void* state_void) { diff --git a/debian/patches/big-endian-random3.diff b/debian/patches/big-endian-random3.diff deleted file mode 100644 index e8848e2..0000000 --- a/debian/patches/big-endian-random3.diff +++ /dev/null @@ -1,86 +0,0 @@ -From: Laramie Leavitt -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Also use uint8_t golden values in randen_test.cc - -Also use uint8_t golden values in randen_test.cc - -This makes randen_test, randen_slow_test, and randen_hwaes_test essentially -identical, as is the intent. - -The author works at Google. Upstream applied this patch as Piper -revision 405484423 and exported it to GitHub; the Applied-Upstream URL -above points to the exported commit. ---- - absl/random/internal/randen_test.cc | 45 ++++++++++++++++++++----------------- - 1 file changed, 25 insertions(+), 20 deletions(-) - -diff --git a/absl/random/internal/randen_test.cc b/absl/random/internal/randen_test.cc -index c186fe0..92773b8 100644 ---- a/absl/random/internal/randen_test.cc -+++ b/absl/random/internal/randen_test.cc -@@ -23,9 +23,6 @@ namespace { - - using absl::random_internal::Randen; - --// Local state parameters. --constexpr size_t kStateSizeT = Randen::kStateBytes / sizeof(uint64_t); -- - TEST(RandenTest, CopyAndMove) { - static_assert(std::is_copy_constructible::value, - "Randen must be copy constructible"); -@@ -41,30 +38,38 @@ TEST(RandenTest, CopyAndMove) { - } - - TEST(RandenTest, Default) { -- constexpr uint64_t kGolden[] = { -- 0x6c6534090ee6d3ee, 0x044e2b9b9d5333c6, 0xc3c14f134e433977, -- 0xdda9f47cd90410ee, 0x887bf3087fd8ca10, 0xf0b780f545c72912, -- 0x15dbb1d37696599f, 0x30ec63baff3c6d59, 0xb29f73606f7f20a6, -- 0x02808a316f49a54c, 0x3b8feaf9d5c8e50e, 0x9cbf605e3fd9de8a, -- 0xc970ae1a78183bbb, 0xd8b2ffd356301ed5, 0xf4b327fe0fc73c37, -- 0xcdfd8d76eb8f9a19, 0xc3a506eb91420c9d, 0xd5af05dd3eff9556, -- 0x48db1bb78f83c4a1, 0x7023920e0d6bfe8c, 0x58d3575834956d42, -- 0xed1ef4c26b87b840, 0x8eef32a23e0b2df3, 0x497cabf3431154fc, -- 0x4e24370570029a8b, 0xd88b5749f090e5ea, 0xc651a582a970692f, -- 0x78fcec2cbb6342f5, 0x463cb745612f55db, 0x352ee4ad1816afe3, -- 0x026ff374c101da7e, 0x811ef0821c3de851, -+ constexpr uint8_t kGolden[] = { -+ 0xee, 0xd3, 0xe6, 0x0e, 0x09, 0x34, 0x65, 0x6c, 0xc6, 0x33, 0x53, 0x9d, -+ 0x9b, 0x2b, 0x4e, 0x04, 0x77, 0x39, 0x43, 0x4e, 0x13, 0x4f, 0xc1, 0xc3, -+ 0xee, 0x10, 0x04, 0xd9, 0x7c, 0xf4, 0xa9, 0xdd, 0x10, 0xca, 0xd8, 0x7f, -+ 0x08, 0xf3, 0x7b, 0x88, 0x12, 0x29, 0xc7, 0x45, 0xf5, 0x80, 0xb7, 0xf0, -+ 0x9f, 0x59, 0x96, 0x76, 0xd3, 0xb1, 0xdb, 0x15, 0x59, 0x6d, 0x3c, 0xff, -+ 0xba, 0x63, 0xec, 0x30, 0xa6, 0x20, 0x7f, 0x6f, 0x60, 0x73, 0x9f, 0xb2, -+ 0x4c, 0xa5, 0x49, 0x6f, 0x31, 0x8a, 0x80, 0x02, 0x0e, 0xe5, 0xc8, 0xd5, -+ 0xf9, 0xea, 0x8f, 0x3b, 0x8a, 0xde, 0xd9, 0x3f, 0x5e, 0x60, 0xbf, 0x9c, -+ 0xbb, 0x3b, 0x18, 0x78, 0x1a, 0xae, 0x70, 0xc9, 0xd5, 0x1e, 0x30, 0x56, -+ 0xd3, 0xff, 0xb2, 0xd8, 0x37, 0x3c, 0xc7, 0x0f, 0xfe, 0x27, 0xb3, 0xf4, -+ 0x19, 0x9a, 0x8f, 0xeb, 0x76, 0x8d, 0xfd, 0xcd, 0x9d, 0x0c, 0x42, 0x91, -+ 0xeb, 0x06, 0xa5, 0xc3, 0x56, 0x95, 0xff, 0x3e, 0xdd, 0x05, 0xaf, 0xd5, -+ 0xa1, 0xc4, 0x83, 0x8f, 0xb7, 0x1b, 0xdb, 0x48, 0x8c, 0xfe, 0x6b, 0x0d, -+ 0x0e, 0x92, 0x23, 0x70, 0x42, 0x6d, 0x95, 0x34, 0x58, 0x57, 0xd3, 0x58, -+ 0x40, 0xb8, 0x87, 0x6b, 0xc2, 0xf4, 0x1e, 0xed, 0xf3, 0x2d, 0x0b, 0x3e, -+ 0xa2, 0x32, 0xef, 0x8e, 0xfc, 0x54, 0x11, 0x43, 0xf3, 0xab, 0x7c, 0x49, -+ 0x8b, 0x9a, 0x02, 0x70, 0x05, 0x37, 0x24, 0x4e, 0xea, 0xe5, 0x90, 0xf0, -+ 0x49, 0x57, 0x8b, 0xd8, 0x2f, 0x69, 0x70, 0xa9, 0x82, 0xa5, 0x51, 0xc6, -+ 0xf5, 0x42, 0x63, 0xbb, 0x2c, 0xec, 0xfc, 0x78, 0xdb, 0x55, 0x2f, 0x61, -+ 0x45, 0xb7, 0x3c, 0x46, 0xe3, 0xaf, 0x16, 0x18, 0xad, 0xe4, 0x2e, 0x35, -+ 0x7e, 0xda, 0x01, 0xc1, 0x74, 0xf3, 0x6f, 0x02, 0x51, 0xe8, 0x3d, 0x1c, -+ 0x82, 0xf0, 0x1e, 0x81, - }; - -- alignas(16) uint64_t state[kStateSizeT]; -+ alignas(16) uint8_t state[Randen::kStateBytes]; - std::memset(state, 0, sizeof(state)); - - Randen r; - r.Generate(state); - -- auto id = std::begin(state); -- for (const auto& elem : kGolden) { -- EXPECT_EQ(elem, *id++); -- } -+ EXPECT_EQ(0, std::memcmp(state, kGolden, sizeof(state))); - } - - } // namespace diff --git a/debian/patches/big-endian-random4.diff b/debian/patches/big-endian-random4.diff deleted file mode 100644 index 51968a2..0000000 --- a/debian/patches/big-endian-random4.diff +++ /dev/null @@ -1,82 +0,0 @@ -From: Milad Fa <46688537+miladfarca@users.noreply.github.com> -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Fix Randen and PCG on Big Endian platforms (#1031) - ---- - absl/random/internal/explicit_seed_seq.h | 2 +- - absl/random/internal/randen_engine.h | 7 +++++++ - absl/random/internal/randen_slow.cc | 21 +++++++++++++++++++++ - 3 files changed, 29 insertions(+), 1 deletion(-) - -diff --git a/absl/random/internal/explicit_seed_seq.h b/absl/random/internal/explicit_seed_seq.h -index e3aa31a..25f7915 100644 ---- a/absl/random/internal/explicit_seed_seq.h -+++ b/absl/random/internal/explicit_seed_seq.h -@@ -74,7 +74,7 @@ class ExplicitSeedSeq { - template - void generate(OutIterator begin, OutIterator end) { - for (size_t index = 0; begin != end; begin++) { -- *begin = state_.empty() ? 0 : little_endian::FromHost32(state_[index++]); -+ *begin = state_.empty() ? 0 : state_[index++]; - if (index >= state_.size()) { - index = 0; - } -diff --git a/absl/random/internal/randen_engine.h b/absl/random/internal/randen_engine.h -index 92bb890..372c3ac 100644 ---- a/absl/random/internal/randen_engine.h -+++ b/absl/random/internal/randen_engine.h -@@ -121,6 +121,13 @@ class alignas(16) randen_engine { - const size_t requested_entropy = (entropy_size == 0) ? 8u : entropy_size; - std::fill(std::begin(buffer) + requested_entropy, std::end(buffer), 0); - seq.generate(std::begin(buffer), std::begin(buffer) + requested_entropy); -+#ifdef ABSL_IS_BIG_ENDIAN -+ // Randen expects the seed buffer to be in Little Endian; reverse it on -+ // Big Endian platforms. -+ for (sequence_result_type& e : buffer) { -+ e = absl::little_endian::FromHost(e); -+ } -+#endif - // The Randen paper suggests preferentially initializing even-numbered - // 128-bit vectors of the randen state (there are 16 such vectors). - // The seed data is merged into the state offset by 128-bits, which -diff --git a/absl/random/internal/randen_slow.cc b/absl/random/internal/randen_slow.cc -index d5c9347..9bfd2a4 100644 ---- a/absl/random/internal/randen_slow.cc -+++ b/absl/random/internal/randen_slow.cc -@@ -395,6 +395,23 @@ inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void Permute( - } - } - -+// Enables native loads in the round loop by pre-swapping. -+inline ABSL_RANDOM_INTERNAL_ATTRIBUTE_ALWAYS_INLINE void SwapEndian( -+ absl::uint128* state) { -+#ifdef ABSL_IS_BIG_ENDIAN -+ for (uint32_t block = 0; block < RandenTraits::kFeistelBlocks; ++block) { -+ uint64_t new_lo = absl::little_endian::ToHost64( -+ static_cast(state[block] >> 64)); -+ uint64_t new_hi = absl::little_endian::ToHost64( -+ static_cast((state[block] << 64) >> 64)); -+ state[block] = (static_cast(new_hi) << 64) | new_lo; -+ } -+#else -+ // Avoid warning about unused variable. -+ (void)state; -+#endif -+} -+ - } // namespace - - namespace absl { -@@ -439,8 +456,12 @@ void RandenSlow::Generate(const void* keys_void, void* state_void) { - - const absl::uint128 prev_inner = state[0]; - -+ SwapEndian(state); -+ - Permute(state, keys); - -+ SwapEndian(state); -+ - // Ensure backtracking resistance. - *state ^= prev_inner; - } diff --git a/debian/patches/configure.diff b/debian/patches/configure.diff deleted file mode 100644 index b573d56..0000000 --- a/debian/patches/configure.diff +++ /dev/null @@ -1,126 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:41 +0800 -Subject: Set package configuration options - -Configure Abseil for Debian. - - - Set the SONAME appropriately. - - - To minimize the possibility of future ABI breakage, treat absl::any, - absl::optional, absl::string_view, and absl::variant as their own types - (rather than aliases for the std:: versions), and compile everything in an - inline namespace. - - - Enable upstream's hardened build mode. - - - Disable Intel SSE2 on i386, since Debian supports some i386 processors - without that extension. Keep it enabled on amd64, since all amd64 processors - have it. - - - Disable Intel SSSE3 entirely, since no i386 processor supports it and Debian - supports amd64 processors without it. ---- - CMake/AbseilHelpers.cmake | 3 ++- - absl/base/options.h | 12 ++++++------ - absl/container/internal/have_sse.h | 10 +--------- - 3 files changed, 9 insertions(+), 16 deletions(-) - -diff --git a/CMake/AbseilHelpers.cmake b/CMake/AbseilHelpers.cmake -index 54fb8df..eb3eea2 100644 ---- a/CMake/AbseilHelpers.cmake -+++ b/CMake/AbseilHelpers.cmake -@@ -263,7 +263,8 @@ Cflags: -I\${includedir}${PC_CFLAGS}\n") - if(ABSL_ENABLE_INSTALL) - set_target_properties(${_NAME} PROPERTIES - OUTPUT_NAME "absl_${_NAME}" -- SOVERSION "2103.0.1" -+ SOVERSION 20210324 -+ VERSION "20210324.0.0" - ) - endif() - else() -diff --git a/absl/base/options.h b/absl/base/options.h -index eca879a..6fa836f 100644 ---- a/absl/base/options.h -+++ b/absl/base/options.h -@@ -100,7 +100,7 @@ - // User code should not inspect this macro. To check in the preprocessor if - // absl::any is a typedef of std::any, use the feature macro ABSL_USES_STD_ANY. - --#define ABSL_OPTION_USE_STD_ANY 2 -+#define ABSL_OPTION_USE_STD_ANY 0 - - - // ABSL_OPTION_USE_STD_OPTIONAL -@@ -127,7 +127,7 @@ - // absl::optional is a typedef of std::optional, use the feature macro - // ABSL_USES_STD_OPTIONAL. - --#define ABSL_OPTION_USE_STD_OPTIONAL 2 -+#define ABSL_OPTION_USE_STD_OPTIONAL 0 - - - // ABSL_OPTION_USE_STD_STRING_VIEW -@@ -154,7 +154,7 @@ - // absl::string_view is a typedef of std::string_view, use the feature macro - // ABSL_USES_STD_STRING_VIEW. - --#define ABSL_OPTION_USE_STD_STRING_VIEW 2 -+#define ABSL_OPTION_USE_STD_STRING_VIEW 0 - - // ABSL_OPTION_USE_STD_VARIANT - // -@@ -180,7 +180,7 @@ - // absl::variant is a typedef of std::variant, use the feature macro - // ABSL_USES_STD_VARIANT. - --#define ABSL_OPTION_USE_STD_VARIANT 2 -+#define ABSL_OPTION_USE_STD_VARIANT 0 - - - // ABSL_OPTION_USE_INLINE_NAMESPACE -@@ -206,7 +206,7 @@ - // allowed. - - #define ABSL_OPTION_USE_INLINE_NAMESPACE 1 --#define ABSL_OPTION_INLINE_NAMESPACE_NAME lts_20210324 -+#define ABSL_OPTION_INLINE_NAMESPACE_NAME debian2 - - // ABSL_OPTION_HARDENED - // -@@ -233,6 +233,6 @@ - // checks enabled by this option may abort the program in a different way and - // log additional information when `NDEBUG` is not defined. - --#define ABSL_OPTION_HARDENED 0 -+#define ABSL_OPTION_HARDENED 1 - - #endif // ABSL_BASE_OPTIONS_H_ -diff --git a/absl/container/internal/have_sse.h b/absl/container/internal/have_sse.h -index e75e1a1..4c9a0bc 100644 ---- a/absl/container/internal/have_sse.h -+++ b/absl/container/internal/have_sse.h -@@ -17,22 +17,14 @@ - #define ABSL_CONTAINER_INTERNAL_HAVE_SSE_H_ - - #ifndef ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 --#if defined(__SSE2__) || \ -- (defined(_MSC_VER) && \ -- (defined(_M_X64) || (defined(_M_IX86) && _M_IX86_FP >= 2))) -+#if defined(__x86_64__) || (defined(_MSC_VER) && defined(_M_X64)) - #define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 1 - #else - #define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 0 - #endif - #endif - --#ifndef ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 --#ifdef __SSSE3__ --#define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 1 --#else - #define ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 0 --#endif --#endif - - #if ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSSE3 && \ - !ABSL_INTERNAL_RAW_HASH_SET_HAVE_SSE2 diff --git a/debian/patches/cordrepring-typo.diff b/debian/patches/cordrepring-typo.diff deleted file mode 100644 index 89ca547..0000000 --- a/debian/patches/cordrepring-typo.diff +++ /dev/null @@ -1,24 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Fix typo in CordRepRing error message - -The author works at Google. Upstream applied this patch as Piper -revision 367481280 and exported it to GitHub; the Applied-Upstream URL -above points to the exported commit. ---- - absl/strings/internal/cord_rep_ring.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/absl/strings/internal/cord_rep_ring.cc b/absl/strings/internal/cord_rep_ring.cc -index 4d31d1d..39ac4e9 100644 ---- a/absl/strings/internal/cord_rep_ring.cc -+++ b/absl/strings/internal/cord_rep_ring.cc -@@ -301,7 +301,7 @@ bool CordRepRing::IsValid(std::ostream& output) const { - if (offset >= child->length || entry_length > child->length - offset) { - output << "entry[" << head << "] has offset " << offset - << " and entry length " << entry_length -- << " which are outside of the childs length of " << child->length; -+ << " which are outside of the child's length of " << child->length; - return false; - } - diff --git a/debian/patches/empty-flags-library.diff b/debian/patches/empty-flags-library.diff deleted file mode 100644 index eddbd83..0000000 --- a/debian/patches/empty-flags-library.diff +++ /dev/null @@ -1,24 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Eliminate libabsl_flags.so and libabsl_flags.a - -The libabsl_flags library only contains code when compiling with MSVC, which -Debian doesn't use. Skip compiling absl/flags/flag.cc, and make the Abseil flags -library header-only. ---- - absl/flags/CMakeLists.txt | 2 -- - 1 file changed, 2 deletions(-) - -diff --git a/absl/flags/CMakeLists.txt b/absl/flags/CMakeLists.txt -index caac69c..9c00d4e 100644 ---- a/absl/flags/CMakeLists.txt -+++ b/absl/flags/CMakeLists.txt -@@ -197,8 +197,6 @@ absl_cc_library( - absl_cc_library( - NAME - flags -- SRCS -- "flag.cc" - HDRS - "declare.h" - "flag.h" diff --git a/debian/patches/float-rounding.diff b/debian/patches/float-rounding.diff deleted file mode 100644 index 0cca346..0000000 --- a/debian/patches/float-rounding.diff +++ /dev/null @@ -1,53 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Round floats using round(x), not static_cast(x + 0.5) - -Adding 0.5 to an IEEE float may cause one bit of precision loss, which -is enough to change the result in certain cases. For example, - - static_cast(std::round(0.49999999999999994)) == 0 - static_cast(0.49999999999999994 + 0.5) == 1 - -The author works at Google. Upstream applied this patch as Piper -revision 369926519 and exported it to GitHub; the Applied-Upstream URL -above points to the exported commit. ---- - absl/time/duration_test.cc | 4 ++-- - absl/time/time.h | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/absl/time/duration_test.cc b/absl/time/duration_test.cc -index fb28fa9..a3617e7 100644 ---- a/absl/time/duration_test.cc -+++ b/absl/time/duration_test.cc -@@ -1320,7 +1320,7 @@ TEST(Duration, SmallConversions) { - - EXPECT_EQ(absl::ZeroDuration(), absl::Seconds(0)); - // TODO(bww): Is the next one OK? -- EXPECT_EQ(absl::ZeroDuration(), absl::Seconds(0.124999999e-9)); -+ EXPECT_EQ(absl::ZeroDuration(), absl::Seconds(std::nextafter(0.125e-9, 0))); - EXPECT_EQ(absl::Nanoseconds(1) / 4, absl::Seconds(0.125e-9)); - EXPECT_EQ(absl::Nanoseconds(1) / 4, absl::Seconds(0.250e-9)); - EXPECT_EQ(absl::Nanoseconds(1) / 2, absl::Seconds(0.375e-9)); -@@ -1330,7 +1330,7 @@ TEST(Duration, SmallConversions) { - EXPECT_EQ(absl::Nanoseconds(1), absl::Seconds(0.875e-9)); - EXPECT_EQ(absl::Nanoseconds(1), absl::Seconds(1.000e-9)); - -- EXPECT_EQ(absl::ZeroDuration(), absl::Seconds(-0.124999999e-9)); -+ EXPECT_EQ(absl::ZeroDuration(), absl::Seconds(std::nextafter(-0.125e-9, 0))); - EXPECT_EQ(-absl::Nanoseconds(1) / 4, absl::Seconds(-0.125e-9)); - EXPECT_EQ(-absl::Nanoseconds(1) / 4, absl::Seconds(-0.250e-9)); - EXPECT_EQ(-absl::Nanoseconds(1) / 2, absl::Seconds(-0.375e-9)); -diff --git a/absl/time/time.h b/absl/time/time.h -index 2df6858..48982df 100644 ---- a/absl/time/time.h -+++ b/absl/time/time.h -@@ -1352,7 +1352,7 @@ constexpr Duration MakeDuration(int64_t hi, int64_t lo) { - inline Duration MakePosDoubleDuration(double n) { - const int64_t int_secs = static_cast(n); - const uint32_t ticks = static_cast( -- (n - static_cast(int_secs)) * kTicksPerSecond + 0.5); -+ std::round((n - static_cast(int_secs)) * kTicksPerSecond)); - return ticks < kTicksPerSecond - ? MakeDuration(int_secs, ticks) - : MakeDuration(int_secs + 1, ticks - kTicksPerSecond); diff --git a/debian/patches/float-tests-disable-i386.diff b/debian/patches/float-tests-disable-i386.diff deleted file mode 100644 index 3fd2fe5..0000000 --- a/debian/patches/float-tests-disable-i386.diff +++ /dev/null @@ -1,160 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Skip floating-point edge-case tests when using an x87 -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -32-bit Intel CPUs use 80-bit floats for intermediate values, which can -change the results of floating point computations from what we normally -expect. Identify tests that are sensitive to the x87, and skip them when -we’re on 32-bit Intel. - -The author works at Google. Upstream applied this patch as Piper -revision 378722613 and exported it to GitHub; the Applied-Upstream URL -above points to the exported commit. ---- - absl/random/beta_distribution_test.cc | 9 +++++++++ - absl/random/distributions_test.cc | 10 ++++++++++ - absl/random/exponential_distribution_test.cc | 10 ++++++++++ - absl/random/uniform_real_distribution_test.cc | 9 +++++++++ - absl/time/duration_test.cc | 9 +++++++++ - 5 files changed, 47 insertions(+) - -diff --git a/absl/random/beta_distribution_test.cc b/absl/random/beta_distribution_test.cc -index 44cdfdd..d980c96 100644 ---- a/absl/random/beta_distribution_test.cc -+++ b/absl/random/beta_distribution_test.cc -@@ -15,6 +15,7 @@ - #include "absl/random/beta_distribution.h" - - #include -+#include - #include - #include - #include -@@ -558,6 +559,14 @@ TEST(BetaDistributionTest, StabilityTest) { - // dependencies of the distribution change, such as RandU64ToDouble, then this - // is also likely to change. - TEST(BetaDistributionTest, AlgorithmBounds) { -+#if (defined(__i386__) || defined(_M_IX86)) && FLT_EVAL_METHOD != 0 -+ // We're using an x87-compatible FPU, and intermediate operations are -+ // performed with 80-bit floats. This produces slightly different results from -+ // what we expect below. -+ GTEST_SKIP() -+ << "Skipping the test because we detected x87 floating-point semantics"; -+#endif -+ - { - absl::random_internal::sequence_urbg urbg( - {0x7fbe76c8b4395800ull, 0x8000000000000000ull}); -diff --git a/absl/random/distributions_test.cc b/absl/random/distributions_test.cc -index 5866a07..d3a5dd7 100644 ---- a/absl/random/distributions_test.cc -+++ b/absl/random/distributions_test.cc -@@ -14,6 +14,7 @@ - - #include "absl/random/distributions.h" - -+#include - #include - #include - #include -@@ -224,6 +225,15 @@ TEST_F(RandomDistributionsTest, UniformNoBounds) { - TEST_F(RandomDistributionsTest, UniformNonsenseRanges) { - // The ranges used in this test are undefined behavior. - // The results are arbitrary and subject to future changes. -+ -+#if (defined(__i386__) || defined(_M_IX86)) && FLT_EVAL_METHOD != 0 -+ // We're using an x87-compatible FPU, and intermediate operations can be -+ // performed with 80-bit floats. This produces slightly different results from -+ // what we expect below. -+ GTEST_SKIP() -+ << "Skipping the test because we detected x87 floating-point semantics"; -+#endif -+ - absl::InsecureBitGen gen; - - // -diff --git a/absl/random/exponential_distribution_test.cc b/absl/random/exponential_distribution_test.cc -index af11d61..81a5d17 100644 ---- a/absl/random/exponential_distribution_test.cc -+++ b/absl/random/exponential_distribution_test.cc -@@ -15,6 +15,7 @@ - #include "absl/random/exponential_distribution.h" - - #include -+#include - #include - #include - #include -@@ -384,6 +385,15 @@ TEST(ExponentialDistributionTest, StabilityTest) { - TEST(ExponentialDistributionTest, AlgorithmBounds) { - // Relies on absl::uniform_real_distribution, so some of these comments - // reference that. -+ -+#if (defined(__i386__) || defined(_M_IX86)) && FLT_EVAL_METHOD != 0 -+ // We're using an x87-compatible FPU, and intermediate operations can be -+ // performed with 80-bit floats. This produces slightly different results from -+ // what we expect below. -+ GTEST_SKIP() -+ << "Skipping the test because we detected x87 floating-point semantics"; -+#endif -+ - absl::exponential_distribution dist; - - { -diff --git a/absl/random/uniform_real_distribution_test.cc b/absl/random/uniform_real_distribution_test.cc -index 18bcd3b..035bd28 100644 ---- a/absl/random/uniform_real_distribution_test.cc -+++ b/absl/random/uniform_real_distribution_test.cc -@@ -14,6 +14,7 @@ - - #include "absl/random/uniform_real_distribution.h" - -+#include - #include - #include - #include -@@ -70,6 +71,14 @@ using RealTypes = - TYPED_TEST_SUITE(UniformRealDistributionTest, RealTypes); - - TYPED_TEST(UniformRealDistributionTest, ParamSerializeTest) { -+#if (defined(__i386__) || defined(_M_IX86)) && FLT_EVAL_METHOD != 0 -+ // We're using an x87-compatible FPU, and intermediate operations are -+ // performed with 80-bit floats. This produces slightly different results from -+ // what we expect below. -+ GTEST_SKIP() -+ << "Skipping the test because we detected x87 floating-point semantics"; -+#endif -+ - using param_type = - typename absl::uniform_real_distribution::param_type; - -diff --git a/absl/time/duration_test.cc b/absl/time/duration_test.cc -index a3617e7..b7209e1 100644 ---- a/absl/time/duration_test.cc -+++ b/absl/time/duration_test.cc -@@ -17,6 +17,7 @@ - #endif - - #include // NOLINT(build/c++11) -+#include - #include - #include - #include -@@ -1390,6 +1391,14 @@ void VerifyApproxSameAsMul(double time_as_seconds, int* const misses) { - // Seconds(point) returns a duration near point * Seconds(1.0). (They may - // not be exactly equal due to fused multiply/add contraction.) - TEST(Duration, ToDoubleSecondsCheckEdgeCases) { -+#if (defined(__i386__) || defined(_M_IX86)) && FLT_EVAL_METHOD != 0 -+ // We're using an x87-compatible FPU, and intermediate operations can be -+ // performed with 80-bit floats. This means the edge cases are different than -+ // what we expect here, so just skip this test. -+ GTEST_SKIP() -+ << "Skipping the test because we detected x87 floating-point semantics"; -+#endif -+ - constexpr uint32_t kTicksPerSecond = absl::time_internal::kTicksPerSecond; - constexpr auto duration_tick = absl::time_internal::MakeDuration(0, 1u); - int misses = 0; diff --git a/debian/patches/latomic.diff b/debian/patches/latomic.diff deleted file mode 100644 index 61a923a..0000000 --- a/debian/patches/latomic.diff +++ /dev/null @@ -1,25 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Use libatomic if necessary - -On some architectures, notably armel, Abseil needs symbols defined in -libatomic. Abseil does not currently have a well-developed system to -declare external library dependencies, so just have the linker determine -if anything needs libatomic and add the DT_NEEDED entry where necessary. ---- - absl/copts/AbseilConfigureCopts.cmake | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/absl/copts/AbseilConfigureCopts.cmake b/absl/copts/AbseilConfigureCopts.cmake -index 942ce90..231182a 100644 ---- a/absl/copts/AbseilConfigureCopts.cmake -+++ b/absl/copts/AbseilConfigureCopts.cmake -@@ -62,4 +62,8 @@ else() - set(ABSL_TEST_COPTS "") - endif() - -+list(APPEND ABSL_DEFAULT_LINKOPTS -+ "-Wl,--push-state,--as-needed" "-latomic" "-Wl,--pop-state" -+) -+ - set(ABSL_CXX_STANDARD "${CMAKE_CXX_STANDARD}") diff --git a/debian/patches/missing-rint.diff b/debian/patches/missing-rint.diff deleted file mode 100644 index 2c546bc..0000000 --- a/debian/patches/missing-rint.diff +++ /dev/null @@ -1,49 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Round a double multiplication before casting it to integer - -The code - - static_cast(x * y) - -(for double x and y) performs a double multiplication into a temporary -that, by standard, may have excess precision. The subsequent cast to int -discards the excess precision. However, the cast may examine the excess -precision during conversion, producing surprising results like - - static_cast(1.7 * 10) == 16 - -on certain systems. Correct this case by explicitly rounding 1.7 * 10 -before casting it. - -The author works at Google. Upstream applied this patch as Piper -revision 378922064 and exported it to GitHub; the Applied-Upstream URL -above points to the exported commit. ---- - absl/random/mocking_bit_gen_test.cc | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/absl/random/mocking_bit_gen_test.cc b/absl/random/mocking_bit_gen_test.cc -index f63b6e4..c713cea 100644 ---- a/absl/random/mocking_bit_gen_test.cc -+++ b/absl/random/mocking_bit_gen_test.cc -@@ -15,6 +15,7 @@ - // - #include "absl/random/mocking_bit_gen.h" - -+#include - #include - #include - -@@ -328,8 +329,9 @@ TEST(BasicMocking, WillByDefaultWithArgs) { - - absl::MockingBitGen gen; - ON_CALL(absl::MockPoisson(), Call(gen, _)) -- .WillByDefault( -- [](double lambda) { return static_cast(lambda * 10); }); -+ .WillByDefault([](double lambda) { -+ return static_cast(std::rint(lambda * 10)); -+ }); - EXPECT_EQ(absl::Poisson(gen, 1.7), 17); - EXPECT_EQ(absl::Poisson(gen, 0.03), 0); - } diff --git a/debian/patches/thumb-function-bounds.diff b/debian/patches/thumb-function-bounds.diff deleted file mode 100644 index ef735b2..0000000 --- a/debian/patches/thumb-function-bounds.diff +++ /dev/null @@ -1,106 +0,0 @@ -From: Benjamin Barenblat -Date: Tue, 24 May 2022 23:47:42 +0800 -Subject: Correct Thumb function bound computation in the symbolizer -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -On 32-bit ARM, all functions are aligned to multiples of two bytes, and -the lowest-order bit in a function’s address is ignored by the CPU when -computing branch targets. That bit is still present in instructions and -ELF symbol tables, though; it’s repurposed to indicate whether the -function contains ARM or Thumb code. If the symbolizer doesn’t ignore -that bit, it will believe Thumb functions have boundaries that are off -by one byte, so instruct the symbolizer to null out the lowest-order bit -after retrieving it from the symbol table. - -The author works at Google. Upstream applied this patch as Piper -revision 369254082 and exported it to GitHub; the Applied-Upstream URL -above points to the exported commit. ---- - absl/debugging/symbolize_elf.inc | 10 ++++++++++ - absl/debugging/symbolize_test.cc | 43 ++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 53 insertions(+) - -diff --git a/absl/debugging/symbolize_elf.inc b/absl/debugging/symbolize_elf.inc -index f4d5727..87dbd07 100644 ---- a/absl/debugging/symbolize_elf.inc -+++ b/absl/debugging/symbolize_elf.inc -@@ -701,6 +701,16 @@ static ABSL_ATTRIBUTE_NOINLINE FindSymbolResult FindSymbol( - const char *start_address = - ComputeOffset(original_start_address, relocation); - -+#ifdef __arm__ -+ // ARM functions are always aligned to multiples of two bytes; the -+ // lowest-order bit in start_address is ignored by the CPU and indicates -+ // whether the function contains ARM (0) or Thumb (1) code. We don't care -+ // about what encoding is being used; we just want the real start address -+ // of the function. -+ start_address = reinterpret_cast( -+ reinterpret_cast(start_address) & ~1); -+#endif -+ - if (deref_function_descriptor_pointer && - InSection(original_start_address, opd)) { - // The opd section is mapped into memory. Just dereference -diff --git a/absl/debugging/symbolize_test.cc b/absl/debugging/symbolize_test.cc -index a2dd495..35de02e 100644 ---- a/absl/debugging/symbolize_test.cc -+++ b/absl/debugging/symbolize_test.cc -@@ -477,6 +477,46 @@ void ABSL_ATTRIBUTE_NOINLINE TestWithReturnAddress() { - #endif - } - -+#if defined(__arm__) && ABSL_HAVE_ATTRIBUTE(target) -+// Test that we correctly identify bounds of Thumb functions on ARM. -+// -+// Thumb functions have the lowest-order bit set in their addresses in the ELF -+// symbol table. This requires some extra logic to properly compute function -+// bounds. To test this logic, nudge a Thumb function right up against an ARM -+// function and try to symbolize the ARM function. -+// -+// A naive implementation will simply use the Thumb function's entry point as -+// written in the symbol table and will therefore treat the Thumb function as -+// extending one byte further in the instruction stream than it actually does. -+// When asked to symbolize the start of the ARM function, it will identify an -+// overlap between the Thumb and ARM functions, and it will return the name of -+// the Thumb function. -+// -+// A correct implementation, on the other hand, will null out the lowest-order -+// bit in the Thumb function's entry point. It will correctly compute the end of -+// the Thumb function, it will find no overlap between the Thumb and ARM -+// functions, and it will return the name of the ARM function. -+ -+__attribute__((target("thumb"))) int ArmThumbOverlapThumb(int x) { -+ return x * x * x; -+} -+ -+__attribute__((target("arm"))) int ArmThumbOverlapArm(int x) { -+ return x * x * x; -+} -+ -+void ABSL_ATTRIBUTE_NOINLINE TestArmThumbOverlap() { -+#if defined(ABSL_HAVE_ATTRIBUTE_NOINLINE) -+ const char *symbol = TrySymbolize((void *)&ArmThumbOverlapArm); -+ ABSL_RAW_CHECK(symbol != nullptr, "TestArmThumbOverlap failed"); -+ ABSL_RAW_CHECK(strcmp("ArmThumbOverlapArm()", symbol) == 0, -+ "TestArmThumbOverlap failed"); -+ std::cout << "TestArmThumbOverlap passed" << std::endl; -+#endif -+} -+ -+#endif // defined(__arm__) && ABSL_HAVE_ATTRIBUTE(target) -+ - #elif defined(_WIN32) - #if !defined(ABSL_CONSUME_DLL) - -@@ -551,6 +591,9 @@ int main(int argc, char **argv) { - TestWithPCInsideInlineFunction(); - TestWithPCInsideNonInlineFunction(); - TestWithReturnAddress(); -+#if defined(__arm__) && ABSL_HAVE_ATTRIBUTE(target) -+ TestArmThumbOverlap(); -+#endif - #endif - - return RUN_ALL_TESTS(); diff --git a/debian/rules b/debian/rules index ef27843..0dbb698 100755 --- a/debian/rules +++ b/debian/rules @@ -19,9 +19,12 @@ export DEB_BUILD_MAINT_OPTIONS = hardening=+bindnow reproducible=+fixfilepath # Unit tests require more than 2 GB of RAM, so disable them on mipsel. # -# Unit tests are not yet passing on hppa or ppc64, so disable them there as -# well. -ifneq ($(filter $(DEB_HOST_ARCH),hppa mipsel ppc64),) +# Unit tests are not yet passing on ppc64, so disable them there as well. +# +# Disable unit tests unconditionally if nocheck is set. +ifneq ($(filter $(DEB_HOST_ARCH),mipsel ppc64),) +ABSL_RUN_TESTS=OFF +else ifneq ($(filter nocheck,$(DEB_BUILD_OPTIONS)),) ABSL_RUN_TESTS=OFF else ABSL_RUN_TESTS=ON @@ -35,11 +38,11 @@ override_dh_auto_clean: $(RM) -r $(CURDIR)/shared override_dh_auto_configure: - dh_auto_configure -Bstatic -- -DCMAKE_CXX_STANDARD=14 -DBUILD_SHARED_LIBS=OFF + dh_auto_configure -Bstatic -- -DCMAKE_CXX_STANDARD=17 -DBUILD_SHARED_LIBS=OFF ifeq ($(ABSL_RUN_TESTS),ON) - dh_auto_configure -Bshared -- -DCMAKE_CXX_STANDARD=14 -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=OFF + dh_auto_configure -Bshared -- -DCMAKE_CXX_STANDARD=17 -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON -DABSL_BUILD_TESTING=ON -DABSL_USE_GOOGLETEST_HEAD=OFF else - dh_auto_configure -Bshared -- -DCMAKE_CXX_STANDARD=14 -DBUILD_SHARED_LIBS=ON + dh_auto_configure -Bshared -- -DCMAKE_CXX_STANDARD=17 -DBUILD_SHARED_LIBS=ON endif override_dh_auto_build: diff --git a/debian/gbp.conf b/debian/tests/bug1011294 old mode 100644 new mode 100755 similarity index 70% rename from debian/gbp.conf rename to debian/tests/bug1011294 index 64a4230..302bcf7 --- a/debian/gbp.conf +++ b/debian/tests/bug1011294 @@ -1,4 +1,5 @@ -# Copyright 2020 Google LLC +#!/bin/sh +# Copyright 2022 Google LLC # # 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 @@ -12,5 +13,12 @@ # License for the specific language governing permissions and limitations under # the License. -[DEFAULT] -upstream-tag = 20210324.2 +set -eu + +readonly TMP="$(mktemp -d)" +trap "rm -rf \"$TMP\"" EXIT +cd "$TMP" + +echo 'int main() {}' >noop.cc + +g++ -o noop noop.cc $(pkg-config --cflags absl_base) $(pkg-config --libs absl_base) diff --git a/debian/tests/cmake b/debian/tests/cmake index 1eb04de..43eb340 100755 --- a/debian/tests/cmake +++ b/debian/tests/cmake @@ -32,7 +32,7 @@ EOF cat >CMakeLists.txt <= 3.5), g++, make + +Tests: bug1011294 +Depends: @, g++, pkg-config From f5db74ca749948178cceac4d668c91046f21c9f6 Mon Sep 17 00:00:00 2001 From: zhouganqing Date: Wed, 4 Jan 2023 10:11:56 +0800 Subject: [PATCH 7/7] cordz-info-statistics-test --- absl/strings/internal/cordz_info_statistics_test.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/absl/strings/internal/cordz_info_statistics_test.cc b/absl/strings/internal/cordz_info_statistics_test.cc index 476c38d..0d42793 100644 --- a/absl/strings/internal/cordz_info_statistics_test.cc +++ b/absl/strings/internal/cordz_info_statistics_test.cc @@ -466,6 +466,8 @@ TEST(CordzInfoStatisticsTest, Crc) { } TEST(CordzInfoStatisticsTest, ThreadSafety) { + GTEST_SKIP() << "Skipping test; see https://bugs.debian.org/1018804"; + Notification stop; static constexpr int kNumThreads = 8; int64_t sampled_node_count = 0;