summaryrefslogtreecommitdiff
path: root/absl
diff options
context:
space:
mode:
authorGravatar Abseil Team <absl-team@google.com>2017-12-13 12:02:15 -0800
committerGravatar Titus Winters <titus@google.com>2017-12-14 09:04:37 -0500
commit720c017e30339fd1786ce4aac68bc8559736e53f (patch)
treee1ee954f7311f39125b93c91303828e27fc5e4cf /absl
parent5fe41affbaab5b9ad4876a6295c78f21a86d862d (diff)
Changes imported from Abseil "staging" branch:
- a42e9b454ca8be7d021789cdb9bcada07d3e2d3e Merge pull request #57. by Derek Mauro <dmauro@google.com> - b1e03838f059c034a6489501804d516326246042 Move the long ostream tests into a separate source file u... by Alex Strelnikov <strel@google.com> - 7c56b7dbb05faa7e8653632e00be470331d79cb9 Return reference from absl::InlinedVector::emplace_back(). by Abseil Team <absl-team@google.com> - 85b070822b62688ff348d9ad9cc9e230a851f617 Treat \u or \U followed by Unicode surrogate character as... by Abseil Team <absl-team@google.com> GitOrigin-RevId: a42e9b454ca8be7d021789cdb9bcada07d3e2d3e Change-Id: I7d8fb68ffd7eb4e9e737f21fbed6d56b71985f94
Diffstat (limited to 'absl')
-rw-r--r--absl/base/config.h2
-rw-r--r--absl/container/inlined_vector.h19
-rw-r--r--absl/container/inlined_vector_test.cc13
-rw-r--r--absl/debugging/internal/stacktrace_config.h2
-rw-r--r--absl/debugging/internal/stacktrace_powerpc-inl.inc2
-rw-r--r--absl/numeric/BUILD.bazel2
-rw-r--r--absl/numeric/int128_stream_test.cc666
-rw-r--r--absl/numeric/int128_test.cc23
-rw-r--r--absl/numeric/int128_test_unsigned_ostream_cases.inc880
-rw-r--r--absl/strings/escaping.cc17
-rw-r--r--absl/strings/escaping_test.cc13
11 files changed, 720 insertions, 919 deletions
diff --git a/absl/base/config.h b/absl/base/config.h
index fc48be0b..5802b653 100644
--- a/absl/base/config.h
+++ b/absl/base/config.h
@@ -254,7 +254,7 @@
// POSIX.1-2001.
#ifdef ABSL_HAVE_MMAP
#error ABSL_HAVE_MMAP cannot be directly set
-#elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \
+#elif defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \
defined(__ros__) || defined(__native_client__) || defined(__asmjs__) || \
defined(__Fuchsia__)
#define ABSL_HAVE_MMAP 1
diff --git a/absl/container/inlined_vector.h b/absl/container/inlined_vector.h
index e0bb900c..4bf9c18a 100644
--- a/absl/container/inlined_vector.h
+++ b/absl/container/inlined_vector.h
@@ -365,13 +365,14 @@ class InlinedVector {
// InlinedVector::emplace_back()
//
// Constructs and appends an object to the inlined vector.
+ //
+ // Returns a reference to the inserted element.
template <typename... Args>
- void emplace_back(Args&&... args) {
+ value_type& emplace_back(Args&&... args) {
size_type s = size();
assert(s <= capacity());
if (ABSL_PREDICT_FALSE(s == capacity())) {
- GrowAndEmplaceBack(std::forward<Args>(args)...);
- return;
+ return GrowAndEmplaceBack(std::forward<Args>(args)...);
}
assert(s < capacity());
@@ -383,7 +384,7 @@ class InlinedVector {
tag().set_inline_size(s + 1);
space = inlined_space();
}
- Construct(space + s, std::forward<Args>(args)...);
+ return Construct(space + s, std::forward<Args>(args)...);
}
// InlinedVector::push_back()
@@ -703,26 +704,30 @@ class InlinedVector {
}
template <typename... Args>
- void GrowAndEmplaceBack(Args&&... args) {
+ value_type& GrowAndEmplaceBack(Args&&... args) {
assert(size() == capacity());
const size_type s = size();
Allocation new_allocation(allocator(), 2 * capacity());
- Construct(new_allocation.buffer() + s, std::forward<Args>(args)...);
+ value_type& new_element =
+ Construct(new_allocation.buffer() + s, std::forward<Args>(args)...);
UninitializedCopy(std::make_move_iterator(data()),
std::make_move_iterator(data() + s),
new_allocation.buffer());
ResetAllocation(new_allocation, s + 1);
+
+ return new_element;
}
void InitAssign(size_type n);
void InitAssign(size_type n, const value_type& t);
template <typename... Args>
- void Construct(pointer p, Args&&... args) {
+ value_type& Construct(pointer p, Args&&... args) {
AllocatorTraits::construct(allocator(), p, std::forward<Args>(args)...);
+ return *p;
}
template <typename Iter>
diff --git a/absl/container/inlined_vector_test.cc b/absl/container/inlined_vector_test.cc
index 055bca98..8527ba1a 100644
--- a/absl/container/inlined_vector_test.cc
+++ b/absl/container/inlined_vector_test.cc
@@ -393,6 +393,19 @@ TEST(InlinedVectorTest, Noexcept) {
absl::InlinedVector<MoveCanThrow, 2>>::value));
}
+TEST(InlinedVectorTest, EmplaceBack) {
+ absl::InlinedVector<std::pair<std::string, int>, 1> v;
+
+ auto& inlined_element = v.emplace_back("answer", 42);
+ EXPECT_EQ(&inlined_element, &v[0]);
+ EXPECT_EQ(inlined_element.first, "answer");
+ EXPECT_EQ(inlined_element.second, 42);
+
+ auto& allocated_element = v.emplace_back("taxicab", 1729);
+ EXPECT_EQ(&allocated_element, &v[1]);
+ EXPECT_EQ(allocated_element.first, "taxicab");
+ EXPECT_EQ(allocated_element.second, 1729);
+}
TEST(IntVec, Insert) {
for (int len = 0; len < 20; len++) {
diff --git a/absl/debugging/internal/stacktrace_config.h b/absl/debugging/internal/stacktrace_config.h
index 9bd2a2ab..ed82722b 100644
--- a/absl/debugging/internal/stacktrace_config.h
+++ b/absl/debugging/internal/stacktrace_config.h
@@ -26,7 +26,7 @@
#error ABSL_STACKTRACE_INL_HEADER cannot be directly set
#elif defined(__native_client__) || defined(__APPLE__) || \
defined(__FreeBSD__) || defined(__ANDROID__) || defined(__myriad2__) || \
- defined(asmjs__) || defined(__Fuchsia__)
+ defined(__asmjs__) || defined(__Fuchsia__)
#define ABSL_STACKTRACE_INL_HEADER \
"absl/debugging/internal/stacktrace_unimplemented-inl.inc"
diff --git a/absl/debugging/internal/stacktrace_powerpc-inl.inc b/absl/debugging/internal/stacktrace_powerpc-inl.inc
index 60a889a9..9193e2db 100644
--- a/absl/debugging/internal/stacktrace_powerpc-inl.inc
+++ b/absl/debugging/internal/stacktrace_powerpc-inl.inc
@@ -48,7 +48,7 @@ static inline void *StacktracePowerPCGetLR(void **sp) {
#elif defined(_CALL_SYSV)
return *(sp+1);
#elif defined(__APPLE__) || defined(__FreeBSD__) || \
- (defined(__linux__) && defined(__PPC64__))
+ (defined(__linux__) && defined(__PPC64__))
// This check is in case the compiler doesn't define _CALL_AIX/etc.
return *(sp+2);
#elif defined(__linux)
diff --git a/absl/numeric/BUILD.bazel b/absl/numeric/BUILD.bazel
index 26d04774..4a24a879 100644
--- a/absl/numeric/BUILD.bazel
+++ b/absl/numeric/BUILD.bazel
@@ -27,8 +27,8 @@ cc_test(
name = "int128_test",
size = "small",
srcs = [
+ "int128_stream_test.cc",
"int128_test.cc",
- "int128_test_unsigned_ostream_cases.inc",
],
copts = ABSL_TEST_COPTS,
deps = [
diff --git a/absl/numeric/int128_stream_test.cc b/absl/numeric/int128_stream_test.cc
new file mode 100644
index 00000000..09efaad4
--- /dev/null
+++ b/absl/numeric/int128_stream_test.cc
@@ -0,0 +1,666 @@
+// Copyright 2017 The Abseil Authors.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#include "absl/numeric/int128.h"
+
+#include <sstream>
+#include <string>
+
+#include "gtest/gtest.h"
+
+namespace {
+
+struct Uint128TestCase {
+ absl::uint128 value;
+ std::ios_base::fmtflags flags;
+ std::streamsize width;
+ const char* expected;
+};
+
+constexpr char kFill = '_';
+
+std::string StreamFormatToString(std::ios_base::fmtflags flags,
+ std::streamsize width) {
+ std::vector<const char*> flagstr;
+ switch (flags & std::ios::basefield) {
+ case std::ios::dec:
+ flagstr.push_back("std::ios::dec");
+ break;
+ case std::ios::oct:
+ flagstr.push_back("std::ios::oct");
+ break;
+ case std::ios::hex:
+ flagstr.push_back("std::ios::hex");
+ break;
+ default: // basefield not specified
+ break;
+ }
+ switch (flags & std::ios::adjustfield) {
+ case std::ios::left:
+ flagstr.push_back("std::ios::left");
+ break;
+ case std::ios::internal:
+ flagstr.push_back("std::ios::internal");
+ break;
+ case std::ios::right:
+ flagstr.push_back("std::ios::right");
+ break;
+ default: // adjustfield not specified
+ break;
+ }
+ if (flags & std::ios::uppercase) flagstr.push_back("std::ios::uppercase");
+ if (flags & std::ios::showbase) flagstr.push_back("std::ios::showbase");
+ if (flags & std::ios::showpos) flagstr.push_back("std::ios::showpos");
+
+ std::ostringstream msg;
+ msg << "\n StreamFormatToString(test_case.flags, test_case.width)\n "
+ "flags: ";
+ if (!flagstr.empty()) {
+ for (size_t i = 0; i < flagstr.size() - 1; ++i) msg << flagstr[i] << " | ";
+ msg << flagstr.back();
+ } else {
+ msg << "(default)";
+ }
+ msg << "\n width: " << width << "\n fill: '" << kFill << "'";
+ return msg.str();
+}
+
+void CheckUint128Case(const Uint128TestCase& test_case) {
+ std::ostringstream os;
+ os.flags(test_case.flags);
+ os.width(test_case.width);
+ os.fill(kFill);
+ os << test_case.value;
+ SCOPED_TRACE(StreamFormatToString(test_case.flags, test_case.width));
+ EXPECT_EQ(test_case.expected, os.str());
+}
+
+constexpr std::ios::fmtflags kDec = std::ios::dec;
+constexpr std::ios::fmtflags kOct = std::ios::oct;
+constexpr std::ios::fmtflags kHex = std::ios::hex;
+constexpr std::ios::fmtflags kLeft = std::ios::left;
+constexpr std::ios::fmtflags kInt = std::ios::internal;
+constexpr std::ios::fmtflags kRight = std::ios::right;
+constexpr std::ios::fmtflags kUpper = std::ios::uppercase;
+constexpr std::ios::fmtflags kBase = std::ios::showbase;
+constexpr std::ios::fmtflags kPos = std::ios::showpos;
+
+TEST(Uint128, OStreamValueTest) {
+ CheckUint128Case({1, kDec, /*width = */ 0, "1"});
+ CheckUint128Case({1, kOct, /*width = */ 0, "1"});
+ CheckUint128Case({1, kHex, /*width = */ 0, "1"});
+ CheckUint128Case({9, kDec, /*width = */ 0, "9"});
+ CheckUint128Case({9, kOct, /*width = */ 0, "11"});
+ CheckUint128Case({9, kHex, /*width = */ 0, "9"});
+ CheckUint128Case({12345, kDec, /*width = */ 0, "12345"});
+ CheckUint128Case({12345, kOct, /*width = */ 0, "30071"});
+ CheckUint128Case({12345, kHex, /*width = */ 0, "3039"});
+ CheckUint128Case(
+ {0x8000000000000000, kDec, /*width = */ 0, "9223372036854775808"});
+ CheckUint128Case(
+ {0x8000000000000000, kOct, /*width = */ 0, "1000000000000000000000"});
+ CheckUint128Case(
+ {0x8000000000000000, kHex, /*width = */ 0, "8000000000000000"});
+ CheckUint128Case({std::numeric_limits<uint64_t>::max(), kDec,
+ /*width = */ 0, "18446744073709551615"});
+ CheckUint128Case({std::numeric_limits<uint64_t>::max(), kOct,
+ /*width = */ 0, "1777777777777777777777"});
+ CheckUint128Case({std::numeric_limits<uint64_t>::max(), kHex,
+ /*width = */ 0, "ffffffffffffffff"});
+ CheckUint128Case(
+ {absl::MakeUint128(1, 0), kDec, /*width = */ 0, "18446744073709551616"});
+ CheckUint128Case({absl::MakeUint128(1, 0), kOct, /*width = */ 0,
+ "2000000000000000000000"});
+ CheckUint128Case(
+ {absl::MakeUint128(1, 0), kHex, /*width = */ 0, "10000000000000000"});
+ CheckUint128Case({absl::MakeUint128(0x8000000000000000, 0), kDec,
+ /*width = */ 0, "170141183460469231731687303715884105728"});
+ CheckUint128Case({absl::MakeUint128(0x8000000000000000, 0), kOct,
+ /*width = */ 0,
+ "2000000000000000000000000000000000000000000"});
+ CheckUint128Case({absl::MakeUint128(0x8000000000000000, 0), kHex,
+ /*width = */ 0, "80000000000000000000000000000000"});
+ CheckUint128Case({absl::kuint128max, kDec, /*width = */ 0,
+ "340282366920938463463374607431768211455"});
+ CheckUint128Case({absl::kuint128max, kOct, /*width = */ 0,
+ "3777777777777777777777777777777777777777777"});
+ CheckUint128Case({absl::kuint128max, kHex, /*width = */ 0,
+ "ffffffffffffffffffffffffffffffff"});
+}
+
+std::vector<Uint128TestCase> GetUint128FormatCases();
+
+TEST(Uint128, OStreamFormatTest) {
+ for (const Uint128TestCase& test_case : GetUint128FormatCases()) {
+ CheckUint128Case(test_case);
+ }
+}
+
+std::vector<Uint128TestCase> GetUint128FormatCases() {
+ return {
+ {0, std::ios_base::fmtflags(), /*width = */ 0, "0"},
+ {0, std::ios_base::fmtflags(), /*width = */ 6, "_____0"},
+ {0, kPos, /*width = */ 0, "0"},
+ {0, kPos, /*width = */ 6, "_____0"},
+ {0, kBase, /*width = */ 0, "0"},
+ {0, kBase, /*width = */ 6, "_____0"},
+ {0, kBase | kPos, /*width = */ 0, "0"},
+ {0, kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kUpper, /*width = */ 0, "0"},
+ {0, kUpper, /*width = */ 6, "_____0"},
+ {0, kUpper | kPos, /*width = */ 0, "0"},
+ {0, kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kUpper | kBase, /*width = */ 0, "0"},
+ {0, kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kLeft, /*width = */ 0, "0"},
+ {0, kLeft, /*width = */ 6, "0_____"},
+ {0, kLeft | kPos, /*width = */ 0, "0"},
+ {0, kLeft | kPos, /*width = */ 6, "0_____"},
+ {0, kLeft | kBase, /*width = */ 0, "0"},
+ {0, kLeft | kBase, /*width = */ 6, "0_____"},
+ {0, kLeft | kBase | kPos, /*width = */ 0, "0"},
+ {0, kLeft | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kLeft | kUpper, /*width = */ 0, "0"},
+ {0, kLeft | kUpper, /*width = */ 6, "0_____"},
+ {0, kLeft | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kLeft | kUpper | kPos, /*width = */ 6, "0_____"},
+ {0, kLeft | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kLeft | kUpper | kBase, /*width = */ 6, "0_____"},
+ {0, kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kInt, /*width = */ 0, "0"},
+ {0, kInt, /*width = */ 6, "_____0"},
+ {0, kInt | kPos, /*width = */ 0, "0"},
+ {0, kInt | kPos, /*width = */ 6, "_____0"},
+ {0, kInt | kBase, /*width = */ 0, "0"},
+ {0, kInt | kBase, /*width = */ 6, "_____0"},
+ {0, kInt | kBase | kPos, /*width = */ 0, "0"},
+ {0, kInt | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kInt | kUpper, /*width = */ 0, "0"},
+ {0, kInt | kUpper, /*width = */ 6, "_____0"},
+ {0, kInt | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kInt | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kInt | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kInt | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kInt | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kRight, /*width = */ 0, "0"},
+ {0, kRight, /*width = */ 6, "_____0"},
+ {0, kRight | kPos, /*width = */ 0, "0"},
+ {0, kRight | kPos, /*width = */ 6, "_____0"},
+ {0, kRight | kBase, /*width = */ 0, "0"},
+ {0, kRight | kBase, /*width = */ 6, "_____0"},
+ {0, kRight | kBase | kPos, /*width = */ 0, "0"},
+ {0, kRight | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kRight | kUpper, /*width = */ 0, "0"},
+ {0, kRight | kUpper, /*width = */ 6, "_____0"},
+ {0, kRight | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kRight | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kRight | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kRight | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kRight | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec, /*width = */ 0, "0"},
+ {0, kDec, /*width = */ 6, "_____0"},
+ {0, kDec | kPos, /*width = */ 0, "0"},
+ {0, kDec | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kBase, /*width = */ 0, "0"},
+ {0, kDec | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kUpper, /*width = */ 0, "0"},
+ {0, kDec | kUpper, /*width = */ 6, "_____0"},
+ {0, kDec | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kDec | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kDec | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kLeft, /*width = */ 0, "0"},
+ {0, kDec | kLeft, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kPos, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kPos, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kBase, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kBase, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kUpper, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kUpper, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kUpper | kPos, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kUpper | kBase, /*width = */ 6, "0_____"},
+ {0, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kDec | kInt, /*width = */ 0, "0"},
+ {0, kDec | kInt, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kPos, /*width = */ 0, "0"},
+ {0, kDec | kInt | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kBase, /*width = */ 0, "0"},
+ {0, kDec | kInt | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kInt | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kUpper, /*width = */ 0, "0"},
+ {0, kDec | kInt | kUpper, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kDec | kInt | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kDec | kInt | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kInt | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kRight, /*width = */ 0, "0"},
+ {0, kDec | kRight, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kPos, /*width = */ 0, "0"},
+ {0, kDec | kRight | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kBase, /*width = */ 0, "0"},
+ {0, kDec | kRight | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kRight | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kUpper, /*width = */ 0, "0"},
+ {0, kDec | kRight | kUpper, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kDec | kRight | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kDec | kRight | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kDec | kRight | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kDec | kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct, /*width = */ 0, "0"},
+ {0, kOct, /*width = */ 6, "_____0"},
+ {0, kOct | kPos, /*width = */ 0, "0"},
+ {0, kOct | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kBase, /*width = */ 0, "0"},
+ {0, kOct | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kUpper, /*width = */ 0, "0"},
+ {0, kOct | kUpper, /*width = */ 6, "_____0"},
+ {0, kOct | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kOct | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kOct | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kLeft, /*width = */ 0, "0"},
+ {0, kOct | kLeft, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kPos, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kPos, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kBase, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kBase, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kUpper, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kUpper, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kUpper | kPos, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kUpper | kBase, /*width = */ 6, "0_____"},
+ {0, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kOct | kInt, /*width = */ 0, "0"},
+ {0, kOct | kInt, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kPos, /*width = */ 0, "0"},
+ {0, kOct | kInt | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kBase, /*width = */ 0, "0"},
+ {0, kOct | kInt | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kInt | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kUpper, /*width = */ 0, "0"},
+ {0, kOct | kInt | kUpper, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kOct | kInt | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kOct | kInt | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kInt | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kRight, /*width = */ 0, "0"},
+ {0, kOct | kRight, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kPos, /*width = */ 0, "0"},
+ {0, kOct | kRight | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kBase, /*width = */ 0, "0"},
+ {0, kOct | kRight | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kRight | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kUpper, /*width = */ 0, "0"},
+ {0, kOct | kRight | kUpper, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kOct | kRight | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kOct | kRight | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kOct | kRight | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kOct | kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex, /*width = */ 0, "0"},
+ {0, kHex, /*width = */ 6, "_____0"},
+ {0, kHex | kPos, /*width = */ 0, "0"},
+ {0, kHex | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kBase, /*width = */ 0, "0"},
+ {0, kHex | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kUpper, /*width = */ 0, "0"},
+ {0, kHex | kUpper, /*width = */ 6, "_____0"},
+ {0, kHex | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kHex | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kHex | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kLeft, /*width = */ 0, "0"},
+ {0, kHex | kLeft, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kPos, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kPos, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kBase, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kBase, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kUpper, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kUpper, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kUpper | kPos, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kUpper | kBase, /*width = */ 6, "0_____"},
+ {0, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0_____"},
+ {0, kHex | kInt, /*width = */ 0, "0"},
+ {0, kHex | kInt, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kPos, /*width = */ 0, "0"},
+ {0, kHex | kInt | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kBase, /*width = */ 0, "0"},
+ {0, kHex | kInt | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kInt | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kUpper, /*width = */ 0, "0"},
+ {0, kHex | kInt | kUpper, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kHex | kInt | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kHex | kInt | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kInt | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kInt | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kRight, /*width = */ 0, "0"},
+ {0, kHex | kRight, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kPos, /*width = */ 0, "0"},
+ {0, kHex | kRight | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kBase, /*width = */ 0, "0"},
+ {0, kHex | kRight | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kRight | kBase | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kUpper, /*width = */ 0, "0"},
+ {0, kHex | kRight | kUpper, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kUpper | kPos, /*width = */ 0, "0"},
+ {0, kHex | kRight | kUpper | kPos, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kUpper | kBase, /*width = */ 0, "0"},
+ {0, kHex | kRight | kUpper | kBase, /*width = */ 6, "_____0"},
+ {0, kHex | kRight | kUpper | kBase | kPos, /*width = */ 0, "0"},
+ {0, kHex | kRight | kUpper | kBase | kPos, /*width = */ 6, "_____0"},
+ {37, std::ios_base::fmtflags(), /*width = */ 0, "37"},
+ {37, std::ios_base::fmtflags(), /*width = */ 6, "____37"},
+ {37, kPos, /*width = */ 0, "37"},
+ {37, kPos, /*width = */ 6, "____37"},
+ {37, kBase, /*width = */ 0, "37"},
+ {37, kBase, /*width = */ 6, "____37"},
+ {37, kBase | kPos, /*width = */ 0, "37"},
+ {37, kBase | kPos, /*width = */ 6, "____37"},
+ {37, kUpper, /*width = */ 0, "37"},
+ {37, kUpper, /*width = */ 6, "____37"},
+ {37, kUpper | kPos, /*width = */ 0, "37"},
+ {37, kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kUpper | kBase, /*width = */ 0, "37"},
+ {37, kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kLeft, /*width = */ 0, "37"},
+ {37, kLeft, /*width = */ 6, "37____"},
+ {37, kLeft | kPos, /*width = */ 0, "37"},
+ {37, kLeft | kPos, /*width = */ 6, "37____"},
+ {37, kLeft | kBase, /*width = */ 0, "37"},
+ {37, kLeft | kBase, /*width = */ 6, "37____"},
+ {37, kLeft | kBase | kPos, /*width = */ 0, "37"},
+ {37, kLeft | kBase | kPos, /*width = */ 6, "37____"},
+ {37, kLeft | kUpper, /*width = */ 0, "37"},
+ {37, kLeft | kUpper, /*width = */ 6, "37____"},
+ {37, kLeft | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kLeft | kUpper | kPos, /*width = */ 6, "37____"},
+ {37, kLeft | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kLeft | kUpper | kBase, /*width = */ 6, "37____"},
+ {37, kLeft | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kLeft | kUpper | kBase | kPos, /*width = */ 6, "37____"},
+ {37, kInt, /*width = */ 0, "37"},
+ {37, kInt, /*width = */ 6, "____37"},
+ {37, kInt | kPos, /*width = */ 0, "37"},
+ {37, kInt | kPos, /*width = */ 6, "____37"},
+ {37, kInt | kBase, /*width = */ 0, "37"},
+ {37, kInt | kBase, /*width = */ 6, "____37"},
+ {37, kInt | kBase | kPos, /*width = */ 0, "37"},
+ {37, kInt | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kInt | kUpper, /*width = */ 0, "37"},
+ {37, kInt | kUpper, /*width = */ 6, "____37"},
+ {37, kInt | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kInt | kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kInt | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kInt | kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kInt | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kInt | kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kRight, /*width = */ 0, "37"},
+ {37, kRight, /*width = */ 6, "____37"},
+ {37, kRight | kPos, /*width = */ 0, "37"},
+ {37, kRight | kPos, /*width = */ 6, "____37"},
+ {37, kRight | kBase, /*width = */ 0, "37"},
+ {37, kRight | kBase, /*width = */ 6, "____37"},
+ {37, kRight | kBase | kPos, /*width = */ 0, "37"},
+ {37, kRight | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kRight | kUpper, /*width = */ 0, "37"},
+ {37, kRight | kUpper, /*width = */ 6, "____37"},
+ {37, kRight | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kRight | kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kRight | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kRight | kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kRight | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kRight | kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec, /*width = */ 0, "37"},
+ {37, kDec, /*width = */ 6, "____37"},
+ {37, kDec | kPos, /*width = */ 0, "37"},
+ {37, kDec | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kBase, /*width = */ 0, "37"},
+ {37, kDec | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kUpper, /*width = */ 0, "37"},
+ {37, kDec | kUpper, /*width = */ 6, "____37"},
+ {37, kDec | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kDec | kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kDec | kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kLeft, /*width = */ 0, "37"},
+ {37, kDec | kLeft, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kPos, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kPos, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kBase, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kBase, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kBase | kPos, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kUpper, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kUpper, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kUpper | kPos, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kUpper | kBase, /*width = */ 6, "37____"},
+ {37, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kLeft | kUpper | kBase | kPos, /*width = */ 6, "37____"},
+ {37, kDec | kInt, /*width = */ 0, "37"},
+ {37, kDec | kInt, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kPos, /*width = */ 0, "37"},
+ {37, kDec | kInt | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kBase, /*width = */ 0, "37"},
+ {37, kDec | kInt | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kInt | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kUpper, /*width = */ 0, "37"},
+ {37, kDec | kInt | kUpper, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kDec | kInt | kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kDec | kInt | kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kInt | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kInt | kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kRight, /*width = */ 0, "37"},
+ {37, kDec | kRight, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kPos, /*width = */ 0, "37"},
+ {37, kDec | kRight | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kBase, /*width = */ 0, "37"},
+ {37, kDec | kRight | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kRight | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kUpper, /*width = */ 0, "37"},
+ {37, kDec | kRight | kUpper, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kUpper | kPos, /*width = */ 0, "37"},
+ {37, kDec | kRight | kUpper | kPos, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kUpper | kBase, /*width = */ 0, "37"},
+ {37, kDec | kRight | kUpper | kBase, /*width = */ 6, "____37"},
+ {37, kDec | kRight | kUpper | kBase | kPos, /*width = */ 0, "37"},
+ {37, kDec | kRight | kUpper | kBase | kPos, /*width = */ 6, "____37"},
+ {37, kOct, /*width = */ 0, "45"},
+ {37, kOct, /*width = */ 6, "____45"},
+ {37, kOct | kPos, /*width = */ 0, "45"},
+ {37, kOct | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kBase, /*width = */ 0, "045"},
+ {37, kOct | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kOct | kUpper, /*width = */ 0, "45"},
+ {37, kOct | kUpper, /*width = */ 6, "____45"},
+ {37, kOct | kUpper | kPos, /*width = */ 0, "45"},
+ {37, kOct | kUpper | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kUpper | kBase, /*width = */ 0, "045"},
+ {37, kOct | kUpper | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kUpper | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kUpper | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kOct | kLeft, /*width = */ 0, "45"},
+ {37, kOct | kLeft, /*width = */ 6, "45____"},
+ {37, kOct | kLeft | kPos, /*width = */ 0, "45"},
+ {37, kOct | kLeft | kPos, /*width = */ 6, "45____"},
+ {37, kOct | kLeft | kBase, /*width = */ 0, "045"},
+ {37, kOct | kLeft | kBase, /*width = */ 6, "045___"},
+ {37, kOct | kLeft | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kLeft | kBase | kPos, /*width = */ 6, "045___"},
+ {37, kOct | kLeft | kUpper, /*width = */ 0, "45"},
+ {37, kOct | kLeft | kUpper, /*width = */ 6, "45____"},
+ {37, kOct | kLeft | kUpper | kPos, /*width = */ 0, "45"},
+ {37, kOct | kLeft | kUpper | kPos, /*width = */ 6, "45____"},
+ {37, kOct | kLeft | kUpper | kBase, /*width = */ 0, "045"},
+ {37, kOct | kLeft | kUpper | kBase, /*width = */ 6, "045___"},
+ {37, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kLeft | kUpper | kBase | kPos, /*width = */ 6, "045___"},
+ {37, kOct | kInt, /*width = */ 0, "45"},
+ {37, kOct | kInt, /*width = */ 6, "____45"},
+ {37, kOct | kInt | kPos, /*width = */ 0, "45"},
+ {37, kOct | kInt | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kInt | kBase, /*width = */ 0, "045"},
+ {37, kOct | kInt | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kInt | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kInt | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kOct | kInt | kUpper, /*width = */ 0, "45"},
+ {37, kOct | kInt | kUpper, /*width = */ 6, "____45"},
+ {37, kOct | kInt | kUpper | kPos, /*width = */ 0, "45"},
+ {37, kOct | kInt | kUpper | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kInt | kUpper | kBase, /*width = */ 0, "045"},
+ {37, kOct | kInt | kUpper | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kInt | kUpper | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kInt | kUpper | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kOct | kRight, /*width = */ 0, "45"},
+ {37, kOct | kRight, /*width = */ 6, "____45"},
+ {37, kOct | kRight | kPos, /*width = */ 0, "45"},
+ {37, kOct | kRight | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kRight | kBase, /*width = */ 0, "045"},
+ {37, kOct | kRight | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kRight | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kRight | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kOct | kRight | kUpper, /*width = */ 0, "45"},
+ {37, kOct | kRight | kUpper, /*width = */ 6, "____45"},
+ {37, kOct | kRight | kUpper | kPos, /*width = */ 0, "45"},
+ {37, kOct | kRight | kUpper | kPos, /*width = */ 6, "____45"},
+ {37, kOct | kRight | kUpper | kBase, /*width = */ 0, "045"},
+ {37, kOct | kRight | kUpper | kBase, /*width = */ 6, "___045"},
+ {37, kOct | kRight | kUpper | kBase | kPos, /*width = */ 0, "045"},
+ {37, kOct | kRight | kUpper | kBase | kPos, /*width = */ 6, "___045"},
+ {37, kHex, /*width = */ 0, "25"},
+ {37, kHex, /*width = */ 6, "____25"},
+ {37, kHex | kPos, /*width = */ 0, "25"},
+ {37, kHex | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kBase, /*width = */ 0, "0x25"},
+ {37, kHex | kBase, /*width = */ 6, "__0x25"},
+ {37, kHex | kBase | kPos, /*width = */ 0, "0x25"},
+ {37, kHex | kBase | kPos, /*width = */ 6, "__0x25"},
+ {37, kHex | kUpper, /*width = */ 0, "25"},
+ {37, kHex | kUpper, /*width = */ 6, "____25"},
+ {37, kHex | kUpper | kPos, /*width = */ 0, "25"},
+ {37, kHex | kUpper | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kUpper | kBase, /*width = */ 0, "0X25"},
+ {37, kHex | kUpper | kBase, /*width = */ 6, "__0X25"},
+ {37, kHex | kUpper | kBase | kPos, /*width = */ 0, "0X25"},
+ {37, kHex | kUpper | kBase | kPos, /*width = */ 6, "__0X25"},
+ {37, kHex | kLeft, /*width = */ 0, "25"},
+ {37, kHex | kLeft, /*width = */ 6, "25____"},
+ {37, kHex | kLeft | kPos, /*width = */ 0, "25"},
+ {37, kHex | kLeft | kPos, /*width = */ 6, "25____"},
+ {37, kHex | kLeft | kBase, /*width = */ 0, "0x25"},
+ {37, kHex | kLeft | kBase, /*width = */ 6, "0x25__"},
+ {37, kHex | kLeft | kBase | kPos, /*width = */ 0, "0x25"},
+ {37, kHex | kLeft | kBase | kPos, /*width = */ 6, "0x25__"},
+ {37, kHex | kLeft | kUpper, /*width = */ 0, "25"},
+ {37, kHex | kLeft | kUpper, /*width = */ 6, "25____"},
+ {37, kHex | kLeft | kUpper | kPos, /*width = */ 0, "25"},
+ {37, kHex | kLeft | kUpper | kPos, /*width = */ 6, "25____"},
+ {37, kHex | kLeft | kUpper | kBase, /*width = */ 0, "0X25"},
+ {37, kHex | kLeft | kUpper | kBase, /*width = */ 6, "0X25__"},
+ {37, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 0, "0X25"},
+ {37, kHex | kLeft | kUpper | kBase | kPos, /*width = */ 6, "0X25__"},
+ {37, kHex | kInt, /*width = */ 0, "25"},
+ {37, kHex | kInt, /*width = */ 6, "____25"},
+ {37, kHex | kInt | kPos, /*width = */ 0, "25"},
+ {37, kHex | kInt | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kInt | kBase, /*width = */ 0, "0x25"},
+ {37, kHex | kInt | kBase, /*width = */ 6, "0x__25"},
+ {37, kHex | kInt | kBase | kPos, /*width = */ 0, "0x25"},
+ {37, kHex | kInt | kBase | kPos, /*width = */ 6, "0x__25"},
+ {37, kHex | kInt | kUpper, /*width = */ 0, "25"},
+ {37, kHex | kInt | kUpper, /*width = */ 6, "____25"},
+ {37, kHex | kInt | kUpper | kPos, /*width = */ 0, "25"},
+ {37, kHex | kInt | kUpper | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kInt | kUpper | kBase, /*width = */ 0, "0X25"},
+ {37, kHex | kInt | kUpper | kBase, /*width = */ 6, "0X__25"},
+ {37, kHex | kInt | kUpper | kBase | kPos, /*width = */ 0, "0X25"},
+ {37, kHex | kInt | kUpper | kBase | kPos, /*width = */ 6, "0X__25"},
+ {37, kHex | kRight, /*width = */ 0, "25"},
+ {37, kHex | kRight, /*width = */ 6, "____25"},
+ {37, kHex | kRight | kPos, /*width = */ 0, "25"},
+ {37, kHex | kRight | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kRight | kBase, /*width = */ 0, "0x25"},
+ {37, kHex | kRight | kBase, /*width = */ 6, "__0x25"},
+ {37, kHex | kRight | kBase | kPos, /*width = */ 0, "0x25"},
+ {37, kHex | kRight | kBase | kPos, /*width = */ 6, "__0x25"},
+ {37, kHex | kRight | kUpper, /*width = */ 0, "25"},
+ {37, kHex | kRight | kUpper, /*width = */ 6, "____25"},
+ {37, kHex | kRight | kUpper | kPos, /*width = */ 0, "25"},
+ {37, kHex | kRight | kUpper | kPos, /*width = */ 6, "____25"},
+ {37, kHex | kRight | kUpper | kBase, /*width = */ 0, "0X25"},
+ {37, kHex | kRight | kUpper | kBase, /*width = */ 6, "__0X25"},
+ {37, kHex | kRight | kUpper | kBase | kPos, /*width = */ 0, "0X25"},
+ {37, kHex | kRight | kUpper | kBase | kPos, /*width = */ 6, "__0X25"}};
+}
+
+} // namespace
diff --git a/absl/numeric/int128_test.cc b/absl/numeric/int128_test.cc
index ce44cd4b..75fd6371 100644
--- a/absl/numeric/int128_test.cc
+++ b/absl/numeric/int128_test.cc
@@ -17,7 +17,6 @@
#include <algorithm>
#include <limits>
#include <random>
-#include <sstream>
#include <type_traits>
#include <utility>
#include <vector>
@@ -427,26 +426,4 @@ TEST(Uint128, ConstexprTest) {
EXPECT_EQ(minus_two, absl::MakeUint128(-1, -2));
}
-TEST(Uint128, OStream) {
- struct StreamCase {
- absl::uint128 val;
- std::ios_base::fmtflags flags;
- std::streamsize width;
- char fill;
- const char* rep;
- };
-
- std::vector<StreamCase> cases = {
-#include "absl/numeric/int128_test_unsigned_ostream_cases.inc"
- };
- for (const StreamCase& test_case : cases) {
- std::ostringstream os;
- os.flags(test_case.flags);
- os.width(test_case.width);
- os.fill(test_case.fill);
- os << test_case.val;
- EXPECT_EQ(test_case.rep, os.str());
- }
-}
-
} // namespace
diff --git a/absl/numeric/int128_test_unsigned_ostream_cases.inc b/absl/numeric/int128_test_unsigned_ostream_cases.inc
deleted file mode 100644
index 7d2fc77f..00000000
--- a/absl/numeric/int128_test_unsigned_ostream_cases.inc
+++ /dev/null
@@ -1,880 +0,0 @@
-// A small set of cases created manually for values greater than 2^64.
-
-{absl::MakeUint128(1, 0), std::ios::dec, 0, '_', "18446744073709551616"},
-{absl::MakeUint128(1, 0), std::ios::oct, 0, '_', "2000000000000000000000"},
-{absl::MakeUint128(1, 0), std::ios::hex, 0, '_', "10000000000000000"},
-{absl::MakeUint128(0x8000000000000000, 0), std::ios::dec, 0, '_', "170141183460469231731687303715884105728"},
-{absl::MakeUint128(0x8000000000000000, 0), std::ios::oct, 0, '_', "2000000000000000000000000000000000000000000"},
-{absl::MakeUint128(0x8000000000000000, 0), std::ios::hex, 0, '_', "80000000000000000000000000000000"},
-{absl::MakeUint128(-1, -1), std::ios::dec, 0, '_', "340282366920938463463374607431768211455"},
-{absl::MakeUint128(-1, -1), std::ios::oct, 0, '_', "3777777777777777777777777777777777777777777"},
-{absl::MakeUint128(-1, -1), std::ios::hex, 0, '_', "ffffffffffffffffffffffffffffffff"},
-
-// An exhaustive set of formatting cases generated with select values that fit
-// into a uint64_t so they can be compared to what was output by the standard
-// implementation.
-
-{0, std::ios::dec | std::ios::left, 0, '_', "0"},
-{0, std::ios::dec | std::ios::left, 10, '_', "0_________"},
-{0, std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "0_________"},
-{0, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "0"},
-{0, std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "0_________"},
-{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0_________"},
-{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::dec | std::ios::internal, 0, '_', "0"},
-{0, std::ios::dec | std::ios::internal, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "0"},
-{0, std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::right, 0, '_', "0"},
-{0, std::ios::dec | std::ios::right, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "0"},
-{0, std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::left, 0, '_', "0"},
-{0, std::ios::oct | std::ios::left, 10, '_', "0_________"},
-{0, std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "0_________"},
-{0, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "0"},
-{0, std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "0_________"},
-{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0_________"},
-{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::oct | std::ios::internal, 0, '_', "0"},
-{0, std::ios::oct | std::ios::internal, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "0"},
-{0, std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::right, 0, '_', "0"},
-{0, std::ios::oct | std::ios::right, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "0"},
-{0, std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::left, 0, '_', "0"},
-{0, std::ios::hex | std::ios::left, 10, '_', "0_________"},
-{0, std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0_________"},
-{0, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "0"},
-{0, std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "0_________"},
-{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0_________"},
-{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0_________"},
-{0, std::ios::hex | std::ios::internal, 0, '_', "0"},
-{0, std::ios::hex | std::ios::internal, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "0"},
-{0, std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::right, 0, '_', "0"},
-{0, std::ios::hex | std::ios::right, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "0"},
-{0, std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0"},
-{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_________0"},
-{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0"},
-{0, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________0"},
-{8, std::ios::dec | std::ios::left, 0, '_', "8"},
-{8, std::ios::dec | std::ios::left, 10, '_', "8_________"},
-{8, std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "8_________"},
-{8, std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "8"},
-{8, std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "8_________"},
-{8, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "8_________"},
-{8, std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "8"},
-{8, std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "8_________"},
-{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "8_________"},
-{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "8"},
-{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "8_________"},
-{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "8_________"},
-{8, std::ios::dec | std::ios::internal, 0, '_', "8"},
-{8, std::ios::dec | std::ios::internal, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "8"},
-{8, std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "8"},
-{8, std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "8"},
-{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::right, 0, '_', "8"},
-{8, std::ios::dec | std::ios::right, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "8"},
-{8, std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "8"},
-{8, std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "8"},
-{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_________8"},
-{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::oct | std::ios::left, 0, '_', "10"},
-{8, std::ios::oct | std::ios::left, 10, '_', "10________"},
-{8, std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "10"},
-{8, std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "10________"},
-{8, std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "010"},
-{8, std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "010_______"},
-{8, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "010"},
-{8, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "010_______"},
-{8, std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "10"},
-{8, std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "10________"},
-{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "10"},
-{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "10________"},
-{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "010"},
-{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "010_______"},
-{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "010"},
-{8, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "010_______"},
-{8, std::ios::oct | std::ios::internal, 0, '_', "10"},
-{8, std::ios::oct | std::ios::internal, 10, '_', "________10"},
-{8, std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "10"},
-{8, std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "________10"},
-{8, std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "010"},
-{8, std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "_______010"},
-{8, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "010"},
-{8, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_______010"},
-{8, std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "10"},
-{8, std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "________10"},
-{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "10"},
-{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "________10"},
-{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "010"},
-{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_______010"},
-{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "010"},
-{8, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_______010"},
-{8, std::ios::oct | std::ios::right, 0, '_', "10"},
-{8, std::ios::oct | std::ios::right, 10, '_', "________10"},
-{8, std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "10"},
-{8, std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "________10"},
-{8, std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "010"},
-{8, std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "_______010"},
-{8, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "010"},
-{8, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_______010"},
-{8, std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "10"},
-{8, std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "________10"},
-{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "10"},
-{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "________10"},
-{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "010"},
-{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_______010"},
-{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "010"},
-{8, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_______010"},
-{8, std::ios::hex | std::ios::left, 0, '_', "8"},
-{8, std::ios::hex | std::ios::left, 10, '_', "8_________"},
-{8, std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "8_________"},
-{8, std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0x8"},
-{8, std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0x8_______"},
-{8, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0x8"},
-{8, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0x8_______"},
-{8, std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "8"},
-{8, std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "8_________"},
-{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "8_________"},
-{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8"},
-{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0X8_______"},
-{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8"},
-{8, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X8_______"},
-{8, std::ios::hex | std::ios::internal, 0, '_', "8"},
-{8, std::ios::hex | std::ios::internal, 10, '_', "_________8"},
-{8, std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0x8"},
-{8, std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "0x_______8"},
-{8, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0x8"},
-{8, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "0x_______8"},
-{8, std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "8"},
-{8, std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "_________8"},
-{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8"},
-{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "0X_______8"},
-{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8"},
-{8, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X_______8"},
-{8, std::ios::hex | std::ios::right, 0, '_', "8"},
-{8, std::ios::hex | std::ios::right, 10, '_', "_________8"},
-{8, std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0x8"},
-{8, std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "_______0x8"},
-{8, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0x8"},
-{8, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_______0x8"},
-{8, std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "8"},
-{8, std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "_________8"},
-{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "8"},
-{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_________8"},
-{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8"},
-{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_______0X8"},
-{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8"},
-{8, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_______0X8"},
-{31, std::ios::dec | std::ios::left, 0, '_', "31"},
-{31, std::ios::dec | std::ios::left, 10, '_', "31________"},
-{31, std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "31________"},
-{31, std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "31"},
-{31, std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "31________"},
-{31, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "31________"},
-{31, std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "31"},
-{31, std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "31________"},
-{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "31________"},
-{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "31"},
-{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "31________"},
-{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "31________"},
-{31, std::ios::dec | std::ios::internal, 0, '_', "31"},
-{31, std::ios::dec | std::ios::internal, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "31"},
-{31, std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "31"},
-{31, std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "31"},
-{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::right, 0, '_', "31"},
-{31, std::ios::dec | std::ios::right, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "31"},
-{31, std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "31"},
-{31, std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "31"},
-{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "________31"},
-{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "31"},
-{31, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "________31"},
-{31, std::ios::oct | std::ios::left, 0, '_', "37"},
-{31, std::ios::oct | std::ios::left, 10, '_', "37________"},
-{31, std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "37"},
-{31, std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "37________"},
-{31, std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "037"},
-{31, std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "037_______"},
-{31, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "037"},
-{31, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "037_______"},
-{31, std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "37"},
-{31, std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "37________"},
-{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "37"},
-{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "37________"},
-{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "037"},
-{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "037_______"},
-{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "037"},
-{31, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "037_______"},
-{31, std::ios::oct | std::ios::internal, 0, '_', "37"},
-{31, std::ios::oct | std::ios::internal, 10, '_', "________37"},
-{31, std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "37"},
-{31, std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "________37"},
-{31, std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "037"},
-{31, std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "_______037"},
-{31, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "037"},
-{31, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_______037"},
-{31, std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "37"},
-{31, std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "________37"},
-{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "37"},
-{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "________37"},
-{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "037"},
-{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_______037"},
-{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "037"},
-{31, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_______037"},
-{31, std::ios::oct | std::ios::right, 0, '_', "37"},
-{31, std::ios::oct | std::ios::right, 10, '_', "________37"},
-{31, std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "37"},
-{31, std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "________37"},
-{31, std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "037"},
-{31, std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "_______037"},
-{31, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "037"},
-{31, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_______037"},
-{31, std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "37"},
-{31, std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "________37"},
-{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "37"},
-{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "________37"},
-{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "037"},
-{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_______037"},
-{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "037"},
-{31, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_______037"},
-{31, std::ios::hex | std::ios::left, 0, '_', "1f"},
-{31, std::ios::hex | std::ios::left, 10, '_', "1f________"},
-{31, std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "1f"},
-{31, std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "1f________"},
-{31, std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0x1f"},
-{31, std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0x1f______"},
-{31, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0x1f"},
-{31, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0x1f______"},
-{31, std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "1F"},
-{31, std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "1F________"},
-{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "1F"},
-{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "1F________"},
-{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0X1F"},
-{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0X1F______"},
-{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X1F"},
-{31, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X1F______"},
-{31, std::ios::hex | std::ios::internal, 0, '_', "1f"},
-{31, std::ios::hex | std::ios::internal, 10, '_', "________1f"},
-{31, std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "1f"},
-{31, std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "________1f"},
-{31, std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0x1f"},
-{31, std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "0x______1f"},
-{31, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0x1f"},
-{31, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "0x______1f"},
-{31, std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "1F"},
-{31, std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "________1F"},
-{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "1F"},
-{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "________1F"},
-{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0X1F"},
-{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "0X______1F"},
-{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X1F"},
-{31, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X______1F"},
-{31, std::ios::hex | std::ios::right, 0, '_', "1f"},
-{31, std::ios::hex | std::ios::right, 10, '_', "________1f"},
-{31, std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "1f"},
-{31, std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "________1f"},
-{31, std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0x1f"},
-{31, std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "______0x1f"},
-{31, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0x1f"},
-{31, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "______0x1f"},
-{31, std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "1F"},
-{31, std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "________1F"},
-{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "1F"},
-{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "________1F"},
-{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0X1F"},
-{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "______0X1F"},
-{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X1F"},
-{31, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "______0X1F"},
-{12345, std::ios::dec | std::ios::left, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::left, 10, '_', "12345_____"},
-{12345, std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "12345_____"},
-{12345, std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "12345_____"},
-{12345, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "12345_____"},
-{12345, std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "12345_____"},
-{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "12345_____"},
-{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "12345_____"},
-{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "12345_____"},
-{12345, std::ios::dec | std::ios::internal, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::internal, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::right, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::right, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "_____12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "12345"},
-{12345, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "_____12345"},
-{12345, std::ios::oct | std::ios::left, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::left, 10, '_', "30071_____"},
-{12345, std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "30071_____"},
-{12345, std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "030071____"},
-{12345, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "030071____"},
-{12345, std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "30071_____"},
-{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "30071_____"},
-{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "030071____"},
-{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "030071____"},
-{12345, std::ios::oct | std::ios::internal, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::internal, 10, '_', "_____30071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "_____30071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "____030071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "____030071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "_____30071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "_____30071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "____030071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "____030071"},
-{12345, std::ios::oct | std::ios::right, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::right, 10, '_', "_____30071"},
-{12345, std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "_____30071"},
-{12345, std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "____030071"},
-{12345, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "____030071"},
-{12345, std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "_____30071"},
-{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "30071"},
-{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "_____30071"},
-{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "____030071"},
-{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "030071"},
-{12345, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "____030071"},
-{12345, std::ios::hex | std::ios::left, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::left, 10, '_', "3039______"},
-{12345, std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "3039______"},
-{12345, std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0x3039"},
-{12345, std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0x3039____"},
-{12345, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0x3039"},
-{12345, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0x3039____"},
-{12345, std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "3039______"},
-{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "3039______"},
-{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0X3039"},
-{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0X3039____"},
-{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X3039"},
-{12345, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X3039____"},
-{12345, std::ios::hex | std::ios::internal, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::internal, 10, '_', "______3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "______3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0x3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "0x____3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0x3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "0x____3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "______3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "______3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0X3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "0X____3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X3039"},
-{12345, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X____3039"},
-{12345, std::ios::hex | std::ios::right, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::right, 10, '_', "______3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "______3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0x3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "____0x3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0x3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "____0x3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "______3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "______3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0X3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "____0X3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X3039"},
-{12345, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "____0X3039"},
-{0x8000000000000000, std::ios::dec | std::ios::left, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "9223372036854775808"},
-{0x8000000000000000, std::ios::oct | std::ios::left, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "1000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01000000000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "0x8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0X8000000000000000"},
-{0x8000000000000000, std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0X8000000000000000"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showbase, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showbase, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showbase, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showbase, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showbase, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showbase, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::dec | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "18446744073709551615"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showpos, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showpos, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showbase, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showbase, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showpos, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showpos, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showbase, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showbase, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showpos, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showpos, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showbase, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showbase, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "1777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::oct | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "01777777777777777777777"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left, 0, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left, 10, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showpos, 0, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showpos, 10, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showbase, 0, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showbase, 10, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 0, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::showbase | std::ios::showpos, 10, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase, 0, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase, 10, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 0, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showpos, 10, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 0, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase, 10, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::left | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal, 0, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal, 10, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showpos, 0, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showpos, 10, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showbase, 0, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showbase, 10, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 0, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::showbase | std::ios::showpos, 10, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase, 0, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase, 10, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 0, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showpos, 10, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 0, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase, 10, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::internal | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right, 0, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right, 10, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showpos, 0, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showpos, 10, '_', "ffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showbase, 0, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showbase, 10, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 0, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::showbase | std::ios::showpos, 10, '_', "0xffffffffffffffff"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase, 0, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase, 10, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 0, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showpos, 10, '_', "FFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 0, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase, 10, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 0, '_', "0XFFFFFFFFFFFFFFFF"},
-{std::numeric_limits<uint64_t>::max(), std::ios::hex | std::ios::right | std::ios::uppercase | std::ios::showbase | std::ios::showpos, 10, '_', "0XFFFFFFFFFFFFFFFF"},
diff --git a/absl/strings/escaping.cc b/absl/strings/escaping.cc
index 7d688ac3..abe9e0aa 100644
--- a/absl/strings/escaping.cc
+++ b/absl/strings/escaping.cc
@@ -72,6 +72,17 @@ inline int hex_digit_to_int(char c) {
return x & 0xf;
}
+inline bool IsSurrogate(char32_t c, absl::string_view src, std::string* error) {
+ if (c >= 0xD800 && c <= 0xDFFF) {
+ if (error) {
+ *error = absl::StrCat("invalid surrogate character (0xD800-DFFF): \\",
+ src);
+ }
+ return true;
+ }
+ return false;
+}
+
// ----------------------------------------------------------------------
// CUnescapeInternal()
// Implements both CUnescape() and CUnescapeForNullTerminatedString().
@@ -214,6 +225,9 @@ bool CUnescapeInternal(absl::string_view source, bool leave_nulls_escaped,
d += 5;
break;
}
+ if (IsSurrogate(rune, absl::string_view(hex_start, 5), error)) {
+ return false;
+ }
d += strings_internal::EncodeUTF8Char(d, rune);
break;
}
@@ -259,6 +273,9 @@ bool CUnescapeInternal(absl::string_view source, bool leave_nulls_escaped,
d += 9;
break;
}
+ if (IsSurrogate(rune, absl::string_view(hex_start, 9), error)) {
+ return false;
+ }
d += strings_internal::EncodeUTF8Char(d, rune);
break;
}
diff --git a/absl/strings/escaping_test.cc b/absl/strings/escaping_test.cc
index ecac9ca8..982989b8 100644
--- a/absl/strings/escaping_test.cc
+++ b/absl/strings/escaping_test.cc
@@ -160,11 +160,14 @@ TEST(Unescape, BasicFunction) {
EXPECT_EQ(out, val.unescaped);
}
std::string bad[] =
- {"\\u1", // too short
- "\\U1", // too short
- "\\Uffffff",
- "\\777", // exceeds 0xff
- "\\xABCD"}; // exceeds 0xff
+ {"\\u1", // too short
+ "\\U1", // too short
+ "\\Uffffff", // exceeds 0x10ffff (largest Unicode)
+ "\\U00110000", // exceeds 0x10ffff (largest Unicode)
+ "\\uD835", // surrogate character (D800-DFFF)
+ "\\U0000DD04", // surrogate character (D800-DFFF)
+ "\\777", // exceeds 0xff
+ "\\xABCD"}; // exceeds 0xff
for (const std::string& e : bad) {
std::string error;
std::string out;