fuzz coverage

Coverage Report

Created: 2026-04-24 13:48

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/root/bitcoin/src/util/strencodings.h
Line
Count
Source
1
// Copyright (c) 2009-2010 Satoshi Nakamoto
2
// Copyright (c) 2009-present The Bitcoin Core developers
3
// Distributed under the MIT software license, see the accompanying
4
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
5
6
/**
7
 * Utilities for converting data from/to strings.
8
 */
9
#ifndef BITCOIN_UTIL_STRENCODINGS_H
10
#define BITCOIN_UTIL_STRENCODINGS_H
11
12
#include <crypto/hex_base.h>
13
#include <span.h>
14
#include <util/string.h>
15
16
#include <algorithm>
17
#include <array>
18
#include <bit>
19
#include <charconv>
20
#include <cstddef>
21
#include <cstdint>
22
#include <limits>
23
#include <optional>
24
#include <string>
25
#include <string_view>
26
#include <system_error>
27
#include <type_traits>
28
#include <vector>
29
30
/** Used by SanitizeString() */
31
enum SafeChars
32
{
33
    SAFE_CHARS_DEFAULT, //!< The full set of allowed chars
34
    SAFE_CHARS_UA_COMMENT, //!< BIP-0014 subset
35
    SAFE_CHARS_FILENAME, //!< Chars allowed in filenames
36
    SAFE_CHARS_URI, //!< Chars allowed in URIs (RFC 3986)
37
};
38
39
/**
40
 * Used by ParseByteUnits()
41
 * Lowercase base 1000
42
 * Uppercase base 1024
43
*/
44
enum class ByteUnit : uint64_t {
45
    NOOP = 1ULL,
46
    k = 1000ULL,
47
    K = 1024ULL,
48
    m = 1'000'000ULL,
49
    M = 1ULL << 20,
50
    g = 1'000'000'000ULL,
51
    G = 1ULL << 30,
52
    t = 1'000'000'000'000ULL,
53
    T = 1ULL << 40,
54
};
55
56
/**
57
* Remove unsafe chars. Safe chars chosen to allow simple messages/URLs/email
58
* addresses, but avoid anything even possibly remotely dangerous like & or >
59
* @param[in] str    The string to sanitize
60
* @param[in] rule   The set of safe chars to choose (default: least restrictive)
61
* @return           A new string without unsafe chars
62
*/
63
std::string SanitizeString(std::string_view str, int rule = SAFE_CHARS_DEFAULT);
64
/** Parse the hex string into bytes (uint8_t or std::byte). Ignores whitespace. Returns nullopt on invalid input. */
65
template <typename Byte = std::byte>
66
std::optional<std::vector<Byte>> TryParseHex(std::string_view str);
67
/** Like TryParseHex, but returns an empty vector on invalid input. */
68
template <typename Byte = uint8_t>
69
std::vector<Byte> ParseHex(std::string_view hex_str)
70
0
{
71
0
    return TryParseHex<Byte>(hex_str).value_or(std::vector<Byte>{});
72
0
}
Unexecuted instantiation: std::vector<unsigned char, std::allocator<unsigned char>> ParseHex<unsigned char>(std::basic_string_view<char, std::char_traits<char>>)
Unexecuted instantiation: std::vector<std::byte, std::allocator<std::byte>> ParseHex<std::byte>(std::basic_string_view<char, std::char_traits<char>>)
73
/* Returns true if each character in str is a hex character, and has an even
74
 * number of hex digits.*/
75
bool IsHex(std::string_view str);
76
std::optional<std::vector<unsigned char>> DecodeBase64(std::string_view str);
77
std::string EncodeBase64(std::span<const unsigned char> input);
78
0
inline std::string EncodeBase64(std::span<const std::byte> input) { return EncodeBase64(MakeUCharSpan(input)); }
79
0
inline std::string EncodeBase64(std::string_view str) { return EncodeBase64(MakeUCharSpan(str)); }
80
std::optional<std::vector<unsigned char>> DecodeBase32(std::string_view str);
81
82
/**
83
 * Base32 encode.
84
 * If `pad` is true, then the output will be padded with '=' so that its length
85
 * is a multiple of 8.
86
 */
87
std::string EncodeBase32(std::span<const unsigned char> input, bool pad = true);
88
89
/**
90
 * Base32 encode.
91
 * If `pad` is true, then the output will be padded with '=' so that its length
92
 * is a multiple of 8.
93
 */
94
std::string EncodeBase32(std::string_view str, bool pad = true);
95
96
/**
97
 * Splits socket address string into host string and port value.
98
 * Validates port value.
99
 *
100
 * @param[in] in        The socket address string to split.
101
 * @param[out] portOut  Port-portion of the input, if found and parsable.
102
 * @param[out] hostOut  Host-portion of the input, if found.
103
 * @return              true if port-portion is absent or within its allowed range, otherwise false
104
 */
105
bool SplitHostPort(std::string_view in, uint16_t& portOut, std::string& hostOut);
106
107
// LocaleIndependentAtoi is provided for backwards compatibility reasons.
108
//
109
// New code should use ToIntegral.
110
//
111
// The goal of LocaleIndependentAtoi is to replicate the defined behaviour of
112
// std::atoi as it behaves under the "C" locale, and remove some undefined
113
// behavior. If the parsed value is bigger than the integer type's maximum
114
// value, or smaller than the integer type's minimum value, std::atoi has
115
// undefined behavior, while this function returns the maximum or minimum
116
// values, respectively.
117
template <typename T>
118
T LocaleIndependentAtoi(std::string_view str)
119
0
{
120
0
    static_assert(std::is_integral_v<T>);
121
0
    T result;
122
    // Emulate atoi(...) handling of white space and leading +/-.
123
0
    std::string_view s = util::TrimStringView(str);
124
0
    if (!s.empty() && s[0] == '+') {
125
0
        if (s.length() >= 2 && s[1] == '-') {
126
0
            return 0;
127
0
        }
128
0
        s = s.substr(1);
129
0
    }
130
0
    auto [_, error_condition] = std::from_chars(s.data(), s.data() + s.size(), result);
131
0
    if (error_condition == std::errc::result_out_of_range) {
132
0
        if (s.length() >= 1 && s[0] == '-') {
133
            // Saturate underflow, per strtoll's behavior.
134
0
            return std::numeric_limits<T>::min();
135
0
        } else {
136
            // Saturate overflow, per strtoll's behavior.
137
0
            return std::numeric_limits<T>::max();
138
0
        }
139
0
    } else if (error_condition != std::errc{}) {
140
0
        return 0;
141
0
    }
142
0
    return result;
143
0
}
Unexecuted instantiation: int LocaleIndependentAtoi<int>(std::basic_string_view<char, std::char_traits<char>>)
Unexecuted instantiation: long LocaleIndependentAtoi<long>(std::basic_string_view<char, std::char_traits<char>>)
Unexecuted instantiation: signed char LocaleIndependentAtoi<signed char>(std::basic_string_view<char, std::char_traits<char>>)
Unexecuted instantiation: unsigned char LocaleIndependentAtoi<unsigned char>(std::basic_string_view<char, std::char_traits<char>>)
Unexecuted instantiation: short LocaleIndependentAtoi<short>(std::basic_string_view<char, std::char_traits<char>>)
Unexecuted instantiation: unsigned short LocaleIndependentAtoi<unsigned short>(std::basic_string_view<char, std::char_traits<char>>)
Unexecuted instantiation: unsigned int LocaleIndependentAtoi<unsigned int>(std::basic_string_view<char, std::char_traits<char>>)
Unexecuted instantiation: unsigned long LocaleIndependentAtoi<unsigned long>(std::basic_string_view<char, std::char_traits<char>>)
144
145
/**
146
 * Tests if the given character is a decimal digit.
147
 * @param[in] c     character to test
148
 * @return          true if the argument is a decimal digit; otherwise false.
149
 */
150
constexpr bool IsDigit(char c)
151
8.06M
{
152
8.06M
    return c >= '0' && 
c <= '9'7.43M
;
153
8.06M
}
154
155
/**
156
 * Tests if the given character is a whitespace character. The whitespace characters
157
 * are: space, form-feed ('\f'), newline ('\n'), carriage return ('\r'), horizontal
158
 * tab ('\t'), and vertical tab ('\v').
159
 *
160
 * This function is locale independent. Under the C locale this function gives the
161
 * same result as std::isspace.
162
 *
163
 * @param[in] c     character to test
164
 * @return          true if the argument is a whitespace character; otherwise false
165
 */
166
0
constexpr inline bool IsSpace(char c) noexcept {
167
0
    return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v';
168
0
}
169
170
/**
171
 * Convert string to integral type T. Leading whitespace, a leading +, or any
172
 * trailing character fail the parsing. The required format expressed as regex
173
 * is `-?[0-9]+` by default (or `-?[0-9a-fA-F]+` if base = 16).
174
 * The minus sign is only permitted for signed integer types.
175
 *
176
 * @returns std::nullopt if the entire string could not be parsed, or if the
177
 *   parsed value is not in the range representable by the type T.
178
 */
179
template <typename T>
180
std::optional<T> ToIntegral(std::string_view str, size_t base = 10)
181
12
{
182
12
    static_assert(std::is_integral_v<T>);
183
12
    T result;
184
12
    const auto [first_nonmatching, error_condition] = std::from_chars(str.data(), str.data() + str.size(), result, base);
185
12
    if (first_nonmatching != str.data() + str.size() || error_condition != std::errc{}) {
186
0
        return std::nullopt;
187
0
    }
188
12
    return result;
189
12
}
Unexecuted instantiation: std::optional<long> ToIntegral<long>(std::basic_string_view<char, std::char_traits<char>>, unsigned long)
Unexecuted instantiation: std::optional<signed char> ToIntegral<signed char>(std::basic_string_view<char, std::char_traits<char>>, unsigned long)
std::optional<unsigned char> ToIntegral<unsigned char>(std::basic_string_view<char, std::char_traits<char>>, unsigned long)
Line
Count
Source
181
10
{
182
10
    static_assert(std::is_integral_v<T>);
183
10
    T result;
184
10
    const auto [first_nonmatching, error_condition] = std::from_chars(str.data(), str.data() + str.size(), result, base);
185
10
    if (first_nonmatching != str.data() + str.size() || error_condition != std::errc{}) {
186
0
        return std::nullopt;
187
0
    }
188
10
    return result;
189
10
}
Unexecuted instantiation: std::optional<short> ToIntegral<short>(std::basic_string_view<char, std::char_traits<char>>, unsigned long)
std::optional<unsigned short> ToIntegral<unsigned short>(std::basic_string_view<char, std::char_traits<char>>, unsigned long)
Line
Count
Source
181
2
{
182
2
    static_assert(std::is_integral_v<T>);
183
2
    T result;
184
2
    const auto [first_nonmatching, error_condition] = std::from_chars(str.data(), str.data() + str.size(), result, base);
185
2
    if (first_nonmatching != str.data() + str.size() || error_condition != std::errc{}) {
186
0
        return std::nullopt;
187
0
    }
188
2
    return result;
189
2
}
Unexecuted instantiation: std::optional<int> ToIntegral<int>(std::basic_string_view<char, std::char_traits<char>>, unsigned long)
Unexecuted instantiation: std::optional<unsigned int> ToIntegral<unsigned int>(std::basic_string_view<char, std::char_traits<char>>, unsigned long)
Unexecuted instantiation: std::optional<unsigned long> ToIntegral<unsigned long>(std::basic_string_view<char, std::char_traits<char>>, unsigned long)
190
191
/**
192
 * Format a paragraph of text to a fixed width, adding spaces for
193
 * indentation to any added line.
194
 */
195
std::string FormatParagraph(std::string_view in, size_t width = 79, size_t indent = 0);
196
197
/**
198
 * Timing-attack-resistant comparison.
199
 * Takes time proportional to length
200
 * of first argument.
201
 */
202
template <typename T>
203
bool TimingResistantEqual(const T& a, const T& b)
204
0
{
205
0
    if (b.size() == 0) return a.size() == 0;
206
0
    size_t accumulator = a.size() ^ b.size();
207
0
    for (size_t i = 0; i < a.size(); i++)
208
0
        accumulator |= size_t(a[i] ^ b[i%b.size()]);
209
0
    return accumulator == 0;
210
0
}
Unexecuted instantiation: bool TimingResistantEqual<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Unexecuted instantiation: bool TimingResistantEqual<std::basic_string_view<char, std::char_traits<char>>>(std::basic_string_view<char, std::char_traits<char>> const&, std::basic_string_view<char, std::char_traits<char>> const&)
211
212
/** Parse number as fixed point according to JSON number syntax.
213
 * @returns true on success, false on error.
214
 * @note The result must be in the range (-10^18,10^18), otherwise an overflow error will trigger.
215
 */
216
[[nodiscard]] bool ParseFixedPoint(std::string_view, int decimals, int64_t *amount_out);
217
218
namespace {
219
/** Helper class for the default infn argument to ConvertBits (just returns the input). */
220
struct IntIdentity
221
{
222
89.5k
    [[maybe_unused]] int operator()(int x) const { return x; }
Unexecuted instantiation: addition_overflow.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: addrman.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: asmap.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: asmap_direct.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: autofile.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: banman.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: base_encode_decode.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: bech32.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: bip324.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: bitdeque.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: bitset.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: block.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: block_header.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: block_index.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: block_index_tree.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: blockfilter.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: bloom_filter.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: buffered_file.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: chain.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: checkqueue.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: cluster_linearize.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: cmpctblock.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: coins_view.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: coinscache_sim.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: connman.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: crypto.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: crypto_aes256.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: crypto_aes256cbc.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: crypto_chacha20.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: crypto_chacha20poly1305.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: crypto_common.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: crypto_diff_fuzz_chacha20.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: crypto_hkdf_hmac_sha256_l32.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: crypto_poly1305.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: cuckoocache.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: decode_tx.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: descriptor_parse.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: deserialize.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: difference_formatter.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: eval_script.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: feefrac.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: fee_rate.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: feeratediagram.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: fees.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: flatfile.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: float.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: golomb_rice.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: headerssync.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: hex.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: http_request.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: i2p.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: integer.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: key.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: key_io.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: kitchen_sink.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: load_external_block_file.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: locale.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: merkle.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: merkleblock.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: message.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: miniscript.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: minisketch.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: mini_miner.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: muhash.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: multiplication_overflow.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: net.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: net_permissions.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: netaddress.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: netbase_dns_lookup.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: node_eviction.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: p2p_handshake.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: p2p_headers_presync.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: p2p_transport_serialization.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: pcp.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: package_eval.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: parse_hd_keypath.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: parse_numbers.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: parse_script.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: parse_univalue.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: partially_downloaded_block.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: policy_estimator.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: policy_estimator_io.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: poolresource.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: pow.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: prevector.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: primitives_transaction.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: process_message.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: process_messages.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: protocol.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: psbt.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: random.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: rbf.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: rolling_bloom_filter.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: rpc.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: script.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: script_assets_test_minimizer.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: script_descriptor_cache.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: script_flags.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: script_format.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: script_interpreter.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: script_ops.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: script_sigcache.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: script_sign.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: scriptnum_ops.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: secp256k1_ec_seckey_import_export_der.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: secp256k1_ecdsa_signature_parse_der_lax.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: signature_checker.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: signet.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: socks5.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: span.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: string.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: strprintf.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: system.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: timeoffsets.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: torcontrol.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: transaction.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txdownloadman.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: tx_in.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: tx_out.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: tx_pool.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txgraph.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txorphan.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txrequest.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: utxo_snapshot.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: utxo_total_supply.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: validation_load_mempool.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: vecdeque.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: versionbits.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: coincontrol.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: coinselection.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: crypter.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: scriptpubkeyman.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: spend.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: wallet_bdb_parser.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: descriptor.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: mempool.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: threadinterrupt.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: fuzz.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: util.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: check_globals.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: addresstype.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: base58.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: chainparams.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: coins.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: args.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: bloom.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: messages.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: signmessage.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: compressor.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: core_io.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: deploymentinfo.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: musig.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: netbase.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: outputtype.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: policy.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: request.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: sign.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: signingprovider.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: solver.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: bip32.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: bytevectorhash.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: hasher.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: moneystr.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
strencodings.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Line
Count
Source
222
89.5k
    [[maybe_unused]] int operator()(int x) const { return x; }
Unexecuted instantiation: time.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: streams.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: dump.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: migrate.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: wallet.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: walletdb.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: walletutil.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: db.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: external_signer_scriptpubkeyman.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: interfaces.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: load.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: receive.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: sqlite.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: feebumper.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: addresses.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: backup.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: encrypt.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: transactions.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: mining.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: setup_common.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: transaction_utils.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txmempool.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: validation.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: addrdb.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: blockencodings.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: tx_verify.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: dbwrapper.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: httpserver.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: init.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: checks.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: coinstats.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: context.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: mapport.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: net_processing.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: netgroup.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: blockmanager_args.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: blockstorage.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: caches.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: chainstate.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: chainstatemanager_args.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: coins_view_args.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: database_args.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: eviction.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: kernel_notifications.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: mempool_args.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: mempool_persist.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: mempool_persist_args.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: miner.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: peerman_args.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txdownloadman_impl.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txorphanage.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txreconciliation.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: block_policy_estimator.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: packages.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: settings.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: private_broadcast.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: rest.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: blockchain.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: node.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: output_script.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: rawtransaction.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: server.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: server_util.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txoutproof.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: sigcache.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txdb.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: validationinterface.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: httprpc.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: base.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: blockfilterindex.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: coinstatsindex.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txindex.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: txospenderindex.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: disconnected_transactions.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: coin.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: ephemeral_policy.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: truc_policy.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: netif.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: external_signer.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: net_types.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: rawtransaction_util.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: arith_uint256.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: tx_check.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: hash.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: pubkey.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: interpreter.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: uint256.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
Unexecuted instantiation: siphash.cpp:(anonymous namespace)::IntIdentity::operator()(int) const
223
};
224
225
} // namespace
226
227
/** Convert from one power-of-2 number base to another. */
228
template<int frombits, int tobits, bool pad, typename O, typename It, typename I = IntIdentity>
229
4.75k
bool ConvertBits(O outfn, It it, It end, I infn = {}) {
230
4.75k
    size_t acc = 0;
231
4.75k
    size_t bits = 0;
232
4.75k
    constexpr size_t maxv = (1 << tobits) - 1;
233
4.75k
    constexpr size_t max_acc = (1 << (frombits + tobits - 1)) - 1;
234
94.3k
    while (it != end) {
235
89.5k
        int v = infn(*it);
236
89.5k
        if (v < 0) 
return false0
;
237
89.5k
        acc = ((acc << frombits) | v) & max_acc;
238
89.5k
        bits += frombits;
239
232k
        while (bits >= tobits) {
240
143k
            bits -= tobits;
241
143k
            outfn((acc >> bits) & maxv);
242
143k
        }
243
89.5k
        ++it;
244
89.5k
    }
245
4.75k
    if (pad) {
246
4.75k
        if (bits) 
outfn((acc << (tobits - bits)) & maxv)875
;
247
4.75k
    } else 
if (0
bits >= frombits0
||
((acc << (tobits - bits)) & maxv)0
) {
248
0
        return false;
249
0
    }
250
4.75k
    return true;
251
4.75k
}
Unexecuted instantiation: bech32.cpp:bool ConvertBits<8, 5, true, bech32_roundtrip_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_0, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char>>>, (anonymous namespace)::IntIdentity>(bech32_roundtrip_fuzz_target(std::span<unsigned char const, 18446744073709551615ul>)::$_0, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char>>>, __gnu_cxx::__normal_iterator<unsigned char*, std::vector<unsigned char, std::allocator<unsigned char>>>, (anonymous namespace)::IntIdentity)
Unexecuted instantiation: key_io.cpp:bool ConvertBits<8, 5, true, (anonymous namespace)::DestinationEncoder::operator()[abi:cxx11](WitnessV0ScriptHash const&) const::'lambda'(unsigned char), unsigned char const*, (anonymous namespace)::IntIdentity>((anonymous namespace)::DestinationEncoder::operator()[abi:cxx11](WitnessV0ScriptHash const&) const::'lambda'(unsigned char), unsigned char const*, unsigned char const*, (anonymous namespace)::IntIdentity)
Unexecuted instantiation: key_io.cpp:bool ConvertBits<8, 5, true, (anonymous namespace)::DestinationEncoder::operator()[abi:cxx11](WitnessV0KeyHash const&) const::'lambda'(unsigned char), unsigned char const*, (anonymous namespace)::IntIdentity>((anonymous namespace)::DestinationEncoder::operator()[abi:cxx11](WitnessV0KeyHash const&) const::'lambda'(unsigned char), unsigned char const*, unsigned char const*, (anonymous namespace)::IntIdentity)
Unexecuted instantiation: key_io.cpp:bool ConvertBits<8, 5, true, (anonymous namespace)::DestinationEncoder::operator()[abi:cxx11](WitnessV1Taproot const&) const::'lambda'(unsigned char), unsigned char const*, (anonymous namespace)::IntIdentity>((anonymous namespace)::DestinationEncoder::operator()[abi:cxx11](WitnessV1Taproot const&) const::'lambda'(unsigned char), unsigned char const*, unsigned char const*, (anonymous namespace)::IntIdentity)
Unexecuted instantiation: key_io.cpp:bool ConvertBits<8, 5, true, (anonymous namespace)::DestinationEncoder::operator()[abi:cxx11](WitnessUnknown const&) const::'lambda'(unsigned char), __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char>>>, (anonymous namespace)::IntIdentity>((anonymous namespace)::DestinationEncoder::operator()[abi:cxx11](WitnessUnknown const&) const::'lambda'(unsigned char), __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char>>>, __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char>>>, (anonymous namespace)::IntIdentity)
Unexecuted instantiation: key_io.cpp:bool ConvertBits<5, 8, false, (anonymous namespace)::DecodeDestination(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, CChainParams const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::vector<int, std::allocator<int>>*)::$_0, __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char>>>, (anonymous namespace)::IntIdentity>((anonymous namespace)::DecodeDestination(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, CChainParams const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&, std::vector<int, std::allocator<int>>*)::$_0, __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char>>>, __gnu_cxx::__normal_iterator<unsigned char const*, std::vector<unsigned char, std::allocator<unsigned char>>>, (anonymous namespace)::IntIdentity)
Unexecuted instantiation: strencodings.cpp:bool ConvertBits<8, 6, true, EncodeBase64[abi:cxx11](std::span<unsigned char const, 18446744073709551615ul>)::$_0, __gnu_cxx::__normal_iterator<unsigned char const*, std::span<unsigned char const, 18446744073709551615ul>>, (anonymous namespace)::IntIdentity>(EncodeBase64[abi:cxx11](std::span<unsigned char const, 18446744073709551615ul>)::$_0, __gnu_cxx::__normal_iterator<unsigned char const*, std::span<unsigned char const, 18446744073709551615ul>>, __gnu_cxx::__normal_iterator<unsigned char const*, std::span<unsigned char const, 18446744073709551615ul>>, (anonymous namespace)::IntIdentity)
Unexecuted instantiation: strencodings.cpp:bool ConvertBits<6, 8, false, DecodeBase64(std::basic_string_view<char, std::char_traits<char>>)::$_0, char const*, DecodeBase64(std::basic_string_view<char, std::char_traits<char>>)::$_1>(DecodeBase64(std::basic_string_view<char, std::char_traits<char>>)::$_0, char const*, char const*, DecodeBase64(std::basic_string_view<char, std::char_traits<char>>)::$_1)
strencodings.cpp:bool ConvertBits<8, 5, true, EncodeBase32[abi:cxx11](std::span<unsigned char const, 18446744073709551615ul>, bool)::$_0, __gnu_cxx::__normal_iterator<unsigned char const*, std::span<unsigned char const, 18446744073709551615ul>>, (anonymous namespace)::IntIdentity>(EncodeBase32[abi:cxx11](std::span<unsigned char const, 18446744073709551615ul>, bool)::$_0, __gnu_cxx::__normal_iterator<unsigned char const*, std::span<unsigned char const, 18446744073709551615ul>>, __gnu_cxx::__normal_iterator<unsigned char const*, std::span<unsigned char const, 18446744073709551615ul>>, (anonymous namespace)::IntIdentity)
Line
Count
Source
229
4.75k
bool ConvertBits(O outfn, It it, It end, I infn = {}) {
230
4.75k
    size_t acc = 0;
231
4.75k
    size_t bits = 0;
232
4.75k
    constexpr size_t maxv = (1 << tobits) - 1;
233
4.75k
    constexpr size_t max_acc = (1 << (frombits + tobits - 1)) - 1;
234
94.3k
    while (it != end) {
235
89.5k
        int v = infn(*it);
236
89.5k
        if (v < 0) 
return false0
;
237
89.5k
        acc = ((acc << frombits) | v) & max_acc;
238
89.5k
        bits += frombits;
239
232k
        while (bits >= tobits) {
240
143k
            bits -= tobits;
241
143k
            outfn((acc >> bits) & maxv);
242
143k
        }
243
89.5k
        ++it;
244
89.5k
    }
245
4.75k
    if (pad) {
246
4.75k
        if (bits) 
outfn((acc << (tobits - bits)) & maxv)875
;
247
4.75k
    } else 
if (0
bits >= frombits0
||
((acc << (tobits - bits)) & maxv)0
) {
248
0
        return false;
249
0
    }
250
4.75k
    return true;
251
4.75k
}
Unexecuted instantiation: strencodings.cpp:bool ConvertBits<5, 8, false, DecodeBase32(std::basic_string_view<char, std::char_traits<char>>)::$_0, char const*, DecodeBase32(std::basic_string_view<char, std::char_traits<char>>)::$_1>(DecodeBase32(std::basic_string_view<char, std::char_traits<char>>)::$_0, char const*, char const*, DecodeBase32(std::basic_string_view<char, std::char_traits<char>>)::$_1)
252
253
/**
254
 * Converts the given character to its lowercase equivalent.
255
 * This function is locale independent. It only converts uppercase
256
 * characters in the standard 7-bit ASCII range.
257
 * This is a feature, not a limitation.
258
 *
259
 * @param[in] c     the character to convert to lowercase.
260
 * @return          the lowercase equivalent of c; or the argument
261
 *                  if no conversion is possible.
262
 */
263
constexpr char ToLower(char c)
264
0
{
265
0
    return (c >= 'A' && c <= 'Z' ? (c - 'A') + 'a' : c);
266
0
}
267
268
/**
269
 * Returns the lowercase equivalent of the given string.
270
 * This function is locale independent. It only converts uppercase
271
 * characters in the standard 7-bit ASCII range.
272
 * This is a feature, not a limitation.
273
 *
274
 * @param[in] str   the string to convert to lowercase.
275
 * @returns         lowercased equivalent of str
276
 */
277
std::string ToLower(std::string_view str);
278
279
/**
280
 * Converts the given character to its uppercase equivalent.
281
 * This function is locale independent. It only converts lowercase
282
 * characters in the standard 7-bit ASCII range.
283
 * This is a feature, not a limitation.
284
 *
285
 * @param[in] c     the character to convert to uppercase.
286
 * @return          the uppercase equivalent of c; or the argument
287
 *                  if no conversion is possible.
288
 */
289
constexpr char ToUpper(char c)
290
0
{
291
0
    return (c >= 'a' && c <= 'z' ? (c - 'a') + 'A' : c);
292
0
}
293
294
/**
295
 * Returns the uppercase equivalent of the given string.
296
 * This function is locale independent. It only converts lowercase
297
 * characters in the standard 7-bit ASCII range.
298
 * This is a feature, not a limitation.
299
 *
300
 * @param[in] str   the string to convert to uppercase.
301
 * @returns         UPPERCASED EQUIVALENT OF str
302
 */
303
std::string ToUpper(std::string_view str);
304
305
/**
306
 * Capitalizes the first character of the given string.
307
 * This function is locale independent. It only converts lowercase
308
 * characters in the standard 7-bit ASCII range.
309
 * This is a feature, not a limitation.
310
 *
311
 * @param[in] str   the string to capitalize.
312
 * @returns         string with the first letter capitalized.
313
 */
314
std::string Capitalize(std::string str);
315
316
/**
317
 * Parse a string with suffix unit [k|K|m|M|g|G|t|T].
318
 * Must be a whole integer, fractions not allowed (0.5t), no whitespace or +-
319
 * Lowercase units are 1000 base. Uppercase units are 1024 base.
320
 * Examples: 2m,27M,19g,41T
321
 *
322
 * @param[in] str                  the string to convert into bytes
323
 * @param[in] default_multiplier   if no unit is found in str use this unit
324
 * @returns                        optional uint64_t bytes from str or nullopt
325
 *                                 if ToIntegral is false, str is empty, trailing whitespace or overflow
326
 */
327
std::optional<uint64_t> ParseByteUnits(std::string_view str, ByteUnit default_multiplier);
328
329
namespace util {
330
/** consteval version of HexDigit() without the lookup table. */
331
consteval uint8_t ConstevalHexDigit(const char c)
332
{
333
    if (c >= '0' && c <= '9') return c - '0';
334
    if (c >= 'a' && c <= 'f') return c - 'a' + 0xa;
335
336
    throw "Only lowercase hex digits are allowed, for consistency";
337
}
338
339
namespace detail {
340
template <size_t N>
341
struct Hex {
342
    std::array<std::byte, N / 2> bytes{};
343
    consteval Hex(const char (&hex_str)[N])
344
        // 2 hex digits required per byte + implicit null terminator
345
        requires(N % 2 == 1)
346
    {
347
        if (hex_str[N - 1]) throw "null terminator required";
348
        for (std::size_t i = 0; i < bytes.size(); ++i) {
349
            bytes[i] = static_cast<std::byte>(
350
                (ConstevalHexDigit(hex_str[2 * i]) << 4) |
351
                 ConstevalHexDigit(hex_str[2 * i + 1]));
352
        }
353
    }
354
};
355
} // namespace detail
356
357
struct AsciiCaseInsensitiveKeyEqual {
358
    bool operator()(std::string_view s1, std::string_view s2) const
359
0
    {
360
0
        return ToLower(s1) == ToLower(s2);
361
0
    }
362
};
363
364
struct AsciiCaseInsensitiveHash {
365
    size_t operator()(std::string_view s) const
366
0
    {
367
0
        return std::hash<std::string>{}(ToLower(s));
368
0
    }
369
};
370
371
/**
372
 * ""_hex is a compile-time user-defined literal returning a
373
 * `std::array<std::byte>`, equivalent to ParseHex(). Variants provided:
374
 *
375
 * - ""_hex_v: Returns `std::vector<std::byte>`, useful for heap allocation or
376
 *   variable-length serialization.
377
 *
378
 * - ""_hex_u8: Returns `std::array<uint8_t>`, for cases where `std::byte` is
379
 *   incompatible.
380
 *
381
 * - ""_hex_v_u8: Returns `std::vector<uint8_t>`, combining heap allocation with
382
 *   `uint8_t`.
383
 *
384
 * @warning It could be necessary to use vector instead of array variants when
385
 *   serializing, or vice versa, because vectors are assumed to be variable-
386
 *   length and serialized with a size prefix, while arrays are considered fixed
387
 *   length and serialized with no prefix.
388
 *
389
 * @warning It may be preferable to use vector variants to save stack space when
390
 *   declaring local variables if hex strings are large. Alternatively variables
391
 *   could be declared constexpr to avoid using stack space.
392
 *
393
 * @warning Avoid `uint8_t` variants when not necessary, as the codebase
394
 *   migrates to use `std::byte` instead of `unsigned char` and `uint8_t`.
395
 *
396
 * @note One reason ""_hex uses `std::array` instead of `std::vector` like
397
 *   ParseHex() does is because heap-based containers cannot cross the compile-
398
 *   time/runtime barrier.
399
 */
400
inline namespace hex_literals {
401
402
template <util::detail::Hex str>
403
0
constexpr auto operator""_hex() { return str.bytes; }
Unexecuted instantiation: auto util::hex_literals::operator"" _hex<util::detail::Hex<131ul>{std::array<std::byte, 65ul>{std::byte [65]{(std::byte)4, (std::byte)103, (std::byte)138, (std::byte)253, (std::byte)176, (std::byte)254, (std::byte)85, (std::byte)72, (std::byte)39, (std::byte)25, (std::byte)103, (std::byte)241, (std::byte)166, (std::byte)113, (std::byte)48, (std::byte)183, (std::byte)16, (std::byte)92, (std::byte)214, (std::byte)168, (std::byte)40, (std::byte)224, (std::byte)57, (std::byte)9, (std::byte)166, (std::byte)121, (std::byte)98, (std::byte)224, (std::byte)234, (std::byte)31, (std::byte)97, (std::byte)222, (std::byte)182, (std::byte)73, (std::byte)246, (std::byte)188, (std::byte)63, (std::byte)76, (std::byte)239, (std::byte)56, (std::byte)196, (std::byte)243, (std::byte)85, (std::byte)4, (std::byte)229, (std::byte)30, (std::byte)193, (std::byte)18, (std::byte)222, (std::byte)92, (std::byte)56, (std::byte)77, (std::byte)247, (std::byte)186, (std::byte)11, (std::byte)141, (std::byte)87, (std::byte)138, (std::byte)76, (std::byte)112, (std::byte)43, (std::byte)107, (std::byte)241, (std::byte)29, (std::byte)95}}}>()
Unexecuted instantiation: auto util::hex_literals::operator"" _hex<util::detail::Hex<67ul>{}>()
Unexecuted instantiation: auto util::hex_literals::operator"" _hex<util::detail::Hex<6109ul>{std::array<std::byte, 3054ul>{std::byte [3054]{(std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)144, (std::byte)240, (std::byte)169, (std::byte)241, (std::byte)16, (std::byte)112, (std::byte)47, (std::byte)128, (std::byte)130, (std::byte)25, (std::byte)235, (std::byte)234, (std::byte)17, (std::byte)115, (std::byte)5, (std::byte)96, (std::byte)66, (std::byte)167, (std::byte)20, (std::byte)186, (std::byte)213, (std::byte)27, (std::byte)145, (std::byte)108, (std::byte)182, (std::byte)128, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)82, (std::byte)117, (std::byte)40, (std::byte)149, (std::byte)88, (std::byte)245, (std::byte)28, (std::byte)153, (std::byte)102, (std::byte)105, (std::byte)148, (std::byte)4, (std::byte)174, (std::byte)34, (std::byte)148, (std::byte)115, (std::byte)12, (std::byte)60, (std::byte)159, (std::byte)155, (std::byte)218, (std::byte)83, (std::byte)82, (std::byte)60, (std::byte)229, (std::byte)14, (std::byte)155, (std::byte)149, (std::byte)229, (std::byte)88, (std::byte)218, (std::byte)47, (std::byte)219, (std::byte)38, (std::byte)27, (std::byte)77, (std::byte)76, (std::byte)134, (std::byte)4, (std::byte)27, (std::byte)26, (std::byte)177, (std::byte)191, (std::byte)147, (std::byte)9, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)7, (std::byte)4, (std::byte)76, (std::byte)134, (std::byte)4, (std::byte)27, (std::byte)1, (std::byte)70, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)1, (std::byte)0, (std::byte)242, (std::byte)5, (std::byte)42, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)67, (std::byte)65, (std::byte)4, (std::byte)225, (std::byte)143, (std::byte)122, (std::byte)251, (std::byte)228, (std::byte)114, (std::byte)21, (std::byte)128, (std::byte)232, (std::byte)30, (std::byte)132, (std::byte)20, (std::byte)252, (std::byte)140, (std::byte)36, (std::byte)215, (std::byte)207, (std::byte)172, (std::byte)242, (std::byte)84, (std::byte)187, (std::byte)92, (std::byte)123, (std::byte)148, (std::byte)148, (std::byte)80, (std::byte)195, (std::byte)233, (std::byte)151, (std::byte)194, (std::byte)220, (std::byte)18, (std::byte)66, (std::byte)72, (std::byte)122, (std::byte)129, (std::byte)105, (std::byte)80, (std::byte)123, (std::byte)99, (std::byte)30, (std::byte)179, (std::byte)119, (std::byte)31, (std::byte)43, (std::byte)66, (std::byte)84, (std::byte)131, (std::byte)251, (std::byte)19, (std::byte)16, (std::byte)44, (std::byte)78, (std::byte)181, (std::byte)216, (std::byte)88, (std::byte)238, (std::byte)242, (std::byte)96, (std::byte)254, (std::byte)112, (std::byte)251, (std::byte)250, (std::byte)224, (std::byte)172, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)150, (std::byte)96, (std::byte)140, (std::byte)203, (std::byte)175, (std::byte)161, (std::byte)106, (std::byte)186, (std::byte)218, (std::byte)144, (std::byte)39, (std::byte)128, (std::byte)218, (std::byte)77, (std::byte)195, (std::byte)93, (std::byte)175, (std::byte)215, (std::byte)175, (std::byte)5, (std::byte)250, (std::byte)13, (std::byte)160, (std::byte)140, (std::byte)248, (std::byte)51, (std::byte)87, (std::byte)95, (std::byte)140, (std::byte)249, (std::byte)232, (std::byte)54, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)74, (std::byte)73, (std::byte)48, (std::byte)70, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)218, (std::byte)178, (std::byte)72, (std::byte)137, (std::byte)33, (std::byte)60, (std::byte)175, (std::byte)67, (std::byte)174, (std::byte)106, (std::byte)220, (std::byte)65, (std::byte)207, (std::byte)28, (std::byte)147, (std::byte)150, (std::byte)192, (std::byte)130, (std::byte)64, (std::byte)193, (std::byte)153, (std::byte)245, (std::byte)34, (std::byte)90, (std::byte)207, (std::byte)69, (std::byte)65, (std::byte)99, (std::byte)48, (std::byte)253, (std::byte)125, (std::byte)189, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)254, (std::byte)55, (std::byte)144, (std::byte)14, (std::byte)6, (std::byte)68, (std::byte)191, (std::byte)87, (std::byte)68, (std::byte)147, (std::byte)160, (std::byte)127, (std::byte)197, (std::byte)237, (std::byte)186, (std::byte)6, (std::byte)219, (std::byte)192, (std::byte)124, (std::byte)49, (std::byte)27, (std::byte)148, (std::byte)117, (std::byte)32, (std::byte)194, (std::byte)213, (std::byte)20, (std::byte)188, (std::byte)87, (std::byte)37, (std::byte)220, (std::byte)180, (std::byte)1, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)1, (std::byte)0, (std::byte)242, (std::byte)5, (std::byte)42, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)241, (std::byte)93, (std::byte)25, (std::byte)33, (std::byte)245, (std::byte)46, (std::byte)64, (std::byte)7, (std::byte)177, (std::byte)70, (std::byte)223, (std::byte)166, (std::byte)15, (std::byte)54, (std::byte)158, (std::byte)210, (std::byte)252, (std::byte)57, (std::byte)60, (std::byte)226, (std::byte)136, (std::byte)172, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)251, (std::byte)118, (std::byte)108, (std::byte)18, (std::byte)136, (std::byte)69, (std::byte)140, (std::byte)43, (std::byte)175, (std::byte)207, (std::byte)236, (std::byte)129, (std::byte)228, (std::byte)139, (std::byte)36, (std::byte)217, (std::byte)142, (std::byte)199, (std::byte)6, (std::byte)222, (std::byte)107, (std::byte)138, (std::byte)247, (std::byte)196, (std::byte)227, (std::byte)194, (std::byte)148, (std::byte)25, (std::byte)191, (std::byte)172, (std::byte)181, (std::byte)109, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)140, (std::byte)73, (std::byte)48, (std::byte)70, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)242, (std::byte)104, (std::byte)186, (std::byte)22, (std::byte)92, (std::byte)224, (std::byte)173, (std::byte)46, (std::byte)109, (std::byte)147, (std::byte)240, (std::byte)137, (std::byte)207, (std::byte)205, (std::byte)55, (std::byte)133, (std::byte)222, (std::byte)92, (std::byte)150, (std::byte)59, (std::byte)181, (std::byte)234, (std::byte)107, (std::byte)140, (std::byte)27, (std::byte)35, (std::byte)241, (std::byte)206, (std::byte)62, (std::byte)81, (std::byte)123, (std::byte)159, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)218, (std::byte)124, (std::byte)15, (std::byte)33, (std::byte)173, (std::byte)198, (std::byte)196, (std::byte)1, (std::byte)136, (std::byte)127, (std::byte)43, (std::byte)253, (std::byte)25, (std::byte)34, (std::byte)241, (std::byte)29, (std::byte)118, (std::byte)21, (std::byte)156, (std::byte)188, (std::byte)89, (std::byte)127, (std::byte)189, (std::byte)117, (std::byte)106, (std::byte)35, (std::byte)220, (std::byte)187, (std::byte)0, (std::byte)244, (std::byte)215, (std::byte)41, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)43, (std::byte)78, (std::byte)134, (std::byte)37, (std::byte)169, (std::byte)97, (std::byte)39, (std::byte)130, (std::byte)105, (std::byte)21, (std::byte)165, (std::byte)177, (std::byte)9, (std::byte)133, (std::byte)38, (std::byte)54, (std::byte)173, (std::byte)13, (std::byte)167, (std::byte)83, (std::byte)201, (std::byte)225, (std::byte)213, (std::byte)96, (std::byte)106, (std::byte)80, (std::byte)72, (std::byte)12, (std::byte)208, (std::byte)196, (std::byte)15, (std::byte)31, (std::byte)139, (std::byte)141, (std::byte)137, (std::byte)130, (std::byte)53, (std::byte)229, (std::byte)113, (std::byte)254, (std::byte)147, (std::byte)87, (std::byte)217, (std::byte)236, (std::byte)132, (std::byte)43, (std::byte)196, (std::byte)187, (std::byte)161, (std::byte)130, (std::byte)125, (std::byte)170, (std::byte)244, (std::byte)222, (std::byte)6, (std::byte)215, (std::byte)24, (std::byte)68, (std::byte)208, (std::byte)5, (std::byte)119, (std::byte)7, (std::byte)150, (std::byte)106, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)2, (std::byte)128, (std::byte)150, (std::byte)152, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)105, (std::byte)99, (std::byte)144, (std::byte)117, (std::byte)49, (std::byte)219, (std::byte)114, (std::byte)208, (std::byte)237, (std::byte)26, (std::byte)12, (std::byte)251, (std::byte)71, (std::byte)28, (std::byte)203, (std::byte)99, (std::byte)146, (std::byte)52, (std::byte)70, (std::byte)243, (std::byte)136, (std::byte)172, (std::byte)128, (std::byte)214, (std::byte)227, (std::byte)76, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)240, (std::byte)104, (std::byte)139, (std::byte)161, (std::byte)192, (std::byte)209, (std::byte)206, (std::byte)24, (std::byte)44, (std::byte)122, (std::byte)246, (std::byte)116, (std::byte)30, (std::byte)2, (std::byte)101, (std::byte)140, (std::byte)125, (std::byte)77, (std::byte)252, (std::byte)211, (std::byte)136, (std::byte)172, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)2, (std::byte)196, (std::byte)2, (std::byte)151, (std::byte)247, (std::byte)48, (std::byte)221, (std::byte)123, (std::byte)90, (std::byte)153, (std::byte)86, (std::byte)126, (std::byte)184, (std::byte)210, (std::byte)123, (std::byte)120, (std::byte)117, (std::byte)143, (std::byte)96, (std::byte)117, (std::byte)7, (std::byte)197, (std::byte)34, (std::byte)146, (std::byte)208, (std::byte)45, (std::byte)64, (std::byte)49, (std::byte)137, (std::byte)91, (std::byte)82, (std::byte)242, (std::byte)255, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)139, (std::byte)72, (std::byte)48, (std::byte)69, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)247, (std::byte)237, (std::byte)253, (std::byte)75, (std::byte)10, (std::byte)172, (std::byte)64, (std::byte)78, (std::byte)91, (std::byte)171, (std::byte)79, (std::byte)211, (std::byte)136, (std::byte)158, (std::byte)12, (std::byte)108, (std::byte)65, (std::byte)170, (std::byte)141, (std::byte)14, (std::byte)111, (std::byte)161, (std::byte)34, (std::byte)49, (std::byte)111, (std::byte)104, (std::byte)237, (std::byte)221, (std::byte)10, (std::byte)101, (std::byte)1, (std::byte)57, (std::byte)2, (std::byte)32, (std::byte)91, (std::byte)9, (std::byte)204, (std::byte)139, (std::byte)45, (std::byte)86, (std::byte)225, (std::byte)205, (std::byte)31, (std::byte)127, (std::byte)47, (std::byte)175, (std::byte)214, (std::byte)10, (std::byte)18, (std::byte)158, (std::byte)217, (std::byte)69, (std::byte)4, (std::byte)196, (std::byte)172, (std::byte)123, (std::byte)220, (std::byte)103, (std::byte)181, (std::byte)111, (std::byte)230, (std::byte)117, (std::byte)18, (std::byte)101, (std::byte)139, (std::byte)62, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)115, (std::byte)32, (std::byte)18, (std::byte)203, (std::byte)150, (std::byte)42, (std::byte)250, (std::byte)144, (std::byte)211, (std::byte)27, (std::byte)37, (std::byte)216, (std::byte)251, (std::byte)14, (std::byte)50, (std::byte)201, (std::byte)78, (std::byte)81, (std::byte)58, (std::byte)183, (std::byte)161, (std::byte)120, (std::byte)5, (std::byte)193, (std::byte)76, (std::byte)164, (std::byte)195, (std::byte)66, (std::byte)62, (std::byte)24, (std::byte)180, (std::byte)251, (std::byte)93, (std::byte)14, (std::byte)103, (std::byte)104, (std::byte)65, (std::byte)115, (std::byte)60, (std::byte)184, (std::byte)58, (std::byte)186, (std::byte)249, (std::byte)117, (std::byte)132, (std::byte)92, (std::byte)159, (std::byte)111, (std::byte)42, (std::byte)128, (std::byte)151, (std::byte)183, (std::byte)208, (std::byte)79, (std::byte)73, (std::byte)8, (std::byte)177, (std::byte)131, (std::byte)104, (std::byte)214, (std::byte)252, (std::byte)45, (std::byte)104, (std::byte)236, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)202, (std::byte)80, (std::byte)101, (std::byte)255, (std::byte)150, (std::byte)23, (std::byte)203, (std::byte)203, (std::byte)164, (std::byte)94, (std::byte)178, (std::byte)55, (std::byte)38, (std::byte)223, (std::byte)100, (std::byte)152, (std::byte)169, (std::byte)185, (std::byte)202, (std::byte)254, (std::byte)212, (std::byte)245, (std::byte)76, (std::byte)186, (std::byte)185, (std::byte)210, (std::byte)39, (std::byte)176, (std::byte)3, (std::byte)93, (std::byte)222, (std::byte)251, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)138, (std::byte)71, (std::byte)48, (std::byte)68, (std::byte)2, (std::byte)32, (std::byte)104, (std::byte)1, (std::byte)3, (std::byte)98, (std::byte)161, (std::byte)60, (std::byte)127, (std::byte)153, (std::byte)25, (std::byte)250, (std::byte)131, (std::byte)43, (std::byte)45, (std::byte)238, (std::byte)78, (std::byte)120, (std::byte)143, (std::byte)97, (std::byte)246, (std::byte)245, (std::byte)211, (std::byte)68, (std::byte)167, (std::byte)194, (std::byte)160, (std::byte)218, (std::byte)106, (std::byte)231, (std::byte)64, (std::byte)96, (std::byte)86, (std::byte)88, (std::byte)2, (std::byte)32, (std::byte)6, (std::byte)209, (std::byte)175, (std::byte)82, (std::byte)91, (std::byte)154, (std::byte)20, (std::byte)163, (std::byte)92, (std::byte)0, (std::byte)59, (std::byte)120, (std::byte)183, (std::byte)43, (std::byte)213, (std::byte)151, (std::byte)56, (std::byte)205, (std::byte)103, (std::byte)111, (std::byte)132, (std::byte)93, (std::byte)31, (std::byte)243, (std::byte)252, (std::byte)37, (std::byte)4, (std::byte)158, (std::byte)1, (std::byte)0, (std::byte)54, (std::byte)20, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)115, (std::byte)32, (std::byte)18, (std::byte)203, (std::byte)150, (std::byte)42, (std::byte)250, (std::byte)144, (std::byte)211, (std::byte)27, (std::byte)37, (std::byte)216, (std::byte)251, (std::byte)14, (std::byte)50, (std::byte)201, (std::byte)78, (std::byte)81, (std::byte)58, (std::byte)183, (std::byte)161, (std::byte)120, (std::byte)5, (std::byte)193, (std::byte)76, (std::byte)164, (std::byte)195, (std::byte)66, (std::byte)62, (std::byte)24, (std::byte)180, (std::byte)251, (std::byte)93, (std::byte)14, (std::byte)103, (std::byte)104, (std::byte)65, (std::byte)115, (std::byte)60, (std::byte)184, (std::byte)58, (std::byte)186, (std::byte)249, (std::byte)117, (std::byte)132, (std::byte)92, (std::byte)159, (std::byte)111, (std::byte)42, (std::byte)128, (std::byte)151, (std::byte)183, (std::byte)208, (std::byte)79, (std::byte)73, (std::byte)8, (std::byte)177, (std::byte)131, (std::byte)104, (std::byte)214, (std::byte)252, (std::byte)45, (std::byte)104, (std::byte)236, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)1, (std::byte)0, (std::byte)30, (std::byte)196, (std::byte)17, (std::byte)2, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)67, (std::byte)65, (std::byte)4, (std::byte)105, (std::byte)171, (std::byte)65, (std::byte)129, (std::byte)236, (std::byte)235, (std::byte)40, (std::byte)152, (std::byte)91, (std::byte)155, (std::byte)78, (std::byte)137, (std::byte)92, (std::byte)19, (std::byte)250, (std::byte)94, (std::byte)104, (std::byte)216, (std::byte)87, (std::byte)97, (std::byte)183, (std::byte)238, (std::byte)227, (std::byte)17, (std::byte)219, (std::byte)90, (std::byte)221, (std::byte)239, (std::byte)118, (std::byte)250, (std::byte)134, (std::byte)33, (std::byte)134, (std::byte)81, (std::byte)52, (std::byte)162, (std::byte)33, (std::byte)189, (std::byte)1, (std::byte)242, (std::byte)142, (std::byte)201, (std::byte)153, (std::byte)158, (std::byte)227, (std::byte)224, (std::byte)33, (std::byte)230, (std::byte)7, (std::byte)102, (std::byte)233, (std::byte)209, (std::byte)243, (std::byte)69, (std::byte)140, (std::byte)17, (std::byte)95, (std::byte)178, (std::byte)134, (std::byte)80, (std::byte)96, (std::byte)95, (std::byte)17, (std::byte)201, (std::byte)172, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)205, (std::byte)175, (std::byte)47, (std::byte)117, (std::byte)142, (std::byte)145, (std::byte)197, (std::byte)20, (std::byte)101, (std::byte)94, (std::byte)45, (std::byte)197, (std::byte)6, (std::byte)51, (std::byte)209, (std::byte)228, (std::byte)200, (std::byte)73, (std::byte)137, (std::byte)248, (std::byte)170, (std::byte)144, (std::byte)160, (std::byte)219, (std::byte)200, (std::byte)131, (std::byte)240, (std::byte)210, (std::byte)62, (std::byte)213, (std::byte)194, (std::byte)250, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)139, (std::byte)72, (std::byte)48, (std::byte)69, (std::byte)2, (std::byte)32, (std::byte)122, (std::byte)181, (std::byte)27, (std::byte)230, (std::byte)241, (std::byte)42, (std::byte)25, (std::byte)98, (std::byte)186, (std::byte)10, (std::byte)170, (std::byte)242, (std::byte)74, (std::byte)32, (std::byte)224, (std::byte)182, (std::byte)155, (std::byte)39, (std::byte)169, (std::byte)79, (std::byte)172, (std::byte)90, (std::byte)223, (std::byte)69, (std::byte)170, (std::byte)125, (std::byte)45, (std::byte)24, (std::byte)255, (std::byte)217, (std::byte)35, (std::byte)97, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)134, (std::byte)174, (std::byte)114, (std::byte)139, (std::byte)55, (std::byte)14, (std::byte)83, (std::byte)41, (std::byte)238, (std::byte)173, (std::byte)154, (std::byte)204, (std::byte)216, (std::byte)128, (std::byte)208, (std::byte)203, (std::byte)7, (std::byte)10, (std::byte)234, (std::byte)12, (std::byte)150, (std::byte)37, (std::byte)95, (std::byte)174, (std::byte)108, (std::byte)79, (std::byte)29, (std::byte)220, (std::byte)206, (std::byte)31, (std::byte)213, (std::byte)110, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)70, (std::byte)46, (std::byte)118, (std::byte)253, (std::byte)64, (std::byte)103, (std::byte)179, (std::byte)160, (std::byte)170, (std::byte)66, (std::byte)7, (std::byte)0, (std::byte)130, (std::byte)220, (std::byte)176, (std::byte)191, (std::byte)47, (std::byte)56, (std::byte)139, (std::byte)100, (std::byte)149, (std::byte)207, (std::byte)51, (std::byte)215, (std::byte)137, (std::byte)144, (std::byte)79, (std::byte)7, (std::byte)208, (std::byte)245, (std::byte)92, (std::byte)64, (std::byte)251, (std::byte)212, (std::byte)184, (std::byte)41, (std::byte)99, (std::byte)198, (std::byte)155, (std::byte)61, (std::byte)195, (std::byte)24, (std::byte)149, (std::byte)208, (std::byte)199, (std::byte)114, (std::byte)200, (std::byte)18, (std::byte)177, (std::byte)213, (std::byte)251, (std::byte)202, (std::byte)222, (std::byte)21, (std::byte)49, (std::byte)46, (std::byte)241, (std::byte)192, (std::byte)232, (std::byte)235, (std::byte)187, (std::byte)18, (std::byte)220, (std::byte)212, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)2, (std::byte)64, (std::byte)75, (std::byte)76, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)43, (std::byte)107, (std::byte)167, (std::byte)201, (std::byte)215, (std::byte)150, (std::byte)183, (std::byte)94, (std::byte)239, (std::byte)121, (std::byte)66, (std::byte)252, (std::byte)146, (std::byte)136, (std::byte)237, (std::byte)211, (std::byte)124, (std::byte)50, (std::byte)245, (std::byte)195, (std::byte)136, (std::byte)172, (std::byte)0, (std::byte)45, (std::byte)49, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)27, (std::byte)239, (std::byte)186, (std::byte)12, (std::byte)220, (std::byte)26, (std::byte)213, (std::byte)101, (std::byte)41, (std::byte)55, (std::byte)24, (std::byte)100, (std::byte)217, (std::byte)246, (std::byte)203, (std::byte)4, (std::byte)47, (std::byte)170, (std::byte)6, (std::byte)181, (std::byte)136, (std::byte)172, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)180, (std::byte)164, (std::byte)118, (std::byte)3, (std::byte)231, (std::byte)27, (std::byte)97, (std::byte)188, (std::byte)51, (std::byte)38, (std::byte)239, (std::byte)217, (std::byte)1, (std::byte)17, (std::byte)191, (std::byte)2, (std::byte)210, (std::byte)245, (std::byte)73, (std::byte)176, (std::byte)103, (std::byte)244, (std::byte)196, (std::byte)168, (std::byte)250, (std::byte)24, (std::byte)59, (std::byte)87, (std::byte)160, (std::byte)248, (std::byte)0, (std::byte)203, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)138, (std::byte)71, (std::byte)48, (std::byte)68, (std::byte)2, (std::byte)32, (std::byte)23, (std::byte)124, (std::byte)55, (std::byte)249, (std::byte)165, (std::byte)5, (std::byte)195, (std::byte)241, (std::byte)161, (std::byte)240, (std::byte)206, (std::byte)45, (std::byte)167, (std::byte)119, (std::byte)195, (std::byte)57, (std::byte)189, (std::byte)131, (std::byte)57, (std::byte)255, (std::byte)160, (std::byte)44, (std::byte)124, (std::byte)180, (std::byte)31, (std::byte)10, (std::byte)88, (std::byte)4, (std::byte)244, (std::byte)115, (std::byte)201, (std::byte)35, (std::byte)2, (std::byte)32, (std::byte)88, (std::byte)91, (std::byte)37, (std::byte)162, (std::byte)238, (std::byte)128, (std::byte)235, (std::byte)89, (std::byte)41, (std::byte)46, (std::byte)82, (std::byte)185, (std::byte)135, (std::byte)218, (std::byte)217, (std::byte)42, (std::byte)203, (std::byte)12, (std::byte)100, (std::byte)236, (std::byte)237, (std::byte)146, (std::byte)237, (std::byte)158, (std::byte)225, (std::byte)5, (std::byte)173, (std::byte)21, (std::byte)60, (std::byte)219, (std::byte)18, (std::byte)208, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)67, (std::byte)189, (std::byte)68, (std::byte)246, (std::byte)131, (std::byte)70, (std::byte)126, (std::byte)84, (std::byte)157, (std::byte)174, (std::byte)125, (std::byte)32, (std::byte)209, (std::byte)215, (std::byte)156, (std::byte)189, (std::byte)182, (std::byte)223, (std::byte)152, (std::byte)92, (std::byte)110, (std::byte)156, (std::byte)2, (std::byte)156, (std::byte)141, (std::byte)12, (std::byte)108, (std::byte)180, (std::byte)108, (std::byte)193, (std::byte)164, (std::byte)211, (std::byte)207, (std::byte)121, (std::byte)35, (std::byte)197, (std::byte)2, (std::byte)27, (std::byte)39, (std::byte)247, (std::byte)160, (std::byte)181, (std::byte)98, (std::byte)173, (std::byte)161, (std::byte)19, (std::byte)188, (std::byte)133, (std::byte)213, (std::byte)253, (std::byte)165, (std::byte)161, (std::byte)180, (std::byte)30, (std::byte)135, (std::byte)254, (std::byte)110, (std::byte)136, (std::byte)2, (std::byte)129, (std::byte)124, (std::byte)246, (std::byte)153, (std::byte)150, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)2, (std::byte)128, (std::byte)101, (std::byte)20, (std::byte)6, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)85, (std::byte)5, (std::byte)97, (std::byte)72, (std::byte)89, (std::byte)100, (std::byte)58, (std::byte)183, (std::byte)181, (std::byte)71, (std::byte)205, (std::byte)127, (std::byte)31, (std::byte)94, (std::byte)126, (std::byte)42, (std::byte)18, (std::byte)50, (std::byte)45, (std::byte)55, (std::byte)136, (std::byte)172, (std::byte)0, (std::byte)170, (std::byte)2, (std::byte)113, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)234, (std::byte)71, (std::byte)32, (std::byte)167, (std::byte)165, (std::byte)47, (std::byte)193, (std::byte)102, (std::byte)197, (std::byte)95, (std::byte)242, (std::byte)41, (std::byte)142, (std::byte)7, (std::byte)186, (std::byte)247, (std::byte)10, (std::byte)230, (std::byte)126, (std::byte)27, (std::byte)136, (std::byte)172, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)5, (std::byte)134, (std::byte)198, (std::byte)44, (std::byte)214, (std::byte)2, (std::byte)210, (std::byte)25, (std::byte)187, (std::byte)96, (std::byte)237, (std::byte)177, (std::byte)74, (std::byte)62, (std::byte)32, (std::byte)77, (std::byte)224, (std::byte)112, (std::byte)81, (std::byte)118, (std::byte)249, (std::byte)2, (std::byte)47, (std::byte)228, (std::byte)154, (std::byte)83, (std::byte)128, (std::byte)84, (std::byte)251, (std::byte)20, (std::byte)171, (std::byte)180, (std::byte)158, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)140, (std::byte)73, (std::byte)48, (std::byte)70, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)242, (std::byte)188, (std::byte)42, (std::byte)186, (std::byte)37, (std::byte)52, (std::byte)190, (std::byte)203, (std::byte)223, (std::byte)6, (std::byte)46, (std::byte)185, (std::byte)147, (std::byte)133, (std::byte)58, (std::byte)66, (std::byte)187, (std::byte)188, (std::byte)40, (std::byte)32, (std::byte)131, (std::byte)208, (std::byte)218, (std::byte)249, (std::byte)180, (std::byte)181, (std::byte)133, (std::byte)189, (std::byte)64, (std::byte)26, (std::byte)168, (std::byte)201, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)177, (std::byte)215, (std::byte)253, (std::byte)126, (std::byte)224, (std::byte)185, (std::byte)86, (std::byte)0, (std::byte)219, (std::byte)133, (std::byte)53, (std::byte)187, (std::byte)243, (std::byte)49, (std::byte)177, (std::byte)158, (std::byte)237, (std::byte)141, (std::byte)150, (std::byte)31, (std::byte)122, (std::byte)142, (std::byte)84, (std::byte)21, (std::byte)156, (std::byte)83, (std::byte)103, (std::byte)93, (std::byte)95, (std::byte)105, (std::byte)223, (std::byte)140, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)70, (std::byte)46, (std::byte)118, (std::byte)253, (std::byte)64, (std::byte)103, (std::byte)179, (std::byte)160, (std::byte)170, (std::byte)66, (std::byte)7, (std::byte)0, (std::byte)130, (std::byte)220, (std::byte)176, (std::byte)191, (std::byte)47, (std::byte)56, (std::byte)139, (std::byte)100, (std::byte)149, (std::byte)207, (std::byte)51, (std::byte)215, (std::byte)137, (std::byte)144, (std::byte)79, (std::byte)7, (std::byte)208, (std::byte)245, (std::byte)92, (std::byte)64, (std::byte)251, (std::byte)212, (std::byte)184, (std::byte)41, (std::byte)99, (std::byte)198, (std::byte)155, (std::byte)61, (std::byte)195, (std::byte)24, (std::byte)149, (std::byte)208, (std::byte)199, (std::byte)114, (std::byte)200, (std::byte)18, (std::byte)177, (std::byte)213, (std::byte)251, (std::byte)202, (std::byte)222, (std::byte)21, (std::byte)49, (std::byte)46, (std::byte)241, (std::byte)192, (std::byte)232, (std::byte)235, (std::byte)187, (std::byte)18, (std::byte)220, (std::byte)212, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)3, (std::byte)173, (std::byte)14, (std::byte)88, (std::byte)204, (std::byte)218, (std::byte)195, (std::byte)223, (std::byte)157, (std::byte)194, (std::byte)138, (std::byte)33, (std::byte)139, (std::byte)207, (std::byte)111, (std::byte)25, (std::byte)151, (std::byte)176, (std::byte)169, (std::byte)51, (std::byte)6, (std::byte)250, (std::byte)170, (std::byte)75, (std::byte)58, (std::byte)40, (std::byte)174, (std::byte)131, (std::byte)68, (std::byte)123, (std::byte)33, (std::byte)121, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)139, (std::byte)72, (std::byte)48, (std::byte)69, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)190, (std::byte)18, (std::byte)178, (std::byte)147, (std::byte)113, (std::byte)121, (std::byte)218, (std::byte)136, (std::byte)89, (std::byte)158, (std::byte)39, (std::byte)187, (std::byte)49, (std::byte)195, (std::byte)82, (std::byte)80, (std::byte)151, (std::byte)160, (std::byte)124, (std::byte)219, (std::byte)82, (std::byte)66, (std::byte)45, (std::byte)22, (std::byte)91, (std::byte)60, (std::byte)162, (std::byte)242, (std::byte)2, (std::byte)15, (std::byte)252, (std::byte)247, (std::byte)2, (std::byte)32, (std::byte)9, (std::byte)113, (std::byte)181, (std::byte)31, (std::byte)133, (std::byte)58, (std::byte)83, (std::byte)214, (std::byte)68, (std::byte)235, (std::byte)174, (std::byte)158, (std::byte)200, (std::byte)243, (std::byte)81, (std::byte)46, (std::byte)68, (std::byte)43, (std::byte)27, (std::byte)203, (std::byte)108, (std::byte)49, (std::byte)90, (std::byte)91, (std::byte)73, (std::byte)29, (std::byte)17, (std::byte)157, (std::byte)16, (std::byte)98, (std::byte)76, (std::byte)131, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)70, (std::byte)46, (std::byte)118, (std::byte)253, (std::byte)64, (std::byte)103, (std::byte)179, (std::byte)160, (std::byte)170, (std::byte)66, (std::byte)7, (std::byte)0, (std::byte)130, (std::byte)220, (std::byte)176, (std::byte)191, (std::byte)47, (std::byte)56, (std::byte)139, (std::byte)100, (std::byte)149, (std::byte)207, (std::byte)51, (std::byte)215, (std::byte)137, (std::byte)144, (std::byte)79, (std::byte)7, (std::byte)208, (std::byte)245, (std::byte)92, (std::byte)64, (std::byte)251, (std::byte)212, (std::byte)184, (std::byte)41, (std::byte)99, (std::byte)198, (std::byte)155, (std::byte)61, (std::byte)195, (std::byte)24, (std::byte)149, (std::byte)208, (std::byte)199, (std::byte)114, (std::byte)200, (std::byte)18, (std::byte)177, (std::byte)213, (std::byte)251, (std::byte)202, (std::byte)222, (std::byte)21, (std::byte)49, (std::byte)46, (std::byte)241, (std::byte)192, (std::byte)232, (std::byte)235, (std::byte)187, (std::byte)18, (std::byte)220, (std::byte)212, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)42, (std::byte)207, (std::byte)202, (std::byte)182, (std::byte)41, (std::byte)187, (std::byte)200, (std::byte)104, (std::byte)87, (std::byte)146, (std::byte)96, (std::byte)55, (std::byte)98, (std::byte)201, (std::byte)33, (std::byte)88, (std::byte)0, (std::byte)48, (std::byte)186, (std::byte)20, (std::byte)74, (std::byte)245, (std::byte)83, (std::byte)210, (std::byte)113, (std::byte)113, (std::byte)106, (std::byte)149, (std::byte)8, (std::byte)158, (std::byte)16, (std::byte)123, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)139, (std::byte)72, (std::byte)48, (std::byte)69, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)250, (std::byte)87, (std::byte)154, (std::byte)132, (std::byte)10, (std::byte)194, (std::byte)88, (std::byte)135, (std::byte)19, (std::byte)101, (std::byte)221, (std::byte)72, (std::byte)205, (std::byte)117, (std::byte)82, (std::byte)249, (std::byte)108, (std::byte)142, (std::byte)234, (std::byte)105, (std::byte)189, (std::byte)0, (std::byte)216, (std::byte)79, (std::byte)5, (std::byte)178, (std::byte)131, (std::byte)160, (std::byte)218, (std::byte)179, (std::byte)17, (std::byte)225, (std::byte)2, (std::byte)32, (std::byte)126, (std::byte)60, (std::byte)14, (std::byte)233, (std::byte)35, (std::byte)72, (std::byte)20, (std::byte)207, (std::byte)187, (std::byte)27, (std::byte)101, (std::byte)155, (std::byte)131, (std::byte)103, (std::byte)22, (std::byte)24, (std::byte)244, (std::byte)90, (std::byte)188, (std::byte)19, (std::byte)38, (std::byte)185, (std::byte)237, (std::byte)204, (std::byte)119, (std::byte)213, (std::byte)82, (std::byte)164, (std::byte)242, (std::byte)168, (std::byte)5, (std::byte)192, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)70, (std::byte)46, (std::byte)118, (std::byte)253, (std::byte)64, (std::byte)103, (std::byte)179, (std::byte)160, (std::byte)170, (std::byte)66, (std::byte)7, (std::byte)0, (std::byte)130, (std::byte)220, (std::byte)176, (std::byte)191, (std::byte)47, (std::byte)56, (std::byte)139, (std::byte)100, (std::byte)149, (std::byte)207, (std::byte)51, (std::byte)215, (std::byte)137, (std::byte)144, (std::byte)79, (std::byte)7, (std::byte)208, (std::byte)245, (std::byte)92, (std::byte)64, (std::byte)251, (std::byte)212, (std::byte)184, (std::byte)41, (std::byte)99, (std::byte)198, (std::byte)155, (std::byte)61, (std::byte)195, (std::byte)24, (std::byte)149, (std::byte)208, (std::byte)199, (std::byte)114, (std::byte)200, (std::byte)18, (std::byte)177, (std::byte)213, (std::byte)251, (std::byte)202, (std::byte)222, (std::byte)21, (std::byte)49, (std::byte)46, (std::byte)241, (std::byte)192, (std::byte)232, (std::byte)235, (std::byte)187, (std::byte)18, (std::byte)220, (std::byte)212, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)220, (std::byte)220, (std::byte)96, (std::byte)35, (std::byte)187, (std::byte)201, (std::byte)148, (std::byte)74, (std::byte)101, (std::byte)141, (std::byte)220, (std::byte)88, (std::byte)142, (std::byte)97, (std::byte)234, (std::byte)203, (std::byte)115, (std::byte)125, (std::byte)223, (std::byte)10, (std::byte)60, (std::byte)210, (std::byte)79, (std::byte)17, (std::byte)59, (std::byte)90, (std::byte)134, (std::byte)52, (std::byte)197, (std::byte)23, (std::byte)252, (std::byte)210, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)139, (std::byte)72, (std::byte)48, (std::byte)69, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)141, (std::byte)109, (std::byte)247, (std::byte)49, (std::byte)223, (std::byte)93, (std::byte)50, (std::byte)38, (std::byte)121, (std::byte)84, (std::byte)189, (std::byte)125, (std::byte)45, (std::byte)218, (std::byte)35, (std::byte)2, (std::byte)183, (std::byte)76, (std::byte)108, (std::byte)42, (std::byte)106, (std::byte)165, (std::byte)192, (std::byte)202, (std::byte)100, (std::byte)236, (std::byte)186, (std::byte)188, (std::byte)26, (std::byte)240, (std::byte)60, (std::byte)117, (std::byte)2, (std::byte)32, (std::byte)16, (std::byte)229, (std::byte)92, (std::byte)87, (std::byte)29, (std::byte)101, (std::byte)218, (std::byte)119, (std::byte)1, (std::byte)174, (std::byte)45, (std::byte)161, (std::byte)149, (std::byte)108, (std::byte)68, (std::byte)45, (std::byte)248, (std::byte)27, (std::byte)191, (std::byte)7, (std::byte)108, (std::byte)219, (std::byte)172, (std::byte)37, (std::byte)19, (std::byte)63, (std::byte)153, (std::byte)217, (std::byte)138, (std::byte)158, (std::byte)211, (std::byte)76, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)70, (std::byte)46, (std::byte)118, (std::byte)253, (std::byte)64, (std::byte)103, (std::byte)179, (std::byte)160, (std::byte)170, (std::byte)66, (std::byte)7, (std::byte)0, (std::byte)130, (std::byte)220, (std::byte)176, (std::byte)191, (std::byte)47, (std::byte)56, (std::byte)139, (std::byte)100, (std::byte)149, (std::byte)207, (std::byte)51, (std::byte)215, (std::byte)137, (std::byte)144, (std::byte)79, (std::byte)7, (std::byte)208, (std::byte)245, (std::byte)92, (std::byte)64, (std::byte)251, (std::byte)212, (std::byte)184, (std::byte)41, (std::byte)99, (std::byte)198, (std::byte)155, (std::byte)61, (std::byte)195, (std::byte)24, (std::byte)149, (std::byte)208, (std::byte)199, (std::byte)114, (std::byte)200, (std::byte)18, (std::byte)177, (std::byte)213, (std::byte)251, (std::byte)202, (std::byte)222, (std::byte)21, (std::byte)49, (std::byte)46, (std::byte)241, (std::byte)192, (std::byte)232, (std::byte)235, (std::byte)187, (std::byte)18, (std::byte)220, (std::byte)212, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)225, (std::byte)85, (std::byte)87, (std::byte)205, (std::byte)92, (std::byte)226, (std::byte)88, (std::byte)244, (std::byte)121, (std::byte)223, (std::byte)214, (std::byte)220, (std::byte)101, (std::byte)20, (std::byte)237, (std::byte)246, (std::byte)215, (std::byte)237, (std::byte)91, (std::byte)33, (std::byte)252, (std::byte)250, (std::byte)74, (std::byte)3, (std::byte)143, (std::byte)214, (std::byte)159, (std::byte)6, (std::byte)184, (std::byte)58, (std::byte)199, (std::byte)110, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)139, (std::byte)72, (std::byte)48, (std::byte)69, (std::byte)2, (std::byte)32, (std::byte)35, (std::byte)179, (std::byte)224, (std::byte)171, (std::byte)7, (std::byte)30, (std::byte)177, (std::byte)29, (std::byte)226, (std::byte)235, (std::byte)28, (std::byte)195, (std::byte)166, (std::byte)114, (std::byte)97, (std::byte)184, (std::byte)102, (std::byte)248, (std::byte)107, (std::byte)246, (std::byte)134, (std::byte)125, (std::byte)69, (std::byte)88, (std::byte)22, (std::byte)95, (std::byte)124, (std::byte)140, (std::byte)138, (std::byte)202, (std::byte)45, (std::byte)134, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)220, (std::byte)110, (std::byte)31, (std::byte)83, (std::byte)169, (std::byte)29, (std::byte)227, (std::byte)239, (std::byte)232, (std::byte)246, (std::byte)53, (std::byte)18, (std::byte)133, (std::byte)8, (std::byte)17, (std::byte)242, (std::byte)98, (std::byte)132, (std::byte)182, (std::byte)47, (std::byte)133, (std::byte)12, (std::byte)112, (std::byte)202, (std::byte)115, (std::byte)237, (std::byte)93, (std::byte)232, (std::byte)119, (std::byte)31, (std::byte)180, (std::byte)81, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)70, (std::byte)46, (std::byte)118, (std::byte)253, (std::byte)64, (std::byte)103, (std::byte)179, (std::byte)160, (std::byte)170, (std::byte)66, (std::byte)7, (std::byte)0, (std::byte)130, (std::byte)220, (std::byte)176, (std::byte)191, (std::byte)47, (std::byte)56, (std::byte)139, (std::byte)100, (std::byte)149, (std::byte)207, (std::byte)51, (std::byte)215, (std::byte)137, (std::byte)144, (std::byte)79, (std::byte)7, (std::byte)208, (std::byte)245, (std::byte)92, (std::byte)64, (std::byte)251, (std::byte)212, (std::byte)184, (std::byte)41, (std::byte)99, (std::byte)198, (std::byte)155, (std::byte)61, (std::byte)195, (std::byte)24, (std::byte)149, (std::byte)208, (std::byte)199, (std::byte)114, (std::byte)200, (std::byte)18, (std::byte)177, (std::byte)213, (std::byte)251, (std::byte)202, (std::byte)222, (std::byte)21, (std::byte)49, (std::byte)46, (std::byte)241, (std::byte)192, (std::byte)232, (std::byte)235, (std::byte)187, (std::byte)18, (std::byte)220, (std::byte)212, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)1, (std::byte)64, (std::byte)75, (std::byte)76, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)43, (std::byte)107, (std::byte)167, (std::byte)201, (std::byte)215, (std::byte)150, (std::byte)183, (std::byte)94, (std::byte)239, (std::byte)121, (std::byte)66, (std::byte)252, (std::byte)146, (std::byte)136, (std::byte)237, (std::byte)211, (std::byte)124, (std::byte)50, (std::byte)245, (std::byte)195, (std::byte)136, (std::byte)172, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)102, (std::byte)215, (std::byte)87, (std::byte)113, (std::byte)99, (std::byte)201, (std::byte)50, (std::byte)180, (std::byte)249, (std::byte)105, (std::byte)12, (std::byte)166, (std::byte)168, (std::byte)11, (std::byte)110, (std::byte)78, (std::byte)176, (std::byte)1, (std::byte)240, (std::byte)162, (std::byte)250, (std::byte)144, (std::byte)35, (std::byte)223, (std::byte)85, (std::byte)149, (std::byte)96, (std::byte)42, (std::byte)174, (std::byte)150, (std::byte)237, (std::byte)141, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)138, (std::byte)71, (std::byte)48, (std::byte)68, (std::byte)2, (std::byte)32, (std::byte)38, (std::byte)43, (std::byte)66, (std::byte)84, (std::byte)99, (std::byte)2, (std::byte)223, (std::byte)182, (std::byte)84, (std::byte)162, (std::byte)41, (std::byte)206, (std::byte)252, (std::byte)134, (std::byte)67, (std::byte)43, (std::byte)137, (std::byte)98, (std::byte)143, (std::byte)242, (std::byte)89, (std::byte)220, (std::byte)135, (std::byte)237, (std::byte)209, (std::byte)21, (std::byte)69, (std::byte)53, (std::byte)177, (std::byte)106, (std::byte)103, (std::byte)225, (std::byte)2, (std::byte)32, (std::byte)123, (std::byte)70, (std::byte)52, (std::byte)192, (std::byte)32, (std::byte)169, (std::byte)124, (std::byte)62, (std::byte)123, (std::byte)189, (std::byte)13, (std::byte)77, (std::byte)25, (std::byte)218, (std::byte)106, (std::byte)162, (std::byte)38, (std::byte)154, (std::byte)217, (std::byte)221, (std::byte)237, (std::byte)64, (std::byte)38, (std::byte)232, (std::byte)150, (std::byte)178, (std::byte)19, (std::byte)215, (std::byte)60, (std::byte)164, (std::byte)182, (std::byte)63, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)151, (std::byte)155, (std::byte)130, (std::byte)208, (std::byte)34, (std::byte)38, (std::byte)179, (std::byte)164, (std::byte)89, (std::byte)117, (std::byte)35, (std::byte)132, (std::byte)87, (std::byte)84, (std::byte)212, (std::byte)79, (std::byte)19, (std::byte)99, (std::byte)158, (std::byte)59, (std::byte)242, (std::byte)223, (std::byte)94, (std::byte)130, (std::byte)198, (std::byte)170, (std::byte)178, (std::byte)189, (std::byte)199, (std::byte)150, (std::byte)135, (std::byte)54, (std::byte)139, (std::byte)1, (std::byte)177, (std::byte)171, (std::byte)139, (std::byte)25, (std::byte)135, (std::byte)90, (std::byte)227, (std::byte)201, (std::byte)13, (std::byte)102, (std::byte)26, (std::byte)61, (std::byte)10, (std::byte)51, (std::byte)22, (std::byte)29, (std::byte)171, (std::byte)41, (std::byte)147, (std::byte)78, (std::byte)222, (std::byte)179, (std::byte)106, (std::byte)160, (std::byte)25, (std::byte)118, (std::byte)190, (std::byte)59, (std::byte)175, (std::byte)138, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)2, (std::byte)64, (std::byte)75, (std::byte)76, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)72, (std::byte)84, (std::byte)230, (std::byte)149, (std::byte)160, (std::byte)42, (std::byte)240, (std::byte)174, (std::byte)172, (std::byte)184, (std::byte)35, (std::byte)204, (std::byte)188, (std::byte)39, (std::byte)33, (std::byte)52, (std::byte)86, (std::byte)30, (std::byte)10, (std::byte)22, (std::byte)136, (std::byte)172, (std::byte)64, (std::byte)66, (std::byte)15, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)171, (std::byte)238, (std::byte)147, (std::byte)55, (std::byte)109, (std::byte)107, (std::byte)55, (std::byte)181, (std::byte)194, (std::byte)148, (std::byte)6, (std::byte)85, (std::byte)166, (std::byte)252, (std::byte)175, (std::byte)28, (std::byte)142, (std::byte)116, (std::byte)35, (std::byte)121, (std::byte)136, (std::byte)172, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)1, (std::byte)78, (std::byte)63, (std::byte)142, (std::byte)242, (std::byte)233, (std::byte)19, (std::byte)73, (std::byte)169, (std::byte)5, (std::byte)156, (std::byte)180, (std::byte)240, (std::byte)30, (std::byte)84, (std::byte)171, (std::byte)37, (std::byte)151, (std::byte)193, (std::byte)56, (std::byte)113, (std::byte)97, (std::byte)211, (std::byte)218, (std::byte)137, (std::byte)145, (std::byte)159, (std::byte)126, (std::byte)166, (std::byte)172, (std::byte)219, (std::byte)179, (std::byte)113, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)140, (std::byte)73, (std::byte)48, (std::byte)70, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)129, (std::byte)243, (std::byte)24, (std::byte)52, (std::byte)113, (std::byte)165, (std::byte)202, (std::byte)34, (std::byte)48, (std::byte)124, (std::byte)8, (std::byte)0, (std::byte)34, (std::byte)111, (std::byte)62, (std::byte)249, (std::byte)195, (std::byte)83, (std::byte)6, (std::byte)158, (std::byte)7, (std::byte)115, (std::byte)172, (std::byte)118, (std::byte)187, (std::byte)88, (std::byte)6, (std::byte)84, (std::byte)213, (std::byte)106, (std::byte)165, (std::byte)35, (std::byte)2, (std::byte)33, (std::byte)0, (std::byte)212, (std::byte)197, (std::byte)100, (std::byte)101, (std::byte)189, (std::byte)192, (std::byte)105, (std::byte)6, (std::byte)8, (std::byte)70, (std::byte)244, (std::byte)251, (std::byte)242, (std::byte)246, (std::byte)178, (std::byte)5, (std::byte)32, (std::byte)178, (std::byte)168, (std::byte)11, (std::byte)8, (std::byte)177, (std::byte)104, (std::byte)179, (std::byte)30, (std::byte)102, (std::byte)221, (std::byte)185, (std::byte)198, (std::byte)148, (std::byte)226, (std::byte)64, (std::byte)1, (std::byte)65, (std::byte)4, (std::byte)151, (std::byte)108, (std::byte)121, (std::byte)132, (std::byte)142, (std::byte)24, (std::byte)37, (std::byte)22, (std::byte)18, (std::byte)248, (std::byte)148, (std::byte)8, (std::byte)117, (std::byte)178, (std::byte)176, (std::byte)141, (std::byte)6, (std::byte)230, (std::byte)220, (std::byte)115, (std::byte)185, (std::byte)132, (std::byte)14, (std::byte)136, (std::byte)96, (std::byte)192, (std::byte)102, (std::byte)183, (std::byte)232, (std::byte)116, (std::byte)50, (std::byte)196, (std::byte)119, (std::byte)233, (std::byte)165, (std::byte)154, (std::byte)69, (std::byte)62, (std::byte)113, (std::byte)230, (std::byte)215, (std::byte)109, (std::byte)95, (std::byte)227, (std::byte)64, (std::byte)88, (std::byte)184, (std::byte)0, (std::byte)160, (std::byte)152, (std::byte)252, (std::byte)23, (std::byte)64, (std::byte)206, (std::byte)48, (std::byte)18, (std::byte)232, (std::byte)252, (std::byte)138, (std::byte)0, (std::byte)201, (std::byte)106, (std::byte)249, (std::byte)102, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)2, (std::byte)192, (std::byte)225, (std::byte)228, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)65, (std::byte)52, (std::byte)231, (std::byte)90, (std::byte)111, (std::byte)203, (std::byte)96, (std::byte)66, (std::byte)3, (std::byte)74, (std::byte)171, (std::byte)94, (std::byte)24, (std::byte)87, (std::byte)12, (std::byte)241, (std::byte)248, (std::byte)68, (std::byte)245, (std::byte)71, (std::byte)136, (std::byte)172, (std::byte)64, (std::byte)75, (std::byte)76, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)25, (std::byte)118, (std::byte)169, (std::byte)20, (std::byte)43, (std::byte)107, (std::byte)167, (std::byte)201, (std::byte)215, (std::byte)150, (std::byte)183, (std::byte)94, (std::byte)239, (std::byte)121, (std::byte)66, (std::byte)252, (std::byte)146, (std::byte)136, (std::byte)237, (std::byte)211, (std::byte)124, (std::byte)50, (std::byte)245, (std::byte)195, (std::byte)136, (std::byte)172}}}>()
Unexecuted instantiation: auto util::hex_literals::operator"" _hex<util::detail::Hex<337ul>{std::array<std::byte, 168ul>{std::byte [168]{(std::byte)96, (std::byte)1, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)127, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)127, (std::byte)254, (std::byte)255, (std::byte)255, (std::byte)127, (std::byte)1, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)127, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)0, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)127, (std::byte)0, (std::byte)255, (std::byte)255, (std::byte)255, (std::byte)127, (std::byte)0, (std::byte)47, (std::byte)85, (std::byte)82, (std::byte)71, (std::byte)69, (std::byte)78, (std::byte)84, (std::byte)58, (std::byte)32, (std::byte)65, (std::byte)108, (std::byte)101, (std::byte)114, (std::byte)116, (std::byte)32, (std::byte)107, (std::byte)101, (std::byte)121, (std::byte)32, (std::byte)99, (std::byte)111, (std::byte)109, (std::byte)112, (std::byte)114, (std::byte)111, (std::byte)109, (std::byte)105, (std::byte)115, (std::byte)101, (std::byte)100, (std::byte)44, (std::byte)32, (std::byte)117, (std::byte)112, (std::byte)103, (std::byte)114, (std::byte)97, (std::byte)100, (std::byte)101, (std::byte)32, (std::byte)114, (std::byte)101, (std::byte)113, (std::byte)117, (std::byte)105, (std::byte)114, (std::byte)101, (std::byte)100, (std::byte)0, (std::byte)70, (std::byte)48, (std::byte)68, (std::byte)2, (std::byte)32, (std::byte)101, (std::byte)63, (std::byte)235, (std::byte)214, (std::byte)65, (std::byte)15, (std::byte)71, (std::byte)15, (std::byte)107, (std::byte)174, (std::byte)17, (std::byte)202, (std::byte)209, (std::byte)156, (std::byte)72, (std::byte)65, (std::byte)59, (std::byte)236, (std::byte)177, (std::byte)172, (std::byte)44, (std::byte)23, (std::byte)249, (std::byte)8, (std::byte)253, (std::byte)15, (std::byte)213, (std::byte)59, (std::byte)220, (std::byte)58, (std::byte)189, (std::byte)82, (std::byte)2, (std::byte)32, (std::byte)109, (std::byte)14, (std::byte)156, (std::byte)150, (std::byte)254, (std::byte)136, (std::byte)212, (std::byte)160, (std::byte)240, (std::byte)30, (std::byte)217, (std::byte)222, (std::byte)218, (std::byte)226, (std::byte)182, (std::byte)249, (std::byte)224, (std::byte)13, (std::byte)169, (std::byte)76, (std::byte)173, (std::byte)15, (std::byte)236, (std::byte)170, (std::byte)230, (std::byte)110, (std::byte)207, (std::byte)104, (std::byte)155, (std::byte)247, (std::byte)27, (std::byte)80}}}>()
404
405
template <util::detail::Hex str>
406
0
constexpr auto operator""_hex_u8() { return std::bit_cast<std::array<uint8_t, str.bytes.size()>>(str.bytes); }
Unexecuted instantiation: auto util::hex_literals::operator"" _hex_u8<util::detail::Hex<65ul>{std::array<std::byte, 32ul>{std::byte [32]{(std::byte)134, (std::byte)128, (std::byte)135, (std::byte)202, (std::byte)2, (std::byte)166, (std::byte)249, (std::byte)116, (std::byte)196, (std::byte)89, (std::byte)137, (std::byte)36, (std::byte)195, (std::byte)107, (std::byte)87, (std::byte)118, (std::byte)45, (std::byte)50, (std::byte)203, (std::byte)69, (std::byte)113, (std::byte)113, (std::byte)103, (std::byte)227, (std::byte)0, (std::byte)98, (std::byte)44, (std::byte)113, (std::byte)103, (std::byte)227, (std::byte)137, (std::byte)101}}}>()
Unexecuted instantiation: auto util::hex_literals::operator"" _hex_u8<util::detail::Hex<65ul>{std::array<std::byte, 32ul>{std::byte [32]{(std::byte)80, (std::byte)146, (std::byte)155, (std::byte)116, (std::byte)193, (std::byte)160, (std::byte)73, (std::byte)84, (std::byte)183, (std::byte)139, (std::byte)75, (std::byte)96, (std::byte)53, (std::byte)233, (std::byte)122, (std::byte)94, (std::byte)7, (std::byte)138, (std::byte)90, (std::byte)15, (std::byte)40, (std::byte)236, (std::byte)150, (std::byte)213, (std::byte)71, (std::byte)191, (std::byte)238, (std::byte)154, (std::byte)206, (std::byte)128, (std::byte)58, (std::byte)192}}}>()
407
408
template <util::detail::Hex str>
409
0
constexpr auto operator""_hex_v() { return std::vector<std::byte>{str.bytes.begin(), str.bytes.end()}; }
410
411
template <util::detail::Hex str>
412
0
inline auto operator""_hex_v_u8() { return std::vector<uint8_t>{UCharCast(str.bytes.data()), UCharCast(str.bytes.data() + str.bytes.size())}; }
413
414
} // inline namespace hex_literals
415
} // namespace util
416
417
#endif // BITCOIN_UTIL_STRENCODINGS_H