From 184a491341fd683c89d8253eb3945088c0ddbbf5 Mon Sep 17 00:00:00 2001 From: Dmitry Atamanov Date: Mon, 29 Sep 2025 14:04:22 +0500 Subject: [PATCH] Update to Unicode 17.0 --- CHANGELOG.md | 2 +- include/lug/unicode.hpp | 1322 ++++++++++++++++++++------------------- tools/makeunicode.cpp | 13 +- 3 files changed, 688 insertions(+), 649 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf2cbf6..01b46e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ * Implemented collection and object attribute directives. The new `collect[e]` directive synthesizes a sequence or associative container type `C` consisting of elements gathered from the inherited or synthesized attributes in expression `e`. Likewise, there also new `synthesize[e]`, `synthesize_shared[e]` and `synthesize_unique[e]` directives for synthesizing objects, shared pointers and unique pointers respectively, constructed from the component attributes in expression `e`. * Implemented `synthesize_collect` directive that combines `collect` and `synthesize` directives together for improved code readability and reduced boilerplate when constructing complex data structures from parsed elements. This is particularly useful for building nested collections like arrays of objects or maps with complex value types. * Added `lug::recursive_wrapper` template class for handling circular dependencies in abstract syntax trees, particularily those making use of `std::variant`. -* Updated to Unicode Standard Version 16.0.0 and added support for building tools to CMakeLists.txt. +* Updated to Unicode Standard Version 17.0.0 and added support for building tools to CMakeLists.txt. * Optimized character range and rune set matching for ASCII characters, resulting in significant performance improvements for common text processing operations. Added specialized fast paths for ASCII-only inputs that bypass the more expensive Unicode handling code. * Implemented test opcodes for head-fail optimization and repeat opcodes for optimized whitespace skipping. These optimizations will be fully enabled in the next release after planned expression tree transformations. * Enhanced input source handling with improved buffering and error reporting for `std::istream` sources, and improved the interactive mode support that properly handles line-by-line input for terminal sessions or for line-oriented grammars. diff --git a/include/lug/unicode.hpp b/include/lug/unicode.hpp index ae9c1c7..25554c6 100644 --- a/include/lug/unicode.hpp +++ b/include/lug/unicode.hpp @@ -338,7 +338,11 @@ enum class sctype : std::uint_least8_t Ol_Onal = 167, Sunuwar = 168, Todhri = 169, - Tulu_Tigalari = 170 + Tulu_Tigalari = 170, + Beria_Erfe = 171, + Sidetic = 172, + Tai_Yo = 173, + Tolong_Siki = 174 }; // Blocks @@ -682,7 +686,15 @@ enum class blktype : std::uint_least16_t Gurung_Khema = 335, Kirat_Rai = 336, Symbols_for_Legacy_Computing_Supplement = 337, - Ol_Onal = 338 + Ol_Onal = 338, + Beria_Erfe = 339, + CJK_Unified_Ideographs_Extension_J = 340, + Miscellaneous_Symbols_Supplement = 341, + Sharada_Supplement = 342, + Sidetic = 343, + Tai_Yo = 344, + Tangut_Components_Supplement = 345, + Tolong_Siki = 346 }; // Character Age @@ -715,7 +727,8 @@ enum class agetype : std::uint_least8_t v14_0 = 24, v15_0 = 25, v15_1 = 26, - v16_0 = 27 + v16_0 = 27, + v17_0 = 28 }; // East Asian Width @@ -780,8 +793,8 @@ class record explicit record(raw_record const* r) noexcept : raw_(r) {} struct raw_record_table { std::array stage1; - std::array stage2; - std::array records; + std::array stage2; + std::array records; }; [[nodiscard]] static std::int_least32_t case_mapping(std::size_t index) noexcept; [[nodiscard]] static std::unique_ptr decompress_table(); @@ -813,7 +826,7 @@ class record [[nodiscard]] inline record query(char32_t r) { static auto const table = record::decompress_table(); - std::size_t index = 1984; + std::size_t index = 2033; if (r < 0x110000) { index = table->stage1[r >> 7U]; index = table->stage2[(index << 7U) | (r & 0x7fU)]; @@ -1161,13 +1174,13 @@ inline std::optional stosctype(std::string_view s) using namespace std::string_view_literals; using sc = sctype; - static constexpr std::array, 171> labels = + static constexpr std::array, 175> labels = { { { "adlam"sv, sc::Adlam }, { "ahom"sv, sc::Ahom }, { "anatolianhieroglyphs"sv, sc::Anatolian_Hieroglyphs }, { "arabic"sv, sc::Arabic }, { "armenian"sv, sc::Armenian }, { "avestan"sv, sc::Avestan }, { "balinese"sv, sc::Balinese }, { "bamum"sv, sc::Bamum }, { "bassavah"sv, sc::Bassa_Vah }, { "batak"sv, sc::Batak }, { "bengali"sv, sc::Bengali }, - { "bhaiksuki"sv, sc::Bhaiksuki }, { "bopomofo"sv, sc::Bopomofo }, { "brahmi"sv, sc::Brahmi }, - { "braille"sv, sc::Braille }, { "buginese"sv, sc::Buginese }, { "buhid"sv, sc::Buhid }, + { "beriaerfe"sv, sc::Beria_Erfe }, { "bhaiksuki"sv, sc::Bhaiksuki }, { "bopomofo"sv, sc::Bopomofo }, + { "brahmi"sv, sc::Brahmi }, { "braille"sv, sc::Braille }, { "buginese"sv, sc::Buginese }, { "buhid"sv, sc::Buhid }, { "canadianaboriginal"sv, sc::Canadian_Aboriginal }, { "carian"sv, sc::Carian }, { "caucasianalbanian"sv, sc::Caucasian_Albanian }, { "chakma"sv, sc::Chakma }, { "cham"sv, sc::Cham }, { "cherokee"sv, sc::Cherokee }, { "chorasmian"sv, sc::Chorasmian }, { "common"sv, sc::Common }, @@ -1205,14 +1218,15 @@ inline std::optional stosctype(std::string_view s) { "paucinhau"sv, sc::Pau_Cin_Hau }, { "phagspa"sv, sc::Phags_Pa }, { "phoenician"sv, sc::Phoenician }, { "psalterpahlavi"sv, sc::Psalter_Pahlavi }, { "rejang"sv, sc::Rejang }, { "runic"sv, sc::Runic }, { "samaritan"sv, sc::Samaritan }, { "saurashtra"sv, sc::Saurashtra }, { "sharada"sv, sc::Sharada }, - { "shavian"sv, sc::Shavian }, { "siddham"sv, sc::Siddham }, { "signwriting"sv, sc::SignWriting }, - { "sinhala"sv, sc::Sinhala }, { "sogdian"sv, sc::Sogdian }, { "sorasompeng"sv, sc::Sora_Sompeng }, - { "soyombo"sv, sc::Soyombo }, { "sundanese"sv, sc::Sundanese }, { "sunuwar"sv, sc::Sunuwar }, - { "sylotinagri"sv, sc::Syloti_Nagri }, { "syriac"sv, sc::Syriac }, { "tagalog"sv, sc::Tagalog }, - { "tagbanwa"sv, sc::Tagbanwa }, { "taile"sv, sc::Tai_Le }, { "taitham"sv, sc::Tai_Tham }, { "taiviet"sv, sc::Tai_Viet }, - { "takri"sv, sc::Takri }, { "tamil"sv, sc::Tamil }, { "tangsa"sv, sc::Tangsa }, { "tangut"sv, sc::Tangut }, - { "telugu"sv, sc::Telugu }, { "thaana"sv, sc::Thaana }, { "thai"sv, sc::Thai }, { "tibetan"sv, sc::Tibetan }, - { "tifinagh"sv, sc::Tifinagh }, { "tirhuta"sv, sc::Tirhuta }, { "todhri"sv, sc::Todhri }, { "toto"sv, sc::Toto }, + { "shavian"sv, sc::Shavian }, { "siddham"sv, sc::Siddham }, { "sidetic"sv, sc::Sidetic }, + { "signwriting"sv, sc::SignWriting }, { "sinhala"sv, sc::Sinhala }, { "sogdian"sv, sc::Sogdian }, + { "sorasompeng"sv, sc::Sora_Sompeng }, { "soyombo"sv, sc::Soyombo }, { "sundanese"sv, sc::Sundanese }, + { "sunuwar"sv, sc::Sunuwar }, { "sylotinagri"sv, sc::Syloti_Nagri }, { "syriac"sv, sc::Syriac }, + { "tagalog"sv, sc::Tagalog }, { "tagbanwa"sv, sc::Tagbanwa }, { "taile"sv, sc::Tai_Le }, { "taitham"sv, sc::Tai_Tham }, + { "taiviet"sv, sc::Tai_Viet }, { "taiyo"sv, sc::Tai_Yo }, { "takri"sv, sc::Takri }, { "tamil"sv, sc::Tamil }, + { "tangsa"sv, sc::Tangsa }, { "tangut"sv, sc::Tangut }, { "telugu"sv, sc::Telugu }, { "thaana"sv, sc::Thaana }, + { "thai"sv, sc::Thai }, { "tibetan"sv, sc::Tibetan }, { "tifinagh"sv, sc::Tifinagh }, { "tirhuta"sv, sc::Tirhuta }, + { "todhri"sv, sc::Todhri }, { "tolongsiki"sv, sc::Tolong_Siki }, { "toto"sv, sc::Toto }, { "tulutigalari"sv, sc::Tulu_Tigalari }, { "ugaritic"sv, sc::Ugaritic }, { "unknown"sv, sc::Unknown }, { "vai"sv, sc::Vai }, { "vithkuqi"sv, sc::Vithkuqi }, { "wancho"sv, sc::Wancho }, { "warangciti"sv, sc::Warang_Citi }, { "yezidi"sv, sc::Yezidi }, { "yi"sv, sc::Yi }, { "zanabazarsquare"sv, sc::Zanabazar_Square } @@ -1229,7 +1243,7 @@ inline std::optional stoblktype(std::string_view s) using namespace std::string_view_literals; using blk = blktype; - static constexpr std::array, 339> labels = + static constexpr std::array, 347> labels = { { { "adlam"sv, blk::Adlam }, { "aegeannumbers"sv, blk::Aegean_Numbers }, { "ahom"sv, blk::Ahom }, { "alchemicalsymbols"sv, blk::Alchemical_Symbols }, { "alphabeticpresentationforms"sv, blk::Alphabetic_Presentation_Forms }, @@ -1241,9 +1255,9 @@ inline std::optional stoblktype(std::string_view s) { "arabicsupplement"sv, blk::Arabic_Supplement }, { "armenian"sv, blk::Armenian }, { "arrows"sv, blk::Arrows }, { "avestan"sv, blk::Avestan }, { "balinese"sv, blk::Balinese }, { "bamum"sv, blk::Bamum }, { "bamumsupplement"sv, blk::Bamum_Supplement }, { "basiclatin"sv, blk::Basic_Latin }, { "bassavah"sv, blk::Bassa_Vah }, { "batak"sv, blk::Batak }, { "bengali"sv, blk::Bengali }, - { "bhaiksuki"sv, blk::Bhaiksuki }, { "blockelements"sv, blk::Block_Elements }, { "bopomofo"sv, blk::Bopomofo }, - { "bopomofoextended"sv, blk::Bopomofo_Extended }, { "boxdrawing"sv, blk::Box_Drawing }, { "brahmi"sv, blk::Brahmi }, - { "braillepatterns"sv, blk::Braille_Patterns }, { "buginese"sv, blk::Buginese }, { "buhid"sv, blk::Buhid }, + { "beriaerfe"sv, blk::Beria_Erfe }, { "bhaiksuki"sv, blk::Bhaiksuki }, { "blockelements"sv, blk::Block_Elements }, + { "bopomofo"sv, blk::Bopomofo }, { "bopomofoextended"sv, blk::Bopomofo_Extended }, { "boxdrawing"sv, blk::Box_Drawing }, + { "brahmi"sv, blk::Brahmi }, { "braillepatterns"sv, blk::Braille_Patterns }, { "buginese"sv, blk::Buginese }, { "buhid"sv, blk::Buhid }, { "byzantinemusicalsymbols"sv, blk::Byzantine_Musical_Symbols }, { "carian"sv, blk::Carian }, { "caucasianalbanian"sv, blk::Caucasian_Albanian }, { "chakma"sv, blk::Chakma }, { "cham"sv, blk::Cham }, { "cherokee"sv, blk::Cherokee }, { "cherokeesupplement"sv, blk::Cherokee_Supplement }, { "chesssymbols"sv, blk::Chess_Symbols }, { "chorasmian"sv, blk::Chorasmian }, @@ -1261,6 +1275,7 @@ inline std::optional stoblktype(std::string_view s) { "cjkunifiedideographsextensiong"sv, blk::CJK_Unified_Ideographs_Extension_G }, { "cjkunifiedideographsextensionh"sv, blk::CJK_Unified_Ideographs_Extension_H }, { "cjkunifiedideographsextensioni"sv, blk::CJK_Unified_Ideographs_Extension_I }, + { "cjkunifiedideographsextensionj"sv, blk::CJK_Unified_Ideographs_Extension_J }, { "combiningdiacriticalmarks"sv, blk::Combining_Diacritical_Marks }, { "combiningdiacriticalmarksextended"sv, blk::Combining_Diacritical_Marks_Extended }, { "combiningdiacriticalmarksforsymbols"sv, blk::Combining_Diacritical_Marks_for_Symbols }, @@ -1325,6 +1340,7 @@ inline std::optional stoblktype(std::string_view s) { "miscellaneousmathematicalsymbolsb"sv, blk::Miscellaneous_Mathematical_Symbols_B }, { "miscellaneoussymbols"sv, blk::Miscellaneous_Symbols }, { "miscellaneoussymbolsandarrows"sv, blk::Miscellaneous_Symbols_and_Arrows }, { "miscellaneoussymbolsandpictographs"sv, blk::Miscellaneous_Symbols_and_Pictographs }, + { "miscellaneoussymbolssupplement"sv, blk::Miscellaneous_Symbols_Supplement }, { "miscellaneoustechnical"sv, blk::Miscellaneous_Technical }, { "modi"sv, blk::Modi }, { "modifiertoneletters"sv, blk::Modifier_Tone_Letters }, { "mongolian"sv, blk::Mongolian }, { "mongoliansupplement"sv, blk::Mongolian_Supplement }, { "mro"sv, blk::Mro }, { "multani"sv, blk::Multani }, @@ -1344,14 +1360,15 @@ inline std::optional stoblktype(std::string_view s) { "phoneticextensionssupplement"sv, blk::Phonetic_Extensions_Supplement }, { "playingcards"sv, blk::Playing_Cards }, { "privateusearea"sv, blk::Private_Use_Area }, { "psalterpahlavi"sv, blk::Psalter_Pahlavi }, { "rejang"sv, blk::Rejang }, { "ruminumeralsymbols"sv, blk::Rumi_Numeral_Symbols }, { "runic"sv, blk::Runic }, { "samaritan"sv, blk::Samaritan }, - { "saurashtra"sv, blk::Saurashtra }, { "sharada"sv, blk::Sharada }, { "shavian"sv, blk::Shavian }, - { "shorthandformatcontrols"sv, blk::Shorthand_Format_Controls }, { "siddham"sv, blk::Siddham }, { "sinhala"sv, blk::Sinhala }, - { "sinhalaarchaicnumbers"sv, blk::Sinhala_Archaic_Numbers }, { "smallformvariants"sv, blk::Small_Form_Variants }, - { "smallkanaextension"sv, blk::Small_Kana_Extension }, { "sogdian"sv, blk::Sogdian }, { "sorasompeng"sv, blk::Sora_Sompeng }, - { "soyombo"sv, blk::Soyombo }, { "spacingmodifierletters"sv, blk::Spacing_Modifier_Letters }, { "specials"sv, blk::Specials }, - { "sundanese"sv, blk::Sundanese }, { "sundanesesupplement"sv, blk::Sundanese_Supplement }, { "sunuwar"sv, blk::Sunuwar }, - { "superscriptsandsubscripts"sv, blk::Superscripts_and_Subscripts }, { "supplementalarrowsa"sv, blk::Supplemental_Arrows_A }, - { "supplementalarrowsb"sv, blk::Supplemental_Arrows_B }, { "supplementalarrowsc"sv, blk::Supplemental_Arrows_C }, + { "saurashtra"sv, blk::Saurashtra }, { "sharada"sv, blk::Sharada }, { "sharadasupplement"sv, blk::Sharada_Supplement }, + { "shavian"sv, blk::Shavian }, { "shorthandformatcontrols"sv, blk::Shorthand_Format_Controls }, { "siddham"sv, blk::Siddham }, + { "sidetic"sv, blk::Sidetic }, { "sinhala"sv, blk::Sinhala }, { "sinhalaarchaicnumbers"sv, blk::Sinhala_Archaic_Numbers }, + { "smallformvariants"sv, blk::Small_Form_Variants }, { "smallkanaextension"sv, blk::Small_Kana_Extension }, { "sogdian"sv, blk::Sogdian }, + { "sorasompeng"sv, blk::Sora_Sompeng }, { "soyombo"sv, blk::Soyombo }, { "spacingmodifierletters"sv, blk::Spacing_Modifier_Letters }, + { "specials"sv, blk::Specials }, { "sundanese"sv, blk::Sundanese }, { "sundanesesupplement"sv, blk::Sundanese_Supplement }, + { "sunuwar"sv, blk::Sunuwar }, { "superscriptsandsubscripts"sv, blk::Superscripts_and_Subscripts }, + { "supplementalarrowsa"sv, blk::Supplemental_Arrows_A }, { "supplementalarrowsb"sv, blk::Supplemental_Arrows_B }, + { "supplementalarrowsc"sv, blk::Supplemental_Arrows_C }, { "supplementalmathematicaloperators"sv, blk::Supplemental_Mathematical_Operators }, { "supplementalpunctuation"sv, blk::Supplemental_Punctuation }, { "supplementalsymbolsandpictographs"sv, blk::Supplemental_Symbols_and_Pictographs }, @@ -1362,12 +1379,13 @@ inline std::optional stoblktype(std::string_view s) { "symbolsforlegacycomputingsupplement"sv, blk::Symbols_for_Legacy_Computing_Supplement }, { "syriac"sv, blk::Syriac }, { "syriacsupplement"sv, blk::Syriac_Supplement }, { "tagalog"sv, blk::Tagalog }, { "tagbanwa"sv, blk::Tagbanwa }, { "tags"sv, blk::Tags }, { "taile"sv, blk::Tai_Le }, { "taitham"sv, blk::Tai_Tham }, { "taiviet"sv, blk::Tai_Viet }, - { "taixuanjingsymbols"sv, blk::Tai_Xuan_Jing_Symbols }, { "takri"sv, blk::Takri }, { "tamil"sv, blk::Tamil }, + { "taixuanjingsymbols"sv, blk::Tai_Xuan_Jing_Symbols }, { "taiyo"sv, blk::Tai_Yo }, { "takri"sv, blk::Takri }, { "tamil"sv, blk::Tamil }, { "tamilsupplement"sv, blk::Tamil_Supplement }, { "tangsa"sv, blk::Tangsa }, { "tangut"sv, blk::Tangut }, - { "tangutcomponents"sv, blk::Tangut_Components }, { "tangutsupplement"sv, blk::Tangut_Supplement }, { "telugu"sv, blk::Telugu }, - { "thaana"sv, blk::Thaana }, { "thai"sv, blk::Thai }, { "tibetan"sv, blk::Tibetan }, { "tifinagh"sv, blk::Tifinagh }, - { "tirhuta"sv, blk::Tirhuta }, { "todhri"sv, blk::Todhri }, { "toto"sv, blk::Toto }, - { "transportandmapsymbols"sv, blk::Transport_and_Map_Symbols }, { "tulutigalari"sv, blk::Tulu_Tigalari }, { "ugaritic"sv, blk::Ugaritic }, + { "tangutcomponents"sv, blk::Tangut_Components }, { "tangutcomponentssupplement"sv, blk::Tangut_Components_Supplement }, + { "tangutsupplement"sv, blk::Tangut_Supplement }, { "telugu"sv, blk::Telugu }, { "thaana"sv, blk::Thaana }, { "thai"sv, blk::Thai }, + { "tibetan"sv, blk::Tibetan }, { "tifinagh"sv, blk::Tifinagh }, { "tirhuta"sv, blk::Tirhuta }, { "todhri"sv, blk::Todhri }, + { "tolongsiki"sv, blk::Tolong_Siki }, { "toto"sv, blk::Toto }, { "transportandmapsymbols"sv, blk::Transport_and_Map_Symbols }, + { "tulutigalari"sv, blk::Tulu_Tigalari }, { "ugaritic"sv, blk::Ugaritic }, { "unifiedcanadianaboriginalsyllabics"sv, blk::Unified_Canadian_Aboriginal_Syllabics }, { "unifiedcanadianaboriginalsyllabicsextended"sv, blk::Unified_Canadian_Aboriginal_Syllabics_Extended }, { "unifiedcanadianaboriginalsyllabicsextendeda"sv, blk::Unified_Canadian_Aboriginal_Syllabics_Extended_A }, { "vai"sv, blk::Vai }, @@ -1389,14 +1407,14 @@ inline std::optional stoagetype(std::string_view s) using namespace std::string_view_literals; using at = agetype; - static constexpr std::array, 28> labels = + static constexpr std::array, 29> labels = { { { "100"sv, at::v10_0 }, { "11"sv, at::v1_1 }, { "110"sv, at::v11_0 }, { "120"sv, at::v12_0 }, { "121"sv, at::v12_1 }, { "130"sv, at::v13_0 }, { "140"sv, at::v14_0 }, { "150"sv, at::v15_0 }, { "151"sv, at::v15_1 }, { "160"sv, at::v16_0 }, - { "20"sv, at::v2_0 }, { "21"sv, at::v2_1 }, { "30"sv, at::v3_0 }, { "31"sv, at::v3_1 }, { "32"sv, at::v3_2 }, - { "40"sv, at::v4_0 }, { "41"sv, at::v4_1 }, { "50"sv, at::v5_0 }, { "51"sv, at::v5_1 }, { "52"sv, at::v5_2 }, - { "60"sv, at::v6_0 }, { "61"sv, at::v6_1 }, { "62"sv, at::v6_2 }, { "63"sv, at::v6_3 }, { "70"sv, at::v7_0 }, - { "80"sv, at::v8_0 }, { "90"sv, at::v9_0 }, { "unassigned"sv, at::Unassigned } + { "170"sv, at::v17_0 }, { "20"sv, at::v2_0 }, { "21"sv, at::v2_1 }, { "30"sv, at::v3_0 }, { "31"sv, at::v3_1 }, + { "32"sv, at::v3_2 }, { "40"sv, at::v4_0 }, { "41"sv, at::v4_1 }, { "50"sv, at::v5_0 }, { "51"sv, at::v5_1 }, + { "52"sv, at::v5_2 }, { "60"sv, at::v6_0 }, { "61"sv, at::v6_1 }, { "62"sv, at::v6_2 }, { "63"sv, at::v6_3 }, + { "70"sv, at::v7_0 }, { "80"sv, at::v8_0 }, { "90"sv, at::v9_0 }, { "unassigned"sv, at::Unassigned } } }; auto const l = detail::normalize_property_label(s); @@ -1453,7 +1471,7 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) [[nodiscard]] inline std::int_least32_t record::case_mapping(std::size_t index) noexcept { - static constexpr std::array casemappings = + static constexpr std::array casemappings = { 0, 32, -32, 775, 743, 7615, 121, 1, -1, -121, -268, -300, 195, 210, 206, 205, 79, 202, 203, 207, 97, 211, 209, 163, 42561, 213, 130, 214, 218, 217, 219, 56, 2, -2, -79, -97, -56, -130, 10795, -163, 10792, 10815, -195, 69, 71, 10783, 10780, 10782, @@ -1464,7 +1482,7 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) -7615, 74, 86, 100, 128, 112, 126, -74, -9, -7173, -7205, -7235, -100, -7219, -112, -128, -126, -7517, -8383, -8262, 28, -28, 16, -16, 26, -26, -10743, -3814, -10727, -10795, -10792, -10780, -10749, -10783, -10782, -10815, -7264, -35332, -42280, -42308, -42319, -42315, -42305, -42258, -42282, -42261, 928, -42307, -35384, -42343, -42561, -928, -38864, 40, -40, 39, -39, - 34, -34 + 27, -27, 34, -34 }; return casemappings[index]; @@ -1475,7 +1493,7 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) using detail::run_length_decode; using lug::detail::make_member_accessor; - static constexpr std::array rlestage1 = + static constexpr std::array rlestage1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 49154, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, @@ -1487,17 +1505,18 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) 142, 179, 180, 181, 182, 142, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 142, 195, 196, 197, 49157, 198, 199, 200, 201, 202, 203, 49171, 142, 204, 49159, 205, 206, 49181, 207, 208, 49155, 209, 210, 49204, 142, 211, 49164, 142, 49155, 212, 213, 214, 215, 216, 49153, 142, 217, 142, 218, 219, 220, 221, 49198, 222, 223, 49156, 222, 224, 49154, 225, 226, - 227, 49219, 142, 228, 229, 230, 231, 49153, 232, 233, 49169, 142, 234, 235, 49181, 142, 236, 237, 49154, 236, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 142, 248, 249, 250, 251, 252, 253, 254, 255, 49155, 256, 257, 258, 49159, 142, 259, 142, - 260, 261, 262, 49153, 142, 263, 49154, 142, 264, 142, 265, 49154, 142, 266, 267, 268, 269, 49156, 142, 270, 271, 272, 142, - 273, 274, 49153, 142, 275, 276, 277, 278, 279, 142, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 49158, 142, 298, 49484, 299, 300, 49183, 301, 302, 303, 304, 49195, 305, 306, 49208, 307, 308, 49155, - 309, 310, 49170, 142, 49155, 311, 312, 49161, 142, 298, 49189, 313, 314, 49183, 315, 316, 49590, 142, 298, 49662, 142, 298, - 49662, 142, 298, 49662, 142, 298, 49662, 142, 298, 49662, 142, 298, 49662, 142, 298, 49662, 142, 298, 49662, 142, 298, 49662, - 142, 298, 49662, 142, 298, 317, 318, 319, 320, 49179, 318, 49630, 142, 298, 49662, 321, 322, 49662, 321, 322 + 227, 228, 49218, 142, 229, 230, 231, 232, 49153, 233, 234, 49169, 142, 235, 236, 49181, 142, 237, 238, 49154, 237, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 142, 249, 250, 251, 252, 253, 254, 255, 256, 49155, 257, 258, 259, 49159, 142, 260, + 142, 261, 262, 263, 49153, 142, 264, 49154, 142, 265, 142, 266, 142, 267, 142, 268, 269, 270, 271, 49156, 142, 272, 273, + 274, 142, 275, 276, 49153, 142, 277, 278, 279, 280, 281, 142, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 49158, 142, 300, 49484, 301, 302, 49183, 303, 304, 305, 306, 49195, 307, 308, 49208, 309, 310, + 49155, 311, 312, 49170, 142, 49155, 313, 314, 49161, 142, 300, 49189, 315, 316, 49183, 317, 318, 49183, 319, 320, 49557, + 142, 300, 49662, 142, 300, 49662, 142, 300, 49662, 142, 300, 49662, 142, 300, 49662, 142, 300, 49662, 142, 300, 49662, 142, + 300, 49662, 142, 300, 49662, 142, 300, 49662, 142, 300, 321, 322, 323, 324, 49179, 322, 49630, 142, 300, 49662, 325, 326, + 49662, 325, 326 }; - static constexpr std::array rlestage2 = + static constexpr std::array rlestage2 = { 0, 49159, 1, 2, 49155, 3, 49169, 1, 4, 5, 6, 7, 8, 49153, 7, 9, 10, 11, 7, 12, 13, 14, 15, 7, 49161, 16, 17, 13, 18, 12, 18, 5, 7, 49157, 19, 49171, 20, 10, 7, 11, 21, 22, 23, 49157, 24, 49153, 25, 49153, 26, 49167, 25, 10, 12, 11, 12, 1, 49156, @@ -1510,8 +1529,8 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) 4, 83, 84, 85, 86, 65535, 9, 83, 84, 49154, 86, 49154, 87, 88, 89, 90, 91, 92, 49153, 93, 89, 94, 95, 96, 97, 98, 94, 98, 99, 65535, 3, 98, 94, 100, 101, 102, 103, 104, 52, 49153, 105, 52, 106, 52, 107, 108, 49154, 52, 105, 109, 52, 110, 111, 112, 113, 52, 114, 115, 113, 116, 117, 49153, 52, 115, 52, 118, 119, 49153, 52, 120, 49158, 52, 121, 49153, 52, 122, 52, - 123, 122, 49154, 52, 124, 122, 125, 49153, 126, 127, 49156, 52, 128, 52, 75, 49159, 52, 129, 130, 49161, 52, 49156, 131, - 49153, 86, 49153, 132, 133, 49157, 132, 49158, 134, 49153, 135, 49155, 33, 49161, 134, 49153, 136, 49164, 33, 137, 49156, + 123, 122, 49154, 52, 124, 122, 125, 49153, 126, 127, 49156, 52, 128, 52, 49153, 75, 49158, 52, 129, 130, 49161, 52, 49156, + 131, 49153, 86, 49153, 132, 133, 49157, 132, 49158, 134, 49153, 135, 49155, 33, 49161, 134, 49153, 136, 49164, 33, 137, 49156, 132, 49156, 33, 49153, 138, 139, 137, 139, 49168, 140, 49220, 141, 142, 49160, 143, 144, 49159, 145, 49156, 146, 49154, 145, 49153, 141, 143, 49164, 147, 148, 149, 148, 149, 134, 150, 148, 149, 49153, 151, 152, 49154, 153, 154, 155, 49155, 151, 150, 33, 156, 157, 49154, 158, 151, 159, 151, 49153, 160, 161, 49168, 162, 151, 49160, 162, 163, 49154, 164, 161, 49168, 165, @@ -1532,319 +1551,326 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) 49162, 306, 307, 49165, 308, 49161, 309, 49184, 310, 49160, 311, 49153, 312, 313, 314, 315, 316, 317, 49153, 318, 319, 49153, 320, 49173, 321, 49153, 322, 49153, 323, 324, 49160, 322, 324, 49154, 322, 324, 49155, 322, 325, 49153, 326, 49157, 327, 328, 329, 327, 329, 49154, 327, 49153, 329, 326, 49176, 330, 49154, 331, 49153, 332, 333, 332, 49162, 334, 49156, 297, 49175, - 335, 336, 49157, 335, 337, 49153, 338, 49156, 337, 339, 49159, 340, 341, 342, 49162, 341, 49157, 342, 49153, 343, 335, 49159, - 344, 49161, 345, 335, 346, 49153, 347, 340, 49154, 347, 49154, 340, 348, 49163, 349, 49153, 350, 351, 352, 49157, 353, 49157, - 354, 49154, 353, 355, 49162, 353, 356, 357, 49153, 358, 359, 360, 49167, 361, 49188, 362, 363, 364, 365, 361, 49154, 359, - 49159, 358, 49155, 359, 366, 367, 364, 361, 49155, 368, 357, 49153, 363, 49159, 362, 49153, 361, 49153, 358, 49153, 369, - 49161, 370, 371, 372, 373, 49156, 374, 375, 49153, 376, 49153, 377, 378, 49153, 377, 379, 380, 49153, 381, 382, 49159, 383, - 49153, 382, 49153, 383, 49153, 382, 49153, 383, 49171, 384, 382, 49158, 384, 382, 384, 49154, 382, 49155, 384, 49153, 382, - 385, 386, 387, 49153, 381, 49155, 380, 49153, 382, 49153, 381, 49153, 382, 49153, 381, 388, 389, 49159, 382, 387, 49155, - 382, 49153, 384, 382, 384, 49153, 383, 49153, 380, 49153, 382, 49161, 390, 49153, 384, 49153, 391, 49157, 392, 393, 394, - 395, 396, 397, 382, 398, 399, 400, 401, 398, 49157, 402, 49155, 398, 49153, 402, 49153, 398, 49173, 402, 398, 49158, 402, - 398, 49153, 402, 398, 49153, 402, 398, 49153, 402, 49153, 398, 403, 398, 49154, 404, 49153, 400, 49155, 398, 49153, 400, - 49153, 398, 49153, 400, 405, 49154, 398, 406, 49158, 398, 49155, 402, 398, 402, 49158, 398, 49161, 407, 400, 408, 49154, - 402, 406, 409, 49160, 398, 410, 49153, 411, 412, 410, 49158, 413, 414, 413, 410, 49154, 413, 410, 49153, 413, 49171, 415, - 410, 49158, 415, 410, 49153, 415, 410, 49156, 415, 49153, 410, 416, 413, 49154, 412, 49156, 411, 410, 49153, 411, 412, 410, - 49153, 412, 417, 49153, 410, 413, 49166, 410, 413, 414, 49153, 418, 49153, 410, 49161, 419, 420, 421, 49158, 410, 422, 423, - 424, 423, 49154, 425, 426, 427, 49153, 428, 426, 49159, 429, 49153, 426, 49153, 429, 49153, 426, 49153, 429, 49171, 430, - 426, 49158, 430, 426, 49153, 430, 426, 431, 49155, 430, 49153, 426, 432, 429, 433, 427, 428, 49154, 427, 434, 49153, 426, - 49153, 428, 49153, 426, 49153, 428, 435, 49158, 426, 436, 427, 433, 49155, 426, 49153, 430, 426, 430, 49153, 429, 49153, - 434, 49153, 426, 49161, 437, 438, 431, 49157, 439, 49159, 426, 49153, 440, 441, 442, 440, 49157, 442, 49154, 440, 49154, - 442, 440, 49155, 442, 49154, 440, 49153, 442, 440, 442, 440, 49153, 442, 49154, 440, 49153, 442, 49154, 440, 49154, 442, - 49154, 440, 49159, 442, 443, 49154, 442, 49155, 440, 444, 445, 441, 49153, 445, 49154, 440, 49154, 445, 440, 49154, 445, - 446, 49153, 440, 447, 49157, 440, 444, 49165, 440, 448, 49160, 449, 49154, 450, 49157, 451, 452, 451, 49156, 440, 453, 49154, - 454, 455, 49159, 456, 457, 49154, 456, 457, 49154, 456, 49171, 458, 457, 49161, 458, 459, 49156, 458, 49153, 457, 460, 461, - 49154, 462, 49155, 454, 457, 49154, 462, 457, 49154, 462, 463, 49158, 457, 49153, 462, 457, 49153, 464, 465, 49153, 457, - 466, 49153, 457, 49153, 456, 49153, 467, 49153, 457, 49161, 468, 49158, 457, 469, 49158, 470, 471, 472, 473, 49153, 474, - 475, 49159, 476, 477, 49154, 476, 477, 49174, 476, 477, 49161, 476, 477, 49156, 476, 49153, 477, 478, 479, 474, 480, 481, - 474, 481, 49153, 474, 477, 480, 49153, 481, 477, 49153, 481, 480, 482, 49158, 477, 49153, 481, 49157, 477, 483, 476, 477, - 49153, 476, 49153, 484, 49153, 477, 49161, 485, 477, 49153, 486, 487, 49163, 477, 488, 489, 49153, 490, 491, 49159, 492, - 493, 49154, 492, 493, 49154, 492, 49171, 494, 495, 49167, 494, 495, 49153, 496, 497, 498, 49153, 490, 49154, 499, 500, 493, - 49154, 490, 493, 49154, 490, 501, 502, 503, 49155, 493, 49154, 504, 498, 49158, 505, 506, 49153, 492, 49153, 500, 49153, - 493, 49161, 507, 49157, 508, 49154, 505, 509, 49157, 497, 510, 511, 49153, 512, 510, 49169, 513, 49154, 510, 49175, 513, - 510, 49160, 513, 510, 513, 49153, 510, 49158, 513, 49154, 510, 514, 49155, 510, 515, 49153, 512, 49154, 516, 510, 516, 510, - 49158, 512, 515, 49157, 510, 49161, 517, 49153, 510, 49153, 512, 518, 49162, 510, 519, 49199, 520, 521, 520, 522, 49157, - 521, 523, 49155, 519, 524, 49156, 525, 520, 526, 49157, 527, 521, 527, 528, 49161, 529, 49153, 530, 49187, 519, 531, 49153, - 532, 531, 532, 531, 533, 49153, 532, 533, 532, 531, 533, 532, 49157, 533, 49155, 532, 533, 49158, 532, 533, 49154, 532, 531, - 532, 531, 532, 49153, 533, 49153, 532, 533, 49155, 532, 534, 532, 535, 49157, 534, 536, 49153, 534, 532, 49153, 531, 49156, - 537, 531, 538, 531, 49156, 539, 534, 540, 531, 49161, 541, 49153, 531, 49153, 532, 49153, 542, 49183, 531, 543, 49154, 544, - 49155, 545, 546, 49155, 545, 49157, 546, 544, 545, 49154, 544, 49153, 547, 49157, 544, 49161, 548, 49161, 549, 65535, 3, - 544, 547, 550, 551, 550, 551, 49153, 552, 49159, 543, 553, 49184, 543, 554, 49153, 555, 49155, 553, 49157, 556, 557, 556, - 557, 49156, 556, 558, 49153, 556, 49153, 559, 560, 545, 49153, 547, 49155, 543, 561, 49154, 562, 49157, 556, 563, 556, 553, - 49172, 556, 49154, 563, 49158, 556, 563, 556, 49154, 563, 553, 49159, 564, 565, 49157, 564, 553, 566, 564, 49153, 567, 49154, - 568, 49155, 569, 49153, 570, 49188, 553, 49185, 571, 572, 49156, 571, 572, 49153, 571, 573, 574, 49155, 575, 574, 575, 49154, - 576, 575, 577, 574, 578, 579, 49153, 573, 49153, 576, 572, 49161, 580, 49153, 581, 49155, 582, 49157, 571, 49153, 574, 49153, - 575, 49155, 572, 49154, 576, 572, 573, 49153, 583, 49153, 572, 49153, 573, 49156, 583, 49154, 572, 49155, 576, 49164, 572, - 576, 49153, 573, 49153, 576, 49157, 583, 584, 572, 583, 49161, 585, 49153, 586, 587, 588, 49153, 589, 49189, 590, 591, 592, - 49156, 591, 592, 49153, 591, 49190, 593, 49153, 594, 49153, 595, 596, 597, 49154, 598, 49241, 599, 49156, 600, 601, 602, - 49217, 603, 49156, 604, 49233, 603, 49157, 604, 49158, 605, 606, 49214, 605, 606, 605, 607, 49155, 605, 49153, 607, 49158, - 605, 607, 605, 607, 49155, 605, 49153, 607, 49190, 605, 606, 605, 607, 49155, 605, 49153, 607, 49182, 605, 606, 605, 607, - 49155, 605, 49153, 607, 49158, 605, 607, 605, 607, 49155, 605, 49153, 607, 49158, 605, 606, 49158, 605, 607, 49174, 605, - 606, 49182, 605, 606, 605, 607, 49155, 605, 49153, 607, 49158, 605, 606, 49190, 605, 606, 49170, 605, 49153, 607, 49153, - 608, 609, 610, 611, 612, 49155, 611, 49153, 612, 49160, 613, 49162, 614, 49154, 607, 49167, 606, 49161, 615, 49157, 607, - 49231, 616, 49156, 617, 618, 49153, 619, 49157, 620, 49153, 619, 621, 49515, 622, 623, 624, 49159, 622, 49160, 625, 626, - 49177, 627, 628, 629, 49154, 630, 49226, 631, 49154, 632, 49154, 633, 49159, 634, 49158, 635, 49164, 636, 637, 49155, 636, - 49153, 638, 639, 640, 49160, 641, 637, 49169, 642, 49153, 643, 644, 49153, 645, 49160, 646, 49169, 647, 49153, 648, 49163, - 649, 49164, 650, 651, 49154, 650, 651, 49153, 652, 49163, 651, 49186, 653, 49153, 654, 49166, 653, 49153, 655, 656, 49158, - 657, 49159, 656, 657, 49153, 656, 49160, 658, 659, 658, 49153, 660, 661, 662, 49153, 663, 661, 664, 653, 665, 49153, 666, - 49161, 667, 49157, 666, 49161, 668, 49157, 666, 49153, 669, 670, 671, 672, 670, 673, 669, 672, 674, 675, 49154, 676, 677, - 678, 49161, 679, 49157, 680, 49186, 681, 682, 49203, 681, 683, 49158, 680, 49156, 681, 49153, 684, 49185, 681, 685, 686, - 49156, 680, 49221, 625, 49161, 151, 49180, 687, 49153, 688, 689, 49154, 690, 49155, 691, 49153, 690, 49154, 691, 49155, 689, - 49153, 691, 690, 49157, 691, 49154, 692, 49155, 689, 693, 49154, 689, 49153, 694, 49161, 695, 49181, 696, 49153, 151, 49156, - 696, 49162, 151, 49193, 697, 49153, 698, 49155, 151, 49156, 697, 49154, 699, 49153, 697, 699, 49166, 697, 49157, 151, 49161, - 700, 701, 49154, 151, 49153, 702, 49183, 703, 49174, 704, 49153, 705, 49153, 706, 705, 49153, 707, 49153, 708, 49204, 709, - 710, 711, 710, 49158, 711, 151, 712, 710, 711, 49153, 710, 49159, 711, 49157, 710, 49153, 711, 49159, 713, 49153, 151, 713, - 49161, 714, 49157, 151, 49161, 714, 49157, 151, 49158, 715, 716, 49155, 717, 49153, 715, 49153, 151, 49165, 718, 719, 49153, - 720, 49162, 721, 49154, 722, 49200, 151, 49155, 723, 724, 49198, 725, 726, 727, 49156, 723, 727, 723, 727, 49155, 724, 723, - 727, 728, 49158, 725, 729, 730, 49153, 731, 49161, 732, 49153, 733, 734, 735, 49153, 733, 734, 49161, 736, 49160, 726, 49160, - 736, 49153, 737, 731, 49153, 738, 739, 49181, 740, 739, 49155, 738, 49153, 739, 49153, 738, 741, 742, 49153, 743, 49153, - 740, 49161, 744, 49157, 745, 49189, 746, 747, 748, 49153, 749, 49154, 748, 749, 748, 49154, 749, 49153, 750, 49159, 751, - 49155, 752, 49187, 753, 49159, 754, 49159, 755, 49153, 754, 756, 757, 49154, 758, 49153, 759, 49154, 760, 49161, 761, 49154, - 758, 49154, 753, 49161, 762, 49181, 763, 49154, 764, 765, 49153, 764, 49153, 766, 767, 768, 769, 49153, 770, 771, 772, 773, - 774, 775, 776, 49156, 777, 49194, 778, 49153, 591, 49154, 778, 49159, 779, 49159, 780, 49154, 781, 782, 49164, 781, 783, - 49158, 781, 49155, 784, 781, 49156, 784, 785, 786, 49153, 785, 787, 49153, 718, 788, 49156, 151, 49189, 86, 49156, 789, 790, - 49200, 791, 49156, 792, 793, 49154, 791, 49156, 792, 86, 49163, 87, 794, 795, 49154, 87, 796, 49167, 87, 797, 49158, 87, - 798, 49155, 87, 49160, 799, 800, 49154, 799, 800, 49173, 799, 801, 49155, 146, 49158, 802, 49156, 803, 49154, 804, 49171, - 805, 49165, 806, 718, 49155, 807, 721, 808, 809, 781, 49153, 802, 65535, 22, 47, 48, 47, 49, 65535, 52, 47, 48, 49155, 51, - 810, 811, 49153, 812, 813, 812, 65535, 21, 47, 48, 47, 49, 65535, 23, 47, 48, 65535, 3, 814, 815, 49159, 816, 49159, 817, - 49157, 816, 49153, 151, 49157, 817, 49153, 151, 49159, 816, 49159, 817, 49159, 816, 49159, 817, 49157, 816, 49153, 151, 49157, - 817, 49153, 151, 65535, 4, 161, 816, 65535, 4, 151, 817, 49159, 816, 49159, 817, 49153, 818, 49155, 819, 49153, 820, 49153, - 821, 49153, 822, 49153, 823, 49153, 151, 49159, 824, 49159, 825, 49159, 824, 49159, 825, 49159, 824, 49159, 825, 49153, 816, - 49154, 824, 151, 161, 824, 49153, 817, 49153, 826, 827, 150, 828, 49154, 150, 49154, 824, 151, 161, 824, 49155, 829, 827, - 49154, 150, 49153, 816, 161, 830, 49153, 151, 49153, 161, 49153, 817, 49153, 831, 151, 49154, 150, 49153, 816, 161, 832, - 161, 185, 49153, 161, 49153, 817, 49153, 833, 834, 49154, 150, 49153, 151, 49154, 824, 151, 161, 824, 49153, 835, 49153, - 836, 827, 49153, 150, 151, 49162, 837, 838, 839, 840, 49153, 841, 49157, 842, 843, 30, 844, 845, 846, 49153, 847, 848, 846, - 847, 49155, 30, 849, 49153, 30, 850, 851, 852, 49156, 853, 854, 49153, 30, 49154, 843, 49155, 30, 35, 41, 30, 49153, 855, - 30, 856, 857, 49154, 30, 36, 858, 859, 860, 49153, 861, 49155, 862, 49155, 863, 864, 865, 866, 49153, 867, 863, 49158, 867, - 868, 869, 49154, 870, 871, 872, 49155, 873, 49157, 874, 38, 875, 49153, 151, 49157, 38, 876, 877, 876, 878, 879, 880, 49161, - 38, 876, 877, 876, 878, 879, 151, 49156, 799, 49159, 881, 49154, 151, 49162, 882, 883, 884, 49154, 885, 49153, 886, 49155, - 887, 49154, 888, 889, 890, 49154, 891, 892, 893, 894, 49166, 151, 49164, 895, 49155, 896, 895, 49153, 897, 898, 49153, 899, - 49155, 900, 901, 49155, 902, 804, 49166, 151, 49153, 903, 904, 49155, 903, 904, 49153, 903, 905, 49154, 904, 49153, 905, - 49154, 904, 905, 903, 904, 49153, 903, 906, 49156, 904, 49157, 903, 904, 903, 907, 903, 904, 908, 909, 910, 49153, 904, 911, - 905, 49153, 904, 912, 904, 905, 49155, 913, 914, 915, 916, 917, 918, 49153, 919, 920, 49155, 921, 919, 49153, 918, 49153, - 922, 923, 921, 924, 925, 926, 927, 49154, 928, 49164, 42, 49167, 929, 49167, 930, 49154, 931, 83, 94, 49155, 932, 928, 49153, - 933, 49155, 151, 49156, 934, 49156, 935, 49153, 934, 49155, 935, 934, 49153, 935, 934, 49153, 935, 934, 935, 936, 49156, - 935, 934, 936, 49153, 935, 49155, 936, 49153, 935, 49155, 936, 49169, 935, 49153, 934, 49153, 935, 934, 935, 934, 49158, - 935, 936, 935, 49157, 936, 49153, 935, 49156, 936, 49160, 937, 49163, 938, 36, 939, 940, 49153, 939, 49153, 36, 941, 49157, - 939, 49154, 36, 939, 942, 49153, 36, 49153, 939, 49154, 36, 49155, 939, 941, 49155, 939, 36, 939, 36, 939, 49155, 36, 49160, - 939, 49156, 36, 939, 36, 49169, 939, 49156, 36, 49155, 939, 49160, 36, 49153, 939, 36, 939, 36, 49159, 939, 36, 49183, 939, - 49153, 36, 49155, 939, 49156, 36, 939, 49160, 36, 49153, 939, 49153, 36, 49170, 939, 49156, 36, 49153, 939, 49160, 36, 49156, - 939, 49153, 36, 49153, 939, 49155, 36, 49175, 939, 49153, 36, 49153, 939, 49165, 943, 32, 944, 49157, 32, 945, 946, 945, - 946, 49171, 32, 49153, 939, 49158, 32, 947, 948, 49231, 32, 944, 864, 49181, 944, 49176, 864, 49153, 949, 950, 949, 49174, - 950, 951, 952, 49162, 953, 49157, 954, 955, 49156, 956, 957, 49162, 958, 49158, 959, 49155, 960, 961, 49188, 32, 49153, 944, - 49154, 962, 49173, 963, 49162, 32, 49172, 963, 49211, 42, 49177, 903, 49177, 964, 49177, 965, 42, 49171, 966, 967, 49301, - 32, 49161, 950, 49153, 968, 49163, 32, 49160, 968, 36, 49155, 32, 49156, 968, 36, 49155, 32, 49153, 968, 49153, 32, 49153, - 968, 49154, 32, 49156, 968, 49165, 32, 968, 32, 968, 49153, 32, 49157, 968, 49154, 32, 49159, 944, 49159, 864, 49156, 32, - 49153, 968, 49164, 32, 49153, 951, 49153, 950, 953, 944, 49189, 32, 968, 32, 968, 49180, 32, 49155, 968, 49160, 32, 49153, - 968, 36, 49153, 944, 49163, 950, 49153, 953, 49161, 950, 49159, 951, 49162, 953, 969, 49153, 957, 49153, 951, 49167, 953, - 956, 49161, 969, 49154, 957, 49155, 969, 49161, 957, 958, 49170, 957, 958, 957, 49155, 958, 49175, 957, 970, 49155, 971, - 972, 49155, 971, 49153, 972, 49179, 971, 972, 49186, 971, 972, 971, 972, 49155, 971, 49154, 972, 971, 973, 49158, 971, 49153, - 972, 49158, 971, 65535, 7, 974, 975, 49181, 976, 971, 49154, 972, 49175, 971, 972, 49165, 971, 972, 977, 49153, 978, 49153, - 977, 979, 980, 954, 49153, 981, 954, 982, 983, 982, 49153, 984, 49154, 864, 49155, 943, 49156, 864, 49154, 943, 49154, 864, - 49155, 943, 65535, 3, 985, 986, 987, 988, 987, 988, 49167, 864, 49279, 989, 49282, 864, 65535, 11, 985, 986, 49153, 864, - 49157, 943, 864, 49165, 943, 49159, 864, 943, 49158, 864, 49157, 943, 49154, 864, 943, 49155, 864, 49156, 943, 864, 49153, - 943, 49153, 864, 985, 986, 985, 986, 943, 49155, 864, 943, 864, 49154, 943, 49153, 864, 49153, 943, 49161, 864, 49157, 943, - 49153, 864, 985, 986, 49163, 864, 49170, 943, 864, 49155, 943, 49153, 864, 943, 864, 943, 49153, 864, 943, 864, 49155, 943, - 49156, 864, 49153, 943, 49157, 864, 49154, 943, 49175, 864, 49153, 943, 49162, 864, 49153, 943, 49155, 864, 49155, 943, 864, - 49153, 943, 49153, 864, 49153, 943, 49155, 864, 49194, 943, 49153, 864, 49159, 943, 864, 49191, 943, 49156, 864, 943, 864, - 943, 49154, 864, 49156, 943, 49156, 864, 49154, 943, 49155, 864, 943, 49154, 864, 49156, 943, 864, 943, 49153, 864, 49165, - 951, 49157, 953, 49158, 956, 49156, 969, 49155, 956, 49163, 969, 49172, 990, 49153, 969, 49157, 990, 49154, 959, 49156, 969, - 49156, 957, 49177, 959, 49153, 963, 49183, 959, 963, 991, 49185, 959, 49154, 992, 49163, 959, 993, 49159, 959, 961, 49176, - 992, 49155, 994, 49165, 992, 995, 993, 49198, 996, 997, 49198, 998, 999, 98, 94, 1000, 1001, 1002, 1003, 1004, 65535, 3, - 98, 94, 1005, 1006, 1007, 1008, 812, 814, 815, 1009, 98, 94, 1009, 49155, 812, 1010, 1011, 49153, 1012, 65535, 50, 1013, - 1014, 1015, 49157, 1016, 1017, 1018, 1017, 1018, 49154, 1019, 1020, 1021, 49156, 1022, 49154, 1023, 1024, 1025, 49153, 1024, - 49189, 1026, 591, 1027, 49156, 591, 1027, 49153, 591, 49205, 1028, 49153, 1029, 49158, 1030, 1031, 1032, 49165, 1030, 1033, - 49174, 606, 49160, 607, 49158, 606, 607, 49158, 606, 607, 49158, 606, 607, 49158, 606, 607, 49158, 606, 607, 49158, 606, - 607, 49158, 606, 607, 49158, 606, 607, 49183, 1034, 49153, 867, 1035, 1036, 1035, 1036, 49154, 867, 1035, 1036, 867, 1035, - 1036, 49160, 867, 1037, 49153, 1038, 1039, 1038, 1035, 1036, 49153, 1038, 1040, 1041, 65535, 4, 1042, 1043, 49155, 1038, - 1044, 1045, 1038, 1046, 49159, 1047, 49153, 1048, 1049, 49154, 1050, 1051, 1052, 1053, 49153, 1054, 49156, 1055, 49153, 1056, - 1057, 1056, 1057, 1058, 49153, 991, 1059, 49153, 1060, 65535, 4, 1061, 1062, 1063, 49185, 963, 49177, 1064, 151, 49240, 1064, - 49163, 151, 49365, 1064, 49177, 151, 49153, 1065, 49153, 1066, 49159, 1065, 49153, 1067, 49153, 1068, 837, 1069, 855, 30, - 903, 1070, 1071, 1072, 858, 859, 858, 859, 1073, 1074, 1073, 1074, 858, 859, 49153, 32, 65535, 4, 858, 859, 842, 846, 49153, - 1075, 32, 49160, 1072, 49155, 141, 49153, 1076, 842, 49156, 1077, 49153, 903, 49154, 1078, 1079, 1080, 1081, 915, 903, 1082, - 49235, 1083, 49153, 1084, 49153, 1082, 49153, 1085, 49153, 1086, 49153, 1087, 1084, 1088, 49241, 1089, 1090, 1091, 49153, - 1092, 1093, 49156, 1094, 49191, 1095, 1096, 1097, 1098, 151, 49202, 599, 601, 49193, 599, 151, 49153, 1099, 49155, 1100, - 49161, 1099, 49175, 1101, 49154, 1102, 49156, 1103, 49167, 924, 49171, 927, 49153, 1104, 49160, 151, 1067, 49167, 1093, 49180, - 1105, 49153, 1106, 151, 49161, 42, 49177, 903, 49155, 1107, 49159, 928, 916, 49166, 966, 49179, 1105, 49153, 1106, 1108, - 903, 49161, 42, 49190, 903, 49166, 966, 49163, 903, 49155, 916, 49198, 1109, 1110, 49239, 1109, 49182, 903, 49155, 916, 49250, - 903, 49153, 916, 49182, 903, 916, 49333, 1111, 49161, 1112, 49215, 916, 49317, 1113, 49173, 1114, 49159, 1115, 49159, 1116, - 1117, 49160, 1118, 49172, 1119, 49156, 1120, 49164, 1112, 49154, 1121, 49172, 1122, 1123, 49398, 1122, 49154, 151, 49169, - 1124, 49153, 1125, 49167, 1124, 1125, 49163, 1124, 1125, 49154, 1124, 1125, 1124, 49160, 151, 49191, 1126, 49157, 1127, 1128, - 1129, 49291, 1130, 1131, 1132, 49153, 1133, 49167, 1130, 49161, 1134, 49153, 1130, 49171, 1135, 65535, 16, 219, 220, 223, - 224, 65535, 6, 219, 220, 1136, 207, 49154, 1137, 1138, 49159, 1139, 49153, 207, 1138, 1140, 65535, 12, 219, 220, 225, 226, - 225, 226, 49153, 1141, 1142, 1139, 49221, 1143, 49161, 1144, 49153, 1145, 1146, 1147, 49154, 1148, 1147, 49159, 1149, 49174, - 1150, 49155, 1151, 49156, 1152, 49153, 1153, 65535, 7, 814, 815, 49153, 812, 65535, 31, 814, 815, 1011, 49159, 812, 814, - 815, 814, 815, 1154, 65535, 5, 814, 815, 1152, 49153, 1155, 814, 815, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, - 65535, 5, 1165, 1166, 65535, 5, 1159, 1160, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1177, - 1178, 1179, 1180, 65535, 3, 1181, 1182, 1183, 1184, 1181, 1182, 1185, 1186, 1187, 1188, 1189, 1188, 1189, 1190, 1191, 1192, - 49153, 151, 1183, 1184, 151, 1193, 151, 1193, 1183, 1184, 1183, 1184, 1191, 1192, 1194, 49172, 151, 49154, 1195, 1188, 1189, - 1196, 49153, 1197, 1157, 49156, 1198, 49153, 1199, 1200, 49154, 1199, 1201, 49155, 1199, 1200, 49174, 1199, 49153, 1202, - 49153, 1200, 1202, 49155, 1203, 1204, 49154, 151, 49157, 928, 49153, 1107, 888, 1107, 49157, 151, 49203, 1205, 49153, 1206, - 49153, 1207, 49159, 1208, 49153, 1209, 49201, 1210, 49167, 1209, 1211, 1212, 49159, 1213, 49153, 1214, 49161, 1215, 49157, - 1213, 49169, 1216, 49157, 1217, 49154, 1218, 1217, 1219, 1220, 1221, 1222, 49161, 1223, 49179, 1224, 49156, 1225, 49154, - 1226, 1227, 1228, 49174, 1229, 49162, 1230, 1231, 1232, 49162, 1233, 1234, 49180, 600, 49154, 151, 49154, 1235, 1236, 49198, - 1237, 1238, 49153, 1236, 49155, 1235, 49153, 1236, 49153, 1235, 49153, 1236, 1239, 49157, 1240, 1241, 49153, 1242, 49155, - 1240, 1243, 1244, 49161, 1245, 49155, 1243, 49153, 1240, 49156, 1246, 1247, 1248, 49160, 1246, 49161, 1249, 49156, 1246, - 1250, 49192, 1251, 49157, 1252, 49153, 1253, 49153, 1252, 49153, 1253, 49153, 1252, 49160, 1254, 49154, 1251, 1252, 49159, - 1251, 1252, 1253, 49153, 1254, 49161, 1255, 49153, 1254, 1256, 49154, 1257, 49167, 1258, 1259, 49157, 1258, 49154, 1260, - 1258, 586, 1247, 1261, 49153, 1246, 49199, 1262, 1263, 1262, 49154, 1263, 49153, 1264, 49153, 1263, 1264, 1262, 49153, 1264, - 1262, 1263, 1265, 1266, 1265, 1266, 49175, 151, 49153, 1262, 1267, 1268, 1269, 49162, 1270, 1271, 49153, 1272, 49153, 1271, - 49153, 1273, 1270, 49153, 1274, 1271, 1275, 49160, 151, 607, 49157, 1276, 49153, 607, 49157, 1276, 49153, 607, 49157, 1276, - 49160, 607, 49158, 1276, 607, 49158, 1276, 607, 49186, 1164, 1277, 49158, 1164, 1278, 49155, 1279, 49155, 1280, 1164, 1281, - 49153, 1282, 1283, 1284, 49153, 1285, 49155, 151, 49231, 1286, 49186, 1287, 49153, 1288, 1289, 49153, 1288, 1289, 49153, - 1288, 1290, 1291, 1292, 49153, 151, 49161, 1293, 49157, 151, 49315, 1294, 49163, 151, 49174, 600, 49155, 151, 49200, 600, - 49155, 151, 49279, 1295, 49279, 1296, 49293, 1297, 49153, 1113, 1297, 1113, 1297, 49153, 1113, 49161, 1297, 1113, 1297, 1113, - 1297, 49153, 1113, 49153, 1297, 49154, 1113, 49155, 1297, 49153, 1298, 49210, 1299, 49154, 1300, 49153, 151, 49257, 1301, - 49189, 151, 49156, 810, 1302, 810, 49163, 151, 49156, 1303, 49156, 151, 1304, 1305, 49161, 1306, 1307, 49164, 1306, 151, - 49156, 1306, 151, 1306, 151, 49153, 1306, 151, 49153, 1306, 151, 49161, 1306, 49249, 269, 49167, 1308, 336, 49167, 337, 49290, - 269, 49157, 1309, 49369, 269, 1310, 1311, 49167, 1312, 49215, 269, 49153, 337, 49205, 269, 49158, 337, 1312, 49183, 1313, - 49161, 269, 49153, 1309, 1314, 261, 49153, 1312, 49167, 1315, 49153, 1316, 1317, 1318, 1316, 49153, 1317, 1319, 1320, 1316, - 49157, 151, 49155, 141, 49154, 803, 49158, 718, 49153, 1321, 1322, 49153, 1323, 49153, 856, 65535, 6, 1324, 1325, 1326, 1327, - 1326, 1327, 49153, 863, 1328, 1329, 49155, 1322, 49154, 856, 49153, 154, 1330, 151, 154, 1331, 49153, 1332, 1323, 65535, - 3, 1333, 1334, 49153, 1322, 1335, 1336, 1337, 49153, 1338, 1336, 151, 1335, 882, 49153, 1322, 49155, 151, 1309, 269, 1309, - 281, 1309, 337, 65535, 4, 1309, 269, 1309, 49277, 269, 49153, 337, 1339, 151, 1332, 1340, 1322, 882, 49153, 1322, 1341, 1333, - 1334, 1322, 1336, 154, 1323, 1330, 1322, 49161, 1342, 1331, 154, 1338, 1336, 1338, 1332, 1322, 49157, 1343, 49171, 43, 1333, - 1335, 1334, 1344, 856, 33, 49157, 1345, 49171, 45, 1333, 1336, 1334, 1336, 1346, 1347, 1332, 1348, 1349, 154, 1350, 49161, - 1351, 136, 49196, 1351, 49153, 1352, 601, 49181, 599, 49154, 151, 49157, 599, 49153, 151, 49157, 599, 49153, 151, 49157, - 599, 49153, 151, 49154, 599, 49154, 151, 49153, 882, 1336, 33, 903, 49153, 882, 151, 903, 49155, 1336, 49153, 903, 151, 49160, - 1353, 49154, 1354, 1355, 1356, 49153, 1357, 49163, 1358, 151, 49177, 1358, 151, 49170, 1358, 151, 49153, 1358, 151, 49166, - 1358, 49153, 151, 49165, 1358, 49185, 151, 49274, 1358, 49156, 151, 49154, 1359, 49155, 151, 49196, 967, 49154, 151, 49160, - 916, 49204, 1360, 49155, 1361, 49168, 1362, 1361, 1363, 1364, 49153, 1365, 151, 49163, 927, 1366, 49154, 151, 1364, 49198, - 151, 49196, 927, 804, 49281, 151, 49180, 1367, 49154, 1368, 49200, 1369, 49166, 1370, 1371, 49178, 1372, 49155, 1022, 49182, - 1373, 1374, 49155, 1375, 49160, 151, 49154, 1376, 49168, 1377, 1378, 49159, 1377, 1378, 49156, 1379, 49189, 1380, 49156, - 1381, 49156, 151, 49181, 1382, 1383, 1384, 49187, 1385, 49155, 151, 49159, 1385, 1386, 49156, 1387, 49193, 151, 49189, 1388, - 49153, 1389, 49189, 1390, 49153, 1391, 49199, 1392, 49181, 1393, 49153, 1394, 49161, 1395, 49157, 1394, 49187, 1396, 49155, - 1397, 49187, 1398, 49155, 1397, 49191, 1399, 49159, 1400, 49203, 1401, 49162, 151, 1402, 49162, 1403, 1404, 49166, 1403, - 1404, 49158, 1403, 1404, 49153, 1403, 1404, 49162, 1405, 1404, 49166, 1405, 1404, 49158, 1405, 1404, 49153, 1405, 49154, - 1404, 49203, 1406, 49163, 1407, 49334, 1408, 49160, 151, 49173, 1408, 49161, 151, 49159, 1408, 49175, 151, 1409, 49153, 1410, - 49154, 1409, 151, 49193, 1409, 151, 49160, 1409, 49220, 151, 49157, 1411, 49153, 151, 1411, 151, 49195, 1411, 151, 49153, - 1411, 49154, 151, 1411, 49153, 151, 1411, 49173, 1412, 151, 1413, 49159, 1414, 49174, 1415, 49153, 1416, 49158, 1417, 49182, - 1418, 49159, 1419, 49160, 1420, 49199, 151, 49170, 1421, 1422, 49153, 1421, 49156, 1422, 49156, 1423, 49173, 1424, 49155, - 1425, 49153, 1426, 49154, 1427, 1428, 49177, 1429, 49156, 1430, 1431, 49215, 151, 49183, 1432, 49175, 1433, 49155, 151, 49153, - 1434, 49153, 1433, 49167, 1434, 49153, 151, 49197, 1434, 1435, 49154, 1436, 1437, 49153, 1436, 49156, 1437, 49155, 1436, - 49155, 1435, 1437, 49154, 1435, 1437, 49178, 1435, 49153, 1438, 49153, 1437, 49154, 1439, 49155, 1437, 1440, 49159, 1441, - 1442, 49158, 1437, 49157, 1443, 49153, 1444, 1443, 49158, 1437, 49180, 1445, 49153, 1446, 1447, 49180, 1448, 49154, 1449, - 49183, 151, 49159, 1450, 1451, 49179, 1450, 49153, 1452, 49155, 1453, 49156, 1454, 49157, 1455, 1456, 49160, 1453, 49205, - 1457, 49154, 1458, 1459, 49157, 1460, 49173, 1461, 49153, 151, 49159, 1462, 49170, 1463, 49156, 151, 49159, 1464, 49169, - 1465, 49158, 151, 49155, 1466, 49163, 151, 49158, 1467, 49231, 151, 49224, 1468, 49206, 151, 49202, 1469, 49164, 151, 49202, - 1470, 49158, 151, 49157, 1471, 49185, 1472, 49153, 1473, 49155, 1474, 49159, 151, 49161, 1475, 49157, 151, 49161, 1476, 49155, - 1477, 1478, 1477, 49173, 1479, 49154, 1480, 1481, 1482, 49154, 1483, 1484, 1485, 49173, 1486, 49159, 1480, 49153, 1487, 49359, - 151, 49182, 1488, 151, 49193, 1489, 1490, 49153, 1491, 1492, 49153, 1490, 49153, 1489, 49165, 1490, 49153, 337, 49154, 1493, - 49206, 337, 339, 49154, 1494, 49180, 1495, 49161, 1496, 1495, 49159, 151, 49173, 1497, 49162, 1498, 49155, 1499, 49156, 1500, - 49173, 1501, 49169, 1502, 49155, 1503, 49155, 1504, 49189, 151, 49172, 1505, 49158, 1506, 49171, 1507, 49174, 1508, 49160, - 1509, 1510, 1511, 1510, 49204, 1512, 49165, 1511, 1513, 49153, 1514, 49156, 1515, 49155, 1516, 49171, 1517, 49161, 1518, - 1519, 49153, 1520, 49153, 1521, 1520, 49160, 1516, 1522, 49153, 1523, 1524, 49196, 1525, 49154, 1524, 49155, 1523, 49153, - 1524, 1526, 1527, 49153, 1528, 1529, 49155, 1530, 1531, 49161, 1532, 1533, 49153, 1532, 49176, 1534, 49158, 151, 49161, 1535, - 49157, 151, 49154, 1536, 49187, 1537, 49156, 1536, 1538, 49157, 1536, 49153, 1539, 1540, 49161, 1541, 1542, 49154, 1543, - 1544, 49153, 1545, 1546, 49159, 1540, 49186, 1547, 1548, 49153, 1549, 1547, 49160, 1550, 49153, 1551, 1552, 49199, 1553, - 49154, 1552, 49160, 1551, 1552, 1554, 49155, 1553, 49153, 1555, 49153, 1556, 1557, 49154, 1558, 1559, 1560, 1561, 49161, - 1562, 1563, 1564, 1565, 1564, 49153, 1566, 510, 49171, 1567, 49162, 510, 49169, 1568, 1569, 49176, 1568, 49154, 1570, 49154, - 1571, 49153, 1570, 1571, 1572, 1573, 1574, 49153, 1575, 1576, 49153, 1575, 1577, 1578, 49153, 1579, 1580, 49165, 1569, 49199, - 151, 49158, 1581, 1582, 1581, 1582, 49155, 1581, 1582, 49166, 1581, 1582, 49161, 1581, 1583, 49157, 1582, 49198, 1584, 1585, - 49154, 1586, 49157, 1585, 1587, 1588, 49156, 1589, 49161, 1590, 49157, 1589, 1591, 1592, 49153, 1593, 1594, 49159, 1595, - 49153, 1594, 49153, 1595, 49153, 1594, 49173, 1595, 1594, 49158, 1595, 1594, 49153, 1595, 1594, 49156, 1595, 1594, 1596, - 1597, 1595, 1598, 1593, 1592, 49155, 1593, 49153, 1594, 49153, 1593, 49153, 1594, 49153, 1593, 1599, 49153, 1594, 1600, 49157, - 1594, 1598, 49156, 1594, 1601, 49155, 1595, 49153, 1593, 49153, 1594, 49158, 1597, 49154, 1594, 49156, 1597, 49162, 1594, - 49161, 1602, 1603, 1602, 49153, 1603, 1602, 1603, 49189, 1602, 1603, 1602, 1604, 49153, 1605, 49157, 1606, 1603, 1604, 49153, - 1603, 1604, 1603, 49154, 1604, 1605, 1603, 49153, 1605, 1607, 1608, 1607, 1602, 1609, 1610, 49153, 1611, 1603, 49153, 1612, - 49159, 1603, 49153, 1613, 49180, 1603, 49204, 1614, 49154, 1615, 49159, 1616, 49153, 1615, 1617, 49153, 1616, 1615, 1618, - 49155, 1614, 49153, 1619, 1620, 49153, 1621, 49161, 1622, 1623, 1620, 1624, 1621, 1625, 1626, 49153, 1627, 49181, 1624, 49199, - 1628, 1629, 49153, 1630, 49157, 1631, 1630, 1631, 49153, 1630, 1629, 1630, 49153, 1631, 1630, 1632, 1633, 49153, 1628, 1634, - 1628, 49159, 1635, 49161, 1636, 49157, 1635, 49183, 151, 49198, 1637, 1638, 49153, 1639, 49155, 1640, 49153, 1641, 49155, - 1639, 49153, 1640, 1639, 1642, 1643, 1644, 49153, 1645, 49153, 1646, 49154, 1647, 1645, 49165, 1648, 49155, 1649, 49153, - 1650, 49185, 1641, 49199, 1651, 49154, 1652, 49159, 1653, 49153, 1652, 1653, 1652, 1654, 1653, 49153, 1655, 1656, 1651, 49162, - 1657, 49161, 1658, 49157, 1657, 49164, 1659, 49170, 680, 49194, 1660, 1661, 1662, 1661, 49153, 1662, 49157, 1661, 1663, 1664, - 1665, 1666, 49157, 1667, 49161, 1668, 49157, 1667, 49171, 1669, 49179, 1250, 49177, 1670, 1671, 49153, 1672, 1673, 1674, - 1673, 49153, 1674, 49155, 1673, 1674, 49155, 1673, 1675, 49155, 1672, 49161, 1676, 49153, 1677, 49154, 1678, 1679, 49158, - 1680, 49160, 1672, 49199, 151, 49195, 1681, 49154, 1682, 49160, 1683, 1682, 1684, 1685, 1686, 49171, 1687, 49231, 151, 49183, - 1688, 49183, 1689, 49161, 1690, 49160, 1691, 49163, 151, 1692, 49158, 1693, 49153, 151, 1693, 49153, 151, 49159, 1693, 151, - 49153, 1693, 151, 49175, 1693, 1694, 49156, 1695, 151, 49153, 1695, 49153, 151, 49153, 1696, 1697, 1698, 1693, 1695, 1693, - 1695, 1699, 1700, 1701, 1700, 49160, 151, 49161, 1702, 49221, 151, 49159, 1703, 49153, 1704, 49190, 1703, 49154, 1705, 49155, - 1706, 49153, 1704, 49153, 1706, 49155, 1705, 1707, 1703, 1708, 1703, 1705, 49178, 1704, 1709, 49161, 1710, 49191, 1709, 1711, - 1712, 49155, 1710, 1713, 1709, 49155, 1710, 49154, 1714, 49153, 1715, 49154, 1714, 1712, 49159, 151, 1716, 49157, 1717, 49153, - 1718, 49154, 1717, 49191, 1716, 49153, 1719, 49155, 1716, 49164, 1717, 1718, 1720, 1721, 1722, 49153, 1723, 1724, 49154, - 1722, 49153, 1725, 49164, 1726, 49167, 1727, 49208, 1728, 49158, 151, 49161, 1729, 49237, 1730, 49247, 151, 49184, 1731, - 1732, 49165, 1733, 49161, 1734, 49157, 1733, 49160, 1735, 1736, 49188, 1735, 1737, 49158, 1738, 1736, 49157, 1738, 1737, - 1739, 1735, 49153, 1740, 1741, 49153, 1742, 49161, 1736, 49161, 1743, 49170, 1744, 49154, 1736, 1745, 1746, 49181, 1747, - 49153, 1748, 49173, 1749, 1748, 1750, 49158, 1749, 1750, 49153, 1749, 1750, 49153, 1749, 49160, 1748, 49215, 151, 49158, - 1751, 151, 49153, 1751, 151, 49189, 1751, 49157, 1752, 49154, 151, 1752, 151, 49153, 1752, 151, 49154, 1752, 1753, 1752, - 49153, 1754, 1751, 1752, 49159, 151, 49161, 1755, 49157, 151, 49157, 1756, 151, 49153, 1756, 151, 49183, 1756, 49156, 1757, - 151, 49153, 1758, 151, 49153, 1757, 1758, 1757, 1759, 1756, 49158, 151, 49161, 1760, 49333, 151, 49170, 1761, 49153, 1762, - 49153, 1763, 49153, 1764, 49158, 1765, 49153, 1766, 1767, 1768, 49164, 1767, 1769, 49185, 1767, 49153, 1768, 49156, 1766, - 49154, 1769, 49153, 1768, 1766, 1770, 1771, 49153, 1772, 49162, 1773, 49161, 1774, 1775, 49156, 1769, 49231, 151, 1776, 49166, - 1777, 49172, 1778, 49159, 1779, 49155, 1780, 49168, 1779, 49164, 440, 1781, 49390, 1782, 49193, 1783, 1784, 49253, 1785, - 49250, 1786, 49163, 1787, 1785, 49155, 1788, 1789, 49162, 1785, 49347, 1790, 49227, 151, 49248, 1791, 49153, 1792, 49164, - 1793, 49326, 1794, 1795, 49160, 1796, 49158, 1797, 1798, 49157, 1795, 49166, 1799, 49161, 151, 49434, 1800, 49156, 151, 49350, - 1801, 49208, 151, 49181, 1802, 49163, 1803, 49154, 1804, 49153, 1803, 1805, 49161, 1806, 49221, 151, 49336, 1807, 49158, - 1149, 49182, 1808, 1809, 49161, 1810, 49155, 1809, 49153, 1811, 49230, 1812, 1813, 49161, 1814, 49157, 1813, 49181, 1815, - 49153, 151, 49156, 1816, 1817, 49161, 151, 49199, 1818, 49158, 1819, 49153, 1820, 1821, 49153, 1822, 49155, 1823, 49153, - 1824, 49153, 1825, 1820, 1823, 49161, 151, 49161, 1826, 151, 49158, 1827, 151, 49172, 1818, 49156, 151, 49170, 1818, 49327, - 151, 49154, 1828, 49191, 1829, 49153, 1830, 1831, 49153, 1832, 49161, 1833, 49221, 151, 49183, 1834, 49183, 1835, 49174, - 1836, 1837, 1838, 49153, 1839, 49156, 1840, 49247, 151, 49220, 1841, 49157, 1842, 49155, 1843, 1844, 1841, 49197, 1845, 49160, - 1846, 49158, 1843, 49155, 1847, 49164, 1848, 49215, 151, 1849, 1850, 1851, 1852, 1853, 49162, 151, 49153, 1854, 49165, 151, - 49388, 1855, 49156, 1856, 49157, 1857, 49159, 1858, 49266, 1855, 49164, 1859, 49365, 1860, 49192, 151, 1861, 49160, 1859, - 49270, 1858, 49263, 151, 49155, 1862, 151, 49158, 1862, 151, 49153, 1862, 151, 1863, 1864, 49436, 1865, 1866, 49154, 1867, - 49166, 151, 1868, 49180, 151, 49154, 1869, 49153, 151, 1870, 49165, 151, 49155, 1871, 49159, 151, 49419, 1872, 49155, 1873, - 49258, 1874, 49156, 1875, 49164, 1874, 49154, 1875, 49160, 1874, 49158, 1875, 49161, 1874, 49153, 1875, 1876, 1877, 1878, - 1879, 49155, 1880, 49243, 151, 49391, 1104, 49161, 1881, 49157, 151, 49203, 1104, 49227, 151, 49197, 721, 49153, 151, 49174, - 721, 49160, 151, 49267, 1882, 49211, 151, 49397, 1883, 49161, 151, 49190, 1883, 49153, 151, 927, 49210, 1883, 49153, 1884, - 49154, 1885, 49154, 1883, 49157, 1886, 49159, 1887, 49159, 1885, 49153, 1883, 49158, 1885, 49181, 1883, 49155, 1885, 49199, - 1883, 49162, 933, 49153, 1882, 49172, 151, 49217, 1362, 49154, 1888, 1362, 49273, 151, 49171, 1889, 49163, 151, 49171, 1890, - 49163, 151, 49238, 916, 49160, 151, 49169, 1891, 49158, 1890, 49158, 151, 49177, 1892, 49159, 1893, 49153, 1894, 49167, 1893, - 49177, 1892, 49158, 1893, 151, 49153, 1894, 49167, 1893, 49177, 1892, 49159, 1893, 49153, 1894, 49167, 1893, 1892, 151, 49153, - 1892, 49153, 151, 1892, 49153, 151, 49153, 1892, 49153, 151, 49155, 1892, 151, 49159, 1892, 49155, 1893, 151, 1893, 151, - 1893, 49153, 1894, 1893, 1895, 49153, 1893, 151, 49162, 1893, 49177, 1892, 49159, 1893, 49153, 1894, 49167, 1893, 49153, - 1892, 151, 49155, 1892, 49153, 151, 49159, 1892, 151, 49158, 1892, 151, 49159, 1893, 49153, 1894, 49167, 1893, 49153, 1892, - 151, 49155, 1892, 151, 49156, 1892, 151, 1892, 49154, 151, 49158, 1892, 151, 49159, 1893, 49153, 1894, 49167, 1893, 49177, - 1892, 49159, 1893, 49153, 1894, 49167, 1893, 49177, 1892, 49159, 1893, 49153, 1894, 49167, 1893, 49177, 1892, 49159, 1893, - 49153, 1894, 49167, 1893, 49177, 1892, 49159, 1893, 49153, 1894, 49167, 1893, 49177, 1892, 49159, 1893, 49153, 1894, 49167, - 1893, 49177, 1892, 49159, 1893, 49153, 1894, 49167, 1893, 49153, 917, 49153, 151, 49176, 1892, 1896, 49176, 1893, 1897, 49157, - 1893, 49176, 1892, 1896, 49176, 1893, 1897, 49157, 1893, 49176, 1892, 1896, 49176, 1893, 1897, 49157, 1893, 49176, 1892, - 1896, 49176, 1893, 1897, 49157, 1893, 49176, 1892, 1896, 49176, 1893, 1897, 49157, 1893, 1898, 1899, 49153, 151, 49201, 1900, - 49279, 1901, 49206, 1902, 49155, 1901, 49201, 1902, 49159, 1901, 1902, 49165, 1901, 1902, 49153, 1901, 1903, 1904, 49153, - 1903, 1905, 49166, 151, 49156, 1902, 151, 49166, 1902, 49231, 151, 49161, 1193, 1906, 49166, 1193, 1907, 49155, 1193, 49157, - 151, 49157, 1908, 49236, 151, 49158, 1909, 1910, 49168, 1909, 49153, 1910, 49158, 1909, 1910, 49153, 1909, 1910, 49156, 1909, - 49156, 1910, 49179, 1911, 49153, 1912, 49177, 1911, 1912, 49156, 1911, 49184, 777, 1913, 49263, 151, 49196, 1914, 49154, - 151, 49158, 1915, 49156, 1916, 49153, 1917, 49153, 151, 49161, 1918, 49155, 151, 1914, 1919, 49215, 151, 49181, 1920, 1921, - 49168, 1922, 49195, 1923, 49155, 1924, 49161, 1925, 49156, 1926, 1927, 49231, 151, 49178, 1928, 1929, 49155, 1930, 49161, - 1931, 49237, 151, 49181, 1932, 1933, 1934, 1932, 49161, 1935, 49155, 151, 1936, 49247, 151, 49158, 1937, 607, 49155, 1937, - 607, 49153, 1937, 607, 49166, 1937, 607, 49348, 1938, 49153, 151, 49160, 1939, 49158, 1940, 49192, 151, 49185, 1941, 49185, - 1942, 49154, 1943, 1944, 49154, 1945, 1946, 49155, 1947, 49161, 1948, 49155, 1947, 49153, 1949, 49296, 151, 49210, 1890, - 1950, 49154, 1890, 1951, 49155, 1890, 49227, 151, 49196, 1952, 1953, 49166, 1952, 49217, 151, 49155, 1954, 337, 49178, 1954, - 337, 49153, 1954, 337, 1954, 49153, 337, 1954, 337, 49161, 1954, 337, 49155, 1954, 337, 1954, 337, 1954, 49157, 337, 1954, - 49155, 337, 65535, 3, 1954, 337, 49154, 1954, 337, 49153, 1954, 337, 1954, 49153, 337, 65535, 5, 1954, 337, 49153, 1954, - 337, 1954, 49153, 337, 49155, 1954, 337, 49158, 1954, 337, 49155, 1954, 337, 49155, 1954, 337, 1954, 337, 49161, 1954, 337, - 49168, 1954, 49156, 337, 49154, 1954, 337, 49156, 1954, 337, 49168, 1954, 49203, 337, 49153, 1955, 49165, 337, 49195, 927, - 49155, 151, 49251, 927, 49163, 151, 49166, 1956, 49153, 151, 49165, 1956, 1957, 151, 49166, 1956, 151, 49166, 1956, 49173, - 1957, 49161, 151, 49162, 928, 49153, 1958, 49154, 1366, 49182, 1107, 1950, 1959, 1960, 49162, 1959, 1960, 1959, 1960, 49153, - 1959, 1960, 49154, 1959, 1960, 49154, 1959, 49156, 1107, 1956, 49158, 1959, 1960, 49158, 1959, 1960, 49161, 1959, 49153, - 1961, 1953, 49154, 1366, 49160, 1959, 1960, 1959, 49153, 1960, 49153, 1959, 1960, 49161, 1959, 49155, 1107, 49153, 1956, - 1107, 49161, 1956, 49169, 1962, 1366, 49207, 151, 49177, 1963, 1964, 49153, 1956, 49164, 151, 49185, 1107, 49160, 1956, 1962, - 49155, 151, 49160, 1107, 49158, 151, 49153, 1956, 49165, 151, 49157, 1965, 49177, 151, 49184, 1956, 49163, 1957, 49154, 933, - 49157, 1956, 1957, 49221, 1956, 1957, 49153, 933, 49171, 1956, 49163, 1957, 49188, 1956, 1957, 49156, 1956, 49155, 1957, - 49156, 933, 49163, 1957, 49168, 1956, 49158, 1957, 49154, 933, 49156, 1966, 49214, 1956, 1957, 1956, 1957, 49333, 1956, 1957, - 49155, 1956, 49153, 1957, 933, 49213, 1956, 49153, 1957, 49155, 1961, 49158, 1957, 49156, 933, 49175, 1956, 49169, 1957, - 1962, 49192, 1957, 1962, 49237, 1957, 49156, 1956, 1967, 49167, 1968, 1967, 49154, 1968, 65535, 3, 1967, 1968, 1967, 49154, - 1968, 1967, 49157, 1968, 49153, 1967, 49155, 1968, 1967, 1968, 49153, 1967, 49155, 1968, 1967, 49163, 1968, 49153, 1969, - 49153, 1970, 49162, 1968, 49199, 1957, 49221, 1956, 49161, 1957, 933, 49153, 1962, 49153, 1965, 1953, 49153, 1366, 49155, - 151, 1971, 49154, 1882, 49164, 1957, 49154, 151, 49155, 1957, 49154, 1962, 49153, 1965, 1950, 1953, 49153, 1366, 49154, 151, - 49267, 1956, 49154, 1971, 49155, 151, 49156, 1971, 49236, 1957, 49155, 1950, 1971, 49157, 151, 49163, 1953, 49155, 151, 1882, - 49166, 151, 49163, 1957, 49155, 151, 49207, 1957, 49159, 151, 49161, 1957, 49157, 151, 49191, 1957, 49159, 151, 49181, 1957, - 49153, 151, 49153, 1366, 49161, 1104, 49155, 151, 49153, 1104, 49213, 151, 49163, 1965, 1366, 49154, 1953, 49160, 933, 49157, - 1962, 1965, 49159, 1962, 49159, 1965, 1962, 49153, 1965, 49163, 1962, 1953, 49163, 1962, 1965, 49154, 1950, 49166, 1962, - 49164, 1965, 49156, 1950, 1953, 1366, 49155, 1950, 49153, 1366, 1882, 1950, 1953, 49155, 1950, 49156, 933, 49164, 1962, 49157, - 1965, 49162, 1950, 49153, 1366, 49157, 1953, 49154, 1366, 49153, 1953, 49161, 1950, 49157, 1953, 933, 49153, 1950, 49159, - 1953, 1366, 1882, 49154, 1953, 49174, 1965, 49176, 1950, 49235, 1953, 49163, 151, 49165, 1950, 49153, 151, 49155, 1953, 1366, - 49154, 1971, 49154, 1953, 49153, 1882, 49154, 151, 49154, 1953, 49155, 1366, 49153, 1971, 1104, 49156, 151, 1104, 49157, - 1953, 49170, 1366, 49155, 1882, 49154, 1971, 49158, 1366, 49155, 1882, 49154, 1971, 1104, 1971, 49154, 1366, 49154, 1882, - 1104, 49158, 151, 49153, 1971, 49158, 1366, 49154, 1882, 49153, 1971, 1104, 49153, 151, 1104, 49159, 1882, 1971, 1104, 49157, - 151, 49158, 1882, 49153, 1971, 49158, 151, 49298, 1366, 151, 49206, 1366, 49188, 1104, 49161, 1972, 49283, 151, 49153, 1973, - 49366, 1974, 49158, 1112, 49153, 1121, 49183, 151, 49332, 1116, 49155, 1121, 1975, 49157, 151, 49373, 1976, 49153, 151, 49409, - 1118, 49165, 151, 49456, 1119, 49166, 151, 49389, 1977, 49185, 151, 49309, 1978, 49249, 151, 49354, 1112, 49156, 151, 49375, - 1975, 49231, 151, 1979, 1980, 49181, 1979, 49247, 1981, 49279, 872, 49391, 1982, 49167, 872, 49405, 1983, 49153, 1973 + 335, 336, 49157, 335, 337, 49153, 338, 49156, 339, 340, 49159, 341, 342, 343, 49162, 342, 49157, 343, 49153, 344, 335, 49159, + 345, 49161, 346, 335, 347, 49153, 348, 341, 49154, 348, 49154, 341, 349, 49163, 350, 49153, 351, 352, 353, 49157, 354, 49157, + 355, 49154, 354, 356, 49162, 354, 357, 358, 49153, 359, 360, 361, 49167, 362, 49188, 363, 364, 365, 366, 362, 49154, 360, + 49159, 359, 49155, 360, 367, 368, 365, 362, 49155, 369, 358, 49153, 364, 49159, 363, 49153, 362, 49153, 359, 49153, 370, + 49161, 371, 372, 373, 374, 49156, 375, 376, 49153, 377, 49153, 378, 379, 49153, 378, 380, 381, 49153, 382, 383, 49159, 384, + 49153, 383, 49153, 384, 49153, 383, 49153, 384, 49171, 385, 383, 49158, 385, 383, 385, 49154, 383, 49155, 385, 49153, 383, + 386, 387, 388, 49153, 382, 49155, 381, 49153, 383, 49153, 382, 49153, 383, 49153, 382, 389, 390, 49159, 383, 388, 49155, + 383, 49153, 385, 383, 385, 49153, 384, 49153, 381, 49153, 383, 49161, 391, 49153, 385, 49153, 392, 49157, 393, 394, 395, + 396, 397, 398, 383, 399, 400, 401, 402, 399, 49157, 403, 49155, 399, 49153, 403, 49153, 399, 49173, 403, 399, 49158, 403, + 399, 49153, 403, 399, 49153, 403, 399, 49153, 403, 49153, 399, 404, 399, 49154, 405, 49153, 401, 49155, 399, 49153, 401, + 49153, 399, 49153, 401, 406, 49154, 399, 407, 49158, 399, 49155, 403, 399, 403, 49158, 399, 49161, 408, 401, 409, 49154, + 403, 407, 410, 49160, 399, 411, 49153, 412, 413, 411, 49158, 414, 415, 414, 411, 49154, 414, 411, 49153, 414, 49171, 416, + 411, 49158, 416, 411, 49153, 416, 411, 49156, 416, 49153, 411, 417, 414, 49154, 413, 49156, 412, 411, 49153, 412, 413, 411, + 49153, 413, 418, 49153, 411, 414, 49166, 411, 414, 415, 49153, 419, 49153, 411, 49161, 420, 421, 422, 49158, 411, 423, 424, + 425, 424, 49154, 426, 427, 428, 49153, 429, 427, 49159, 430, 49153, 427, 49153, 430, 49153, 427, 49153, 430, 49171, 431, + 427, 49158, 431, 427, 49153, 431, 427, 432, 49155, 431, 49153, 427, 433, 430, 434, 428, 429, 49154, 428, 435, 49153, 427, + 49153, 429, 49153, 427, 49153, 429, 436, 49158, 427, 437, 428, 434, 49155, 427, 49153, 431, 427, 431, 49153, 430, 49153, + 435, 49153, 427, 49161, 438, 439, 432, 49157, 440, 49159, 427, 49153, 441, 442, 443, 441, 49157, 443, 49154, 441, 49154, + 443, 441, 49155, 443, 49154, 441, 49153, 443, 441, 443, 441, 49153, 443, 49154, 441, 49153, 443, 49154, 441, 49154, 443, + 49154, 441, 49159, 443, 444, 49154, 443, 49155, 441, 445, 446, 442, 49153, 446, 49154, 441, 49154, 446, 441, 49154, 446, + 447, 49153, 441, 448, 49157, 441, 445, 49165, 441, 449, 49160, 450, 49154, 451, 49157, 452, 453, 452, 49156, 441, 454, 49154, + 455, 456, 49159, 457, 458, 49154, 457, 458, 49154, 457, 49171, 459, 458, 49161, 459, 460, 49156, 459, 49153, 458, 461, 462, + 49154, 463, 49155, 455, 458, 49154, 463, 458, 49154, 463, 464, 49158, 458, 49153, 463, 458, 49153, 465, 466, 458, 467, 468, + 49153, 458, 49153, 457, 49153, 469, 49153, 458, 49161, 470, 49158, 458, 471, 49158, 472, 473, 474, 475, 49153, 476, 477, + 49159, 478, 479, 49154, 478, 479, 49174, 478, 479, 49161, 478, 479, 49156, 478, 49153, 479, 480, 481, 476, 482, 483, 476, + 483, 49153, 476, 479, 482, 49153, 483, 479, 49153, 483, 482, 484, 49158, 479, 49153, 483, 49156, 479, 485, 486, 478, 479, + 49153, 478, 49153, 487, 49153, 479, 49161, 488, 479, 49153, 489, 490, 49163, 479, 491, 492, 49153, 493, 494, 49159, 495, + 496, 49154, 495, 496, 49154, 495, 49171, 497, 498, 49167, 497, 498, 49153, 499, 500, 501, 49153, 493, 49154, 502, 503, 496, + 49154, 493, 496, 49154, 493, 504, 505, 506, 49155, 496, 49154, 507, 501, 49158, 508, 509, 49153, 495, 49153, 503, 49153, + 496, 49161, 510, 49157, 511, 49154, 508, 512, 49157, 500, 513, 514, 49153, 515, 513, 49169, 516, 49154, 513, 49175, 516, + 513, 49160, 516, 513, 516, 49153, 513, 49158, 516, 49154, 513, 517, 49155, 513, 518, 49153, 515, 49154, 519, 513, 519, 513, + 49158, 515, 518, 49157, 513, 49161, 520, 49153, 513, 49153, 515, 521, 49162, 513, 522, 49199, 523, 524, 523, 525, 49157, + 524, 526, 49155, 522, 527, 49156, 528, 523, 529, 49157, 530, 524, 530, 531, 49161, 532, 49153, 533, 49187, 522, 534, 49153, + 535, 534, 535, 534, 536, 49153, 535, 536, 535, 534, 536, 535, 49157, 536, 49155, 535, 536, 49158, 535, 536, 49154, 535, 534, + 535, 534, 535, 49153, 536, 49153, 535, 536, 49155, 535, 537, 535, 538, 49157, 537, 539, 49153, 537, 535, 49153, 534, 49156, + 540, 534, 541, 534, 49156, 542, 537, 543, 534, 49161, 544, 49153, 534, 49153, 535, 49153, 545, 49183, 534, 546, 49154, 547, + 49155, 548, 549, 49155, 548, 49157, 549, 547, 548, 49154, 547, 49153, 550, 49157, 547, 49161, 551, 49161, 552, 65535, 3, + 547, 550, 553, 554, 553, 554, 49153, 555, 49159, 546, 556, 49184, 546, 557, 49153, 558, 49155, 556, 49157, 559, 560, 559, + 560, 49156, 559, 561, 49153, 559, 49153, 562, 563, 548, 49153, 550, 49155, 546, 564, 49154, 565, 49157, 559, 566, 559, 556, + 49172, 559, 49154, 566, 49158, 559, 566, 559, 49154, 566, 556, 49159, 567, 568, 49157, 567, 556, 569, 567, 49153, 570, 49154, + 571, 49155, 572, 49153, 573, 49188, 556, 49185, 574, 575, 49156, 574, 575, 49153, 574, 576, 577, 49155, 578, 577, 578, 49154, + 579, 578, 580, 577, 581, 582, 49153, 576, 49153, 579, 575, 49161, 583, 49153, 584, 49155, 585, 49157, 574, 49153, 577, 49153, + 578, 49155, 575, 49154, 579, 575, 576, 49153, 586, 49153, 575, 49153, 576, 49156, 586, 49154, 575, 49155, 579, 49164, 575, + 579, 49153, 576, 49153, 579, 49157, 586, 587, 575, 586, 49161, 588, 49153, 589, 590, 591, 49153, 592, 49189, 593, 594, 595, + 49156, 594, 595, 49153, 594, 49190, 596, 49153, 597, 49153, 598, 599, 600, 49154, 601, 49241, 602, 49156, 603, 604, 605, + 49217, 606, 49156, 607, 49233, 606, 49157, 607, 49158, 608, 609, 49214, 608, 609, 608, 610, 49155, 608, 49153, 610, 49158, + 608, 610, 608, 610, 49155, 608, 49153, 610, 49190, 608, 609, 608, 610, 49155, 608, 49153, 610, 49182, 608, 609, 608, 610, + 49155, 608, 49153, 610, 49158, 608, 610, 608, 610, 49155, 608, 49153, 610, 49158, 608, 609, 49158, 608, 610, 49174, 608, + 609, 49182, 608, 609, 608, 610, 49155, 608, 49153, 610, 49158, 608, 609, 49190, 608, 609, 49170, 608, 49153, 610, 49153, + 611, 612, 613, 614, 615, 49155, 614, 49153, 615, 49160, 616, 49162, 617, 49154, 610, 49167, 609, 49161, 618, 49157, 610, + 49231, 619, 49156, 620, 621, 49153, 622, 49157, 623, 49153, 622, 624, 49515, 625, 626, 627, 49159, 625, 49160, 628, 629, + 49177, 630, 631, 632, 49154, 633, 49226, 634, 49154, 635, 49154, 636, 49159, 637, 49158, 638, 49164, 639, 640, 49155, 639, + 49153, 641, 642, 643, 49160, 644, 640, 49169, 645, 49153, 646, 647, 49153, 648, 49160, 649, 49169, 650, 49153, 651, 49163, + 652, 49164, 653, 654, 49154, 653, 654, 49153, 655, 49163, 654, 49186, 656, 49153, 657, 49166, 656, 49153, 658, 659, 49158, + 660, 49159, 659, 660, 49153, 659, 49160, 661, 662, 661, 49153, 663, 664, 665, 49153, 666, 664, 667, 668, 669, 49153, 670, + 49161, 671, 49157, 670, 49161, 672, 49157, 670, 49153, 673, 674, 675, 676, 674, 677, 673, 676, 678, 679, 49154, 680, 681, + 682, 49161, 683, 49157, 684, 49186, 685, 686, 49203, 685, 687, 49158, 684, 49156, 685, 49153, 688, 49185, 685, 689, 690, + 49156, 684, 49221, 628, 49161, 151, 49180, 691, 49153, 692, 693, 49154, 694, 49155, 695, 49153, 694, 49154, 695, 49155, 693, + 49153, 695, 694, 49157, 695, 49154, 696, 49155, 693, 697, 49154, 693, 49153, 698, 49161, 699, 49181, 700, 49153, 151, 49156, + 700, 49162, 151, 49193, 701, 49153, 702, 49155, 151, 49156, 701, 49154, 703, 49153, 701, 703, 49166, 701, 49157, 151, 49161, + 704, 705, 49154, 151, 49153, 706, 49183, 707, 49174, 708, 49153, 709, 49153, 710, 709, 49153, 711, 49153, 712, 49204, 713, + 714, 715, 714, 49158, 715, 151, 716, 714, 715, 49153, 714, 49159, 715, 49157, 714, 49153, 715, 49159, 717, 49153, 151, 717, + 49161, 718, 49157, 151, 49161, 718, 49157, 151, 49158, 719, 720, 49155, 721, 49153, 719, 49153, 151, 49165, 722, 723, 49153, + 724, 49162, 725, 49154, 726, 49166, 727, 49153, 151, 49163, 727, 49171, 151, 49155, 728, 729, 49157, 730, 49153, 731, 49157, + 730, 49184, 731, 732, 733, 49156, 728, 733, 728, 733, 49155, 729, 728, 733, 734, 49158, 731, 735, 736, 49153, 737, 49161, + 738, 49153, 739, 740, 741, 49153, 739, 740, 49161, 742, 49160, 732, 49160, 742, 49153, 743, 737, 49153, 744, 745, 49181, + 746, 745, 49155, 744, 49153, 745, 49153, 744, 747, 748, 49153, 749, 49153, 746, 49161, 750, 751, 49154, 752, 49153, 751, + 49189, 753, 754, 755, 49153, 756, 49154, 755, 756, 755, 49154, 756, 49153, 757, 49159, 758, 49155, 759, 49187, 760, 49159, + 761, 49159, 762, 49153, 761, 763, 764, 49154, 765, 49153, 766, 49154, 767, 49161, 768, 49154, 765, 49154, 760, 49161, 769, + 49181, 770, 49154, 771, 772, 49153, 771, 49153, 773, 774, 775, 776, 49153, 777, 778, 779, 780, 781, 782, 783, 49156, 784, + 49194, 785, 49153, 594, 49154, 785, 49159, 786, 49159, 787, 49154, 788, 789, 49164, 788, 790, 49158, 788, 49155, 791, 788, + 49156, 791, 792, 793, 49153, 792, 794, 49153, 722, 795, 49156, 151, 49189, 86, 49156, 796, 797, 49200, 798, 49156, 799, 800, + 49154, 798, 49156, 799, 86, 49163, 87, 801, 802, 49154, 87, 803, 49167, 87, 804, 49158, 87, 805, 49155, 87, 49160, 806, 807, + 49154, 806, 807, 49173, 806, 808, 49155, 146, 49158, 809, 49156, 810, 49154, 811, 49171, 812, 49165, 813, 722, 49155, 814, + 725, 815, 816, 788, 49153, 809, 65535, 22, 47, 48, 47, 49, 65535, 52, 47, 48, 49155, 51, 817, 818, 49153, 819, 820, 819, + 65535, 21, 47, 48, 47, 49, 65535, 23, 47, 48, 65535, 3, 821, 822, 49159, 823, 49159, 824, 49157, 823, 49153, 151, 49157, + 824, 49153, 151, 49159, 823, 49159, 824, 49159, 823, 49159, 824, 49157, 823, 49153, 151, 49157, 824, 49153, 151, 65535, 4, + 161, 823, 65535, 4, 151, 824, 49159, 823, 49159, 824, 49153, 825, 49155, 826, 49153, 827, 49153, 828, 49153, 829, 49153, + 830, 49153, 151, 49159, 831, 49159, 832, 49159, 831, 49159, 832, 49159, 831, 49159, 832, 49153, 823, 49154, 831, 151, 161, + 831, 49153, 824, 49153, 833, 834, 150, 835, 49154, 150, 49154, 831, 151, 161, 831, 49155, 836, 834, 49154, 150, 49153, 823, + 161, 837, 49153, 151, 49153, 161, 49153, 824, 49153, 838, 151, 49154, 150, 49153, 823, 161, 839, 161, 185, 49153, 161, 49153, + 824, 49153, 840, 841, 49154, 150, 49153, 151, 49154, 831, 151, 161, 831, 49153, 842, 49153, 843, 834, 49153, 150, 151, 49162, + 844, 845, 846, 847, 49153, 848, 49157, 849, 850, 30, 851, 852, 853, 49153, 854, 855, 853, 854, 49155, 30, 856, 49153, 30, + 857, 858, 859, 49156, 860, 861, 49153, 30, 49154, 850, 49155, 30, 35, 41, 30, 49153, 862, 30, 863, 864, 49154, 30, 36, 865, + 866, 867, 49153, 868, 49155, 869, 49155, 870, 871, 872, 873, 49153, 874, 870, 49158, 874, 875, 876, 49154, 877, 878, 879, + 49155, 880, 49157, 881, 38, 882, 49153, 151, 49157, 38, 883, 884, 883, 885, 886, 887, 49161, 38, 883, 884, 883, 885, 886, + 151, 49156, 888, 49159, 889, 49154, 151, 49162, 890, 891, 892, 49154, 893, 49153, 894, 49155, 895, 49154, 896, 897, 898, + 49154, 899, 900, 901, 902, 903, 49165, 151, 49164, 904, 49155, 905, 904, 49153, 906, 907, 49153, 908, 49155, 909, 910, 49155, + 911, 811, 49166, 151, 49153, 912, 913, 49155, 912, 913, 49153, 912, 914, 49154, 913, 49153, 914, 49154, 913, 914, 912, 913, + 49153, 912, 915, 49156, 913, 49157, 912, 913, 912, 916, 912, 913, 917, 918, 919, 49153, 913, 920, 914, 49153, 913, 921, 913, + 914, 49155, 922, 923, 924, 925, 926, 927, 49153, 928, 929, 49155, 930, 928, 49153, 927, 49153, 931, 932, 930, 933, 934, 935, + 936, 49154, 937, 49164, 42, 49167, 938, 49167, 939, 49154, 940, 83, 94, 49155, 941, 937, 49153, 942, 49155, 151, 49156, 943, + 49156, 944, 49153, 943, 49155, 944, 943, 49153, 944, 943, 49153, 944, 943, 944, 945, 49156, 944, 943, 945, 49153, 944, 49155, + 945, 49153, 944, 49155, 945, 49169, 944, 49153, 943, 49153, 944, 943, 944, 943, 49158, 944, 945, 944, 49157, 945, 49153, + 944, 49156, 945, 49160, 946, 49163, 947, 36, 948, 949, 49153, 948, 49153, 36, 950, 49157, 948, 49154, 36, 948, 951, 49153, + 36, 49153, 948, 49154, 36, 49155, 948, 950, 49155, 948, 36, 948, 36, 948, 49155, 36, 49160, 948, 49156, 36, 948, 36, 49169, + 948, 49156, 36, 49155, 948, 49160, 36, 49153, 948, 36, 948, 36, 49159, 948, 36, 49183, 948, 49153, 36, 49155, 948, 49156, + 36, 948, 49160, 36, 49153, 948, 49153, 36, 49170, 948, 49156, 36, 49153, 948, 49160, 36, 49156, 948, 49153, 36, 49153, 948, + 49155, 36, 49175, 948, 49153, 36, 49153, 948, 49165, 952, 32, 953, 49157, 32, 954, 955, 954, 955, 49171, 32, 49153, 948, + 49158, 32, 956, 957, 49231, 32, 953, 871, 49181, 953, 49176, 871, 49153, 958, 959, 958, 49174, 959, 960, 961, 49162, 962, + 49157, 963, 964, 49156, 965, 966, 49162, 967, 49158, 968, 49155, 969, 970, 49188, 32, 49153, 953, 49154, 971, 49173, 972, + 49162, 32, 49172, 972, 49211, 42, 49177, 912, 49177, 973, 49177, 974, 42, 49171, 975, 976, 49301, 32, 49161, 959, 49153, + 977, 49163, 32, 49160, 977, 36, 49155, 32, 49156, 977, 36, 49155, 32, 49153, 977, 49153, 32, 49153, 977, 49154, 32, 49156, + 977, 49165, 32, 977, 32, 977, 49153, 32, 49157, 977, 49154, 32, 49159, 953, 49159, 871, 49156, 32, 49153, 977, 49164, 32, + 49153, 960, 49153, 959, 962, 953, 49189, 32, 977, 32, 977, 49180, 32, 49155, 977, 49160, 32, 49153, 977, 36, 49153, 953, + 49163, 959, 49153, 962, 49161, 959, 49159, 960, 49162, 962, 978, 49153, 966, 49153, 960, 49167, 962, 965, 49161, 978, 49154, + 966, 49155, 978, 49161, 966, 967, 49170, 966, 967, 966, 49155, 967, 49175, 966, 979, 49155, 980, 981, 49155, 980, 49153, + 981, 49179, 980, 981, 49186, 980, 981, 980, 981, 49155, 980, 49154, 981, 980, 982, 49158, 980, 49153, 981, 49158, 980, 65535, + 7, 983, 984, 49181, 985, 980, 49154, 981, 49175, 980, 981, 49165, 980, 981, 986, 49153, 987, 49153, 986, 988, 989, 963, 49153, + 990, 963, 991, 992, 991, 49153, 993, 49154, 871, 49155, 952, 49156, 871, 49154, 952, 49154, 871, 49155, 952, 65535, 3, 994, + 995, 996, 997, 996, 997, 49167, 871, 49279, 998, 49282, 871, 65535, 11, 994, 995, 49153, 871, 49157, 952, 871, 49165, 952, + 49159, 871, 952, 49158, 871, 49157, 952, 49154, 871, 952, 49155, 871, 49156, 952, 871, 49153, 952, 49153, 871, 994, 995, + 994, 995, 952, 49155, 871, 952, 871, 49154, 952, 49153, 871, 49153, 952, 49161, 871, 49157, 952, 49153, 871, 994, 995, 49163, + 871, 49170, 952, 871, 49155, 952, 49153, 871, 952, 871, 952, 49153, 871, 952, 871, 49155, 952, 49156, 871, 49153, 952, 49157, + 871, 49154, 952, 49175, 871, 49153, 952, 49162, 871, 49153, 952, 49155, 871, 49155, 952, 871, 49153, 952, 49153, 871, 49153, + 952, 49155, 871, 49194, 952, 49153, 871, 49159, 952, 871, 49191, 952, 49156, 871, 952, 871, 952, 49154, 871, 49156, 952, + 49156, 871, 49154, 952, 49155, 871, 952, 49154, 871, 49156, 952, 871, 952, 49153, 871, 49165, 960, 49157, 962, 49158, 965, + 49156, 978, 49155, 965, 49163, 978, 49172, 999, 49153, 978, 49157, 999, 49154, 968, 49156, 978, 49156, 966, 49177, 968, 49153, + 972, 49183, 968, 1000, 1001, 49185, 968, 49154, 1002, 49163, 968, 1003, 49159, 968, 970, 49176, 1002, 49155, 1004, 49165, + 1002, 1005, 1003, 49198, 1006, 1007, 49198, 1008, 1009, 98, 94, 1010, 1011, 1012, 1013, 1014, 65535, 3, 98, 94, 1015, 1016, + 1017, 1018, 819, 821, 822, 1019, 98, 94, 1019, 49155, 819, 1020, 1021, 49153, 1022, 65535, 50, 1023, 1024, 1025, 49157, 1026, + 1027, 1028, 1027, 1028, 49154, 1029, 1030, 1031, 49156, 1032, 49154, 1033, 1034, 1035, 49153, 1034, 49189, 1036, 594, 1037, + 49156, 594, 1037, 49153, 594, 49205, 1038, 49153, 1039, 49158, 1040, 1041, 1042, 49165, 1040, 1043, 49174, 609, 49160, 610, + 49158, 609, 610, 49158, 609, 610, 49158, 609, 610, 49158, 609, 610, 49158, 609, 610, 49158, 609, 610, 49158, 609, 610, 49158, + 609, 610, 49183, 1044, 49153, 874, 1045, 1046, 1045, 1046, 49154, 874, 1045, 1046, 874, 1045, 1046, 49160, 874, 1047, 49153, + 1048, 1049, 1048, 1045, 1046, 49153, 1048, 1050, 1051, 65535, 4, 1052, 1053, 49155, 1048, 1054, 1055, 1048, 1056, 49159, + 1057, 49153, 1058, 1059, 49154, 1060, 1061, 1062, 1063, 49153, 1064, 49156, 1065, 49153, 1066, 1067, 1066, 1067, 1068, 49153, + 1001, 1069, 49153, 1070, 65535, 4, 1071, 1072, 1073, 49185, 972, 49177, 1074, 151, 49240, 1074, 49163, 151, 49365, 1074, + 49177, 151, 49153, 1075, 49153, 1076, 49159, 1075, 49153, 1077, 49153, 1078, 844, 1079, 862, 30, 912, 1080, 1081, 1082, 865, + 866, 865, 866, 1083, 1084, 1083, 1084, 865, 866, 49153, 32, 65535, 4, 865, 866, 849, 853, 49153, 1085, 32, 49160, 1082, 49155, + 141, 49153, 1086, 849, 49156, 1087, 49153, 912, 49154, 1088, 1089, 1090, 1091, 924, 912, 1092, 49235, 1093, 49153, 1094, + 49153, 1092, 49153, 1095, 49153, 1096, 49153, 1097, 1094, 1098, 49241, 1099, 1100, 1101, 49153, 1102, 1103, 49156, 1104, + 49191, 1105, 1106, 1107, 1108, 151, 49202, 602, 604, 49193, 602, 151, 49153, 1109, 49155, 1110, 49161, 1109, 49175, 1111, + 49154, 1112, 49156, 1113, 49167, 933, 49171, 936, 49153, 1114, 49160, 151, 1077, 49167, 1103, 49180, 1115, 49153, 1116, 151, + 49161, 42, 49177, 912, 49155, 1117, 49159, 937, 925, 49166, 975, 49179, 1115, 49153, 1116, 1118, 912, 49161, 42, 49190, 912, + 49166, 975, 49163, 912, 49155, 925, 49198, 1119, 1120, 49239, 1119, 49182, 912, 49155, 925, 49250, 912, 49153, 925, 49182, + 912, 925, 49333, 1121, 49161, 1122, 49215, 925, 49317, 1123, 49173, 1124, 49159, 1125, 49159, 1126, 1127, 49160, 1128, 49172, + 1129, 49156, 1130, 49164, 1122, 49154, 1131, 49172, 1132, 1133, 49398, 1132, 49154, 151, 49169, 1134, 49153, 1135, 49167, + 1134, 1135, 49163, 1134, 1135, 49154, 1134, 1135, 1134, 49160, 151, 49191, 1136, 49157, 1137, 1138, 1139, 49291, 1140, 1141, + 1142, 49153, 1143, 49167, 1140, 49161, 1144, 49153, 1140, 49171, 1145, 65535, 16, 219, 220, 223, 224, 65535, 6, 219, 220, + 1146, 207, 49154, 1147, 1148, 49159, 1149, 49153, 207, 1148, 1150, 65535, 12, 219, 220, 225, 226, 225, 226, 49153, 1151, + 1152, 1149, 49221, 1153, 49161, 1154, 49153, 1155, 1156, 1157, 49154, 1158, 1157, 49159, 1159, 49174, 1160, 49155, 1161, + 49156, 1162, 49153, 1163, 65535, 7, 821, 822, 49153, 819, 65535, 31, 821, 822, 1021, 49159, 819, 821, 822, 821, 822, 1164, + 65535, 5, 821, 822, 1162, 49153, 1165, 821, 822, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 65535, 5, 1175, 1176, + 65535, 5, 1169, 1170, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1187, 1188, 1189, 1190, 65535, + 3, 1191, 1192, 1193, 1194, 1191, 1192, 1195, 1196, 1197, 1198, 1199, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1193, 1194, + 1203, 1194, 1203, 1194, 1193, 1194, 1193, 1194, 1201, 1202, 1205, 49171, 151, 1206, 49154, 1207, 1198, 1199, 1208, 49153, + 1209, 1167, 49156, 1210, 49153, 1211, 1212, 49154, 1211, 1213, 49155, 1211, 1212, 49174, 1211, 49153, 1214, 49153, 1212, + 1214, 49155, 1215, 1216, 49154, 151, 49157, 937, 49153, 1117, 896, 1117, 49157, 151, 49203, 1217, 49153, 1218, 49153, 1219, + 49159, 1220, 49153, 1221, 49201, 1222, 49167, 1221, 1223, 1224, 49159, 1225, 49153, 1226, 49161, 1227, 49157, 1225, 49169, + 1228, 49157, 1229, 49154, 1230, 1229, 1231, 1232, 1233, 1234, 49161, 1235, 49179, 1236, 49156, 1237, 49154, 1238, 1239, 1240, + 49174, 1241, 49162, 1242, 1243, 1244, 49162, 1245, 1246, 49180, 603, 49154, 151, 49154, 1247, 1248, 49156, 1249, 49154, 1250, + 49154, 1249, 49187, 1250, 1251, 49153, 1248, 49155, 1247, 49153, 1248, 49153, 1247, 49153, 1248, 1252, 49157, 1253, 1254, + 49153, 1255, 49155, 1253, 1256, 1257, 49161, 1258, 49155, 1256, 49153, 1253, 49156, 1259, 1260, 1261, 49160, 1259, 49161, + 1262, 49156, 1259, 1263, 49192, 1264, 49157, 1265, 49153, 1266, 49153, 1265, 49153, 1266, 49153, 1265, 49160, 1267, 49154, + 1264, 1265, 49159, 1264, 1265, 1266, 49153, 1267, 49161, 1268, 49153, 1267, 1269, 49154, 1270, 49167, 1271, 1272, 49154, + 1271, 49154, 1273, 49154, 1274, 1271, 589, 1260, 1275, 49153, 1259, 49199, 1276, 1277, 1276, 49154, 1277, 49153, 1278, 49153, + 1277, 1278, 1276, 49153, 1278, 1276, 1277, 1279, 1280, 1279, 1280, 49175, 151, 49153, 1276, 1281, 1282, 1283, 49162, 1284, + 1285, 49153, 1286, 49153, 1285, 49153, 1287, 1288, 49153, 1289, 1285, 1290, 49160, 151, 610, 49157, 1291, 49153, 610, 49157, + 1291, 49153, 610, 49157, 1291, 49160, 610, 49158, 1291, 610, 49158, 1291, 610, 49186, 1174, 1292, 49158, 1174, 1293, 49155, + 1294, 49155, 1295, 1174, 1296, 49153, 1297, 1298, 1299, 49153, 1300, 49155, 151, 49231, 1301, 49178, 1302, 49159, 1303, 49153, + 1304, 1305, 49153, 1304, 1305, 49153, 1304, 1306, 1307, 1308, 49153, 151, 49161, 1309, 49157, 151, 49315, 1310, 49163, 151, + 49174, 603, 49155, 151, 49200, 603, 49155, 151, 49279, 1311, 49279, 1312, 49293, 1313, 49153, 1123, 1313, 1123, 1313, 49153, + 1123, 49161, 1313, 1123, 1313, 1123, 1313, 49153, 1123, 49153, 1313, 49154, 1123, 49155, 1313, 49153, 1314, 49210, 1315, + 49154, 1316, 49153, 151, 49257, 1317, 49189, 151, 49156, 817, 1318, 817, 49163, 151, 49156, 1319, 49156, 151, 1320, 1321, + 49161, 1322, 1323, 49164, 1322, 151, 49156, 1322, 151, 1322, 151, 49153, 1322, 151, 49153, 1322, 151, 49161, 1322, 49249, + 269, 49167, 1324, 336, 49167, 1325, 49290, 269, 49157, 1326, 49369, 269, 1327, 1328, 49167, 1329, 49215, 269, 49153, 1325, + 49205, 269, 49158, 1325, 1329, 49183, 1330, 49161, 269, 49153, 1326, 1331, 261, 49153, 1329, 49167, 1332, 49153, 1333, 1334, + 1335, 1333, 49153, 1334, 1336, 1337, 1333, 49157, 151, 49155, 141, 49154, 810, 49158, 722, 49153, 1338, 1339, 49153, 1340, + 49153, 863, 65535, 6, 1341, 1342, 1343, 1344, 1343, 1344, 49153, 870, 1345, 1346, 49155, 1339, 49154, 863, 49153, 154, 1347, + 151, 154, 1348, 49153, 1349, 1340, 65535, 3, 1350, 1351, 49153, 1339, 1352, 1353, 1354, 49153, 1355, 1353, 151, 1352, 890, + 49153, 1339, 49155, 151, 1326, 269, 1326, 281, 1326, 339, 65535, 4, 1326, 269, 1326, 49277, 269, 49153, 339, 1356, 151, 1349, + 1357, 1339, 890, 49153, 1339, 1358, 1350, 1351, 1339, 1353, 154, 1340, 1347, 1339, 49161, 1359, 1348, 154, 1355, 1353, 1355, + 1349, 1339, 49157, 1360, 49171, 43, 1350, 1352, 1351, 1361, 863, 33, 49157, 1362, 49171, 45, 1350, 1353, 1351, 1353, 1363, + 1364, 1349, 1365, 1366, 154, 1367, 49161, 1368, 136, 49196, 1368, 49153, 1369, 604, 49181, 602, 49154, 151, 49157, 602, 49153, + 151, 49157, 602, 49153, 151, 49157, 602, 49153, 151, 49154, 602, 49154, 151, 49153, 890, 1353, 33, 912, 49153, 890, 151, + 912, 49155, 1353, 49153, 912, 151, 49160, 1370, 49154, 1371, 1372, 1373, 49153, 1374, 49163, 1375, 151, 49177, 1375, 151, + 49170, 1375, 151, 49153, 1375, 151, 49166, 1375, 49153, 151, 49165, 1375, 49185, 151, 49274, 1375, 49156, 151, 49154, 1376, + 49155, 151, 49196, 976, 49154, 151, 49160, 925, 49204, 1377, 49155, 1378, 49168, 1379, 1378, 1380, 1381, 49153, 1382, 151, + 49163, 936, 1383, 49154, 151, 1381, 49198, 151, 49196, 936, 811, 49281, 151, 49180, 1384, 49154, 1385, 49200, 1386, 49166, + 1387, 1388, 49178, 1389, 49155, 1032, 49182, 1390, 1391, 49155, 1392, 49160, 151, 49154, 1393, 49168, 1394, 1395, 49159, + 1394, 1395, 49156, 1396, 49189, 1397, 49156, 1398, 49156, 151, 49181, 1399, 1400, 1401, 49187, 1402, 49155, 151, 49159, 1402, + 1403, 49156, 1404, 49193, 151, 49189, 1405, 49153, 1406, 49189, 1407, 49153, 1408, 49199, 1409, 49181, 1410, 49153, 1411, + 49161, 1412, 49157, 1411, 49187, 1413, 49155, 1414, 49187, 1415, 49155, 1414, 49191, 1416, 49159, 1417, 49203, 1418, 49162, + 151, 1419, 49162, 1420, 1421, 49166, 1420, 1421, 49158, 1420, 1421, 49153, 1420, 1421, 49162, 1422, 1421, 49166, 1422, 1421, + 49158, 1422, 1421, 49153, 1422, 49154, 1421, 49203, 1423, 49163, 1424, 49334, 1425, 49160, 151, 49173, 1425, 49161, 151, + 49159, 1425, 49175, 151, 1426, 49153, 1427, 49154, 1426, 151, 49193, 1426, 151, 49160, 1426, 49220, 151, 49157, 1428, 49153, + 151, 1428, 151, 49195, 1428, 151, 49153, 1428, 49154, 151, 1428, 49153, 151, 1428, 49173, 1429, 151, 1430, 49159, 1431, 49174, + 1432, 49153, 1433, 49158, 1434, 49182, 1435, 49159, 1436, 49160, 1437, 49199, 151, 49170, 1438, 1439, 49153, 1438, 49156, + 1439, 49156, 1440, 49173, 1441, 49155, 1442, 49153, 1443, 49154, 1444, 1445, 49177, 1446, 49156, 1447, 1448, 49177, 1449, + 49157, 1450, 49183, 151, 49183, 1451, 49175, 1452, 49155, 151, 49153, 1453, 49153, 1452, 49167, 1453, 49153, 151, 49197, + 1453, 1454, 49154, 1455, 1456, 49153, 1455, 49156, 1456, 49155, 1455, 49155, 1454, 1456, 49154, 1454, 1456, 49178, 1454, + 49153, 1457, 49153, 1456, 49154, 1458, 49155, 1456, 1459, 49159, 1460, 1461, 49158, 1456, 49157, 1462, 49153, 1463, 1462, + 49158, 1456, 49180, 1464, 49153, 1465, 1466, 49180, 1467, 49154, 1468, 49183, 151, 49159, 1469, 1470, 49179, 1469, 49153, + 1471, 49155, 1472, 49156, 1473, 49157, 1474, 1475, 49160, 1472, 49205, 1476, 49154, 1477, 1478, 49157, 1479, 49173, 1480, + 49153, 151, 49159, 1481, 49170, 1482, 49156, 151, 49159, 1483, 49169, 1484, 49158, 151, 49155, 1485, 49163, 151, 49158, 1486, + 49231, 151, 49224, 1487, 49206, 151, 49202, 1488, 49164, 151, 49202, 1489, 49158, 151, 49157, 1490, 49185, 1491, 49153, 1492, + 49155, 1493, 49159, 151, 49161, 1494, 49157, 151, 49161, 1495, 49155, 1496, 1497, 1496, 49173, 1498, 49154, 1499, 1500, 1501, + 49154, 1502, 1503, 1504, 49173, 1505, 49159, 1499, 49153, 1506, 49359, 151, 49182, 1507, 151, 49193, 1508, 1509, 49153, 1510, + 1511, 49153, 1509, 49153, 1508, 49165, 1509, 49153, 339, 49154, 1512, 1513, 49153, 337, 49159, 339, 1514, 49159, 1325, 49184, + 339, 1515, 1516, 340, 49154, 1517, 49180, 1518, 49161, 1519, 1518, 49159, 151, 49173, 1520, 49162, 1521, 49155, 1522, 49156, + 1523, 49173, 1524, 49169, 1525, 49155, 1526, 49155, 1527, 49189, 151, 49172, 1528, 49158, 1529, 49171, 1530, 49174, 1531, + 49160, 1532, 1533, 1534, 1533, 49204, 1535, 49165, 1534, 1536, 49153, 1537, 49156, 1538, 49155, 1539, 49171, 1540, 49161, + 1541, 1542, 49153, 1543, 49153, 1544, 1543, 49160, 1539, 1545, 49153, 1546, 1547, 49196, 1548, 49154, 1547, 49155, 1546, + 49153, 1547, 1549, 1550, 49153, 1551, 1552, 49155, 1553, 1554, 49161, 1555, 1556, 49153, 1555, 49176, 1557, 49158, 151, 49161, + 1558, 49157, 151, 49154, 1559, 49187, 1560, 49156, 1559, 1561, 49157, 1559, 1562, 1563, 1564, 49161, 1565, 1566, 49154, 1567, + 1568, 49153, 1569, 1570, 49159, 1564, 49186, 1571, 1572, 49153, 1573, 1571, 49160, 1574, 49153, 1575, 1576, 49199, 1577, + 49154, 1576, 49160, 1575, 1576, 1578, 49155, 1577, 49153, 1579, 49153, 1580, 1581, 49154, 1582, 1583, 1584, 1585, 49161, + 1586, 1587, 1588, 1589, 1588, 49153, 1590, 513, 49171, 1591, 49162, 513, 49169, 1592, 1593, 49176, 1592, 49154, 1594, 49154, + 1595, 49153, 1594, 1595, 1596, 1597, 1598, 49153, 1599, 1600, 49153, 1599, 1601, 1602, 49153, 1603, 1604, 49165, 1593, 49199, + 151, 49158, 1605, 1606, 1605, 1606, 49155, 1605, 1606, 49166, 1605, 1606, 49161, 1605, 1607, 49157, 1606, 49198, 1608, 1609, + 49154, 1610, 49157, 1609, 1611, 1612, 49156, 1613, 49161, 1614, 49157, 1613, 1615, 1616, 49153, 1617, 1618, 49159, 1619, + 49153, 1618, 49153, 1619, 49153, 1618, 49173, 1619, 1618, 49158, 1619, 1618, 49153, 1619, 1618, 49156, 1619, 1618, 1620, + 1621, 1619, 1622, 1617, 1616, 49155, 1617, 49153, 1618, 49153, 1617, 49153, 1618, 49153, 1617, 1623, 49153, 1618, 1624, 49157, + 1618, 1622, 49156, 1618, 1625, 49155, 1619, 49153, 1617, 49153, 1618, 49158, 1621, 49154, 1618, 49156, 1621, 49162, 1618, + 49161, 1626, 1627, 1626, 49153, 1627, 1626, 1627, 49189, 1626, 1627, 1628, 1629, 49153, 1630, 49157, 1631, 1627, 1629, 49153, + 1627, 1629, 1627, 49154, 1629, 1630, 1627, 49153, 1630, 1632, 1633, 1634, 1628, 1635, 1636, 49153, 1637, 1627, 49153, 1638, + 49159, 1627, 49153, 1639, 49180, 1627, 49204, 1640, 49154, 1641, 49159, 1642, 49153, 1641, 1643, 49153, 1642, 1641, 1644, + 49155, 1640, 49153, 1645, 1646, 49153, 1647, 49161, 1648, 1649, 1646, 1650, 1647, 1651, 1652, 49153, 1653, 49181, 1650, 49199, + 1654, 1655, 49153, 1656, 49157, 1657, 1656, 1657, 49153, 1656, 1655, 1656, 49153, 1657, 1656, 1658, 1659, 49153, 1654, 1660, + 1654, 49159, 1661, 49161, 1662, 49157, 1661, 49183, 151, 49198, 1663, 1664, 49153, 1665, 49155, 1666, 49153, 1667, 49155, + 1665, 49153, 1666, 1665, 1668, 1669, 1670, 49153, 1671, 49153, 1672, 49154, 1673, 1671, 49165, 1674, 49155, 1675, 49153, + 1676, 49185, 1667, 49199, 1677, 49154, 1678, 49159, 1679, 49153, 1678, 1679, 1678, 1680, 1679, 49153, 1681, 1682, 1677, 49162, + 1683, 49161, 1684, 49157, 1683, 49164, 1685, 49170, 684, 49194, 1686, 1687, 1688, 1687, 49153, 1688, 49157, 1687, 1689, 1690, + 1691, 1692, 49157, 1693, 49161, 1694, 49157, 1693, 49171, 1695, 49179, 1263, 49177, 1696, 1697, 49153, 1698, 1699, 1700, + 1699, 49153, 1700, 49155, 1699, 1700, 49155, 1699, 1701, 49155, 1698, 49161, 1702, 49153, 1703, 49154, 1704, 1705, 49158, + 1706, 49160, 1698, 49199, 151, 49195, 1707, 49154, 1708, 49160, 1709, 1708, 1710, 1711, 1712, 49171, 1713, 49231, 151, 49183, + 1714, 49183, 1715, 49161, 1716, 49160, 1717, 49163, 151, 1718, 49158, 1719, 49153, 151, 1719, 49153, 151, 49159, 1719, 151, + 49153, 1719, 151, 49175, 1719, 1720, 49156, 1721, 151, 49153, 1721, 49153, 151, 49153, 1722, 1723, 1724, 1725, 1721, 1725, + 1721, 1726, 1727, 1728, 1727, 49160, 151, 49161, 1729, 49221, 151, 49159, 1730, 49153, 1731, 49190, 1730, 49154, 1732, 49155, + 1733, 49153, 1731, 49153, 1733, 49155, 1732, 1734, 1730, 1735, 1730, 1732, 49178, 1731, 1736, 49161, 1737, 49191, 1736, 1738, + 1739, 49155, 1737, 1740, 1741, 49155, 1737, 49154, 1742, 49153, 1743, 49154, 1742, 1744, 49159, 151, 1745, 49157, 1746, 49153, + 1747, 49154, 1746, 49191, 1745, 49153, 1748, 49155, 1749, 49164, 1746, 1747, 1750, 1751, 1752, 49153, 1753, 1754, 49154, + 1752, 49153, 1755, 49164, 1756, 49167, 1757, 49208, 1758, 49158, 151, 49161, 1759, 49237, 1760, 1761, 1762, 49154, 1761, + 1762, 1761, 1762, 49175, 1763, 49215, 151, 49184, 1764, 1765, 49165, 1766, 49161, 1767, 49157, 1766, 49160, 1768, 1769, 49188, + 1768, 1770, 49158, 1771, 1769, 49157, 1771, 1770, 1772, 1768, 49153, 1773, 1774, 49153, 1775, 49161, 1769, 49161, 1776, 49170, + 1777, 49154, 1769, 1778, 1779, 49181, 1780, 49153, 1781, 49173, 1782, 1781, 1783, 49158, 1782, 1783, 49153, 1782, 1783, 49153, + 1782, 49160, 1781, 49215, 151, 49158, 1784, 151, 49153, 1784, 151, 49189, 1784, 49157, 1785, 49154, 151, 1785, 151, 49153, + 1785, 151, 49154, 1785, 1786, 1785, 49153, 1787, 1784, 1785, 49159, 151, 49161, 1788, 49157, 151, 49157, 1789, 151, 49153, + 1789, 151, 49183, 1789, 49156, 1790, 151, 49153, 1791, 151, 49153, 1790, 1791, 1790, 1792, 1789, 49158, 151, 49161, 1793, + 49157, 151, 49192, 1794, 1795, 49153, 1794, 49155, 151, 49161, 1796, 49269, 151, 49170, 1797, 49153, 1798, 49153, 1799, 49153, + 1800, 49158, 1801, 49153, 1802, 1803, 1804, 49164, 1805, 1806, 49185, 1805, 49153, 1804, 49156, 1802, 49154, 1806, 49153, + 1804, 1802, 1807, 1808, 49153, 1809, 49162, 1810, 49161, 1811, 1812, 49156, 1806, 49231, 151, 1813, 49166, 1814, 49172, 1815, + 49159, 1816, 49155, 1817, 49168, 1816, 49164, 441, 1818, 49390, 1819, 49193, 1820, 1821, 49253, 1822, 49250, 1823, 49163, + 1824, 1822, 49155, 1825, 1826, 49162, 1822, 49347, 1827, 49227, 151, 49248, 1828, 49153, 1829, 49164, 1830, 49326, 1831, + 1832, 49160, 1833, 49158, 1834, 1835, 49157, 1832, 49166, 1836, 49161, 151, 49434, 1837, 49156, 151, 49350, 1838, 49208, + 151, 49181, 1839, 49163, 1840, 49154, 1841, 49153, 1840, 1842, 49161, 1843, 49221, 151, 49336, 1844, 49158, 1159, 49182, + 1845, 1846, 49161, 1847, 49155, 1846, 49153, 1848, 49230, 1849, 1850, 49161, 1851, 49157, 1850, 49181, 1852, 49153, 151, + 49156, 1853, 1854, 49161, 151, 49199, 1855, 49158, 1856, 49153, 1857, 1858, 49153, 1859, 49155, 1860, 49153, 1861, 49153, + 1862, 1857, 1860, 49161, 151, 49161, 1863, 151, 49158, 1864, 151, 49172, 1855, 49156, 151, 49170, 1855, 49327, 151, 49154, + 1865, 49191, 1866, 49153, 1867, 1868, 49153, 1869, 49161, 1870, 49221, 151, 49183, 1871, 49183, 1872, 49174, 1873, 1874, + 1875, 49153, 1876, 49156, 1877, 49176, 1878, 49153, 151, 49176, 1879, 49195, 151, 49220, 1880, 49157, 1881, 49155, 1882, + 1883, 1880, 49197, 1884, 49160, 1885, 49158, 1882, 49155, 1886, 49164, 1887, 49215, 151, 1888, 1889, 1890, 1891, 1892, 49162, + 151, 49153, 1893, 49153, 1894, 49154, 1895, 49160, 151, 49388, 1896, 49156, 1897, 49157, 1898, 49159, 1899, 49266, 1896, + 49164, 1900, 49365, 1901, 49192, 151, 1902, 49160, 1900, 49173, 1899, 49248, 1903, 49266, 1899, 49164, 1903, 49263, 151, + 49155, 1904, 151, 49158, 1904, 151, 49153, 1904, 151, 1905, 1906, 49436, 1907, 1908, 49154, 1909, 49166, 151, 1910, 49180, + 151, 49154, 1911, 49153, 151, 1912, 49165, 151, 49155, 1913, 49159, 151, 49419, 1914, 49155, 1915, 49258, 1916, 49156, 1917, + 49164, 1916, 49154, 1917, 49160, 1916, 49158, 1917, 49161, 1916, 49153, 1917, 1918, 1919, 1920, 1921, 49155, 1922, 49243, + 151, 49391, 1114, 49161, 1923, 49154, 1924, 49154, 151, 49203, 1114, 49157, 151, 49174, 1924, 49166, 151, 49167, 1924, 1925, + 49166, 151, 49197, 725, 49153, 151, 49174, 725, 49160, 151, 49267, 1926, 49211, 151, 49397, 1927, 49161, 151, 49190, 1927, + 49153, 151, 936, 49210, 1927, 49153, 1928, 49154, 1929, 49154, 1927, 49157, 1930, 49159, 1931, 49159, 1929, 49153, 1927, + 49158, 1929, 49181, 1927, 49155, 1929, 49199, 1927, 49162, 942, 49153, 1926, 49172, 151, 49217, 1379, 49154, 1932, 1379, + 49273, 151, 49171, 1933, 49163, 151, 49171, 1934, 49163, 151, 49238, 925, 49160, 151, 49169, 1935, 49158, 1934, 49158, 151, + 49177, 1936, 49159, 1937, 49153, 1938, 49167, 1937, 49177, 1936, 49158, 1937, 151, 49153, 1938, 49167, 1937, 49177, 1936, + 49159, 1937, 49153, 1938, 49167, 1937, 1936, 151, 49153, 1936, 49153, 151, 1936, 49153, 151, 49153, 1936, 49153, 151, 49155, + 1936, 151, 49159, 1936, 49155, 1937, 151, 1937, 151, 1937, 49153, 1938, 1937, 1939, 49153, 1937, 151, 49162, 1937, 49177, + 1936, 49159, 1937, 49153, 1938, 49167, 1937, 49153, 1936, 151, 49155, 1936, 49153, 151, 49159, 1936, 151, 49158, 1936, 151, + 49159, 1937, 49153, 1938, 49167, 1937, 49153, 1936, 151, 49155, 1936, 151, 49156, 1936, 151, 1936, 49154, 151, 49158, 1936, + 151, 49159, 1937, 49153, 1938, 49167, 1937, 49177, 1936, 49159, 1937, 49153, 1938, 49167, 1937, 49177, 1936, 49159, 1937, + 49153, 1938, 49167, 1937, 49177, 1936, 49159, 1937, 49153, 1938, 49167, 1937, 49177, 1936, 49159, 1937, 49153, 1938, 49167, + 1937, 49177, 1936, 49159, 1937, 49153, 1938, 49167, 1937, 49177, 1936, 49159, 1937, 49153, 1938, 49167, 1937, 49153, 926, + 49153, 151, 49176, 1936, 1940, 49176, 1937, 1941, 49157, 1937, 49176, 1936, 1940, 49176, 1937, 1941, 49157, 1937, 49176, + 1936, 1940, 49176, 1937, 1941, 49157, 1937, 49176, 1936, 1940, 49176, 1937, 1941, 49157, 1937, 49176, 1936, 1940, 49176, + 1937, 1941, 49157, 1937, 1942, 1943, 49153, 151, 49201, 1944, 49279, 1945, 49206, 1946, 49155, 1945, 49201, 1946, 49159, + 1945, 1946, 49165, 1945, 1946, 49153, 1945, 1947, 1948, 49153, 1947, 1949, 49166, 151, 49156, 1946, 151, 49166, 1946, 49231, + 151, 49161, 1950, 1951, 49166, 1950, 1952, 49155, 1950, 49157, 151, 49157, 1953, 49236, 151, 49158, 1954, 1955, 49168, 1954, + 49153, 1955, 49158, 1954, 1955, 49153, 1954, 1955, 49156, 1954, 49156, 1955, 49179, 1956, 49153, 1957, 49177, 1956, 1957, + 49156, 1956, 49184, 784, 1958, 49263, 151, 49196, 1959, 49154, 151, 49158, 1960, 49156, 1961, 49153, 1962, 49153, 151, 49161, + 1963, 49155, 151, 1959, 1964, 49215, 151, 49181, 1965, 1966, 49168, 1967, 49195, 1968, 49155, 1969, 49161, 1970, 49156, 1971, + 1972, 49231, 151, 49178, 1973, 1974, 49155, 1975, 49161, 1976, 49237, 151, 49181, 1977, 1978, 1979, 1977, 49161, 1980, 49155, + 151, 1981, 49215, 151, 49182, 1982, 151, 49154, 1982, 1983, 49153, 1982, 1983, 49158, 1982, 49153, 1983, 49156, 1982, 1983, + 49159, 151, 1982, 1984, 49247, 151, 49158, 1985, 610, 49155, 1985, 610, 49153, 1985, 610, 49166, 1985, 610, 49348, 1986, + 49153, 151, 49160, 1987, 49158, 1988, 49192, 151, 49185, 1989, 49185, 1990, 49154, 1991, 1992, 49154, 1993, 1994, 49155, + 1995, 49161, 1996, 49155, 1995, 49153, 1997, 49296, 151, 49210, 1934, 1998, 49154, 1934, 1999, 49155, 1934, 49227, 151, 49196, + 2000, 2001, 49166, 2000, 49217, 151, 49155, 2002, 339, 49178, 2002, 339, 49153, 2002, 339, 2002, 49153, 339, 2002, 339, 49161, + 2002, 339, 49155, 2002, 339, 2002, 339, 2002, 49157, 339, 2002, 49155, 339, 65535, 3, 2002, 339, 49154, 2002, 339, 49153, + 2002, 339, 2002, 49153, 339, 65535, 5, 2002, 339, 49153, 2002, 339, 2002, 49153, 339, 49155, 2002, 339, 49158, 2002, 339, + 49155, 2002, 339, 49155, 2002, 339, 2002, 339, 49161, 2002, 339, 49168, 2002, 49156, 339, 49154, 2002, 339, 49156, 2002, + 339, 49168, 2002, 49203, 339, 49153, 2003, 49165, 339, 49195, 936, 49155, 151, 49251, 936, 49163, 151, 49166, 2004, 49153, + 151, 49165, 2004, 2005, 151, 49166, 2004, 151, 49166, 2004, 49173, 2005, 49161, 151, 49162, 937, 49153, 2006, 49154, 1383, + 49182, 1117, 1998, 2007, 2008, 49162, 2007, 2008, 2007, 2008, 49153, 2007, 2008, 49154, 2007, 2008, 49154, 2007, 49156, 1117, + 2004, 49158, 2007, 2008, 49158, 2007, 2008, 49161, 2007, 49153, 2009, 2001, 49154, 1383, 49160, 2007, 2008, 2007, 49153, + 2008, 49153, 2007, 2008, 49161, 2007, 49155, 1117, 49153, 2004, 1117, 49161, 2004, 49169, 2010, 1383, 49207, 151, 49177, + 2011, 2012, 49153, 2004, 49164, 151, 49185, 1117, 49160, 2004, 2010, 49155, 151, 49160, 1117, 49158, 151, 49153, 2004, 49165, + 151, 49157, 2013, 49177, 151, 49184, 2004, 49163, 2005, 49154, 942, 49157, 2004, 2005, 49221, 2004, 2005, 49153, 942, 49171, + 2004, 49163, 2005, 49188, 2004, 2005, 49156, 2004, 49155, 2005, 49156, 942, 49163, 2005, 49168, 2004, 49158, 2005, 49154, + 942, 49156, 2014, 49214, 2004, 2005, 2004, 2005, 49333, 2004, 2005, 49155, 2004, 49153, 2005, 942, 49213, 2004, 49153, 2005, + 49155, 2009, 49158, 2005, 49156, 942, 49175, 2004, 49169, 2005, 2010, 49192, 2005, 2010, 49237, 2005, 49156, 2004, 2015, + 49167, 2016, 2015, 49154, 2016, 65535, 3, 2015, 2016, 2015, 49154, 2016, 2015, 49157, 2016, 49153, 2015, 49155, 2016, 2015, + 2016, 49153, 2015, 49155, 2016, 2015, 49163, 2016, 49153, 2017, 49153, 2018, 49162, 2016, 49199, 2005, 49221, 2004, 49161, + 2005, 942, 49153, 2010, 49153, 2013, 2001, 49153, 1383, 1924, 49154, 151, 2019, 49154, 1926, 49164, 2005, 49154, 151, 49155, + 2005, 49154, 2010, 49153, 2013, 1998, 2001, 49153, 1383, 49154, 151, 49267, 2004, 49154, 2019, 49155, 1924, 49156, 2019, + 49236, 2005, 49155, 1998, 2019, 49157, 151, 49163, 2001, 49155, 151, 1926, 49166, 151, 49163, 2005, 49155, 151, 49207, 2005, + 49159, 151, 49161, 2005, 49157, 151, 49191, 2005, 49159, 151, 49181, 2005, 49153, 151, 49153, 1383, 49161, 1114, 49155, 151, + 49153, 1114, 49165, 151, 49160, 1925, 49190, 151, 49163, 2013, 1383, 49154, 2001, 49160, 942, 49157, 2010, 2013, 49159, 2010, + 49159, 2013, 2010, 49153, 2013, 49163, 2010, 2001, 49163, 2010, 2013, 49154, 1998, 49166, 2010, 49164, 2013, 49156, 1998, + 2001, 1383, 49155, 1998, 49153, 1383, 1926, 1998, 2001, 49155, 1998, 49156, 942, 49164, 2010, 49157, 2013, 49162, 1998, 49153, + 1383, 49157, 2001, 49154, 1383, 49153, 2001, 49161, 1998, 49157, 2001, 942, 49153, 1998, 49159, 2001, 1383, 1926, 49154, + 2001, 49174, 2013, 49176, 1998, 49235, 2001, 49155, 1924, 49159, 151, 49165, 1998, 49153, 151, 49155, 2001, 1383, 49154, + 2019, 49154, 2001, 49153, 1926, 49154, 151, 49154, 2001, 49155, 1383, 49153, 2019, 1114, 1924, 49154, 151, 1924, 1114, 49157, + 2001, 49170, 1383, 49155, 1926, 49154, 2019, 49158, 1383, 49155, 1926, 49154, 2019, 1114, 2019, 49154, 1383, 49154, 1926, + 1114, 151, 1924, 49155, 151, 1924, 49153, 2019, 49158, 1383, 49154, 1926, 49153, 2019, 1114, 49153, 151, 1114, 49159, 1926, + 2019, 1114, 1924, 49155, 151, 1924, 49158, 1926, 49153, 2019, 49158, 151, 49298, 1383, 151, 49206, 1383, 49188, 1114, 49161, + 2020, 1924, 49282, 151, 49153, 2021, 49366, 2022, 49158, 1122, 49153, 1131, 49183, 151, 49332, 1126, 49155, 1131, 2023, 49157, + 2024, 49373, 2025, 49153, 151, 49409, 1128, 49163, 2024, 49153, 151, 49456, 1129, 49166, 151, 49389, 2026, 49185, 151, 49309, + 2027, 49249, 151, 49354, 1122, 49156, 151, 49375, 2023, 49481, 2024, 49157, 151, 2028, 2029, 49181, 2028, 49247, 2030, 49279, + 879, 49391, 2031, 49167, 879, 49405, 2032, 49153, 2021 }; - static constexpr std::array rlepflagindices = + static constexpr std::array rlepflagindices = { 193, 0, 1, 2, 3, 4, 5, 193, 6, 7, 193, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 194, 27, 28, 29, 30, 31, 32, 33, 34, 35, 30, 36, 37, 34, 193, 38, 37, 38, 39, 37, 38, 40, 41, 37, 34, 38, 198, 37, 38, 193, 37, 193, @@ -1852,65 +1878,67 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) 38, 39, 205, 38, 39, 38, 40, 45, 46, 47, 45, 48, 193, 28, 47, 28, 49, 50, 49, 51, 49, 52, 53, 37, 38, 28, 54, 55, 38, 56, 193, 37, 57, 194, 37, 38, 37, 194, 38, 34, 193, 38, 37, 193, 58, 59, 60, 58, 34, 255, 3, 38, 37, 38, 193, 58, 38, 39, 61, 58, 62, 37, 38, 37, 40, 195, 37, 194, 38, 39, 37, 38, 36, 194, 49, 63, 255, 9, 37, 38, 54, 37, 47, 36, 64, 40, 38, 34, 65, - 66, 193, 36, 54, 49, 52, 193, 67, 66, 36, 56, 67, 53, 36, 193, 42, 64, 194, 68, 62, 193, 36, 56, 193, 36, 193, 53, 69, 194, - 65, 194, 42, 70, 67, 53, 71, 67, 72, 193, 53, 73, 36, 42, 53, 74, 42, 65, 53, 71, 68, 36, 49, 47, 42, 36, 65, 56, 36, 54, - 68, 42, 53, 42, 67, 49, 193, 42, 67, 42, 54, 73, 42, 49, 47, 193, 36, 56, 65, 70, 54, 52, 36, 42, 53, 49, 75, 52, 54, 56, - 36, 65, 42, 52, 54, 56, 193, 42, 64, 54, 68, 53, 49, 196, 42, 47, 72, 76, 53, 52, 68, 193, 67, 49, 77, 194, 53, 78, 193, - 42, 79, 53, 78, 49, 80, 78, 49, 65, 73, 36, 47, 193, 42, 195, 79, 42, 53, 78, 54, 42, 79, 49, 42, 81, 80, 42, 73, 195, 36, - 42, 36, 52, 54, 193, 53, 78, 42, 49, 78, 82, 53, 73, 83, 36, 54, 53, 78, 193, 42, 79, 49, 80, 53, 73, 193, 36, 79, 53, 83, - 49, 54, 53, 78, 42, 193, 79, 49, 81, 53, 80, 84, 73, 193, 36, 54, 53, 193, 42, 81, 78, 82, 42, 193, 73, 194, 36, 53, 78, - 53, 42, 54, 193, 79, 49, 42, 53, 80, 193, 79, 42, 53, 73, 194, 36, 42, 53, 78, 36, 42, 54, 49, 42, 53, 81, 82, 42, 53, 73, - 42, 78, 193, 53, 78, 193, 42, 54, 193, 79, 82, 42, 81, 193, 53, 80, 42, 36, 42, 36, 42, 73, 193, 36, 54, 53, 78, 42, 82, - 81, 53, 73, 36, 54, 42, 53, 85, 86, 36, 87, 70, 49, 36, 73, 56, 54, 193, 42, 53, 85, 82, 87, 70, 49, 52, 73, 193, 42, 193, - 36, 56, 49, 73, 36, 193, 88, 89, 54, 193, 42, 53, 90, 78, 67, 82, 42, 193, 53, 36, 49, 196, 36, 193, 42, 193, 78, 193, 53, - 49, 193, 82, 73, 65, 36, 91, 67, 73, 91, 78, 53, 36, 37, 54, 37, 194, 92, 36, 93, 92, 193, 42, 193, 94, 195, 42, 54, 193, - 49, 36, 56, 65, 95, 193, 36, 194, 96, 54, 34, 66, 42, 36, 65, 42, 26, 42, 193, 88, 54, 42, 56, 193, 42, 54, 193, 42, 53, - 82, 97, 54, 42, 53, 97, 65, 54, 42, 53, 54, 42, 54, 53, 42, 74, 51, 78, 53, 49, 82, 65, 56, 75, 193, 36, 49, 54, 73, 193, - 36, 56, 65, 56, 66, 65, 98, 99, 32, 99, 73, 54, 42, 70, 42, 100, 53, 194, 42, 54, 53, 78, 49, 36, 65, 73, 194, 42, 87, 73, - 95, 193, 36, 42, 53, 78, 54, 36, 42, 78, 53, 82, 49, 73, 36, 70, 65, 49, 101, 53, 49, 193, 53, 78, 42, 49, 81, 97, 42, 54, - 65, 73, 65, 36, 56, 36, 65, 53, 78, 42, 97, 82, 53, 73, 193, 42, 49, 78, 53, 97, 54, 36, 42, 78, 53, 102, 49, 54, 65, 56, - 193, 73, 42, 47, 48, 65, 199, 34, 37, 38, 54, 37, 36, 54, 49, 103, 89, 193, 42, 49, 89, 42, 193, 40, 193, 45, 46, 93, 194, - 38, 104, 93, 105, 93, 193, 49, 52, 193, 53, 194, 49, 193, 34, 40, 193, 37, 193, 38, 37, 197, 38, 34, 44, 37, 44, 38, 37, - 38, 37, 38, 195, 37, 26, 32, 106, 107, 108, 109, 110, 193, 111, 194, 112, 113, 114, 193, 25, 69, 26, 115, 73, 116, 193, 117, - 193, 115, 193, 27, 31, 109, 73, 27, 26, 32, 193, 118, 119, 69, 120, 105, 121, 122, 193, 123, 193, 93, 204, 36, 124, 194, - 63, 124, 52, 193, 124, 36, 59, 125, 126, 37, 127, 193, 37, 128, 37, 129, 40, 193, 36, 193, 125, 59, 130, 62, 131, 194, 36, - 38, 193, 36, 132, 133, 193, 42, 36, 31, 110, 193, 27, 31, 134, 135, 136, 137, 134, 27, 193, 138, 193, 139, 110, 193, 27, - 110, 27, 31, 110, 198, 27, 140, 141, 142, 193, 36, 110, 196, 27, 193, 117, 36, 134, 31, 193, 138, 194, 134, 31, 195, 138, - 27, 31, 195, 27, 117, 193, 37, 193, 38, 194, 37, 193, 38, 195, 37, 40, 105, 93, 193, 37, 38, 40, 36, 37, 38, 49, 37, 38, - 54, 65, 193, 36, 193, 38, 193, 42, 54, 75, 36, 143, 53, 193, 117, 109, 27, 109, 195, 117, 115, 144, 193, 27, 109, 115, 27, - 109, 145, 112, 194, 27, 193, 145, 27, 115, 193, 117, 109, 146, 147, 148, 147, 149, 145, 70, 193, 150, 193, 30, 112, 151, - 70, 150, 75, 42, 36, 54, 193, 42, 49, 152, 70, 66, 42, 95, 48, 70, 42, 54, 195, 42, 193, 36, 194, 42, 198, 36, 202, 153, - 42, 70, 193, 36, 42, 75, 56, 65, 42, 70, 56, 65, 73, 54, 42, 63, 36, 53, 47, 45, 53, 193, 42, 49, 36, 65, 56, 54, 28, 193, - 47, 28, 37, 28, 37, 40, 42, 37, 38, 37, 193, 38, 40, 37, 38, 196, 37, 40, 196, 37, 255, 3, 38, 37, 38, 195, 37, 38, 193, - 37, 38, 40, 37, 93, 42, 45, 193, 42, 53, 82, 78, 36, 82, 42, 36, 65, 54, 78, 42, 82, 53, 54, 65, 73, 49, 42, 193, 36, 193, - 42, 53, 73, 42, 53, 49, 103, 65, 42, 53, 78, 97, 54, 36, 53, 78, 42, 49, 97, 36, 56, 65, 54, 70, 73, 42, 67, 70, 73, 54, - 42, 53, 78, 54, 73, 36, 65, 42, 70, 36, 91, 42, 53, 87, 49, 154, 70, 36, 56, 42, 78, 53, 65, 70, 82, 42, 38, 28, 45, 195, - 40, 45, 28, 34, 42, 78, 53, 65, 89, 82, 73, 42, 193, 24, 196, 150, 193, 34, 42, 67, 42, 62, 64, 155, 193, 27, 36, 156, 36, - 99, 36, 65, 64, 193, 36, 49, 36, 66, 193, 36, 193, 157, 193, 36, 158, 159, 65, 193, 88, 127, 62, 160, 130, 32, 157, 161, - 162, 163, 164, 165, 193, 88, 193, 166, 95, 42, 167, 119, 168, 193, 36, 156, 42, 36, 42, 197, 36, 42, 54, 42, 54, 49, 36, - 193, 42, 36, 194, 42, 54, 42, 53, 42, 54, 56, 42, 56, 42, 193, 37, 193, 38, 193, 42, 54, 73, 37, 54, 38, 42, 54, 42, 36, - 37, 54, 38, 42, 54, 42, 45, 48, 193, 42, 56, 36, 42, 193, 36, 42, 54, 36, 42, 54, 36, 42, 193, 36, 54, 56, 42, 54, 36, 193, - 42, 36, 42, 53, 54, 42, 49, 82, 194, 36, 65, 42, 193, 36, 42, 36, 42, 36, 49, 54, 36, 56, 36, 42, 54, 36, 56, 42, 36, 42, - 36, 42, 56, 36, 42, 37, 38, 36, 42, 154, 67, 193, 73, 42, 48, 37, 54, 67, 84, 49, 66, 70, 38, 62, 36, 42, 54, 53, 66, 42, - 49, 42, 36, 42, 49, 36, 65, 54, 42, 49, 65, 42, 36, 54, 42, 54, 78, 53, 42, 82, 65, 56, 54, 36, 73, 82, 42, 53, 143, 53, - 78, 42, 82, 49, 36, 68, 65, 53, 54, 68, 42, 73, 53, 42, 78, 82, 54, 73, 36, 65, 42, 78, 193, 42, 49, 36, 54, 53, 78, 42, - 97, 65, 36, 52, 49, 65, 78, 53, 73, 42, 36, 42, 65, 36, 42, 54, 78, 53, 97, 49, 83, 65, 56, 36, 53, 42, 53, 42, 54, 65, 42, - 53, 78, 49, 82, 54, 73, 193, 53, 78, 54, 42, 193, 49, 81, 97, 42, 169, 42, 54, 81, 78, 53, 82, 97, 84, 170, 65, 36, 49, 42, - 78, 53, 82, 49, 65, 56, 36, 73, 56, 54, 52, 194, 42, 81, 78, 53, 82, 49, 36, 54, 73, 42, 81, 78, 53, 54, 82, 49, 36, 65, - 56, 98, 65, 42, 53, 42, 78, 53, 82, 65, 36, 54, 73, 36, 42, 53, 78, 97, 49, 42, 36, 54, 193, 73, 193, 42, 54, 53, 78, 82, - 73, 36, 65, 36, 193, 42, 78, 53, 82, 49, 36, 54, 37, 38, 73, 36, 193, 42, 81, 78, 53, 97, 82, 49, 65, 36, 73, 42, 54, 78, - 53, 82, 36, 42, 53, 52, 82, 78, 36, 65, 42, 53, 78, 42, 171, 82, 36, 65, 42, 56, 54, 193, 42, 36, 54, 42, 36, 54, 73, 42, - 54, 78, 53, 82, 65, 56, 36, 73, 193, 36, 56, 42, 54, 53, 78, 42, 53, 49, 82, 73, 42, 78, 53, 82, 73, 42, 53, 78, 65, 54, - 53, 42, 78, 54, 97, 82, 65, 36, 73, 49, 42, 54, 195, 36, 194, 42, 54, 193, 42, 193, 56, 193, 42, 36, 54, 193, 42, 193, 168, + 66, 193, 36, 54, 193, 49, 193, 67, 66, 36, 56, 193, 67, 36, 193, 42, 64, 194, 68, 62, 193, 36, 56, 193, 36, 193, 53, 69, + 194, 65, 194, 42, 70, 67, 53, 71, 67, 72, 193, 53, 73, 36, 42, 53, 74, 42, 65, 53, 71, 68, 36, 49, 47, 42, 36, 65, 56, 36, + 54, 68, 42, 53, 42, 67, 49, 193, 42, 67, 42, 54, 73, 42, 49, 47, 193, 36, 56, 65, 70, 54, 52, 36, 42, 53, 49, 75, 52, 54, + 56, 36, 65, 42, 52, 54, 56, 193, 42, 64, 42, 68, 54, 53, 49, 196, 42, 47, 72, 76, 53, 52, 68, 193, 67, 49, 77, 194, 53, 78, + 193, 42, 79, 53, 78, 49, 80, 78, 49, 65, 73, 36, 47, 193, 42, 195, 79, 42, 53, 78, 54, 42, 79, 49, 42, 81, 80, 42, 73, 195, + 36, 42, 36, 52, 54, 193, 53, 78, 42, 49, 78, 82, 53, 73, 83, 36, 54, 53, 78, 193, 42, 79, 49, 80, 53, 73, 193, 36, 79, 53, + 83, 49, 54, 53, 78, 42, 193, 79, 49, 81, 53, 80, 84, 73, 193, 36, 54, 53, 193, 42, 81, 78, 82, 42, 193, 73, 194, 36, 53, + 78, 53, 42, 54, 193, 79, 49, 42, 53, 80, 193, 79, 193, 42, 53, 73, 194, 36, 42, 53, 78, 36, 42, 54, 49, 42, 53, 81, 82, 193, + 42, 53, 73, 42, 78, 193, 53, 78, 193, 42, 54, 193, 79, 82, 42, 81, 193, 53, 80, 42, 36, 42, 36, 42, 73, 193, 36, 54, 53, + 78, 42, 82, 81, 53, 73, 36, 54, 42, 53, 85, 86, 36, 87, 70, 49, 36, 73, 56, 54, 193, 42, 53, 85, 82, 87, 70, 49, 52, 73, + 193, 42, 193, 36, 56, 49, 73, 36, 193, 88, 89, 54, 193, 42, 53, 90, 78, 67, 82, 42, 193, 53, 36, 49, 196, 36, 193, 79, 193, + 78, 193, 53, 49, 80, 82, 73, 65, 36, 91, 67, 73, 91, 78, 53, 36, 37, 54, 37, 194, 92, 36, 93, 92, 193, 42, 193, 94, 195, + 42, 54, 193, 49, 36, 56, 65, 95, 193, 36, 194, 96, 54, 34, 66, 42, 36, 65, 42, 26, 42, 193, 88, 54, 42, 56, 193, 42, 54, + 193, 42, 53, 82, 97, 54, 42, 53, 97, 65, 54, 42, 53, 54, 42, 54, 53, 79, 98, 51, 78, 53, 49, 80, 65, 56, 75, 193, 36, 42, + 49, 54, 73, 193, 36, 56, 65, 56, 66, 65, 99, 100, 32, 100, 73, 54, 42, 70, 42, 101, 53, 194, 42, 54, 53, 78, 49, 36, 65, + 73, 194, 42, 87, 73, 95, 193, 36, 42, 53, 78, 54, 36, 79, 78, 53, 80, 49, 73, 36, 70, 65, 49, 102, 53, 49, 53, 49, 53, 78, + 42, 79, 49, 81, 103, 79, 54, 65, 73, 65, 36, 56, 36, 65, 53, 78, 79, 97, 80, 53, 73, 42, 79, 42, 49, 78, 53, 97, 54, 36, + 42, 78, 53, 104, 49, 54, 65, 56, 193, 73, 42, 47, 48, 65, 199, 34, 37, 38, 54, 37, 36, 54, 49, 105, 89, 193, 42, 49, 89, + 42, 193, 40, 193, 45, 46, 93, 194, 38, 106, 45, 46, 93, 193, 49, 52, 193, 53, 194, 49, 193, 34, 40, 193, 37, 193, 38, 37, + 197, 38, 34, 44, 37, 44, 38, 37, 38, 37, 38, 195, 37, 26, 32, 107, 108, 109, 110, 111, 193, 112, 194, 113, 114, 115, 193, + 25, 69, 26, 116, 73, 117, 193, 118, 193, 116, 193, 27, 31, 110, 73, 27, 26, 32, 193, 119, 120, 69, 121, 122, 123, 124, 193, + 125, 194, 93, 205, 36, 126, 194, 63, 126, 52, 193, 126, 36, 59, 127, 128, 37, 129, 193, 37, 130, 37, 131, 40, 193, 36, 193, + 127, 59, 132, 62, 133, 194, 36, 38, 193, 36, 134, 135, 193, 42, 36, 31, 111, 193, 27, 31, 136, 137, 138, 139, 136, 27, 193, + 140, 193, 141, 111, 193, 27, 111, 27, 31, 111, 198, 27, 142, 143, 144, 193, 36, 111, 196, 27, 193, 118, 36, 136, 31, 193, + 140, 194, 136, 31, 195, 140, 27, 31, 196, 27, 118, 193, 37, 193, 38, 194, 37, 193, 38, 195, 37, 40, 122, 93, 193, 37, 38, + 40, 36, 37, 38, 49, 37, 38, 54, 65, 193, 36, 193, 38, 193, 42, 54, 75, 36, 145, 53, 193, 118, 110, 27, 110, 195, 118, 116, + 146, 193, 27, 110, 116, 27, 110, 147, 113, 194, 27, 193, 147, 27, 116, 193, 118, 110, 148, 149, 150, 149, 151, 147, 70, 193, + 152, 193, 30, 113, 153, 70, 152, 75, 42, 36, 54, 193, 42, 49, 154, 70, 66, 42, 95, 48, 70, 42, 54, 195, 42, 193, 36, 194, + 42, 198, 36, 202, 155, 42, 70, 193, 36, 42, 75, 56, 65, 42, 70, 56, 65, 73, 54, 42, 63, 36, 53, 47, 45, 53, 193, 42, 49, + 36, 65, 56, 54, 28, 193, 47, 28, 37, 28, 37, 40, 42, 37, 38, 37, 193, 38, 40, 37, 38, 196, 37, 40, 196, 37, 255, 3, 38, 37, + 38, 195, 37, 38, 193, 37, 38, 37, 38, 37, 45, 93, 42, 45, 193, 42, 53, 82, 78, 36, 82, 42, 36, 65, 54, 78, 42, 82, 53, 54, + 65, 73, 49, 42, 193, 36, 193, 42, 53, 73, 42, 53, 49, 105, 65, 42, 53, 78, 97, 54, 36, 53, 78, 42, 79, 49, 103, 36, 56, 65, + 54, 70, 73, 79, 67, 70, 73, 54, 42, 53, 78, 54, 73, 36, 65, 79, 70, 42, 36, 91, 42, 53, 87, 49, 156, 70, 36, 56, 79, 78, + 53, 65, 42, 70, 80, 42, 38, 28, 45, 195, 40, 45, 28, 34, 79, 42, 78, 53, 65, 89, 82, 73, 42, 193, 24, 196, 152, 193, 34, + 42, 67, 42, 62, 64, 36, 157, 193, 27, 36, 158, 36, 100, 36, 65, 64, 193, 36, 49, 36, 66, 193, 36, 193, 159, 193, 36, 160, + 161, 65, 193, 88, 129, 62, 162, 132, 32, 159, 163, 164, 165, 166, 167, 193, 88, 193, 168, 95, 42, 169, 120, 170, 193, 36, + 158, 42, 36, 42, 197, 36, 42, 54, 42, 54, 49, 36, 193, 42, 36, 194, 42, 54, 42, 53, 42, 54, 56, 42, 56, 42, 193, 37, 193, + 38, 193, 42, 54, 73, 37, 54, 38, 42, 54, 42, 36, 37, 54, 38, 42, 54, 42, 45, 48, 193, 42, 56, 36, 42, 193, 36, 42, 54, 36, + 42, 54, 36, 42, 193, 36, 54, 56, 42, 54, 36, 42, 54, 193, 42, 36, 79, 53, 54, 79, 49, 80, 194, 36, 65, 42, 193, 36, 42, 36, + 42, 36, 49, 54, 36, 56, 36, 42, 54, 36, 56, 42, 36, 42, 36, 42, 56, 36, 42, 37, 38, 36, 42, 156, 67, 193, 73, 42, 48, 37, + 54, 67, 84, 49, 66, 70, 38, 62, 36, 42, 54, 53, 66, 42, 75, 36, 67, 53, 49, 42, 36, 42, 49, 36, 65, 54, 42, 49, 65, 42, 36, + 54, 42, 54, 78, 53, 42, 82, 65, 56, 54, 36, 73, 82, 42, 53, 145, 53, 78, 42, 82, 49, 36, 68, 65, 53, 54, 68, 42, 73, 53, + 79, 78, 80, 82, 54, 73, 36, 65, 79, 78, 79, 42, 49, 36, 54, 53, 78, 42, 97, 65, 36, 52, 49, 65, 78, 53, 73, 42, 36, 42, 65, + 36, 42, 54, 78, 53, 97, 49, 83, 65, 56, 36, 53, 42, 53, 42, 54, 65, 42, 53, 78, 49, 82, 54, 73, 193, 53, 78, 54, 42, 193, + 49, 81, 97, 42, 171, 79, 54, 42, 81, 78, 53, 82, 97, 80, 84, 172, 65, 36, 49, 42, 78, 53, 82, 49, 65, 56, 36, 73, 56, 54, + 52, 194, 42, 81, 78, 53, 82, 49, 36, 54, 73, 42, 81, 78, 53, 54, 82, 49, 36, 65, 56, 99, 65, 42, 53, 42, 78, 53, 82, 65, + 36, 54, 73, 36, 42, 53, 78, 97, 49, 42, 36, 54, 193, 73, 193, 42, 54, 53, 78, 82, 73, 36, 65, 36, 193, 42, 78, 53, 82, 49, + 36, 54, 37, 38, 73, 36, 42, 79, 81, 78, 53, 97, 80, 42, 49, 65, 36, 73, 42, 54, 78, 53, 82, 36, 79, 53, 52, 82, 78, 42, 36, + 65, 80, 79, 53, 78, 193, 42, 173, 80, 36, 65, 42, 56, 54, 193, 42, 36, 54, 53, 78, 54, 42, 36, 54, 73, 42, 54, 78, 53, 82, + 65, 56, 36, 73, 193, 36, 56, 42, 54, 53, 78, 42, 53, 49, 82, 73, 42, 78, 53, 82, 73, 42, 48, 73, 42, 53, 78, 65, 54, 53, + 42, 78, 79, 54, 97, 80, 65, 36, 73, 49, 42, 54, 195, 36, 194, 42, 54, 193, 42, 193, 56, 193, 42, 36, 54, 193, 42, 193, 170, 52, 49, 194, 42, 53, 78, 82, 73, 193, 42, 54, 73, 65, 42, 54, 73, 42, 49, 65, 42, 49, 65, 56, 193, 36, 75, 70, 73, 36, 75, - 42, 47, 36, 65, 73, 37, 38, 36, 56, 65, 36, 54, 193, 42, 54, 53, 193, 78, 67, 47, 193, 70, 36, 70, 172, 173, 194, 150, 54, - 194, 150, 47, 200, 42, 150, 54, 42, 54, 36, 52, 53, 65, 32, 73, 193, 36, 174, 49, 151, 32, 52, 194, 36, 59, 125, 131, 125, - 175, 176, 59, 125, 116, 36, 52, 56, 65, 36, 42, 104, 40, 53, 54, 45, 46, 53, 42, 49, 75, 70, 73, 36, 42, 49, 54, 42, 49, - 73, 54, 36, 42, 75, 52, 73, 42, 49, 84, 73, 36, 193, 42, 36, 49, 37, 38, 84, 53, 49, 75, 54, 73, 196, 36, 129, 62, 194, 36, - 193, 177, 193, 36, 178, 193, 36, 179, 196, 36, 73, 156, 195, 153, 150, 119, 120, 180, 99, 24, 54 + 42, 47, 36, 65, 73, 37, 38, 36, 56, 65, 36, 54, 37, 38, 193, 42, 54, 53, 193, 78, 67, 47, 193, 70, 36, 70, 174, 175, 176, + 199, 152, 54, 47, 200, 42, 152, 54, 42, 54, 36, 52, 53, 65, 32, 73, 36, 62, 193, 36, 177, 49, 153, 32, 52, 194, 36, 59, 127, + 133, 127, 178, 179, 59, 127, 117, 36, 52, 56, 65, 36, 40, 42, 106, 40, 53, 54, 45, 46, 53, 42, 49, 75, 70, 73, 36, 42, 49, + 54, 42, 49, 73, 54, 36, 42, 75, 52, 73, 42, 49, 84, 73, 36, 42, 53, 75, 193, 42, 36, 49, 37, 38, 84, 53, 49, 75, 54, 73, + 196, 36, 131, 62, 194, 36, 193, 180, 193, 36, 181, 193, 36, 182, 196, 36, 73, 158, 196, 155, 152, 120, 121, 183, 100, 24, + 54 }; - static constexpr std::array rlecflagindices = + static constexpr std::array rlecflagindices = { 193, 0, 1, 2, 3, 194, 4, 5, 194, 4, 5, 194, 4, 6, 4, 5, 7, 8, 5, 9, 5, 10, 193, 11, 0, 2, 3, 4, 194, 5, 11, 4, 194, 5, 11, 193, 4, 5, 8, 194, 11, 8, 193, 11, 8, 194, 11, 8, 193, 11, 198, 8, 11, 193, 8, 193, 11, 8, 11, 195, 8, 12, 11, 8, 12, 193, @@ -1919,50 +1947,51 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) 5, 8, 11, 8, 11, 195, 8, 195, 11, 8, 11, 5, 195, 13, 255, 9, 8, 11, 14, 8, 12, 193, 4, 194, 11, 193, 4, 193, 5, 14, 193, 13, 193, 12, 194, 4, 193, 12, 4, 193, 12, 4, 195, 5, 4, 5, 193, 4, 5, 193, 12, 5, 194, 4, 199, 12, 13, 193, 12, 6, 4, 195, 12, 4, 193, 12, 193, 5, 13, 193, 12, 5, 194, 4, 14, 5, 195, 12, 13, 195, 12, 14, 6, 12, 13, 12, 5, 194, 4, 12, 14, 13, 5, - 193, 12, 13, 12, 13, 14, 194, 4, 12, 13, 14, 4, 193, 12, 5, 14, 5, 12, 13, 197, 12, 193, 13, 12, 13, 5, 193, 12, 13, 201, - 12, 193, 13, 12, 13, 4, 6, 4, 201, 12, 14, 193, 12, 13, 193, 12, 13, 12, 6, 195, 5, 12, 4, 13, 14, 195, 12, 13, 12, 13, 12, - 6, 12, 4, 14, 196, 12, 193, 13, 12, 6, 4, 5, 194, 12, 13, 14, 196, 12, 13, 193, 12, 193, 13, 6, 193, 5, 14, 196, 12, 13, - 12, 193, 6, 194, 5, 195, 12, 14, 193, 12, 13, 193, 12, 13, 195, 12, 6, 4, 193, 5, 194, 12, 4, 12, 14, 13, 194, 12, 13, 193, - 12, 6, 198, 12, 14, 193, 12, 13, 195, 12, 13, 12, 5, 12, 5, 12, 6, 193, 5, 14, 194, 12, 13, 193, 12, 6, 4, 14, 195, 12, 5, - 193, 12, 13, 4, 6, 4, 14, 195, 12, 13, 193, 12, 193, 13, 6, 193, 12, 5, 193, 4, 13, 6, 5, 193, 4, 13, 14, 197, 12, 13, 194, - 12, 5, 13, 5, 193, 4, 5, 4, 197, 12, 194, 13, 6, 193, 4, 193, 12, 6, 194, 12, 5, 8, 14, 8, 194, 11, 4, 193, 11, 199, 12, - 14, 193, 13, 194, 4, 194, 5, 194, 8, 14, 11, 4, 12, 5, 4, 12, 3, 12, 193, 4, 14, 12, 4, 193, 12, 14, 194, 12, 193, 13, 14, - 193, 12, 13, 4, 14, 193, 12, 14, 12, 14, 194, 12, 13, 193, 12, 193, 13, 193, 4, 12, 4, 5, 13, 14, 6, 5, 198, 4, 13, 5, 13, - 6, 14, 199, 12, 14, 193, 12, 13, 5, 4, 6, 195, 12, 6, 194, 5, 194, 12, 14, 4, 194, 12, 193, 13, 6, 4, 12, 4, 193, 13, 12, - 13, 195, 12, 13, 12, 13, 12, 14, 4, 6, 194, 4, 5, 4, 194, 12, 193, 13, 12, 6, 193, 12, 13, 193, 12, 13, 14, 4, 195, 12, 13, - 14, 193, 4, 193, 6, 194, 12, 4, 199, 11, 8, 11, 14, 8, 4, 14, 13, 4, 13, 193, 12, 193, 13, 12, 204, 11, 194, 13, 193, 12, - 194, 13, 194, 11, 193, 8, 193, 11, 8, 198, 11, 12, 8, 12, 11, 8, 11, 8, 11, 195, 8, 3, 5, 193, 13, 5, 200, 4, 193, 15, 5, - 3, 4, 193, 9, 197, 4, 5, 4, 9, 4, 3, 194, 5, 14, 193, 5, 11, 193, 5, 193, 4, 193, 11, 204, 5, 199, 13, 5, 8, 11, 5, 8, 5, - 193, 8, 5, 8, 12, 11, 193, 5, 193, 11, 8, 193, 5, 11, 194, 5, 11, 193, 5, 8, 11, 193, 12, 203, 5, 195, 4, 205, 5, 14, 8, - 11, 199, 5, 193, 4, 194, 5, 193, 4, 195, 5, 195, 4, 198, 5, 193, 8, 193, 11, 194, 8, 193, 11, 195, 8, 194, 11, 193, 8, 193, - 11, 5, 8, 11, 13, 8, 11, 14, 193, 4, 5, 193, 11, 193, 12, 14, 12, 4, 13, 12, 201, 4, 12, 209, 4, 196, 5, 4, 194, 12, 194, - 4, 13, 195, 12, 4, 14, 193, 12, 13, 5, 12, 4, 12, 4, 194, 12, 14, 195, 12, 193, 5, 194, 12, 198, 5, 204, 12, 193, 5, 193, - 12, 193, 4, 193, 12, 193, 4, 6, 14, 12, 13, 4, 193, 12, 11, 194, 12, 13, 194, 4, 14, 5, 193, 12, 5, 8, 5, 8, 11, 12, 8, 11, - 8, 194, 11, 8, 11, 196, 8, 11, 196, 8, 255, 3, 11, 8, 11, 195, 8, 11, 193, 8, 193, 11, 8, 11, 12, 11, 194, 12, 13, 12, 5, - 13, 12, 193, 4, 14, 193, 12, 13, 12, 14, 4, 6, 13, 12, 193, 4, 194, 12, 6, 193, 12, 13, 193, 4, 194, 12, 13, 14, 4, 194, - 12, 193, 13, 194, 4, 14, 12, 6, 194, 12, 6, 14, 194, 12, 14, 6, 193, 4, 193, 12, 5, 195, 12, 13, 193, 12, 193, 4, 194, 12, - 4, 12, 13, 12, 11, 5, 197, 11, 5, 11, 194, 12, 4, 193, 13, 6, 12, 14, 5, 196, 12, 193, 11, 194, 12, 193, 5, 12, 193, 4, 5, - 14, 5, 13, 196, 4, 13, 205, 4, 5, 4, 193, 5, 193, 4, 6, 7, 5, 10, 196, 4, 193, 12, 14, 194, 5, 14, 12, 4, 12, 197, 5, 12, - 14, 12, 14, 13, 5, 193, 12, 5, 194, 12, 14, 194, 12, 14, 4, 12, 4, 12, 193, 8, 193, 11, 193, 12, 14, 6, 8, 14, 11, 12, 14, - 12, 4, 8, 14, 11, 12, 14, 12, 11, 194, 12, 4, 5, 12, 193, 5, 12, 14, 5, 12, 14, 5, 12, 193, 5, 14, 4, 12, 14, 4, 193, 12, - 5, 193, 12, 14, 12, 193, 13, 193, 5, 193, 4, 12, 5, 4, 12, 5, 12, 5, 13, 14, 5, 193, 4, 12, 14, 193, 4, 12, 5, 12, 5, 12, - 4, 5, 12, 8, 11, 5, 194, 12, 193, 6, 193, 12, 8, 14, 12, 193, 13, 4, 12, 11, 193, 5, 12, 14, 12, 4, 12, 13, 12, 5, 12, 13, - 5, 4, 14, 12, 13, 4, 12, 5, 14, 12, 14, 194, 12, 13, 193, 4, 14, 5, 6, 13, 193, 12, 13, 194, 12, 193, 13, 4, 5, 4, 12, 14, - 5, 12, 6, 194, 12, 13, 14, 6, 193, 4, 195, 12, 13, 4, 14, 194, 12, 13, 193, 4, 193, 13, 4, 193, 12, 6, 12, 4, 12, 4, 5, 12, - 14, 193, 12, 193, 13, 12, 194, 4, 195, 12, 14, 4, 194, 12, 193, 13, 14, 6, 194, 12, 14, 12, 193, 13, 12, 13, 194, 12, 14, - 194, 12, 194, 13, 12, 193, 4, 13, 194, 12, 193, 13, 194, 4, 6, 4, 14, 13, 197, 12, 193, 13, 4, 14, 6, 195, 12, 14, 193, 13, - 196, 4, 196, 12, 13, 193, 4, 14, 6, 4, 194, 12, 193, 13, 12, 4, 14, 193, 6, 193, 12, 14, 193, 12, 13, 6, 5, 4, 5, 195, 12, - 193, 13, 4, 14, 8, 11, 6, 5, 196, 12, 194, 13, 193, 4, 6, 12, 14, 193, 12, 13, 4, 193, 12, 193, 13, 12, 193, 4, 195, 12, - 193, 13, 193, 4, 12, 4, 14, 193, 12, 4, 14, 12, 4, 14, 6, 12, 14, 193, 12, 13, 194, 4, 6, 5, 193, 4, 12, 14, 195, 12, 193, - 13, 6, 194, 12, 13, 6, 194, 12, 4, 14, 194, 12, 14, 193, 13, 193, 4, 6, 13, 12, 14, 194, 5, 4, 194, 12, 14, 193, 12, 193, - 4, 193, 12, 4, 14, 193, 12, 193, 5, 193, 13, 196, 12, 13, 6, 193, 12, 14, 6, 4, 12, 14, 6, 12, 13, 4, 12, 13, 194, 4, 5, - 193, 12, 6, 5, 194, 12, 193, 4, 6, 8, 11, 5, 194, 4, 14, 193, 12, 14, 198, 12, 4, 12, 13, 195, 12, 14, 205, 12, 14, 12, 14, - 5, 13, 12, 4, 5, 6, 193, 5, 194, 13, 5, 13, 194, 5, 8, 194, 11, 193, 5, 8, 11, 6, 5, 13, 194, 4, 12, 193, 11, 12, 14, 193, - 11, 193, 12, 13, 193, 12, 6, 5, 12, 13, 14, 12, 13, 6, 14, 5, 193, 12, 13, 6, 12, 193, 13, 6, 4, 193, 12, 5, 13, 8, 11, 13, - 12, 13, 12, 14, 6, 4, 195, 5, 12, 195, 5, 193, 8, 202, 5, 6, 14, 196, 12, 14, 193, 5, 13, 5, 14 + 193, 12, 13, 12, 13, 14, 194, 4, 12, 13, 14, 4, 193, 12, 5, 12, 5, 14, 12, 13, 197, 12, 193, 13, 12, 13, 5, 193, 12, 13, + 201, 12, 193, 13, 12, 13, 4, 6, 4, 201, 12, 14, 193, 12, 13, 193, 12, 13, 12, 6, 195, 5, 12, 4, 13, 14, 195, 12, 13, 12, + 13, 12, 6, 12, 4, 14, 196, 12, 193, 13, 12, 6, 4, 5, 194, 12, 13, 14, 196, 12, 13, 193, 12, 193, 13, 6, 193, 5, 14, 196, + 12, 13, 12, 193, 6, 194, 5, 195, 12, 14, 193, 12, 13, 193, 12, 13, 196, 12, 6, 4, 193, 5, 194, 12, 4, 12, 14, 13, 194, 12, + 13, 194, 12, 6, 198, 12, 14, 193, 12, 13, 195, 12, 13, 12, 5, 12, 5, 12, 6, 193, 5, 14, 194, 12, 13, 193, 12, 6, 4, 14, 195, + 12, 5, 193, 12, 13, 4, 6, 4, 14, 195, 12, 13, 193, 12, 193, 13, 6, 193, 12, 5, 193, 4, 13, 6, 5, 193, 4, 13, 14, 197, 12, + 13, 194, 12, 5, 13, 5, 193, 4, 5, 4, 197, 12, 194, 13, 6, 193, 4, 193, 12, 6, 194, 12, 5, 8, 14, 8, 194, 11, 4, 193, 11, + 199, 12, 14, 193, 13, 194, 4, 194, 5, 194, 8, 14, 11, 4, 12, 5, 4, 12, 3, 12, 193, 4, 14, 12, 4, 193, 12, 14, 194, 12, 193, + 13, 14, 193, 12, 13, 4, 14, 193, 12, 14, 12, 14, 194, 12, 13, 193, 12, 193, 13, 193, 4, 12, 4, 5, 12, 13, 14, 6, 5, 198, + 4, 13, 5, 13, 6, 14, 199, 12, 14, 193, 12, 13, 5, 4, 6, 195, 12, 6, 194, 5, 194, 12, 14, 4, 194, 12, 193, 13, 6, 4, 12, 4, + 193, 13, 12, 13, 12, 13, 195, 12, 13, 12, 13, 12, 14, 4, 6, 194, 4, 5, 4, 194, 12, 193, 13, 12, 6, 194, 12, 13, 193, 12, + 13, 14, 4, 195, 12, 13, 14, 193, 4, 193, 6, 194, 12, 4, 199, 11, 8, 11, 14, 8, 4, 14, 13, 4, 13, 193, 12, 193, 13, 12, 204, + 11, 194, 13, 193, 12, 194, 13, 194, 11, 193, 8, 193, 11, 8, 198, 11, 12, 8, 12, 11, 8, 11, 8, 11, 195, 8, 3, 5, 193, 13, + 5, 200, 4, 193, 15, 5, 3, 4, 193, 9, 197, 4, 5, 4, 9, 4, 3, 194, 5, 14, 193, 5, 11, 193, 5, 193, 4, 194, 11, 205, 5, 199, + 13, 5, 8, 11, 5, 8, 5, 193, 8, 5, 8, 12, 11, 193, 5, 193, 11, 8, 193, 5, 11, 194, 5, 11, 193, 5, 8, 11, 193, 12, 203, 5, + 195, 4, 205, 5, 14, 8, 11, 199, 5, 193, 4, 194, 5, 193, 4, 195, 5, 195, 4, 199, 5, 193, 8, 193, 11, 194, 8, 193, 11, 195, + 8, 194, 11, 193, 8, 193, 11, 5, 8, 11, 13, 8, 11, 14, 193, 4, 5, 193, 11, 193, 12, 14, 12, 4, 13, 12, 201, 4, 12, 209, 4, + 196, 5, 4, 194, 12, 194, 4, 13, 195, 12, 4, 14, 193, 12, 13, 5, 12, 4, 12, 4, 194, 12, 14, 195, 12, 193, 5, 194, 12, 198, + 5, 204, 12, 193, 5, 193, 12, 193, 4, 193, 12, 193, 4, 6, 14, 12, 13, 4, 193, 12, 11, 194, 12, 13, 194, 4, 14, 5, 193, 12, + 5, 8, 5, 8, 11, 12, 8, 11, 8, 194, 11, 8, 11, 196, 8, 11, 196, 8, 255, 3, 11, 8, 11, 195, 8, 11, 193, 8, 11, 8, 11, 8, 193, + 11, 12, 11, 194, 12, 13, 12, 5, 13, 12, 193, 4, 14, 193, 12, 13, 12, 14, 4, 6, 13, 12, 193, 4, 194, 12, 6, 193, 12, 13, 193, + 4, 194, 12, 13, 14, 4, 195, 12, 193, 13, 194, 4, 14, 12, 6, 194, 12, 6, 14, 194, 12, 14, 6, 193, 4, 194, 12, 5, 195, 12, + 13, 193, 12, 193, 4, 194, 12, 4, 193, 12, 13, 12, 11, 5, 197, 11, 5, 11, 195, 12, 4, 193, 13, 6, 12, 14, 5, 196, 12, 193, + 11, 194, 12, 194, 5, 12, 193, 4, 5, 14, 5, 13, 196, 4, 13, 205, 4, 5, 4, 193, 5, 193, 4, 6, 7, 5, 10, 196, 4, 193, 12, 14, + 194, 5, 14, 12, 4, 12, 197, 5, 12, 14, 12, 14, 13, 5, 193, 12, 5, 194, 12, 14, 194, 12, 14, 4, 12, 4, 12, 193, 8, 193, 11, + 193, 12, 14, 6, 8, 14, 11, 12, 14, 12, 4, 8, 14, 11, 12, 14, 12, 11, 194, 12, 4, 5, 12, 193, 5, 12, 14, 5, 12, 14, 5, 12, + 193, 5, 14, 4, 12, 14, 4, 12, 14, 193, 12, 5, 193, 12, 14, 12, 193, 13, 193, 5, 193, 4, 12, 5, 4, 12, 5, 12, 5, 13, 14, 5, + 193, 4, 12, 14, 193, 4, 12, 5, 12, 5, 12, 4, 5, 12, 8, 11, 5, 194, 12, 193, 6, 193, 12, 8, 14, 12, 193, 13, 4, 12, 11, 193, + 5, 12, 14, 12, 4, 193, 12, 4, 193, 12, 13, 12, 5, 12, 13, 5, 4, 14, 12, 13, 4, 12, 5, 14, 12, 14, 194, 12, 13, 193, 4, 14, + 5, 6, 13, 193, 12, 13, 194, 12, 193, 13, 4, 5, 4, 12, 14, 5, 12, 6, 194, 12, 193, 13, 14, 6, 193, 4, 195, 12, 13, 4, 14, + 194, 12, 13, 193, 4, 193, 13, 4, 193, 12, 6, 12, 4, 12, 4, 5, 12, 14, 193, 12, 193, 13, 12, 194, 4, 195, 12, 14, 4, 194, + 12, 193, 13, 14, 6, 194, 12, 14, 12, 193, 13, 12, 13, 194, 12, 14, 195, 12, 195, 13, 12, 193, 4, 13, 194, 12, 193, 13, 194, + 4, 6, 4, 14, 13, 197, 12, 193, 13, 4, 14, 6, 195, 12, 14, 193, 13, 196, 4, 196, 12, 13, 193, 4, 14, 6, 4, 194, 12, 193, 13, + 12, 4, 14, 193, 6, 193, 12, 14, 193, 12, 13, 6, 5, 4, 5, 195, 12, 193, 13, 4, 14, 8, 11, 6, 5, 196, 12, 193, 13, 12, 13, + 193, 4, 6, 12, 14, 193, 12, 13, 4, 193, 12, 193, 13, 193, 12, 193, 4, 13, 196, 12, 193, 13, 193, 4, 12, 4, 14, 193, 12, 4, + 14, 193, 12, 14, 12, 4, 14, 6, 12, 14, 193, 12, 13, 194, 4, 6, 5, 193, 4, 12, 14, 195, 12, 193, 13, 6, 194, 12, 13, 6, 193, + 12, 6, 194, 12, 4, 14, 195, 12, 14, 193, 13, 193, 4, 6, 13, 12, 14, 194, 5, 4, 194, 12, 14, 193, 12, 193, 4, 193, 12, 4, + 14, 193, 12, 193, 5, 193, 13, 196, 12, 13, 6, 193, 12, 14, 6, 4, 12, 14, 6, 12, 13, 4, 12, 13, 194, 4, 5, 193, 12, 6, 5, + 194, 12, 193, 4, 6, 8, 11, 5, 194, 4, 14, 8, 11, 193, 12, 14, 198, 12, 4, 12, 13, 201, 12, 14, 202, 12, 14, 12, 14, 5, 13, + 12, 4, 5, 6, 195, 5, 194, 13, 5, 13, 194, 5, 8, 194, 11, 193, 5, 8, 11, 6, 5, 13, 194, 4, 11, 12, 193, 11, 12, 14, 193, 11, + 193, 12, 13, 193, 12, 6, 5, 12, 13, 14, 12, 13, 6, 14, 5, 193, 12, 13, 6, 12, 193, 13, 6, 4, 196, 12, 5, 13, 8, 11, 13, 12, + 13, 12, 14, 6, 4, 195, 5, 12, 195, 5, 193, 8, 202, 5, 6, 14, 197, 12, 14, 193, 5, 13, 5, 14 }; - static constexpr std::array rleabfields = + static constexpr std::array rleabfields = { 49232, 1024, 49155, 4096, 6144, 7168, 49158, 8192, 49157, 9216, 49182, 1024, 4096, 49156, 1024, 49154, 4096, 7168, 49153, 1024, 4096, 6144, 7168, 8192, 6144, 49153, 10240, 1024, 0, 1024, 9216, 1024, 16384, 49164, 1024, 10240, 49157, 1024, 4096, @@ -1972,71 +2001,73 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) 1036, 20492, 1036, 7181, 13325, 16397, 49153, 10253, 8205, 1037, 49154, 7181, 10253, 15373, 24589, 8205, 1037, 12301, 1037, 10253, 49153, 1037, 49153, 4109, 49153, 7181, 8205, 12301, 49153, 1037, 6157, 49153, 1037, 4109, 49158, 1037, 7181, 4109, 49154, 4110, 14, 49154, 4110, 7182, 49153, 4110, 8205, 49153, 4112, 6160, 16, 49160, 9233, 17, 49153, 20497, 49156, 11282, - 18, 49154, 11282, 49153, 12307, 19, 12307, 19470, 49153, 24589, 13, 24589, 27661, 24589, 13325, 16397, 17421, 18445, 23565, - 49153, 24589, 20493, 49154, 18445, 17421, 49154, 13325, 16397, 11286, 49153, 1046, 7190, 49153, 1046, 49153, 12310, 49153, - 1046, 11286, 49155, 1046, 49153, 10262, 12310, 16406, 11286, 9238, 8214, 16407, 49153, 1047, 23, 49154, 1047, 7191, 49153, - 1047, 8215, 49155, 1047, 11287, 49153, 19479, 20503, 24, 7192, 1048, 7192, 49155, 1048, 10264, 49153, 1048, 20504, 25, 49154, - 1049, 7193, 49154, 1049, 7193, 1049, 13337, 7193, 17433, 49154, 19481, 26, 49155, 1050, 7194, 49153, 1050, 10266, 1050, 23578, - 49153, 1050, 12314, 27, 49153, 1051, 8219, 49154, 1051, 10267, 8219, 49153, 1051, 49153, 7195, 16412, 1052, 20508, 1052, - 28, 1052, 16412, 24604, 10268, 49153, 1052, 10268, 17436, 24604, 10268, 1052, 21532, 49153, 10268, 18461, 16413, 1053, 20509, - 1053, 29, 49153, 7197, 49154, 1053, 24605, 9245, 1053, 9245, 25629, 19486, 16414, 1054, 23582, 1054, 30, 1054, 12318, 19486, - 10270, 49153, 1054, 10270, 1054, 12318, 49154, 18462, 17438, 1054, 49153, 10270, 31, 23583, 49156, 4127, 16415, 4127, 32, - 49162, 1056, 33, 1057, 21537, 49153, 1057, 21537, 49154, 1057, 25633, 1057, 13345, 49161, 2082, 34, 4130, 10274, 49156, 2082, - 49153, 12322, 49154, 4130, 10274, 8226, 10274, 11298, 12322, 4131, 49153, 10275, 49153, 4131, 10275, 49153, 4131, 10275, - 49154, 4131, 49154, 10275, 49154, 11299, 10275, 1060, 36, 13348, 1060, 6180, 8228, 1060, 8228, 13348, 1024, 11264, 49154, - 1024, 11264, 4134, 8230, 38, 12326, 49153, 8230, 49155, 4134, 8230, 49153, 4136, 17448, 40, 17448, 11264, 49154, 4096, 11264, - 49155, 4138, 42, 49154, 4139, 16427, 43, 6188, 24620, 49153, 6188, 24620, 44, 49155, 6189, 45, 49153, 6190, 46, 6191, 47, - 6191, 49163, 4144, 7216, 48, 4144, 7216, 49160, 4145, 24625, 4145, 49, 49153, 4145, 20529, 49153, 4145, 10289, 7219, 16435, - 51, 49157, 7219, 7168, 8192, 11264, 49153, 8192, 11264, 8192, 7216, 49154, 8247, 55, 8247, 49160, 11264, 49153, 16384, 23552, - 49153, 24576, 49157, 9274, 24634, 58, 27706, 49156, 9274, 24634, 49155, 10299, 49153, 13371, 10299, 13371, 49156, 12348, - 60, 12348, 49156, 10301, 61, 49154, 10301, 49156, 10240, 49159, 18441, 49153, 27657, 9, 20516, 13371, 59, 49155, 11264, 49153, - 13312, 19456, 21504, 49156, 7168, 49159, 8192, 9216, 49154, 10240, 16384, 19456, 18432, 12288, 1024, 2048, 49155, 10240, - 49189, 1024, 4096, 49156, 1024, 6144, 49153, 4096, 49153, 6144, 49153, 7168, 8192, 49154, 6144, 10240, 0, 15360, 1024, 6144, - 49156, 1024, 12288, 1024, 2048, 3072, 4096, 6144, 8192, 11264, 12288, 14336, 16384, 17408, 19456, 24576, 49153, 1024, 4096, - 49154, 6144, 8192, 9216, 49162, 1024, 49153, 4096, 7168, 8192, 49157, 6144, 8192, 49153, 9216, 10240, 11264, 49154, 1024, - 10240, 17408, 49154, 1101, 4173, 6221, 49155, 1024, 6144, 4096, 49155, 1024, 49153, 6144, 49153, 7168, 8192, 49154, 9216, - 11264, 12288, 16384, 18432, 19456, 27648, 0, 49153, 1024, 6144, 7168, 1024, 10240, 16471, 1111, 12375, 11351, 49153, 6231, - 1111, 49155, 8192, 9216, 13312, 10240, 12288, 49153, 6144, 49153, 10240, 4096, 10240, 23552, 20480, 21504, 17408, 20480, - 8287, 24671, 8287, 24671, 49156, 9216, 49154, 10240, 11264, 9216, 49153, 10240, 11264, 49155, 8289, 49154, 11361, 49153, - 13409, 97, 49154, 8289, 8228, 13348, 8291, 13411, 99, 8291, 49153, 12387, 10249, 49154, 8192, 49159, 10240, 11264, 49153, - 13312, 49156, 16384, 18432, 19456, 49153, 20480, 21504, 23552, 49155, 24576, 49154, 4096, 49153, 26624, 49160, 1024, 4096, - 49154, 6144, 107, 1131, 6251, 49154, 1131, 6252, 49155, 1132, 6252, 109, 1133, 10349, 19565, 20589, 49153, 1135, 4205, 12397, - 23661, 27648, 1024, 7168, 11264, 8192, 1024, 22528, 4096, 23552, 1024, 8192, 10240, 11264, 13312, 17408, 19456, 20480, 24576, - 49154, 4096, 6144, 49155, 11386, 49156, 10363, 123, 49154, 10249, 13321, 10249, 16393, 17417, 49157, 11389, 125, 8192, 9216, - 10240, 9216, 49153, 10240, 49153, 12288, 17408, 49153, 12288, 49153, 13312, 49155, 16384, 13312, 49154, 16384, 18432, 20480, - 49153, 16384, 49155, 17408, 49153, 20480, 49153, 21504, 49153, 24576, 49154, 21504, 49153, 23552, 49154, 27648, 24576, 27648, - 24576, 16384, 13312, 10240, 49156, 8192, 23552, 49154, 9346, 130, 49154, 10371, 18563, 131, 49153, 10371, 49154, 11286, 49153, - 17430, 49153, 20502, 49157, 10240, 49155, 10374, 134, 10374, 49159, 11400, 136, 49153, 11400, 49155, 16419, 35, 49154, 10378, - 138, 49154, 10378, 49154, 11299, 16419, 49159, 11264, 49157, 13312, 12326, 49154, 16384, 17408, 16384, 21504, 49154, 23552, - 17448, 49158, 11264, 49153, 2048, 49153, 1024, 13312, 6144, 11264, 8192, 49153, 1024, 4096, 49154, 1024, 12301, 49154, 1037, - 24589, 5133, 6157, 6144, 49156, 8192, 17408, 49157, 1024, 49153, 7168, 49160, 1024, 1037, 49157, 1024, 49153, 6144, 49156, - 1024, 162, 4258, 3234, 49153, 1186, 49153, 7168, 49154, 8192, 49153, 16384, 18432, 23552, 10409, 169, 10410, 170, 49153, - 16481, 5120, 16384, 5120, 19456, 49153, 5293, 173, 49153, 16384, 7343, 175, 7343, 49154, 8192, 5297, 7345, 5297, 7345, 7346, - 7347, 179, 7347, 18612, 180, 18612, 16565, 181, 49153, 16384, 24886, 310, 24886, 27977, 329, 16384, 49153, 24576, 7168, 49154, - 11264, 49154, 16570, 16571, 187, 16571, 17596, 188, 17596, 49153, 9405, 11453, 189, 9405, 10430, 190, 10430, 49153, 13312, - 17408, 49153, 8385, 193, 20673, 49154, 8385, 20673, 49153, 8385, 49154, 11264, 49153, 16384, 49154, 16580, 196, 49154, 16580, - 11461, 197, 49153, 11461, 49155, 11264, 49154, 16384, 11264, 49154, 17408, 49155, 20480, 49155, 27978, 330, 49158, 27978, - 11264, 23853, 301, 49153, 23853, 27661, 25613, 49153, 20480, 49155, 20764, 284, 49154, 24576, 49153, 23854, 302, 21796, 292, - 49157, 12492, 204, 49153, 12492, 49154, 24780, 16588, 49159, 11469, 24781, 205, 20685, 49153, 13312, 49155, 13519, 207, 49154, + 18, 49154, 11282, 49153, 12307, 19, 12307, 19470, 49153, 24589, 28685, 24589, 13, 27661, 24589, 13325, 16397, 17421, 18445, + 23565, 49153, 24589, 20493, 49154, 18445, 17421, 49154, 13325, 16397, 11286, 49153, 1046, 7190, 49153, 1046, 49153, 12310, + 49153, 1046, 11286, 49155, 1046, 49153, 10262, 12310, 16406, 11286, 9238, 8214, 16407, 49153, 1047, 23, 49154, 1047, 7191, + 49153, 1047, 8215, 49155, 1047, 11287, 49153, 19479, 20503, 24, 7192, 1048, 7192, 49155, 1048, 10264, 49153, 1048, 20504, + 25, 49154, 1049, 7193, 49154, 1049, 7193, 1049, 13337, 7193, 17433, 49154, 19481, 26, 49155, 1050, 7194, 49153, 1050, 10266, + 1050, 23578, 49153, 1050, 12314, 27, 49153, 1051, 8219, 49154, 1051, 10267, 8219, 49153, 1051, 49153, 7195, 16412, 1052, + 20508, 1052, 28, 1052, 16412, 24604, 10268, 49153, 1052, 10268, 17436, 28700, 24604, 10268, 1052, 21532, 49153, 10268, 18461, + 16413, 1053, 20509, 1053, 29, 49153, 7197, 49154, 1053, 28701, 24605, 9245, 1053, 9245, 25629, 19486, 16414, 1054, 23582, + 1054, 30, 1054, 12318, 19486, 10270, 49153, 1054, 10270, 1054, 12318, 49154, 18462, 17438, 1054, 49153, 10270, 31, 23583, + 49156, 4127, 16415, 4127, 32, 49162, 1056, 33, 1057, 21537, 49153, 1057, 21537, 49154, 1057, 25633, 1057, 13345, 49161, 2082, + 34, 4130, 10274, 49156, 2082, 49153, 12322, 49154, 4130, 10274, 8226, 10274, 11298, 12322, 4131, 49153, 10275, 49153, 4131, + 10275, 49153, 4131, 10275, 49154, 4131, 49154, 10275, 49154, 11299, 10275, 1060, 36, 13348, 1060, 6180, 8228, 1060, 8228, + 13348, 1024, 11264, 49154, 1024, 11264, 4134, 8230, 38, 12326, 49153, 8230, 49155, 4134, 8230, 49153, 4136, 17448, 40, 17448, + 11264, 49154, 4096, 11264, 49155, 4138, 42, 49154, 4139, 16427, 43, 6188, 24620, 49153, 6188, 24620, 44, 49155, 6189, 45, + 49153, 6190, 46, 6191, 47, 6191, 49164, 4144, 7216, 48, 4144, 7216, 49160, 4145, 24625, 4145, 49, 49153, 4145, 20529, 49153, + 4145, 10289, 7219, 16435, 51, 49157, 7219, 7168, 8192, 11264, 49153, 8192, 11264, 8192, 7216, 49154, 8247, 55, 8247, 49160, + 11264, 49153, 16384, 23552, 49153, 24576, 28672, 49158, 9274, 24634, 58, 27706, 49156, 9274, 24634, 49155, 10299, 49153, + 13371, 10299, 49153, 13371, 49156, 12348, 60, 12348, 49156, 10301, 61, 49154, 10301, 49156, 10240, 49159, 18441, 49153, 27657, + 9, 20516, 13371, 59, 49155, 11264, 49153, 13312, 19456, 21504, 49156, 7168, 49159, 8192, 9216, 49154, 10240, 16384, 19456, + 18432, 12288, 1024, 2048, 49155, 10240, 49189, 1024, 4096, 49156, 1024, 6144, 49153, 4096, 49153, 6144, 49153, 7168, 8192, + 49154, 6144, 10240, 0, 15360, 1024, 6144, 49156, 1024, 8192, 12288, 1024, 2048, 3072, 4096, 6144, 8192, 11264, 12288, 14336, + 16384, 17408, 19456, 24576, 28672, 49153, 1024, 4096, 49154, 6144, 8192, 9216, 49162, 1024, 49153, 4096, 7168, 8192, 49157, + 6144, 8192, 49153, 9216, 10240, 11264, 49154, 1024, 10240, 17408, 49154, 1101, 4173, 6221, 49155, 1024, 6144, 4096, 49155, + 1024, 49153, 6144, 49153, 7168, 8192, 49154, 9216, 11264, 12288, 16384, 18432, 19456, 27648, 0, 49153, 1024, 6144, 7168, + 1024, 10240, 16471, 1111, 12375, 11351, 49153, 6231, 1111, 49155, 8192, 9216, 13312, 10240, 12288, 49153, 6144, 49153, 10240, + 4096, 10240, 28672, 23552, 20480, 21504, 17408, 20480, 8287, 24671, 8287, 24671, 49156, 9216, 49154, 10240, 11264, 9216, + 49153, 10240, 11264, 49155, 8289, 49154, 11361, 49153, 13409, 97, 49154, 8289, 8228, 13348, 8291, 13411, 99, 8291, 49153, + 12387, 10249, 49154, 8192, 49159, 10240, 11264, 49153, 13312, 49156, 16384, 18432, 19456, 49153, 20480, 21504, 23552, 49155, + 24576, 49154, 4096, 49153, 26624, 49160, 1024, 4096, 49154, 6144, 107, 1131, 6251, 49154, 1131, 6252, 49155, 1132, 6252, + 109, 1133, 10349, 19565, 20589, 49153, 1135, 4205, 12397, 23661, 27648, 1024, 7168, 11264, 8192, 1024, 22528, 4096, 23552, + 1024, 8192, 10240, 11264, 13312, 17408, 19456, 20480, 24576, 49154, 4096, 6144, 49155, 11386, 49156, 10363, 123, 49154, 10249, + 13321, 10249, 16393, 17417, 49157, 11389, 125, 8192, 9216, 10240, 9216, 49153, 10240, 49153, 12288, 17408, 49153, 12288, + 49153, 13312, 49155, 16384, 13312, 49154, 16384, 18432, 20480, 49153, 16384, 49155, 17408, 49153, 20480, 49153, 21504, 49153, + 24576, 49154, 21504, 49153, 23552, 49154, 27648, 49153, 28672, 27648, 28672, 24576, 16384, 13312, 10240, 49156, 8192, 23552, + 49154, 9346, 130, 49154, 10371, 18563, 131, 49153, 10371, 49154, 11286, 49153, 17430, 49153, 20502, 49157, 10240, 49155, + 10374, 134, 10374, 49160, 11400, 136, 49153, 11400, 49155, 16419, 35, 49154, 10378, 138, 49154, 10378, 49155, 11299, 16419, + 49159, 11264, 49158, 13312, 12326, 49154, 16384, 17408, 16384, 21504, 49154, 23552, 17448, 49159, 11264, 49153, 2048, 49153, + 1024, 13312, 6144, 11264, 8192, 49153, 1024, 4096, 49154, 1024, 12301, 28685, 49154, 1037, 24589, 5133, 6157, 6144, 49156, + 8192, 17408, 49157, 1024, 49153, 7168, 49160, 1024, 1037, 49157, 1024, 49153, 6144, 49156, 1024, 162, 4258, 3234, 49153, + 1186, 49153, 7168, 49154, 8192, 49153, 16384, 18432, 23552, 10409, 169, 10410, 170, 49153, 16481, 5120, 16384, 5120, 19456, + 49153, 5293, 173, 49153, 16384, 7343, 175, 7343, 49154, 8192, 5297, 7345, 5297, 7345, 7346, 7347, 179, 7347, 18612, 180, + 18612, 16565, 181, 49153, 16384, 24886, 310, 24886, 27977, 329, 16384, 49153, 24576, 7168, 49154, 11264, 49154, 16570, 16571, + 187, 16571, 17596, 188, 17596, 49153, 9405, 11453, 189, 9405, 10430, 190, 10430, 29015, 343, 49153, 13312, 17408, 49153, + 8385, 193, 20673, 49154, 8385, 20673, 49153, 8385, 49154, 11264, 49153, 16384, 49154, 16580, 196, 49154, 16580, 11461, 197, + 49153, 11461, 49155, 11264, 49154, 16384, 11264, 49154, 17408, 49155, 20480, 49155, 27978, 330, 49158, 27978, 11264, 23853, + 301, 49153, 23853, 27661, 49155, 28685, 25613, 49153, 20480, 49155, 20764, 284, 49154, 24576, 49153, 23854, 302, 21796, 292, + 49157, 12492, 204, 49153, 12492, 49154, 24780, 16588, 49159, 11469, 24781, 205, 20685, 49153, 13312, 49156, 13519, 207, 49154, 13519, 49153, 20687, 23759, 49154, 16592, 208, 49157, 13521, 49153, 17617, 16593, 49153, 23761, 13521, 16593, 49154, 17617, 16415, 16595, 211, 49159, 16595, 18643, 49153, 25811, 17620, 212, 17620, 49156, 16597, 213, 16597, 17622, 49153, 16598, 214, - 16598, 20694, 49154, 16598, 17622, 16598, 27979, 331, 49161, 27979, 49160, 18647, 23767, 215, 20695, 21719, 23767, 49158, + 16598, 20694, 49154, 16598, 17622, 16598, 27979, 331, 49163, 27979, 49160, 18647, 23767, 215, 20695, 21719, 23767, 49158, 16600, 216, 16600, 49155, 16601, 217, 49157, 16601, 49154, 17625, 49157, 16602, 218, 16602, 18481, 49156, 13532, 21724, 24796, - 220, 13532, 27683, 17629, 20701, 221, 49158, 17629, 24797, 49157, 20765, 285, 49156, 16384, 49161, 23552, 21797, 293, 49155, - 21797, 49158, 19456, 49154, 19680, 21728, 49155, 19680, 20704, 19680, 224, 24576, 16384, 25622, 22, 49153, 27981, 333, 27981, - 18658, 226, 49159, 18658, 49154, 18659, 227, 49153, 18659, 49156, 19456, 49156, 20480, 49155, 20767, 287, 49154, 25923, 323, - 49156, 25923, 27971, 23674, 122, 49155, 21531, 9445, 16613, 17637, 229, 9445, 16613, 9445, 16613, 17408, 49153, 24890, 314, - 11264, 25600, 21504, 49154, 25600, 27648, 17408, 49156, 27648, 12413, 16619, 235, 49153, 16619, 24891, 315, 24891, 49164, - 16384, 49157, 27648, 49157, 20768, 288, 13550, 21742, 238, 21742, 13550, 21742, 49153, 13550, 18432, 19456, 49153, 21504, - 49153, 23552, 18672, 20720, 21744, 240, 23792, 23552, 27648, 24576, 49153, 12288, 19456, 49153, 24576, 25600, 21504, 25600, - 21504, 19700, 244, 16629, 245, 49155, 16629, 16384, 27648, 24576, 49156, 5120, 8192, 25600, 20480, 9216, 49154, 5120, 7168, - 49153, 5120, 49153, 9216, 5120, 49156, 17408, 49153, 24576, 25600, 18527, 95, 49154, 25609, 49157, 21504, 49153, 24895, 319, - 49154, 21802, 298, 21802, 49155, 25600, 49156, 27648, 24614, 49154, 16384, 49156, 18688, 21760, 256, 49153, 18688, 49153, - 20480, 49153, 21504, 49153, 13325, 12288, 49153, 16384, 12288, 11264, 13312, 18432, 12288, 11264, 19456, 17408, 13576, 12552, - 16648, 17672, 25600, 23552, 2048, 5120, 25600, 12288, 26624, 5120, 277, 49153, 5397, 7168, 2048, 0 + 220, 13532, 27683, 17629, 20701, 221, 49158, 17629, 24797, 49157, 20765, 285, 49156, 16384, 49162, 23552, 21797, 293, 49155, + 21797, 49160, 19456, 49154, 19680, 21728, 49156, 19680, 20704, 19680, 224, 24576, 16384, 25622, 22, 49153, 28881, 209, 49153, + 27981, 333, 27981, 18658, 226, 49159, 18658, 49154, 18659, 227, 49153, 18659, 49156, 19456, 49156, 20480, 49154, 28672, 49155, + 20767, 287, 49155, 25923, 323, 49156, 25923, 27971, 23674, 122, 49155, 21531, 9445, 16613, 17637, 229, 9445, 16613, 9445, + 16613, 17408, 49153, 24890, 314, 11264, 25600, 21504, 49154, 25600, 27648, 17408, 49156, 27648, 12413, 16619, 235, 49153, + 16619, 24891, 315, 24891, 49164, 16384, 49157, 27648, 49157, 20768, 288, 49153, 28672, 13550, 21742, 238, 21742, 13550, 21742, + 49153, 13550, 18432, 19456, 49153, 21504, 49153, 23552, 49153, 28672, 18672, 20720, 21744, 28912, 23792, 23552, 27648, 240, + 24576, 49153, 12288, 19456, 49153, 24576, 25600, 21504, 25600, 21504, 19700, 244, 16629, 245, 49155, 16629, 16384, 27648, + 49153, 28672, 24576, 49156, 5120, 8192, 25600, 20480, 9216, 49154, 5120, 7168, 49153, 5120, 49153, 9216, 5120, 49156, 17408, + 49154, 24576, 25600, 18527, 95, 49154, 25609, 49157, 21504, 49153, 24895, 319, 49154, 21802, 298, 21802, 49155, 25600, 49156, + 27648, 49154, 28672, 24614, 49154, 16384, 49156, 18688, 21760, 256, 49153, 18688, 49153, 20480, 49153, 21504, 49153, 13325, + 12288, 49153, 16384, 12288, 11264, 13312, 18432, 12288, 11264, 19456, 17408, 13576, 12552, 16648, 17672, 25600, 23552, 2048, + 5120, 25600, 28672, 12288, 26624, 5120, 277, 49153, 5397, 7168, 2048, 0 }; - static constexpr std::array rlegcindices = + static constexpr std::array rlegcindices = { 195, 25, 24, 194, 16, 18, 16, 17, 13, 20, 16, 12, 16, 8, 16, 20, 193, 4, 19, 11, 19, 194, 0, 193, 25, 24, 16, 18, 21, 19, 2, 15, 20, 26, 10, 0, 16, 14, 10, 4, 194, 0, 4, 193, 0, 4, 194, 0, 4, 193, 0, 198, 4, 0, 193, 4, 193, 0, 4, 0, 195, 4, 2, @@ -2045,155 +2076,157 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) 4, 195, 0, 4, 0, 21, 194, 7, 6, 255, 9, 4, 0, 27, 4, 1, 193, 16, 194, 0, 16, 12, 21, 18, 27, 195, 7, 12, 193, 16, 193, 7, 16, 193, 2, 16, 194, 26, 20, 16, 18, 193, 16, 21, 193, 7, 26, 194, 16, 194, 2, 1, 198, 7, 8, 16, 2, 7, 193, 2, 16, 193, 7, 26, 21, 7, 1, 2, 21, 194, 16, 27, 26, 2, 7, 2, 193, 7, 193, 2, 7, 2, 27, 8, 2, 7, 1, 21, 194, 16, 1, 27, 7, 18, 2, 193, 7, - 1, 7, 27, 194, 16, 2, 7, 27, 16, 193, 2, 19, 27, 26, 193, 7, 196, 2, 1, 195, 7, 26, 198, 7, 5, 194, 2, 7, 5, 193, 7, 5, 7, - 16, 8, 16, 1, 198, 2, 7, 5, 27, 193, 2, 7, 2, 5, 7, 2, 8, 18, 10, 21, 18, 2, 16, 7, 27, 193, 7, 5, 2, 7, 5, 193, 7, 8, 7, - 16, 27, 7, 5, 194, 2, 194, 7, 8, 16, 18, 2, 194, 7, 27, 7, 5, 194, 2, 7, 5, 194, 7, 8, 21, 10, 27, 7, 193, 2, 193, 5, 7, - 2, 193, 8, 10, 21, 18, 7, 5, 7, 2, 27, 193, 2, 7, 2, 193, 7, 194, 2, 7, 8, 16, 10, 21, 2, 7, 5, 16, 2, 27, 7, 2, 7, 5, 7, - 2, 7, 8, 2, 5, 193, 7, 5, 193, 2, 27, 193, 2, 7, 2, 5, 194, 7, 2, 21, 2, 10, 2, 8, 10, 21, 27, 7, 5, 2, 7, 5, 7, 8, 16, 27, - 2, 7, 2, 7, 18, 2, 1, 7, 16, 8, 16, 27, 193, 2, 7, 2, 7, 2, 1, 193, 7, 8, 193, 2, 21, 193, 16, 7, 8, 10, 17, 13, 5, 27, 193, - 2, 193, 7, 5, 193, 7, 2, 193, 7, 21, 7, 21, 193, 16, 21, 16, 193, 2, 193, 5, 196, 7, 8, 193, 16, 5, 7, 8, 193, 5, 7, 21, - 4, 27, 4, 194, 0, 16, 1, 0, 199, 2, 27, 193, 7, 194, 16, 193, 10, 21, 194, 4, 27, 0, 12, 2, 21, 16, 2, 24, 2, 17, 13, 27, - 2, 16, 9, 2, 27, 193, 2, 193, 7, 5, 27, 2, 7, 5, 16, 27, 2, 7, 27, 2, 27, 7, 193, 2, 7, 5, 194, 7, 193, 16, 1, 16, 18, 7, - 27, 8, 10, 195, 16, 12, 193, 16, 7, 26, 7, 8, 27, 2, 1, 2, 193, 7, 194, 2, 27, 7, 5, 7, 21, 16, 8, 195, 2, 8, 10, 193, 21, - 2, 7, 5, 27, 16, 2, 5, 194, 7, 8, 16, 1, 16, 7, 6, 195, 7, 5, 2, 7, 193, 5, 2, 27, 16, 8, 194, 16, 21, 16, 7, 5, 2, 5, 193, - 7, 8, 193, 2, 7, 5, 7, 5, 27, 16, 2, 5, 194, 7, 27, 193, 16, 193, 8, 2, 193, 1, 16, 199, 0, 4, 0, 27, 4, 16, 27, 7, 16, 5, - 193, 2, 7, 5, 2, 193, 0, 195, 1, 195, 0, 194, 1, 199, 7, 194, 0, 193, 4, 193, 0, 4, 198, 0, 3, 4, 3, 0, 4, 0, 4, 0, 195, - 4, 24, 195, 26, 12, 16, 15, 14, 17, 15, 14, 193, 16, 22, 23, 26, 24, 16, 193, 11, 17, 13, 195, 16, 20, 16, 11, 16, 24, 194, - 26, 27, 193, 26, 1, 193, 20, 17, 13, 193, 1, 204, 18, 7, 194, 6, 195, 7, 21, 4, 0, 20, 4, 21, 193, 4, 21, 4, 2, 0, 193, 21, - 193, 0, 4, 193, 20, 0, 194, 21, 0, 21, 10, 195, 9, 21, 20, 194, 21, 197, 20, 21, 17, 13, 17, 13, 196, 21, 20, 199, 21, 27, - 193, 21, 193, 10, 197, 21, 17, 13, 10, 193, 20, 17, 13, 195, 20, 17, 13, 17, 13, 21, 20, 196, 21, 193, 4, 193, 0, 194, 4, - 193, 0, 195, 4, 0, 193, 1, 193, 4, 193, 0, 21, 4, 0, 7, 4, 0, 27, 193, 16, 10, 193, 0, 193, 2, 27, 1, 16, 193, 7, 15, 14, - 12, 16, 12, 15, 14, 17, 13, 16, 1, 193, 16, 12, 193, 16, 12, 16, 17, 198, 16, 17, 13, 12, 196, 21, 16, 1, 2, 9, 17, 193, - 13, 5, 1, 9, 1, 2, 16, 27, 193, 2, 7, 19, 1, 12, 2, 16, 193, 1, 2, 27, 195, 2, 21, 10, 194, 2, 198, 21, 203, 2, 1, 193, 21, - 2, 1, 193, 16, 2, 1, 193, 16, 8, 27, 2, 6, 16, 7, 193, 1, 7, 2, 9, 7, 194, 16, 27, 19, 193, 1, 19, 4, 19, 4, 0, 2, 4, 0, - 4, 194, 0, 4, 0, 196, 4, 0, 196, 4, 255, 3, 0, 4, 0, 195, 4, 0, 193, 4, 193, 0, 4, 1, 2, 1, 193, 2, 193, 7, 5, 21, 7, 2, - 193, 16, 27, 5, 2, 193, 7, 27, 16, 8, 7, 2, 193, 16, 193, 2, 7, 8, 2, 193, 7, 193, 16, 2, 7, 193, 5, 27, 16, 7, 5, 2, 7, - 5, 194, 16, 27, 1, 8, 2, 7, 1, 8, 27, 2, 7, 5, 27, 8, 193, 16, 2, 1, 21, 5, 2, 7, 2, 7, 2, 1, 193, 16, 2, 5, 7, 16, 1, 7, - 2, 0, 19, 1, 195, 0, 1, 19, 0, 2, 5, 7, 16, 5, 7, 8, 2, 29, 28, 196, 2, 193, 0, 2, 7, 2, 20, 19, 2, 13, 17, 21, 27, 18, 7, - 194, 16, 17, 13, 7, 16, 12, 255, 3, 17, 13, 194, 16, 17, 13, 16, 20, 12, 20, 26, 193, 16, 8, 4, 19, 0, 17, 13, 17, 13, 16, - 2, 1, 27, 26, 193, 21, 27, 2, 16, 9, 10, 21, 10, 194, 21, 2, 27, 2, 27, 7, 10, 193, 2, 10, 193, 2, 9, 27, 2, 7, 2, 27, 16, - 2, 16, 9, 193, 4, 193, 0, 193, 2, 27, 8, 4, 27, 0, 2, 27, 2, 16, 4, 27, 0, 2, 27, 2, 193, 1, 193, 2, 16, 10, 2, 21, 10, 2, - 27, 10, 2, 27, 10, 2, 193, 10, 27, 16, 2, 27, 16, 193, 2, 10, 2, 7, 27, 2, 193, 7, 193, 10, 193, 16, 2, 10, 16, 2, 10, 2, - 21, 7, 27, 10, 193, 16, 2, 27, 193, 16, 2, 10, 2, 10, 2, 16, 10, 2, 4, 0, 10, 193, 2, 7, 193, 8, 2, 1, 4, 27, 194, 7, 12, - 1, 0, 20, 10, 2, 27, 7, 12, 2, 7, 2, 10, 2, 7, 10, 16, 27, 2, 7, 16, 2, 10, 27, 2, 27, 5, 7, 2, 7, 193, 16, 27, 10, 8, 7, - 2, 194, 7, 5, 2, 193, 7, 16, 26, 16, 7, 27, 26, 2, 8, 7, 2, 5, 7, 27, 8, 193, 16, 2, 5, 193, 2, 7, 16, 27, 7, 5, 2, 5, 193, - 16, 193, 7, 16, 5, 7, 8, 2, 16, 2, 16, 10, 2, 27, 5, 7, 5, 193, 7, 194, 16, 7, 2, 7, 2, 27, 16, 2, 7, 5, 193, 7, 27, 8, 193, - 7, 5, 27, 2, 193, 7, 193, 5, 194, 2, 27, 193, 5, 193, 7, 5, 7, 2, 193, 16, 7, 2, 5, 194, 7, 194, 16, 8, 16, 27, 7, 194, 2, - 193, 5, 194, 7, 16, 27, 8, 2, 193, 5, 7, 27, 193, 7, 196, 16, 2, 7, 2, 5, 193, 7, 193, 16, 27, 8, 16, 2, 7, 193, 5, 7, 2, - 16, 27, 193, 8, 193, 2, 27, 7, 5, 7, 8, 10, 16, 21, 193, 2, 5, 194, 7, 16, 27, 4, 0, 8, 10, 193, 2, 193, 5, 7, 5, 193, 7, - 193, 16, 8, 2, 27, 5, 193, 7, 16, 2, 194, 7, 5, 193, 16, 2, 7, 5, 2, 193, 7, 193, 16, 2, 16, 27, 193, 2, 16, 27, 2, 16, 27, - 8, 2, 27, 5, 193, 7, 194, 16, 8, 10, 193, 16, 2, 27, 7, 5, 2, 194, 7, 8, 2, 5, 193, 7, 8, 2, 7, 5, 16, 27, 7, 2, 5, 27, 5, - 7, 193, 16, 8, 7, 2, 27, 10, 21, 18, 16, 194, 2, 27, 193, 9, 193, 16, 193, 2, 16, 27, 193, 2, 193, 26, 193, 7, 194, 2, 7, - 5, 7, 8, 193, 2, 27, 8, 16, 2, 27, 8, 2, 7, 16, 2, 7, 194, 16, 21, 193, 1, 8, 10, 1, 2, 1, 193, 16, 8, 4, 0, 10, 194, 16, - 27, 193, 2, 27, 7, 193, 5, 7, 194, 1, 16, 1, 7, 5, 194, 2, 27, 194, 2, 1, 201, 2, 27, 2, 27, 21, 193, 7, 16, 26, 8, 193, - 21, 5, 7, 5, 26, 7, 194, 10, 4, 194, 0, 193, 20, 4, 0, 8, 21, 7, 194, 16, 2, 193, 0, 7, 27, 193, 1, 7, 2, 7, 193, 1, 8, 21, - 2, 7, 27, 2, 7, 8, 27, 18, 2, 1, 7, 8, 2, 193, 7, 8, 16, 193, 2, 10, 7, 4, 0, 194, 7, 1, 27, 8, 16, 21, 18, 10, 21, 2, 20, - 193, 21, 10, 198, 21, 19, 196, 21, 8, 27, 196, 2, 27, 193, 26, 7, 28, 27 + 1, 7, 27, 194, 16, 2, 7, 27, 16, 193, 2, 19, 2, 26, 27, 193, 7, 196, 2, 1, 195, 7, 26, 198, 7, 5, 194, 2, 7, 5, 193, 7, 5, + 7, 16, 8, 16, 1, 198, 2, 7, 5, 27, 193, 2, 7, 2, 5, 7, 2, 8, 18, 10, 21, 18, 2, 16, 7, 27, 193, 7, 5, 2, 7, 5, 193, 7, 8, + 7, 16, 27, 7, 5, 194, 2, 194, 7, 8, 16, 18, 2, 194, 7, 27, 7, 5, 194, 2, 7, 5, 194, 7, 8, 21, 10, 27, 7, 193, 2, 193, 5, + 7, 2, 193, 8, 10, 21, 18, 7, 5, 7, 2, 27, 193, 2, 7, 2, 193, 7, 195, 2, 7, 8, 16, 10, 21, 2, 7, 5, 16, 2, 27, 7, 2, 7, 5, + 7, 193, 2, 7, 8, 2, 5, 193, 7, 5, 193, 2, 27, 193, 2, 7, 2, 5, 194, 7, 2, 21, 2, 10, 2, 8, 10, 21, 27, 7, 5, 2, 7, 5, 7, + 8, 16, 27, 2, 7, 2, 7, 18, 2, 1, 7, 16, 8, 16, 27, 193, 2, 7, 2, 7, 2, 1, 193, 7, 8, 193, 2, 21, 193, 16, 7, 8, 10, 17, 13, + 5, 27, 193, 2, 193, 7, 5, 193, 7, 2, 193, 7, 21, 7, 21, 193, 16, 21, 16, 193, 2, 193, 5, 196, 7, 8, 193, 16, 5, 7, 8, 193, + 5, 7, 21, 4, 27, 4, 194, 0, 16, 1, 0, 199, 2, 27, 193, 7, 194, 16, 193, 10, 21, 194, 4, 27, 0, 12, 2, 21, 16, 2, 24, 2, 17, + 13, 27, 2, 16, 9, 2, 27, 193, 2, 193, 7, 5, 27, 2, 7, 5, 16, 27, 2, 7, 27, 2, 27, 7, 193, 2, 7, 5, 194, 7, 193, 16, 1, 16, + 18, 2, 7, 27, 8, 10, 195, 16, 12, 193, 16, 7, 26, 7, 8, 27, 2, 1, 2, 193, 7, 194, 2, 27, 7, 5, 7, 21, 16, 8, 195, 2, 8, 10, + 193, 21, 2, 7, 5, 27, 16, 2, 5, 194, 7, 8, 16, 1, 16, 7, 6, 196, 7, 5, 193, 2, 7, 193, 5, 2, 27, 16, 8, 194, 16, 21, 16, + 7, 5, 2, 5, 193, 7, 8, 194, 2, 7, 5, 7, 5, 27, 16, 2, 5, 194, 7, 27, 193, 16, 193, 8, 2, 193, 1, 16, 199, 0, 4, 0, 27, 4, + 16, 27, 7, 16, 5, 193, 2, 7, 5, 2, 193, 0, 195, 1, 195, 0, 194, 1, 199, 7, 194, 0, 193, 4, 193, 0, 4, 198, 0, 3, 4, 3, 0, + 4, 0, 4, 0, 195, 4, 24, 195, 26, 12, 16, 15, 14, 17, 15, 14, 193, 16, 22, 23, 26, 24, 16, 193, 11, 17, 13, 195, 16, 20, 16, + 11, 16, 24, 194, 26, 27, 193, 26, 1, 193, 20, 17, 13, 194, 1, 205, 18, 7, 194, 6, 195, 7, 21, 4, 0, 20, 4, 21, 193, 4, 21, + 4, 2, 0, 193, 21, 193, 0, 4, 193, 20, 0, 194, 21, 0, 21, 10, 195, 9, 21, 20, 194, 21, 197, 20, 21, 17, 13, 17, 13, 196, 21, + 20, 199, 21, 27, 193, 21, 193, 10, 197, 21, 17, 13, 10, 193, 20, 17, 13, 195, 20, 17, 13, 17, 13, 21, 20, 197, 21, 193, 4, + 193, 0, 194, 4, 193, 0, 195, 4, 0, 193, 1, 193, 4, 193, 0, 21, 4, 0, 7, 4, 0, 27, 193, 16, 10, 193, 0, 193, 2, 27, 1, 16, + 193, 7, 15, 14, 12, 16, 12, 15, 14, 17, 13, 16, 1, 193, 16, 12, 193, 16, 12, 16, 17, 198, 16, 17, 13, 12, 196, 21, 16, 1, + 2, 9, 17, 193, 13, 5, 1, 9, 1, 2, 16, 27, 193, 2, 7, 19, 1, 12, 2, 16, 193, 1, 2, 27, 195, 2, 21, 10, 194, 2, 198, 21, 203, + 2, 1, 193, 21, 2, 1, 193, 16, 2, 1, 193, 16, 8, 27, 2, 6, 16, 7, 193, 1, 7, 2, 9, 7, 194, 16, 27, 19, 193, 1, 19, 4, 19, + 4, 0, 2, 4, 0, 4, 194, 0, 4, 0, 196, 4, 0, 196, 4, 255, 3, 0, 4, 0, 195, 4, 0, 193, 4, 0, 4, 0, 4, 193, 1, 2, 1, 193, 2, + 193, 7, 5, 21, 7, 2, 193, 16, 27, 5, 2, 193, 7, 27, 16, 8, 7, 2, 193, 16, 193, 2, 7, 8, 2, 193, 7, 193, 16, 2, 7, 193, 5, + 27, 16, 7, 5, 193, 2, 7, 5, 194, 16, 27, 1, 8, 2, 7, 1, 8, 27, 2, 7, 5, 27, 8, 193, 16, 2, 1, 2, 21, 5, 2, 7, 2, 7, 2, 1, + 193, 16, 2, 5, 7, 16, 2, 1, 7, 2, 0, 19, 1, 195, 0, 1, 19, 0, 193, 2, 5, 7, 16, 5, 7, 8, 2, 29, 28, 196, 2, 193, 0, 2, 7, + 2, 20, 19, 21, 2, 13, 17, 21, 27, 18, 7, 194, 16, 17, 13, 7, 16, 12, 255, 3, 17, 13, 194, 16, 17, 13, 16, 20, 12, 20, 26, + 193, 16, 8, 4, 19, 0, 17, 13, 17, 13, 16, 2, 1, 27, 26, 193, 21, 27, 2, 16, 9, 10, 21, 10, 194, 21, 2, 27, 2, 27, 7, 10, + 193, 2, 10, 193, 2, 9, 27, 2, 7, 2, 27, 16, 2, 16, 9, 193, 4, 193, 0, 193, 2, 27, 8, 4, 27, 0, 2, 27, 2, 16, 4, 27, 0, 2, + 27, 2, 193, 1, 193, 2, 16, 10, 2, 21, 10, 2, 27, 10, 2, 27, 10, 2, 193, 10, 27, 16, 2, 27, 16, 2, 27, 193, 2, 10, 2, 7, 27, + 2, 193, 7, 193, 10, 193, 16, 2, 10, 16, 2, 10, 2, 21, 7, 27, 10, 193, 16, 2, 27, 193, 16, 2, 10, 2, 10, 2, 16, 10, 2, 4, + 0, 10, 193, 2, 7, 193, 8, 2, 1, 4, 27, 194, 7, 12, 1, 0, 20, 10, 2, 27, 7, 12, 2, 1, 16, 194, 7, 2, 10, 2, 7, 10, 16, 27, + 2, 7, 16, 2, 10, 27, 2, 27, 5, 7, 2, 7, 193, 16, 27, 10, 8, 7, 2, 194, 7, 5, 2, 193, 7, 16, 26, 16, 7, 27, 26, 2, 8, 7, 2, + 5, 193, 7, 27, 8, 193, 16, 2, 5, 193, 2, 7, 16, 27, 7, 5, 2, 5, 193, 16, 193, 7, 16, 5, 7, 8, 2, 16, 2, 16, 10, 2, 27, 5, + 7, 5, 193, 7, 194, 16, 7, 2, 7, 2, 27, 16, 2, 7, 5, 193, 7, 27, 8, 193, 7, 5, 27, 2, 193, 7, 193, 5, 194, 2, 27, 2, 193, + 5, 193, 7, 5, 193, 7, 2, 193, 16, 7, 2, 5, 194, 7, 194, 16, 8, 16, 27, 7, 194, 2, 193, 5, 194, 7, 16, 27, 8, 2, 193, 5, 7, + 27, 193, 7, 196, 16, 2, 7, 2, 5, 193, 7, 193, 16, 27, 8, 16, 2, 7, 193, 5, 7, 2, 16, 27, 193, 8, 193, 2, 27, 7, 5, 7, 8, + 10, 16, 21, 193, 2, 5, 194, 7, 16, 27, 4, 0, 8, 10, 193, 2, 193, 5, 7, 5, 7, 2, 7, 193, 16, 8, 2, 27, 5, 193, 7, 16, 2, 194, + 7, 5, 2, 193, 16, 7, 2, 7, 5, 193, 2, 193, 7, 193, 16, 2, 16, 27, 193, 2, 16, 27, 7, 5, 27, 2, 16, 27, 8, 2, 27, 5, 193, + 7, 194, 16, 8, 10, 193, 16, 2, 27, 7, 5, 2, 194, 7, 8, 2, 5, 193, 7, 8, 2, 1, 8, 2, 7, 5, 16, 27, 7, 2, 5, 2, 27, 5, 7, 193, + 16, 8, 7, 2, 27, 10, 21, 18, 16, 194, 2, 27, 193, 9, 193, 16, 193, 2, 16, 27, 193, 2, 193, 26, 193, 7, 194, 2, 7, 5, 7, 8, + 193, 2, 27, 8, 16, 2, 27, 8, 2, 7, 16, 2, 7, 194, 16, 21, 193, 1, 8, 10, 1, 2, 1, 193, 16, 8, 4, 0, 10, 194, 16, 27, 4, 0, + 193, 2, 27, 7, 193, 5, 7, 194, 1, 16, 1, 7, 5, 1, 9, 198, 2, 27, 1, 201, 2, 27, 2, 27, 21, 193, 7, 16, 26, 8, 21, 20, 193, + 21, 5, 7, 5, 26, 7, 194, 10, 4, 194, 0, 193, 20, 4, 0, 8, 21, 7, 194, 16, 0, 2, 193, 0, 7, 27, 193, 1, 7, 2, 7, 193, 1, 8, + 21, 2, 7, 27, 2, 7, 8, 27, 18, 2, 1, 7, 8, 2, 193, 7, 8, 16, 2, 7, 1, 193, 2, 10, 7, 4, 0, 194, 7, 1, 27, 8, 16, 21, 18, + 10, 21, 2, 20, 193, 21, 10, 198, 21, 19, 196, 21, 8, 27, 197, 2, 27, 193, 26, 7, 28, 27 }; - static constexpr std::array rlescindices = + static constexpr std::array rlescindices = { 210, 1, 193, 34, 194, 1, 194, 34, 198, 1, 34, 199, 1, 254, 34, 195, 1, 6, 193, 1, 198, 2, 194, 21, 0, 193, 21, 1, 193, 21, 1, 214, 21, 193, 12, 203, 21, 202, 14, 2, 211, 14, 0, 202, 4, 0, 204, 27, 193, 3, 1, 194, 3, 1, 198, 3, 1, 194, 3, 1, 194, 2, 198, 3, 2, 196, 3, 1, 196, 3, 194, 50, 0, 197, 50, 3, 194, 56, 0, 200, 64, 0, 193, 64, 196, 90, 0, 194, 90, 193, 95, 0, - 95, 50, 193, 3, 0, 204, 3, 1, 196, 3, 202, 16, 2, 1, 200, 16, 194, 5, 0, 206, 5, 0, 202, 23, 0, 206, 22, 0, 204, 44, 0, 203, - 54, 195, 55, 0, 205, 55, 196, 29, 0, 201, 29, 196, 37, 0, 207, 37, 0, 199, 48, 0, 195, 57, 1, 197, 57, 0, 202, 33, 201, 58, + 95, 50, 195, 3, 0, 203, 3, 1, 196, 3, 202, 16, 2, 1, 200, 16, 194, 5, 0, 206, 5, 0, 202, 23, 0, 206, 22, 0, 204, 44, 0, 203, + 54, 195, 55, 0, 206, 55, 196, 29, 0, 202, 29, 196, 37, 0, 207, 37, 0, 199, 48, 0, 195, 57, 1, 197, 57, 0, 202, 33, 201, 58, 0, 206, 58, 1, 58, 210, 39, 18, 0, 195, 18, 1, 193, 18, 197, 25, 193, 17, 0, 199, 17, 194, 11, 0, 11, 196, 10, 195, 41, 0, - 46, 1, 193, 46, 0, 196, 51, 0, 194, 26, 1, 0, 193, 9, 0, 52, 0, 52, 204, 32, 0, 193, 32, 38, 193, 1, 199, 38, 0, 197, 38, - 193, 35, 0, 197, 35, 53, 197, 40, 32, 194, 8, 0, 8, 200, 91, 196, 2, 198, 62, 0, 198, 62, 199, 76, 196, 93, 0, 93, 196, 70, + 46, 1, 193, 46, 0, 196, 51, 0, 194, 26, 1, 0, 193, 9, 0, 52, 0, 52, 205, 32, 0, 193, 32, 38, 193, 1, 199, 38, 0, 197, 38, + 193, 35, 0, 197, 35, 53, 197, 40, 32, 194, 8, 0, 8, 200, 91, 197, 2, 199, 62, 0, 198, 62, 200, 76, 196, 93, 0, 93, 196, 70, 0, 194, 70, 196, 73, 201, 14, 0, 18, 76, 0, 2, 195, 1, 2, 193, 1, 21, 14, 34, 21, 34, 14, 197, 34, 21, 199, 2, 197, 34, 212, - 21, 193, 1, 193, 2, 222, 1, 0, 193, 1, 34, 195, 1, 193, 34, 204, 1, 199, 2, 195, 1, 21, 1, 193, 34, 1, 34, 204, 1, 34, 193, - 1, 195, 34, 221, 1, 0, 216, 1, 7, 197, 1, 195, 19, 204, 34, 200, 12, 0, 194, 12, 193, 18, 193, 59, 0, 194, 59, 14, 220, 1, + 21, 193, 1, 193, 2, 222, 1, 0, 193, 1, 34, 195, 1, 194, 34, 205, 1, 199, 2, 195, 1, 21, 1, 193, 34, 1, 34, 204, 1, 34, 193, + 1, 195, 34, 221, 1, 0, 216, 1, 7, 198, 1, 195, 19, 204, 34, 200, 12, 0, 194, 12, 193, 18, 193, 59, 0, 194, 59, 14, 220, 1, 24, 196, 1, 24, 1, 24, 194, 1, 25, 1, 193, 24, 193, 1, 0, 193, 28, 2, 1, 28, 1, 30, 193, 1, 193, 30, 0, 195, 6, 193, 1, 194, - 6, 1, 193, 25, 1, 25, 30, 1, 202, 24, 195, 61, 195, 86, 196, 77, 0, 198, 14, 197, 79, 0, 195, 1, 34, 1, 234, 34, 197, 49, - 194, 65, 0, 195, 75, 0, 193, 75, 198, 16, 195, 69, 1, 69, 195, 74, 0, 74, 199, 84, 0, 1, 84, 195, 39, 0, 194, 68, 0, 194, - 68, 195, 39, 199, 92, 197, 87, 17, 34, 1, 193, 34, 21, 194, 34, 1, 11, 198, 87, 25, 193, 0, 196, 24, 34, 4, 195, 27, 193, + 6, 1, 193, 25, 1, 25, 30, 1, 202, 24, 195, 61, 195, 86, 196, 77, 0, 198, 14, 197, 79, 0, 195, 1, 34, 1, 236, 34, 197, 49, + 194, 65, 0, 195, 75, 0, 193, 75, 198, 16, 195, 69, 1, 69, 195, 74, 0, 74, 200, 84, 0, 1, 84, 195, 39, 0, 194, 68, 0, 194, + 68, 196, 39, 199, 92, 198, 87, 17, 34, 1, 193, 34, 21, 194, 34, 1, 11, 199, 87, 25, 193, 0, 196, 24, 34, 4, 195, 27, 194, 3, 193, 1, 3, 0, 3, 2, 196, 1, 14, 212, 1, 34, 1, 34, 196, 1, 30, 1, 0, 194, 1, 0, 36, 1, 197, 21, 1, 71, 0, 67, 0, 2, 1, 195, 42, 193, 20, 0, 193, 118, 60, 0, 60, 194, 43, 195, 15, 47, 45, 0, 45, 136, 0, 136, 106, 0, 193, 104, 161, 0, 161, 169, - 0, 110, 193, 34, 13, 194, 81, 194, 120, 116, 0, 116, 128, 0, 128, 194, 66, 0, 66, 72, 0, 72, 98, 193, 97, 193, 31, 0, 198, - 31, 194, 88, 193, 117, 194, 112, 0, 194, 112, 78, 0, 193, 78, 193, 83, 193, 82, 194, 121, 89, 194, 130, 195, 146, 195, 164, - 0, 198, 164, 3, 156, 0, 193, 156, 193, 3, 193, 148, 195, 147, 0, 194, 158, 193, 153, 0, 149, 0, 197, 94, 0, 197, 94, 200, - 85, 0, 85, 193, 101, 195, 96, 0, 197, 96, 194, 111, 0, 207, 100, 48, 108, 0, 202, 108, 129, 0, 129, 196, 109, 0, 109, 194, - 107, 0, 107, 2, 196, 107, 170, 0, 201, 170, 201, 135, 0, 194, 135, 198, 124, 0, 124, 195, 123, 0, 200, 123, 197, 114, 0, - 114, 38, 198, 102, 0, 102, 39, 193, 126, 0, 199, 126, 197, 142, 0, 196, 125, 201, 154, 150, 0, 195, 150, 198, 141, 201, 140, - 0, 10, 122, 16, 0, 193, 168, 0, 168, 133, 0, 199, 133, 194, 134, 0, 193, 134, 196, 138, 196, 143, 195, 144, 0, 194, 162, - 0, 197, 162, 86, 0, 195, 54, 194, 63, 0, 196, 63, 193, 157, 0, 198, 80, 127, 196, 165, 79, 115, 0, 193, 115, 159, 0, 159, - 194, 103, 201, 119, 197, 166, 197, 145, 0, 193, 99, 0, 196, 99, 137, 139, 193, 24, 155, 24, 194, 137, 0, 137, 193, 155, 193, - 30, 194, 28, 30, 193, 28, 193, 30, 139, 0, 105, 0, 195, 105, 196, 1, 2, 193, 1, 21, 203, 1, 196, 131, 194, 34, 19, 0, 194, - 14, 197, 151, 193, 160, 0, 194, 152, 0, 152, 195, 163, 196, 167, 17, 194, 113, 197, 132, 0, 193, 132, 195, 1, 193, 3, 199, - 1, 28, 199, 1, 0, 196, 24, 0, 193, 1, 2, 193, 0 + 0, 110, 193, 34, 13, 194, 81, 194, 120, 116, 0, 116, 128, 0, 128, 194, 66, 0, 66, 72, 0, 72, 172, 0, 98, 193, 97, 193, 31, + 0, 198, 31, 194, 88, 193, 117, 194, 112, 0, 194, 112, 78, 0, 193, 78, 193, 83, 193, 82, 194, 121, 89, 194, 130, 195, 146, + 195, 164, 0, 198, 164, 3, 156, 0, 193, 156, 197, 3, 193, 148, 195, 147, 0, 194, 158, 193, 153, 0, 149, 0, 197, 94, 0, 197, + 94, 200, 85, 0, 85, 193, 101, 196, 96, 0, 197, 96, 194, 111, 0, 207, 100, 48, 108, 0, 202, 108, 129, 0, 129, 196, 109, 0, + 109, 194, 107, 0, 107, 2, 196, 107, 170, 0, 203, 170, 201, 135, 0, 194, 135, 198, 124, 0, 124, 195, 123, 0, 200, 123, 197, + 114, 0, 114, 38, 198, 102, 0, 102, 39, 193, 126, 0, 199, 126, 197, 142, 0, 196, 125, 202, 154, 150, 0, 195, 150, 200, 141, + 202, 140, 0, 10, 122, 16, 0, 193, 100, 0, 193, 168, 0, 168, 133, 0, 199, 133, 194, 134, 0, 193, 134, 196, 138, 196, 143, + 194, 174, 195, 144, 0, 195, 162, 0, 197, 162, 86, 0, 195, 54, 194, 63, 0, 196, 63, 193, 157, 0, 198, 80, 127, 196, 165, 79, + 115, 0, 193, 115, 159, 0, 159, 194, 103, 201, 119, 197, 166, 197, 145, 0, 193, 171, 193, 99, 0, 196, 99, 137, 139, 193, 24, + 155, 194, 24, 196, 137, 193, 155, 0, 193, 30, 194, 28, 30, 193, 28, 193, 30, 139, 0, 105, 0, 195, 105, 198, 1, 2, 193, 1, + 21, 203, 1, 196, 131, 195, 34, 19, 0, 194, 14, 197, 151, 193, 160, 0, 194, 152, 0, 152, 195, 163, 196, 167, 194, 173, 17, + 194, 113, 197, 132, 0, 193, 132, 195, 1, 193, 3, 199, 1, 28, 199, 1, 0, 197, 24, 0, 193, 1, 2, 193, 0 }; - static constexpr std::array rlewfields = + static constexpr std::array rlewfields = { 16, 194, 0, 214, 32, 194, 0, 254, 32, 198, 16, 248, 32, 195, 16, 222, 32, 195, 16, 194, 32, 193, 16, 204, 32, 193, 16, 199, 32, 198, 16, 194, 32, 16, 194, 32, 193, 16, 193, 32, 16, 200, 32, 16, 32, 193, 16, 193, 32, 16, 195, 32, 16, 198, 32, 16, - 193, 32, 193, 16, 32, 16, 196, 32, 16, 198, 32, 193, 16, 197, 32, 195, 16, 32, 198, 16, 195, 32, 16, 32, 193, 16, 32, 16, + 193, 32, 193, 16, 32, 16, 196, 32, 16, 199, 32, 193, 16, 197, 32, 195, 16, 32, 198, 16, 195, 32, 16, 32, 193, 16, 32, 16, 202, 32, 16, 195, 32, 16, 193, 32, 16, 199, 32, 16, 32, 193, 16, 193, 32, 16, 32, 193, 16, 32, 16, 193, 32, 16, 195, 32, 194, 16, 195, 32, 194, 16, 32, 16, 195, 32, 16, 32, 194, 16, 195, 32, 16, 195, 32, 16, 197, 32, 16, 32, 16, 195, 32, 16, - 32, 193, 16, 194, 32, 16, 196, 32, 16, 195, 32, 255, 3, 16, 32, 16, 194, 32, 193, 16, 197, 32, 16, 193, 32, 194, 16, 200, - 32, 16, 193, 32, 16, 32, 16, 195, 32, 16, 32, 16, 194, 32, 16, 197, 32, 16, 32, 16, 193, 32, 193, 16, 197, 32, 16, 199, 32, - 193, 16, 32, 193, 16, 32, 193, 16, 32, 16, 200, 32, 196, 16, 195, 32, 16, 194, 32, 16, 204, 32, 194, 16, 194, 32, 193, 16, - 219, 32, 193, 16, 194, 32, 16, 195, 32, 16, 194, 32, 16, 193, 32, 16, 32, 194, 16, 196, 32, 16, 201, 32, 16, 32, 16, 196, - 32, 193, 16, 195, 32, 16, 32, 16, 203, 32, 16, 196, 32, 194, 16, 195, 32, 197, 16, 193, 32, 16, 202, 32, 16, 194, 32, 193, - 16, 194, 32, 16, 32, 16, 196, 32, 194, 16, 214, 32, 16, 195, 32, 16, 206, 32, 199, 16, 219, 32, 195, 16, 200, 32, 194, 16, - 206, 32, 193, 16, 215, 32, 199, 16, 254, 32, 16, 204, 32, 193, 16, 241, 32, 16, 242, 32, 16, 32, 16, 193, 32, 16, 193, 32, - 16, 245, 32, 193, 16, 193, 32, 16, 197, 32, 193, 16, 194, 32, 16, 196, 32, 16, 193, 32, 193, 16, 194, 32, 16, 195, 32, 16, - 193, 32, 16, 199, 32, 16, 195, 32, 16, 201, 32, 16, 32, 16, 197, 32, 16, 193, 32, 16, 204, 32, 16, 193, 32, 16, 203, 32, - 16, 200, 32, 16, 196, 32, 16, 240, 32, 16, 200, 32, 16, 245, 32, 16, 193, 32, 193, 16, 202, 32, 16, 212, 32, 16, 197, 32, - 194, 16, 198, 32, 16, 193, 32, 16, 194, 32, 16, 195, 32, 16, 198, 32, 16, 32, 16, 196, 32, 16, 32, 194, 16, 193, 32, 193, - 16, 194, 32, 16, 195, 32, 16, 193, 32, 16, 199, 32, 16, 193, 32, 16, 196, 32, 193, 16, 193, 32, 16, 200, 32, 16, 32, 193, - 16, 194, 32, 16, 32, 16, 195, 32, 16, 32, 193, 16, 193, 32, 193, 16, 194, 32, 193, 16, 199, 32, 193, 16, 32, 16, 194, 32, - 16, 193, 32, 194, 16, 197, 32, 16, 196, 32, 194, 16, 197, 32, 16, 32, 193, 16, 197, 32, 16, 193, 32, 193, 16, 197, 32, 16, - 193, 32, 16, 199, 32, 16, 32, 16, 198, 32, 194, 16, 201, 32, 16, 32, 193, 16, 197, 32, 193, 16, 193, 32, 194, 16, 195, 32, - 16, 193, 32, 193, 16, 207, 32, 193, 16, 200, 32, 16, 193, 32, 194, 16, 194, 32, 193, 16, 193, 32, 16, 194, 32, 16, 195, 32, - 16, 194, 32, 16, 213, 32, 193, 16, 194, 32, 16, 32, 16, 201, 32, 16, 193, 32, 16, 215, 32, 16, 193, 32, 16, 196, 32, 16, - 214, 32, 193, 16, 197, 32, 16, 193, 32, 16, 204, 32, 16, 197, 32, 16, 194, 32, 16, 32, 16, 196, 32, 16, 193, 32, 16, 196, - 32, 16, 193, 32, 193, 16, 196, 32, 16, 193, 32, 194, 16, 227, 32, 16, 32, 0 + 32, 193, 16, 195, 32, 16, 196, 32, 16, 195, 32, 16, 32, 16, 32, 16, 193, 32, 16, 194, 32, 193, 16, 197, 32, 16, 193, 32, + 194, 16, 200, 32, 16, 193, 32, 16, 32, 16, 195, 32, 16, 32, 16, 194, 32, 16, 197, 32, 16, 32, 16, 193, 32, 193, 16, 197, + 32, 16, 199, 32, 193, 16, 32, 193, 16, 32, 193, 16, 32, 16, 200, 32, 196, 16, 195, 32, 16, 194, 32, 16, 204, 32, 194, 16, + 194, 32, 193, 16, 219, 32, 193, 16, 194, 32, 16, 195, 32, 16, 194, 32, 16, 193, 32, 16, 32, 194, 16, 197, 32, 16, 201, 32, + 16, 32, 16, 196, 32, 193, 16, 195, 32, 16, 32, 16, 203, 32, 16, 196, 32, 194, 16, 195, 32, 198, 16, 194, 32, 16, 202, 32, + 16, 194, 32, 193, 16, 195, 32, 16, 32, 16, 196, 32, 194, 16, 214, 32, 16, 195, 32, 16, 206, 32, 199, 16, 219, 32, 195, 16, + 200, 32, 194, 16, 206, 32, 193, 16, 217, 32, 199, 16, 254, 32, 16, 204, 32, 193, 16, 241, 32, 16, 242, 32, 16, 32, 16, 193, + 32, 16, 193, 32, 16, 247, 32, 193, 16, 193, 32, 16, 197, 32, 193, 16, 194, 32, 16, 196, 32, 16, 193, 32, 193, 16, 194, 32, + 16, 195, 32, 16, 194, 32, 16, 199, 32, 16, 195, 32, 16, 202, 32, 16, 32, 16, 197, 32, 16, 194, 32, 16, 205, 32, 16, 193, + 32, 16, 203, 32, 16, 201, 32, 16, 196, 32, 16, 240, 32, 16, 200, 32, 16, 247, 32, 16, 193, 32, 193, 16, 202, 32, 16, 212, + 32, 16, 197, 32, 194, 16, 198, 32, 16, 195, 32, 194, 16, 194, 32, 16, 195, 32, 16, 198, 32, 16, 32, 16, 196, 32, 16, 32, + 194, 16, 193, 32, 193, 16, 194, 32, 16, 195, 32, 16, 193, 32, 193, 16, 199, 32, 16, 193, 32, 16, 196, 32, 193, 16, 193, 32, + 16, 200, 32, 16, 32, 193, 16, 194, 32, 16, 32, 16, 195, 32, 16, 32, 193, 16, 193, 32, 193, 16, 194, 32, 193, 16, 200, 32, + 193, 16, 32, 193, 16, 194, 32, 16, 193, 32, 194, 16, 197, 32, 16, 196, 32, 194, 16, 197, 32, 16, 32, 193, 16, 197, 32, 16, + 193, 32, 193, 16, 197, 32, 16, 193, 32, 16, 199, 32, 16, 32, 16, 198, 32, 194, 16, 201, 32, 16, 32, 16, 32, 16, 197, 32, + 193, 16, 193, 32, 194, 16, 195, 32, 16, 32, 16, 194, 32, 193, 16, 200, 32, 16, 200, 32, 193, 16, 200, 32, 16, 193, 32, 194, + 16, 194, 32, 193, 16, 196, 32, 16, 194, 32, 16, 196, 32, 16, 194, 32, 16, 213, 32, 193, 16, 194, 32, 16, 32, 16, 201, 32, + 16, 193, 32, 16, 217, 32, 16, 193, 32, 16, 196, 32, 16, 217, 32, 193, 16, 199, 32, 16, 193, 32, 16, 204, 32, 16, 198, 32, + 16, 194, 32, 16, 32, 16, 196, 32, 16, 193, 32, 16, 196, 32, 16, 193, 32, 193, 16, 194, 32, 16, 195, 32, 16, 193, 32, 194, + 16, 228, 32, 16, 32, 0 }; - static constexpr std::array rlecfindices = + static constexpr std::array rlecfindices = { 210, 0, 193, 1, 209, 0, 3, 194, 0, 1, 194, 0, 7, 197, 0, 9, 10, 0, 13, 14, 15, 16, 17, 18, 19, 0, 21, 22, 193, 0, 25, 0, 27, 28, 29, 30, 193, 0, 32, 7, 193, 0, 35, 36, 7, 0, 37, 193, 0, 38, 7, 0, 39, 40, 193, 0, 42, 43, 44, 7, 234, 0, 76, 196, 0, 7, 197, 0, 76, 78, 0, 79, 80, 81, 0, 1, 194, 0, 7, 193, 0, 87, 88, 90, 193, 0, 92, 94, 255, 3, 0, 7, 0, 95, 98, 193, 0, 102, 85, - 0, 7, 0, 104, 0, 37, 193, 105, 1, 195, 0, 7, 197, 0, 7, 0, 7, 0, 106, 255, 6, 0, 7, 193, 0, 107, 254, 0, 233, 0, 255, 4, 254, + 0, 7, 0, 104, 0, 37, 193, 105, 1, 195, 0, 7, 197, 0, 7, 0, 7, 0, 106, 255, 6, 0, 7, 193, 0, 107, 254, 0, 236, 0, 255, 4, 254, 0, 108, 0, 108, 218, 0, 96, 254, 0, 254, 0, 111, 113, 115, 117, 119, 121, 123, 125, 7, 193, 0, 127, 223, 0, 131, 0, 133, 7, 193, 0, 96, 198, 0, 96, 140, 141, 142, 97, 144, 145, 146, 147, 104, 148, 149, 254, 0, 150, 0, 151, 152, 0, 153, 207, 0, 155, - 225, 0, 157, 222, 0, 193, 107, 193, 0, 159, 160, 161, 193, 0, 164, 165, 166, 167, 194, 0, 168, 7, 194, 0, 7, 193, 0, 7, 254, + 225, 0, 157, 223, 0, 193, 107, 193, 0, 159, 160, 161, 193, 0, 164, 165, 166, 167, 194, 0, 168, 7, 194, 0, 7, 193, 0, 7, 254, 0, 254, 0, 170, 0, 171, 193, 0, 7, 0, 7, 194, 0, 7, 0, 172, 173, 174, 175, 172, 0, 176, 177, 178, 179, 255, 4, 7, 0, 98, 180, - 181, 7, 0, 182, 7, 193, 0, 183, 254, 0, 185, 206, 0, 7, 231, 0, 1, 235, 0, 193, 186, 197, 0, 186, 197, 0, 188, 254, 0, 80, - 200, 0, 1, 255, 3, 254, 0, 1, 254, 0, 254, 0, 1, 254, 0, 190, 234, 0 + 181, 7, 0, 182, 7, 0, 7, 0, 183, 254, 0, 185, 207, 0, 7, 232, 0, 1, 235, 0, 193, 186, 197, 0, 186, 197, 0, 188, 254, 0, 80, + 200, 0, 1, 255, 3, 254, 0, 1, 254, 0, 254, 0, 1, 197, 0, 190, 254, 0, 192, 192, 235, 0 }; - static constexpr std::array rleclindices = + static constexpr std::array rleclindices = { 210, 0, 193, 1, 213, 0, 1, 194, 0, 7, 197, 0, 9, 193, 0, 13, 14, 15, 16, 17, 18, 19, 0, 21, 22, 193, 0, 25, 0, 27, 28, 29, 30, 193, 0, 32, 7, 193, 0, 35, 36, 7, 0, 37, 193, 0, 38, 7, 0, 39, 40, 193, 0, 42, 43, 44, 7, 240, 0, 7, 197, 0, 76, 78, 0, 79, 80, 81, 0, 1, 197, 0, 87, 198, 0, 7, 0, 7, 0, 7, 196, 0, 102, 193, 0, 7, 0, 104, 0, 37, 193, 105, 1, 195, 0, 7, 197, 0, - 7, 0, 7, 0, 106, 255, 6, 0, 7, 193, 0, 107, 254, 0, 233, 0, 255, 4, 254, 0, 108, 0, 108, 214, 0, 110, 193, 87, 254, 0, 254, + 7, 0, 7, 0, 106, 255, 6, 0, 7, 193, 0, 107, 254, 0, 236, 0, 255, 4, 254, 0, 108, 0, 108, 214, 0, 110, 193, 87, 254, 0, 254, 0, 7, 193, 0, 127, 225, 0, 133, 7, 193, 0, 96, 198, 0, 96, 140, 141, 0, 97, 0, 145, 0, 147, 104, 148, 149, 254, 0, 150, 0, - 151, 152, 0, 153, 207, 0, 155, 225, 0, 157, 222, 0, 193, 107, 193, 0, 159, 160, 161, 193, 0, 164, 165, 166, 167, 194, 0, 168, + 151, 152, 0, 153, 207, 0, 155, 225, 0, 157, 223, 0, 193, 107, 193, 0, 159, 160, 161, 193, 0, 164, 165, 166, 167, 194, 0, 168, 7, 194, 0, 7, 193, 0, 7, 254, 0, 254, 0, 170, 0, 171, 193, 0, 7, 0, 7, 194, 0, 7, 0, 172, 173, 174, 175, 172, 0, 176, 177, - 178, 179, 255, 4, 7, 0, 98, 180, 181, 7, 0, 182, 7, 193, 0, 183, 254, 0, 254, 0, 1, 235, 0, 193, 186, 197, 0, 186, 197, 0, - 188, 254, 0, 80, 200, 0, 1, 255, 3, 254, 0, 1, 254, 0, 254, 0, 1, 254, 0, 190, 234, 0 + 178, 179, 255, 4, 7, 0, 98, 180, 181, 7, 0, 182, 7, 0, 7, 0, 183, 254, 0, 254, 0, 1, 235, 0, 193, 186, 197, 0, 186, 197, 0, + 188, 254, 0, 80, 200, 0, 1, 255, 3, 254, 0, 1, 254, 0, 254, 0, 1, 197, 0, 190, 254, 0, 192, 192, 235, 0 }; - static constexpr std::array rlecuindices = + static constexpr std::array rlecuindices = { 215, 0, 194, 2, 203, 0, 4, 195, 0, 5, 2, 6, 0, 193, 8, 196, 0, 11, 12, 198, 0, 20, 193, 0, 23, 24, 0, 26, 196, 0, 31, 0, 8, 33, 34, 194, 0, 8, 196, 0, 8, 193, 0, 41, 8, 195, 0, 8, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 202, 0, 77, 197, 0, 8, 194, 0, 26, 200, 0, 82, 83, 2, 84, 85, 86, 0, 89, 91, 193, 0, 93, 95, 96, 255, 3, 0, 8, 97, 99, 100, 101, 0, 103, 193, 0, 8, 197, 0, 2, 194, 99, 0, 8, 197, 0, 8, 0, 8, 0, - 92, 255, 6, 0, 8, 197, 0, 98, 254, 0, 231, 0, 255, 4, 254, 0, 194, 109, 193, 0, 109, 212, 0, 96, 254, 0, 254, 0, 112, 114, + 92, 255, 6, 0, 8, 197, 0, 98, 254, 0, 234, 0, 255, 4, 254, 0, 194, 109, 193, 0, 109, 212, 0, 96, 254, 0, 254, 0, 112, 114, 116, 118, 120, 122, 124, 126, 0, 8, 209, 0, 128, 129, 130, 204, 0, 132, 194, 0, 8, 87, 0, 134, 135, 136, 137, 138, 139, 0, - 96, 0, 141, 143, 0, 144, 0, 146, 254, 0, 154, 194, 0, 156, 225, 0, 158, 223, 0, 193, 98, 194, 0, 162, 163, 200, 0, 8, 194, + 96, 0, 141, 143, 0, 144, 0, 146, 254, 0, 154, 194, 0, 156, 225, 0, 158, 224, 0, 193, 98, 194, 0, 162, 163, 200, 0, 8, 194, 0, 8, 193, 0, 8, 195, 0, 193, 169, 254, 0, 254, 0, 8, 0, 8, 107, 193, 0, 8, 202, 0, 255, 3, 8, 0, 8, 195, 0, 8, 193, 0, 8, - 254, 0, 184, 199, 0, 185, 206, 0, 7, 233, 0, 2, 235, 0, 193, 187, 197, 0, 187, 197, 0, 189, 254, 0, 85, 206, 0, 2, 255, 3, - 254, 0, 2, 254, 0, 254, 0, 2, 254, 0, 191, 233, 0 + 0, 8, 254, 0, 184, 199, 0, 185, 207, 0, 7, 234, 0, 2, 235, 0, 193, 187, 197, 0, 187, 197, 0, 189, 254, 0, 85, 206, 0, 2, 255, + 3, 254, 0, 2, 254, 0, 254, 0, 2, 197, 0, 191, 254, 0, 192, 193, 234, 0 }; - static constexpr std::array pflags = + static constexpr std::array pflags = { UINT64_C(7), UINT64_C(68719476759), UINT64_C(68719476767), UINT64_C(4503668346847255), UINT64_C(4503754246193671), UINT64_C(4503737066324231), UINT64_C(4503737066323975), UINT64_C(4521329252368647), UINT64_C(9227875773921099783), UINT64_C(22518135575805959), UINT64_C(4503737066324487), @@ -2216,24 +2249,25 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) UINT64_C(5558585432268120069), UINT64_C(546061455355543557), UINT64_C(9227875636482146309), UINT64_C(364791569817042949), UINT64_C(4982124680098881541), UINT64_C(365917469723893765), UINT64_C(546705768632549381), UINT64_C(546090042121125893), UINT64_C(548313254699466757), UINT64_C(364791571964493829), UINT64_C(546672783283716101), UINT64_C(5557441940176273413), - UINT64_C(4503599627436037), UINT64_C(4983250614231236613), UINT64_C(5162268666133225477), UINT64_C(4620710809868206085), - UINT64_C(4982124679964762117), UINT64_C(4503599627403269), UINT64_C(546072450203385861), UINT64_C(546090042389561349), UINT64_C(371564563592642629), - UINT64_C(4974243382764240965), UINT64_C(2269460719206437), UINT64_C(4503737066324101), UINT64_C(22518135575806981), UINT64_C(4521329252368645), - UINT64_C(4503737066324229), UINT64_C(4521346432238085), UINT64_C(4521329252368389), UINT64_C(4503754246193669), UINT64_C(382805968326493189), - UINT64_C(9227875773921099781), UINT64_C(20283790509212677), UINT64_C(2251799880794113), UINT64_C(2269392133947397), UINT64_C(22518002431819781), - UINT64_C(22518002431819909), UINT64_C(9245890039286596613), UINT64_C(4999013178567296005), UINT64_C(564086848444433413), - UINT64_C(562949954495053829), UINT64_C(22517998136853509), UINT64_C(544935555985571845), UINT64_C(564075853328155653), UINT64_C(9245890034991628293), - UINT64_C(564086848712868869), UINT64_C(546954258260688901), UINT64_C(546846506121035781), UINT64_C(9245890172430581765), - UINT64_C(9245890185315483653), UINT64_C(22518148460707845), UINT64_C(22518135575806085), UINT64_C(9245890172430582789), UINT64_C(9227875774055317509), - UINT64_C(137438953473), UINT64_C(6522302976237573), UINT64_C(6414550836584453), UINT64_C(5557459532361236485), UINT64_C(5647229159243781), - UINT64_C(4503737066324485), UINT64_C(4503599644147717), UINT64_C(4503599629467653), UINT64_C(4503599631564805), UINT64_C(4503599635759109), - UINT64_C(546061454818689029), UINT64_C(4980981187872849925), UINT64_C(112607583944081413), UINT64_C(546061454852243461), - UINT64_C(546061454818705413), UINT64_C(113715890591105029), UINT64_C(524289), UINT64_C(4503599627370757), UINT64_C(4521208993284613), - UINT64_C(4521191813415429), UINT64_C(22517998136853637), UINT64_C(4521191813415173), UINT64_C(364791569817012229), UINT64_C(546954258260428805), - UINT64_C(22535590322930693), UINT64_C(546846506120906757), UINT64_C(9227875636482146565), UINT64_C(5018153476984700933), - UINT64_C(17592186044421), UINT64_C(546061454818738181), UINT64_C(546061454818770949), UINT64_C(4980998780057878533), UINT64_C(4980998780057829381), - UINT64_C(4982107087779700741), UINT64_C(4980981187872817157), UINT64_C(22518011021754373), UINT64_C(9245890047876530181), - UINT64_C(5642693674016773), UINT64_C(4504149383184389), UINT64_C(4616207210240802821), UINT64_C(4622962609682907141) + UINT64_C(2851904464166584325), UINT64_C(4503599627436037), UINT64_C(4983250614231236613), UINT64_C(5162268666133225477), + UINT64_C(4620710809868206085), UINT64_C(2098677426355732485), UINT64_C(4982124679964762117), UINT64_C(4503599627403269), + UINT64_C(546072450203385861), UINT64_C(371564563592642629), UINT64_C(4974243382764240965), UINT64_C(2269460719206437), UINT64_C(4503737066324101), + UINT64_C(22518135575806981), UINT64_C(4521329252368645), UINT64_C(4503737066324229), UINT64_C(4521346432238085), UINT64_C(4521329252368389), + UINT64_C(4503754246193669), UINT64_C(382805968326493189), UINT64_C(9227875773921099781), UINT64_C(20283790509212677), UINT64_C(2251799880794113), + UINT64_C(2269392133947397), UINT64_C(546090042389561349), UINT64_C(22518002431819781), UINT64_C(22518002431819909), UINT64_C(9245890039286596613), + UINT64_C(4999013178567296005), UINT64_C(564086848444433413), UINT64_C(562949954495053829), UINT64_C(22517998136853509), UINT64_C(544935555985571845), + UINT64_C(564075853328155653), UINT64_C(9245890034991628293), UINT64_C(564086848712868869), UINT64_C(546954258260688901), + UINT64_C(546846506121035781), UINT64_C(9245890172430581765), UINT64_C(9245890185315483653), UINT64_C(22518148460707845), + UINT64_C(22518135575806085), UINT64_C(9245890172430582789), UINT64_C(9227875774055317509), UINT64_C(137438953473), UINT64_C(6522302976237573), + UINT64_C(6414550836584453), UINT64_C(5557459532361236485), UINT64_C(5647229159243781), UINT64_C(4503737066324485), UINT64_C(4503599644147717), + UINT64_C(4503599629467653), UINT64_C(4503599631564805), UINT64_C(4503599635759109), UINT64_C(546061454818689029), UINT64_C(4980981187872849925), + UINT64_C(112607583944081413), UINT64_C(546061454852243461), UINT64_C(546061454818705413), UINT64_C(113715890591105029), UINT64_C(524289), + UINT64_C(4503599627370757), UINT64_C(4521208993284613), UINT64_C(4521191813415429), UINT64_C(22517998136853637), UINT64_C(4521191813415173), + UINT64_C(364791569817012229), UINT64_C(546954258260428805), UINT64_C(22535590322930693), UINT64_C(546846506120906757), UINT64_C(9227875636482146565), + UINT64_C(5018153476984700933), UINT64_C(17592186044421), UINT64_C(546061454818738181), UINT64_C(546061454818770949), UINT64_C(4980998780057878533), + UINT64_C(4980998780057829381), UINT64_C(4982107087779700741), UINT64_C(546079047004798981), UINT64_C(4980981187872817157), + UINT64_C(22518011021754373), UINT64_C(9245890047876530181), UINT64_C(5642693674016773), UINT64_C(4504149383184389), UINT64_C(4616207210240802821), + UINT64_C(4622962609682907141) }; static constexpr std::array cflags = @@ -2241,7 +2275,7 @@ void run_length_decode(InputIt first, InputIt last, OutputIt dest) 512, 896, 640, 2432, 3080, 3072, 7280, 7269, 7237, 7176, 7267, 7235, 7233, 7168, 0, 128 }; - std::array flyweights{}; + std::array flyweights{}; auto table = std::make_unique(); auto& records = table->records; diff --git a/tools/makeunicode.cpp b/tools/makeunicode.cpp index 7579e88..0a422fa 100644 --- a/tools/makeunicode.cpp +++ b/tools/makeunicode.cpp @@ -216,7 +216,9 @@ static std::vector const script_names = // Unicode 15.0.0 "Kawi", "Nag_Mundari", // Unicode 16.0.0 - "Garay", "Gurung_Khema", "Kirat_Rai", "Ol_Onal", "Sunuwar", "Todhri", "Tulu_Tigalari" + "Garay", "Gurung_Khema", "Kirat_Rai", "Ol_Onal", "Sunuwar", "Todhri", "Tulu_Tigalari", + // Unicode 17.0.0 + "Beria_Erfe", "Sidetic", "Tai_Yo", "Tolong_Siki" }; static auto const scripts = build_namemap(script_names); @@ -289,9 +291,12 @@ static std::vector const block_names = "CJK Unified Ideographs Extension H", // Unicode 15.1.0 "CJK Unified Ideographs Extension I", - // Unicode 16.0.0, + // Unicode 16.0.0 "Todhri", "Garay", "Tulu-Tigalari", "Myanmar Extended-C", "Sunuwar", "Egyptian Hieroglyphs Extended-A", "Gurung Khema", - "Kirat Rai", "Symbols for Legacy Computing Supplement", "Ol Onal" + "Kirat Rai", "Symbols for Legacy Computing Supplement", "Ol Onal", + // Unicode 17.0.0 + "Beria Erfe", "CJK Unified Ideographs Extension J", "Miscellaneous Symbols Supplement", "Sharada Supplement", "Sidetic", + "Tai Yo", "Tangut Components Supplement", "Tolong Siki" }; static auto const blocks = build_namemap(block_names); @@ -299,7 +304,7 @@ static auto const blocks = build_namemap( static std::vector const age_names = { "Unassigned", "1.1", "2.0", "2.1", "3.0", "3.1", "3.2", "4.0", "4.1", "5.0", "5.1", "5.2", "6.0", "6.1", "6.2", "6.3", - "7.0", "8.0", "9.0", "10.0", "11.0", "12.0", "12.1", "13.0", "14.0", "15.0", "15.1", "16.0" + "7.0", "8.0", "9.0", "10.0", "11.0", "12.0", "12.1", "13.0", "14.0", "15.0", "15.1", "16.0", "17.0" }; static auto const ages = build_namemap(age_names);